From 776f7945e9c0e1e2db37d93ead739ae075a98bee Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Fri, 23 Jun 2023 20:08:17 +0200 Subject: [PATCH 01/27] raise target to .net standard 2.1, nullable references, remove abstractions, general improvements, autoformatting --- CodeGeneration/Generators/BaseGenerator.cs | 1 + .../Generators/FMXAdditionalCodeGenerator.cs | 21 +- .../MetaModuleAdditionalCodeGenerator.cs | 4 +- .../SamplerAdditionalCodeGenerator.cs | 6 +- .../ModuleData_Generator.cs | 12 +- .../ModuleType_Generator.cs | 3 +- .../ProxyClass_Generator.cs | 41 +- .../SpecificModules_Generator.cs | 45 +- .../VorbisPlayerAdditionalGenerator.cs | 4 +- CodeGeneration/ModuleDataParser.cs | 44 +- CodeGeneration/ModuleTypes.cs | 87 +- CodeGeneration/Program.cs | 7 +- CodeGeneration/ReparsedData/Classes.cs | 9 +- Examples/AbstractionHorizontalJumps.cs | 97 - .../ObjectWrapperListModulesAndPatterns.cs | 1 + Examples/ObjectWrapperManagePatterns.cs | 7 +- Examples/ObjectWrapperPlaySong.cs | 2 + Examples/ObjectWrapperSendEvents.cs | 15 +- Examples/ObjectWrapperUseModules.cs | 9 +- Examples/Program.cs | 3 +- Examples/ThinWrapperListModulesAndPatterns.cs | 4 +- Examples/ThinWrapperPlaySong.cs | 4 +- Examples/ThinWrapperSendEvents.cs | 15 +- Examples/ThinWrapperUserAudioCallback.cs | 8 +- SunSharp.Redistribution/Redistribution.cs | 53 +- .../SunSharp.Redistribution.csproj | 15 +- .../AbstractionBuildingException.cs | 13 - .../Abstractions/Horizontal/Jumping/Graph.cs | 102 - .../Horizontal/Jumping/GraphBuilder.cs | 512 ---- .../Horizontal/Jumping/GraphData.cs | 89 - .../Horizontal/Jumping/IGraphDescription.cs | 27 - .../Horizontal/Jumping/JumpGraphController.cs | 168 -- .../Jumping/SimpleGraphDescription.cs | 90 - .../Horizontal/Jumping/TargetType.cs | 10 - SunSharp/Abstractions/MessageType.cs | 9 - SunSharp/Constants.cs | 6 +- SunSharp/DerivedData/ControllerData.cs | 22 + SunSharp/DerivedData/DerivedDataFactory.cs | 170 ++ SunSharp/DerivedData/IDeepCopyable.cs | 7 + SunSharp/DerivedData/ModuleData.cs | 107 +- SunSharp/DerivedData/PatternData.cs | 98 +- .../DerivedData/ReadOnlyCollectionWrapper.cs | 31 - SunSharp/DerivedData/SongData.cs | 132 +- SunSharp/Effects.cs | 16 +- SunSharp/FineTunePair.cs | 50 + SunSharp/ISunVoxLib.cs | 6 +- .../LibraryLoading/ProxyClass.Generated.cs | 74 +- SunSharp/Note.cs | 3 +- SunSharp/ObjectWrapper/Enums.cs | 3 +- SunSharp/ObjectWrapper/ModuleHandle.cs | 113 +- .../Modules/IModuleHandleWrapper.cs | 83 +- .../Modules/SpecificModules.Generated.cs | 2236 ++++++++--------- SunSharp/ObjectWrapper/PatternHandle.cs | 76 +- SunSharp/ObjectWrapper/Slot.cs | 106 +- SunSharp/ObjectWrapper/Slots.cs | 14 +- SunSharp/ObjectWrapper/SunVox.cs | 83 +- SunSharp/ObjectWrapper/Synthesizer.cs | 25 +- SunSharp/ObjectWrapper/Timeline.cs | 11 +- SunSharp/ObjectWrapper/VirtualPattern.cs | 18 +- SunSharp/PatternEvent.cs | 167 +- SunSharp/SunSharp.csproj | 11 +- SunSharp/ThinWrapper/SunVoxException.cs | 6 +- SunSharp/ThinWrapper/SunVoxLibExtensions.cs | 252 +- SunSharp/ThinWrapper/ThinWrapperEnums.cs | 3 +- SunSharp/Version.cs | 22 +- 65 files changed, 2191 insertions(+), 3297 deletions(-) delete mode 100644 Examples/AbstractionHorizontalJumps.cs delete mode 100644 SunSharp/Abstractions/AbstractionBuildingException.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/Graph.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/GraphBuilder.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/GraphData.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/IGraphDescription.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/JumpGraphController.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/SimpleGraphDescription.cs delete mode 100644 SunSharp/Abstractions/Horizontal/Jumping/TargetType.cs delete mode 100644 SunSharp/Abstractions/MessageType.cs create mode 100644 SunSharp/DerivedData/ControllerData.cs create mode 100644 SunSharp/DerivedData/DerivedDataFactory.cs create mode 100644 SunSharp/DerivedData/IDeepCopyable.cs delete mode 100644 SunSharp/DerivedData/ReadOnlyCollectionWrapper.cs create mode 100644 SunSharp/FineTunePair.cs diff --git a/CodeGeneration/Generators/BaseGenerator.cs b/CodeGeneration/Generators/BaseGenerator.cs index 962dbcc..d802267 100644 --- a/CodeGeneration/Generators/BaseGenerator.cs +++ b/CodeGeneration/Generators/BaseGenerator.cs @@ -28,6 +28,7 @@ internal bool Generate(string filePath) file.Flush(); file.Close(); } + return true; } diff --git a/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs b/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs index bfd06cf..58ec493 100644 --- a/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs +++ b/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs @@ -39,7 +39,8 @@ public override void AppendCode() { var module = Data.Modules.First(m => m.FriendlyName == "FMX"); var originalController = module.Controllers.First(c => c.FriendlyName.StartsWith(method) - && c.FriendlyName.EndsWith($"{SubGeneratorStart}")); + && c.FriendlyName.EndsWith( + $"{SubGeneratorStart}")); AppendGroupMethod(method, originalController); } } @@ -53,7 +54,8 @@ private void AppendGroupMethod(string name, CtlDesc c) AppendLine("/// "); AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine($"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); + AppendLine( + $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); AppendLine("/// "); AppendLine($"public {@enum.Name} Get{name}(int index)"); @@ -63,14 +65,16 @@ private void AppendGroupMethod(string name, CtlDesc c) AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); AppendLine(); - AppendLine($"return ({@enum.Name})Module.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"return ({@enum.Name})ModuleHandle.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); }); AppendLine("}"); AppendLine(); AppendLine("/// "); AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine($"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); + AppendLine( + $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); AppendLine("/// "); AppendLine($"public void Set{name}(int index, {@enum.Name} value)"); @@ -80,7 +84,8 @@ private void AppendGroupMethod(string name, CtlDesc c) AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); AppendLine(); - AppendLine($"Module.SetControllerValue({c.Id} + index - 1, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"ModuleHandle.SetControllerValue({c.Id} + index - 1, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); }); AppendLine("}"); AppendLine(); @@ -100,7 +105,8 @@ private void AppendGroupMethod(string name, CtlDesc c) AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); AppendLine(); - AppendLine($"return Module.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"return ModuleHandle.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); }); AppendLine("}"); AppendLine(); @@ -117,7 +123,8 @@ private void AppendGroupMethod(string name, CtlDesc c) AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); AppendLine(); - AppendLine($"Module.SetControllerValue({c.Id} + index - 1, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"ModuleHandle.SetControllerValue({c.Id} + index - 1, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); }); AppendLine("}"); AppendLine(); diff --git a/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs b/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs index 3475840..168e74a 100644 --- a/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs +++ b/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs @@ -5,10 +5,10 @@ internal class MetaModuleAdditionalCodeGenerator : AdditionalGenerator public override void AppendCode() { AppendLine("/// "); - AppendLine("public void LoadFile(string path) => Module.LoadIntoMetaModule(path);"); + AppendLine("public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path);"); AppendLine(); AppendLine("/// "); - AppendLine("public void LoadFile(byte[] data) => Module.LoadIntoMetaModule(data);"); + AppendLine("public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data);"); } } } diff --git a/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs b/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs index b9b7489..6eb7c6a 100644 --- a/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs +++ b/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs @@ -5,10 +5,12 @@ internal class SamplerAdditionalCodeGenerator : AdditionalGenerator public override void AppendCode() { AppendLine("/// "); - AppendLine("public void LoadSample(byte[] data, int sampleSlot = -1) => Module.LoadSamplerSample(data, sampleSlot);"); + AppendLine( + "public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot);"); AppendLine(); AppendLine("/// "); - AppendLine("public void LoadSample(string path, int sampleSlot = -1) => Module.LoadSamplerSample(path, sampleSlot);"); + AppendLine( + "public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot);"); } } } diff --git a/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs index 80df8b8..3c1d615 100644 --- a/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs +++ b/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs @@ -106,7 +106,8 @@ protected void AddModules() { foreach (var cd in md.Curves.OrderBy(c => c.Id)) { - AppendLine($"new {nameof(CurveDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, {cd.Size}),"); + AppendLine( + $"new {nameof(CurveDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, {cd.Size}),"); } }); AppendLine("},"); @@ -128,15 +129,18 @@ private void AddController(CtlDesc cd) { if (cd.IgnoreInternalEnum) { - AppendLine($"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, ignoreInternalEnum: true),"); + AppendLine( + $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, ignoreInternalEnum: true),"); } else if (!string.IsNullOrWhiteSpace(cd.EnumTypeName)) { - AppendLine($"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, enumTypeName: \"{cd.EnumTypeName}\"),"); + AppendLine( + $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, enumTypeName: \"{cd.EnumTypeName}\"),"); } else { - AppendLine($"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}),"); + AppendLine( + $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}),"); } } } diff --git a/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs index c568623..73f3d99 100644 --- a/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs +++ b/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs @@ -8,7 +8,8 @@ protected override void GenerateBody() { AppendLine("/*"); AppendLine(" * IMPORTANT!"); - AppendLine(" * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); + AppendLine( + " * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); AppendLine("*/"); AppendLine(); AppendLine("namespace SunSharp.ObjectWrapper"); diff --git a/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs index a1b4b4b..e16826c 100644 --- a/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs +++ b/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs @@ -1,5 +1,5 @@ -using SunSharp; -using System.Reflection; +using System.Reflection; +using SunSharp; namespace CodeGeneration.Generators.SpecificGenerators { @@ -7,15 +7,15 @@ internal class ProxyClass_Generator : BaseGenerator { private static Dictionary StrictTypeToType = new Dictionary() { - {"Int32", "int"}, - {"UInt32", "uint"}, - {"Void", "void"} + { "Int32", "int" }, + { "UInt32", "uint" }, + { "Void", "void" } }; private static Dictionary StrictTypeToName = new Dictionary() { - {"Int32", "Int"}, - {"UInt32", "Uint"} + { "Int32", "Int" }, + { "UInt32", "Uint" } }; private static string Translate(object o, Dictionary d) @@ -60,6 +60,7 @@ protected override void GenerateBody() AppendLine(d); AppendLine(); } + AppendLine("#endregion delegate definitions"); AppendLine(); AppendLine("#region delegates"); @@ -71,6 +72,7 @@ protected override void GenerateBody() AppendLine(d); AppendLine(); } + AppendLineNoTab("#pragma warning restore CS0649"); AppendLine(); AppendLine("#endregion delegates"); @@ -82,6 +84,7 @@ protected override void GenerateBody() AppendLine(d); AppendLine(); } + AppendLine($"#endregion interface"); }); AppendLine("}"); @@ -107,10 +110,7 @@ private void AddConstructor() { AppendLine("if (typeof(Delegate).IsAssignableFrom(field.FieldType))"); AppendLine("{"); - AddIndent(() => - { - AppendLine("field.SetValue(this, GetDelegate(field.Name, field.FieldType));"); - }); + AddIndent(() => { AppendLine("field.SetValue(this, GetDelegate(field.Name, field.FieldType));"); }); AppendLine("}"); }); AppendLine("}"); @@ -118,7 +118,8 @@ private void AddConstructor() AppendLine("}"); } - private static (ICollection delegateDefinitions, ICollection delegates, ICollection delegateCalls) ReadData(Type t) + private static (ICollection delegateDefinitions, ICollection delegates, ICollection + delegateCalls) ReadData(Type t) { HashSet delegateDefinitions = new(); HashSet delegates = new(); @@ -131,7 +132,8 @@ private static (ICollection delegateDefinitions, ICollection del delegateCalls.Add(delegateCall); } - return (delegateDefinitions.OrderBy(s => s).ToList(), delegates.OrderBy(s => s).ToList(), delegateCalls.OrderBy(s => s).ToList()); + return (delegateDefinitions.OrderBy(s => s).ToList(), delegates.OrderBy(s => s).ToList(), + delegateCalls.OrderBy(s => s).ToList()); } private static (string delegateDefinition, string @delegate, string delegateCall) ParseMethod(MethodInfo info) @@ -154,10 +156,13 @@ private static (string delegateDefinition, string @delegate, string delegateCall foreach (var parameter in info.GetParameters()) { int count = namedPars.Count(p => p.Item1 == parameter.ParameterType); - var parameterName = $"_{TranslateToType(parameter.ParameterType.Name)}{(count != 0 ? count : "")}"; // int, int2, int3... + var parameterName = + $"_{TranslateToType(parameter.ParameterType.Name)}{(count != 0 ? count : "")}"; // int, int2, int3... namedPars.Add((parameter.ParameterType, parameterName)); } - delegateTypeArgs = string.Join(", ", namedPars.Select(p => $"{TranslateToType(p.Item1.Name)} {p.Item2}")); + + delegateTypeArgs = + string.Join(", ", namedPars.Select(p => $"{TranslateToType(p.Item1.Name)} {p.Item2}")); } string delegateInstanceName = $"{info.Name}"; @@ -167,9 +172,11 @@ private static (string delegateDefinition, string @delegate, string delegateCall string delegateCall; // call { - var pars = string.Join(", ", info.GetParameters().Select(p => $"{TranslateToType(p.ParameterType.Name)} {p.Name}")); + var pars = string.Join(", ", + info.GetParameters().Select(p => $"{TranslateToType(p.ParameterType.Name)} {p.Name}")); var forwardedPars = string.Join(", ", info.GetParameters().Select(p => p.Name)); - delegateCall = $"{returnsTypeName} {info.DeclaringType?.Name}.{info.Name}({pars}) => {delegateInstanceName}({forwardedPars});"; + delegateCall = + $"{returnsTypeName} {info.DeclaringType?.Name}.{info.Name}({pars}) => {delegateInstanceName}({forwardedPars});"; } return (delegateDefinition, @delegate, delegateCall); diff --git a/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs index 391f56b..4abc7df 100644 --- a/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs +++ b/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs @@ -17,7 +17,8 @@ protected override void GenerateBody() { AppendLine("/*"); AppendLine(" * IMPORTANT!"); - AppendLine(" * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); + AppendLine( + " * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); AppendLine("*/"); AppendLine(); AppendLine("namespace SunSharp.ObjectWrapper.Modules"); @@ -53,6 +54,7 @@ private void GenerateEnums() }); AppendLine("}"); } + AppendLine(); AppendLine("#endregion enums"); } @@ -67,7 +69,8 @@ private void GenerateExtensions() for (int i = 0; i < modules.Length; i++) { var module = modules[i]; - AppendLine($"public static {module.FriendlyName}ModuleHandle As{module.FriendlyName}(this ModuleHandle module) => new {module.FriendlyName}ModuleHandle(module);"); + AppendLine( + $"public static {module.FriendlyName}ModuleHandle As{module.FriendlyName}(this ModuleHandle module) => new {module.FriendlyName}ModuleHandle(module);"); if (i != modules.Length - 1) AppendLine(); @@ -87,14 +90,11 @@ private void GenerateStructs() AppendLine("{"); AddIndent(() => { - AppendLine("public ModuleHandle Module { get; private set; }"); + AppendLine("public ModuleHandle ModuleHandle { get; private set; }"); AppendLine(); AppendLine($"public {m.FriendlyName}ModuleHandle(ModuleHandle module)"); AppendLine("{"); - AddIndent(() => - { - AppendLine("Module = module;"); - }); + AddIndent(() => { AppendLine("ModuleHandle = module;"); }); AppendLine("}"); AppendLine(); @@ -121,6 +121,7 @@ private void GenerateStructs() GenerateCurves(m); AppendLine("#endregion curves"); } + if (m.Curves.Any() && m.AdditionalCodeDescription != null) { AppendLine(); @@ -156,19 +157,23 @@ private void GenerateControllers(ModuleDesc module) var @enum = _data.Enums.First(e => e.Name == c.EnumTypeName); AppendLine("/// "); AppendLine($"/// Original name: {c.InternalName}"); - AppendLine($"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); + AppendLine( + $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); if (!string.IsNullOrWhiteSpace(c.Description)) AppendLine($"/// {c.Description} "); AppendLine("/// "); - AppendLine($"public {@enum.Name} Get{c.FriendlyName}() => ({@enum.Name})Module.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"public {@enum.Name} Get{c.FriendlyName}() => ({@enum.Name})ModuleHandle.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); AppendLine(); AppendLine("/// "); AppendLine($"/// Original name: {c.InternalName}"); - AppendLine($"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); + AppendLine( + $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); if (!string.IsNullOrWhiteSpace(c.Description)) AppendLine($"/// {c.Description} "); AppendLine("/// "); - AppendLine($"public void Set{c.FriendlyName}({@enum.Name} value) => Module.SetControllerValue({c.Id}, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"public void Set{c.FriendlyName}({@enum.Name} value) => ModuleHandle.SetControllerValue({c.Id}, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); AppendLine(); } else @@ -180,7 +185,8 @@ private void GenerateControllers(ModuleDesc module) if (!string.IsNullOrWhiteSpace(c.Description)) AppendLine($"/// {c.Description} "); AppendLine("/// "); - AppendLine($"public int Get{c.FriendlyName}() => Module.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"public int Get{c.FriendlyName}() => ModuleHandle.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); AppendLine(); AppendLine("/// "); AppendLine($"/// Original name: {c.InternalName}"); @@ -188,7 +194,8 @@ private void GenerateControllers(ModuleDesc module) if (!string.IsNullOrWhiteSpace(c.Description)) AppendLine($"/// {c.Description} "); AppendLine("/// "); - AppendLine($"public void Set{c.FriendlyName}(int value) => Module.SetControllerValue({c.Id}, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); + AppendLine( + $"public void Set{c.FriendlyName}(int value) => ModuleHandle.SetControllerValue({c.Id}, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); AppendLine(); } } @@ -209,9 +216,11 @@ private void GenerateCurves(ModuleDesc module) AddIndent(() => { AppendLine($"if (buffer.Length < {curve.Size})"); - AddIndent(() => AppendLine($"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); + AddIndent(() => + AppendLine( + $"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); AppendLine(); - AppendLine($"Module.ReadCurve({curve.Id}, buffer);"); + AppendLine($"ModuleHandle.ReadCurve({curve.Id}, buffer);"); }); AppendLine("}"); AppendLine(); @@ -226,9 +235,11 @@ private void GenerateCurves(ModuleDesc module) AddIndent(() => { AppendLine($"if (buffer.Length < {curve.Size})"); - AddIndent(() => AppendLine($"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); + AddIndent(() => + AppendLine( + $"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); AppendLine(); - AppendLine($"Module.WriteCurve({curve.Id}, buffer);"); + AppendLine($"ModuleHandle.WriteCurve({curve.Id}, buffer);"); }); AppendLine("}"); AppendLine(); diff --git a/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs b/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs index a15d04a..f02fad7 100644 --- a/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs +++ b/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs @@ -5,10 +5,10 @@ internal class VorbisPlayerAdditionalGenerator : AdditionalGenerator public override void AppendCode() { AppendLine("/// "); - AppendLine("public void LoadVorbis(string path) => Module.LoadIntoVorbisPLayer(path);"); + AppendLine("public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path);"); AppendLine(); AppendLine("/// "); - AppendLine("public void LoadIntoVorbisPLayer(byte[] data) => Module.LoadIntoVorbisPLayer(data);"); + AppendLine("public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data);"); } } } diff --git a/CodeGeneration/ModuleDataParser.cs b/CodeGeneration/ModuleDataParser.cs index e77ce84..a1c2180 100644 --- a/CodeGeneration/ModuleDataParser.cs +++ b/CodeGeneration/ModuleDataParser.cs @@ -1,8 +1,8 @@ -using CodeGeneration.ReparsedData; +using System.Text.RegularExpressions; +using CodeGeneration.ReparsedData; using SunSharp; using SunSharp.ObjectWrapper; using SunSharp.ThinWrapper; -using System.Text.RegularExpressions; namespace CodeGeneration { @@ -32,7 +32,8 @@ internal static void RecreateModuleDescriptions(Data oldData, Data newData, Slot } } - internal static ModuleDesc CreateModuleDescription(Data newData, ModuleDesc original, SunSharp.ObjectWrapper.ModuleHandle module) + internal static ModuleDesc CreateModuleDescription(Data newData, ModuleDesc original, + SunSharp.ObjectWrapper.ModuleHandle module) { var internalName = module.Slot.Library.GetModuleName(module.Slot.Id, module.Id); var friendlyName = ModuleTypes.GetFriendlyName(internalName); @@ -43,14 +44,17 @@ internal static ModuleDesc CreateModuleDescription(Data newData, ModuleDesc orig for (int i = 0; i < module.GetControllerCount(); i++) { var originalControllerDescription = original?.Controllers?.FirstOrDefault(c => c.Id == i); - var controllerDescription = CreateControllerDescription(newData, originalControllerDescription, module, i); + var controllerDescription = + CreateControllerDescription(newData, originalControllerDescription, module, i); controllerDescriptions.Add(controllerDescription); } - return new ModuleDesc(friendlyName, internalName, description, controllerDescriptions, curveDescriptions, original?.AdditionalCodeDescription); + return new ModuleDesc(friendlyName, internalName, description, controllerDescriptions, curveDescriptions, + original?.AdditionalCodeDescription); } - internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc original, SunSharp.ObjectWrapper.ModuleHandle module, int i) + internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc original, + SunSharp.ObjectWrapper.ModuleHandle module, int i) { var originalName = module.GetControllerName(i); var friendlyName = original?.FriendlyName ?? SanitizeControllerName(originalName); @@ -62,11 +66,14 @@ internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc origin if (original != null) { if (original.MinValue != minValue) - Console.WriteLine($"MinValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MinValue}, is: {minValue})"); + Console.WriteLine( + $"MinValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MinValue}, is: {minValue})"); if (original.MaxValue != maxValue) - Console.WriteLine($"MaxValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MaxValue}, is: {maxValue})"); + Console.WriteLine( + $"MaxValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MaxValue}, is: {maxValue})"); if (original.InternalName != originalName) - Console.WriteLine($"InternalName changed on {i}.{friendlyName}@{module.GetName()} (was: {original.FriendlyName}, is: {friendlyName})"); + Console.WriteLine( + $"InternalName changed on {i}.{friendlyName}@{module.GetName()} (was: {original.FriendlyName}, is: {friendlyName})"); } var originalIsEnum = module.GetControllerType(i); @@ -81,7 +88,8 @@ internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc origin var @enum = newData.Enums.FirstOrDefault(e => e.Name == original.EnumTypeName); if (@enum == null) { - Console.WriteLine($"Enum {original.EnumTypeName} of controller {i}.{friendlyName}@{module.GetName()} was not found!"); + Console.WriteLine( + $"Enum {original.EnumTypeName} of controller {i}.{friendlyName}@{module.GetName()} was not found!"); } else { @@ -89,13 +97,15 @@ internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc origin var max = @enum.Values.Max(v => v.value); if (min != original.MinValue || max != original.MaxValue) { - Console.WriteLine($"Enum {@enum.Name} doesn't fit value range of controller {i}.{friendlyName}@{module.GetName()} (is: {min} to {max}, but expected ({minValue} to {maxValue})"); + Console.WriteLine( + $"Enum {@enum.Name} doesn't fit value range of controller {i}.{friendlyName}@{module.GetName()} (is: {min} to {max}, but expected ({minValue} to {maxValue})"); } } } else if (original.IgnoreInternalEnum == false) { - Console.WriteLine($"Missing enum type or ignore on controller {i}.{friendlyName}@{module.GetName()}"); + Console.WriteLine( + $"Missing enum type or ignore on controller {i}.{friendlyName}@{module.GetName()}"); } } else @@ -104,16 +114,20 @@ internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc origin { if (!string.IsNullOrWhiteSpace(original.EnumTypeName)) { - Console.WriteLine($"Controller {i}.{friendlyName}@{module.GetName()} is of type Real, but enum name is assigned"); + Console.WriteLine( + $"Controller {i}.{friendlyName}@{module.GetName()} is of type Real, but enum name is assigned"); } + if (original.IgnoreInternalEnum) { - Console.WriteLine($"Controller {i}.{friendlyName}@{module.GetName()} has unnecessary ignore of missing Enum, since controller is of type Real"); + Console.WriteLine( + $"Controller {i}.{friendlyName}@{module.GetName()} has unnecessary ignore of missing Enum, since controller is of type Real"); } } } - return new CtlDesc(i, friendlyName, originalName, description, minValue, maxValue, original?.IgnoreInternalEnum ?? false, original?.EnumTypeName); + return new CtlDesc(i, friendlyName, originalName, description, minValue, maxValue, + original?.IgnoreInternalEnum ?? false, original?.EnumTypeName); } internal static string SanitizeControllerName(string name) diff --git a/CodeGeneration/ModuleTypes.cs b/CodeGeneration/ModuleTypes.cs index cf82dfc..b083a45 100644 --- a/CodeGeneration/ModuleTypes.cs +++ b/CodeGeneration/ModuleTypes.cs @@ -5,53 +5,54 @@ public partial class ModuleTypes public static ICollection<(int value, string friendlyName, string internalName)> GetModuleTypes() => new (int, string, string)[] { - (1,"AnalogGenerator", "Analog generator"), - (2,"DrumSynth", "DrumSynth"), - (3, "FM", "FM"), - (4, "FMX", "FMX"), - (5, "Generator", "Generator"), - (6, "Input", "Input"), - (7, "Kicker", "Kicker"), - (8, "VorbisPlayer", "Vorbis player"), - (9, "Sampler", "Sampler"), - (10, "SpectraVoice", "SpectraVoice"), + (1, "AnalogGenerator", "Analog generator"), + (2, "DrumSynth", "DrumSynth"), + (3, "FM", "FM"), + (4, "FMX", "FMX"), + (5, "Generator", "Generator"), + (6, "Input", "Input"), + (7, "Kicker", "Kicker"), + (8, "VorbisPlayer", "Vorbis player"), + (9, "Sampler", "Sampler"), + (10, "SpectraVoice", "SpectraVoice"), - (64, "Amplifier", "Amplifier"), - (65, "Compressor", "Compressor"), - (66, "DcBlocker", "DC Blocker"), - (67, "Delay", "Delay"), - (68, "Distortion", "Distortion"), - (69, "Echo", "Echo"), - (70, "EQ", "EQ"), - (71, "FFT", "FFT"), - (72, "Filter", "Filter"), - (73, "FilterPro", "Filter Pro"), - (74, "Flanger", "Flanger"), - (75, "LFO", "LFO"), - (76, "Loop", "Loop"), - (77, "Modulator", "Modulator"), - (78, "PitchShifter", "Pitch shifter"), - (79, "Reverb", "Reverb"), - (80, "VocalFilter", "Vocal filter"), - (81, "Vibrato", "Vibrato"), - (82, "WaveShaper", "WaveShaper"), - (128, "ADSR", "ADSR"), - (129, "ControlToNote", "Ctl2Note"), - (130, "Feedback", "Feedback"), - (131, "Glide", "Glide"), - (132, "GPIO", "GPIO"), - (133, "MetaModule", "MetaModule"), - (134, "MultiControl", "MultiCtl"), - (135, "MultiSynth", "MultiSynth"), - (136, "PitchToControl", "Pitch2Ctl"), - (137, "PitchDetector", "Pitch Detector"), - (138, "SoundToControl", "Sound2Ctl"), - (139, "VelocityToControl", "Velocity2Ctl"), + (64, "Amplifier", "Amplifier"), + (65, "Compressor", "Compressor"), + (66, "DcBlocker", "DC Blocker"), + (67, "Delay", "Delay"), + (68, "Distortion", "Distortion"), + (69, "Echo", "Echo"), + (70, "EQ", "EQ"), + (71, "FFT", "FFT"), + (72, "Filter", "Filter"), + (73, "FilterPro", "Filter Pro"), + (74, "Flanger", "Flanger"), + (75, "LFO", "LFO"), + (76, "Loop", "Loop"), + (77, "Modulator", "Modulator"), + (78, "PitchShifter", "Pitch shifter"), + (79, "Reverb", "Reverb"), + (80, "VocalFilter", "Vocal filter"), + (81, "Vibrato", "Vibrato"), + (82, "WaveShaper", "WaveShaper"), + (128, "ADSR", "ADSR"), + (129, "ControlToNote", "Ctl2Note"), + (130, "Feedback", "Feedback"), + (131, "Glide", "Glide"), + (132, "GPIO", "GPIO"), + (133, "MetaModule", "MetaModule"), + (134, "MultiControl", "MultiCtl"), + (135, "MultiSynth", "MultiSynth"), + (136, "PitchToControl", "Pitch2Ctl"), + (137, "PitchDetector", "Pitch Detector"), + (138, "SoundToControl", "Sound2Ctl"), + (139, "VelocityToControl", "Velocity2Ctl"), - (-1, "Output", "Output"), + (-1, "Output", "Output"), }; - private static ICollection<(int value, string friendlyName, string internalName)> _privateCollection = GetModuleTypes(); + private static ICollection<(int value, string friendlyName, string internalName)> _privateCollection = + GetModuleTypes(); public static string GetFriendlyName(string internalName) { diff --git a/CodeGeneration/Program.cs b/CodeGeneration/Program.cs index 04e1f8d..0fbfcb4 100644 --- a/CodeGeneration/Program.cs +++ b/CodeGeneration/Program.cs @@ -1,7 +1,7 @@ -using CodeGeneration.Generators.SpecificGenerators; +using System.Runtime.CompilerServices; +using CodeGeneration.Generators.SpecificGenerators; using CodeGeneration.ReparsedData; using SunSharp.ObjectWrapper; -using System.Runtime.CompilerServices; namespace CodeGeneration { @@ -9,7 +9,8 @@ internal static class Program { internal static SunVox _sunVox; - internal static string GetSourceFilePathName([CallerFilePath] string callerFilePath = null) => Path.GetDirectoryName(callerFilePath) ?? ""; + internal static string GetSourceFilePathName([CallerFilePath] string callerFilePath = null) => + Path.GetDirectoryName(callerFilePath) ?? ""; private static float[] buffer = new float[32]; diff --git a/CodeGeneration/ReparsedData/Classes.cs b/CodeGeneration/ReparsedData/Classes.cs index ebe75a3..35f0ae9 100644 --- a/CodeGeneration/ReparsedData/Classes.cs +++ b/CodeGeneration/ReparsedData/Classes.cs @@ -11,7 +11,8 @@ public class ModuleDesc public ICollection Curves { get; set; } public AddCodeDesc AdditionalCodeDescription { get; set; } - public ModuleDesc(string friendlyName, string internalName, string description, ICollection controllers, ICollection curves, AddCodeDesc aditionalCodeDescription) + public ModuleDesc(string friendlyName, string internalName, string description, + ICollection controllers, ICollection curves, AddCodeDesc aditionalCodeDescription) { FriendlyName = friendlyName; InternalName = internalName; @@ -45,7 +46,8 @@ public class CtlDesc public bool IgnoreInternalEnum { get; set; } public string EnumTypeName { get; set; } - public CtlDesc(int id, string friendlyName, string internalName, string description, int min, int max, bool ignoreInternalEnum = false, string enumTypeName = null) + public CtlDesc(int id, string friendlyName, string internalName, string description, int min, int max, + bool ignoreInternalEnum = false, string enumTypeName = null) { Id = id; FriendlyName = friendlyName; @@ -57,7 +59,8 @@ public CtlDesc(int id, string friendlyName, string internalName, string descript IgnoreInternalEnum = ignoreInternalEnum; } - public CtlDesc(int id, string friendlyName, string internalname, string description, int min, int max, string enumTypeName) + public CtlDesc(int id, string friendlyName, string internalname, string description, int min, int max, + string enumTypeName) { Id = id; FriendlyName = friendlyName; diff --git a/Examples/AbstractionHorizontalJumps.cs b/Examples/AbstractionHorizontalJumps.cs deleted file mode 100644 index 27c2340..0000000 --- a/Examples/AbstractionHorizontalJumps.cs +++ /dev/null @@ -1,97 +0,0 @@ -using SunSharp; -using SunSharp.Abstractions.Horizontal.Jumping; -using SunSharp.DerivedData; -using SunSharp.ObjectWrapper; - -namespace Examples; - -internal class AbstractionHorizontalJumps : BaseExample -{ - protected void Feedback(SunSharp.Abstractions.MessageType type, string message) - { - WriteLine($"[{type}]{message}"); - } - - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load(Path.Join("jump_demo.sunvox")); - WriteLine($"Loaded song: {slot.GetSongName()}"); - - var description = BuildDescription(); - var songData = SongData.ReadSongData(slot); - var graph = GraphBuilder.BuildJumpGraph(songData, description, Feedback); - var controller = new GraphController(slot, graph); - WriteLine("Description and graph built."); - - WriteLine("Enumerating states."); - foreach (var state in graph.States) - WriteLine($"{state.Id}. {state.Name}"); - - WriteLine("Enumerating transitions."); - foreach (var transition in graph.Transitions) - WriteLine($"{transition.Id}. {transition.Name} (from: \"{transition.FromStateId}\" to: \"{transition.ToStateId}\")"); - - var allowedNames = graph.States.Select(s => s.Name); - controller.Start(controller.GetState("I")); - var input = string.Empty; - do - { - WriteLine("Select a target state or type \"exit\" to stop"); - WriteLine($"Available states: {string.Join(", ", allowedNames)}"); - - input = ReadLine(); - input = input?.Trim() ?? string.Empty; - if (allowedNames.Contains(input)) - { - var targetState = controller.GetState(input); - controller.DirectGraphToState(targetState); - } - } while (string.Compare(input, "exit", true) != 0); - - slot.Close(); - } - } - - private static IGraphDescription BuildDescription() - { - var description = new SimpleGraphDescription(); - description.Name = "Example"; - var I = description.AddState("I", "State1", hasLoop: true); - var ii = description.AddState("ii", "State2", hasLoop: true); - var iii = description.AddState("iii", "State3", hasLoop: true); - var IV = description.AddState("IV", "State4", hasLoop: true); - var V = description.AddState("V", "State5", hasLoop: true); - var vi = description.AddState("vi", "State6", hasLoop: true); - var viio = description.AddState("viio", "State7", hasLoop: true); - description.AddTransition("I-ii", I, ii); - description.AddTransition("I-iii", I, iii); - description.AddTransition("I-IV", I, IV); - description.AddTransition("I-V", I, V); - description.AddTransition("I-vi", I, vi); - description.AddTransition("I-viio", I, viio); - - description.AddTransition("ii-V", ii, V); - - description.AddTransition("iii-vi", iii, vi); - description.AddTransition("iii-IV", iii, IV); - - description.AddTransition("IV-ii", IV, ii); - description.AddTransition("IV-V", IV, V); - - description.AddTransition("V-I", V, I); - - description.AddTransition("vi-IV", vi, IV); - description.AddTransition("vi-ii", vi, ii); - - description.AddTransition("viio-I", viio, I); - description.AddTransition("viio-V", viio, V); - - return description; - } -} diff --git a/Examples/ObjectWrapperListModulesAndPatterns.cs b/Examples/ObjectWrapperListModulesAndPatterns.cs index 553f4b4..1a37a18 100644 --- a/Examples/ObjectWrapperListModulesAndPatterns.cs +++ b/Examples/ObjectWrapperListModulesAndPatterns.cs @@ -54,6 +54,7 @@ private void ListPatterns(Slot slot) if (t < tracks - 1) Write(" "); } + Write(Environment.NewLine); } } diff --git a/Examples/ObjectWrapperManagePatterns.cs b/Examples/ObjectWrapperManagePatterns.cs index 748dbef..3f3d056 100644 --- a/Examples/ObjectWrapperManagePatterns.cs +++ b/Examples/ObjectWrapperManagePatterns.cs @@ -31,10 +31,9 @@ protected override void RunTest(ISunVoxLib lib) var data = pattern.GetData2D(); var newData = new PatternEvent[lines, tracks]; - - for(int l = 0; l < lines; l++) + for (int l = 0; l < lines; l++) { - for(int t = 0; t < tracks; t++) + for (int t = 0; t < tracks; t++) { newData[l, t] = data[lines - 1 - l, tracks - t - 1]; } @@ -56,8 +55,10 @@ protected override void RunTest(ISunVoxLib lib) line = currentLine; WriteLine($"Current line: {line}"); } + Thread.Sleep(10); } + WriteLine("Song finished"); Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... slot.Close(); diff --git a/Examples/ObjectWrapperPlaySong.cs b/Examples/ObjectWrapperPlaySong.cs index 1a7a8b4..932713e 100644 --- a/Examples/ObjectWrapperPlaySong.cs +++ b/Examples/ObjectWrapperPlaySong.cs @@ -29,8 +29,10 @@ protected override void RunTest(ISunVoxLib lib) line = currentLine; WriteLine($"Current line: {line}"); } + Thread.Sleep(10); } + WriteLine("Song finished"); Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... diff --git a/Examples/ObjectWrapperSendEvents.cs b/Examples/ObjectWrapperSendEvents.cs index 454392e..1261b18 100644 --- a/Examples/ObjectWrapperSendEvents.cs +++ b/Examples/ObjectWrapperSendEvents.cs @@ -28,13 +28,13 @@ private void SendNotes(Slot slot) var ticksPerBeat = (int)(ticksPerSecond * 60f / 80f); var data = new (Note note, int time)[] // the lick, lol { - (new Note(NoteName.D, 3), ticksPerBeat/4), // note, and the time it should be held, in ticks - (new Note(NoteName.E, 3), ticksPerBeat/4), - (new Note(NoteName.F, 3), ticksPerBeat/4), - (new Note(NoteName.G, 3), ticksPerBeat/4), - (new Note(NoteName.E, 3), ticksPerBeat * 2/4), - (new Note(NoteName.C, 3), ticksPerBeat/4), - (new Note(NoteName.D, 3), ticksPerBeat/4), + (new Note(NoteName.D, 3), ticksPerBeat / 4), // note, and the time it should be held, in ticks + (new Note(NoteName.E, 3), ticksPerBeat / 4), + (new Note(NoteName.F, 3), ticksPerBeat / 4), + (new Note(NoteName.G, 3), ticksPerBeat / 4), + (new Note(NoteName.E, 3), ticksPerBeat * 2 / 4), + (new Note(NoteName.C, 3), ticksPerBeat / 4), + (new Note(NoteName.D, 3), ticksPerBeat / 4), (Note.Off, 0) }; @@ -46,6 +46,7 @@ private void SendNotes(Slot slot) vp.SendEvent(0, new PatternEvent(pair.note, 0x80, 2)); accumulator += pair.time; } + vp.ResetEventTiming(); var wait = accumulator / (float)ticksPerSecond + 1; diff --git a/Examples/ObjectWrapperUseModules.cs b/Examples/ObjectWrapperUseModules.cs index df5d34f..6525a48 100644 --- a/Examples/ObjectWrapperUseModules.cs +++ b/Examples/ObjectWrapperUseModules.cs @@ -32,10 +32,11 @@ protected override void RunTest(ISunVoxLib lib) foreach (var f in buffer) WriteLine($"{f}"); WriteLine($"Changing drawn values"); - for(int i = 0; i < 32; i++) + for (int i = 0; i < 32; i++) { - buffer[i] = MathF.Sin(i * MathF.PI*2/32f); + buffer[i] = MathF.Sin(i * MathF.PI * 2 / 32f); } + analogGenerator.WriteDrawnValues(buffer); WriteLine($"Reading drawn values"); analogGenerator.ReadDrawnValues(buffer); @@ -50,14 +51,16 @@ protected override void RunTest(ISunVoxLib lib) while (line != slot.GetSongLengthInLines() - 1 || slot.IsPlaying()) { var currentLine = slot.GetCurrentLine(); - analogGenerator.SetPanning((int)(128 * MathF.Sin(currentLine/32f*4f))); + analogGenerator.SetPanning((int)(128 * MathF.Sin(currentLine / 32f * 4f))); if (currentLine != line) { line = currentLine; WriteLine($"Current line: {line}"); } + Thread.Sleep(10); } + WriteLine("Song finished"); Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... slot.Close(); diff --git a/Examples/Program.cs b/Examples/Program.cs index f5e1385..a89154b 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -1,6 +1,6 @@ namespace Examples; -internal static partial class Program +internal static class Program { private static List Options = new List() { @@ -13,7 +13,6 @@ internal static partial class Program new ManualJobContainer("Object wrapper - send events"), new ManualJobContainer("Object wrapper - using Modules"), new ManualJobContainer("Object wrapper - manage patterns"), - new ManualJobContainer("Abstraction - horizontal jumps"), }; private static void Main(string[] args) diff --git a/Examples/ThinWrapperListModulesAndPatterns.cs b/Examples/ThinWrapperListModulesAndPatterns.cs index f237890..d2157f3 100644 --- a/Examples/ThinWrapperListModulesAndPatterns.cs +++ b/Examples/ThinWrapperListModulesAndPatterns.cs @@ -59,7 +59,8 @@ private void ListPatterns(ISunVoxLib lib) var tracks = lib.GetPatternTracks(0, i); var lines = lib.GetPatternLines(0, i); var data = lib.GetPatternData(0, i); - WriteLine($"{i}. \"{name}\" at position (x: {position.x}, y: {position.y}), length: ({tracks}x{lines})"); + WriteLine( + $"{i}. \"{name}\" at position (x: {position.x}, y: {position.y}), length: ({tracks}x{lines})"); WriteLine("Data:"); WriteLine(string.Join(" ", Enumerable.Repeat("NNVVMMMMCCEEXXYY", tracks))); @@ -72,6 +73,7 @@ private void ListPatterns(ISunVoxLib lib) if (t < tracks - 1) Write(" "); } + Write(Environment.NewLine); } } diff --git a/Examples/ThinWrapperPlaySong.cs b/Examples/ThinWrapperPlaySong.cs index 836f771..5689df0 100644 --- a/Examples/ThinWrapperPlaySong.cs +++ b/Examples/ThinWrapperPlaySong.cs @@ -13,7 +13,7 @@ protected override void RunTest(ISunVoxLib lib) lib.OpenSlot(0); lib.Load(0, "the_lick.sunvox"); WriteLine($"Loaded song: {lib.GetSongName(0)}"); - lib.SetAutostop(0, autostop: true); + lib.SetAutoStop(0, autoStop: true); lib.Rewind(0, line: 0); WriteLine("Playing the song"); lib.Play(0); @@ -27,8 +27,10 @@ protected override void RunTest(ISunVoxLib lib) line = currentLine; WriteLine($"Current line: {line}"); } + Thread.Sleep(10); } + WriteLine("Song finished"); Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... diff --git a/Examples/ThinWrapperSendEvents.cs b/Examples/ThinWrapperSendEvents.cs index 398f806..cbab3c2 100644 --- a/Examples/ThinWrapperSendEvents.cs +++ b/Examples/ThinWrapperSendEvents.cs @@ -26,13 +26,13 @@ private void SendNotes(ISunVoxLib lib) var tpb = (int)(tps * 60f / 80f); var data = new (Note note, int time)[] // the lick, lol { - (new Note(NoteName.D, 3), tpb/4), // note, and the time it should be held, in ticks - (new Note(NoteName.E, 3), tpb/4), - (new Note(NoteName.F, 3), tpb/4), - (new Note(NoteName.G, 3), tpb/4), - (new Note(NoteName.E, 3), tpb * 2/4), - (new Note(NoteName.C, 3), tpb/4), - (new Note(NoteName.D, 3), tpb/4), + (new Note(NoteName.D, 3), tpb / 4), // note, and the time it should be held, in ticks + (new Note(NoteName.E, 3), tpb / 4), + (new Note(NoteName.F, 3), tpb / 4), + (new Note(NoteName.G, 3), tpb / 4), + (new Note(NoteName.E, 3), tpb * 2 / 4), + (new Note(NoteName.C, 3), tpb / 4), + (new Note(NoteName.D, 3), tpb / 4), (Note.Off, 0) }; @@ -44,6 +44,7 @@ private void SendNotes(ISunVoxLib lib) lib.SendEvent(0, 0, new PatternEvent(pair.note, 0x80, 2)); accumulator += pair.time; } + lib.SetSendEventTimestamp(0, true); var wait = accumulator / (float)tps + 1; diff --git a/Examples/ThinWrapperUserAudioCallback.cs b/Examples/ThinWrapperUserAudioCallback.cs index 852bae6..28f9208 100644 --- a/Examples/ThinWrapperUserAudioCallback.cs +++ b/Examples/ThinWrapperUserAudioCallback.cs @@ -9,12 +9,13 @@ internal class ThinWrapperUserAudioCallback : BaseExample protected override void RunTest(ISunVoxLib lib) { WriteLine("Initializing"); - lib.Init(48000, channels: AudioChannels.Stereo, flags: InitFlags.UserAudioCallback | InitFlags.AudioFloat32); + lib.Init(48000, channels: AudioChannels.Stereo, + flags: InitFlags.UserAudioCallback | InitFlags.AudioFloat32); WriteLine("Loading the song"); lib.OpenSlot(0); lib.Load(0, "the_lick.sunvox"); WriteLine($"Loaded song: {lib.GetSongName(0)}"); - lib.SetAutostop(0, autostop: true); + lib.SetAutoStop(0, autoStop: true); lib.Rewind(0, line: 0); WriteLine("Playing the song"); lib.Play(0); @@ -34,8 +35,10 @@ protected override void RunTest(ISunVoxLib lib) line = currentLine; WriteLine($"Current line: {line}"); } + Thread.Sleep(10); } + WriteLine("Song finished"); Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... } @@ -75,6 +78,7 @@ public int Read(float[] buffer, int offset, int count) { buffer[offset + i] = _internalBuffer[_offset + i]; } + _offset += copiedCount; return copiedCount; } diff --git a/SunSharp.Redistribution/Redistribution.cs b/SunSharp.Redistribution/Redistribution.cs index ce8ca2b..fdf3f5b 100644 --- a/SunSharp.Redistribution/Redistribution.cs +++ b/SunSharp.Redistribution/Redistribution.cs @@ -1,7 +1,7 @@ -using SunSharp.LibraryLoading; -using System; +using System; using System.IO; using System.Runtime.InteropServices; +using SunSharp.LibraryLoading; namespace SunSharp.Redistribution { @@ -101,6 +101,7 @@ private static string GetLibraryPath() if (RuntimeInformation.ProcessArchitecture == Architecture.X86) return Path.Combine("lib", "windows", "lib_x86", "sunvox.dll"); } + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) @@ -110,6 +111,7 @@ private static string GetLibraryPath() if (RuntimeInformation.ProcessArchitecture == Architecture.X86) return Path.Combine("lib", "linux", "lib_x86", "sunvox.so"); } + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) @@ -117,59 +119,56 @@ private static string GetLibraryPath() if (RuntimeInformation.ProcessArchitecture == Architecture.X64) return Path.Combine("lib", "macos", "lib_x86_64", "sunvox.dylib"); } + throw new InvalidOperationException("Unsupported OS."); } #endregion platform invoke - private static readonly object _lock = new object(); - private static IntPtr LoadedLibraryHandle; - private static ProxyClass proxyClass; + private static readonly object Lock = new object(); + private static IntPtr _loadedLibraryHandle = IntPtr.Zero; + private static ProxyClass? _proxyClass; public static void LoadLibrary() { - lock (_lock) + lock (Lock) { - if (LoadedLibraryHandle == IntPtr.Zero) - { - var path = GetLibraryPath(); - if (!File.Exists(path)) - throw new InvalidOperationException($"Library at location \"{path}\" does not exist."); - - LoadedLibraryHandle = LoadLibrary(path); - if (LoadedLibraryHandle == IntPtr.Zero) - throw new InvalidOperationException("LoadLibrary failed."); - } + if (_loadedLibraryHandle != IntPtr.Zero) + return; + + var path = GetLibraryPath(); + if (!File.Exists(path)) + throw new InvalidOperationException($"Library at location \"{path}\" does not exist."); + + _loadedLibraryHandle = LoadLibrary(path); + if (_loadedLibraryHandle == IntPtr.Zero) + throw new InvalidOperationException("LoadLibrary failed."); } } public static ISunVoxLib GetLibrary() { - lock (_lock) + lock (Lock) { - if (LoadedLibraryHandle == IntPtr.Zero) + if (_loadedLibraryHandle == IntPtr.Zero) throw new InvalidOperationException("Library is not loaded yet."); - if (proxyClass == null) - { - proxyClass = new ProxyClass(GetDelegateFromName); - } - return proxyClass; + return _proxyClass ??= new ProxyClass(GetDelegateFromName); } } public static void UnloadLibrary() { - lock (_lock) + lock (Lock) { - if (LoadedLibraryHandle != IntPtr.Zero) - UnloadLibrary(LoadedLibraryHandle); + if (_loadedLibraryHandle != IntPtr.Zero) + UnloadLibrary(_loadedLibraryHandle); } } private static Delegate GetDelegateFromName(string name, Type delegateType) { - var ptr = FindFunction(LoadedLibraryHandle, name); + var ptr = FindFunction(_loadedLibraryHandle, name); if (ptr == IntPtr.Zero) throw new InvalidOperationException($"Symbol {name} not found! Library: {GetLibraryPath()}."); return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/SunSharp.Redistribution/SunSharp.Redistribution.csproj index 09a402e..7ec2819 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.1 SunSharp.Redistribution True Sotakebk.SunSharp.Redistribution @@ -19,6 +19,19 @@ license.txt True snupkg + enable + + + + 9999 + + $(WarningsAsErrors);NU1605;Nullable + + + + 9999 + + $(WarningsAsErrors);NU1605;Nullable diff --git a/SunSharp/Abstractions/AbstractionBuildingException.cs b/SunSharp/Abstractions/AbstractionBuildingException.cs deleted file mode 100644 index 9ddc0c0..0000000 --- a/SunSharp/Abstractions/AbstractionBuildingException.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace SunSharp.Abstractions -{ - internal class AbstractionBuildingException : System.Exception - { - public AbstractionBuildingException(string message) : base(message) - { - } - - public AbstractionBuildingException(string message, System.Exception innerException) : base(message, innerException) - { - } - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/Graph.cs b/SunSharp/Abstractions/Horizontal/Jumping/Graph.cs deleted file mode 100644 index 367e0ab..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/Graph.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public sealed class Graph - { - public string Name { get; internal set; } - public IReadOnlyCollection States { get; internal set; } - public IReadOnlyCollection Transitions { get; internal set; } - public State StartingState { get; internal set; } - - internal Graph() - { - } - - public static Graph BuildFromData(GraphData data) - { - var states = data.States.Select(s => new State() - { - Id = s.Id, - Name = s.Name, - FirstLine = s.FirstLine, - LastLine = s.LastLine - }).ToArray(); - - var transitions = data.Transitions.Select(t => new Transition() - { - Id = t.Id, - Name = t.Name, - Looping = t.FromStateId == t.ToStateId, - Stopping = t.IsStopping, - FromState = states.First(s => s.Id == t.FromStateId), - ToState = states.First(s => s.Id == t.ToStateId), - PatternIds = t.PatternIds.Select(i => i).ToArray() - }).ToArray(); - - foreach (var state in states) - { - state.LoopingTransition = transitions.FirstOrDefault(t => t.Looping && t.FromState == state); - state.StoppingTransition = transitions.FirstOrDefault(t => t.Stopping && t.FromState == state); - state.TransitionsFrom = transitions.Where(t => t.ToState == state - && t != state.LoopingTransition - && t != state.StoppingTransition).ToArray(); - state.TransitionsTo = transitions.Where(t => t.FromState == state - && t != state.LoopingTransition - && t != state.StoppingTransition).ToArray(); - } - - var graph = new Graph() - { - Name = data.Name, - StartingState = (data.StartStateId != null) - ? states.First(s => s.Id == data.StartStateId) - : null, - States = states.ToArray(), - Transitions = transitions.ToArray() - }; - - foreach (var state in states) - state.JumpGraph = graph; - - foreach (var transition in transitions) - transition.JumpGraph = graph; - - return graph; - } - } - - public sealed class State - { - public Graph JumpGraph { get; internal set; } - public int Id { get; internal set; } - public string Name { get; internal set; } - public int FirstLine { get; internal set; } - public int LastLine { get; internal set; } - public Transition LoopingTransition { get; internal set; } - public Transition StoppingTransition { get; internal set; } - public IReadOnlyCollection TransitionsFrom { get; internal set; } - public IReadOnlyCollection TransitionsTo { get; internal set; } - - internal State() - { - } - } - - public sealed class Transition - { - public Graph JumpGraph { get; internal set; } - public int Id { get; internal set; } - public string Name { get; internal set; } - public bool Stopping { get; internal set; } - public bool Looping { get; internal set; } - public State FromState { get; internal set; } - public State ToState { get; internal set; } - public IReadOnlyCollection PatternIds { get; internal set; } - - internal Transition() - { - } - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/GraphBuilder.cs b/SunSharp/Abstractions/Horizontal/Jumping/GraphBuilder.cs deleted file mode 100644 index c580869..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/GraphBuilder.cs +++ /dev/null @@ -1,512 +0,0 @@ -using SunSharp.DerivedData; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public static class GraphBuilder - { - #region building - - public static GraphData BuildJumpGraph(IReadOnlySongData songData, IGraphDescription description, Action feedback = null) - { - var patterns = AnalyzePatterns(songData, feedback); - var stacks = OrganizeStacks(patterns, feedback); - var segments = SplitTimeline(stacks, description, feedback); - var transitions = BuildTransitions(segments, patterns, feedback); - var graph = ConstructGraph(segments, transitions, description, feedback); - - if (ValidateConstructedGraph(graph, description, feedback)) - throw new AbstractionBuildingException("Graph validation failed. Is the input data correct?"); - - return graph; - } - - #region pattern analysis - - private struct AnalyzedPattern - { - public int Id; - public string Name; - public int FirstLine; - public int LastLine; - public bool HasData; - public (int from, int to)[] Jumps; - public int[] Stops; - - public bool HasJumps => Jumps?.Any() ?? false; - public bool HasStops => Stops?.Any() ?? false; - } - - private static AnalyzedPattern[] AnalyzePatterns(IReadOnlySongData songData, Action feedback) - { - var analyzedPatterns = new List(songData.Patterns.Count); - foreach (var pattern in songData.Patterns) - { - var analzedPattern = AnalyzePattern(pattern, feedback); - analyzedPatterns.Add(analzedPattern); - } - return analyzedPatterns.ToArray(); - } - - private static AnalyzedPattern AnalyzePattern(IReadOnlyPatternData patternData, Action feedback) - { - int CalculateJumpTargetLine(int currentLine, ImmutablePatternEvent mode, ImmutablePatternEvent jump) - { - switch (mode.XXYY) - { - case 0: //0 - absolute address, relative to the start of the timeline(default) - return jump.XXYY; - - case 1: //1 - (pattern beginning + address) - return patternData.Position.X + jump.XXYY; - - case 2: //2 - (pattern beginning - address) - return patternData.Position.X - jump.XXYY; - - case 3: //3 - (next line + address) - return patternData.Position.X + currentLine + 1 + jump.XXYY; - - case 4: //4 - (next line - address); - return patternData.Position.X + currentLine + 1 - jump.XXYY; - - default: - feedback?.Invoke(MessageType.Warning, $"Unknown jump type {mode.XXYY} at line {currentLine} of pattern \"{patternData.Name}\", assuming absolute address."); - return jump.XXYY; - } - } - - var hasNormalData = false; - var jumps = new List<(int from, int to)>(); - var stops = new List(); - - var lines = patternData.Lines; - var tracks = patternData.Tracks; - if (!patternData.IsLinear) - { - for (int l = 0; l < lines; l++) - { - ImmutablePatternEvent? setJumpMode = null; - ImmutablePatternEvent? jump = null; - - for (int t = 0; t < tracks; t++) - { - var cEvent = patternData.Data.ElementAt(l * tracks + t); - if (cEvent.NN != 0 || cEvent.MM != 0 || cEvent.CC != 0) - hasNormalData = true; - - if (cEvent.Effect == Effect.SetJumpMode) - { - if (setJumpMode != null) - feedback?.Invoke(MessageType.Warning, $"Line {l} of pattern \"{patternData.Name}\" (id:{patternData.Id}) has multiple jump mode setting effects."); - else - setJumpMode = cEvent; - } - if (cEvent.Effect == Effect.Jump) - { - if (jump != null) - feedback?.Invoke(MessageType.Warning, $"Line {l} of pattern \"{patternData.Name}\" (id:{patternData.Id}) has multiple jump effects."); - else - jump = cEvent; - } - if (cEvent.Effect == Effect.StopPlaying) - { - stops.Add(patternData.Position.X + l); - } - } - if (setJumpMode != null && jump != null) - { - jumps.Add((patternData.Position.X + l, CalculateJumpTargetLine(l, setJumpMode.Value, jump.Value))); - } - if ((setJumpMode == null && jump != null) || (setJumpMode != null && jump == null)) - { - feedback?.Invoke(MessageType.Warning, $"Line {l} of pattern \"{patternData.Name}\" (id:{patternData.Id}) has malformed jump instruction. Both jump and jump mode setting effects must exist on the same line. Jump ignored!"); - } - } - } - - var ap = new AnalyzedPattern() - { - FirstLine = patternData.Position.X, - LastLine = patternData.Position.X + patternData.Lines - 1, - Id = patternData.Id, - Name = patternData.Name, - HasData = hasNormalData, - Jumps = jumps.ToArray(), - Stops = stops.ToArray() - }; - - if (ap.HasData && ap.HasJumps) - { - feedback?.Invoke(MessageType.Warning, $"Pattern \"{patternData.Name}\" (id:{patternData.Id}) has both jumps and normal data, which may cause unexpected behaviour."); - } - - if (patternData.IsDestructive) - { - feedback?.Invoke(MessageType.Info, $"Pattern \"{patternData.Name}\" (id:{patternData.Id}) has destructive effects, which may cause unexpected behaviour."); - } - - if (ap.HasJumps && ap.HasStops) - { - feedback?.Invoke(MessageType.Error, $"Pattern \"{patternData.Name}\" (id:{patternData.Id}) has both jumps and stops, which may cause unexpected behaviour."); - throw new AbstractionBuildingException($"Pattern \"{patternData.Name}\" (id:{patternData.Id}) has both jumps and stops, which may cause unexpected behaviour."); - } - - if (ap.HasJumps && !jumps.Any(j => j.from == patternData.Position.X + patternData.Lines - 1)) - { - feedback?.Invoke(MessageType.Warning, $"Pattern \"{patternData.Name}\" (id:{patternData.Id}) doesn't have any jumps on the final line, which may cause unexpected behaviour."); - } - - if (ap.HasStops && !stops.Any(s => s == patternData.Position.X + patternData.Lines - 1)) - { - feedback?.Invoke(MessageType.Warning, $"Pattern \"{patternData.Name}\" (id:{patternData.Id}) despite having stopping effects, doesn't have any stops on the final line, which may cause unexpected behaviour."); - } - - return ap; - } - - #endregion pattern analysis - - #region stack organisation - - private struct PatternStack - { - public int FirstLine; - public int LastLine; - public AnalyzedPattern[] Stack; - } - - private static PatternStack[] OrganizeStacks(AnalyzedPattern[] analyzedPatterns, Action feedback = null) - { - var firstLine = analyzedPatterns.Min(p => p.FirstLine); - var lastLine = analyzedPatterns.Max(p => p.LastLine); - - var leftEdges = analyzedPatterns.Select(p => p.FirstLine); - var rightEdges = analyzedPatterns.Select(p => p.LastLine); - var edges = leftEdges.Union(rightEdges).OrderBy(i => i).ToArray(); - - var stacks = new List(); - for (int i = 0; i < edges.Length - 1; i++) - { - var left = edges[i]; - var right = edges[i + 1]; - - var stack = analyzedPatterns.Where(p => (left < p.LastLine) && (p.FirstLine < right)).ToArray(); - if (stack.Length != 0) - stacks.Add(new PatternStack() { FirstLine = left, LastLine = right, Stack = stack }); - } - - return stacks.ToArray(); - } - - #endregion stack organisation - - #region split timeline - - private enum SegmentType - { - Unknown, - Known, - Overlap - } - - private class TimelineSegment - { - public string Name; - public int FirstLine; - public int LastLine; - public SegmentType Type; - public AnalyzedPattern? GuidePattern; - public AnalyzedPattern[] Patterns; - } - - private static TimelineSegment[] SplitTimeline(PatternStack[] stacks, IGraphDescription description, Action feedback) - { - var sortedStacks = stacks.OrderBy(s => s.FirstLine).ToArray(); - var segments = new List(); - var stateNames = description.DescribedStates.ToDictionary(s => s.GuideName, s => s.Name); - - int i = 0; - TimelineSegment currentSegment = null; - - while (i < sortedStacks.Length) - { - var currentStack = sortedStacks[i]; - - var names = currentStack.Stack.Where(p => stateNames.ContainsKey(p.Name)).Select(p => stateNames[p.Name]); - - var type = SegmentType.Unknown; - if (names.Count() == 1) - type = SegmentType.Known; - else if (names.Count() > 1) - type = SegmentType.Overlap; - - var segmentName = string.Empty; - if (type == SegmentType.Known) - segmentName = names.First(); - else if (type == SegmentType.Unknown) - segmentName = "Unknown"; - else if (type == SegmentType.Overlap) - segmentName = $"Overlap ({string.Join(",", names)})"; - - // merge the segments if possible - if (currentSegment != null && type == currentSegment.Type && segmentName == currentSegment.Name && currentSegment.LastLine + 1 == stacks[i].FirstLine) - { - currentSegment.LastLine = currentStack.LastLine; - currentSegment.Patterns = currentSegment.Patterns.Union(currentStack.Stack) - .GroupBy(p => p.Id) - .Select(g => g.First()) - .ToArray(); - } - else - { - currentSegment = new TimelineSegment() - { - FirstLine = currentStack.FirstLine, - LastLine = currentStack.LastLine, - Name = segmentName, - Patterns = currentStack.Stack, - Type = type, - }; - if (type == SegmentType.Known) - currentSegment.GuidePattern = currentStack.Stack.First(p => stateNames.ContainsKey(p.Name)); - segments.Add(currentSegment); - } - i++; - } - - foreach (var segment in segments) - { - if (segment.Type == SegmentType.Overlap) - feedback?.Invoke(MessageType.Warning, $"{segment.Name} at lines {segment.FirstLine} to {segment.LastLine}."); - if (segment.Type == SegmentType.Unknown) - feedback?.Invoke(MessageType.Warning, $"Unknown state at lines {segment.FirstLine} to {segment.LastLine}."); - } - - var multipleSegments = segments.Where(s => s.Type == SegmentType.Known).GroupBy(s => s.Name); - foreach (var group in multipleSegments) - { - if (group.Count() > 1) - { - feedback?.Invoke(MessageType.Error, $"State \"{group.Key}\" occurs multiple times."); - throw new AbstractionBuildingException($"State \"{group.Key}\" occurs multiple times."); - } - } - - return segments.ToArray(); - } - - #endregion split timeline - - #region build transitions - - private class PreparedTransition - { - public TimelineSegment From; - public TimelineSegment To; - public bool HasJumps; - public bool HasStops; - public List PatternIds; - } - - private static PreparedTransition[] BuildTransitions(TimelineSegment[] segments, AnalyzedPattern[] patterns, Action feedback) - { - var transitions = new List(); - - TimelineSegment SegmentFromPosition(int i) - { - return segments.Where(s => s.FirstLine <= i && s.LastLine >= i).FirstOrDefault(); - } - - foreach (var pattern in patterns) - { - if (pattern.HasJumps) - { - var segmentsFrom = pattern.Jumps.Select(j => SegmentFromPosition(j.from)).Distinct(); - var segmentsTo = pattern.Jumps.Select(j => SegmentFromPosition(j.to)).Distinct(); - - if (segmentsFrom.Contains(null) || segmentsFrom.Any(s => s.Type == SegmentType.Unknown)) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has jumps from an unknown state or silence. Pattern ignored!"); - continue; - } - - if (segmentsTo.Contains(null) || segmentsTo.Any(s => s.Type == SegmentType.Unknown)) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has jumps to an unknown state or silence. Pattern ignored!"); - continue; - } - - if (segmentsFrom.Count() != 1) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has jumps from multiple states. Pattern ignored!"); - continue; - } - if (segmentsTo.Count() != 1) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has jumps to multiple states. Pattern ignored!"); - continue; - } - - var segmentFrom = segmentsFrom.First(); - var segmentTo = segmentsTo.First(); - - var existing = transitions.FirstOrDefault(t => t.From == segmentFrom && t.To == segmentTo && t.HasJumps == true && t.HasStops == false); - - if (existing != null) - existing.PatternIds.Add(pattern.Id); - else - { - transitions.Add(new PreparedTransition() - { - From = segmentFrom, - To = segmentTo, - HasJumps = true, - PatternIds = new List() { pattern.Id } - }); - } - } - else if (pattern.HasStops) - { - var segmentsIn = pattern.Stops.Select(s => SegmentFromPosition(s)).Distinct(); - if (segmentsIn.Contains(null) || segmentsIn.Any(s => s.Type == SegmentType.Unknown)) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has stops in unknown states. Pattern ignored!"); - continue; - } - if (segmentsIn.Count() != 1) - { - feedback?.Invoke(MessageType.Error, $"Transition pattern \"{pattern.Name}\" (id:{pattern.Id}) has jumps in multiple states. Pattern ignored!"); - continue; - } - - var segmentIn = segmentsIn.First(); - var existing = transitions.FirstOrDefault(t => t.From == segmentIn && t.To == segmentIn && t.HasJumps == false && t.HasStops == true); - - if (existing != null) - existing.PatternIds.Add(pattern.Id); - else - { - transitions.Add(new PreparedTransition() - { - From = segmentIn, - To = segmentIn, - HasStops = true, - PatternIds = new List() { pattern.Id } - }); - } - } - } - - return transitions.ToArray(); - } - - #endregion build transitions - - #region construct graph - - private static GraphData ConstructGraph(TimelineSegment[] segments, PreparedTransition[] transitions, IGraphDescription description, Action feedback) - { - var _states = new List(); - var _transitions = new List(); - - int _stateId = 1; - foreach (var segment in segments) - { - if (segment.GuidePattern == null) // ignore overlaps and unknowns - continue; - - var newState = new StateData() - { - Id = _stateId, - FirstLine = segment.FirstLine, - LastLine = segment.LastLine, - Name = segment.Name - }; - _states.Add(newState); - _stateId++; - } - - int _transitionId = 1; - foreach (var transition in transitions) - { - var newTransition = new TransitionData() - { - Id = _transitionId, - Name = description.DescribedTransitions - .FirstOrDefault(dt => dt.FromState.Name == transition.From.Name && dt.ToState.Name == transition.To.Name) - ?.Name ?? $"(from \"{transition.From.Name}\" to \"{transition.To.Name}\")", - PatternIds = transition.PatternIds.ToArray(), - IsStopping = transition.HasStops, - FromStateId = _states.First(s => s.Name == transition.From.Name).Id, - ToStateId = _states.First(s => s.Name == transition.To.Name).Id - }; - _transitions.Add(newTransition); - _transitionId++; - } - - var graph = new GraphData() - { - Name = description.Name, - States = _states.ToArray(), - Transitions = _transitions.ToArray(), - StartStateId = (description.StartState != null) - ? (int?)_states.FirstOrDefault(s => s.Name == description.StartState.Name).Id - : null - }; - - return graph; - } - - #endregion construct graph - - #region validate constructed graph - - private static bool ValidateConstructedGraph(GraphData graph, IGraphDescription description, Action feedback) - { - foreach (var describedState in description.DescribedStates) - { - var state = graph.States.FirstOrDefault(s => s.Name == describedState.Name); - if (state == null) - { - feedback?.Invoke(MessageType.Error, $"Expected state \"{describedState.Name}\" was not found in built graph."); - return false; - } - if (describedState.HasLoop) - { - var loopTransition = graph.Transitions.FirstOrDefault(t => t.FromStateId == state.Id && t.ToStateId == state.Id && t.IsStopping); - if (loopTransition == null) - { - feedback?.Invoke(MessageType.Error, $"Expected loop transition for state \"{describedState.Name}\" was not found in built graph."); - return false; - } - } - if (describedState.HasStop) - { - var stopTransition = graph.Transitions.FirstOrDefault(t => t.FromStateId == state.Id && t.ToStateId == state.Id && t.IsStopping); - if (stopTransition == null) - { - feedback?.Invoke(MessageType.Error, $"Expected stop transition for state \"{describedState.Name}\" was not found in built graph."); - return false; - } - } - } - - foreach (var describedTransition in description.DescribedTransitions) - { - var transition = graph.Transitions.FirstOrDefault(t => - graph.States.First(s => s.Id == t.FromStateId).Name == describedTransition.FromState.Name - && graph.States.First(s => s.Id == t.ToStateId).Name == describedTransition.ToState.Name); - if (transition == null) - feedback?.Invoke(MessageType.Error, $"Expected transition \"{describedTransition.Name}\" was not found in built graph."); - return false; - } - return true; - } - - #endregion validate constructed graph - - #endregion building - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/GraphData.cs b/SunSharp/Abstractions/Horizontal/Jumping/GraphData.cs deleted file mode 100644 index a6648da..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/GraphData.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - // TODO make setters init, or properties readonly when raising C# version? - - public class GraphData - { - public string Name { get; set; } - public int? StartStateId { get; set; } - public IReadOnlyCollection States { get; set; } - public IReadOnlyCollection Transitions { get; set; } - - public GraphData() - { - } - - public static GraphData DeepCopy(GraphData original) - { - if (original == null) - throw new System.ArgumentNullException(nameof(original)); - - return new GraphData() - { - Name = original.Name, - StartStateId = original.StartStateId, - States = original.States.Select(s => StateData.DeepCopy(s)).ToArray(), - Transitions = original.Transitions.Select(t => TransitionData.DeepCopy(t)).ToArray() - }; - } - } - - public class StateData - { - public int Id { get; set; } - public string Name { get; set; } - public int FirstLine { get; set; } - public int LastLine { get; set; } - - public StateData() - { - } - - public static StateData DeepCopy(StateData original) - { - if (original == null) - throw new System.ArgumentNullException(nameof(original)); - - return new StateData() - { - Id = original.Id, - FirstLine = original.FirstLine, - LastLine = original.LastLine, - Name = original.Name, - }; - } - } - - public class TransitionData - { - public int Id { get; set; } - public string Name { get; set; } - public int FromStateId { get; set; } - public int ToStateId { get; set; } - public bool IsStopping { get; set; } - public IReadOnlyCollection PatternIds { get; set; } - - public TransitionData() - { - } - - public static TransitionData DeepCopy(TransitionData original) - { - if (original == null) - throw new System.ArgumentNullException(nameof(original)); - - return new TransitionData() - { - Id = original.Id, - Name = original.Name, - FromStateId = original.FromStateId, - ToStateId = original.ToStateId, - IsStopping = original.IsStopping, - PatternIds = original.PatternIds.Select(i => i).ToArray() - }; - } - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/IGraphDescription.cs b/SunSharp/Abstractions/Horizontal/Jumping/IGraphDescription.cs deleted file mode 100644 index e30a7cf..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/IGraphDescription.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public interface IGraphDescription - { - string Name { get; } - IStateDescription StartState { get; } - IReadOnlyCollection DescribedStates { get; } - IReadOnlyCollection DescribedTransitions { get; } - } - - public interface IStateDescription - { - string Name { get; } - string GuideName { get; } - bool HasLoop { get; } - bool HasStop { get; } - } - - public interface ITransitionDescription - { - string Name { get; } - IStateDescription FromState { get; } - IStateDescription ToState { get; } - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/JumpGraphController.cs b/SunSharp/Abstractions/Horizontal/Jumping/JumpGraphController.cs deleted file mode 100644 index 50cd9c6..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/JumpGraphController.cs +++ /dev/null @@ -1,168 +0,0 @@ -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public class GraphController - { - protected Graph Graph { get; set; } - protected ISunVoxLib Lib { get; set; } - protected int SlotId { get; set; } - - public GraphController(Slot slot, GraphData data) : this(slot, Graph.BuildFromData(data)) - { - Lib = slot.Library; - SlotId = slot.Id; - } - - public GraphController(ISunVoxLib lib, int slotId, GraphData data) : this(lib, slotId, Graph.BuildFromData(data)) - { - Lib = lib; - SlotId = slotId; - } - - public GraphController(Slot slot, Graph graph) - { - Lib = slot.Library; - SlotId = slot.Id; - Graph = graph; - } - - public GraphController(ISunVoxLib lib, int slotId, Graph graph) - { - Lib = lib; - SlotId = slotId; - Graph = graph; - } - - public State GetState(int id) - { - return Graph.States.FirstOrDefault(s => s.Id == id); - } - - public State GetState(string name) - { - return Graph.States.FirstOrDefault(s => s.Name == name); - } - - public Transition GetTransition(int id) - { - return Graph.Transitions.FirstOrDefault(s => s.Id == id); - } - - public Transition GetTransition(string name) - { - return Graph.Transitions.FirstOrDefault(s => s.Name == name); - } - - public State GetCurrentState() - { - var position = Lib.GetCurrentLine(SlotId); - return Lib.RunInLock(SlotId, () => - { - return Graph.States.FirstOrDefault(s => s.FirstLine <= position && s.LastLine >= position); - }); - } - - public void SetTransitionEnabled(Transition transition, bool enabled) - { - Lib.RunInLock(SlotId, () => - { - foreach (var i in transition.PatternIds) - Lib.SetPatternMute(SlotId, i, enabled); - }); - } - - public void Start(State startingState, State targetState = null, TargetType targetType = TargetType.Either) - { - if (startingState.JumpGraph != Graph) - throw new ArgumentException("Starting state does not belong to the graph provided in controller construction."); - - if (targetState == null) - { - targetState = startingState; - } - Lib.RunInLock(SlotId, () => - { - DirectGraphToState(targetState, targetType); - Lib.SetAutostop(SlotId, true); - Lib.Rewind(SlotId, startingState.FirstLine); - Lib.Play(SlotId); - }); - } - - public void DirectGraphToState(State targetState, TargetType targetType = TargetType.Either) - { - if (targetState.JumpGraph != Graph) - throw new ArgumentException("Target state does not belong to the graph provided in controller construction."); - - if (targetType == TargetType.Either && targetState.LoopingTransition == null && targetState.StoppingTransition == null) - throw new ArgumentException("Target state does not have a looping transition or a stopping transition."); - - if (targetType == TargetType.Loop && targetState.LoopingTransition == null) - throw new ArgumentException("Target state does not have a looping transition."); - - if (targetType == TargetType.Stop && targetState.StoppingTransition == null) - throw new ArgumentException("Target state does not have a stopping transition."); - - var transitionsToEnable = new HashSet(); - - var oldStates = new HashSet(); - var states = new HashSet(); - var newStates = new HashSet(); - states.Add(targetState); - - if (targetType == TargetType.Either) - { - if (targetState.LoopingTransition != null) - transitionsToEnable.Add(targetState.LoopingTransition); - else - transitionsToEnable.Add(targetState.StoppingTransition); - } - else if (targetType == TargetType.Loop) - transitionsToEnable.Add(targetState.LoopingTransition); - else if (targetType == TargetType.Stop) - transitionsToEnable.Add(targetState.StoppingTransition); - else - throw new ArgumentException("Unsupported value.", nameof(targetType)); - - while (states.Any()) - { - foreach (var state in states) - { - foreach (var transition in state.TransitionsFrom) - { - if (transition.ToState != transition.FromState - && !oldStates.Contains(transition.ToState) - && !oldStates.Contains(transition.FromState) - && !states.Contains(transition.FromState)) - { - newStates.Add(transition.FromState); - transitionsToEnable.Add(transition); - } - } - oldStates.Add(state); - } - (newStates, states) = (states, newStates); - newStates.Clear(); - } - - Lib.RunInLock(SlotId, () => - { - foreach (var transition in Graph.Transitions) - { - var enabled = transitionsToEnable.Contains(transition); - foreach (var patternId in transition.PatternIds) - { - Lib.SetPatternMute(SlotId, patternId, !enabled); - } - } - }); - } - - public object Select() => throw new NotImplementedException(); - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/SimpleGraphDescription.cs b/SunSharp/Abstractions/Horizontal/Jumping/SimpleGraphDescription.cs deleted file mode 100644 index 8c13226..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/SimpleGraphDescription.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public class SimpleGraphDescription : IGraphDescription - { - public string Name { get; set; } - public int? StartStateId { get; set; } - IStateDescription IGraphDescription.StartState => (StartStateId == null) ? null : DescribedStates.First(s => s.Id == StartStateId); - IReadOnlyCollection IGraphDescription.DescribedStates => DescribedStates; - IReadOnlyCollection IGraphDescription.DescribedTransitions => DescribedTransitions; - - public List DescribedStates { get; private set; } - public List DescribedTransitions { get; private set; } - - public SimpleGraphDescription() - { - DescribedStates = new List(); - DescribedTransitions = new List(); - } - - public SimpleStateDescription AddState(string name, string guideName, int? id = null, bool hasLoop = false, bool hasStop = false) - { - if (id == null) - id = (DescribedStates.Count == 0) ? 0 : DescribedStates.Max(s => s.Id) + 1; - - var state = new SimpleStateDescription() - { - Id = id.Value, - Name = name, - GraphDescription = this, - GuideName = guideName, - HasLoop = hasLoop, - HasStop = hasStop - }; - - DescribedStates.Add(state); - return state; - } - - public SimpleTransitionDescription AddTransition(string name, SimpleStateDescription from, SimpleStateDescription to, int? id = null) - { - if (id == null) - id = (DescribedTransitions.Count == 0) ? 0 : DescribedTransitions.Max(s => s.Id) + 1; - - var transition = new SimpleTransitionDescription() - { - Id = id.Value, - GraphDescription = this, - StateFromId = from.Id, - StateToId = to.Id, - Name = name - }; - - DescribedTransitions.Add(transition); - return transition; - } - } - - public class SimpleStateDescription : IStateDescription - { - public SimpleGraphDescription GraphDescription { get; set; } - public int Id { get; set; } - public string Name { get; set; } - public string GuideName { get; set; } - public bool HasLoop { get; set; } - public bool HasStop { get; set; } - - public SimpleStateDescription() - { - } - } - - public class SimpleTransitionDescription : ITransitionDescription - { - public SimpleGraphDescription GraphDescription { get; set; } - public string Name { get; set; } - public int Id { get; set; } - public int StateFromId { get; set; } - public int StateToId { get; set; } - - public IStateDescription FromState => GraphDescription.DescribedStates.First(s => s.Id == StateFromId); - public IStateDescription ToState => GraphDescription.DescribedStates.First(s => s.Id == StateToId); - - public SimpleTransitionDescription() - { - } - } -} diff --git a/SunSharp/Abstractions/Horizontal/Jumping/TargetType.cs b/SunSharp/Abstractions/Horizontal/Jumping/TargetType.cs deleted file mode 100644 index 78b50f6..0000000 --- a/SunSharp/Abstractions/Horizontal/Jumping/TargetType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SunSharp.Abstractions.Horizontal.Jumping -{ - public enum TargetType - { - Unknown, - Loop, - Stop, - Either - } -} diff --git a/SunSharp/Abstractions/MessageType.cs b/SunSharp/Abstractions/MessageType.cs deleted file mode 100644 index 006b26b..0000000 --- a/SunSharp/Abstractions/MessageType.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace SunSharp.Abstractions -{ - public enum MessageType - { - Info, - Warning, - Error - } -} diff --git a/SunSharp/Constants.cs b/SunSharp/Constants.cs index e2ed972..bc7468d 100644 --- a/SunSharp/Constants.cs +++ b/SunSharp/Constants.cs @@ -1,6 +1,8 @@ -namespace SunSharp +#pragma warning disable CA1707 // keep same naming as in official sunvox documentation + +namespace SunSharp { - internal static class Constants + public static class Constants { public const uint SV_INIT_FLAG_NO_DEBUG_OUTPUT = 1 << 0; public const uint SV_INIT_FLAG_USER_AUDIO_CALLBACK = 1 << 1; diff --git a/SunSharp/DerivedData/ControllerData.cs b/SunSharp/DerivedData/ControllerData.cs new file mode 100644 index 0000000..216144e --- /dev/null +++ b/SunSharp/DerivedData/ControllerData.cs @@ -0,0 +1,22 @@ +namespace SunSharp.DerivedData +{ + public class ControllerData : IDeepCopyable + { + public int Id { get; set; } + public string Name { get; set; } = string.Empty; + public int Value { get; set; } + public ControllerType ControllerType { get; set; } + + public ControllerData DeepCopy() + { + var clone = new ControllerData + { + Id = this.Id, + Name = this.Name, + Value = this.Value, + ControllerType = this.ControllerType + }; + return clone; + } + } +} diff --git a/SunSharp/DerivedData/DerivedDataFactory.cs b/SunSharp/DerivedData/DerivedDataFactory.cs new file mode 100644 index 0000000..2c3eb6e --- /dev/null +++ b/SunSharp/DerivedData/DerivedDataFactory.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using SunSharp.ObjectWrapper; +using SunSharp.ThinWrapper; + +namespace SunSharp.DerivedData +{ + public static class DerivedDataFactory + { + #region entire song + + public static SongData ReadSongData(ISunVoxLib lib, int slotId) + { + return lib.RunInLock(slotId, () => ReadSongDataInternal(lib, slotId)); + } + + public static SongData ReadSongData(Slot slot) + { + return slot.RunInLock(() => ReadSongDataInternal(slot.Library, slot.Id)); + } + + internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slot) + { + var modules = ReadModules(lib, slot); + var patterns = ReadPatterns(lib, slot); + + var songData = new SongData + { + Modules = modules, + Patterns = patterns, + BPM = lib.GetSongBpm(slot), + CurrentLine = lib.GetCurrentLine(slot), + FirstLine = patterns.Min(p => p.Position.X), + Frames = lib.GetSongLengthInFrames(slot), + HasDynamicTempo = patterns.Any(p => p.HasDynamicTempo), + IsDestructive = patterns.Any(p => p.IsDestructive), + IsLinear = patterns.All(p => p.IsLinear), + LastLine = patterns.Max(p => p.Position.X + p.Lines), + Lines = lib.GetSongLengthInLines(slot), + Name = lib.GetSongName(slot), + TPL = lib.GetSongTpl(slot) + }; + return songData; + } + + #endregion entire song + + #region module data + + internal static ModuleData[] ReadModules(ISunVoxLib lib, int slot) + { + var moduleCount = lib.GetUpperModuleCount(slot); + var modules = new List(moduleCount); + + for (var i = 0; i < moduleCount; i++) + { + if (!lib.GetModuleExists(slot, i)) + continue; + + var m = ReadModule(lib, slot, i); + modules.Add(m); + } + + return modules.ToArray(); + } + + internal static ModuleData ReadModule(ISunVoxLib lib, int slot, int moduleId) + { + var flags = lib.GetModuleFlags(slot, moduleId); + + var controllerCount = lib.GetModuleControllerCount(slot, moduleId); + var controllers = new ControllerData[controllerCount]; + + for (var controllerId = 0; controllerId < controllerCount; controllerId++) + { + var controllerData = ReadControllerData(lib, slot, moduleId, controllerId); + controllers[controllerId] = controllerData; + } + + var moduleData = new ModuleData() + { + Bypass = flags.Bypass, + Color = lib.GetModuleColor(slot, moduleId), + Controllers = controllers, + FineTunePair = lib.GetModuleFineTune(slot, moduleId), + Id = moduleId, + Inputs = lib.GetModuleInputs(slot, moduleId), + Mute = flags.Mute, + Name = lib.GetModuleName(slot, moduleId), + Outputs = lib.GetModuleOutputs(slot, moduleId), + Position = lib.GetModulePosition(slot, moduleId), + Solo = flags.Solo + }; + return moduleData; + } + + #region controller data + + public static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int moduleId, int controllerId) + { + var controllerData = new ControllerData + { + Id = controllerId, + Name = lib.GetModuleControllerName(slot, moduleId, controllerId) ?? "undefined", + Value = lib.GetModuleControllerValue(slot, moduleId, controllerId, ValueScalingType.Real), + ControllerType = lib.GetModuleControllerType(slot, moduleId, controllerId) + }; + return controllerData; + } + + #endregion controller data + + #endregion module data + + #region pattern data + + private static PatternData[] ReadPatterns(ISunVoxLib lib, int slot) + { + var patternCount = lib.GetUpperPatternCount(slot); + var patterns = new List(patternCount); + + for (var i = 0; i < patternCount; i++) + { + if (!lib.GetPatternExists(slot, i)) + continue; + + var p = ReadPatternData(lib, slot, i); + patterns.Add(p); + } + + return patterns.ToArray(); + } + + internal static PatternData ReadPatternData(ISunVoxLib lib, int slot, int patternId) + { + var data = lib.GetPatternData(slot, patternId) ?? Array.Empty(); + var isDestructive = false; + var isLinear = true; + var hasDynamicTempo = false; + + foreach (var @event in data) + { + isDestructive = @event.Effect.IsDestructive() || isDestructive; + isLinear = isLinear && !@event.Effect.IsNonLinear(); + hasDynamicTempo = hasDynamicTempo || @event.Effect.ModifiesTime(); + } + + var muted = lib.SetPatternMute(slot, patternId, false); + lib.SetPatternMute(slot, patternId, muted); + + var patternData = new PatternData() + { + Data = data, + HasDynamicTempo = hasDynamicTempo, + Id = patternId, + IsDestructive = isDestructive, + IsLinear = isLinear, + IsMuted = muted, + Lines = lib.GetPatternLines(slot, patternId), + Name = lib.GetPatternName(slot, patternId), + Position = lib.GetPatternPosition(slot, patternId), + Tracks = lib.GetPatternTracks(slot, patternId) + }; + return patternData; + } + + #endregion pattern data + } +} diff --git a/SunSharp/DerivedData/IDeepCopyable.cs b/SunSharp/DerivedData/IDeepCopyable.cs new file mode 100644 index 0000000..37bb3fe --- /dev/null +++ b/SunSharp/DerivedData/IDeepCopyable.cs @@ -0,0 +1,7 @@ +namespace SunSharp.DerivedData +{ + public interface IDeepCopyable + { + T DeepCopy(); + } +} diff --git a/SunSharp/DerivedData/ModuleData.cs b/SunSharp/DerivedData/ModuleData.cs index 7643947..31a05d2 100644 --- a/SunSharp/DerivedData/ModuleData.cs +++ b/SunSharp/DerivedData/ModuleData.cs @@ -1,102 +1,41 @@ -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; +using System; using System.Collections.Generic; using System.Linq; namespace SunSharp.DerivedData { - public interface IReadOnlyModuleData - { - int Id { get; } - string Name { get; } - (int X, int Y) Position { get; } - (int finetune, int relativeNote) Finetune { get; } - bool Solo { get; } - bool Mute { get; } - bool Bypass { get; } - (int R, int G, int B) Color { get; } - IReadOnlyCollection<(string name, int value)> Controllers { get; } - IReadOnlyCollection Inputs { get; } - IReadOnlyCollection Outputs { get; } - } - - public class ModuleData : IReadOnlyModuleData + public sealed class ModuleData : IDeepCopyable { public int Id { get; set; } - public string Name { get; set; } - public (int X, int Y) Position { get; set; } - public (int finetune, int relativeNote) Finetune { get; set; } + public string? Name { get; set; } + public (int X, int Y) Position { get; set; } = (0, 0); + public FineTunePair FineTunePair { get; set; } public bool Solo { get; set; } public bool Mute { get; set; } public bool Bypass { get; set; } - public (int R, int G, int B) Color { get; set; } - public ICollection<(string name, int value)> Controllers { get; set; } - public ICollection Inputs { get; set; } - public ICollection Outputs { get; set; } - - IReadOnlyCollection<(string name, int value)> IReadOnlyModuleData.Controllers => Controllers.AsReadonlyOrGetWrapper(); - IReadOnlyCollection IReadOnlyModuleData.Inputs => Inputs.AsReadonlyOrGetWrapper(); - IReadOnlyCollection IReadOnlyModuleData.Outputs => Outputs.AsReadonlyOrGetWrapper(); - - public ModuleData() - { - } + public (int r, int g, int b) Color { get; set; } = (0, 0, 0); + public ICollection Controllers { get; set; } = Array.Empty(); + public ICollection Inputs { get; set; } = Array.Empty(); + public ICollection Outputs { get; set; } = Array.Empty(); - public static ModuleData DeepCopy(IReadOnlyModuleData data) + public ModuleData DeepCopy() { - return new ModuleData + var copy = new ModuleData { - Id = data.Id, - Name = data.Name, - Position = data.Position, - Finetune = data.Finetune, - Solo = data.Solo, - Mute = data.Mute, - Bypass = data.Bypass, - Color = data.Color, - Controllers = data.Controllers.Select(c => (c.name, c.value)).ToArray(), - Inputs = data.Inputs.Select(i => i).ToArray(), - Outputs = data.Outputs.Select(o => o).ToArray() + Id = this.Id, + Name = this.Name, + Position = this.Position, + FineTunePair = this.FineTunePair, + Solo = this.Solo, + Mute = this.Mute, + Bypass = this.Bypass, + Color = this.Color, + Controllers = this.Controllers.Select(c => c.DeepCopy()).ToArray(), + Inputs = this.Inputs.Select(i => i).ToArray(), + Outputs = this.Outputs.Select(o => o).ToArray() }; - } - - public static ModuleData ReadModuleData(ISunVoxLib lib, int slotId, int moduleId) - { - return lib.RunInLock(slotId, () => ReadModuleDataInternal(lib, slotId, moduleId)); - } - - public static ModuleData ReadModuleData(ModuleHandle module) - { - return module.Slot.RunInLock(() => ReadModuleDataInternal(module.Slot.Library, module.Slot.Id, module.Id)); - } - - internal static ModuleData ReadModuleDataInternal(ISunVoxLib lib, int slot, int moduleId) - { - var flags = lib.GetModuleFlags(slot, moduleId); - var controllers = new (string name, int realValue)[lib.GetModuleControllerCount(slot, moduleId)]; - - for (int i = 0; i < controllers.Length; i++) - { - var name = lib.GetModuleControllerName(slot, moduleId, i); - var value = lib.GetModuleControllerValue(slot, moduleId, i, ValueScalingType.Real); - controllers[i] = (name, value); - } - var moduleData = new ModuleData() - { - Bypass = flags.Bypass, - Color = lib.GetModuleColor(slot, moduleId), - Controllers = controllers, - Finetune = lib.GetModuleFinetune(slot, moduleId), - Id = moduleId, - Inputs = lib.GetModuleInputs(slot, moduleId), - Mute = flags.Mute, - Name = lib.GetModuleName(slot, moduleId), - Outputs = lib.GetModuleOutputs(slot, moduleId), - Position = lib.GetModulePosition(slot, moduleId), - Solo = flags.Solo - }; - return moduleData; + return copy; } } } diff --git a/SunSharp/DerivedData/PatternData.cs b/SunSharp/DerivedData/PatternData.cs index e75103c..f8f768c 100644 --- a/SunSharp/DerivedData/PatternData.cs +++ b/SunSharp/DerivedData/PatternData.cs @@ -1,28 +1,13 @@ -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; +using System; using System.Collections.Generic; using System.Linq; namespace SunSharp.DerivedData { - public interface IReadOnlyPatternData - { - int Id { get; } - string Name { get; } - (int X, int Y) Position { get; } - int Lines { get; } - int Tracks { get; } - bool IsMuted { get; } - bool IsLinear { get; } - bool IsDestructive { get; } - bool HasDynamicTempo { get; } - IReadOnlyCollection Data { get; } - } - - public class PatternData : IReadOnlyPatternData + public class PatternData : IDeepCopyable { public int Id { get; set; } - public string Name { get; set; } + public string? Name { get; set; } public (int X, int Y) Position { get; set; } public int Lines { get; set; } public int Tracks { get; set; } @@ -30,73 +15,24 @@ public class PatternData : IReadOnlyPatternData public bool IsLinear { get; set; } public bool IsDestructive { get; set; } public bool HasDynamicTempo { get; set; } - public ICollection Data { get; set; } - - IReadOnlyCollection IReadOnlyPatternData.Data => Data.AsReadonlyOrGetWrapper(); - - public PatternData() - { - } - - public static PatternData DeepCopy(IReadOnlyPatternData data) - { - return new PatternData() - { - Id = data.Id, - Name = data.Name, - Position = data.Position, - Lines = data.Lines, - Tracks = data.Tracks, - IsMuted = data.IsMuted, - IsLinear = data.IsLinear, - IsDestructive = data.IsDestructive, - HasDynamicTempo = data.HasDynamicTempo, - Data = data.Data.Select(e => e).ToArray() - }; - } - - public static PatternData ReadModuleData(ISunVoxLib lib, int slotId, int patternId) - { - return lib.RunInLock(slotId, () => ReadPatternDataInternal(lib, slotId, patternId)); - } + public ICollection Data { get; set; } = Array.Empty(); - public static PatternData ReadModuleData(PatternHandle pattern) + public PatternData DeepCopy() { - return pattern.Slot.RunInLock(() => ReadPatternDataInternal(pattern.Slot.Library, pattern.Slot.Id, pattern.Id)); - } - - internal static PatternData ReadPatternDataInternal(ISunVoxLib lib, int slot, int patternId) - { - var data = lib.GetPatternData(slot, patternId).Select(e => (ImmutablePatternEvent)e).ToArray(); - bool isDestructive = false; - bool isLinear = true; - bool hasDynamicTempo = false; - - for (int i = 0; i < data.Length; i++) - { - var @event = data[i]; - isDestructive = @event.Effect.IsDestructive() || isDestructive; - isLinear = isLinear && !@event.Effect.IsNonLinear(); - hasDynamicTempo = hasDynamicTempo || @event.Effect.ModifiesTime(); - } - - bool muted = lib.SetPatternMute(slot, patternId, false); - lib.SetPatternMute(slot, patternId, muted); - - var patternData = new PatternData() + var copy = new PatternData() { - Data = data, - HasDynamicTempo = hasDynamicTempo, - Id = patternId, - IsDestructive = isDestructive, - IsLinear = isLinear, - IsMuted = muted, - Lines = lib.GetPatternLines(slot, patternId), - Name = lib.GetPatternName(slot, patternId), - Position = lib.GetPatternPosition(slot, patternId), - Tracks = lib.GetPatternTracks(slot, patternId) + Id = this.Id, + Name = this.Name, + Position = this.Position, + Lines = this.Lines, + Tracks = this.Tracks, + IsMuted = this.IsMuted, + IsLinear = this.IsLinear, + IsDestructive = this.IsDestructive, + HasDynamicTempo = this.HasDynamicTempo, + Data = this.Data.Select(e => e).ToArray() }; - return patternData; + return copy; } } } diff --git a/SunSharp/DerivedData/ReadOnlyCollectionWrapper.cs b/SunSharp/DerivedData/ReadOnlyCollectionWrapper.cs deleted file mode 100644 index 9190350..0000000 --- a/SunSharp/DerivedData/ReadOnlyCollectionWrapper.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections; -using System.Collections.Generic; - -namespace SunSharp.DerivedData -{ - public class ReadOnlyCollectionWrapper : IReadOnlyCollection - { - private ICollection _collection; - - public ReadOnlyCollectionWrapper(ICollection collection) - { - _collection = collection; - } - - public int Count => _collection.Count; - - public IEnumerator GetEnumerator() => _collection.GetEnumerator(); - - IEnumerator IEnumerable.GetEnumerator() => _collection.GetEnumerator(); - } - - public static class ReadOnlyCollectionWrapperExtensions - { - public static IReadOnlyCollection AsReadonlyOrGetWrapper(this ICollection collection) - { - if (collection is IReadOnlyCollection _collection) - return _collection; - return new ReadOnlyCollectionWrapper(collection); - } - } -} diff --git a/SunSharp/DerivedData/SongData.cs b/SunSharp/DerivedData/SongData.cs index 6c9b53d..ab6259a 100644 --- a/SunSharp/DerivedData/SongData.cs +++ b/SunSharp/DerivedData/SongData.cs @@ -1,30 +1,12 @@ -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; +using System; using System.Collections.Generic; using System.Linq; namespace SunSharp.DerivedData { - public interface IReadOnlySongData + public class SongData : IDeepCopyable { - string Name { get; } - int BPM { get; } - int TPL { get; } - int Frames { get; } - int Lines { get; } - int CurrentLine { get; } - int FirstLine { get; } - int LastLine { get; } - bool IsLinear { get; } - bool IsDestructive { get; } - bool HasDynamicTempo { get; } - IReadOnlyCollection Modules { get; } - IReadOnlyCollection Patterns { get; } - } - - public class SongData : IReadOnlySongData - { - public string Name { get; set; } + public string? Name { get; set; } public int BPM { get; set; } public int TPL { get; set; } public int Frames { get; set; } @@ -35,100 +17,28 @@ public class SongData : IReadOnlySongData public bool IsLinear { get; set; } public bool IsDestructive { get; set; } public bool HasDynamicTempo { get; set; } - public ICollection Modules { get; set; } - public ICollection Patterns { get; set; } - - IReadOnlyCollection IReadOnlySongData.Modules => Modules.AsReadonlyOrGetWrapper(); - IReadOnlyCollection IReadOnlySongData.Patterns => Patterns.AsReadonlyOrGetWrapper(); - - public SongData() - { - } - - public static SongData ReadSongData(ISunVoxLib lib, int slotId) - { - return lib.RunInLock(slotId, () => ReadSongDataInternal(lib, slotId)); - } - - public static SongData ReadSongData(Slot slot) - { - return slot.RunInLock(() => ReadSongDataInternal(slot.Library, slot.Id)); - } - - internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slot) - { - var modules = ReadModuleDataArray(lib, slot); - var patterns = ReadPatternDataArray(lib, slot); - - var songData = new SongData() - { - Modules = modules, - Patterns = patterns, - BPM = lib.GetSongBpm(slot), - CurrentLine = lib.GetCurrentLine(slot), - FirstLine = patterns.Min(p => p.Position.X), - Frames = lib.GetSongLengthInFrames(slot), - HasDynamicTempo = patterns.Any(p => p.HasDynamicTempo), - IsDestructive = patterns.Any(p => p.IsDestructive), - IsLinear = patterns.All(p => p.IsLinear), - LastLine = patterns.Max(p => p.Position.X + p.Lines), - Lines = lib.GetSongLengthInLines(slot), - Name = lib.GetSongName(slot), - TPL = lib.GetSongTpl(slot) - }; - return songData; - } - - private static ModuleData[] ReadModuleDataArray(ISunVoxLib lib, int slot) - { - var moduleCount = lib.GetUpperModuleCount(slot); - var modules = new List(moduleCount); - - for (int i = 0; i < moduleCount; i++) - { - if (lib.GetModuleExists(slot, i)) - { - var m = ModuleData.ReadModuleDataInternal(lib, slot, i); - modules.Add(m); - } - } - return modules.ToArray(); - } - - private static PatternData[] ReadPatternDataArray(ISunVoxLib lib, int slot) - { - var patternCount = lib.GetUpperPatternCount(slot); - var patterns = new List(patternCount); - - for (int i = 0; i < patternCount; i++) - { - if (lib.GetPatternExists(slot, i)) - { - var p = PatternData.ReadPatternDataInternal(lib, slot, i); - patterns.Add(p); - } - } - return patterns.ToArray(); - } + public ICollection Modules { get; set; } = Array.Empty(); + public ICollection Patterns { get; set; } = Array.Empty(); - public static SongData DeepCopy(IReadOnlySongData original) + public SongData DeepCopy() { - return new SongData() + var copy = new SongData() { - Name = original.Name, - BPM = original.BPM, - TPL = original.TPL, - Frames = original.Frames, - Lines = original.Lines, - CurrentLine = original.CurrentLine, - FirstLine = original.FirstLine, - LastLine = original.LastLine, - IsLinear = original.IsLinear, - IsDestructive = original.IsDestructive, - HasDynamicTempo = original.HasDynamicTempo, - Modules = original.Modules.Select(m => ModuleData.DeepCopy(m)).ToArray(), - Patterns = original.Patterns.Select(p => PatternData.DeepCopy(p)).ToArray() + Name = this.Name, + BPM = this.BPM, + TPL = this.TPL, + Frames = this.Frames, + Lines = this.Lines, + CurrentLine = this.CurrentLine, + FirstLine = this.FirstLine, + LastLine = this.LastLine, + IsLinear = this.IsLinear, + IsDestructive = this.IsDestructive, + HasDynamicTempo = this.HasDynamicTempo, + Modules = this.Modules.Select(m => m.DeepCopy()).ToArray(), + Patterns = this.Patterns.Select(p => p.DeepCopy()).ToArray() }; + return copy; } } } diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs index 85bd70b..fc4774e 100644 --- a/SunSharp/Effects.cs +++ b/SunSharp/Effects.cs @@ -54,24 +54,24 @@ public static class EffectExtensions public static bool IsNonLinear(this Effect effect) { return effect == Effect.Jump - || effect == Effect.SetJumpMode - || effect == Effect.StopPlaying; + || effect == Effect.SetJumpMode + || effect == Effect.StopPlaying; } public static bool IsDestructive(this Effect effect) { return effect == Effect.DeleteEventOnTrackWithProbability - || effect == Effect.CyclicShiftTrackLines - || effect == Effect.GeneratePolyrhythm - || effect == Effect.CopyTrackToPattern - || effect == Effect.CopyTrackFromPattern - || effect == Effect.WriteRandomValue; + || effect == Effect.CyclicShiftTrackLines + || effect == Effect.GeneratePolyrhythm + || effect == Effect.CopyTrackToPattern + || effect == Effect.CopyTrackFromPattern + || effect == Effect.WriteRandomValue; } public static bool ModifiesTime(this Effect effect) { return effect == Effect.SetBpm - || effect == Effect.SetPlayingSpeed; + || effect == Effect.SetPlayingSpeed; } } } diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTunePair.cs new file mode 100644 index 0000000..e86c7c3 --- /dev/null +++ b/SunSharp/FineTunePair.cs @@ -0,0 +1,50 @@ +using System; + +namespace SunSharp +{ + [Serializable] + public struct FineTunePair + { + public short FineTune { get; set; } + public short RelativeNote { get; set; } + + public FineTunePair(short fineTune, short relativeNote) + { + FineTune = fineTune; + RelativeNote = relativeNote; + } + + public override bool Equals(object obj) + { + if (obj is FineTunePair other) + return Equals(other); + + return false; + } + + public bool Equals(FineTunePair other) + { + return FineTune == other.FineTune && RelativeNote == other.RelativeNote; + } + + public override int GetHashCode() + { + return HashCode.Combine(FineTune, RelativeNote); + } + + public override string ToString() + { + return $"FineTunePair: fine-tune: {FineTune}, relative note: {RelativeNote}"; + } + + public static bool operator ==(FineTunePair left, FineTunePair right) + { + return left.Equals(right); + } + + public static bool operator !=(FineTunePair left, FineTunePair right) + { + return !(left == right); + } + } +} diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/ISunVoxLib.cs index ea3e892..cb6b3d2 100644 --- a/SunSharp/ISunVoxLib.cs +++ b/SunSharp/ISunVoxLib.cs @@ -36,7 +36,8 @@ public interface ISunVoxLib /// /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* in_buf) SUNVOX_FN_ATTR; /// - int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf); + int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, + IntPtr in_buf); /// /// int sv_open_slot(int slot) SUNVOX_FN_ATTR; @@ -446,7 +447,8 @@ public interface ISunVoxLib /// /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) SUNVOX_FN_ATTR; /// - int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, + int xxyy); /// /// int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) SUNVOX_FN_ATTR; diff --git a/SunSharp/LibraryLoading/ProxyClass.Generated.cs b/SunSharp/LibraryLoading/ProxyClass.Generated.cs index ec19085..ba5985e 100644 --- a/SunSharp/LibraryLoading/ProxyClass.Generated.cs +++ b/SunSharp/LibraryLoading/ProxyClass.Generated.cs @@ -20,61 +20,61 @@ public ProxyClass(Func GetDelegate) #region delegate definitions - private delegate int o_Int_i_Int(int _int); - - private delegate int o_Int_i_Int_Int(int _int, int _int1); + private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, int _int7, int _int8); - private delegate int o_Int_i_Int_Int_Int(int _int, int _int1, int _int2); + private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_IntPtr(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, IntPtr _IntPtr); - private delegate int o_Int_i_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3); + private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6); private delegate int o_Int_i_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4); - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6); - - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, int _int7, int _int8); + private delegate int o_Int_i_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3); - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_IntPtr(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, IntPtr _IntPtr); + private delegate int o_Int_i_Int_Int_Int_IntPtr_Int_Int(int _int, int _int1, int _int2, IntPtr _IntPtr, int _int3, int _int4); private delegate int o_Int_i_Int_Int_Int_IntPtr_Int(int _int, int _int1, int _int2, IntPtr _IntPtr, int _int3); - private delegate int o_Int_i_Int_Int_Int_IntPtr_Int_Int(int _int, int _int1, int _int2, IntPtr _IntPtr, int _int3, int _int4); - - private delegate int o_Int_i_Int_Int_IntPtr(int _int, int _int1, IntPtr _IntPtr); + private delegate int o_Int_i_Int_Int_Int(int _int, int _int1, int _int2); private delegate int o_Int_i_Int_Int_IntPtr_Int(int _int, int _int1, IntPtr _IntPtr, int _int2); + private delegate int o_Int_i_Int_Int_IntPtr_Uint_Int(int _int, int _int1, IntPtr _IntPtr, uint _uint, int _int2); + private delegate int o_Int_i_Int_Int_IntPtr_Uint(int _int, int _int1, IntPtr _IntPtr, uint _uint); - private delegate int o_Int_i_Int_Int_IntPtr_Uint_Int(int _int, int _int1, IntPtr _IntPtr, uint _uint, int _int2); + private delegate int o_Int_i_Int_Int_IntPtr(int _int, int _int1, IntPtr _IntPtr); - private delegate int o_Int_i_Int_IntPtr(int _int, IntPtr _IntPtr); + private delegate int o_Int_i_Int_Int(int _int, int _int1); private delegate int o_Int_i_Int_IntPtr_Int_Int_Int(int _int, IntPtr _IntPtr, int _int1, int _int2, int _int3); private delegate int o_Int_i_Int_IntPtr_IntPtr_Int_Int_Int(int _int, IntPtr _IntPtr, IntPtr _IntPtr1, int _int1, int _int2, int _int3); + private delegate int o_Int_i_Int_IntPtr_Uint_Int_Int_Int(int _int, IntPtr _IntPtr, uint _uint, int _int1, int _int2, int _int3); + private delegate int o_Int_i_Int_IntPtr_Uint(int _int, IntPtr _IntPtr, uint _uint); - private delegate int o_Int_i_Int_IntPtr_Uint_Int_Int_Int(int _int, IntPtr _IntPtr, uint _uint, int _int1, int _int2, int _int3); + private delegate int o_Int_i_Int_IntPtr(int _int, IntPtr _IntPtr); - private delegate int o_Int_i_IntPtr_Int_Int_Uint(IntPtr _IntPtr, int _int, int _int1, uint _uint); + private delegate int o_Int_i_Int(int _int); private delegate int o_Int_i_IntPtr_Int_Int_Uint_Int_Int_IntPtr(IntPtr _IntPtr, int _int, int _int1, uint _uint, int _int2, int _int3, IntPtr _IntPtr1); + private delegate int o_Int_i_IntPtr_Int_Int_Uint(IntPtr _IntPtr, int _int, int _int1, uint _uint); + private delegate int o_Int_i_Void(); - private delegate IntPtr o_IntPtr_i_Int(int _int); + private delegate IntPtr o_IntPtr_i_Int_Int_Int(int _int, int _int1, int _int2); private delegate IntPtr o_IntPtr_i_Int_Int(int _int, int _int1); - private delegate IntPtr o_IntPtr_i_Int_Int_Int(int _int, int _int1, int _int2); + private delegate IntPtr o_IntPtr_i_Int(int _int); - private delegate uint o_Uint_i_Int(int _int); + private delegate uint o_Uint_i_Int_Int_Int_IntPtr_Uint(int _int, int _int1, int _int2, IntPtr _IntPtr, uint _uint); private delegate uint o_Uint_i_Int_Int(int _int, int _int1); - private delegate uint o_Uint_i_Int_Int_Int_IntPtr_Uint(int _int, int _int1, int _int2, IntPtr _IntPtr, uint _uint); + private delegate uint o_Uint_i_Int(int _int); private delegate uint o_Uint_i_Void(); @@ -108,10 +108,10 @@ public ProxyClass(Func GetDelegate) private o_Int_i_Int sv_pause; - private o_Int_i_Int sv_play; - private o_Int_i_Int sv_play_from_beginning; + private o_Int_i_Int sv_play; + private o_Int_i_Int sv_resume; private o_Int_i_Int sv_stop; @@ -266,10 +266,10 @@ public ProxyClass(Func GetDelegate) private o_Uint_i_Int_Int_Int_IntPtr_Uint sv_get_module_scope2; - private o_Uint_i_Void sv_get_ticks; - private o_Uint_i_Void sv_get_ticks_per_second; + private o_Uint_i_Void sv_get_ticks; + #pragma warning restore CS0649 #endregion delegates @@ -342,20 +342,20 @@ public ProxyClass(Func GetDelegate) int ISunVoxLib.sv_init(IntPtr config, int freq, int channels, uint flags) => sv_init(config, freq, channels, flags); - int ISunVoxLib.sv_load(int slot, IntPtr name) => sv_load(slot, name); - int ISunVoxLib.sv_load_from_memory(int slot, IntPtr data, uint data_size) => sv_load_from_memory(slot, data, data_size); + int ISunVoxLib.sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z) => sv_load_module_from_memory(slot, data, data_size, x, y, z); + int ISunVoxLib.sv_load_module(int slot, IntPtr file_name, int x, int y, int z) => sv_load_module(slot, file_name, x, y, z); - int ISunVoxLib.sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z) => sv_load_module_from_memory(slot, data, data_size, x, y, z); + int ISunVoxLib.sv_load(int slot, IntPtr name) => sv_load(slot, name); int ISunVoxLib.sv_lock_slot(int slot) => sv_lock_slot(slot); - int ISunVoxLib.sv_metamodule_load(int slot, int mod_num, IntPtr file_name) => sv_metamodule_load(slot, mod_num, file_name); - int ISunVoxLib.sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_metamodule_load_from_memory(slot, mod_num, data, data_size); + int ISunVoxLib.sv_metamodule_load(int slot, int mod_num, IntPtr file_name) => sv_metamodule_load(slot, mod_num, file_name); + int ISunVoxLib.sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w) => sv_module_curve(slot, mod_num, curve_num, data, len, w); int ISunVoxLib.sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z) => sv_new_module(slot, type, name, x, y, z); @@ -368,10 +368,10 @@ public ProxyClass(Func GetDelegate) int ISunVoxLib.sv_pause(int slot) => sv_pause(slot); - int ISunVoxLib.sv_play(int slot) => sv_play(slot); - int ISunVoxLib.sv_play_from_beginning(int slot) => sv_play_from_beginning(slot); + int ISunVoxLib.sv_play(int slot) => sv_play(slot); + int ISunVoxLib.sv_remove_module(int slot, int mod_num) => sv_remove_module(slot, mod_num); int ISunVoxLib.sv_remove_pattern(int slot, int pat_num) => sv_remove_pattern(slot, pat_num); @@ -380,10 +380,10 @@ public ProxyClass(Func GetDelegate) int ISunVoxLib.sv_rewind(int slot, int line_num) => sv_rewind(slot, line_num); - int ISunVoxLib.sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot) => sv_sampler_load(slot, sampler_module, file_name, sample_slot); - int ISunVoxLib.sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory(slot, sampler_module, data, data_size, sample_slot); + int ISunVoxLib.sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot) => sv_sampler_load(slot, sampler_module, file_name, sample_slot); + int ISunVoxLib.sv_save(int slot, IntPtr name) => sv_save(slot, name); int ISunVoxLib.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) => sv_send_event(slot, track_num, note, vel, module, ctl, ctl_val); @@ -424,10 +424,10 @@ public ProxyClass(Func GetDelegate) int ISunVoxLib.sv_volume(int slot, int vol) => sv_volume(slot, vol); - int ISunVoxLib.sv_vplayer_load(int slot, int mod_num, IntPtr file_name) => sv_vplayer_load(slot, mod_num, file_name); - int ISunVoxLib.sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_vplayer_load_from_memory(slot, mod_num, data, data_size); + int ISunVoxLib.sv_vplayer_load(int slot, int mod_num, IntPtr file_name) => sv_vplayer_load(slot, mod_num, file_name); + IntPtr ISunVoxLib.sv_get_log(int size) => sv_get_log(size); IntPtr ISunVoxLib.sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_name(slot, mod_num, ctl_num); @@ -458,10 +458,10 @@ public ProxyClass(Func GetDelegate) uint ISunVoxLib.sv_get_song_length_lines(int slot) => sv_get_song_length_lines(slot); - uint ISunVoxLib.sv_get_ticks() => sv_get_ticks(); - uint ISunVoxLib.sv_get_ticks_per_second() => sv_get_ticks_per_second(); + uint ISunVoxLib.sv_get_ticks() => sv_get_ticks(); + #endregion interface } } diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 540f95c..5569f0c 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -33,8 +33,7 @@ public static char GetNoteNameCharacter(this NoteName noteName) [StructLayout(LayoutKind.Explicit, Size = 1)] public readonly struct Note { - [FieldOffset(0)] - public readonly byte Value; + [FieldOffset(0)] public readonly byte Value; private const byte NOTECMD_NOTE_OFF = 128; private const byte NOTECMD_ALL_NOTES_OFF = 129; diff --git a/SunSharp/ObjectWrapper/Enums.cs b/SunSharp/ObjectWrapper/Enums.cs index 8cb1dc1..64038e8 100644 --- a/SunSharp/ObjectWrapper/Enums.cs +++ b/SunSharp/ObjectWrapper/Enums.cs @@ -1,6 +1,7 @@ namespace SunSharp.ObjectWrapper { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1720:Identifier contains type name", Justification = "The enum is supposed to help with choosing a type.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1720:Identifier contains type name", + Justification = "The enum is supposed to help with choosing a type.")] public enum OutputType { Float32 = 1, diff --git a/SunSharp/ObjectWrapper/ModuleHandle.cs b/SunSharp/ObjectWrapper/ModuleHandle.cs index 56e9d28..1953752 100644 --- a/SunSharp/ObjectWrapper/ModuleHandle.cs +++ b/SunSharp/ObjectWrapper/ModuleHandle.cs @@ -1,5 +1,5 @@ -using SunSharp.ThinWrapper; -using System.Linq; +using System.Linq; +using SunSharp.ThinWrapper; namespace SunSharp.ObjectWrapper { @@ -9,35 +9,34 @@ namespace SunSharp.ObjectWrapper public readonly struct ModuleHandle { private readonly ISunVoxLib _lib; - private readonly Slot _slot; - private readonly int _id; private readonly int _slotId; - public int Id => _id; - public Slot Slot => _slot; + public int Id { get; } + + public Slot Slot { get; } public ModuleHandle(Synthesizer synthesizer, int id) { - _slot = synthesizer.Slot; - _slotId = _slot.Id; + Slot = synthesizer.Slot; + _slotId = Slot.Id; _lib = synthesizer.Slot.Library; - _id = id; + Id = id; } #region general - public ModuleFlags GetFlags() => _lib.GetModuleFlags(_slotId, _id); + public ModuleFlags GetFlags() => _lib.GetModuleFlags(_slotId, Id); - public ModuleType GetModuleType() => ModuleTypeHelper.TypeFromInternalName(_lib.GetModuleType(_slotId, _id)); + public ModuleType GetModuleType() => ModuleTypeHelper.TypeFromInternalName(_lib.GetModuleType(_slotId, Id)); - public bool GetExists() => _lib.GetModuleExists(_slotId, _id); + public bool GetExists() => _lib.GetModuleExists(_slotId, Id); - public (int finetune, int relativeNote) GetFinetune() => _lib.GetModuleFinetune(_slotId, _id); + public FineTunePair GetFineTune() => _lib.GetModuleFineTune(_slotId, Id); - public void SetFinetune(int finetune, int relativeNote) + public void SetFineTune(FineTunePair pair) { - _lib.SetModuleRelativeNote(_slotId, _id, relativeNote); - _lib.SetModuleFinetune(_slotId, _id, finetune); + _lib.SetModuleRelativeNote(_slotId, Id, pair.RelativeNote); + _lib.SetModuleFineTune(_slotId, Id, pair.FineTune); } /// @@ -48,43 +47,43 @@ public void SetFinetune(int finetune, int relativeNote) /// Number of samples successfully read. public int ReadScope(AudioChannel channel, short[] buffer) { - return _lib.ReadModuleScope(_slotId, _id, (int)channel, buffer); + return _lib.ReadModuleScope(_slotId, Id, (int)channel, buffer); } #endregion general #region cosmetic - public string GetName() => _lib.GetModuleName(_slotId, _id); + public string? GetName() => _lib.GetModuleName(_slotId, Id); - public void SetName(string name) => _lib.SetModuleName(_slotId, _id, name); + public void SetName(string name) => _lib.SetModuleName(_slotId, Id, name); - public (int x, int y) GetPosition() => _lib.GetModulePosition(_slotId, _id); + public (int x, int y) GetPosition() => _lib.GetModulePosition(_slotId, Id); - public void SetPosition(int x, int y) => _lib.SetModulePosition(_slotId, _id, x, y); + public void SetPosition(int x, int y) => _lib.SetModulePosition(_slotId, Id, x, y); - public (byte R, byte G, byte B) GetColor() => _lib.GetModuleColor(_slotId, _id); + public (byte r, byte g, byte b) GetColor() => _lib.GetModuleColor(_slotId, Id); - public void SetColor(byte R, byte G, byte B) => _lib.SetModuleColor(_slotId, _id, R, G, B); + public void SetColor(byte r, byte g, byte b) => _lib.SetModuleColor(_slotId, Id, r, g, b); #endregion cosmetic #region connections - public int[] GetInputs() => _lib.GetModuleInputs(_slotId, _id); + public int[] GetInputs() => _lib.GetModuleInputs(_slotId, Id); public ModuleHandle[] GetInputModules() { - var synthesizer = _slot.Synthesizer; - return _lib.GetModuleInputs(_slotId, _id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + var synthesizer = Slot.Synthesizer; + return _lib.GetModuleInputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); } - public int[] GetOutputs() => _lib.GetModuleInputs(_slotId, _id); + public int[] GetOutputs() => _lib.GetModuleInputs(_slotId, Id); public ModuleHandle[] GetModuleOutputs() { - var synthesizer = _slot.Synthesizer; - return _lib.GetModuleOutputs(_slotId, _id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + var synthesizer = Slot.Synthesizer; + return _lib.GetModuleOutputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); } #endregion connections @@ -99,11 +98,8 @@ public void LoadSamplerSample(string path, int sampleSlot = -1) { var lib = _lib; var slotId = _slotId; - var id = _id; - _slot.RunInLock(() => - { - lib.LoadSamplerSample(slotId, id, path, sampleSlot); - }); + var id = Id; + Slot.RunInLock(() => { lib.LoadSamplerSample(slotId, id, path, sampleSlot); }); } /// @@ -114,11 +110,8 @@ public void LoadSamplerSample(byte[] data, int sampleSlot = -1) { var lib = _lib; var slotId = _slotId; - var id = _id; - _slot.RunInLock(() => - { - lib.LoadSamplerSample(slotId, id, data, sampleSlot); - }); + var id = Id; + Slot.RunInLock(() => { lib.LoadSamplerSample(slotId, id, data, sampleSlot); }); } /// @@ -126,7 +119,7 @@ public void LoadSamplerSample(byte[] data, int sampleSlot = -1) /// public void LoadIntoMetaModule(string path) { - _lib.LoadIntoMetaModule(_slotId, _id, path); + _lib.LoadIntoMetaModule(_slotId, Id, path); } /// @@ -134,7 +127,7 @@ public void LoadIntoMetaModule(string path) /// public void LoadIntoMetaModule(byte[] data) { - _lib.LoadIntoMetaModule(_slotId, _id, data); + _lib.LoadIntoMetaModule(_slotId, Id, data); } /// @@ -142,7 +135,7 @@ public void LoadIntoMetaModule(byte[] data) /// public void LoadIntoVorbisPLayer(string path) { - _lib.LoadIntoVorbisPLayer(_slotId, _id, path); + _lib.LoadIntoVorbisPLayer(_slotId, Id, path); } /// @@ -150,29 +143,23 @@ public void LoadIntoVorbisPLayer(string path) /// public void LoadIntoVorbisPLayer(byte[] data) { - _lib.LoadIntoVorbisPLayer(_slotId, _id, data); + _lib.LoadIntoVorbisPLayer(_slotId, Id, data); } public int WriteCurve(int curveId, float[] buffer) { var lib = _lib; var slotId = _slotId; - var id = _id; - return _slot.RunInLock(() => - { - return lib.WriteModuleCurve(slotId, id, curveId, buffer); - }); + var id = Id; + return Slot.RunInLock(() => lib.WriteModuleCurve(slotId, id, curveId, buffer)); } public int ReadCurve(int curveId, float[] buffer) { var lib = _lib; var slotId = _slotId; - var id = _id; - return _slot.RunInLock(() => - { - return lib.ReadModuleCurve(slotId, id, curveId, buffer); - }); + var id = Id; + return Slot.RunInLock(() => lib.ReadModuleCurve(slotId, id, curveId, buffer)); } #endregion specific data IO @@ -181,47 +168,47 @@ public int ReadCurve(int curveId, float[] buffer) public int GetControllerCount() { - return _lib.GetModuleControllerCount(_slotId, _id); + return _lib.GetModuleControllerCount(_slotId, Id); } - public string GetControllerName(int controllerId) + public string? GetControllerName(int controllerId) { - return _lib.GetModuleControllerName(_slotId, _id, controllerId); + return _lib.GetModuleControllerName(_slotId, Id, controllerId); } public int GetControllerValue(int controllerId, ValueScalingType scaling = ValueScalingType.Displayed) { - return _lib.GetModuleControllerValue(_slotId, _id, controllerId, scaling); + return _lib.GetModuleControllerValue(_slotId, Id, controllerId, scaling); } public void SetControllerValue(int controller, int value, ValueScalingType scaling = ValueScalingType.Displayed) { - _lib.SetModuleControllerValue(_slotId, _id, controller, value, scaling); + _lib.SetModuleControllerValue(_slotId, Id, controller, value, scaling); } public int GetControllerMinValue(int controllerId, ValueScalingType scaling) { - return _lib.GetModuleControllerMinValue(_slotId, _id, controllerId, scaling); + return _lib.GetModuleControllerMinValue(_slotId, Id, controllerId, scaling); } public int GetControllerMaxValue(int controllerId, ValueScalingType scaling) { - return _lib.GetModuleControllerMaxValue(_slotId, _id, controllerId, scaling); + return _lib.GetModuleControllerMaxValue(_slotId, Id, controllerId, scaling); } public int GetControllerOffset(int controllerId) { - return _lib.GetModuleControllerOffset(_slotId, _id, controllerId); + return _lib.GetModuleControllerOffset(_slotId, Id, controllerId); } public ControllerType GetControllerType(int controllerId) { - return _lib.GetModuleControllerType(_slotId, _id, controllerId); + return _lib.GetModuleControllerType(_slotId, Id, controllerId); } public int GetControllerGroup(int controllerId) { - return _lib.GetModuleControllerGroup(_slotId, _id, controllerId); + return _lib.GetModuleControllerGroup(_slotId, Id, controllerId); } #endregion controllers diff --git a/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs b/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs index 273fd94..ed4f1c9 100644 --- a/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs +++ b/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs @@ -2,84 +2,105 @@ { public interface IModuleHandleWrapper { - ModuleHandle Module { get; } + ModuleHandle ModuleHandle { get; } } - public static class ModuleHandleWrapperExtensions + public static class ModuleWrapperExtensions { /// - public static ModuleFlags GetFlags(this IModuleHandleWrapper wrapper) => wrapper.Module.GetFlags(); + public static ModuleFlags GetFlags(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFlags(); /// - public static ModuleType GetModuleType(this IModuleHandleWrapper wrapper) => wrapper.Module.GetModuleType(); + public static ModuleType GetModuleType(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetModuleType(); /// - public static bool GetExists(this IModuleHandleWrapper wrapper) => wrapper.Module.GetExists(); + public static bool GetExists(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetExists(); - /// - public static (int finetune, int relativeNote) GetFinetune(this IModuleHandleWrapper wrapper) => wrapper.Module.GetFinetune(); + /// + public static FineTunePair GetFineTune(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFineTune(); - /// - public static void SetFinetune(this IModuleHandleWrapper wrapper, int finetune, int relativeNote) => wrapper.Module.SetFinetune(finetune, relativeNote); + /// + public static void SetFineTune(this IModuleHandleWrapper wrapper, FineTunePair pair) => + wrapper.ModuleHandle.SetFineTune(pair); /// - public static int ReadScope(this IModuleHandleWrapper wrapper, AudioChannel channel, short[] buffer) => wrapper.Module.ReadScope(channel, buffer); + public static int ReadScope(this IModuleHandleWrapper wrapper, AudioChannel channel, short[] buffer) => + wrapper.ModuleHandle.ReadScope(channel, buffer); /// - public static string GetName(this IModuleHandleWrapper wrapper) => wrapper.Module.GetName(); + public static string? GetName(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetName(); /// - public static void SetName(this IModuleHandleWrapper wrapper, string name) => wrapper.Module.SetName(name); + public static void SetName(this IModuleHandleWrapper wrapper, string name) => + wrapper.ModuleHandle.SetName(name); /// - public static (int x, int y) GetPosition(this IModuleHandleWrapper wrapper) => wrapper.Module.GetPosition(); + public static (int x, int y) GetPosition(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetPosition(); /// - public static void SetPosition(this IModuleHandleWrapper wrapper, int x, int y) => wrapper.Module.SetPosition(x, y); + public static void SetPosition(this IModuleHandleWrapper wrapper, int x, int y) => + wrapper.ModuleHandle.SetPosition(x, y); /// - public static (byte R, byte G, byte B) GetColor(this IModuleHandleWrapper wrapper) => wrapper.Module.GetColor(); + public static (byte r, byte g, byte b) GetColor(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetColor(); /// - public static void SetColor(this IModuleHandleWrapper wrapper, byte R, byte G, byte B) => wrapper.Module.SetColor(R, G, B); + public static void SetColor(this IModuleHandleWrapper wrapper, byte R, byte G, byte B) => + wrapper.ModuleHandle.SetColor(R, G, B); /// - public static int[] GetInputs(this IModuleHandleWrapper wrapper) => wrapper.Module.GetInputs(); + public static int[] GetInputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputs(); /// - public static ModuleHandle[] GetInputModules(this IModuleHandleWrapper wrapper) => wrapper.Module.GetInputModules(); + public static ModuleHandle[] GetInputModules(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetInputModules(); /// - public static int[] GetOutputs(this IModuleHandleWrapper wrapper) => wrapper.Module.GetOutputs(); + public static int[] GetOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetOutputs(); /// - public static ModuleHandle[] GetModuleOutputs(this IModuleHandleWrapper wrapper) => wrapper.Module.GetModuleOutputs(); + public static ModuleHandle[] GetModuleOutputs(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetModuleOutputs(); /// - public static int GetControllerCount(this IModuleHandleWrapper wrapper) => wrapper.Module.GetControllerCount(); + public static int GetControllerCount(this IModuleHandleWrapper wrapper) => + wrapper.ModuleHandle.GetControllerCount(); /// - public static string GetControllerName(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.Module.GetControllerName(controllerId); + public static string? GetControllerName(this IModuleHandleWrapper wrapper, int controllerId) => + wrapper.ModuleHandle.GetControllerName(controllerId); /// - public static int GetControllerValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingType scaling = ValueScalingType.Displayed) => wrapper.GetControllerValue(controllerId, scaling); + public static int GetControllerValue(this IModuleHandleWrapper wrapper, int controllerId, + ValueScalingType scaling = ValueScalingType.Displayed) => + wrapper.ModuleHandle.GetControllerValue(controllerId, scaling); /// - public static void SetControllerValue(this IModuleHandleWrapper wrapper, int controller, int value, ValueScalingType scaling = ValueScalingType.Displayed) => wrapper.SetControllerValue(controller, value, scaling); + public static void SetControllerValue(this IModuleHandleWrapper wrapper, int controller, int value, + ValueScalingType scaling = ValueScalingType.Displayed) => + wrapper.ModuleHandle.SetControllerValue(controller, value, scaling); /// - public static int GetControllerMinValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingType scaling) => wrapper.Module.GetControllerMinValue(controllerId, scaling); + public static int GetControllerMinValue(this IModuleHandleWrapper wrapper, int controllerId, + ValueScalingType scaling) => wrapper.ModuleHandle.GetControllerMinValue(controllerId, scaling); /// - public static int GetControllerMaxValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingType scaling) => wrapper.Module.GetControllerMaxValue(controllerId, scaling); + public static int GetControllerMaxValue(this IModuleHandleWrapper wrapper, int controllerId, + ValueScalingType scaling) => wrapper.ModuleHandle.GetControllerMaxValue(controllerId, scaling); /// - public static int GetControllerOffset(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.Module.GetControllerOffset(controllerId); + public static int GetControllerOffset(this IModuleHandleWrapper wrapper, int controllerId) => + wrapper.ModuleHandle.GetControllerOffset(controllerId); - /// - public static ControllerType GetModuleControllerType(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.Module.GetControllerType(controllerId); + /// + public static ControllerType GetControllerType(this IModuleHandleWrapper wrapper, int controllerId) => + wrapper.ModuleHandle.GetControllerType(controllerId); - /// - public static int GetModuleControllerGroup(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.Module.GetControllerGroup(controllerId); + /// + public static int GetControllerGroup(this IModuleHandleWrapper wrapper, int controllerId) => + wrapper.ModuleHandle.GetControllerGroup(controllerId); } } diff --git a/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs b/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs index 3482a17..9fb33b3 100644 --- a/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs +++ b/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs @@ -705,11 +705,11 @@ public static class ModuleExtensions public struct ADSRModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public ADSRModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -719,192 +719,192 @@ public ADSRModuleHandle(ModuleHandle module) /// Original name: Attack /// Value range: 0 to 10000 /// - public int GetAttack() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 10000 /// - public void SetAttack(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve() => (ADSRCurveType)Module.GetControllerValue(5, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve(ADSRCurveType value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Decay /// Value range: 0 to 10000 /// - public int GetDecay() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetDecay() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Decay /// Value range: 0 to 10000 /// - public void SetDecay(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetDecay(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve() => (ADSRCurveType)Module.GetControllerValue(6, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve(ADSRCurveType value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo /// - public ADSRMode GetMode() => (ADSRMode)Module.GetControllerValue(13, ValueScalingType.Displayed); + public ADSRMode GetMode() => (ADSRMode)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo /// - public void SetMode(ADSRMode value) => Module.SetControllerValue(13, (int)value, ValueScalingType.Displayed); + public void SetMode(ADSRMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); /// /// Original name: On NoteOFF /// Possible values: DoNothing, StopOnLastNote, Stop /// - public ADSROnNoteOffBehaviour GetOnNoteOff() => (ADSROnNoteOffBehaviour)Module.GetControllerValue(12, ValueScalingType.Displayed); + public ADSROnNoteOffBehaviour GetOnNoteOff() => (ADSROnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: On NoteOFF /// Possible values: DoNothing, StopOnLastNote, Stop /// - public void SetOnNoteOff(ADSROnNoteOffBehaviour value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetOnNoteOff(ADSROnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: On NoteON /// Possible values: DoNothing, StartOnFirstNote, Start /// - public ADSROnNoteOnBehaviour GetOnNoteOn() => (ADSROnNoteOnBehaviour)Module.GetControllerValue(11, ValueScalingType.Displayed); + public ADSROnNoteOnBehaviour GetOnNoteOn() => (ADSROnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: On NoteON /// Possible values: DoNothing, StartOnFirstNote, Start /// - public void SetOnNoteOn(ADSROnNoteOnBehaviour value) => Module.SetControllerValue(11, (int)value, ValueScalingType.Displayed); + public void SetOnNoteOn(ADSROnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 10000 /// - public int GetRelease() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 10000 /// - public void SetRelease(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve() => (ADSRCurveType)Module.GetControllerValue(7, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve(ADSRCurveType value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Smooth transitions /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange /// - public ADSRSmoothTransitions GetSmoothTransitions() => (ADSRSmoothTransitions)Module.GetControllerValue(14, ValueScalingType.Displayed); + public ADSRSmoothTransitions GetSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: Smooth transitions /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange /// - public void SetSmoothTransitions(ADSRSmoothTransitions value) => Module.SetControllerValue(14, (int)value, ValueScalingType.Displayed); + public void SetSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); /// /// Original name: State /// Possible values: Off, On /// - public Toggle GetState() => (Toggle)Module.GetControllerValue(10, ValueScalingType.Displayed); + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: State /// Possible values: Off, On /// - public void SetState(Toggle value) => Module.SetControllerValue(10, (int)value, ValueScalingType.Displayed); + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain() => (ADSRSustainMode)Module.GetControllerValue(8, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain() => (ADSRSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain(ADSRSustainMode value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetSustain(ADSRSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetSustainLevel() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetSustainLevel(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal() => (Toggle)Module.GetControllerValue(9, ValueScalingType.Displayed); + public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal(Toggle value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct AmplifierModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public AmplifierModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -914,120 +914,120 @@ public AmplifierModuleHandle(ModuleHandle module) /// Original name: Absolute /// Possible values: Off, On /// - public Toggle GetAbsolute() => (Toggle)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Absolute /// Possible values: Off, On /// - public void SetAbsolute(Toggle value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Balance /// Value range: -128 to 128 /// - public int GetBalance() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetBalance() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Balance /// Value range: -128 to 128 /// - public void SetBalance(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetBalance(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Bipolar DC Offset /// Value range: -16384 to 16384 /// - public int GetBipolarDCOffset() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetBipolarDCOffset() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Bipolar DC Offset /// Value range: -16384 to 16384 /// - public void SetBipolarDCOffset(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetBipolarDCOffset(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: DC Offset /// Value range: -128 to 128 /// - public int GetDCOffset() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetDCOffset() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: DC Offset /// Value range: -128 to 128 /// - public void SetDCOffset(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetDCOffset(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Fine volume /// Value range: 0 to 32768 /// - public int GetFineVolume() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetFineVolume() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Fine volume /// Value range: 0 to 32768 /// - public void SetFineVolume(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetFineVolume(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 5000 /// - public int GetGain() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 5000 /// - public void SetGain(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Inverse /// Possible values: Off, On /// - public Toggle GetInverse() => (Toggle)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Inverse /// Possible values: Off, On /// - public void SetInverse(Toggle value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Stereo width /// Value range: 0 to 256 /// - public int GetStereoWidth() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Stereo width /// Value range: 0 to 256 /// - public void SetStereoWidth(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct AnalogGeneratorModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public AnalogGeneratorModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1037,265 +1037,265 @@ public AnalogGeneratorModuleHandle(ModuleHandle module) /// Original name: Attack /// Value range: 0 to 256 /// - public int GetAttack() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 256 /// - public void SetAttack(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 1024 /// - public int GetDutyCycle() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetDutyCycle() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 1024 /// - public void SetDutyCycle(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Exponential envelope /// Possible values: Off, On /// - public Toggle GetExponentialEnvelope() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Exponential envelope /// Possible values: Off, On /// - public void SetExponentialEnvelope(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: F.attack /// Value range: 0 to 256 /// - public int GetFAttack() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetFAttack() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: F.attack /// Value range: 0 to 256 /// - public void SetFAttack(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetFAttack(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: F.envelope /// Possible values: Off, SustainOff, SustainOn /// - public AnalogGeneratorEnvelopeMode GetFEnvelope() => (AnalogGeneratorEnvelopeMode)Module.GetControllerValue(15, ValueScalingType.Displayed); + public AnalogGeneratorEnvelopeMode GetFEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); /// /// Original name: F.envelope /// Possible values: Off, SustainOff, SustainOn /// - public void SetFEnvelope(AnalogGeneratorEnvelopeMode value) => Module.SetControllerValue(15, (int)value, ValueScalingType.Displayed); + public void SetFEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingType.Displayed); /// /// Original name: F.exponential freq /// Possible values: Off, On /// - public Toggle GetFExponentialFreq() => (Toggle)Module.GetControllerValue(12, ValueScalingType.Displayed); + public Toggle GetFExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: F.exponential freq /// Possible values: Off, On /// - public void SetFExponentialFreq(Toggle value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetFExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: F.freq /// Value range: 0 to 14000 /// - public int GetFFreq() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetFFreq() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: F.freq /// Value range: 0 to 14000 /// - public void SetFFreq(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetFFreq(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Filter /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB /// - public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)Module.GetControllerValue(9, ValueScalingType.Displayed); + public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Filter /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB /// - public void SetFilter(AnalogGeneratorFilterType value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: F.release /// Value range: 0 to 256 /// - public int GetFRelease() => Module.GetControllerValue(14, ValueScalingType.Displayed); + public int GetFRelease() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: F.release /// Value range: 0 to 256 /// - public void SetFRelease(int value) => Module.SetControllerValue(14, value, ValueScalingType.Displayed); + public void SetFRelease(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); /// /// Original name: F.resonance /// Value range: 0 to 1530 /// - public int GetFResonance() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetFResonance() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: F.resonance /// Value range: 0 to 1530 /// - public void SetFResonance(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetFResonance(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(17, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(17, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingType.Displayed); /// /// Original name: Noise /// Value range: 0 to 256 /// - public int GetNoise() => Module.GetControllerValue(18, ValueScalingType.Displayed); + public int GetNoise() => ModuleHandle.GetControllerValue(18, ValueScalingType.Displayed); /// /// Original name: Noise /// Value range: 0 to 256 /// - public void SetNoise(int value) => Module.SetControllerValue(18, value, ValueScalingType.Displayed); + public void SetNoise(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingType.Displayed); /// /// Original name: Osc2 /// Value range: -1000 to 1000 /// - public int GetOsc2() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetOsc2() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Osc2 /// Value range: -1000 to 1000 /// - public void SetOsc2(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetOsc2(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Osc2 mode /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor /// - public AnalogGeneratorOsc2Mode GetOsc2Mode() => (AnalogGeneratorOsc2Mode)Module.GetControllerValue(20, ValueScalingType.Displayed); + public AnalogGeneratorOsc2Mode GetOsc2Mode() => (AnalogGeneratorOsc2Mode)ModuleHandle.GetControllerValue(20, ValueScalingType.Displayed); /// /// Original name: Osc2 mode /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor /// - public void SetOsc2Mode(AnalogGeneratorOsc2Mode value) => Module.SetControllerValue(20, (int)value, ValueScalingType.Displayed); + public void SetOsc2Mode(AnalogGeneratorOsc2Mode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingType.Displayed); /// /// Original name: Osc2 phase /// Value range: 0 to 32768 /// - public int GetOsc2Phase() => Module.GetControllerValue(21, ValueScalingType.Displayed); + public int GetOsc2Phase() => ModuleHandle.GetControllerValue(21, ValueScalingType.Displayed); /// /// Original name: Osc2 phase /// Value range: 0 to 32768 /// - public void SetOsc2Phase(int value) => Module.SetControllerValue(21, value, ValueScalingType.Displayed); + public void SetOsc2Phase(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingType.Displayed); /// /// Original name: Osc2 volume /// Value range: 0 to 32768 /// - public int GetOsc2Volume() => Module.GetControllerValue(19, ValueScalingType.Displayed); + public int GetOsc2Volume() => ModuleHandle.GetControllerValue(19, ValueScalingType.Displayed); /// /// Original name: Osc2 volume /// Value range: 0 to 32768 /// - public void SetOsc2Volume(int value) => Module.SetControllerValue(19, value, ValueScalingType.Displayed); + public void SetOsc2Volume(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public int GetPolyphony() => Module.GetControllerValue(16, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public void SetPolyphony(int value) => Module.SetControllerValue(16, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 256 /// - public int GetRelease() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 256 /// - public void SetRelease(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public Toggle GetSustain() => (Toggle)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public void SetSustain(Toggle value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics /// - public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)Module.GetControllerValue(1, ValueScalingType.Displayed); + public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics /// - public void SetWaveform(AnalogGeneratorWaveform value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); #endregion controllers @@ -1311,7 +1311,7 @@ public void ReadDrawnValues(float[] buffer) if (buffer.Length < 32) throw new System.ArgumentException("Buffer must be at least of size 32"); - Module.ReadCurve(0, buffer); + ModuleHandle.ReadCurve(0, buffer); } /// @@ -1324,7 +1324,7 @@ public void WriteDrawnValues(float[] buffer) if (buffer.Length < 32) throw new System.ArgumentException("Buffer must be at least of size 32"); - Module.WriteCurve(0, buffer); + ModuleHandle.WriteCurve(0, buffer); } #endregion curves @@ -1332,11 +1332,11 @@ public void WriteDrawnValues(float[] buffer) public struct CompressorModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public CompressorModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1346,96 +1346,96 @@ public CompressorModuleHandle(ModuleHandle module) /// Original name: Attack /// Value range: 0 to 500 /// - public int GetAttack() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 500 /// - public void SetAttack(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Peak, RMS, PeakZeroLatency /// - public CompressorMode GetMode() => (CompressorMode)Module.GetControllerValue(5, ValueScalingType.Displayed); + public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Peak, RMS, PeakZeroLatency /// - public void SetMode(CompressorMode value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 1 to 1000 /// - public int GetRelease() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 1 to 1000 /// - public void SetRelease(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Side-chain input /// Value range: 0 to 32 /// - public int GetSideChainInput() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetSideChainInput() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Side-chain input /// Value range: 0 to 32 /// - public void SetSideChainInput(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetSideChainInput(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Slope /// Value range: 0 to 200 /// - public int GetSlope() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetSlope() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Slope /// Value range: 0 to 200 /// - public void SetSlope(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetSlope(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Threshold /// Value range: 0 to 512 /// - public int GetThreshold() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Threshold /// Value range: 0 to 512 /// - public void SetThreshold(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct ControlToNoteModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public ControlToNoteModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1445,132 +1445,132 @@ public ControlToNoteModuleHandle(ModuleHandle module) /// Original name: Finetune /// Value range: -256 to 256 /// - public int GetFinetune() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Finetune /// Value range: -256 to 256 /// - public void SetFinetune(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: First note /// Value range: 0 to 120 /// - public int GetFirstNote() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetFirstNote() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: First note /// Value range: 0 to 120 /// - public void SetFirstNote(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: NoteOFF /// Possible values: Nothing, OnMinPitch, OnMaxPitch /// - public ControlToNoteOffBehaviour GetNoteOff() => (ControlToNoteOffBehaviour)Module.GetControllerValue(8, ValueScalingType.Displayed); + public ControlToNoteOffBehaviour GetNoteOff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: NoteOFF /// Possible values: Nothing, OnMinPitch, OnMaxPitch /// - public void SetNoteOff(ControlToNoteOffBehaviour value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetNoteOff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: NoteON /// Possible values: Nothing, OnPitchChange /// - public ControlToNoteOnBehaviour GetNoteOn() => (ControlToNoteOnBehaviour)Module.GetControllerValue(7, ValueScalingType.Displayed); + public ControlToNoteOnBehaviour GetNoteOn() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: NoteON /// Possible values: Nothing, OnPitchChange /// - public void SetNoteOn(ControlToNoteOnBehaviour value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetNoteOn(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Pitch /// Value range: 0 to 32768 /// - public int GetPitch() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetPitch() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Pitch /// Value range: 0 to 32768 /// - public void SetPitch(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetPitch(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Range (number of semitones) /// Value range: 0 to 120 /// - public int GetRangeNumberOfSemitones() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Range (number of semitones) /// Value range: 0 to 120 /// - public void SetRangeNumberOfSemitones(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Record notes /// Possible values: Off, On /// - public Toggle GetRecordNotes() => (Toggle)Module.GetControllerValue(9, ValueScalingType.Displayed); + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Record notes /// Possible values: Off, On /// - public void SetRecordNotes(Toggle value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: State /// Possible values: Off, On /// - public Toggle GetState() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: State /// Possible values: Off, On /// - public void SetState(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public int GetTranspose() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public void SetTranspose(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Velocity /// Value range: 0 to 256 /// - public int GetVelocity() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Velocity /// Value range: 0 to 256 /// - public void SetVelocity(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); #endregion controllers } public struct DcBlockerModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public DcBlockerModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1580,24 +1580,24 @@ public DcBlockerModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(0, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); #endregion controllers } public struct DelayModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public DelayModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1607,144 +1607,144 @@ public DelayModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Delay L /// Value range: 0 to 256 /// - public int GetDelayL() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetDelayL() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Delay L /// Value range: 0 to 256 /// - public void SetDelayL(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetDelayL(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Delay multiplier /// Value range: 1 to 15 /// - public int GetDelayMultiplier() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetDelayMultiplier() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Delay multiplier /// Value range: 1 to 15 /// - public void SetDelayMultiplier(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetDelayMultiplier(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Delay R /// Value range: 0 to 256 /// - public int GetDelayR() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetDelayR() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Delay R /// Value range: 0 to 256 /// - public void SetDelayR(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetDelayR(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Delay unit /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample /// - public DelayUnit GetDelayUnit() => (DelayUnit)Module.GetControllerValue(8, ValueScalingType.Displayed); + public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Delay unit /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample /// - public void SetDelayUnit(DelayUnit value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 512 /// - public int GetDry() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 512 /// - public void SetDry(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 32768 /// - public int GetFeedback() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 32768 /// - public void SetFeedback(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Inverse /// Possible values: Off, On /// - public Toggle GetInverse() => (Toggle)Module.GetControllerValue(7, ValueScalingType.Displayed); + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Inverse /// Possible values: Off, On /// - public void SetInverse(Toggle value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume L /// Value range: 0 to 256 /// - public int GetVolumeL() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetVolumeL() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Volume L /// Value range: 0 to 256 /// - public void SetVolumeL(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetVolumeL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Volume R /// Value range: 0 to 256 /// - public int GetVolumeR() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetVolumeR() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Volume R /// Value range: 0 to 256 /// - public void SetVolumeR(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetVolumeR(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 512 /// - public int GetWet() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 512 /// - public void SetWet(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct DistortionModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public DistortionModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1754,84 +1754,84 @@ public DistortionModuleHandle(ModuleHandle module) /// Original name: Bit depth /// Value range: 1 to 16 /// - public int GetBitDepth() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetBitDepth() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Bit depth /// Value range: 1 to 16 /// - public void SetBitDepth(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetBitDepth(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 /// - public DistortionType GetDistortionType() => (DistortionType)Module.GetControllerValue(1, ValueScalingType.Displayed); + public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 /// - public void SetDistortionType(DistortionType value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 44100 /// - public int GetFreq() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetFreq() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 44100 /// - public void SetFreq(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetFreq(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Noise /// Value range: 0 to 256 /// - public int GetNoise() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetNoise() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Noise /// Value range: 0 to 256 /// - public void SetNoise(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetNoise(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Power /// Value range: 0 to 256 /// - public int GetPower() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPower() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Power /// Value range: 0 to 256 /// - public void SetPower(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPower(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct DrumSynthModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public DrumSynthModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -1841,192 +1841,192 @@ public DrumSynthModuleHandle(ModuleHandle module) /// Original name: Bass length /// Value range: 0 to 256 /// - public int GetBassLength() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetBassLength() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Bass length /// Value range: 0 to 256 /// - public void SetBassLength(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetBassLength(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Bass panning /// Value range: -128 to 128 /// - public int GetBassPanning() => Module.GetControllerValue(12, ValueScalingType.Displayed); + public int GetBassPanning() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: Bass panning /// Value range: -128 to 128 /// - public void SetBassPanning(int value) => Module.SetControllerValue(12, value, ValueScalingType.Displayed); + public void SetBassPanning(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); /// /// Original name: Bass power /// Value range: 0 to 256 /// - public int GetBassPower() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetBassPower() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Bass power /// Value range: 0 to 256 /// - public void SetBassPower(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetBassPower(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Bass tone /// Value range: 0 to 256 /// - public int GetBassTone() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetBassTone() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Bass tone /// Value range: 0 to 256 /// - public void SetBassTone(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetBassTone(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Bass volume /// Value range: 0 to 512 /// - public int GetBassVolume() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetBassVolume() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Bass volume /// Value range: 0 to 512 /// - public void SetBassVolume(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetBassVolume(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Hihat length /// Value range: 0 to 256 /// - public int GetHihatLength() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetHihatLength() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Hihat length /// Value range: 0 to 256 /// - public void SetHihatLength(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetHihatLength(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Hihat panning /// Value range: -128 to 128 /// - public int GetHihatPanning() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetHihatPanning() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: Hihat panning /// Value range: -128 to 128 /// - public void SetHihatPanning(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetHihatPanning(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: Hihat volume /// Value range: 0 to 512 /// - public int GetHihatVolume() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetHihatVolume() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Hihat volume /// Value range: 0 to 512 /// - public void SetHihatVolume(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetHihatVolume(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 8 /// - public int GetPolyphony() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 8 /// - public void SetPolyphony(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Snare length /// Value range: 0 to 256 /// - public int GetSnareLength() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetSnareLength() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Snare length /// Value range: 0 to 256 /// - public void SetSnareLength(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetSnareLength(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: Snare panning /// Value range: -128 to 128 /// - public int GetSnarePanning() => Module.GetControllerValue(14, ValueScalingType.Displayed); + public int GetSnarePanning() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: Snare panning /// Value range: -128 to 128 /// - public void SetSnarePanning(int value) => Module.SetControllerValue(14, value, ValueScalingType.Displayed); + public void SetSnarePanning(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); /// /// Original name: Snare tone /// Value range: 0 to 256 /// - public int GetSnareTone() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetSnareTone() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Snare tone /// Value range: 0 to 256 /// - public void SetSnareTone(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetSnareTone(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Snare volume /// Value range: 0 to 512 /// - public int GetSnareVolume() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetSnareVolume() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Snare volume /// Value range: 0 to 512 /// - public void SetSnareVolume(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetSnareVolume(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct EchoModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public EchoModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2036,122 +2036,122 @@ public EchoModuleHandle(ModuleHandle module) /// Original name: Delay /// Value range: 0 to 256 /// - public int GetDelay() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Delay /// Value range: 0 to 256 /// - public void SetDelay(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Delay unit /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)Module.GetControllerValue(5, ValueScalingType.Displayed); + public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Delay unit /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetDelayUnit(EchoDelayUnit value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public int GetDry() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public void SetDry(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public int GetFeedback() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public void SetFeedback(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: F.freq /// Value range: 0 to 22000 /// - public int GetFFreq() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetFFreq() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: F.freq /// Value range: 0 to 22000 /// - public void SetFFreq(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetFFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Filter /// Possible values: Off, LP6dB, HP6dB /// - public EchoFilter GetFilter() => (EchoFilter)Module.GetControllerValue(7, ValueScalingType.Displayed); + public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Filter /// Possible values: Off, LP6dB, HP6dB /// - public void SetFilter(EchoFilter value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Right channel offset /// Possible values: Off, On /// - public Toggle GetRightChannelOffset() => (Toggle)Module.GetControllerValue(4, ValueScalingType.Displayed); + public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Right channel offset /// Possible values: Off, On /// - public void SetRightChannelOffset(Toggle value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); /// /// Original name: Right channel offset /// Value range: 0 to 32768 /// Delay/32768 /// - public int GetRightChannelOffsetDelay() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetRightChannelOffsetDelay() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Right channel offset /// Value range: 0 to 32768 /// Delay/32768 /// - public void SetRightChannelOffsetDelay(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetRightChannelOffsetDelay(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public int GetWet() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public void SetWet(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct EQModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public EQModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2161,60 +2161,60 @@ public EQModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: High /// Value range: 0 to 512 /// - public int GetHigh() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetHigh() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: High /// Value range: 0 to 512 /// - public void SetHigh(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetHigh(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Low /// Value range: 0 to 512 /// - public int GetLow() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetLow() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Low /// Value range: 0 to 512 /// - public void SetLow(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetLow(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Middle /// Value range: 0 to 512 /// - public int GetMiddle() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetMiddle() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Middle /// Value range: 0 to 512 /// - public void SetMiddle(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetMiddle(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct FeedbackModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FeedbackModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2224,36 +2224,36 @@ public FeedbackModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(1, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 10000 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 10000 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct FFTModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FFTModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2263,216 +2263,216 @@ public FFTModuleHandle(ModuleHandle module) /// Original name: All-pass filter /// Value range: 0 to 32768 /// - public int GetAllPassFilter() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetAllPassFilter() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: All-pass filter /// Value range: 0 to 32768 /// - public void SetAllPassFilter(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetAllPassFilter(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Buffer (samples) /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 /// - public FFTBufferSize GetBufferSamples() => (FFTBufferSize)Module.GetControllerValue(2, ValueScalingType.Displayed); + public FFTBufferSize GetBufferSamples() => (FFTBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Buffer (samples) /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 /// - public void SetBufferSamples(FFTBufferSize value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetBufferSamples(FFTBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Buf overlap /// Possible values: None, x2, x4 /// - public FFTBufferOverlap GetBufOverlap() => (FFTBufferOverlap)Module.GetControllerValue(3, ValueScalingType.Displayed); + public FFTBufferOverlap GetBufOverlap() => (FFTBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Buf overlap /// Possible values: None, x2, x4 /// - public void SetBufOverlap(FFTBufferOverlap value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetBufOverlap(FFTBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public ChannelsInverted GetChannels() => (ChannelsInverted)Module.GetControllerValue(1, ValueScalingType.Displayed); + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public void SetChannels(ChannelsInverted value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Deform1 /// Value range: 0 to 32768 /// - public int GetDeform1() => Module.GetControllerValue(12, ValueScalingType.Displayed); + public int GetDeform1() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: Deform1 /// Value range: 0 to 32768 /// - public void SetDeform1(int value) => Module.SetControllerValue(12, value, ValueScalingType.Displayed); + public void SetDeform1(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); /// /// Original name: Deform2 /// Value range: 0 to 32768 /// - public int GetDeform2() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetDeform2() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: Deform2 /// Value range: 0 to 32768 /// - public void SetDeform2(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetDeform2(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 32768 /// - public int GetFeedback() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 32768 /// - public void SetFeedback(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Freq shift /// Value range: -4096 to 4096 /// - public int GetFreqShift() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetFreqShift() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Freq shift /// Value range: -4096 to 4096 /// - public void SetFreqShift(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetFreqShift(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: Frequency spread /// Value range: 0 to 32768 /// - public int GetFrequencySpread() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetFrequencySpread() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Frequency spread /// Value range: 0 to 32768 /// - public void SetFrequencySpread(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetFrequencySpread(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: HP cutoff /// Value range: 0 to 32768 /// - public int GetHPCutoff() => Module.GetControllerValue(14, ValueScalingType.Displayed); + public int GetHPCutoff() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: HP cutoff /// Value range: 0 to 32768 /// - public void SetHPCutoff(int value) => Module.SetControllerValue(14, value, ValueScalingType.Displayed); + public void SetHPCutoff(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); /// /// Original name: LP cutoff /// Value range: 0 to 32768 /// - public int GetLPCutoff() => Module.GetControllerValue(15, ValueScalingType.Displayed); + public int GetLPCutoff() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); /// /// Original name: LP cutoff /// Value range: 0 to 32768 /// - public void SetLPCutoff(int value) => Module.SetControllerValue(15, value, ValueScalingType.Displayed); + public void SetLPCutoff(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); /// /// Original name: Noise reduction /// Value range: 0 to 32768 /// - public int GetNoiseReduction() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetNoiseReduction() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Noise reduction /// Value range: 0 to 32768 /// - public void SetNoiseReduction(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetNoiseReduction(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Phase gain (norm=16384) /// Value range: 0 to 32768 /// - public int GetPhaseGainNorm16384() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetPhaseGainNorm16384() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Phase gain (norm=16384) /// Value range: 0 to 32768 /// - public void SetPhaseGainNorm16384(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetPhaseGainNorm16384(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Random phase /// Value range: 0 to 32768 /// - public int GetRandomPhase() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetRandomPhase() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Random phase /// Value range: 0 to 32768 /// - public void SetRandomPhase(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Random phase (lite) /// Value range: 0 to 32768 /// - public int GetRandomPhaseLite() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetRandomPhaseLite() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Random phase (lite) /// Value range: 0 to 32768 /// - public void SetRandomPhaseLite(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetRandomPhaseLite(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 /// - public FFTSampleRate GetSampleRate() => (FFTSampleRate)Module.GetControllerValue(0, ValueScalingType.Displayed); + public FFTSampleRate GetSampleRate() => (FFTSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 /// - public void SetSampleRate(FFTSampleRate value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetSampleRate(FFTSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public int GetVolume() => Module.GetControllerValue(16, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public void SetVolume(int value) => Module.SetControllerValue(16, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); #endregion controllers } public struct FilterModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FilterModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2482,192 +2482,192 @@ public FilterModuleHandle(ModuleHandle module) /// Original name: Exponential freq /// Possible values: Off, On /// - public Toggle GetExponentialFreq() => (Toggle)Module.GetControllerValue(11, ValueScalingType.Displayed); + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Exponential freq /// Possible values: Off, On /// - public void SetExponentialFreq(Toggle value) => Module.SetControllerValue(11, (int)value, ValueScalingType.Displayed); + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: LP, HP, BP, Notch /// - public FilterType GetFilterType() => (FilterType)Module.GetControllerValue(3, ValueScalingType.Displayed); + public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: LP, HP, BP, Notch /// - public void SetFilterType(FilterType value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 14000 /// - public int GetFrequency() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetFrequency() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 14000 /// - public void SetFrequency(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetFrequency(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Impulse /// Value range: 0 to 14000 /// - public int GetImpulse() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetImpulse() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Impulse /// Value range: 0 to 14000 /// - public void SetImpulse(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetImpulse(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 256 /// - public int GetLFOAmp() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetLFOAmp() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 256 /// - public void SetLFOAmp(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 1024 /// - public int GetLFOFreq() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetLFOFreq() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 1024 /// - public void SetLFOFreq(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)Module.GetControllerValue(13, ValueScalingType.Displayed); + public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => Module.SetControllerValue(13, (int)value, ValueScalingType.Displayed); + public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Sin, Saw, Saw2, Square, Random /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)Module.GetControllerValue(14, ValueScalingType.Displayed); + public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Sin, Saw, Saw2, Square, Random /// - public void SetLFOWaveform(FilterLFOWaveform value) => Module.SetControllerValue(14, (int)value, ValueScalingType.Displayed); + public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 256 /// - public int GetMix() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetMix() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 256 /// - public void SetMix(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetMix(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Resonance /// Value range: 0 to 1530 /// - public int GetResonance() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetResonance() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Resonance /// Value range: 0 to 1530 /// - public void SetResonance(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetResonance(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 256 /// - public int GetResponse() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 256 /// - public void SetResponse(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public FilterRollOff GetRollOff() => (FilterRollOff)Module.GetControllerValue(12, ValueScalingType.Displayed); + public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: Roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public void SetRollOff(FilterRollOff value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public int GetSetLFOPhase() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public void SetSetLFOPhase(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct FilterProModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FilterProModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2677,216 +2677,216 @@ public FilterProModuleHandle(ModuleHandle module) /// Original name: Exponential freq /// Possible values: Off, On /// - public Toggle GetExponentialFreq() => (Toggle)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Exponential freq /// Possible values: Off, On /// - public void SetExponentialFreq(Toggle value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB /// - public FilterProType GetFilterType() => (FilterProType)Module.GetControllerValue(1, ValueScalingType.Displayed); + public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB /// - public void SetFilterType(FilterProType value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 22000 /// - public int GetFreq() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 0 to 22000 /// - public void SetFreq(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Freq finetune /// Value range: -1000 to 1000 /// - public int GetFreqFinetune() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetFreqFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Freq finetune /// Value range: -1000 to 1000 /// - public void SetFreqFinetune(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetFreqFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Freq scale /// Value range: 0 to 200 /// - public int GetFreqScale() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetFreqScale() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Freq scale /// Value range: 0 to 200 /// - public void SetFreqScale(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: -16384 to 16384 /// - public int GetGain() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: -16384 to 16384 /// - public void SetGain(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 32768 /// - public int GetLFOAmp() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetLFOAmp() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 32768 /// - public void SetLFOAmp(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 1024 /// - public int GetLFOFreq() => Module.GetControllerValue(12, ValueScalingType.Displayed); + public int GetLFOFreq() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 1024 /// - public void SetLFOFreq(int value) => Module.SetControllerValue(12, value, ValueScalingType.Displayed); + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)Module.GetControllerValue(16, ValueScalingType.Displayed); + public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => Module.SetControllerValue(16, (int)value, ValueScalingType.Displayed); + public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Sin, Saw, Saw2, Square, Random /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)Module.GetControllerValue(14, ValueScalingType.Displayed); + public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Sin, Saw, Saw2, Square, Random /// - public void SetLFOWaveform(FilterLFOWaveform value) => Module.SetControllerValue(14, (int)value, ValueScalingType.Displayed); + public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 32768 /// - public int GetMix() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetMix() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 32768 /// - public void SetMix(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetMix(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing /// - public FilterProMode GetMode() => (FilterProMode)Module.GetControllerValue(10, ValueScalingType.Displayed); + public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing /// - public void SetMode(FilterProMode value) => Module.SetControllerValue(10, (int)value, ValueScalingType.Displayed); + public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); /// /// Original name: Q /// Value range: 0 to 32768 /// - public int GetQ() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetQ() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Q /// Value range: 0 to 32768 /// - public void SetQ(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetQ(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public int GetResponse() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetResponse() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public void SetResponse(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetResponse(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public FilterProRollOff GetRollOff() => (FilterProRollOff)Module.GetControllerValue(8, ValueScalingType.Displayed); + public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public void SetRollOff(FilterProRollOff value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public int GetSetLFOPhase() => Module.GetControllerValue(15, ValueScalingType.Displayed); + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public void SetSetLFOPhase(int value) => Module.SetControllerValue(15, value, ValueScalingType.Displayed); + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct FlangerModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FlangerModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -2896,132 +2896,132 @@ public FlangerModuleHandle(ModuleHandle module) /// Original name: Delay /// Value range: 8 to 1000 /// - public int GetDelay() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Delay /// Value range: 8 to 1000 /// - public void SetDelay(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public int GetDry() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public void SetDry(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public int GetFeedback() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public void SetFeedback(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 256 /// - public int GetLFOAmp() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetLFOAmp() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: LFO amp /// Value range: 0 to 256 /// - public void SetLFOAmp(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 512 /// - public int GetLFOFreq() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetLFOFreq() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: LFO freq /// Value range: 0 to 512 /// - public void SetLFOFreq(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public FlangerLFOFrequencyUnit GetLFOFreqUnit() => (FlangerLFOFrequencyUnit)Module.GetControllerValue(9, ValueScalingType.Displayed); + public FlangerLFOFrequencyUnit GetLFOFreqUnit() => (FlangerLFOFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: LFO freq unit /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetLFOFreqUnit(FlangerLFOFrequencyUnit value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetLFOFreqUnit(FlangerLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Hsin, Sin /// - public FlangerLFOWaveform GetLFOWaveform() => (FlangerLFOWaveform)Module.GetControllerValue(7, ValueScalingType.Displayed); + public FlangerLFOWaveform GetLFOWaveform() => (FlangerLFOWaveform)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: LFO waveform /// Possible values: Hsin, Sin /// - public void SetLFOWaveform(FlangerLFOWaveform value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetLFOWaveform(FlangerLFOWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 256 /// - public int GetResponse() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 256 /// - public void SetResponse(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public int GetSetLFOPhase() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Set LFO phase /// Value range: 0 to 256 /// - public void SetSetLFOPhase(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public int GetWet() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public void SetWet(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct FMModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FMModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -3031,216 +3031,216 @@ public FMModuleHandle(ModuleHandle module) /// Original name: C.Attack /// Value range: 0 to 512 /// - public int GetCAttack() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetCAttack() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: C.Attack /// Value range: 0 to 512 /// - public void SetCAttack(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetCAttack(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: C.Decay /// Value range: 0 to 512 /// - public int GetCDecay() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetCDecay() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: C.Decay /// Value range: 0 to 512 /// - public void SetCDecay(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetCDecay(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: C.Freq ratio /// Value range: 0 to 16 /// - public int GetCFreqRatio() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetCFreqRatio() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: C.Freq ratio /// Value range: 0 to 16 /// - public void SetCFreqRatio(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetCFreqRatio(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: C.Release /// Value range: 0 to 512 /// - public int GetCRelease() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetCRelease() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: C.Release /// Value range: 0 to 512 /// - public void SetCRelease(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetCRelease(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: C.Sustain /// Value range: 0 to 256 /// - public int GetCSustain() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetCSustain() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: C.Sustain /// Value range: 0 to 256 /// - public void SetCSustain(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetCSustain(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: C.Volume /// Value range: 0 to 256 /// - public int GetCVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetCVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: C.Volume /// Value range: 0 to 256 /// - public void SetCVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetCVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: M.Attack /// Value range: 0 to 512 /// - public int GetMAttack() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetMAttack() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: M.Attack /// Value range: 0 to 512 /// - public void SetMAttack(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetMAttack(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: M.Decay /// Value range: 0 to 512 /// - public int GetMDecay() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetMDecay() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: M.Decay /// Value range: 0 to 512 /// - public void SetMDecay(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetMDecay(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: M.Freq ratio /// Value range: 0 to 16 /// - public int GetMFreqRatio() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetMFreqRatio() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: M.Freq ratio /// Value range: 0 to 16 /// - public void SetMFreqRatio(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetMFreqRatio(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(16, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(16, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingType.Displayed); /// /// Original name: M.Release /// Value range: 0 to 512 /// - public int GetMRelease() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetMRelease() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: M.Release /// Value range: 0 to 512 /// - public void SetMRelease(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetMRelease(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: M.Scaling per key /// Value range: 0 to 4 /// - public int GetMScalingPerKey() => Module.GetControllerValue(14, ValueScalingType.Displayed); + public int GetMScalingPerKey() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: M.Scaling per key /// Value range: 0 to 4 /// - public void SetMScalingPerKey(int value) => Module.SetControllerValue(14, value, ValueScalingType.Displayed); + public void SetMScalingPerKey(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); /// /// Original name: M.Self-modulation /// Value range: 0 to 256 /// - public int GetMSelfModulation() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetMSelfModulation() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: M.Self-modulation /// Value range: 0 to 256 /// - public void SetMSelfModulation(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetMSelfModulation(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: M.Sustain /// Value range: 0 to 256 /// - public int GetMSustain() => Module.GetControllerValue(12, ValueScalingType.Displayed); + public int GetMSustain() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: M.Sustain /// Value range: 0 to 256 /// - public void SetMSustain(int value) => Module.SetControllerValue(12, value, ValueScalingType.Displayed); + public void SetMSustain(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); /// /// Original name: M.Volume /// Value range: 0 to 256 /// - public int GetMVolume() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetMVolume() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: M.Volume /// Value range: 0 to 256 /// - public void SetMVolume(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetMVolume(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 16 /// - public int GetPolyphony() => Module.GetControllerValue(15, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 16 /// - public void SetPolyphony(int value) => Module.SetControllerValue(15, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); #endregion controllers } public struct FMXModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public FMXModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -3255,7 +3255,7 @@ public int GetVolume(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(9 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(9 + index - 1, ValueScalingType.Displayed); } /// @@ -3267,7 +3267,7 @@ public void SetVolume(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(9 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(9 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3279,7 +3279,7 @@ public int GetAttack(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(14 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(14 + index - 1, ValueScalingType.Displayed); } /// @@ -3291,7 +3291,7 @@ public void SetAttack(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(14 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(14 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3303,7 +3303,7 @@ public int GetDecay(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(19 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(19 + index - 1, ValueScalingType.Displayed); } /// @@ -3315,7 +3315,7 @@ public void SetDecay(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(19 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(19 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3327,7 +3327,7 @@ public int GetSustainLevel(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); } /// @@ -3339,7 +3339,7 @@ public void SetSustainLevel(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3351,7 +3351,7 @@ public int GetRelease(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(29 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(29 + index - 1, ValueScalingType.Displayed); } /// @@ -3363,7 +3363,7 @@ public void SetRelease(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(29 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(29 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3375,7 +3375,7 @@ public ADSRCurveType GetAttackCurve(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (ADSRCurveType)Module.GetControllerValue(34 + index - 1, ValueScalingType.Displayed); + return (ADSRCurveType)ModuleHandle.GetControllerValue(34 + index - 1, ValueScalingType.Displayed); } /// @@ -3387,7 +3387,7 @@ public void SetAttackCurve(int index, ADSRCurveType value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(34 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(34 + index - 1, (int)value, ValueScalingType.Displayed); } /// @@ -3399,7 +3399,7 @@ public ADSRCurveType GetDecayCurve(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (ADSRCurveType)Module.GetControllerValue(39 + index - 1, ValueScalingType.Displayed); + return (ADSRCurveType)ModuleHandle.GetControllerValue(39 + index - 1, ValueScalingType.Displayed); } /// @@ -3411,7 +3411,7 @@ public void SetDecayCurve(int index, ADSRCurveType value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(39 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(39 + index - 1, (int)value, ValueScalingType.Displayed); } /// @@ -3423,7 +3423,7 @@ public ADSRCurveType GetReleaseCurve(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (ADSRCurveType)Module.GetControllerValue(44 + index - 1, ValueScalingType.Displayed); + return (ADSRCurveType)ModuleHandle.GetControllerValue(44 + index - 1, ValueScalingType.Displayed); } /// @@ -3435,7 +3435,7 @@ public void SetReleaseCurve(int index, ADSRCurveType value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(44 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(44 + index - 1, (int)value, ValueScalingType.Displayed); } /// @@ -3447,7 +3447,7 @@ public int GetSustain(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); } /// @@ -3459,7 +3459,7 @@ public void SetSustain(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3471,7 +3471,7 @@ public Toggle GetSustainPedal(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (Toggle)Module.GetControllerValue(54 + index - 1, ValueScalingType.Displayed); + return (Toggle)ModuleHandle.GetControllerValue(54 + index - 1, ValueScalingType.Displayed); } /// @@ -3483,7 +3483,7 @@ public void SetSustainPedal(int index, Toggle value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(54 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(54 + index - 1, (int)value, ValueScalingType.Displayed); } /// @@ -3495,7 +3495,7 @@ public int GetEnvelopeScalingPerKey(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(59 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(59 + index - 1, ValueScalingType.Displayed); } /// @@ -3507,7 +3507,7 @@ public void SetEnvelopeScalingPerKey(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(59 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(59 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3519,7 +3519,7 @@ public int GetVolumeScalingPerKey(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(64 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(64 + index - 1, ValueScalingType.Displayed); } /// @@ -3531,7 +3531,7 @@ public void SetVolumeScalingPerKey(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(64 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(64 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3543,7 +3543,7 @@ public int GetVelocitySensitivity(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(69 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(69 + index - 1, ValueScalingType.Displayed); } /// @@ -3555,7 +3555,7 @@ public void SetVelocitySensitivity(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(69 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(69 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3567,7 +3567,7 @@ public FMXWaveform GetWaveform(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (FMXWaveform)Module.GetControllerValue(74 + index - 1, ValueScalingType.Displayed); + return (FMXWaveform)ModuleHandle.GetControllerValue(74 + index - 1, ValueScalingType.Displayed); } /// @@ -3579,7 +3579,7 @@ public void SetWaveform(int index, FMXWaveform value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(74 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(74 + index - 1, (int)value, ValueScalingType.Displayed); } /// @@ -3591,7 +3591,7 @@ public int GetNoise(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(79 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(79 + index - 1, ValueScalingType.Displayed); } /// @@ -3603,7 +3603,7 @@ public void SetNoise(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(79 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(79 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3615,7 +3615,7 @@ public int GetPhase(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(84 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(84 + index - 1, ValueScalingType.Displayed); } /// @@ -3627,7 +3627,7 @@ public void SetPhase(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(84 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(84 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3639,7 +3639,7 @@ public int GetFreqMultiply(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(89 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(89 + index - 1, ValueScalingType.Displayed); } /// @@ -3651,7 +3651,7 @@ public void SetFreqMultiply(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(89 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(89 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3663,7 +3663,7 @@ public int GetConstantPitch(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(94 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(94 + index - 1, ValueScalingType.Displayed); } /// @@ -3675,7 +3675,7 @@ public void SetConstantPitch(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(94 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(94 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3687,7 +3687,7 @@ public int GetSelfModulation(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(99 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(99 + index - 1, ValueScalingType.Displayed); } /// @@ -3699,7 +3699,7 @@ public void SetSelfModulation(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(99 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(99 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3711,7 +3711,7 @@ public int GetFeedback(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return Module.GetControllerValue(104 + index - 1, ValueScalingType.Displayed); + return ModuleHandle.GetControllerValue(104 + index - 1, ValueScalingType.Displayed); } /// @@ -3723,7 +3723,7 @@ public void SetFeedback(int index, int value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(104 + index - 1, value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(104 + index - 1, value, ValueScalingType.Displayed); } /// @@ -3735,7 +3735,7 @@ public FMXModulationType GetModulationType(int index) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - return (FMXModulationType)Module.GetControllerValue(109 + index - 1, ValueScalingType.Displayed); + return (FMXModulationType)ModuleHandle.GetControllerValue(109 + index - 1, ValueScalingType.Displayed); } /// @@ -3747,7 +3747,7 @@ public void SetModulationType(int index, FMXModulationType value) if (index < 1 || index > 5) throw new System.ArgumentOutOfRangeException(nameof(index)); - Module.SetControllerValue(109 + index - 1, (int)value, ValueScalingType.Displayed); + ModuleHandle.SetControllerValue(109 + index - 1, (int)value, ValueScalingType.Displayed); } #endregion module type-specific methods @@ -3759,1429 +3759,1429 @@ public void SetModulationType(int index, FMXModulationType value) /// Original name: ADSR smooth transitions /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange /// - public ADSRSmoothTransitions GetADSRSmoothTransitions() => (ADSRSmoothTransitions)Module.GetControllerValue(7, ValueScalingType.Displayed); + public ADSRSmoothTransitions GetADSRSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: ADSR smooth transitions /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange /// - public void SetADSRSmoothTransitions(ADSRSmoothTransitions value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetADSRSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Attack /// Value range: 0 to 10000 /// - public int GetAttack1() => Module.GetControllerValue(14, ValueScalingType.Displayed); + public int GetAttack1() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); /// /// Original name: 1 Attack /// Value range: 0 to 10000 /// - public void SetAttack1(int value) => Module.SetControllerValue(14, value, ValueScalingType.Displayed); + public void SetAttack1(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); /// /// Original name: 2 Attack /// Value range: 0 to 10000 /// - public int GetAttack2() => Module.GetControllerValue(15, ValueScalingType.Displayed); + public int GetAttack2() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); /// /// Original name: 2 Attack /// Value range: 0 to 10000 /// - public void SetAttack2(int value) => Module.SetControllerValue(15, value, ValueScalingType.Displayed); + public void SetAttack2(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); /// /// Original name: 3 Attack /// Value range: 0 to 10000 /// - public int GetAttack3() => Module.GetControllerValue(16, ValueScalingType.Displayed); + public int GetAttack3() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); /// /// Original name: 3 Attack /// Value range: 0 to 10000 /// - public void SetAttack3(int value) => Module.SetControllerValue(16, value, ValueScalingType.Displayed); + public void SetAttack3(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); /// /// Original name: 4 Attack /// Value range: 0 to 10000 /// - public int GetAttack4() => Module.GetControllerValue(17, ValueScalingType.Displayed); + public int GetAttack4() => ModuleHandle.GetControllerValue(17, ValueScalingType.Displayed); /// /// Original name: 4 Attack /// Value range: 0 to 10000 /// - public void SetAttack4(int value) => Module.SetControllerValue(17, value, ValueScalingType.Displayed); + public void SetAttack4(int value) => ModuleHandle.SetControllerValue(17, value, ValueScalingType.Displayed); /// /// Original name: 5 Attack /// Value range: 0 to 10000 /// - public int GetAttack5() => Module.GetControllerValue(18, ValueScalingType.Displayed); + public int GetAttack5() => ModuleHandle.GetControllerValue(18, ValueScalingType.Displayed); /// /// Original name: 5 Attack /// Value range: 0 to 10000 /// - public void SetAttack5(int value) => Module.SetControllerValue(18, value, ValueScalingType.Displayed); + public void SetAttack5(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingType.Displayed); /// /// Original name: 1 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve1() => (ADSRCurveType)Module.GetControllerValue(34, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(34, ValueScalingType.Displayed); /// /// Original name: 1 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve1(ADSRCurveType value) => Module.SetControllerValue(34, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(34, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve2() => (ADSRCurveType)Module.GetControllerValue(35, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(35, ValueScalingType.Displayed); /// /// Original name: 2 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve2(ADSRCurveType value) => Module.SetControllerValue(35, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(35, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve3() => (ADSRCurveType)Module.GetControllerValue(36, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(36, ValueScalingType.Displayed); /// /// Original name: 3 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve3(ADSRCurveType value) => Module.SetControllerValue(36, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(36, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve4() => (ADSRCurveType)Module.GetControllerValue(37, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(37, ValueScalingType.Displayed); /// /// Original name: 4 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve4(ADSRCurveType value) => Module.SetControllerValue(37, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(37, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetAttackCurve5() => (ADSRCurveType)Module.GetControllerValue(38, ValueScalingType.Displayed); + public ADSRCurveType GetAttackCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(38, ValueScalingType.Displayed); /// /// Original name: 5 Attack curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetAttackCurve5(ADSRCurveType value) => Module.SetControllerValue(38, (int)value, ValueScalingType.Displayed); + public void SetAttackCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(38, (int)value, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public ChannelsInverted GetChannels() => (ChannelsInverted)Module.GetControllerValue(4, ValueScalingType.Displayed); + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public void SetChannels(ChannelsInverted value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Constant pitch /// Value range: -8192 to 8192 /// - public int GetConstantPitch1() => Module.GetControllerValue(94, ValueScalingType.Displayed); + public int GetConstantPitch1() => ModuleHandle.GetControllerValue(94, ValueScalingType.Displayed); /// /// Original name: 1 Constant pitch /// Value range: -8192 to 8192 /// - public void SetConstantPitch1(int value) => Module.SetControllerValue(94, value, ValueScalingType.Displayed); + public void SetConstantPitch1(int value) => ModuleHandle.SetControllerValue(94, value, ValueScalingType.Displayed); /// /// Original name: 2 Constant pitch /// Value range: -8192 to 8192 /// - public int GetConstantPitch2() => Module.GetControllerValue(95, ValueScalingType.Displayed); + public int GetConstantPitch2() => ModuleHandle.GetControllerValue(95, ValueScalingType.Displayed); /// /// Original name: 2 Constant pitch /// Value range: -8192 to 8192 /// - public void SetConstantPitch2(int value) => Module.SetControllerValue(95, value, ValueScalingType.Displayed); + public void SetConstantPitch2(int value) => ModuleHandle.SetControllerValue(95, value, ValueScalingType.Displayed); /// /// Original name: 3 Constant pitch /// Value range: -8192 to 8192 /// - public int GetConstantPitch3() => Module.GetControllerValue(96, ValueScalingType.Displayed); + public int GetConstantPitch3() => ModuleHandle.GetControllerValue(96, ValueScalingType.Displayed); /// /// Original name: 3 Constant pitch /// Value range: -8192 to 8192 /// - public void SetConstantPitch3(int value) => Module.SetControllerValue(96, value, ValueScalingType.Displayed); + public void SetConstantPitch3(int value) => ModuleHandle.SetControllerValue(96, value, ValueScalingType.Displayed); /// /// Original name: 4 Constant pitch /// Value range: -8192 to 8192 /// - public int GetConstantPitch4() => Module.GetControllerValue(97, ValueScalingType.Displayed); + public int GetConstantPitch4() => ModuleHandle.GetControllerValue(97, ValueScalingType.Displayed); /// /// Original name: 4 Constant pitch /// Value range: -8192 to 8192 /// - public void SetConstantPitch4(int value) => Module.SetControllerValue(97, value, ValueScalingType.Displayed); + public void SetConstantPitch4(int value) => ModuleHandle.SetControllerValue(97, value, ValueScalingType.Displayed); /// /// Original name: 5 Constant pitch /// Value range: -8192 to 8192 /// - public int GetConstantPitch5() => Module.GetControllerValue(98, ValueScalingType.Displayed); + public int GetConstantPitch5() => ModuleHandle.GetControllerValue(98, ValueScalingType.Displayed); /// /// Original name: 5 Constant pitch /// Value range: -8192 to 8192 /// - public void SetConstantPitch5(int value) => Module.SetControllerValue(98, value, ValueScalingType.Displayed); + public void SetConstantPitch5(int value) => ModuleHandle.SetControllerValue(98, value, ValueScalingType.Displayed); /// /// Original name: 1 Decay /// Value range: 0 to 10000 /// - public int GetDecay1() => Module.GetControllerValue(19, ValueScalingType.Displayed); + public int GetDecay1() => ModuleHandle.GetControllerValue(19, ValueScalingType.Displayed); /// /// Original name: 1 Decay /// Value range: 0 to 10000 /// - public void SetDecay1(int value) => Module.SetControllerValue(19, value, ValueScalingType.Displayed); + public void SetDecay1(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingType.Displayed); /// /// Original name: 2 Decay /// Value range: 0 to 10000 /// - public int GetDecay2() => Module.GetControllerValue(20, ValueScalingType.Displayed); + public int GetDecay2() => ModuleHandle.GetControllerValue(20, ValueScalingType.Displayed); /// /// Original name: 2 Decay /// Value range: 0 to 10000 /// - public void SetDecay2(int value) => Module.SetControllerValue(20, value, ValueScalingType.Displayed); + public void SetDecay2(int value) => ModuleHandle.SetControllerValue(20, value, ValueScalingType.Displayed); /// /// Original name: 3 Decay /// Value range: 0 to 10000 /// - public int GetDecay3() => Module.GetControllerValue(21, ValueScalingType.Displayed); + public int GetDecay3() => ModuleHandle.GetControllerValue(21, ValueScalingType.Displayed); /// /// Original name: 3 Decay /// Value range: 0 to 10000 /// - public void SetDecay3(int value) => Module.SetControllerValue(21, value, ValueScalingType.Displayed); + public void SetDecay3(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingType.Displayed); /// /// Original name: 4 Decay /// Value range: 0 to 10000 /// - public int GetDecay4() => Module.GetControllerValue(22, ValueScalingType.Displayed); + public int GetDecay4() => ModuleHandle.GetControllerValue(22, ValueScalingType.Displayed); /// /// Original name: 4 Decay /// Value range: 0 to 10000 /// - public void SetDecay4(int value) => Module.SetControllerValue(22, value, ValueScalingType.Displayed); + public void SetDecay4(int value) => ModuleHandle.SetControllerValue(22, value, ValueScalingType.Displayed); /// /// Original name: 5 Decay /// Value range: 0 to 10000 /// - public int GetDecay5() => Module.GetControllerValue(23, ValueScalingType.Displayed); + public int GetDecay5() => ModuleHandle.GetControllerValue(23, ValueScalingType.Displayed); /// /// Original name: 5 Decay /// Value range: 0 to 10000 /// - public void SetDecay5(int value) => Module.SetControllerValue(23, value, ValueScalingType.Displayed); + public void SetDecay5(int value) => ModuleHandle.SetControllerValue(23, value, ValueScalingType.Displayed); /// /// Original name: 1 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve1() => (ADSRCurveType)Module.GetControllerValue(39, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(39, ValueScalingType.Displayed); /// /// Original name: 1 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve1(ADSRCurveType value) => Module.SetControllerValue(39, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(39, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve2() => (ADSRCurveType)Module.GetControllerValue(40, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(40, ValueScalingType.Displayed); /// /// Original name: 2 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve2(ADSRCurveType value) => Module.SetControllerValue(40, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(40, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve3() => (ADSRCurveType)Module.GetControllerValue(41, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(41, ValueScalingType.Displayed); /// /// Original name: 3 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve3(ADSRCurveType value) => Module.SetControllerValue(41, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(41, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve4() => (ADSRCurveType)Module.GetControllerValue(42, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(42, ValueScalingType.Displayed); /// /// Original name: 4 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve4(ADSRCurveType value) => Module.SetControllerValue(42, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(42, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetDecayCurve5() => (ADSRCurveType)Module.GetControllerValue(43, ValueScalingType.Displayed); + public ADSRCurveType GetDecayCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(43, ValueScalingType.Displayed); /// /// Original name: 5 Decay curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetDecayCurve5(ADSRCurveType value) => Module.SetControllerValue(43, (int)value, ValueScalingType.Displayed); + public void SetDecayCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(43, (int)value, ValueScalingType.Displayed); /// /// Original name: Envelope gain /// Value range: 0 to 8000 /// - public int GetEnvelopeGain() => Module.GetControllerValue(118, ValueScalingType.Displayed); + public int GetEnvelopeGain() => ModuleHandle.GetControllerValue(118, ValueScalingType.Displayed); /// /// Original name: Envelope gain /// Value range: 0 to 8000 /// - public void SetEnvelopeGain(int value) => Module.SetControllerValue(118, value, ValueScalingType.Displayed); + public void SetEnvelopeGain(int value) => ModuleHandle.SetControllerValue(118, value, ValueScalingType.Displayed); /// /// Original name: 1 Envelope scaling per key /// Value range: -128 to 128 /// - public int GetEnvelopeScalingPerKey1() => Module.GetControllerValue(59, ValueScalingType.Displayed); + public int GetEnvelopeScalingPerKey1() => ModuleHandle.GetControllerValue(59, ValueScalingType.Displayed); /// /// Original name: 1 Envelope scaling per key /// Value range: -128 to 128 /// - public void SetEnvelopeScalingPerKey1(int value) => Module.SetControllerValue(59, value, ValueScalingType.Displayed); + public void SetEnvelopeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(59, value, ValueScalingType.Displayed); /// /// Original name: 2 Envelope scaling per key /// Value range: -128 to 128 /// - public int GetEnvelopeScalingPerKey2() => Module.GetControllerValue(60, ValueScalingType.Displayed); + public int GetEnvelopeScalingPerKey2() => ModuleHandle.GetControllerValue(60, ValueScalingType.Displayed); /// /// Original name: 2 Envelope scaling per key /// Value range: -128 to 128 /// - public void SetEnvelopeScalingPerKey2(int value) => Module.SetControllerValue(60, value, ValueScalingType.Displayed); + public void SetEnvelopeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(60, value, ValueScalingType.Displayed); /// /// Original name: 3 Envelope scaling per key /// Value range: -128 to 128 /// - public int GetEnvelopeScalingPerKey3() => Module.GetControllerValue(61, ValueScalingType.Displayed); + public int GetEnvelopeScalingPerKey3() => ModuleHandle.GetControllerValue(61, ValueScalingType.Displayed); /// /// Original name: 3 Envelope scaling per key /// Value range: -128 to 128 /// - public void SetEnvelopeScalingPerKey3(int value) => Module.SetControllerValue(61, value, ValueScalingType.Displayed); + public void SetEnvelopeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(61, value, ValueScalingType.Displayed); /// /// Original name: 4 Envelope scaling per key /// Value range: -128 to 128 /// - public int GetEnvelopeScalingPerKey4() => Module.GetControllerValue(62, ValueScalingType.Displayed); + public int GetEnvelopeScalingPerKey4() => ModuleHandle.GetControllerValue(62, ValueScalingType.Displayed); /// /// Original name: 4 Envelope scaling per key /// Value range: -128 to 128 /// - public void SetEnvelopeScalingPerKey4(int value) => Module.SetControllerValue(62, value, ValueScalingType.Displayed); + public void SetEnvelopeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(62, value, ValueScalingType.Displayed); /// /// Original name: 5 Envelope scaling per key /// Value range: -128 to 128 /// - public int GetEnvelopeScalingPerKey5() => Module.GetControllerValue(63, ValueScalingType.Displayed); + public int GetEnvelopeScalingPerKey5() => ModuleHandle.GetControllerValue(63, ValueScalingType.Displayed); /// /// Original name: 5 Envelope scaling per key /// Value range: -128 to 128 /// - public void SetEnvelopeScalingPerKey5(int value) => Module.SetControllerValue(63, value, ValueScalingType.Displayed); + public void SetEnvelopeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(63, value, ValueScalingType.Displayed); /// /// Original name: 1 Feedback /// Value range: 0 to 32768 /// - public int GetFeedback1() => Module.GetControllerValue(104, ValueScalingType.Displayed); + public int GetFeedback1() => ModuleHandle.GetControllerValue(104, ValueScalingType.Displayed); /// /// Original name: 1 Feedback /// Value range: 0 to 32768 /// - public void SetFeedback1(int value) => Module.SetControllerValue(104, value, ValueScalingType.Displayed); + public void SetFeedback1(int value) => ModuleHandle.SetControllerValue(104, value, ValueScalingType.Displayed); /// /// Original name: 2 Feedback /// Value range: 0 to 32768 /// - public int GetFeedback2() => Module.GetControllerValue(105, ValueScalingType.Displayed); + public int GetFeedback2() => ModuleHandle.GetControllerValue(105, ValueScalingType.Displayed); /// /// Original name: 2 Feedback /// Value range: 0 to 32768 /// - public void SetFeedback2(int value) => Module.SetControllerValue(105, value, ValueScalingType.Displayed); + public void SetFeedback2(int value) => ModuleHandle.SetControllerValue(105, value, ValueScalingType.Displayed); /// /// Original name: 3 Feedback /// Value range: 0 to 32768 /// - public int GetFeedback3() => Module.GetControllerValue(106, ValueScalingType.Displayed); + public int GetFeedback3() => ModuleHandle.GetControllerValue(106, ValueScalingType.Displayed); /// /// Original name: 3 Feedback /// Value range: 0 to 32768 /// - public void SetFeedback3(int value) => Module.SetControllerValue(106, value, ValueScalingType.Displayed); + public void SetFeedback3(int value) => ModuleHandle.SetControllerValue(106, value, ValueScalingType.Displayed); /// /// Original name: 4 Feedback /// Value range: 0 to 32768 /// - public int GetFeedback4() => Module.GetControllerValue(107, ValueScalingType.Displayed); + public int GetFeedback4() => ModuleHandle.GetControllerValue(107, ValueScalingType.Displayed); /// /// Original name: 4 Feedback /// Value range: 0 to 32768 /// - public void SetFeedback4(int value) => Module.SetControllerValue(107, value, ValueScalingType.Displayed); + public void SetFeedback4(int value) => ModuleHandle.SetControllerValue(107, value, ValueScalingType.Displayed); /// /// Original name: 5 Feedback /// Value range: 0 to 32768 /// - public int GetFeedback5() => Module.GetControllerValue(108, ValueScalingType.Displayed); + public int GetFeedback5() => ModuleHandle.GetControllerValue(108, ValueScalingType.Displayed); /// /// Original name: 5 Feedback /// Value range: 0 to 32768 /// - public void SetFeedback5(int value) => Module.SetControllerValue(108, value, ValueScalingType.Displayed); + public void SetFeedback5(int value) => ModuleHandle.SetControllerValue(108, value, ValueScalingType.Displayed); /// /// Original name: 1 Freq multiply /// Value range: 0 to 32000 /// - public int GetFreqMultiply1() => Module.GetControllerValue(89, ValueScalingType.Displayed); + public int GetFreqMultiply1() => ModuleHandle.GetControllerValue(89, ValueScalingType.Displayed); /// /// Original name: 1 Freq multiply /// Value range: 0 to 32000 /// - public void SetFreqMultiply1(int value) => Module.SetControllerValue(89, value, ValueScalingType.Displayed); + public void SetFreqMultiply1(int value) => ModuleHandle.SetControllerValue(89, value, ValueScalingType.Displayed); /// /// Original name: 2 Freq multiply /// Value range: 0 to 32000 /// - public int GetFreqMultiply2() => Module.GetControllerValue(90, ValueScalingType.Displayed); + public int GetFreqMultiply2() => ModuleHandle.GetControllerValue(90, ValueScalingType.Displayed); /// /// Original name: 2 Freq multiply /// Value range: 0 to 32000 /// - public void SetFreqMultiply2(int value) => Module.SetControllerValue(90, value, ValueScalingType.Displayed); + public void SetFreqMultiply2(int value) => ModuleHandle.SetControllerValue(90, value, ValueScalingType.Displayed); /// /// Original name: 3 Freq multiply /// Value range: 0 to 32000 /// - public int GetFreqMultiply3() => Module.GetControllerValue(91, ValueScalingType.Displayed); + public int GetFreqMultiply3() => ModuleHandle.GetControllerValue(91, ValueScalingType.Displayed); /// /// Original name: 3 Freq multiply /// Value range: 0 to 32000 /// - public void SetFreqMultiply3(int value) => Module.SetControllerValue(91, value, ValueScalingType.Displayed); + public void SetFreqMultiply3(int value) => ModuleHandle.SetControllerValue(91, value, ValueScalingType.Displayed); /// /// Original name: 4 Freq multiply /// Value range: 0 to 32000 /// - public int GetFreqMultiply4() => Module.GetControllerValue(92, ValueScalingType.Displayed); + public int GetFreqMultiply4() => ModuleHandle.GetControllerValue(92, ValueScalingType.Displayed); /// /// Original name: 4 Freq multiply /// Value range: 0 to 32000 /// - public void SetFreqMultiply4(int value) => Module.SetControllerValue(92, value, ValueScalingType.Displayed); + public void SetFreqMultiply4(int value) => ModuleHandle.SetControllerValue(92, value, ValueScalingType.Displayed); /// /// Original name: 5 Freq multiply /// Value range: 0 to 32000 /// - public int GetFreqMultiply5() => Module.GetControllerValue(93, ValueScalingType.Displayed); + public int GetFreqMultiply5() => ModuleHandle.GetControllerValue(93, ValueScalingType.Displayed); /// /// Original name: 5 Freq multiply /// Value range: 0 to 32000 /// - public void SetFreqMultiply5(int value) => Module.SetControllerValue(93, value, ValueScalingType.Displayed); + public void SetFreqMultiply5(int value) => ModuleHandle.SetControllerValue(93, value, ValueScalingType.Displayed); /// /// Original name: Input -> Custom waveform /// Possible values: Off, SingleCycle, Continuous /// - public FMXCustomWaveform GetInputCustomWaveform() => (FMXCustomWaveform)Module.GetControllerValue(6, ValueScalingType.Displayed); + public FMXCustomWaveform GetInputCustomWaveform() => (FMXCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Input -> Custom waveform /// Possible values: Off, SingleCycle, Continuous /// - public void SetInputCustomWaveform(FMXCustomWaveform value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetInputCustomWaveform(FMXCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Input -> Operator # /// Value range: 0 to 5 /// - public int GetInputOperatorNum() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetInputOperatorNum() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Input -> Operator # /// Value range: 0 to 5 /// - public void SetInputOperatorNum(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetInputOperatorNum(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: 1 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public FMXModulationType GetModulationType1() => (FMXModulationType)Module.GetControllerValue(109, ValueScalingType.Displayed); + public FMXModulationType GetModulationType1() => (FMXModulationType)ModuleHandle.GetControllerValue(109, ValueScalingType.Displayed); /// /// Original name: 1 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public void SetModulationType1(FMXModulationType value) => Module.SetControllerValue(109, (int)value, ValueScalingType.Displayed); + public void SetModulationType1(FMXModulationType value) => ModuleHandle.SetControllerValue(109, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public FMXModulationType GetModulationType2() => (FMXModulationType)Module.GetControllerValue(110, ValueScalingType.Displayed); + public FMXModulationType GetModulationType2() => (FMXModulationType)ModuleHandle.GetControllerValue(110, ValueScalingType.Displayed); /// /// Original name: 2 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public void SetModulationType2(FMXModulationType value) => Module.SetControllerValue(110, (int)value, ValueScalingType.Displayed); + public void SetModulationType2(FMXModulationType value) => ModuleHandle.SetControllerValue(110, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public FMXModulationType GetModulationType3() => (FMXModulationType)Module.GetControllerValue(111, ValueScalingType.Displayed); + public FMXModulationType GetModulationType3() => (FMXModulationType)ModuleHandle.GetControllerValue(111, ValueScalingType.Displayed); /// /// Original name: 3 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public void SetModulationType3(FMXModulationType value) => Module.SetControllerValue(111, (int)value, ValueScalingType.Displayed); + public void SetModulationType3(FMXModulationType value) => ModuleHandle.SetControllerValue(111, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public FMXModulationType GetModulationType4() => (FMXModulationType)Module.GetControllerValue(112, ValueScalingType.Displayed); + public FMXModulationType GetModulationType4() => (FMXModulationType)ModuleHandle.GetControllerValue(112, ValueScalingType.Displayed); /// /// Original name: 4 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public void SetModulationType4(FMXModulationType value) => Module.SetControllerValue(112, (int)value, ValueScalingType.Displayed); + public void SetModulationType4(FMXModulationType value) => ModuleHandle.SetControllerValue(112, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public FMXModulationType GetModulationType5() => (FMXModulationType)Module.GetControllerValue(113, ValueScalingType.Displayed); + public FMXModulationType GetModulationType5() => (FMXModulationType)ModuleHandle.GetControllerValue(113, ValueScalingType.Displayed); /// /// Original name: 5 Modulation type /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus /// - public void SetModulationType5(FMXModulationType value) => Module.SetControllerValue(113, (int)value, ValueScalingType.Displayed); + public void SetModulationType5(FMXModulationType value) => ModuleHandle.SetControllerValue(113, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Noise /// Value range: 0 to 32768 /// - public int GetNoise1() => Module.GetControllerValue(79, ValueScalingType.Displayed); + public int GetNoise1() => ModuleHandle.GetControllerValue(79, ValueScalingType.Displayed); /// /// Original name: 1 Noise /// Value range: 0 to 32768 /// - public void SetNoise1(int value) => Module.SetControllerValue(79, value, ValueScalingType.Displayed); + public void SetNoise1(int value) => ModuleHandle.SetControllerValue(79, value, ValueScalingType.Displayed); /// /// Original name: 2 Noise /// Value range: 0 to 32768 /// - public int GetNoise2() => Module.GetControllerValue(80, ValueScalingType.Displayed); + public int GetNoise2() => ModuleHandle.GetControllerValue(80, ValueScalingType.Displayed); /// /// Original name: 2 Noise /// Value range: 0 to 32768 /// - public void SetNoise2(int value) => Module.SetControllerValue(80, value, ValueScalingType.Displayed); + public void SetNoise2(int value) => ModuleHandle.SetControllerValue(80, value, ValueScalingType.Displayed); /// /// Original name: 3 Noise /// Value range: 0 to 32768 /// - public int GetNoise3() => Module.GetControllerValue(81, ValueScalingType.Displayed); + public int GetNoise3() => ModuleHandle.GetControllerValue(81, ValueScalingType.Displayed); /// /// Original name: 3 Noise /// Value range: 0 to 32768 /// - public void SetNoise3(int value) => Module.SetControllerValue(81, value, ValueScalingType.Displayed); + public void SetNoise3(int value) => ModuleHandle.SetControllerValue(81, value, ValueScalingType.Displayed); /// /// Original name: 4 Noise /// Value range: 0 to 32768 /// - public int GetNoise4() => Module.GetControllerValue(82, ValueScalingType.Displayed); + public int GetNoise4() => ModuleHandle.GetControllerValue(82, ValueScalingType.Displayed); /// /// Original name: 4 Noise /// Value range: 0 to 32768 /// - public void SetNoise4(int value) => Module.SetControllerValue(82, value, ValueScalingType.Displayed); + public void SetNoise4(int value) => ModuleHandle.SetControllerValue(82, value, ValueScalingType.Displayed); /// /// Original name: 5 Noise /// Value range: 0 to 32768 /// - public int GetNoise5() => Module.GetControllerValue(83, ValueScalingType.Displayed); + public int GetNoise5() => ModuleHandle.GetControllerValue(83, ValueScalingType.Displayed); /// /// Original name: 5 Noise /// Value range: 0 to 32768 /// - public void SetNoise5(int value) => Module.SetControllerValue(83, value, ValueScalingType.Displayed); + public void SetNoise5(int value) => ModuleHandle.SetControllerValue(83, value, ValueScalingType.Displayed); /// /// Original name: Noise filter (32768 - OFF) /// Value range: 0 to 32768 /// - public int GetNoiseFilter() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetNoiseFilter() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Noise filter (32768 - OFF) /// Value range: 0 to 32768 /// - public void SetNoiseFilter(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetNoiseFilter(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: 1 Output mode /// Value range: 0 to 31 /// - public int GetOutputMode1() => Module.GetControllerValue(114, ValueScalingType.Displayed); + public int GetOutputMode1() => ModuleHandle.GetControllerValue(114, ValueScalingType.Displayed); /// /// Original name: 1 Output mode /// Value range: 0 to 31 /// - public void SetOutputMode1(int value) => Module.SetControllerValue(114, value, ValueScalingType.Displayed); + public void SetOutputMode1(int value) => ModuleHandle.SetControllerValue(114, value, ValueScalingType.Displayed); /// /// Original name: 2 Output mode /// Value range: 0 to 15 /// - public int GetOutputMode2() => Module.GetControllerValue(115, ValueScalingType.Displayed); + public int GetOutputMode2() => ModuleHandle.GetControllerValue(115, ValueScalingType.Displayed); /// /// Original name: 2 Output mode /// Value range: 0 to 15 /// - public void SetOutputMode2(int value) => Module.SetControllerValue(115, value, ValueScalingType.Displayed); + public void SetOutputMode2(int value) => ModuleHandle.SetControllerValue(115, value, ValueScalingType.Displayed); /// /// Original name: 3 Output mode /// Value range: 0 to 7 /// - public int GetOutputMode3() => Module.GetControllerValue(116, ValueScalingType.Displayed); + public int GetOutputMode3() => ModuleHandle.GetControllerValue(116, ValueScalingType.Displayed); /// /// Original name: 3 Output mode /// Value range: 0 to 7 /// - public void SetOutputMode3(int value) => Module.SetControllerValue(116, value, ValueScalingType.Displayed); + public void SetOutputMode3(int value) => ModuleHandle.SetControllerValue(116, value, ValueScalingType.Displayed); /// /// Original name: 4 Output mode /// Value range: 0 to 3 /// - public int GetOutputMode4() => Module.GetControllerValue(117, ValueScalingType.Displayed); + public int GetOutputMode4() => ModuleHandle.GetControllerValue(117, ValueScalingType.Displayed); /// /// Original name: 4 Output mode /// Value range: 0 to 3 /// - public void SetOutputMode4(int value) => Module.SetControllerValue(117, value, ValueScalingType.Displayed); + public void SetOutputMode4(int value) => ModuleHandle.SetControllerValue(117, value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: 1 Phase /// Value range: 0 to 32768 /// - public int GetPhase1() => Module.GetControllerValue(84, ValueScalingType.Displayed); + public int GetPhase1() => ModuleHandle.GetControllerValue(84, ValueScalingType.Displayed); /// /// Original name: 1 Phase /// Value range: 0 to 32768 /// - public void SetPhase1(int value) => Module.SetControllerValue(84, value, ValueScalingType.Displayed); + public void SetPhase1(int value) => ModuleHandle.SetControllerValue(84, value, ValueScalingType.Displayed); /// /// Original name: 2 Phase /// Value range: 0 to 32768 /// - public int GetPhase2() => Module.GetControllerValue(85, ValueScalingType.Displayed); + public int GetPhase2() => ModuleHandle.GetControllerValue(85, ValueScalingType.Displayed); /// /// Original name: 2 Phase /// Value range: 0 to 32768 /// - public void SetPhase2(int value) => Module.SetControllerValue(85, value, ValueScalingType.Displayed); + public void SetPhase2(int value) => ModuleHandle.SetControllerValue(85, value, ValueScalingType.Displayed); /// /// Original name: 3 Phase /// Value range: 0 to 32768 /// - public int GetPhase3() => Module.GetControllerValue(86, ValueScalingType.Displayed); + public int GetPhase3() => ModuleHandle.GetControllerValue(86, ValueScalingType.Displayed); /// /// Original name: 3 Phase /// Value range: 0 to 32768 /// - public void SetPhase3(int value) => Module.SetControllerValue(86, value, ValueScalingType.Displayed); + public void SetPhase3(int value) => ModuleHandle.SetControllerValue(86, value, ValueScalingType.Displayed); /// /// Original name: 4 Phase /// Value range: 0 to 32768 /// - public int GetPhase4() => Module.GetControllerValue(87, ValueScalingType.Displayed); + public int GetPhase4() => ModuleHandle.GetControllerValue(87, ValueScalingType.Displayed); /// /// Original name: 4 Phase /// Value range: 0 to 32768 /// - public void SetPhase4(int value) => Module.SetControllerValue(87, value, ValueScalingType.Displayed); + public void SetPhase4(int value) => ModuleHandle.SetControllerValue(87, value, ValueScalingType.Displayed); /// /// Original name: 5 Phase /// Value range: 0 to 32768 /// - public int GetPhase5() => Module.GetControllerValue(88, ValueScalingType.Displayed); + public int GetPhase5() => ModuleHandle.GetControllerValue(88, ValueScalingType.Displayed); /// /// Original name: 5 Phase /// Value range: 0 to 32768 /// - public void SetPhase5(int value) => Module.SetControllerValue(88, value, ValueScalingType.Displayed); + public void SetPhase5(int value) => ModuleHandle.SetControllerValue(88, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public int GetPolyphony() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public void SetPolyphony(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: 1 Release /// Value range: 0 to 10000 /// - public int GetRelease1() => Module.GetControllerValue(29, ValueScalingType.Displayed); + public int GetRelease1() => ModuleHandle.GetControllerValue(29, ValueScalingType.Displayed); /// /// Original name: 1 Release /// Value range: 0 to 10000 /// - public void SetRelease1(int value) => Module.SetControllerValue(29, value, ValueScalingType.Displayed); + public void SetRelease1(int value) => ModuleHandle.SetControllerValue(29, value, ValueScalingType.Displayed); /// /// Original name: 2 Release /// Value range: 0 to 10000 /// - public int GetRelease2() => Module.GetControllerValue(30, ValueScalingType.Displayed); + public int GetRelease2() => ModuleHandle.GetControllerValue(30, ValueScalingType.Displayed); /// /// Original name: 2 Release /// Value range: 0 to 10000 /// - public void SetRelease2(int value) => Module.SetControllerValue(30, value, ValueScalingType.Displayed); + public void SetRelease2(int value) => ModuleHandle.SetControllerValue(30, value, ValueScalingType.Displayed); /// /// Original name: 3 Release /// Value range: 0 to 10000 /// - public int GetRelease3() => Module.GetControllerValue(31, ValueScalingType.Displayed); + public int GetRelease3() => ModuleHandle.GetControllerValue(31, ValueScalingType.Displayed); /// /// Original name: 3 Release /// Value range: 0 to 10000 /// - public void SetRelease3(int value) => Module.SetControllerValue(31, value, ValueScalingType.Displayed); + public void SetRelease3(int value) => ModuleHandle.SetControllerValue(31, value, ValueScalingType.Displayed); /// /// Original name: 4 Release /// Value range: 0 to 10000 /// - public int GetRelease4() => Module.GetControllerValue(32, ValueScalingType.Displayed); + public int GetRelease4() => ModuleHandle.GetControllerValue(32, ValueScalingType.Displayed); /// /// Original name: 4 Release /// Value range: 0 to 10000 /// - public void SetRelease4(int value) => Module.SetControllerValue(32, value, ValueScalingType.Displayed); + public void SetRelease4(int value) => ModuleHandle.SetControllerValue(32, value, ValueScalingType.Displayed); /// /// Original name: 5 Release /// Value range: 0 to 10000 /// - public int GetRelease5() => Module.GetControllerValue(33, ValueScalingType.Displayed); + public int GetRelease5() => ModuleHandle.GetControllerValue(33, ValueScalingType.Displayed); /// /// Original name: 5 Release /// Value range: 0 to 10000 /// - public void SetRelease5(int value) => Module.SetControllerValue(33, value, ValueScalingType.Displayed); + public void SetRelease5(int value) => ModuleHandle.SetControllerValue(33, value, ValueScalingType.Displayed); /// /// Original name: 1 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve1() => (ADSRCurveType)Module.GetControllerValue(44, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(44, ValueScalingType.Displayed); /// /// Original name: 1 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve1(ADSRCurveType value) => Module.SetControllerValue(44, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(44, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve2() => (ADSRCurveType)Module.GetControllerValue(45, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(45, ValueScalingType.Displayed); /// /// Original name: 2 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve2(ADSRCurveType value) => Module.SetControllerValue(45, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(45, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve3() => (ADSRCurveType)Module.GetControllerValue(46, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(46, ValueScalingType.Displayed); /// /// Original name: 3 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve3(ADSRCurveType value) => Module.SetControllerValue(46, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(46, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve4() => (ADSRCurveType)Module.GetControllerValue(47, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(47, ValueScalingType.Displayed); /// /// Original name: 4 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve4(ADSRCurveType value) => Module.SetControllerValue(47, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(47, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public ADSRCurveType GetReleaseCurve5() => (ADSRCurveType)Module.GetControllerValue(48, ValueScalingType.Displayed); + public ADSRCurveType GetReleaseCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(48, ValueScalingType.Displayed); /// /// Original name: 5 Release curve /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 /// - public void SetReleaseCurve5(ADSRCurveType value) => Module.SetControllerValue(48, (int)value, ValueScalingType.Displayed); + public void SetReleaseCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(48, (int)value, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native /// - public FMXSampleRate GetSampleRate() => (FMXSampleRate)Module.GetControllerValue(2, ValueScalingType.Displayed); + public FMXSampleRate GetSampleRate() => (FMXSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native /// - public void SetSampleRate(FMXSampleRate value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetSampleRate(FMXSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Self-modulation /// Value range: 0 to 32768 /// - public int GetSelfModulation1() => Module.GetControllerValue(99, ValueScalingType.Displayed); + public int GetSelfModulation1() => ModuleHandle.GetControllerValue(99, ValueScalingType.Displayed); /// /// Original name: 1 Self-modulation /// Value range: 0 to 32768 /// - public void SetSelfModulation1(int value) => Module.SetControllerValue(99, value, ValueScalingType.Displayed); + public void SetSelfModulation1(int value) => ModuleHandle.SetControllerValue(99, value, ValueScalingType.Displayed); /// /// Original name: 2 Self-modulation /// Value range: 0 to 32768 /// - public int GetSelfModulation2() => Module.GetControllerValue(100, ValueScalingType.Displayed); + public int GetSelfModulation2() => ModuleHandle.GetControllerValue(100, ValueScalingType.Displayed); /// /// Original name: 2 Self-modulation /// Value range: 0 to 32768 /// - public void SetSelfModulation2(int value) => Module.SetControllerValue(100, value, ValueScalingType.Displayed); + public void SetSelfModulation2(int value) => ModuleHandle.SetControllerValue(100, value, ValueScalingType.Displayed); /// /// Original name: 3 Self-modulation /// Value range: 0 to 32768 /// - public int GetSelfModulation3() => Module.GetControllerValue(101, ValueScalingType.Displayed); + public int GetSelfModulation3() => ModuleHandle.GetControllerValue(101, ValueScalingType.Displayed); /// /// Original name: 3 Self-modulation /// Value range: 0 to 32768 /// - public void SetSelfModulation3(int value) => Module.SetControllerValue(101, value, ValueScalingType.Displayed); + public void SetSelfModulation3(int value) => ModuleHandle.SetControllerValue(101, value, ValueScalingType.Displayed); /// /// Original name: 4 Self-modulation /// Value range: 0 to 32768 /// - public int GetSelfModulation4() => Module.GetControllerValue(102, ValueScalingType.Displayed); + public int GetSelfModulation4() => ModuleHandle.GetControllerValue(102, ValueScalingType.Displayed); /// /// Original name: 4 Self-modulation /// Value range: 0 to 32768 /// - public void SetSelfModulation4(int value) => Module.SetControllerValue(102, value, ValueScalingType.Displayed); + public void SetSelfModulation4(int value) => ModuleHandle.SetControllerValue(102, value, ValueScalingType.Displayed); /// /// Original name: 5 Self-modulation /// Value range: 0 to 32768 /// - public int GetSelfModulation5() => Module.GetControllerValue(103, ValueScalingType.Displayed); + public int GetSelfModulation5() => ModuleHandle.GetControllerValue(103, ValueScalingType.Displayed); /// /// Original name: 5 Self-modulation /// Value range: 0 to 32768 /// - public void SetSelfModulation5(int value) => Module.SetControllerValue(103, value, ValueScalingType.Displayed); + public void SetSelfModulation5(int value) => ModuleHandle.SetControllerValue(103, value, ValueScalingType.Displayed); /// /// Original name: 1 Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain1() => (ADSRSustainMode)Module.GetControllerValue(49, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain1() => (ADSRSustainMode)ModuleHandle.GetControllerValue(49, ValueScalingType.Displayed); /// /// Original name: 1 Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain1(ADSRSustainMode value) => Module.SetControllerValue(49, (int)value, ValueScalingType.Displayed); + public void SetSustain1(ADSRSustainMode value) => ModuleHandle.SetControllerValue(49, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain2() => (ADSRSustainMode)Module.GetControllerValue(50, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain2() => (ADSRSustainMode)ModuleHandle.GetControllerValue(50, ValueScalingType.Displayed); /// /// Original name: 2 Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain2(ADSRSustainMode value) => Module.SetControllerValue(50, (int)value, ValueScalingType.Displayed); + public void SetSustain2(ADSRSustainMode value) => ModuleHandle.SetControllerValue(50, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain3() => (ADSRSustainMode)Module.GetControllerValue(51, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain3() => (ADSRSustainMode)ModuleHandle.GetControllerValue(51, ValueScalingType.Displayed); /// /// Original name: 3 Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain3(ADSRSustainMode value) => Module.SetControllerValue(51, (int)value, ValueScalingType.Displayed); + public void SetSustain3(ADSRSustainMode value) => ModuleHandle.SetControllerValue(51, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain4() => (ADSRSustainMode)Module.GetControllerValue(52, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain4() => (ADSRSustainMode)ModuleHandle.GetControllerValue(52, ValueScalingType.Displayed); /// /// Original name: 4 Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain4(ADSRSustainMode value) => Module.SetControllerValue(52, (int)value, ValueScalingType.Displayed); + public void SetSustain4(ADSRSustainMode value) => ModuleHandle.SetControllerValue(52, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Sustain /// Possible values: Off, On, Repeat /// - public ADSRSustainMode GetSustain5() => (ADSRSustainMode)Module.GetControllerValue(53, ValueScalingType.Displayed); + public ADSRSustainMode GetSustain5() => (ADSRSustainMode)ModuleHandle.GetControllerValue(53, ValueScalingType.Displayed); /// /// Original name: 5 Sustain /// Possible values: Off, On, Repeat /// - public void SetSustain5(ADSRSustainMode value) => Module.SetControllerValue(53, (int)value, ValueScalingType.Displayed); + public void SetSustain5(ADSRSustainMode value) => ModuleHandle.SetControllerValue(53, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel1() => Module.GetControllerValue(24, ValueScalingType.Displayed); + public int GetSustainLevel1() => ModuleHandle.GetControllerValue(24, ValueScalingType.Displayed); /// /// Original name: 1 Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel1(int value) => Module.SetControllerValue(24, value, ValueScalingType.Displayed); + public void SetSustainLevel1(int value) => ModuleHandle.SetControllerValue(24, value, ValueScalingType.Displayed); /// /// Original name: 2 Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel2() => Module.GetControllerValue(25, ValueScalingType.Displayed); + public int GetSustainLevel2() => ModuleHandle.GetControllerValue(25, ValueScalingType.Displayed); /// /// Original name: 2 Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel2(int value) => Module.SetControllerValue(25, value, ValueScalingType.Displayed); + public void SetSustainLevel2(int value) => ModuleHandle.SetControllerValue(25, value, ValueScalingType.Displayed); /// /// Original name: 3 Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel3() => Module.GetControllerValue(26, ValueScalingType.Displayed); + public int GetSustainLevel3() => ModuleHandle.GetControllerValue(26, ValueScalingType.Displayed); /// /// Original name: 3 Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel3(int value) => Module.SetControllerValue(26, value, ValueScalingType.Displayed); + public void SetSustainLevel3(int value) => ModuleHandle.SetControllerValue(26, value, ValueScalingType.Displayed); /// /// Original name: 4 Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel4() => Module.GetControllerValue(27, ValueScalingType.Displayed); + public int GetSustainLevel4() => ModuleHandle.GetControllerValue(27, ValueScalingType.Displayed); /// /// Original name: 4 Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel4(int value) => Module.SetControllerValue(27, value, ValueScalingType.Displayed); + public void SetSustainLevel4(int value) => ModuleHandle.SetControllerValue(27, value, ValueScalingType.Displayed); /// /// Original name: 5 Sustain level /// Value range: 0 to 32768 /// - public int GetSustainLevel5() => Module.GetControllerValue(28, ValueScalingType.Displayed); + public int GetSustainLevel5() => ModuleHandle.GetControllerValue(28, ValueScalingType.Displayed); /// /// Original name: 5 Sustain level /// Value range: 0 to 32768 /// - public void SetSustainLevel5(int value) => Module.SetControllerValue(28, value, ValueScalingType.Displayed); + public void SetSustainLevel5(int value) => ModuleHandle.SetControllerValue(28, value, ValueScalingType.Displayed); /// /// Original name: 1 Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal1() => (Toggle)Module.GetControllerValue(54, ValueScalingType.Displayed); + public Toggle GetSustainPedal1() => (Toggle)ModuleHandle.GetControllerValue(54, ValueScalingType.Displayed); /// /// Original name: 1 Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal1(Toggle value) => Module.SetControllerValue(54, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal1(Toggle value) => ModuleHandle.SetControllerValue(54, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal2() => (Toggle)Module.GetControllerValue(55, ValueScalingType.Displayed); + public Toggle GetSustainPedal2() => (Toggle)ModuleHandle.GetControllerValue(55, ValueScalingType.Displayed); /// /// Original name: 2 Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal2(Toggle value) => Module.SetControllerValue(55, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal2(Toggle value) => ModuleHandle.SetControllerValue(55, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal3() => (Toggle)Module.GetControllerValue(56, ValueScalingType.Displayed); + public Toggle GetSustainPedal3() => (Toggle)ModuleHandle.GetControllerValue(56, ValueScalingType.Displayed); /// /// Original name: 3 Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal3(Toggle value) => Module.SetControllerValue(56, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal3(Toggle value) => ModuleHandle.SetControllerValue(56, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal4() => (Toggle)Module.GetControllerValue(57, ValueScalingType.Displayed); + public Toggle GetSustainPedal4() => (Toggle)ModuleHandle.GetControllerValue(57, ValueScalingType.Displayed); /// /// Original name: 4 Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal4(Toggle value) => Module.SetControllerValue(57, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal4(Toggle value) => ModuleHandle.SetControllerValue(57, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Sustain pedal /// Possible values: Off, On /// - public Toggle GetSustainPedal5() => (Toggle)Module.GetControllerValue(58, ValueScalingType.Displayed); + public Toggle GetSustainPedal5() => (Toggle)ModuleHandle.GetControllerValue(58, ValueScalingType.Displayed); /// /// Original name: 5 Sustain pedal /// Possible values: Off, On /// - public void SetSustainPedal5(Toggle value) => Module.SetControllerValue(58, (int)value, ValueScalingType.Displayed); + public void SetSustainPedal5(Toggle value) => ModuleHandle.SetControllerValue(58, (int)value, ValueScalingType.Displayed); /// /// Original name: 1 Velocity sensitivity /// Value range: -128 to 128 /// - public int GetVelocitySensitivity1() => Module.GetControllerValue(69, ValueScalingType.Displayed); + public int GetVelocitySensitivity1() => ModuleHandle.GetControllerValue(69, ValueScalingType.Displayed); /// /// Original name: 1 Velocity sensitivity /// Value range: -128 to 128 /// - public void SetVelocitySensitivity1(int value) => Module.SetControllerValue(69, value, ValueScalingType.Displayed); + public void SetVelocitySensitivity1(int value) => ModuleHandle.SetControllerValue(69, value, ValueScalingType.Displayed); /// /// Original name: 2 Velocity sensitivity /// Value range: -128 to 128 /// - public int GetVelocitySensitivity2() => Module.GetControllerValue(70, ValueScalingType.Displayed); + public int GetVelocitySensitivity2() => ModuleHandle.GetControllerValue(70, ValueScalingType.Displayed); /// /// Original name: 2 Velocity sensitivity /// Value range: -128 to 128 /// - public void SetVelocitySensitivity2(int value) => Module.SetControllerValue(70, value, ValueScalingType.Displayed); + public void SetVelocitySensitivity2(int value) => ModuleHandle.SetControllerValue(70, value, ValueScalingType.Displayed); /// /// Original name: 3 Velocity sensitivity /// Value range: -128 to 128 /// - public int GetVelocitySensitivity3() => Module.GetControllerValue(71, ValueScalingType.Displayed); + public int GetVelocitySensitivity3() => ModuleHandle.GetControllerValue(71, ValueScalingType.Displayed); /// /// Original name: 3 Velocity sensitivity /// Value range: -128 to 128 /// - public void SetVelocitySensitivity3(int value) => Module.SetControllerValue(71, value, ValueScalingType.Displayed); + public void SetVelocitySensitivity3(int value) => ModuleHandle.SetControllerValue(71, value, ValueScalingType.Displayed); /// /// Original name: 4 Velocity sensitivity /// Value range: -128 to 128 /// - public int GetVelocitySensitivity4() => Module.GetControllerValue(72, ValueScalingType.Displayed); + public int GetVelocitySensitivity4() => ModuleHandle.GetControllerValue(72, ValueScalingType.Displayed); /// /// Original name: 4 Velocity sensitivity /// Value range: -128 to 128 /// - public void SetVelocitySensitivity4(int value) => Module.SetControllerValue(72, value, ValueScalingType.Displayed); + public void SetVelocitySensitivity4(int value) => ModuleHandle.SetControllerValue(72, value, ValueScalingType.Displayed); /// /// Original name: 5 Velocity sensitivity /// Value range: -128 to 128 /// - public int GetVelocitySensitivity5() => Module.GetControllerValue(73, ValueScalingType.Displayed); + public int GetVelocitySensitivity5() => ModuleHandle.GetControllerValue(73, ValueScalingType.Displayed); /// /// Original name: 5 Velocity sensitivity /// Value range: -128 to 128 /// - public void SetVelocitySensitivity5(int value) => Module.SetControllerValue(73, value, ValueScalingType.Displayed); + public void SetVelocitySensitivity5(int value) => ModuleHandle.SetControllerValue(73, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 32768 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: 1 Volume /// Value range: 0 to 32768 /// - public int GetVolume1() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetVolume1() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: 1 Volume /// Value range: 0 to 32768 /// - public void SetVolume1(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetVolume1(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: 2 Volume /// Value range: 0 to 32768 /// - public int GetVolume2() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetVolume2() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: 2 Volume /// Value range: 0 to 32768 /// - public void SetVolume2(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetVolume2(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: 3 Volume /// Value range: 0 to 32768 /// - public int GetVolume3() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetVolume3() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: 3 Volume /// Value range: 0 to 32768 /// - public void SetVolume3(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetVolume3(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: 4 Volume /// Value range: 0 to 32768 /// - public int GetVolume4() => Module.GetControllerValue(12, ValueScalingType.Displayed); + public int GetVolume4() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: 4 Volume /// Value range: 0 to 32768 /// - public void SetVolume4(int value) => Module.SetControllerValue(12, value, ValueScalingType.Displayed); + public void SetVolume4(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); /// /// Original name: 5 Volume /// Value range: 0 to 32768 /// - public int GetVolume5() => Module.GetControllerValue(13, ValueScalingType.Displayed); + public int GetVolume5() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: 5 Volume /// Value range: 0 to 32768 /// - public void SetVolume5(int value) => Module.SetControllerValue(13, value, ValueScalingType.Displayed); + public void SetVolume5(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); /// /// Original name: 1 Volume scaling per key /// Value range: -128 to 128 /// - public int GetVolumeScalingPerKey1() => Module.GetControllerValue(64, ValueScalingType.Displayed); + public int GetVolumeScalingPerKey1() => ModuleHandle.GetControllerValue(64, ValueScalingType.Displayed); /// /// Original name: 1 Volume scaling per key /// Value range: -128 to 128 /// - public void SetVolumeScalingPerKey1(int value) => Module.SetControllerValue(64, value, ValueScalingType.Displayed); + public void SetVolumeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(64, value, ValueScalingType.Displayed); /// /// Original name: 2 Volume scaling per key /// Value range: -128 to 128 /// - public int GetVolumeScalingPerKey2() => Module.GetControllerValue(65, ValueScalingType.Displayed); + public int GetVolumeScalingPerKey2() => ModuleHandle.GetControllerValue(65, ValueScalingType.Displayed); /// /// Original name: 2 Volume scaling per key /// Value range: -128 to 128 /// - public void SetVolumeScalingPerKey2(int value) => Module.SetControllerValue(65, value, ValueScalingType.Displayed); + public void SetVolumeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(65, value, ValueScalingType.Displayed); /// /// Original name: 3 Volume scaling per key /// Value range: -128 to 128 /// - public int GetVolumeScalingPerKey3() => Module.GetControllerValue(66, ValueScalingType.Displayed); + public int GetVolumeScalingPerKey3() => ModuleHandle.GetControllerValue(66, ValueScalingType.Displayed); /// /// Original name: 3 Volume scaling per key /// Value range: -128 to 128 /// - public void SetVolumeScalingPerKey3(int value) => Module.SetControllerValue(66, value, ValueScalingType.Displayed); + public void SetVolumeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(66, value, ValueScalingType.Displayed); /// /// Original name: 4 Volume scaling per key /// Value range: -128 to 128 /// - public int GetVolumeScalingPerKey4() => Module.GetControllerValue(67, ValueScalingType.Displayed); + public int GetVolumeScalingPerKey4() => ModuleHandle.GetControllerValue(67, ValueScalingType.Displayed); /// /// Original name: 4 Volume scaling per key /// Value range: -128 to 128 /// - public void SetVolumeScalingPerKey4(int value) => Module.SetControllerValue(67, value, ValueScalingType.Displayed); + public void SetVolumeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(67, value, ValueScalingType.Displayed); /// /// Original name: 5 Volume scaling per key /// Value range: -128 to 128 /// - public int GetVolumeScalingPerKey5() => Module.GetControllerValue(68, ValueScalingType.Displayed); + public int GetVolumeScalingPerKey5() => ModuleHandle.GetControllerValue(68, ValueScalingType.Displayed); /// /// Original name: 5 Volume scaling per key /// Value range: -128 to 128 /// - public void SetVolumeScalingPerKey5(int value) => Module.SetControllerValue(68, value, ValueScalingType.Displayed); + public void SetVolumeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(68, value, ValueScalingType.Displayed); /// /// Original name: 1 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public FMXWaveform GetWaveform1() => (FMXWaveform)Module.GetControllerValue(74, ValueScalingType.Displayed); + public FMXWaveform GetWaveform1() => (FMXWaveform)ModuleHandle.GetControllerValue(74, ValueScalingType.Displayed); /// /// Original name: 1 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public void SetWaveform1(FMXWaveform value) => Module.SetControllerValue(74, (int)value, ValueScalingType.Displayed); + public void SetWaveform1(FMXWaveform value) => ModuleHandle.SetControllerValue(74, (int)value, ValueScalingType.Displayed); /// /// Original name: 2 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public FMXWaveform GetWaveform2() => (FMXWaveform)Module.GetControllerValue(75, ValueScalingType.Displayed); + public FMXWaveform GetWaveform2() => (FMXWaveform)ModuleHandle.GetControllerValue(75, ValueScalingType.Displayed); /// /// Original name: 2 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public void SetWaveform2(FMXWaveform value) => Module.SetControllerValue(75, (int)value, ValueScalingType.Displayed); + public void SetWaveform2(FMXWaveform value) => ModuleHandle.SetControllerValue(75, (int)value, ValueScalingType.Displayed); /// /// Original name: 3 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public FMXWaveform GetWaveform3() => (FMXWaveform)Module.GetControllerValue(76, ValueScalingType.Displayed); + public FMXWaveform GetWaveform3() => (FMXWaveform)ModuleHandle.GetControllerValue(76, ValueScalingType.Displayed); /// /// Original name: 3 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public void SetWaveform3(FMXWaveform value) => Module.SetControllerValue(76, (int)value, ValueScalingType.Displayed); + public void SetWaveform3(FMXWaveform value) => ModuleHandle.SetControllerValue(76, (int)value, ValueScalingType.Displayed); /// /// Original name: 4 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public FMXWaveform GetWaveform4() => (FMXWaveform)Module.GetControllerValue(77, ValueScalingType.Displayed); + public FMXWaveform GetWaveform4() => (FMXWaveform)ModuleHandle.GetControllerValue(77, ValueScalingType.Displayed); /// /// Original name: 4 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public void SetWaveform4(FMXWaveform value) => Module.SetControllerValue(77, (int)value, ValueScalingType.Displayed); + public void SetWaveform4(FMXWaveform value) => ModuleHandle.SetControllerValue(77, (int)value, ValueScalingType.Displayed); /// /// Original name: 5 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public FMXWaveform GetWaveform5() => (FMXWaveform)Module.GetControllerValue(78, ValueScalingType.Displayed); + public FMXWaveform GetWaveform5() => (FMXWaveform)ModuleHandle.GetControllerValue(78, ValueScalingType.Displayed); /// /// Original name: 5 Waveform /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 /// - public void SetWaveform5(FMXWaveform value) => Module.SetControllerValue(78, (int)value, ValueScalingType.Displayed); + public void SetWaveform5(FMXWaveform value) => ModuleHandle.SetControllerValue(78, (int)value, ValueScalingType.Displayed); #endregion controllers @@ -5197,7 +5197,7 @@ public void ReadCustomWaveform(float[] buffer) if (buffer.Length < 256) throw new System.ArgumentException("Buffer must be at least of size 256"); - Module.ReadCurve(0, buffer); + ModuleHandle.ReadCurve(0, buffer); } /// @@ -5210,7 +5210,7 @@ public void WriteCustomWaveform(float[] buffer) if (buffer.Length < 256) throw new System.ArgumentException("Buffer must be at least of size 256"); - Module.WriteCurve(0, buffer); + ModuleHandle.WriteCurve(0, buffer); } #endregion curves @@ -5219,11 +5219,11 @@ public void WriteCustomWaveform(float[] buffer) public struct GeneratorModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public GeneratorModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5233,132 +5233,132 @@ public GeneratorModuleHandle(ModuleHandle module) /// Original name: Attack /// Value range: 0 to 512 /// - public int GetAttack() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 512 /// - public void SetAttack(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 1022 /// - public int GetDutyCycle() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetDutyCycle() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 1022 /// - public void SetDutyCycle(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Freq.modulation by input /// Value range: 0 to 256 /// - public int GetFreqModulationByInput() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetFreqModulationByInput() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Freq.modulation by input /// Value range: 0 to 256 /// - public void SetFreqModulationByInput(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetFreqModulationByInput(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Stereo, Mono /// - public Channels GetMode() => (Channels)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Stereo, Mono /// - public void SetMode(Channels value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 16 /// - public int GetPolyphony() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 16 /// - public void SetPolyphony(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public int GetRelease() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public void SetRelease(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public Toggle GetSustain() => (Toggle)Module.GetControllerValue(7, ValueScalingType.Displayed); + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public void SetSustain(Toggle value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin /// - public GeneratorWaveform GetWaveform() => (GeneratorWaveform)Module.GetControllerValue(1, ValueScalingType.Displayed); + public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin /// - public void SetWaveform(GeneratorWaveform value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); #endregion controllers } public struct GlideModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public GlideModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5368,96 +5368,96 @@ public GlideModuleHandle(ModuleHandle module) /// Original name: Pitch /// Value range: -600 to 600 /// - public int GetPitch() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetPitch() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Pitch /// Value range: -600 to 600 /// - public void SetPitch(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetPitch(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Pitch scale /// Value range: 0 to 200 /// - public int GetPitchScale() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetPitchScale() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Pitch scale /// Value range: 0 to 200 /// - public void SetPitchScale(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Possible values: Off, On /// - public Toggle GetPolyphony() => (Toggle)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Possible values: Off, On /// - public void SetPolyphony(Toggle value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Reset /// Possible values: Off, On /// - public Toggle GetReset() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Reset /// Possible values: Off, On /// - public void SetReset(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Reset on 1st note /// Possible values: Off, On /// - public Toggle GetResetOnFirstNote() => (Toggle)Module.GetControllerValue(2, ValueScalingType.Displayed); + public Toggle GetResetOnFirstNote() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Reset on 1st note /// Possible values: Off, On /// - public void SetResetOnFirstNote(Toggle value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetResetOnFirstNote(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public int GetResponse() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetResponse() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public void SetResponse(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetResponse(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public int GetSampleRate() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetSampleRate() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public void SetSampleRate(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct GPIOModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public GPIOModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5467,96 +5467,96 @@ public GPIOModuleHandle(ModuleHandle module) /// Original name: In /// Possible values: Off, On /// - public Toggle GetIn() => (Toggle)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: In /// Possible values: Off, On /// - public void SetIn(Toggle value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: In amplitude /// Value range: 0 to 100 /// - public int GetInAmplitude() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetInAmplitude() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: In amplitude /// Value range: 0 to 100 /// - public void SetInAmplitude(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetInAmplitude(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: In note /// Value range: 0 to 128 /// - public int GetInNote() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetInNote() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: In note /// Value range: 0 to 128 /// - public void SetInNote(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetInNote(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: In pin /// Value range: 0 to 256 /// - public int GetInPin() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetInPin() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: In pin /// Value range: 0 to 256 /// - public void SetInPin(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetInPin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Out /// Possible values: Off, On /// - public Toggle GetOut() => (Toggle)Module.GetControllerValue(0, ValueScalingType.Displayed); + public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Out /// Possible values: Off, On /// - public void SetOut(Toggle value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); /// /// Original name: Out pin /// Value range: 0 to 256 /// - public int GetOutPin() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetOutPin() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Out pin /// Value range: 0 to 256 /// - public void SetOutPin(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetOutPin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Out threshold /// Value range: 0 to 100 /// - public int GetOutThreshold() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetOutThreshold() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Out threshold /// Value range: 0 to 100 /// - public void SetOutThreshold(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetOutThreshold(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); #endregion controllers } public struct InputModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public InputModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5566,36 +5566,36 @@ public InputModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Mono, Stereo /// - public ChannelsInverted GetChannels() => (ChannelsInverted)Module.GetControllerValue(1, ValueScalingType.Displayed); + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public void SetChannels(ChannelsInverted value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct KickerModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public KickerModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5605,120 +5605,120 @@ public KickerModuleHandle(ModuleHandle module) /// Original name: Acceleration /// Value range: 0 to 1024 /// - public int GetAcceleration() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetAcceleration() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Acceleration /// Value range: 0 to 1024 /// - public void SetAcceleration(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetAcceleration(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 512 /// - public int GetAttack() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 512 /// - public void SetAttack(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Boost /// Value range: 0 to 1024 /// - public int GetBoost() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetBoost() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Boost /// Value range: 0 to 1024 /// - public void SetBoost(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetBoost(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: No click /// Possible values: Off, On /// - public Toggle GetNoClick() => (Toggle)Module.GetControllerValue(8, ValueScalingType.Displayed); + public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: No click /// Possible values: Off, On /// - public void SetNoClick(Toggle value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 4 /// - public int GetPolyphony() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 4 /// - public void SetPolyphony(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public int GetRelease() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public void SetRelease(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Square, Sin /// - public KickerWaveform GetWaveform() => (KickerWaveform)Module.GetControllerValue(1, ValueScalingType.Displayed); + public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Triangle, Square, Sin /// - public void SetWaveform(KickerWaveform value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); #endregion controllers } public struct LFOModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public LFOModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5728,168 +5728,168 @@ public LFOModuleHandle(ModuleHandle module) /// Original name: Amplitude /// Value range: 0 to 256 /// - public int GetAmplitude() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetAmplitude() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Amplitude /// Value range: 0 to 256 /// - public void SetAmplitude(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 256 /// - public int GetDutyCycle() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetDutyCycle() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Duty cycle /// Value range: 0 to 256 /// - public void SetDutyCycle(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 1 to 256 /// - public int GetFreq() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetFreq() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 1 to 256 /// - public void SetFreq(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetFreq(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Freq scale /// Value range: 0 to 200 /// - public int GetFreqScale() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetFreqScale() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Freq scale /// Value range: 0 to 200 /// - public void SetFreqScale(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Frequency unit /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public LFOFrequencyUnit GetFrequencyUnit() => (LFOFrequencyUnit)Module.GetControllerValue(7, ValueScalingType.Displayed); + public LFOFrequencyUnit GetFrequencyUnit() => (LFOFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Frequency unit /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetFrequencyUnit(LFOFrequencyUnit value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetFrequencyUnit(LFOFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Generator /// Possible values: Off, On /// - public Toggle GetGenerator() => (Toggle)Module.GetControllerValue(9, ValueScalingType.Displayed); + public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Generator /// Possible values: Off, On /// - public void SetGenerator(Toggle value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: Amplitude, Panning /// - public LFOType GetLfoType() => (LFOType)Module.GetControllerValue(1, ValueScalingType.Displayed); + public LFOType GetLfoType() => (LFOType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Type /// Possible values: Amplitude, Panning /// - public void SetLfoType(LFOType value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetLfoType(LFOType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Set phase /// Value range: 0 to 256 /// - public int GetSetPhase() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetSetPhase() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Set phase /// Value range: 0 to 256 /// - public void SetSetPhase(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Sine quality /// Possible values: Auto, Low, Middle, High /// - public LFOSineQuality GetSineQuality() => (LFOSineQuality)Module.GetControllerValue(12, ValueScalingType.Displayed); + public LFOSineQuality GetSineQuality() => (LFOSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: Sine quality /// Possible values: Auto, Low, Middle, High /// - public void SetSineQuality(LFOSineQuality value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetSineQuality(LFOSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: Smooth transitions /// Possible values: Off, Waveform /// - public LFOSmoothTransitions GetSmoothTransitions() => (LFOSmoothTransitions)Module.GetControllerValue(11, ValueScalingType.Displayed); + public LFOSmoothTransitions GetSmoothTransitions() => (LFOSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Smooth transitions /// Possible values: Off, Waveform /// - public void SetSmoothTransitions(LFOSmoothTransitions value) => Module.SetControllerValue(11, (int)value, ValueScalingType.Displayed); + public void SetSmoothTransitions(LFOSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated /// - public LFOWaveform GetWaveform() => (LFOWaveform)Module.GetControllerValue(4, ValueScalingType.Displayed); + public LFOWaveform GetWaveform() => (LFOWaveform)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Waveform /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated /// - public void SetWaveform(LFOWaveform value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetWaveform(LFOWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); #endregion controllers } public struct LoopModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public LoopModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -5899,120 +5899,120 @@ public LoopModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Mono, Stereo /// - public ChannelsInverted GetChannels() => (ChannelsInverted)Module.GetControllerValue(2, ValueScalingType.Displayed); + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public void SetChannels(ChannelsInverted value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Length /// Value range: 0 to 256 /// - public int GetDelay() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetDelay() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Length /// Value range: 0 to 256 /// - public void SetDelay(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetDelay(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Length unit /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz /// - public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)Module.GetControllerValue(5, ValueScalingType.Displayed); + public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Length unit /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz /// - public void SetLengthUnit(LoopTimeUnit value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Max buffer size /// Value range: 1 to 240 /// Max buffer size in seconds /// - public int GetMaxBufferSize() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetMaxBufferSize() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Max buffer size /// Value range: 1 to 240 /// Max buffer size in seconds /// - public void SetMaxBufferSize(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetMaxBufferSize(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Normal, PingPong /// - public LoopMode GetMode() => (LoopMode)Module.GetControllerValue(4, ValueScalingType.Displayed); + public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: Normal, PingPong /// - public void SetMode(LoopMode value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); /// /// Original name: On NoteON /// Possible values: Restart, RestartCurrentIteration /// - public LoopOnNoteOn GetOnNoteOn() => (LoopOnNoteOn)Module.GetControllerValue(7, ValueScalingType.Displayed); + public LoopOnNoteOn GetOnNoteOn() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: On NoteON /// Possible values: Restart, RestartCurrentIteration /// - public void SetOnNoteOn(LoopOnNoteOn value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetOnNoteOn(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Repeat (128=endless) /// Value range: 0 to 128 /// - public int GetRepeats() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetRepeats() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Repeat (128=endless) /// Value range: 0 to 128 /// - public void SetRepeats(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetRepeats(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct MetaModuleModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public MetaModuleModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } #region module type-specific methods /// - public void LoadFile(string path) => Module.LoadIntoMetaModule(path); + public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path); /// - public void LoadFile(byte[] data) => Module.LoadIntoMetaModule(data); + public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); #endregion module type-specific methods @@ -6022,72 +6022,72 @@ public MetaModuleModuleHandle(ModuleHandle module) /// Original name: BPM (Beats Per Minute) /// Value range: 1 to 1000 /// - public int GetBPM() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetBPM() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: BPM (Beats Per Minute) /// Value range: 1 to 1000 /// - public void SetBPM(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetBPM(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Input module /// Value range: 1 to 256 /// - public int GetInputModule() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetInputModule() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Input module /// Value range: 1 to 256 /// - public void SetInputModule(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetInputModule(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Play patterns /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless /// - public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)Module.GetControllerValue(2, ValueScalingType.Displayed); + public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Play patterns /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless /// - public void SetPlayPatterns(MetaModulePatternMode value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: TPL (Ticks Per Line) /// Value range: 1 to 31 /// - public int GetTPL() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetTPL() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: TPL (Ticks Per Line) /// Value range: 1 to 31 /// - public void SetTPL(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetTPL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 1024 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct ModulatorModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public ModulatorModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6097,48 +6097,48 @@ public ModulatorModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(2, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Modulation type /// Possible values: Amplitude, Phase, PhaseAbsolute /// - public ModulationType GetModulationType() => (ModulationType)Module.GetControllerValue(1, ValueScalingType.Displayed); + public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Modulation type /// Possible values: Amplitude, Phase, PhaseAbsolute /// - public void SetModulationType(ModulationType value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct MultiControlModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public MultiControlModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6148,73 +6148,73 @@ public MultiControlModuleHandle(ModuleHandle module) /// Original name: Gain /// Value range: 0 to 1024 /// - public int GetGain() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetGain() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 1024 /// - public void SetGain(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetGain(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: OUT offset /// Value range: -16384 to 16384 /// - public int GetOUTOffset() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetOUTOffset() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: OUT offset /// Value range: -16384 to 16384 /// - public void SetOUTOffset(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetOUTOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Quantization /// Value range: 0 to 32768 /// - public int GetQuantization() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetQuantization() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Quantization /// Value range: 0 to 32768 /// - public void SetQuantization(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetQuantization(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public int GetResponse() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Response /// Value range: 0 to 1000 /// - public void SetResponse(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public int GetSampleRate() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetSampleRate() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public void SetSampleRate(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Value /// Value range: 0 to 32768 /// - public int GetValue() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetValue() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Value /// Value range: 0 to 32768 /// - public void SetValue(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetValue(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers @@ -6230,7 +6230,7 @@ public void ReadCurve(float[] buffer) if (buffer.Length < 257) throw new System.ArgumentException("Buffer must be at least of size 257"); - Module.ReadCurve(0, buffer); + ModuleHandle.ReadCurve(0, buffer); } /// @@ -6243,7 +6243,7 @@ public void WriteCurve(float[] buffer) if (buffer.Length < 257) throw new System.ArgumentException("Buffer must be at least of size 257"); - Module.WriteCurve(0, buffer); + ModuleHandle.WriteCurve(0, buffer); } #endregion curves @@ -6251,11 +6251,11 @@ public void WriteCurve(float[] buffer) public struct MultiSynthModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public MultiSynthModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6265,97 +6265,97 @@ public MultiSynthModuleHandle(ModuleHandle module) /// Original name: Curve2 influence /// Value range: 0 to 256 /// - public int GetCurve2Influence() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetCurve2Influence() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Curve2 influence /// Value range: 0 to 256 /// - public void SetCurve2Influence(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetCurve2Influence(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Finetune /// Value range: -256 to 256 /// - public int GetFinetune() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Finetune /// Value range: -256 to 256 /// - public void SetFinetune(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Phase /// Value range: 0 to 32768 /// - public int GetPhase() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetPhase() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Phase /// Value range: 0 to 32768 /// - public void SetPhase(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetPhase(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Random phase /// Value range: 0 to 32768 /// - public int GetRandomPhase() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetRandomPhase() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Random phase /// Value range: 0 to 32768 /// - public void SetRandomPhase(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Random pitch /// Value range: 0 to 4096 /// - public int GetRandomPitch() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetRandomPitch() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Random pitch /// Value range: 0 to 4096 /// - public void SetRandomPitch(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetRandomPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Random velocity /// Value range: 0 to 32768 /// - public int GetRandomVelocity() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetRandomVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Random velocity /// Value range: 0 to 32768 /// - public void SetRandomVelocity(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetRandomVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public int GetTranspose() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetTranspose() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public void SetTranspose(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Velocity /// Value range: 0 to 256 /// - public int GetVelocity() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetVelocity() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Velocity /// Value range: 0 to 256 /// - public void SetVelocity(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetVelocity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); #endregion controllers @@ -6371,7 +6371,7 @@ public void ReadNoteVelocityCurve(float[] buffer) if (buffer.Length < 128) throw new System.ArgumentException("Buffer must be at least of size 128"); - Module.ReadCurve(0, buffer); + ModuleHandle.ReadCurve(0, buffer); } /// @@ -6384,7 +6384,7 @@ public void WriteNoteVelocityCurve(float[] buffer) if (buffer.Length < 128) throw new System.ArgumentException("Buffer must be at least of size 128"); - Module.WriteCurve(0, buffer); + ModuleHandle.WriteCurve(0, buffer); } /// @@ -6397,7 +6397,7 @@ public void ReadVelocityToVelocityCurve(float[] buffer) if (buffer.Length < 257) throw new System.ArgumentException("Buffer must be at least of size 257"); - Module.ReadCurve(1, buffer); + ModuleHandle.ReadCurve(1, buffer); } /// @@ -6410,7 +6410,7 @@ public void WriteVelocityToVelocityCurve(float[] buffer) if (buffer.Length < 257) throw new System.ArgumentException("Buffer must be at least of size 257"); - Module.WriteCurve(1, buffer); + ModuleHandle.WriteCurve(1, buffer); } #endregion curves @@ -6418,22 +6418,22 @@ public void WriteVelocityToVelocityCurve(float[] buffer) public struct OutputModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public OutputModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } } public struct PitchDetectorModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public PitchDetectorModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6443,156 +6443,156 @@ public PitchDetectorModuleHandle(ModuleHandle module) /// Original name: Alg1 Sensitivity (absolute threshold) /// Value range: 0 to 100 /// - public int GetAlg1Sensitivity() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetAlg1Sensitivity() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Alg1 Sensitivity (absolute threshold) /// Value range: 0 to 100 /// - public void SetAlg1Sensitivity(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetAlg1Sensitivity(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Buffer (ms) /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 /// - public PitchDetectorBufferSize GetAlgBufferMs() => (PitchDetectorBufferSize)Module.GetControllerValue(8, ValueScalingType.Displayed); + public PitchDetectorBufferSize GetAlgBufferMs() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Buffer (ms) /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 /// - public void SetAlgBufferMs(PitchDetectorBufferSize value) => Module.SetControllerValue(8, (int)value, ValueScalingType.Displayed); + public void SetAlgBufferMs(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Buf overlap /// Value range: 0 to 100 /// - public int GetAlgBufOverlap() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetAlgBufOverlap() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Buf overlap /// Value range: 0 to 100 /// - public void SetAlgBufOverlap(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetAlgBufOverlap(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Algorithm /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum /// - public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)Module.GetControllerValue(0, ValueScalingType.Displayed); + public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Algorithm /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum /// - public void SetAlgorithm(PitchDetectorAlgorithm value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Sample rate (Hz) /// Possible values: Hz12000, Hz24000, Hz44100 /// - public PitchDetectorAlgSampleRate GetAlgSampleRateHz() => (PitchDetectorAlgSampleRate)Module.GetControllerValue(7, ValueScalingType.Displayed); + public PitchDetectorAlgSampleRate GetAlgSampleRateHz() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Alg1-2 Sample rate (Hz) /// Possible values: Hz12000, Hz24000, Hz44100 /// - public void SetAlgSampleRateHz(PitchDetectorAlgSampleRate value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetAlgSampleRateHz(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Detector finetune /// Value range: -256 to 256 /// - public int GetDetectorFinetune() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetDetectorFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Detector finetune /// Value range: -256 to 256 /// - public void SetDetectorFinetune(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetDetectorFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 256 /// - public int GetGain() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetGain() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 256 /// - public void SetGain(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetGain(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: LP filter freq (0 - OFF) /// Value range: 0 to 4000 /// - public int GetLPFilterFreq() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetLPFilterFreq() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: LP filter freq (0 - OFF) /// Value range: 0 to 4000 /// - public void SetLPFilterFreq(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetLPFilterFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: LP filter roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public FilterRollOff GetLPFilterRollOff() => (FilterRollOff)Module.GetControllerValue(6, ValueScalingType.Displayed); + public FilterRollOff GetLPFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: LP filter roll-off /// Possible values: dB12, dB24, dB36, dB48 /// - public void SetLPFilterRollOff(FilterRollOff value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetLPFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Microtones /// Possible values: Off, On /// - public Toggle GetMicrotones() => (Toggle)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Microtones /// Possible values: Off, On /// - public void SetMicrotones(Toggle value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Record notes /// Possible values: Off, On /// - public Toggle GetRecordNotes() => (Toggle)Module.GetControllerValue(11, ValueScalingType.Displayed); + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Record notes /// Possible values: Off, On /// - public void SetRecordNotes(Toggle value) => Module.SetControllerValue(11, (int)value, ValueScalingType.Displayed); + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); /// /// Original name: Threshold /// Value range: 0 to 10000 /// - public int GetThreshold() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Threshold /// Value range: 0 to 10000 /// - public void SetThreshold(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct PitchShifterModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public PitchShifterModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6602,96 +6602,96 @@ public PitchShifterModuleHandle(ModuleHandle module) /// Original name: Bypass if pitch=0 /// Possible values: Off, SlowTransition, FastTransition /// - public PitchShifterBypassMode GetBypassIfPitchZero() => (PitchShifterBypassMode)Module.GetControllerValue(6, ValueScalingType.Displayed); + public PitchShifterBypassMode GetBypassIfPitchZero() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Bypass if pitch=0 /// Possible values: Off, SlowTransition, FastTransition /// - public void SetBypassIfPitchZero(PitchShifterBypassMode value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetBypassIfPitchZero(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public int GetFeedback() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public void SetFeedback(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Grain size /// Value range: 0 to 256 /// - public int GetGrainSize() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetGrainSize() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Grain size /// Value range: 0 to 256 /// - public void SetGrainSize(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetGrainSize(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Pitch /// Value range: -600 to 600 /// - public int GetPitch() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetPitch() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Pitch /// Value range: -600 to 600 /// - public void SetPitch(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Pitch scale /// Value range: 0 to 200 /// - public int GetPitchScale() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetPitchScale() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Pitch scale /// Value range: 0 to 200 /// - public void SetPitchScale(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct PitchToControlModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public PitchToControlModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6701,96 +6701,96 @@ public PitchToControlModuleHandle(ModuleHandle module) /// Original name: First note /// Value range: 0 to 256 /// - public int GetFirstNote() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFirstNote() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: First note /// Value range: 0 to 256 /// - public void SetFirstNote(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: FrequencyHz, Pitch /// - public PitchToControlMode GetMode() => (PitchToControlMode)Module.GetControllerValue(0, ValueScalingType.Displayed); + public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: FrequencyHz, Pitch /// - public void SetMode(PitchToControlMode value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); /// /// Original name: On NoteOFF /// Possible values: DoNothing, PitchDown, PitchUp /// - public PitchToControlOnNoteOff GetOnNoteOff() => (PitchToControlOnNoteOff)Module.GetControllerValue(1, ValueScalingType.Displayed); + public PitchToControlOnNoteOff GetOnNoteOff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: On NoteOFF /// Possible values: DoNothing, PitchDown, PitchUp /// - public void SetOnNoteOff(PitchToControlOnNoteOff value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetOnNoteOff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public int GetOUTController() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetOUTController() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public void SetOUTController(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetOUTController(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public int GetOUTMax() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetOUTMax() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public void SetOUTMax(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetOUTMax(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public int GetOUTMin() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetOUTMin() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public void SetOUTMin(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetOUTMin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Range (number of semitones) /// Value range: 0 to 256 /// - public int GetRangeNumberOfSemitones() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Range (number of semitones) /// Value range: 0 to 256 /// - public void SetRangeNumberOfSemitones(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); #endregion controllers } public struct ReverbModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public ReverbModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -6800,142 +6800,142 @@ public ReverbModuleHandle(ModuleHandle module) /// Original name: All-pass filter /// Possible values: Off, On /// - public Toggle GetAllPassFilter() => (Toggle)Module.GetControllerValue(7, ValueScalingType.Displayed); + public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: All-pass filter /// Possible values: Off, On /// - public void SetAllPassFilter(Toggle value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Damp /// Value range: 0 to 256 /// - public int GetDamp() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetDamp() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Damp /// Value range: 0 to 256 /// - public void SetDamp(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetDamp(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public int GetDry() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Dry /// Value range: 0 to 256 /// - public void SetDry(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public int GetFeedback() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Feedback /// Value range: 0 to 256 /// - public void SetFeedback(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Freeze /// Possible values: Off, On /// - public Toggle GetFreeze() => (Toggle)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Freeze /// Possible values: Off, On /// - public void SetFreeze(Toggle value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Random seed /// Value range: 0 to 32768 /// - public int GetRandomSeed() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetRandomSeed() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Random seed /// Value range: 0 to 32768 /// - public void SetRandomSeed(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: Room size /// Value range: 0 to 128 /// - public int GetRoomSize() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetRoomSize() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Room size /// Value range: 0 to 128 /// - public void SetRoomSize(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetRoomSize(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Stereo width /// Value range: 0 to 256 /// - public int GetStereoWidth() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Stereo width /// Value range: 0 to 256 /// - public void SetStereoWidth(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public int GetWet() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Wet /// Value range: 0 to 256 /// - public void SetWet(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); #endregion controllers } public struct SamplerModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public SamplerModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } #region module type-specific methods /// - public void LoadSample(byte[] data, int sampleSlot = -1) => Module.LoadSamplerSample(data, sampleSlot); + public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot); /// - public void LoadSample(string path, int sampleSlot = -1) => Module.LoadSamplerSample(path, sampleSlot); + public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot); #endregion module type-specific methods @@ -6945,84 +6945,84 @@ public SamplerModuleHandle(ModuleHandle module) /// Original name: Envelope interpolation /// Possible values: Off, Linear /// - public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)Module.GetControllerValue(3, ValueScalingType.Displayed); + public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Envelope interpolation /// Possible values: Off, Linear /// - public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public int GetPolyphony() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public void SetPolyphony(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Rec threshold /// Value range: 0 to 10000 /// - public int GetRecThreshold() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetRecThreshold() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Rec threshold /// Value range: 0 to 10000 /// - public void SetRecThreshold(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetRecThreshold(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Sample interpolation /// Possible values: Off, Linear, Spline /// - public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)Module.GetControllerValue(2, ValueScalingType.Displayed); + public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Sample interpolation /// Possible values: Off, Linear, Spline /// - public void SetSampleInterpolation(SamplerInterpolation value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct SoundToControlModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public SoundToControlModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7032,120 +7032,120 @@ public SoundToControlModuleHandle(ModuleHandle module) /// Original name: Absolute /// Possible values: Off, On /// - public Toggle GetAbsolute() => (Toggle)Module.GetControllerValue(2, ValueScalingType.Displayed); + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Absolute /// Possible values: Off, On /// - public void SetAbsolute(Toggle value) => Module.SetControllerValue(2, (int)value, ValueScalingType.Displayed); + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public ChannelsInverted GetChannels() => (ChannelsInverted)Module.GetControllerValue(1, ValueScalingType.Displayed); + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Mono, Stereo /// - public void SetChannels(ChannelsInverted value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 1024 /// - public int GetGain() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetGain() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Gain /// Value range: 0 to 1024 /// - public void SetGain(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetGain(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: LQ, HQ /// - public SoundToControlMode GetMode() => (SoundToControlMode)Module.GetControllerValue(5, ValueScalingType.Displayed); + public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: LQ, HQ /// - public void SetMode(SoundToControlMode value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public int GetOUTController() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetOUTController() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public void SetOUTController(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetOUTController(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public int GetOutMax() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetOutMax() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public void SetOutMax(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetOutMax(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public int GetOutMin() => Module.GetControllerValue(6, ValueScalingType.Displayed); + public int GetOutMin() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public void SetOutMin(int value) => Module.SetControllerValue(6, value, ValueScalingType.Displayed); + public void SetOutMin(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public int GetSampleRate() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetSampleRate() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Sample rate /// Value range: 1 to 32768 /// - public void SetSampleRate(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Smooth /// Value range: 0 to 256 /// - public int GetSmooth() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetSmooth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Smooth /// Value range: 0 to 256 /// - public void SetSmooth(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetSmooth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); #endregion controllers } public struct SpectraVoiceModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public SpectraVoiceModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7155,168 +7155,168 @@ public SpectraVoiceModuleHandle(ModuleHandle module) /// Original name: Attack /// Value range: 0 to 512 /// - public int GetAttack() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetAttack() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Attack /// Value range: 0 to 512 /// - public void SetAttack(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetAttack(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Harmonic /// Value range: 0 to 15 /// - public int GetHarmonic() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetHarmonic() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Harmonic /// Value range: 0 to 15 /// - public void SetHarmonic(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetHarmonic(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: H.freq /// Value range: 0 to 22050 /// - public int GetHarmonicFreq() => Module.GetControllerValue(9, ValueScalingType.Displayed); + public int GetHarmonicFreq() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: H.freq /// Value range: 0 to 22050 /// - public void SetHarmonicFreq(int value) => Module.SetControllerValue(9, value, ValueScalingType.Displayed); + public void SetHarmonicFreq(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); /// /// Original name: H.type /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal /// - public SpectraVoiceHarmonicType GetHarmonicType() => (SpectraVoiceHarmonicType)Module.GetControllerValue(12, ValueScalingType.Displayed); + public SpectraVoiceHarmonicType GetHarmonicType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: H.type /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal /// - public void SetHarmonicType(SpectraVoiceHarmonicType value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetHarmonicType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: H.volume /// Value range: 0 to 255 /// - public int GetHarmonicVolume() => Module.GetControllerValue(10, ValueScalingType.Displayed); + public int GetHarmonicVolume() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: H.volume /// Value range: 0 to 255 /// - public void SetHarmonicVolume(int value) => Module.SetControllerValue(10, value, ValueScalingType.Displayed); + public void SetHarmonicVolume(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); /// /// Original name: H.width /// Value range: 0 to 255 /// - public int GetHarmonicWidth() => Module.GetControllerValue(11, ValueScalingType.Displayed); + public int GetHarmonicWidth() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: H.width /// Value range: 0 to 255 /// - public void SetHarmonicWidth(int value) => Module.SetControllerValue(11, value, ValueScalingType.Displayed); + public void SetHarmonicWidth(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline /// - public SpectraVoiceMode GetMode() => (SpectraVoiceMode)Module.GetControllerValue(5, ValueScalingType.Displayed); + public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline /// - public void SetMode(SpectraVoiceMode value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public int GetPanning() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Panning /// Value range: -128 to 128 /// - public void SetPanning(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public int GetPolyphony() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 32 /// - public void SetPolyphony(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public int GetRelease() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetRelease() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Release /// Value range: 0 to 512 /// - public void SetRelease(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetRelease(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Spectrum resolution /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 /// - public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)Module.GetControllerValue(7, ValueScalingType.Displayed); + public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Spectrum resolution /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 /// - public void SetSpectrumResolution(SpectraVoiceResolution value) => Module.SetControllerValue(7, (int)value, ValueScalingType.Displayed); + public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public Toggle GetSustain() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Sustain /// Possible values: Off, On /// - public void SetSustain(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct VelocityToControlModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public VelocityToControlModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7326,72 +7326,72 @@ public VelocityToControlModuleHandle(ModuleHandle module) /// Original name: On NoteOFF /// Possible values: DoNothing, VelocityDown, VelocityUp /// - public VelocityToControlOnNoteOff GetOnNoteOff() => (VelocityToControlOnNoteOff)Module.GetControllerValue(0, ValueScalingType.Displayed); + public VelocityToControlOnNoteOff GetOnNoteOff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: On NoteOFF /// Possible values: DoNothing, VelocityDown, VelocityUp /// - public void SetOnNoteOff(VelocityToControlOnNoteOff value) => Module.SetControllerValue(0, (int)value, ValueScalingType.Displayed); + public void SetOnNoteOff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public int GetOutController() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetOutController() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: OUT controller /// Value range: 0 to 255 /// - public void SetOutController(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetOutController(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public int GetOutMax() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetOutMax() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: OUT max /// Value range: 0 to 32768 /// - public void SetOutMax(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetOutMax(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public int GetOutMin() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetOutMin() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: OUT min /// Value range: 0 to 32768 /// - public void SetOutMin(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetOutMin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: OUT offset /// Value range: -16384 to 16384 /// - public int GetOutOffset() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetOutOffset() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: OUT offset /// Value range: -16384 to 16384 /// - public void SetOutOffset(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetOutOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); #endregion controllers } public struct VibratoModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public VibratoModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7401,96 +7401,96 @@ public VibratoModuleHandle(ModuleHandle module) /// Original name: Amplitude /// Value range: 0 to 256 /// - public int GetAmplitude() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetAmplitude() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Amplitude /// Value range: 0 to 256 /// - public void SetAmplitude(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); /// /// Original name: Exponential amplitude /// Possible values: Off, On /// - public Toggle GetExponentialAmplitude() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Exponential amplitude /// Possible values: Off, On /// - public void SetExponentialAmplitude(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 1 to 2048 /// - public int GetFreq() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Freq /// Value range: 1 to 2048 /// - public void SetFreq(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Frequency unit /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)Module.GetControllerValue(5, ValueScalingType.Displayed); + public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Frequency unit /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine /// - public void SetFrequencyUnit(VibratoFrequencyUnit value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Set phase /// Value range: 0 to 256 /// - public int GetSetPhase() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetSetPhase() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Set phase /// Value range: 0 to 256 /// - public void SetSetPhase(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 256 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct VocalFilterModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public VocalFilterModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7500,190 +7500,190 @@ public VocalFilterModuleHandle(ModuleHandle module) /// Original name: Channels /// Possible values: Stereo, Mono /// - public Channels GetChannels() => (Channels)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Channels /// Possible values: Stereo, Mono /// - public void SetChannels(Channels value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Formants /// Value range: 1 to 5 /// - public int GetFormants() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetFormants() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Formants /// Value range: 1 to 5 /// - public void SetFormants(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetFormants(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Formant width /// Value range: 0 to 256 /// - public int GetFormantWidth() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetFormantWidth() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Formant width /// Value range: 0 to 256 /// - public void SetFormantWidth(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetFormantWidth(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Intensity /// Value range: 0 to 256 /// - public int GetIntensity() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetIntensity() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Intensity /// Value range: 0 to 256 /// - public void SetIntensity(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetIntensity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Random frequency /// Value range: 0 to 1024 /// - public int GetRandomFrequency() => Module.GetControllerValue(7, ValueScalingType.Displayed); + public int GetRandomFrequency() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); /// /// Original name: Random frequency /// Value range: 0 to 1024 /// - public void SetRandomFrequency(int value) => Module.SetControllerValue(7, value, ValueScalingType.Displayed); + public void SetRandomFrequency(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); /// /// Original name: Random seed /// Value range: 0 to 32768 /// - public int GetRandomSeed() => Module.GetControllerValue(8, ValueScalingType.Displayed); + public int GetRandomSeed() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); /// /// Original name: Random seed /// Value range: 0 to 32768 /// - public void SetRandomSeed(int value) => Module.SetControllerValue(8, value, ValueScalingType.Displayed); + public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); /// /// Original name: Voice type /// Possible values: Soprano, Alto, Tenor, Bass /// - public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)Module.GetControllerValue(5, ValueScalingType.Displayed); + public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Voice type /// Possible values: Soprano, Alto, Tenor, Bass /// - public void SetVoiceType(VocalFilterVoiceType value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Vowel (a,e,i,o,u) /// Value range: 0 to 256 /// - public int GetVowel() => Module.GetControllerValue(4, ValueScalingType.Displayed); + public int GetVowel() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Vowel (a,e,i,o,u) /// Value range: 0 to 256 /// - public void SetVowel(int value) => Module.SetControllerValue(4, value, ValueScalingType.Displayed); + public void SetVowel(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); /// /// Original name: Vowel1 /// Possible values: A, E, I, O, U /// - public VocalFilterVowel GetVowel1() => (VocalFilterVowel)Module.GetControllerValue(9, ValueScalingType.Displayed); + public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); /// /// Original name: Vowel1 /// Possible values: A, E, I, O, U /// - public void SetVowel1(VocalFilterVowel value) => Module.SetControllerValue(9, (int)value, ValueScalingType.Displayed); + public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); /// /// Original name: Vowel2 /// Possible values: A, E, I, O, U /// - public VocalFilterVowel GetVowel2() => (VocalFilterVowel)Module.GetControllerValue(10, ValueScalingType.Displayed); + public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); /// /// Original name: Vowel2 /// Possible values: A, E, I, O, U /// - public void SetVowel2(VocalFilterVowel value) => Module.SetControllerValue(10, (int)value, ValueScalingType.Displayed); + public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); /// /// Original name: Vowel3 /// Possible values: A, E, I, O, U /// - public VocalFilterVowel GetVowel3() => (VocalFilterVowel)Module.GetControllerValue(11, ValueScalingType.Displayed); + public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); /// /// Original name: Vowel3 /// Possible values: A, E, I, O, U /// - public void SetVowel3(VocalFilterVowel value) => Module.SetControllerValue(11, (int)value, ValueScalingType.Displayed); + public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); /// /// Original name: Vowel4 /// Possible values: A, E, I, O, U /// - public VocalFilterVowel GetVowel4() => (VocalFilterVowel)Module.GetControllerValue(12, ValueScalingType.Displayed); + public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); /// /// Original name: Vowel4 /// Possible values: A, E, I, O, U /// - public void SetVowel4(VocalFilterVowel value) => Module.SetControllerValue(12, (int)value, ValueScalingType.Displayed); + public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); /// /// Original name: Vowel5 /// Possible values: A, E, I, O, U /// - public VocalFilterVowel GetVowel5() => (VocalFilterVowel)Module.GetControllerValue(13, ValueScalingType.Displayed); + public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); /// /// Original name: Vowel5 /// Possible values: A, E, I, O, U /// - public void SetVowel5(VocalFilterVowel value) => Module.SetControllerValue(13, (int)value, ValueScalingType.Displayed); + public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); #endregion controllers } public struct VorbisPlayerModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public VorbisPlayerModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } #region module type-specific methods /// - public void LoadVorbis(string path) => Module.LoadIntoVorbisPLayer(path); + public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path); /// - public void LoadIntoVorbisPLayer(byte[] data) => Module.LoadIntoVorbisPLayer(data); + public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data); #endregion module type-specific methods @@ -7693,96 +7693,96 @@ public VorbisPlayerModuleHandle(ModuleHandle module) /// Original name: Finetune /// Value range: -128 to 128 /// - public int GetFinetune() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetFinetune() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Finetune /// Value range: -128 to 128 /// - public void SetFinetune(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Interpolation /// Possible values: Off, On /// - public Toggle GetInterpolation() => (Toggle)Module.GetControllerValue(4, ValueScalingType.Displayed); + public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Interpolation /// Possible values: Off, On /// - public void SetInterpolation(Toggle value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); /// /// Original name: Original speed /// Possible values: Off, On /// - public Toggle GetOriginalSpeed() => (Toggle)Module.GetControllerValue(1, ValueScalingType.Displayed); + public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Original speed /// Possible values: Off, On /// - public void SetOriginalSpeed(Toggle value) => Module.SetControllerValue(1, (int)value, ValueScalingType.Displayed); + public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 4 /// - public int GetPolyphony() => Module.GetControllerValue(5, ValueScalingType.Displayed); + public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: Polyphony /// Value range: 1 to 4 /// - public void SetPolyphony(int value) => Module.SetControllerValue(5, value, ValueScalingType.Displayed); + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); /// /// Original name: Repeat /// Possible values: Off, On /// - public Toggle GetRepeat() => (Toggle)Module.GetControllerValue(6, ValueScalingType.Displayed); + public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); /// /// Original name: Repeat /// Possible values: Off, On /// - public void SetRepeat(Toggle value) => Module.SetControllerValue(6, (int)value, ValueScalingType.Displayed); + public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public int GetTranspose() => Module.GetControllerValue(3, ValueScalingType.Displayed); + public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Transpose /// Value range: -128 to 128 /// - public void SetTranspose(int value) => Module.SetControllerValue(3, value, ValueScalingType.Displayed); + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public int GetVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Volume /// Value range: 0 to 512 /// - public void SetVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); #endregion controllers } public struct WaveShaperModuleHandle : IModuleHandleWrapper { - public ModuleHandle Module { get; private set; } + public ModuleHandle ModuleHandle { get; private set; } public WaveShaperModuleHandle(ModuleHandle module) { - Module = module; + ModuleHandle = module; } @@ -7792,73 +7792,73 @@ public WaveShaperModuleHandle(ModuleHandle module) /// Original name: DC blocker /// Possible values: Off, On /// - public Toggle GetDCBlocker() => (Toggle)Module.GetControllerValue(5, ValueScalingType.Displayed); + public Toggle GetDCBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); /// /// Original name: DC blocker /// Possible values: Off, On /// - public void SetDCBlocker(Toggle value) => Module.SetControllerValue(5, (int)value, ValueScalingType.Displayed); + public void SetDCBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); /// /// Original name: Input volume /// Value range: 0 to 512 /// - public int GetInputVolume() => Module.GetControllerValue(0, ValueScalingType.Displayed); + public int GetInputVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); /// /// Original name: Input volume /// Value range: 0 to 512 /// - public void SetInputVolume(int value) => Module.SetControllerValue(0, value, ValueScalingType.Displayed); + public void SetInputVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 256 /// - public int GetMix() => Module.GetControllerValue(1, ValueScalingType.Displayed); + public int GetMix() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); /// /// Original name: Mix /// Value range: 0 to 256 /// - public void SetMix(int value) => Module.SetControllerValue(1, value, ValueScalingType.Displayed); + public void SetMix(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public Quality GetMode() => (Quality)Module.GetControllerValue(4, ValueScalingType.Displayed); + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); /// /// Original name: Mode /// Possible values: HQ, HQMono, LQ, LQMono /// - public void SetMode(Quality value) => Module.SetControllerValue(4, (int)value, ValueScalingType.Displayed); + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); /// /// Original name: Output volume /// Value range: 0 to 512 /// - public int GetOutputVolume() => Module.GetControllerValue(2, ValueScalingType.Displayed); + public int GetOutputVolume() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); /// /// Original name: Output volume /// Value range: 0 to 512 /// - public void SetOutputVolume(int value) => Module.SetControllerValue(2, value, ValueScalingType.Displayed); + public void SetOutputVolume(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); /// /// Original name: Symmetric /// Possible values: Off, On /// - public Toggle GetSymmetric() => (Toggle)Module.GetControllerValue(3, ValueScalingType.Displayed); + public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); /// /// Original name: Symmetric /// Possible values: Off, On /// - public void SetSymmetric(Toggle value) => Module.SetControllerValue(3, (int)value, ValueScalingType.Displayed); + public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); #endregion controllers @@ -7874,7 +7874,7 @@ public void ReadCurve(float[] buffer) if (buffer.Length < 256) throw new System.ArgumentException("Buffer must be at least of size 256"); - Module.ReadCurve(0, buffer); + ModuleHandle.ReadCurve(0, buffer); } /// @@ -7887,7 +7887,7 @@ public void WriteCurve(float[] buffer) if (buffer.Length < 256) throw new System.ArgumentException("Buffer must be at least of size 256"); - Module.WriteCurve(0, buffer); + ModuleHandle.WriteCurve(0, buffer); } #endregion curves diff --git a/SunSharp/ObjectWrapper/PatternHandle.cs b/SunSharp/ObjectWrapper/PatternHandle.cs index 8a88e41..ceae3fb 100644 --- a/SunSharp/ObjectWrapper/PatternHandle.cs +++ b/SunSharp/ObjectWrapper/PatternHandle.cs @@ -1,7 +1,4 @@ using SunSharp.ThinWrapper; -using System; -using System.Diagnostics; -using System.Xml.Linq; namespace SunSharp.ObjectWrapper { @@ -29,7 +26,7 @@ public PatternHandle(Timeline timeline, int id) public bool GetExists() => _lib.GetPatternExists(_slotId, _id); - public string GetName() => _lib.GetPatternName(_slotId, _id); + public string? GetName() => _lib.GetPatternName(_slotId, _id); public void SetName(string name) { @@ -66,34 +63,35 @@ public void Resize(int? tracks = null, int? lines = null) _slot.RunInLock(() => lib.SetPatternSize(slotId, id, tracks, lines)); } - public PatternEvent[] GetData() + public PatternEvent[]? GetData() { - int slotId = _slotId; - int id = _id; + var slotId = _slotId; + var id = _id; var lib = _lib; - return _slot.RunInLock(() => - { - return lib.GetPatternData(slotId, id); - }); + return _slot.RunInLock(() => lib.GetPatternData(slotId, id)); } - public PatternEvent[,] GetData2D() + public PatternEvent[,]? GetData2D() { - int slotId = _slotId; - int id = _id; + var slotId = _slotId; + var id = _id; var lib = _lib; - var (data, tracks, lines) = _slot.RunInLock(() => { - var _data = lib.GetPatternData(slotId, id); - int _tracks = lib.GetPatternTracks(slotId, id); - var _lines = lib.GetPatternLines(slotId, id); - return (_data, _tracks, _lines); + var (data, tracks, lines) = _slot.RunInLock(() => + { + var data = lib.GetPatternData(slotId, id); + var tracks = lib.GetPatternTracks(slotId, id); + var lines = lib.GetPatternLines(slotId, id); + return (_data: data, _tracks: tracks, _lines: lines); }); + if (data == null) + return null; + var newData = new PatternEvent[lines, tracks]; - for (int l = 0; l < lines; l++) - for (int t = 0; t < tracks; t++) - newData[l, t] = data[l * tracks + t]; + for (var l = 0; l < lines; l++) + for (var t = 0; t < tracks; t++) + newData[l, t] = data[l * tracks + t]; return newData; } @@ -103,10 +101,7 @@ public void SetData(PatternEvent[] data) var slotId = _slotId; var id = _id; var lib = _lib; - _slot.RunInLock(() => - { - lib.SetPatternData(slotId, id, data); - }); + _slot.RunInLock(() => { lib.SetPatternData(slotId, id, data); }); } public void SetData2D(PatternEvent[,] data) @@ -120,23 +115,17 @@ public void SetData2D(PatternEvent[,] data) var newData = new PatternEvent[inputLines * inputTracks]; for (int l = 0; l < inputLines; l++) - for (int t = 0; t < inputTracks; t++) - newData[l * inputTracks + t] = data[l, t]; + for (int t = 0; t < inputTracks; t++) + newData[l * inputTracks + t] = data[l, t]; - _slot.RunInLock(() => - { - lib.SetPatternData(slotId, id, newData); - }); + _slot.RunInLock(() => { lib.SetPatternData(slotId, id, newData); }); } public void SetMute(int id, bool mute) { var lib = _lib; var slotId = _id; - _slot.RunInLock(() => - { - lib.SetPatternMute(slotId, id, mute); - }); + _slot.RunInLock(() => { lib.SetPatternMute(slotId, id, mute); }); } public bool GetMute(int id) @@ -156,10 +145,7 @@ public void SetEvent(int track, int line, PatternEvent @event) var lib = _lib; var slotId = _id; var id = _id; - _slot.RunInLock(() => - { - lib.SetPatternEvent(slotId, id, track, line, @event); - }); + _slot.RunInLock(() => { lib.SetPatternEvent(slotId, id, track, line, @event); }); } public void SetEvent(int track, int line, int NN, int VV, int MM, int CCEE, int XXYY) @@ -167,10 +153,7 @@ public void SetEvent(int track, int line, int NN, int VV, int MM, int CCEE, int var lib = _lib; var slotId = _id; var id = _id; - _slot.RunInLock(() => - { - lib.SetPatternEvent(slotId, id, track, line, NN, VV, MM, CCEE, XXYY); - }); + _slot.RunInLock(() => { lib.SetPatternEvent(slotId, id, track, line, NN, VV, MM, CCEE, XXYY); }); } public int GetEventValue(int track, int line, Column column) @@ -178,10 +161,7 @@ public int GetEventValue(int track, int line, Column column) var lib = _lib; var slotId = _id; var id = _id; - return _slot.RunInLock(() => - { - return lib.GetPatternEventValue(slotId, id, track, line, column); - }); + return _slot.RunInLock(() => { return lib.GetPatternEventValue(slotId, id, track, line, column); }); } } } diff --git a/SunSharp/ObjectWrapper/Slot.cs b/SunSharp/ObjectWrapper/Slot.cs index ceeef22..e932c96 100644 --- a/SunSharp/ObjectWrapper/Slot.cs +++ b/SunSharp/ObjectWrapper/Slot.cs @@ -1,5 +1,5 @@ -using SunSharp.ThinWrapper; -using System; +using System; +using SunSharp.ThinWrapper; namespace SunSharp.ObjectWrapper { @@ -8,51 +8,43 @@ namespace SunSharp.ObjectWrapper /// public class Slot { - private readonly int _id; - private readonly ISunVoxLib _lib; - private readonly SunVox _sunVox; private readonly Slots _slots; - private readonly VirtualPattern _virtualPattern; - private readonly Timeline _timeline; - private readonly Synthesizer _synthesizer; - private readonly object _lock; - public int Id => _id; + public int Id { get; } /// /// Virtual, 16-track pattern for sending events to the engine. /// - public VirtualPattern VirtualPattern => _virtualPattern; + public VirtualPattern VirtualPattern { get; } /// /// Project timeline, containing all the existing patterns. /// - public Timeline Timeline => _timeline; + public Timeline Timeline { get; } /// /// Project synthesizer, containing all the existing modules. /// - public Synthesizer Synthesizer => _synthesizer; + public Synthesizer Synthesizer { get; } - public SunVox SunVox => _sunVox; + public SunVox SunVox { get; } /// /// Underlying library instance. /// - public ISunVoxLib Library => _lib; + public ISunVoxLib Library { get; } public bool IsOpen { get; private set; } internal Slot(int id, Slots slots, SunVox sunVox) { - _id = id; - _lock = new object(); + Id = id; _slots = slots; - _sunVox = sunVox; - _lib = sunVox.Library; - _virtualPattern = new VirtualPattern(this); - _timeline = new Timeline(this); - _synthesizer = new Synthesizer(this); + SunVox = sunVox; + Library = sunVox.Library; + VirtualPattern = new VirtualPattern(this); + Timeline = new Timeline(this); + Synthesizer = new Synthesizer(this); } #region locks @@ -66,7 +58,7 @@ public void RunInLock(Action action) if (!IsOpen) throw new InvalidOperationException("Slot is closed."); - _lib.RunInLock(_id, action); + Library.RunInLock(Id, action); } /// @@ -75,12 +67,12 @@ public T RunInLock(Func function) if (!IsOpen) throw new InvalidOperationException("Slot is closed."); - return _lib.RunInLock(_id, function); + return Library.RunInLock(Id, function); } - protected void Lock() => _lib.LockSlot(_id); + protected void Lock() => Library.LockSlot(Id); - protected void Unlock() => _lib.UnlockSlot(_id); + protected void Unlock() => Library.UnlockSlot(Id); #endregion locks @@ -92,9 +84,9 @@ public void Open() { if (!IsOpen) { - _lib.OpenSlot(Id); + Library.OpenSlot(Id); IsOpen = true; - RunInLock(() => _virtualPattern.ResetEventTiming()); + RunInLock(() => VirtualPattern.ResetEventTiming()); } }); } @@ -106,7 +98,7 @@ public void Close() if (IsOpen) { IsOpen = false; - _lib.CloseSlot(_id); + Library.CloseSlot(Id); } }); } @@ -119,19 +111,19 @@ public void Close() /// Load a project from file. /// /// - public void Load(string path) => RunInLock(() => _lib.Load(_id, path)); + public void Load(string path) => RunInLock(() => Library.Load(Id, path)); /// /// load a project from memory. /// /// - public void Load(byte[] data) => RunInLock(() => _lib.Load(_id, data)); + public void Load(byte[] data) => RunInLock(() => Library.Load(Id, data)); /// /// Save a project to file. /// /// - public void Save(string path) => RunInLock(() => _lib.Save(_id, path)); + public void Save(string path) => RunInLock(() => Library.Save(Id, path)); #endregion loading, saving @@ -139,57 +131,57 @@ public void Close() public void Play() { - RunInLock(() => _lib.Play(_id)); + RunInLock(() => Library.Play(Id)); } public void PlayFromBeginning() { - RunInLock(() => _lib.PlayFromBeginning(_id)); + RunInLock(() => Library.PlayFromBeginning(Id)); } public void Stop() { - RunInLock(() => _lib.Stop(_id)); + RunInLock(() => Library.Stop(Id)); } public void ResumeOnSyncEffect() { - RunInLock(() => _lib.ResumeOnSyncEffect(_id)); + RunInLock(() => Library.ResumeOnSyncEffect(Id)); } public void PauseAudio() { - RunInLock(() => _lib.Pause(_id)); + RunInLock(() => Library.Pause(Id)); } public void ResumeAudio() { - RunInLock(() => _lib.Resume(_id)); + RunInLock(() => Library.Resume(Id)); } public void SetAutostop(bool enable) { - RunInLock(() => _lib.SetAutostop(_id, enable)); + RunInLock(() => Library.SetAutoStop(Id, enable)); } public bool GetAutostop() { - return _lib.GetAutostop(_id); + return Library.GetAutostop(Id); } public bool IsPlaying() { - return _lib.IsPlaying(_id); + return Library.IsPlaying(Id); } public void Rewind(int lineNumber) { - RunInLock(() => _lib.Rewind(_id, lineNumber)); + RunInLock(() => Library.Rewind(Id, lineNumber)); } public int GetCurrentLine() { - return _lib.GetCurrentLine(_id); + return Library.GetCurrentLine(Id); } /// @@ -197,12 +189,12 @@ public int GetCurrentLine() /// public int GetCurrentLineHundreds() { - return _lib.GetCurrentLine2(_id); + return Library.GetCurrentLine2(Id); } public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) { - return _lib.GetCurrentSignalLevel(_id, (int)channel); + return Library.GetCurrentSignalLevel(Id, (int)channel); } #endregion playing, stopping @@ -211,54 +203,54 @@ public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) public int GetVolume() { - return _lib.Volume(_id, -1); + return Library.Volume(Id, -1); } public void SetVolume(int value) { - _lib.Volume(_id, value); + Library.Volume(Id, value); } public int GetSongBpm() { - return _lib.GetSongBpm(_id); + return Library.GetSongBpm(Id); } public void SetSongBpm(int value) { var xxyy = (ushort)Math.Min(Math.Max(0, value), 800); - _virtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetBpm, xxyy)); + VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetBpm, xxyy)); } public int GetSongTpl() { - return _lib.GetSongTpl(_id); + return Library.GetSongTpl(Id); } public void SetSongTpl(int value) { var xxyy = (ushort)Math.Min(Math.Max(1, value), 31); - _virtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetPlayingSpeed, xxyy)); + VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetPlayingSpeed, xxyy)); } public int GetSongLengthInLines() { - return _lib.GetSongLengthInLines(_id); + return Library.GetSongLengthInLines(Id); } public int GetSongLengthInFrames() { - return _lib.GetSongLengthInFrames(_id); + return Library.GetSongLengthInFrames(Id); } - public string GetSongName() + public string? GetSongName() { - return _lib.GetSongName(_id); + return Library.GetSongName(Id); } public void SetSongName(string name) { - _lib.SetSongName(_id, name); + Library.SetSongName(Id, name); } /// @@ -272,7 +264,7 @@ public void SetSongName(string name) /// public uint[] GetTimeMap(int startLine, int length, TimeMapType type) { - return _lib.GetTimeMap(_id, startLine, length, type); + return Library.GetTimeMap(Id, startLine, length, type); } #endregion song properties diff --git a/SunSharp/ObjectWrapper/Slots.cs b/SunSharp/ObjectWrapper/Slots.cs index f63a887..303f318 100644 --- a/SunSharp/ObjectWrapper/Slots.cs +++ b/SunSharp/ObjectWrapper/Slots.cs @@ -60,17 +60,15 @@ public T RunInOpeningLock(Func func) /// /// Try to get and open a new slot. /// - /// - /// if failed to find an unused slot. - public bool TryOpenNewSlot(out Slot slot) + /// if opening a closed slot failed. Otherwise, an open slot is returned. + public Slot? TryOpenNewSlot() { - slot = RunInOpeningLock(() => + return RunInOpeningLock(() => { - var _slot = _slots.FirstOrDefault(s => !s.IsOpen); - _slot?.Open(); - return _slot; + var slot = _slots.FirstOrDefault(s => !s.IsOpen); + slot?.Open(); + return slot; }); - return slot != null; } public IEnumerator GetEnumerator() => ((IEnumerable)_slots).GetEnumerator(); diff --git a/SunSharp/ObjectWrapper/SunVox.cs b/SunSharp/ObjectWrapper/SunVox.cs index 412c1ba..3a14679 100644 --- a/SunSharp/ObjectWrapper/SunVox.cs +++ b/SunSharp/ObjectWrapper/SunVox.cs @@ -1,6 +1,6 @@ -using SunSharp.ThinWrapper; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using SunSharp.ThinWrapper; namespace SunSharp.ObjectWrapper { @@ -10,26 +10,23 @@ namespace SunSharp.ObjectWrapper /// public class SunVox : System.IDisposable { - private readonly int _sampleRate; private readonly ISunVoxLib _lib; - private readonly Slots _slots; private readonly OutputType? _outputType; - private readonly Version _version; - private readonly bool _singleThreaded; - private readonly AudioChannels _channels; /// /// The underlying library. Direct use is potentially dangerous and may break existing abstractions. /// public ISunVoxLib Library => _lib; - public Slots Slots => _slots; + public Slots Slots { get; } + public bool NeedsUserCallback => OutputType != null; - public bool SingleThreaded => _singleThreaded; + public bool SingleThreaded { get; } + public OutputType? OutputType => _outputType; - public Version Version => _version; - public int SampleRate => _sampleRate; - public AudioChannels Channels => _channels; + public Version Version { get; } + public int SampleRate { get; } + public AudioChannels Channels { get; } /// /// Create an instance of the engine with own audio stream and threading. @@ -42,7 +39,7 @@ public class SunVox : System.IDisposable /// Leave for the value to be assigned by the engine. /// Limit information sent to Standard Output. public SunVox(ISunVoxLib lib, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, - string deviceIn = null, string deviceOut = null, string driver = null, bool noDebugOutput = true) + string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) { var flags = InitFlags.Default; if (noDebugOutput) @@ -56,12 +53,12 @@ public SunVox(ISunVoxLib lib, AudioChannels channels = AudioChannels.Stereo, uin var configuration = @params.Any() ? string.Join("|", @params) : null; _lib = lib; - _version = _lib.Init(sampleRate: -1, config: configuration, channels: channels, flags: flags); - _sampleRate = _lib.GetSampleRate(); - _singleThreaded = false; + Version = _lib.Init(sampleRate: -1, config: configuration, channels: channels, flags: flags); + SampleRate = _lib.GetSampleRate(); + SingleThreaded = false; _outputType = null; - _channels = channels; - _slots = new Slots(this); + Channels = channels; + Slots = new Slots(this); } /// @@ -74,7 +71,8 @@ public SunVox(ISunVoxLib lib, AudioChannels channels = AudioChannels.Stereo, uin /// Use to promise that audio callback and other methods will be called from one thread. /// Limit information sent to Standard Output. /// - public SunVox(ISunVoxLib lib, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, + public SunVox(ISunVoxLib lib, int sampleRate, OutputType outputType, + AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) { var flags = InitFlags.UserAudioCallback; @@ -96,12 +94,12 @@ public SunVox(ISunVoxLib lib, int sampleRate, OutputType outputType, AudioChanne throw new System.ArgumentException($"Invalid value: {sampleRate}", nameof(sampleRate)); _lib = lib; - _version = _lib.Init(sampleRate: sampleRate, channels: channels, flags: flags); - _sampleRate = _lib.GetSampleRate(); - _singleThreaded = false; - _channels = channels; + Version = _lib.Init(sampleRate: sampleRate, channels: channels, flags: flags); + SampleRate = _lib.GetSampleRate(); + SingleThreaded = false; + Channels = channels; _outputType = outputType; - _slots = new Slots(this); + Slots = new Slots(this); } #region disposable @@ -149,12 +147,13 @@ private void AudioGuard(bool @float) if (_outputType == null) throw new System.InvalidOperationException("SunVox was not initialized in user callback mode."); - if ((_outputType == ObjectWrapper.OutputType.Float32) == !@float) - { - var expected = @float ? ObjectWrapper.OutputType.Float32 : ObjectWrapper.OutputType.Int16; - var msg = $"SunVox was initialized with output type \"{OutputType}\", but callback was called expecting output type \"{expected}\""; - throw new System.InvalidOperationException(msg); - } + if (_outputType == ObjectWrapper.OutputType.Float32 != !@float) + return; + + var expected = @float ? ObjectWrapper.OutputType.Float32 : ObjectWrapper.OutputType.Int16; + var msg = + $"SunVox was initialized with output type \"{OutputType}\", but callback was called expecting output type \"{expected}\""; + throw new System.InvalidOperationException(msg); } /// @@ -167,14 +166,14 @@ private void AudioGuard(bool @float) public bool AudioCallback(float[] outputBuffer, int latency, uint outTime) { AudioGuard(true); - return _lib.AudioCallback(outputBuffer, _channels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, latency, outTime); } /// public bool AudioCallback(short[] outputBuffer, int latency, uint outTime) { AudioGuard(false); - return _lib.AudioCallback(outputBuffer, _channels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, latency, outTime); } /// @@ -187,31 +186,35 @@ public bool AudioCallback(short[] outputBuffer, int latency, uint outTime) /// Input data channels. /// Audio latency (in frames). /// Buffer output time (in system ticks). - public bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, + uint outTime) { AudioGuard(true); - return _lib.AudioCallback(outputBuffer, _channels, inputBuffer, inputChannels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } /// - public bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, + uint outTime) { AudioGuard(true); - return _lib.AudioCallback(outputBuffer, _channels, inputBuffer, inputChannels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } /// - public bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, + uint outTime) { AudioGuard(false); - return _lib.AudioCallback(outputBuffer, _channels, inputBuffer, inputChannels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } /// - public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, + uint outTime) { AudioGuard(false); - return _lib.AudioCallback(outputBuffer, _channels, inputBuffer, inputChannels, latency, outTime); + return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } #endregion audio I/O diff --git a/SunSharp/ObjectWrapper/Synthesizer.cs b/SunSharp/ObjectWrapper/Synthesizer.cs index ab5542e..9face70 100644 --- a/SunSharp/ObjectWrapper/Synthesizer.cs +++ b/SunSharp/ObjectWrapper/Synthesizer.cs @@ -1,6 +1,6 @@ -using SunSharp.ThinWrapper; -using System.Collections; +using System.Collections; using System.Collections.Generic; +using SunSharp.ThinWrapper; namespace SunSharp.ObjectWrapper { @@ -99,33 +99,26 @@ public ModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) public void RemoveModule(int moduleId) { - _slot.RunInLock(() => - { - _lib.RemoveModule(_id, moduleId); - }); + _slot.RunInLock(() => { _lib.RemoveModule(_id, moduleId); }); } public void RemoveModule(ModuleHandle module) => RemoveModule(module.Id); public void ConnectModule(int sourceId, int destinationId) { - _slot.RunInLock(() => - { - _lib.ConnectModule(_id, sourceId, destinationId); - }); + _slot.RunInLock(() => { _lib.ConnectModule(_id, sourceId, destinationId); }); } - public void ConnectModule(ModuleHandle source, ModuleHandle destination) => ConnectModule(source.Id, destination.Id); + public void ConnectModule(ModuleHandle source, ModuleHandle destination) => + ConnectModule(source.Id, destination.Id); public void DisconnectModule(int sourceId, int destinationId) { - _slot.RunInLock(() => - { - _lib.DisconnectModule(_id, sourceId, destinationId); - }); + _slot.RunInLock(() => { _lib.DisconnectModule(_id, sourceId, destinationId); }); } - public void DisconnectModule(ModuleHandle source, ModuleHandle destination) => DisconnectModule(source.Id, destination.Id); + public void DisconnectModule(ModuleHandle source, ModuleHandle destination) => + DisconnectModule(source.Id, destination.Id); public IEnumerator GetEnumerator() { diff --git a/SunSharp/ObjectWrapper/Timeline.cs b/SunSharp/ObjectWrapper/Timeline.cs index 598c041..20e2597 100644 --- a/SunSharp/ObjectWrapper/Timeline.cs +++ b/SunSharp/ObjectWrapper/Timeline.cs @@ -1,6 +1,6 @@ -using SunSharp.ThinWrapper; -using System.Collections; +using System.Collections; using System.Collections.Generic; +using SunSharp.ThinWrapper; namespace SunSharp.ObjectWrapper { @@ -55,7 +55,8 @@ public bool TryGetPattern(int id, out PatternHandle pattern) public PatternHandle CreatePattern(string name, int lines, int tracks, int x, int y, int? iconSeed = null) { - return Slot.RunInLock(() => { + return Slot.RunInLock(() => + { var id = _lib.CreatePattern(_id, null, x, y, tracks, lines, iconSeed, name); return new PatternHandle(this, id); }); @@ -65,14 +66,14 @@ public PatternHandle ClonePattern(PatternHandle original, int x, int y) { return Slot.RunInLock(() => { - var id = _lib.CreatePattern(_id, original.Id, x, y, -1, -1, null, null); + var id = _lib.CreatePattern(_id, original.Id, x, y, -1, -1, null, original.GetName()); return new PatternHandle(this, id); }); } public IEnumerator GetEnumerator() { - for (int i = 0; i < GetUpperPatternCount(); i++) + for (var i = 0; i < GetUpperPatternCount(); i++) if (TryGetPattern(i, out var p)) yield return p; } diff --git a/SunSharp/ObjectWrapper/VirtualPattern.cs b/SunSharp/ObjectWrapper/VirtualPattern.cs index 5f88783..268f814 100644 --- a/SunSharp/ObjectWrapper/VirtualPattern.cs +++ b/SunSharp/ObjectWrapper/VirtualPattern.cs @@ -9,8 +9,8 @@ public class VirtualPattern private readonly ISunVoxLib _lib; private readonly Slot _slot; private readonly int _id; - private int? lastSetTimeStamp; - private object _lock; + private int? _lastSetTimeStamp; + private readonly object _lock; internal VirtualPattern(Slot slot) { @@ -34,10 +34,10 @@ public void SendEventImmediately(int track, PatternEvent e) { lock (_lock) { - if (lastSetTimeStamp != null) + if (_lastSetTimeStamp != null) { - var previous = lastSetTimeStamp; - _lib.SetSendEventTimestamp(_id, true); + var previous = _lastSetTimeStamp; + _lib.SetSendEventTimestamp(_id, reset: true); _lib.SendEvent(_id, track, e); _lib.SetSendEventTimestamp(_id, false, previous.Value); } @@ -58,7 +58,7 @@ public void SetEventTiming(int timestamp) lock (_lock) { _lib.SetSendEventTimestamp(_id, false, timestamp); - lastSetTimeStamp = timestamp; + _lastSetTimeStamp = timestamp; } } @@ -71,7 +71,7 @@ public void ResetEventTiming() lock (_lock) { _lib.SetSendEventTimestamp(_id, true); - lastSetTimeStamp = null; + _lastSetTimeStamp = null; } } @@ -93,11 +93,11 @@ public void SendEvent(int track, PatternEvent @event) /// /// /// - public void SendEvent(int track, int NN = 0, int VV = 0, int MM = 0, int CCEE = 0, int XXYY = 0) + public void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0) { lock (_lock) { - _lib.SendEvent(_id, track, NN, VV, MM, CCEE, XXYY); + _lib.SendEvent(_id, track, nn, vv, mm, ccee, xxyy); } } } diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index bdb4ffe..e6f3f80 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -4,152 +4,76 @@ namespace SunSharp { [StructLayout(LayoutKind.Explicit, Size = 8)] - public readonly struct ImmutablePatternEvent : IEquatable, IEquatable + public struct PatternEvent : IEquatable { - [FieldOffset(0)] private readonly ulong _data; - [FieldOffset(0)] private readonly byte _nn; - [FieldOffset(1)] private readonly byte _vv; - [FieldOffset(2)] private readonly ushort _mm; - [FieldOffset(4)] private readonly ushort _ccee; - [FieldOffset(4)] private readonly byte _ee; - [FieldOffset(5)] private readonly byte _cc; - [FieldOffset(6)] private readonly ushort _xxyy; - [FieldOffset(6)] private readonly byte _yy; - [FieldOffset(7)] private readonly byte _xx; - - public ulong Data => _data; - public byte NN => _nn; - public Note Note => (Note)_nn; - public byte VV => _vv; - public ushort MM => _mm; - public ushort CCEE => _ccee; - public byte CC => _cc; - public byte EE => _ee; - public Effect Effect => (Effect)EE; - public ushort XXYY => _xxyy; - public byte YY => _yy; - public byte XX => _xx; - - public ImmutablePatternEvent(ulong value) : this() - { - _data = value; - } + [field: FieldOffset(0)] public ulong Data { get; set; } - public ImmutablePatternEvent(PatternEvent @event) : this(@event.Data) - { - } + [field: FieldOffset(0)] public byte NN { get; set; } - public ImmutablePatternEvent(byte nn, byte vv, ushort mm, ushort ccee, ushort xxyy) : this() - { - _nn = nn; - _vv = vv; - _mm = mm; - _ccee = ccee; - _xxyy = xxyy; - } + [field: FieldOffset(1)] public byte VV { get; set; } - public ImmutablePatternEvent(Note note, byte velocity, ushort module, byte controller, Effect effect, ushort xxyy) : this() - { - _nn = (byte)note; - _vv = velocity; - _mm = module; - _cc = controller; - _ee = (byte)effect; - _xxyy = xxyy; - } + [field: FieldOffset(2)] public ushort MM { get; set; } - public static implicit operator ImmutablePatternEvent(ulong value) - { - return new ImmutablePatternEvent(value); - } + [field: FieldOffset(4)] public ushort CCEE { get; set; } - public static implicit operator ulong(ImmutablePatternEvent ev) - { - return ev.Data; - } + [field: FieldOffset(5)] public byte CC { get; set; } - public override string ToString() => $"{(Note)NN}{VV:X2}{MM:X4}{CC:X2}{EE:X2}{XX:X2}{YY:X2}"; + [field: FieldOffset(4)] public byte EE { get; set; } + + [field: FieldOffset(6)] public ushort XXYY { get; set; } - public static bool operator ==(ImmutablePatternEvent a, ImmutablePatternEvent b) => a._data == b._data; + [field: FieldOffset(6)] public byte YY { get; set; } - public static bool operator !=(ImmutablePatternEvent a, ImmutablePatternEvent b) => a._data != b._data; + [field: FieldOffset(7)] public byte XX { get; set; } - public override bool Equals(object obj) + public Effect Effect { - if (obj is ImmutablePatternEvent readOnlyEvent) return readOnlyEvent._data == _data; - if (obj is PatternEvent @event) return @event.Data == _data; - return false; + get => (Effect)EE; + set => EE = (byte)value; } - public bool Equals(PatternEvent other) => this == other; - - public override int GetHashCode() => -1945990370 + _data.GetHashCode(); - - public bool Equals(ImmutablePatternEvent other) => _data == other.Data; - } - - [StructLayout(LayoutKind.Explicit, Size = 8)] - public struct PatternEvent : IEquatable, IEquatable - { - [FieldOffset(0)] private ulong _data; - [FieldOffset(0)] private byte _nn; - [FieldOffset(1)] private byte _vv; - [FieldOffset(2)] private ushort _mm; - [FieldOffset(4)] private ushort _ccee; - [FieldOffset(4)] private byte _ee; - [FieldOffset(5)] private byte _cc; - [FieldOffset(6)] private ushort _xxyy; - [FieldOffset(6)] private byte _yy; - [FieldOffset(7)] private byte _xx; - - public ulong Data { get => _data; set => _data = value; } - public byte NN { get => _nn; set => _nn = value; } - public Note Note { get => (Note)_nn; set => _nn = (byte)value; } - public byte VV { get => _vv; set => _vv = value; } - public ushort MM { get => _mm; set => _mm = value; } - public ushort CCEE { get => _ccee; set => _ccee = value; } - public byte CC { get => _cc; set => _cc = value; } - public byte EE { get => _ee; set => _ee = value; } - public Effect Effect { get => (Effect)_ee; set => _ee = (byte)value; } - public ushort XXYY { get => _xxyy; set => _xxyy = value; } - public byte YY { get => _yy; set => _yy = value; } - public byte XX { get => _xx; set => _xx = value; } + public Note Note + { + get => (Note)NN; + set => NN = (byte)value; + } public PatternEvent(ulong value) : this() { - _data = value; + Data = value; } public PatternEvent(Note note, byte velocity, ushort module) : this() { - _nn = note; - _vv = velocity; - _mm = module; + NN = note; + VV = velocity; + MM = module; } public PatternEvent(Effect effect, ushort xxyy) : this() { - _ee = (byte)effect; - _xxyy = xxyy; + EE = (byte)effect; + XXYY = xxyy; } public PatternEvent(byte nn, byte vv, ushort mm, ushort ccee, ushort xxyy) : this() { - _nn = nn; - _vv = vv; - _mm = mm; - _ccee = ccee; - _xxyy = xxyy; + NN = nn; + VV = vv; + MM = mm; + CCEE = ccee; + XXYY = xxyy; } - public PatternEvent(Note note, byte velocity, ushort module, byte controller, Effect effect, ushort xxyy) : this() + public PatternEvent(Note note, byte velocity, ushort module, byte controller, Effect effect, + ushort xxyy) : this() { - _nn = (byte)note; - _vv = velocity; - _mm = module; - _cc = controller; - _ee = (byte)effect; - _xxyy = xxyy; + NN = note; + VV = velocity; + MM = module; + CC = controller; + EE = (byte)effect; + XXYY = xxyy; } public static implicit operator PatternEvent(ulong value) @@ -162,23 +86,16 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public static implicit operator ImmutablePatternEvent(PatternEvent @event) - { - return new ImmutablePatternEvent(@event._data); - } - public override string ToString() => $"{(Note)NN}{VV:X2}{MM:X4}{CC:X2}{EE:X2}{XX:X2}{YY:X2}"; - public static bool operator ==(PatternEvent a, PatternEvent b) => a._data == b._data; + public static bool operator ==(PatternEvent a, PatternEvent b) => a.Data == b.Data; - public static bool operator !=(PatternEvent a, PatternEvent b) => a._data != b._data; + public static bool operator !=(PatternEvent a, PatternEvent b) => a.Data != b.Data; public override bool Equals(object obj) => obj is PatternEvent e && this == e; public bool Equals(PatternEvent other) => this == other; - public override int GetHashCode() => -1945990370 + _data.GetHashCode(); - - public bool Equals(ImmutablePatternEvent other) => _data == other.Data; + public override int GetHashCode() => -1945990370 + Data.GetHashCode(); } } diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index 7d7367e..a39e0b5 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netstandard2.1 True SunSharp Sotakebk @@ -24,14 +24,19 @@ README.md MIT snupkg + enable - 4 + 9999 + + $(WarningsAsErrors);NU1605;Nullable - 4 + 9999 + + $(WarningsAsErrors);NU1605;Nullable diff --git a/SunSharp/ThinWrapper/SunVoxException.cs b/SunSharp/ThinWrapper/SunVoxException.cs index b732f19..c94e51e 100644 --- a/SunSharp/ThinWrapper/SunVoxException.cs +++ b/SunSharp/ThinWrapper/SunVoxException.cs @@ -5,16 +5,16 @@ namespace SunSharp.ThinWrapper public sealed class SunVoxException : Exception { private readonly uint _code; - private readonly string _method; + private readonly string? _method; public override string Message => $"Error code: {_code:X}, method: {_method ?? "unknown"}."; - public SunVoxException(uint code, string method = null) + public SunVoxException(uint code, string? method = null) { _code = code; _method = method; } - public SunVoxException(int code, string method = null) : this((uint)code, method) + public SunVoxException(int code, string? method = null) : this((uint)code, method) { } } diff --git a/SunSharp/ThinWrapper/SunVoxLibExtensions.cs b/SunSharp/ThinWrapper/SunVoxLibExtensions.cs index 46513dd..e2646fb 100644 --- a/SunSharp/ThinWrapper/SunVoxLibExtensions.cs +++ b/SunSharp/ThinWrapper/SunVoxLibExtensions.cs @@ -9,33 +9,33 @@ public static class SunVoxLibExtensions private static short ToShortBitwise(uint value) { - if ((value & 0x8000) != 0) // sign byte - { - int val = (int)value; - return (short)(val - 0x10000); - } - return (short)value; + if ((value & 0x8000) == 0) + return (short)value; + + var val = (int)value; + return (short)(val - 0x10000); } private static int[] CopyIntArraySkipNegativeOnes(IntPtr ptr, int count) { - int c = 0; - for (int i = 0; i < count; i++) + var nonZeroValues = 0; + for (var i = 0; i < count; i++) { if (Marshal.ReadInt32(ptr, i * sizeof(int)) != -1) - c++; + nonZeroValues++; } - var arr = new int[c]; - c = 0; - for (int i = 0; i < count; i++) + var arr = new int[nonZeroValues]; + + var index = 0; + for (var i = 0; i < count; i++) { var value = Marshal.ReadInt32(ptr, i * sizeof(int)); - if (value != -1) - { - arr[c] = value; - c++; - } + if (value == -1) + continue; + + arr[index] = value; + index++; } return arr; @@ -58,13 +58,13 @@ public static (short x, short y) PositionToXY(uint xy) } /// - /// Get finetune and relative note value from one finetune value received from . + /// Get fine-tune and relative note value from packed fine-tune value received from . /// - public static (short finetune, short relativeNote) SplitFinetune(uint moduleFinetune) + public static (short fineTune, short relativeNote) SplitFineTune(uint packedFineTune) { - uint out_finetune = moduleFinetune & 0xFFFF; - uint out_relative_note = (moduleFinetune >> 16) & 0xFFFF; - return (ToShortBitwise(out_finetune), ToShortBitwise(out_relative_note)); + var outFineTune = packedFineTune & 0xFFFF; + var outRelativeNote = (packedFineTune >> 16) & 0xFFFF; + return (ToShortBitwise(outFineTune), ToShortBitwise(outRelativeNote)); } public static float FrequencyFromPitch(float pitch) @@ -95,17 +95,18 @@ public static double PitchFromFrequency(double frequency) #region audio rendering - private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, AudioChannels channels, int latency, uint outTime) + private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, AudioChannels channels, + int latency, uint outTime) { if (channels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) throw new ArgumentException("Buffer size is not a multiple of two."); - int frames = outputBuffer.Length; + var frames = outputBuffer.Length; if (channels == AudioChannels.Stereo) frames /= 2; var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); - IntPtr ptr = outHandle.AddrOfPinnedObject(); + var ptr = outHandle.AddrOfPinnedObject(); int ret; try { @@ -115,13 +116,16 @@ private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuff { outHandle.Free(); } + if (ret != 0 && ret != 1) throw new SunVoxException(ret, nameof(lib.sv_audio_callback)); - return (ret == 1); + return ret == 1; } - private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, AudioChannels outputChannels, V[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, int inputType) + private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, + AudioChannels outputChannels, V[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, + int inputType) { if (outputChannels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) throw new ArgumentException("Output buffer size is not a multiple of two."); @@ -129,32 +133,34 @@ private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputB if (inputChannels == AudioChannels.Stereo && (inputBuffer.Length & 1) != 0) throw new ArgumentException("Input buffer size is not a multiple of two."); - int inputFrames = inputBuffer.Length; + var inputFrames = inputBuffer.Length; if (inputChannels == AudioChannels.Stereo) inputFrames /= 2; - int outputFrmaes = outputBuffer.Length; + var outputFrames = outputBuffer.Length; if (outputChannels == AudioChannels.Stereo) - outputFrmaes /= 2; + outputFrames /= 2; - if (inputFrames != outputFrmaes) - throw new ArgumentException($"Input and output frame count is different (input: {inputFrames} vs {outputFrmaes})."); + if (inputFrames != outputFrames) + throw new ArgumentException( + $"Input and output frame count is different (input: {inputFrames} vs {outputFrames})."); var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); var inHandle = GCHandle.Alloc(inputBuffer, GCHandleType.Pinned); - IntPtr outPtr = outHandle.AddrOfPinnedObject(); - IntPtr inPtr = inHandle.AddrOfPinnedObject(); + var outPtr = outHandle.AddrOfPinnedObject(); + var inPtr = inHandle.AddrOfPinnedObject(); int ret; try { - int frames = - ret = lib.sv_audio_callback2(outPtr, outputFrmaes, latency, outTime, inputType, (int)inputChannels, inPtr); + ret = lib.sv_audio_callback2(outPtr, outputFrames, latency, outTime, inputType, (int)inputChannels, + inPtr); } finally { inHandle.Free(); outHandle.Free(); } + if (ret != 0 && ret != 1) throw new SunVoxException(ret, nameof(lib.sv_audio_callback2)); @@ -171,13 +177,15 @@ private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputB /// Audio latency (in frames). /// Buffer output time (in system ticks). /// if buffer was filled with zeros. - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels channels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels channels, int latency, + uint outTime) { return AudioCallbackInternal(lib, outputBuffer, channels, latency, outTime); } /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels channels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels channels, int latency, + uint outTime) { return AudioCallbackInternal(lib, outputBuffer, channels, latency, outTime); } @@ -195,27 +203,35 @@ public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, Audi /// Audio latency (in frames). /// Buffer output time (in system ticks). /// if buffer was filled with zeros. - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, + float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); + return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, + outTime, 1); } /// - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); + return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, + outTime, 0); } /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, + float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); + return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, + outTime, 1); } /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); + return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, + outTime, 0); } #endregion audio rendering @@ -232,7 +248,8 @@ public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, Audi /// Initialization flags. /// The version of underlying library. /// - public static Version Init(this ISunVoxLib lib, int sampleRate, string config = null, AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) + public static Version Init(this ISunVoxLib lib, int sampleRate, string? config = null, + AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) { var ptr = Marshal.StringToHGlobalAnsi(config); try @@ -265,11 +282,9 @@ public static void Deinit(this ISunVoxLib lib) /// /// Character count to be read. /// - public static string GetLog(this ISunVoxLib lib, int size) + public static string? GetLog(this ISunVoxLib lib, int size) { var ptr = lib.sv_get_log(size); - if (ptr == IntPtr.Zero) - return null; try { return Marshal.PtrToStringAnsi(ptr); @@ -282,18 +297,12 @@ public static string GetLog(this ISunVoxLib lib, int size) public static uint GetTicks(this ISunVoxLib lib) { - var ret = lib.sv_get_ticks(); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_ticks)); - return ret; + return lib.sv_get_ticks(); } public static uint GetTicksPerSecond(this ISunVoxLib lib) { - var ret = lib.sv_get_ticks_per_second(); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_ticks_per_second)); - return ret; + return lib.sv_get_ticks_per_second(); } public static int GetSampleRate(this ISunVoxLib lib) @@ -382,12 +391,9 @@ public static int GetSongLengthInLines(this ISunVoxLib lib, int slot) return (int)ret; } - public static string GetSongName(this ISunVoxLib lib, int slot) + public static string? GetSongName(this ISunVoxLib lib, int slot) { var ptr = lib.sv_get_song_name(slot); - if (ptr == IntPtr.Zero) - return null; - return Marshal.PtrToStringAnsi(ptr); } @@ -426,6 +432,7 @@ public static void Save(this ISunVoxLib lib, int slot, string path) { Marshal.FreeHGlobal(ptr); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_save)); } @@ -435,16 +442,17 @@ public static void SendEvent(this ISunVoxLib lib, int slot, int track, PatternEv SendEvent(lib, slot, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); } - public static void SendEvent(this ISunVoxLib lib, int slot, int track, int NN = 0, int VV = 0, int MM = 0, int CCEE = 0, int XXYY = 0) + public static void SendEvent(this ISunVoxLib lib, int slot, int track, int nn = 0, int vv = 0, int mm = 0, + int ccee = 0, int xxyy = 0) { - int ret = lib.sv_send_event(slot, track, NN, VV, MM, CCEE, XXYY); + var ret = lib.sv_send_event(slot, track, nn, vv, mm, ccee, xxyy); if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_send_event)); } - public static void SetAutostop(this ISunVoxLib lib, int slot, bool autostop) + public static void SetAutoStop(this ISunVoxLib lib, int slot, bool autoStop) { - var ret = lib.sv_set_autostop(slot, autostop ? 1 : 0); + var ret = lib.sv_set_autostop(slot, autoStop ? 1 : 0); if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_set_autostop)); } @@ -505,6 +513,7 @@ public static uint[] GetTimeMap(this ISunVoxLib lib, int slot, int startLine, in { handle.Free(); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_get_time_map)); return arr; @@ -526,6 +535,7 @@ public static void Load(this ISunVoxLib lib, int slot, string path) { Marshal.FreeHGlobal(ptr); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_load)); } @@ -546,6 +556,7 @@ public static void Load(this ISunVoxLib lib, int slot, byte[] data) { handle.Free(); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_load)); } @@ -594,7 +605,7 @@ public static void UnlockSlot(this ISunVoxLib lib, int slot) /// public static void RunInLock(this ISunVoxLib lib, int slot, Action action) { - bool entered = false; + var entered = false; try { lib.LockSlot(slot); @@ -704,13 +715,14 @@ public static int FindModule(this ISunVoxLib lib, int slot, string name) { Marshal.FreeHGlobal(ptr); } + if (ret < -1) throw new SunVoxException(ret, nameof(lib.sv_find_module)); return ret; } - public static (byte R, byte G, byte B) GetModuleColor(this ISunVoxLib lib, int slot, int module) + public static (byte r, byte g, byte b) GetModuleColor(this ISunVoxLib lib, int slot, int module) { var ret = lib.sv_get_module_color(slot, module); var red = (byte)((ret) & 0xFF); @@ -719,37 +731,37 @@ public static (byte R, byte G, byte B) GetModuleColor(this ISunVoxLib lib, int s return (red, green, blue); } - public static void SetModuleColor(this ISunVoxLib lib, int slot, int module, byte R, byte G, byte B) + public static void SetModuleColor(this ISunVoxLib lib, int slot, int module, byte r, byte g, byte b) { - var color = R & (G << 8) & (B << 16); + var color = r & (g << 8) & (b << 16); var ret = lib.sv_set_module_color(slot, module, color); if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_set_module_color)); } - public static string GetModuleControllerName(this ISunVoxLib lib, int slot, int module, int controller) + public static string? GetModuleControllerName(this ISunVoxLib lib, int slot, int module, int controller) { var ptr = lib.sv_get_module_ctl_name(slot, module, controller); - if (ptr == IntPtr.Zero) - return null; - return Marshal.PtrToStringAnsi(ptr); } /// /// Get module controller value. /// - public static int GetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, ValueScalingType scaling) + public static int GetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, + ValueScalingType scaling) { return lib.sv_get_module_ctl_value(slot, module, controller, (int)scaling); } - public static int GetModuleControllerMinValue(this ISunVoxLib lib, int slot, int module, int controller, ValueScalingType scaling) + public static int GetModuleControllerMinValue(this ISunVoxLib lib, int slot, int module, int controller, + ValueScalingType scaling) { return lib.sv_get_module_ctl_min(slot, module, controller, (int)scaling); } - public static int GetModuleControllerMaxValue(this ISunVoxLib lib, int slot, int module, int controller, ValueScalingType scaling) + public static int GetModuleControllerMaxValue(this ISunVoxLib lib, int slot, int module, int controller, + ValueScalingType scaling) { return lib.sv_get_module_ctl_max(slot, module, controller, (int)scaling); } @@ -776,21 +788,23 @@ public static int GetModuleControllerGroup(this ISunVoxLib lib, int slot, int mo /// /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce latency). /// - public static void SetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, int value, ValueScalingType scaling) + public static void SetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, + int value, ValueScalingType scaling) { var ret = lib.sv_set_module_ctl_value(slot, module, controller, value, (int)scaling); if (ret != 0) throw new SunVoxException(0, nameof(lib.sv_set_module_ctl_value)); } - public static (int finetune, int relativeNote) GetModuleFinetune(this ISunVoxLib lib, int slot, int module) + public static FineTunePair GetModuleFineTune(this ISunVoxLib lib, int slot, int module) { - return SplitFinetune(lib.sv_get_module_finetune(slot, module)); + var (fineTune, relativeNote) = SplitFineTune(lib.sv_get_module_finetune(slot, module)); + return new FineTunePair(fineTune, relativeNote); } - public static void SetModuleFinetune(this ISunVoxLib lib, int slot, int module, int finetune) + public static void SetModuleFineTune(this ISunVoxLib lib, int slot, int module, int fineTune) { - var ret = lib.sv_set_module_finetune(slot, module, finetune); + var ret = lib.sv_set_module_finetune(slot, module, fineTune); if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_set_module_finetune)); } @@ -834,12 +848,9 @@ public static int[] GetModuleInputs(this ISunVoxLib lib, int slot, int module) } } - public static string GetModuleName(this ISunVoxLib lib, int slot, int module) + public static string? GetModuleName(this ISunVoxLib lib, int slot, int module) { var ptr = lib.sv_get_module_name(slot, module); - if (ptr == IntPtr.Zero) - return null; - return Marshal.PtrToStringAnsi(ptr); } @@ -858,12 +869,9 @@ public static void SetModuleName(this ISunVoxLib lib, int slot, int module, stri } } - public static string GetModuleType(this ISunVoxLib lib, int slot, int module) + public static string? GetModuleType(this ISunVoxLib lib, int slot, int module) { var ptr = lib.sv_get_module_type(slot, module); - if (ptr == IntPtr.Zero) - return null; - return Marshal.PtrToStringAnsi(ptr); } @@ -895,7 +903,7 @@ public static int[] GetModuleOutputs(this ISunVoxLib lib, int slot, int module) public static int ReadModuleScope(this ISunVoxLib lib, int slot, int module, int channel, short[] buffer) { var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); - IntPtr ptr = handle.AddrOfPinnedObject(); + var ptr = handle.AddrOfPinnedObject(); try { return (int)lib.sv_get_module_scope2(slot, module, channel, ptr, (uint)buffer.Length); @@ -955,6 +963,7 @@ public static int LoadModule(this ISunVoxLib lib, int slot, string path, int x = { Marshal.FreeHGlobal(ptr); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_load_module)); return ret; @@ -977,6 +986,7 @@ public static int LoadModule(this ISunVoxLib lib, int slot, byte[] data, int x = { handle.Free(); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_load_module_from_memory)); return ret; @@ -994,6 +1004,7 @@ public static int WriteModuleCurve(this ISunVoxLib lib, int slot, int module, in { handle.Free(); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_module_curve)); return ret; @@ -1011,6 +1022,7 @@ public static int ReadModuleCurve(this ISunVoxLib lib, int slot, int module, int { handle.Free(); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_module_curve)); return ret; @@ -1022,7 +1034,8 @@ public static int ReadModuleCurve(this ISunVoxLib lib, int slot, int module, int /// /// ID of newly created module. /// - public static int CreateModule(this ISunVoxLib lib, int slot, string type, string name, int x = 0, int y = 0, int z = 0) + public static int CreateModule(this ISunVoxLib lib, int slot, string type, string name, int x = 0, int y = 0, + int z = 0) { var typeptr = Marshal.StringToHGlobalAnsi(type); var nameptr = Marshal.StringToHGlobalAnsi(name); @@ -1036,6 +1049,7 @@ public static int CreateModule(this ISunVoxLib lib, int slot, string type, strin Marshal.FreeHGlobal(typeptr); Marshal.FreeHGlobal(nameptr); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_new_module)); return ret; @@ -1058,7 +1072,8 @@ public static void RemoveModule(this ISunVoxLib lib, int slot, int module) /// Set to -1 to apply the sample to all sample slots. /// /// - public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, string path, int sampleSlot = -1) + public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, string path, + int sampleSlot = -1) { var ptr = Marshal.StringToHGlobalAnsi(path); int ret; @@ -1070,6 +1085,7 @@ public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, { Marshal.FreeHGlobal(ptr); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_sampler_load)); } @@ -1079,18 +1095,21 @@ public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, /// Set to -1 to apply the sample to all sample slots. /// /// - public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, byte[] data, int sampleSlot = -1) + public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, byte[] data, + int sampleSlot = -1) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; try { - ret = lib.sv_sampler_load_from_memory(slot, module, handle.AddrOfPinnedObject(), (uint)data.Length, sampleSlot); + ret = lib.sv_sampler_load_from_memory(slot, module, handle.AddrOfPinnedObject(), (uint)data.Length, + sampleSlot); } finally { handle.Free(); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_sampler_load_from_memory)); } @@ -1111,6 +1130,7 @@ public static void LoadIntoMetaModule(this ISunVoxLib lib, int slot, int module, { Marshal.FreeHGlobal(ptr); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_metamodule_load)); } @@ -1131,6 +1151,7 @@ public static void LoadIntoMetaModule(this ISunVoxLib lib, int slot, int module, { handle.Free(); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_metamodule_load_from_memory)); } @@ -1151,6 +1172,7 @@ public static void LoadIntoVorbisPLayer(this ISunVoxLib lib, int slot, int modul { Marshal.FreeHGlobal(ptr); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_vplayer_load)); } @@ -1171,6 +1193,7 @@ public static void LoadIntoVorbisPLayer(this ISunVoxLib lib, int slot, int modul { handle.Free(); } + if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_vplayer_load_from_memory)); } @@ -1183,18 +1206,20 @@ public static void LoadIntoVorbisPLayer(this ISunVoxLib lib, int slot, int modul /// Use or an alternative! /// /// - public static int CreatePattern(this ISunVoxLib lib, int slot, int? patternToClone, int x, int y, int tracks, int lines, int? iconSeed, string name) + public static int CreatePattern(this ISunVoxLib lib, int slot, int? patternToClone, int x, int y, int tracks, + int lines, int? iconSeed, string? name) { var ptr = Marshal.StringToHGlobalAnsi(name); int ret; try { - ret = lib.sv_new_pattern(slot, patternToClone ?? -1, x, y, tracks, lines, iconSeed ?? 0, ptr); ; + ret = lib.sv_new_pattern(slot, patternToClone ?? -1, x, y, tracks, lines, iconSeed ?? 0, ptr); } finally { Marshal.FreeHGlobal(ptr); } + if (ret < 0) throw new SunVoxException(ret, nameof(lib.sv_new_pattern)); return ret; @@ -1240,13 +1265,15 @@ public static int FindPattern(this ISunVoxLib lib, int slot, string name) { Marshal.FreeHGlobal(ptr); } + if (ret < -1) throw new SunVoxException(ret, nameof(lib.sv_find_pattern)); return ret; } - public static int GetPatternEventValue(this ISunVoxLib lib, int slot, int pattern, int track, int line, Column column) + public static int GetPatternEventValue(this ISunVoxLib lib, int slot, int pattern, int track, int line, + Column column) { var ret = lib.sv_get_pattern_event(slot, pattern, track, line, (int)column); if (ret < 0) @@ -1254,12 +1281,9 @@ public static int GetPatternEventValue(this ISunVoxLib lib, int slot, int patter return ret; } - public static string GetPatternName(this ISunVoxLib lib, int slot, int pattern) + public static string? GetPatternName(this ISunVoxLib lib, int slot, int pattern) { var ptr = lib.sv_get_pattern_name(slot, pattern); - if (ptr == IntPtr.Zero) - return null; - return Marshal.PtrToStringAnsi(ptr); } @@ -1306,7 +1330,8 @@ public static int GetPatternTracks(this ISunVoxLib lib, int slot, int pattern) /// /// Use or an alternative! /// - public static void SetPatternSize(this ISunVoxLib lib, int slot, int pattern, int? tracks = null, int? lines = null) + public static void SetPatternSize(this ISunVoxLib lib, int slot, int pattern, int? tracks = null, + int? lines = null) { var ret = lib.sv_set_pattern_size(slot, pattern, tracks ?? -1, lines ?? -1); if (ret < 0) @@ -1342,13 +1367,13 @@ public static void SetPatternPosition(this ISunVoxLib lib, int slot, int pattern /// /// Use or an alternative! /// - public static PatternEvent[] GetPatternData(this ISunVoxLib lib, int slot, int pattern) + public static PatternEvent[]? GetPatternData(this ISunVoxLib lib, int slot, int pattern) { if (!GetPatternExists(lib, slot, pattern)) return null; - int lines = GetPatternLines(lib, slot, pattern); - int tracks = GetPatternTracks(lib, slot, pattern); + var lines = GetPatternLines(lib, slot, pattern); + var tracks = GetPatternTracks(lib, slot, pattern); var ptr = lib.sv_get_pattern_data(slot, pattern); if (ptr == IntPtr.Zero) @@ -1356,7 +1381,7 @@ public static PatternEvent[] GetPatternData(this ISunVoxLib lib, int slot, int p try { var arr = new PatternEvent[lines * tracks]; - for (int i = 0; i < lines * tracks; i++) + for (var i = 0; i < lines * tracks; i++) arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); return arr; } @@ -1376,13 +1401,12 @@ public static void SetPatternData(this ISunVoxLib lib, int slot, int pattern, Pa if (ptr == IntPtr.Zero) throw new SunVoxException(ptr.ToInt32(), nameof(lib.sv_get_pattern_data)); - int lines = GetPatternLines(lib, slot, pattern); - int tracks = GetPatternTracks(lib, slot, pattern); + var lines = GetPatternLines(lib, slot, pattern); + var tracks = GetPatternTracks(lib, slot, pattern); var minSize = Math.Min(lines * tracks, data.Length); - // TODO CHANGEME when raising .NET version, use memory copy between IntPtr and IntPtr? - for (int i = 0; i < data.Length; i++) + for (var i = 0; i < minSize; i++) { Marshal.WriteInt64(ptr + i * sizeof(ulong), unchecked((long)data[i].Data)); } @@ -1400,14 +1424,16 @@ public static bool SetPatternMute(this ISunVoxLib lib, int slot, int pattern, bo return ret == 1; } - public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, int NN, int VV, int MM, int CCEE, int XXYY) + public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, int NN, + int VV, int MM, int CCEE, int XXYY) { var ret = lib.sv_set_pattern_event(slot, pattern, track, line, NN, VV, MM, CCEE, XXYY); if (ret != 0) throw new SunVoxException(ret, nameof(lib.sv_set_pattern_event)); } - public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, PatternEvent ev) + public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, + PatternEvent ev) { var ret = lib.sv_set_pattern_event(slot, pattern, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); if (ret != 0) diff --git a/SunSharp/ThinWrapper/ThinWrapperEnums.cs b/SunSharp/ThinWrapper/ThinWrapperEnums.cs index 4c03490..b4949cf 100644 --- a/SunSharp/ThinWrapper/ThinWrapperEnums.cs +++ b/SunSharp/ThinWrapper/ThinWrapperEnums.cs @@ -3,7 +3,8 @@ namespace SunSharp.ThinWrapper { [Flags] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", + Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] public enum InitFlags : uint { Default = 0, diff --git a/SunSharp/Version.cs b/SunSharp/Version.cs index e704b7c..49886a2 100644 --- a/SunSharp/Version.cs +++ b/SunSharp/Version.cs @@ -2,26 +2,26 @@ { public readonly struct Version { - public byte Major => _major; - public byte Minor => _minor; - public byte Minor2 => _minor2; + public byte Major { get; } - private readonly byte _major, _minor, _minor2; + public byte Minor { get; } + + public byte Minor2 { get; } public Version(byte major, byte minor, byte minor2) { - _major = major; - _minor = minor; - _minor2 = minor2; + Major = major; + Minor = minor; + Minor2 = minor2; } public Version(int code) { - _major = (byte)(code >> 16 & 255); - _minor = (byte)(code >> 8 & 255); - _minor2 = (byte)(code & 255); + Major = (byte)(code >> 16 & 255); + Minor = (byte)(code >> 8 & 255); + Minor2 = (byte)(code & 255); } - public override string ToString() => $"SunVox Lib v{_major}.{_minor}.{_minor2}"; + public override string ToString() => $"SunVox Lib v{Major}.{Minor}.{Minor2}"; } } From 656e83073bf23a0378d6e1fa2a899986d0e8038b Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sat, 29 Jul 2023 19:23:33 +0200 Subject: [PATCH 02/27] reorganize project --- CodeGeneration/CodeGeneration.csproj | 21 - .../Generators/AdditionalGenerator.cs | 24 - CodeGeneration/Generators/BaseGenerator.cs | 37 - .../Generators/FMXAdditionalCodeGenerator.cs | 134 - .../MetaModuleAdditionalCodeGenerator.cs | 14 - .../SamplerAdditionalCodeGenerator.cs | 16 - .../ModuleData_Generator.cs | 147 - .../ModuleType_Generator.cs | 81 - .../ProxyClass_Generator.cs | 185 - .../SpecificModules_Generator.cs | 249 - .../VorbisPlayerAdditionalGenerator.cs | 14 - CodeGeneration/ModuleDataParser.cs | 144 - CodeGeneration/ModuleTypes.cs | 62 - CodeGeneration/Program.cs | 113 - CodeGeneration/ReparsedData/Classes.cs | 113 - .../ReparsedData/Data.Regenerated.cs | 1697 ---- CodeGeneration/ReparsedData/Data.cs | 8 - CodeGeneration/all_modules.sunvox | Bin 23910 -> 0 bytes Examples/BaseExample.cs | 36 - Examples/ExampleContainer.cs | 27 - Examples/Examples.csproj | 28 - .../ObjectWrapperListModulesAndPatterns.cs | 62 - Examples/ObjectWrapperManagePatterns.cs | 67 - Examples/ObjectWrapperPlaySong.cs | 42 - Examples/ObjectWrapperSendEvents.cs | 56 - Examples/ObjectWrapperUseModules.cs | 69 - Examples/Program.cs | 35 - Examples/ThinWrapperListModulesAndPatterns.cs | 82 - Examples/ThinWrapperPlaySong.cs | 40 - Examples/ThinWrapperSendEvents.cs | 54 - Examples/ThinWrapperUserAudioCallback.cs | 87 - Examples/jump_demo.sunvox | Bin 17206 -> 0 bytes Examples/the_lick.sunvox | Bin 2343 -> 0 bytes .../CodeGenerationTools/BaseGenerator.cs | 25 + .../CodeGenerationContext.cs | 22 +- .../CodeGenerationTools/PathHelper.cs | 47 + .../NativeProxy/NativeProxyCodeGeneration.cs | 23 + .../NativeProxy/NativeProxyGenerator.cs | 168 + .../NativeProxy/TypeNameTranslation.cs | 39 + .../SunSharp.CodeGeneration.csproj | 25 + SunSharp.IntegrationTests/LockingTests.cs | 6 + .../SunSharp.IntegrationTests.csproj | 24 + SunSharp.IntegrationTests/SunVoxLibDriver.cs | 33 + .../sunvox_linux_x86_64.so | Bin SunSharp.Redistribution/LibraryLoader.cs | 103 + .../LibraryLoadingException.cs | 15 + SunSharp.Redistribution/RELEASE-NOTES.txt | 21 + SunSharp.Redistribution/Redistribution.cs | 177 - .../SunSharp.Redistribution.csproj | 72 +- .../SunSharp.Redistribution.nuspec | 7 + SunSharp.Redistribution/UnixLibraryHandler.cs | 76 + .../WindowsLibraryHandler.cs | 75 + .../linux-arm64/native}/sunvox.so | Bin .../runtimes/linux-x86-64/native/native.so | Bin 0 -> 904496 bytes .../linux-x86/native/native.so} | Bin .../macos-arm64/native}/sunvox.dylib | Bin .../macos-x86-64/native}/sunvox.dylib | Bin .../win-x64/native}/sunvox.dll | Bin .../win-x86-64/native}/sunvox.dll | Bin SunSharp.UnitTests/HelperTests.cs | 126 + SunSharp.UnitTests/SunSharp.UnitTests.csproj | 28 + .../SunVoxLibExtensionsTests.cs | 230 + SunSharp.sln | 26 +- SunSharp.sln.DotSettings.user | 12 + .../{DerivedData => Data}/ControllerData.cs | 2 +- .../DataReader.cs} | 28 +- .../{DerivedData => Data}/IDeepCopyable.cs | 2 +- SunSharp/{DerivedData => Data}/ModuleData.cs | 6 +- SunSharp/{DerivedData => Data}/PatternData.cs | 2 +- SunSharp/{DerivedData => Data}/SongData.cs | 2 +- SunSharp/Enums.cs | 57 +- SunSharp/{FineTunePair.cs => FineTune.cs} | 10 +- SunSharp/Helper.cs | 95 + SunSharp/ISunVoxLib.Modules.cs | 170 + SunSharp/ISunVoxLib.Patterns.cs | 85 + SunSharp/ISunVoxLib.cs | 539 +- .../LibraryLoading/ProxyClass.Generated.cs | 467 - SunSharp/{Version.cs => LibraryVersion.cs} | 10 +- SunSharp/ModuleFlags.cs | 22 +- SunSharp/Native/ISunVoxLibC.cs | 478 + SunSharp/Native/Loader/LibraryHandler.cs | 28 + .../NativeProxy.ISunVoxLibC.Generated.cs | 646 ++ SunSharp/Native/Loader/NativeProxy.cs | 77 + SunSharp/Native/SunVoxLibNative.Modules.cs | 483 + SunSharp/Native/SunVoxLibNative.Patterns.cs | 225 + SunSharp/Native/SunVoxLibNative.cs | 477 + SunSharp/{ => Native}/sunvox.h | 0 SunSharp/Note.cs | 52 +- SunSharp/ObjectWrapper/Enums.cs | 10 - SunSharp/ObjectWrapper/ModuleHandle.cs | 216 - .../ObjectWrapper/ModuleType.Generated.cs | 157 - .../Modules/IModuleHandleWrapper.cs | 106 - .../Modules/SpecificModules.Generated.cs | 7895 ----------------- SunSharp/ObjectWrapper/PatternHandle.cs | 167 - SunSharp/ObjectWrapper/Slot.cs | 272 - SunSharp/ObjectWrapper/Slots.cs | 78 - SunSharp/ObjectWrapper/SunVox.cs | 226 - SunSharp/ObjectWrapper/Synthesizer.cs | 132 - SunSharp/ObjectWrapper/Timeline.cs | 83 - SunSharp/ObjectWrapper/VirtualPattern.cs | 104 - SunSharp/PatternEvent.cs | 39 +- SunSharp/README.md | 5 +- SunSharp/RELEASE-NOTES.txt | 21 + SunSharp/SunSharp.csproj | 31 +- SunSharp/{ThinWrapper => }/SunVoxException.cs | 2 +- SunSharp/SunVoxLibExtensions.cs | 214 + SunSharp/ThinWrapper/SunVoxLibExtensions.cs | 1445 --- SunSharp/ThinWrapper/ThinWrapperEnums.cs | 40 - 108 files changed, 4479 insertions(+), 15851 deletions(-) delete mode 100644 CodeGeneration/CodeGeneration.csproj delete mode 100644 CodeGeneration/Generators/AdditionalGenerator.cs delete mode 100644 CodeGeneration/Generators/BaseGenerator.cs delete mode 100644 CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs delete mode 100644 CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs delete mode 100644 CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs delete mode 100644 CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs delete mode 100644 CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs delete mode 100644 CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs delete mode 100644 CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs delete mode 100644 CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs delete mode 100644 CodeGeneration/ModuleDataParser.cs delete mode 100644 CodeGeneration/ModuleTypes.cs delete mode 100644 CodeGeneration/Program.cs delete mode 100644 CodeGeneration/ReparsedData/Classes.cs delete mode 100644 CodeGeneration/ReparsedData/Data.Regenerated.cs delete mode 100644 CodeGeneration/ReparsedData/Data.cs delete mode 100644 CodeGeneration/all_modules.sunvox delete mode 100644 Examples/BaseExample.cs delete mode 100644 Examples/ExampleContainer.cs delete mode 100644 Examples/Examples.csproj delete mode 100644 Examples/ObjectWrapperListModulesAndPatterns.cs delete mode 100644 Examples/ObjectWrapperManagePatterns.cs delete mode 100644 Examples/ObjectWrapperPlaySong.cs delete mode 100644 Examples/ObjectWrapperSendEvents.cs delete mode 100644 Examples/ObjectWrapperUseModules.cs delete mode 100644 Examples/Program.cs delete mode 100644 Examples/ThinWrapperListModulesAndPatterns.cs delete mode 100644 Examples/ThinWrapperPlaySong.cs delete mode 100644 Examples/ThinWrapperSendEvents.cs delete mode 100644 Examples/ThinWrapperUserAudioCallback.cs delete mode 100644 Examples/jump_demo.sunvox delete mode 100644 Examples/the_lick.sunvox create mode 100644 SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs rename {CodeGeneration/Generators => SunSharp.CodeGeneration/CodeGenerationTools}/CodeGenerationContext.cs (63%) create mode 100644 SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs create mode 100644 SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs create mode 100644 SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs create mode 100644 SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs create mode 100644 SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj create mode 100644 SunSharp.IntegrationTests/LockingTests.cs create mode 100644 SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj create mode 100644 SunSharp.IntegrationTests/SunVoxLibDriver.cs rename SunSharp.Redistribution/lib/linux/lib_x86_64/sunvox.so => SunSharp.IntegrationTests/sunvox_linux_x86_64.so (100%) create mode 100644 SunSharp.Redistribution/LibraryLoader.cs create mode 100644 SunSharp.Redistribution/LibraryLoadingException.cs create mode 100644 SunSharp.Redistribution/RELEASE-NOTES.txt delete mode 100644 SunSharp.Redistribution/Redistribution.cs create mode 100644 SunSharp.Redistribution/SunSharp.Redistribution.nuspec create mode 100644 SunSharp.Redistribution/UnixLibraryHandler.cs create mode 100644 SunSharp.Redistribution/WindowsLibraryHandler.cs rename SunSharp.Redistribution/{lib/linux/lib_arm64 => runtimes/linux-arm64/native}/sunvox.so (100%) create mode 100644 SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so rename SunSharp.Redistribution/{lib/linux/lib_x86/sunvox.so => runtimes/linux-x86/native/native.so} (100%) rename SunSharp.Redistribution/{lib/macos/lib_arm64 => runtimes/macos-arm64/native}/sunvox.dylib (100%) rename SunSharp.Redistribution/{lib/macos/lib_x86_64 => runtimes/macos-x86-64/native}/sunvox.dylib (100%) rename SunSharp.Redistribution/{lib/windows/lib_x86_64 => runtimes/win-x64/native}/sunvox.dll (100%) rename SunSharp.Redistribution/{lib/windows/lib_x86 => runtimes/win-x86-64/native}/sunvox.dll (100%) create mode 100644 SunSharp.UnitTests/HelperTests.cs create mode 100644 SunSharp.UnitTests/SunSharp.UnitTests.csproj create mode 100644 SunSharp.UnitTests/SunVoxLibExtensionsTests.cs create mode 100644 SunSharp.sln.DotSettings.user rename SunSharp/{DerivedData => Data}/ControllerData.cs (94%) rename SunSharp/{DerivedData/DerivedDataFactory.cs => Data/DataReader.cs} (89%) rename SunSharp/{DerivedData => Data}/IDeepCopyable.cs (70%) rename SunSharp/{DerivedData => Data}/ModuleData.cs (90%) rename SunSharp/{DerivedData => Data}/PatternData.cs (97%) rename SunSharp/{DerivedData => Data}/SongData.cs (98%) rename SunSharp/{FineTunePair.cs => FineTune.cs} (76%) create mode 100644 SunSharp/Helper.cs create mode 100644 SunSharp/ISunVoxLib.Modules.cs create mode 100644 SunSharp/ISunVoxLib.Patterns.cs delete mode 100644 SunSharp/LibraryLoading/ProxyClass.Generated.cs rename SunSharp/{Version.cs => LibraryVersion.cs} (62%) create mode 100644 SunSharp/Native/ISunVoxLibC.cs create mode 100644 SunSharp/Native/Loader/LibraryHandler.cs create mode 100644 SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs create mode 100644 SunSharp/Native/Loader/NativeProxy.cs create mode 100644 SunSharp/Native/SunVoxLibNative.Modules.cs create mode 100644 SunSharp/Native/SunVoxLibNative.Patterns.cs create mode 100644 SunSharp/Native/SunVoxLibNative.cs rename SunSharp/{ => Native}/sunvox.h (100%) delete mode 100644 SunSharp/ObjectWrapper/Enums.cs delete mode 100644 SunSharp/ObjectWrapper/ModuleHandle.cs delete mode 100644 SunSharp/ObjectWrapper/ModuleType.Generated.cs delete mode 100644 SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs delete mode 100644 SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs delete mode 100644 SunSharp/ObjectWrapper/PatternHandle.cs delete mode 100644 SunSharp/ObjectWrapper/Slot.cs delete mode 100644 SunSharp/ObjectWrapper/Slots.cs delete mode 100644 SunSharp/ObjectWrapper/SunVox.cs delete mode 100644 SunSharp/ObjectWrapper/Synthesizer.cs delete mode 100644 SunSharp/ObjectWrapper/Timeline.cs delete mode 100644 SunSharp/ObjectWrapper/VirtualPattern.cs create mode 100644 SunSharp/RELEASE-NOTES.txt rename SunSharp/{ThinWrapper => }/SunVoxException.cs (94%) create mode 100644 SunSharp/SunVoxLibExtensions.cs delete mode 100644 SunSharp/ThinWrapper/SunVoxLibExtensions.cs delete mode 100644 SunSharp/ThinWrapper/ThinWrapperEnums.cs diff --git a/CodeGeneration/CodeGeneration.csproj b/CodeGeneration/CodeGeneration.csproj deleted file mode 100644 index 0601260..0000000 --- a/CodeGeneration/CodeGeneration.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - Exe - net6.0 - enable - disable - - - - - - - - - - PreserveNewest - - - - diff --git a/CodeGeneration/Generators/AdditionalGenerator.cs b/CodeGeneration/Generators/AdditionalGenerator.cs deleted file mode 100644 index 9d4e844..0000000 --- a/CodeGeneration/Generators/AdditionalGenerator.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace CodeGeneration.Generators -{ - public abstract class AdditionalGenerator - { - public CodeGenerationContext Context { get; set; } - public ReparsedData.Data Data { get; set; } - - public AdditionalGenerator() - { - } - - protected string GetTabs() => Context.GetTabs(); - - protected void AddIndent(Action action) => Context.AddIndent(action); - - protected void AppendLine(string value = "") => Context.AppendLine(value); - - protected void AppendLineNoTab(string value = "") => Context.AppendLineNoTab(value); - - protected void Append(string value = "") => Context.Append(value); - - public abstract void AppendCode(); - } -} diff --git a/CodeGeneration/Generators/BaseGenerator.cs b/CodeGeneration/Generators/BaseGenerator.cs deleted file mode 100644 index d802267..0000000 --- a/CodeGeneration/Generators/BaseGenerator.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace CodeGeneration.Generators -{ - internal abstract class BaseGenerator - { - protected CodeGenerationContext Context = new CodeGenerationContext(); - - protected string GetTabs() => Context.GetTabs(); - - protected void AddIndent(Action action) => Context.AddIndent(action); - - protected void AppendLine(string value = "") => Context.AppendLine(value); - - protected void AppendLineNoTab(string value = "") => Context.AppendLineNoTab(value); - - protected void Append(string value = "") => Context.Append(value); - - internal bool Generate(string filePath) - { - GenerateBody(); - var content = Context.GetBuiltString(); - - var existingFile = File.Exists(filePath) ? File.ReadAllText(filePath) : null; - if (existingFile == content) - return false; - using (var file = File.CreateText(filePath)) - { - file.Write(content); - file.Flush(); - file.Close(); - } - - return true; - } - - protected abstract void GenerateBody(); - } -} diff --git a/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs b/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs deleted file mode 100644 index 58ec493..0000000 --- a/CodeGeneration/Generators/FMXAdditionalCodeGenerator.cs +++ /dev/null @@ -1,134 +0,0 @@ -using CodeGeneration.ReparsedData; -using SunSharp; - -namespace CodeGeneration.Generators -{ - internal class FMXAdditionalCodeGenerator : AdditionalGenerator - { - private const int SubGeneratorStart = 1; - private const int SubGeneratorEnd = 5; - - public override void AppendCode() - { - var methods = new string[] - { - "Volume", - "Attack", - "Decay", - "SustainLevel", - "Release", - "AttackCurve", - "DecayCurve", - "ReleaseCurve", - "Sustain", - "SustainPedal", - "EnvelopeScalingPerKey", - "VolumeScalingPerKey", - "VelocitySensitivity", - "Waveform", - "Noise", - "Phase", - "FreqMultiply", - "ConstantPitch", - "SelfModulation", - "Feedback", - "ModulationType", - }; - - foreach (var method in methods) - { - var module = Data.Modules.First(m => m.FriendlyName == "FMX"); - var originalController = module.Controllers.First(c => c.FriendlyName.StartsWith(method) - && c.FriendlyName.EndsWith( - $"{SubGeneratorStart}")); - AppendGroupMethod(method, originalController); - } - } - - private void AppendGroupMethod(string name, CtlDesc c) - { - if (!string.IsNullOrWhiteSpace(c.EnumTypeName)) - { - // ENUM - var @enum = Data.Enums.First(e => e.Name == c.EnumTypeName); - - AppendLine("/// "); - AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine( - $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); - AppendLine("/// "); - - AppendLine($"public {@enum.Name} Get{name}(int index)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); - AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); - AppendLine(); - AppendLine( - $"return ({@enum.Name})ModuleHandle.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - }); - AppendLine("}"); - AppendLine(); - - AppendLine("/// "); - AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine( - $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); - AppendLine("/// "); - - AppendLine($"public void Set{name}(int index, {@enum.Name} value)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); - AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); - AppendLine(); - AppendLine( - $"ModuleHandle.SetControllerValue({c.Id} + index - 1, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - }); - AppendLine("}"); - AppendLine(); - } - else - { - // REAL - AppendLine("/// "); - AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine($"/// Value range: {c.MinValue} to {c.MaxValue} "); - AppendLine("/// "); - - AppendLine($"public int Get{name}(int index)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); - AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); - AppendLine(); - AppendLine( - $"return ModuleHandle.GetControllerValue({c.Id} + index - 1, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - }); - AppendLine("}"); - AppendLine(); - - AppendLine("/// "); - AppendLine($"/// index range: {SubGeneratorStart} to {SubGeneratorEnd} "); - AppendLine($"/// Value range: {c.MinValue} to {c.MaxValue} "); - AppendLine("/// "); - - AppendLine($"public void Set{name}(int index, int value)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (index < {SubGeneratorStart} || index > {SubGeneratorEnd})"); - AddIndent(() => AppendLine("throw new System.ArgumentOutOfRangeException(nameof(index));")); - AppendLine(); - AppendLine( - $"ModuleHandle.SetControllerValue({c.Id} + index - 1, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - }); - AppendLine("}"); - AppendLine(); - } - } - } -} diff --git a/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs b/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs deleted file mode 100644 index 168e74a..0000000 --- a/CodeGeneration/Generators/MetaModuleAdditionalCodeGenerator.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace CodeGeneration.Generators -{ - internal class MetaModuleAdditionalCodeGenerator : AdditionalGenerator - { - public override void AppendCode() - { - AppendLine("/// "); - AppendLine("public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path);"); - AppendLine(); - AppendLine("/// "); - AppendLine("public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data);"); - } - } -} diff --git a/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs b/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs deleted file mode 100644 index 6eb7c6a..0000000 --- a/CodeGeneration/Generators/SamplerAdditionalCodeGenerator.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace CodeGeneration.Generators -{ - internal class SamplerAdditionalCodeGenerator : AdditionalGenerator - { - public override void AppendCode() - { - AppendLine("/// "); - AppendLine( - "public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot);"); - AppendLine(); - AppendLine("/// "); - AppendLine( - "public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot);"); - } - } -} diff --git a/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs deleted file mode 100644 index 3c1d615..0000000 --- a/CodeGeneration/Generators/SpecificGenerators/ModuleData_Generator.cs +++ /dev/null @@ -1,147 +0,0 @@ -using CodeGeneration.ReparsedData; - -namespace CodeGeneration.Generators.SpecificGenerators -{ - internal class ModuleData_Generator : BaseGenerator - { - private Data _data; - - public ModuleData_Generator(Data data) - { - _data = data; - } - - protected override void GenerateBody() - { - AppendLine("/*"); - AppendLine(" * IMPORTANT!"); - AppendLine(" * Please run CodeGeneration each time this file is manually changed."); - AppendLine("*/"); - AppendLine(); - AppendLine("using CodeGeneration.Generators;"); - AppendLine(); - AppendLine("namespace CodeGeneration.ReparsedData"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("public partial class Data"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("public static Data GetData()"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("var data = new Data();"); - AppendLine(); - AddEnums(); - AppendLine(); - AddModules(); - AppendLine(); - AppendLine("return data;"); - }); - AppendLine("}"); - }); - AppendLine("}"); - }); - - AppendLine("}"); - } - - protected void AddEnums() - { - AppendLine($"data.Enums = new {nameof(EnumDesc)}[]"); - AppendLine("{"); - AddIndent(() => - { - foreach (var ed in _data.Enums.OrderBy(e => e.Name)) - { - AppendLine($"new {nameof(EnumDesc)}("); - AddIndent(() => - { - AppendLine($"\"{ed.Name}\","); - AppendLine("new []{"); - AddIndent(() => - { - foreach (var val in ed.Values.OrderBy(v => v.value)) - { - AppendLine($"({val.value}, \"{val.name}\"),"); - } - }); - AppendLine("}"); - }); - AppendLine("),"); - } - }); - AppendLine("};"); - } - - protected void AddModules() - { - AppendLine($"data.Modules = new {nameof(ModuleDesc)}[]"); - AppendLine("{"); - AddIndent(() => - { - foreach (var md in _data.Modules.OrderBy(n => n.FriendlyName)) - { - AppendLine($"new {nameof(ModuleDesc)}("); - AddIndent(() => - { - AppendLine($"\"{md.FriendlyName}\","); - AppendLine($"\"{md.InternalName}\","); - AppendLine($"\"{md.Description}\","); - AppendLine($"new List<{nameof(CtlDesc)}>()"); - AppendLine("{"); - AddIndent(() => - { - foreach (var cd in md.Controllers.OrderBy(c => c.Id)) - { - AddController(cd); - } - }); - AppendLine("},"); - AppendLine($"new List<{nameof(CurveDesc)}>()"); - AppendLine("{"); - AddIndent(() => - { - foreach (var cd in md.Curves.OrderBy(c => c.Id)) - { - AppendLine( - $"new {nameof(CurveDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, {cd.Size}),"); - } - }); - AppendLine("},"); - if (md.AdditionalCodeDescription == null) - AppendLine("null"); - else - { - var genericType = md.AdditionalCodeDescription.GetType().GetGenericArguments()[0]; - AppendLine($"new {nameof(AddCodeDesc)}<{genericType.Name}>()"); - } - }); - AppendLine("),"); - } - }); - AppendLine("};"); - } - - private void AddController(CtlDesc cd) - { - if (cd.IgnoreInternalEnum) - { - AppendLine( - $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, ignoreInternalEnum: true),"); - } - else if (!string.IsNullOrWhiteSpace(cd.EnumTypeName)) - { - AppendLine( - $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}, enumTypeName: \"{cd.EnumTypeName}\"),"); - } - else - { - AppendLine( - $"new {nameof(CtlDesc)}({cd.Id}, \"{cd.FriendlyName}\", \"{cd.InternalName}\", \"{cd.Description}\", {cd.MinValue}, {cd.MaxValue}),"); - } - } - } -} diff --git a/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs deleted file mode 100644 index 73f3d99..0000000 --- a/CodeGeneration/Generators/SpecificGenerators/ModuleType_Generator.cs +++ /dev/null @@ -1,81 +0,0 @@ -namespace CodeGeneration.Generators.SpecificGenerators -{ - internal class ModuleType_Generator : BaseGenerator - { - private ICollection<(int value, string friendlyName, string internalName)> types = ModuleTypes.GetModuleTypes(); - - protected override void GenerateBody() - { - AppendLine("/*"); - AppendLine(" * IMPORTANT!"); - AppendLine( - " * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); - AppendLine("*/"); - AppendLine(); - AppendLine("namespace SunSharp.ObjectWrapper"); - AppendLine("{"); - AddIndent(() => - { - GenerateEnum(); - AppendLine(); - GenerateHelper(); - }); - AppendLine("}"); - } - - private void GenerateEnum() - { - AppendLine("public enum ModuleType"); - AppendLine("{"); - AddIndent(() => - { - foreach (var value in types.OrderBy(t => t.friendlyName)) - AppendLine($"{value.friendlyName} = {value.value},"); - AppendLine($"Unknown = 0,"); - }); - AppendLine("}"); - } - - private void GenerateHelper() - { - AppendLine("public static class ModuleTypeHelper"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("public static string InternalNameFromType(ModuleType type)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("switch (type)"); - AppendLine("{"); - AddIndent(() => - { - foreach (var value in types.OrderBy(t => t.friendlyName)) - AppendLine($"case ModuleType.{value.friendlyName}: return \"{value.internalName}\";"); - AppendLine($"default: return \"unknown\";"); - }); - AppendLine("}"); - }); - AppendLine("}"); - AppendLine(); - - AppendLine("public static ModuleType TypeFromInternalName(string internalName)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("switch (internalName)"); - AppendLine("{"); - AddIndent(() => - { - foreach (var value in types.OrderBy(t => t.friendlyName)) - AppendLine($"case \"{value.internalName}\": return ModuleType.{value.friendlyName};"); - AppendLine($"default: return ModuleType.Unknown;"); - }); - AppendLine("}"); - }); - AppendLine("}"); - }); - AppendLine("}"); - } - } -} diff --git a/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs deleted file mode 100644 index e16826c..0000000 --- a/CodeGeneration/Generators/SpecificGenerators/ProxyClass_Generator.cs +++ /dev/null @@ -1,185 +0,0 @@ -using System.Reflection; -using SunSharp; - -namespace CodeGeneration.Generators.SpecificGenerators -{ - internal class ProxyClass_Generator : BaseGenerator - { - private static Dictionary StrictTypeToType = new Dictionary() - { - { "Int32", "int" }, - { "UInt32", "uint" }, - { "Void", "void" } - }; - - private static Dictionary StrictTypeToName = new Dictionary() - { - { "Int32", "Int" }, - { "UInt32", "Uint" } - }; - - private static string Translate(object o, Dictionary d) - { - if (o == null) - return null; - var str = o.ToString(); - if (str == null) - throw new InvalidOperationException(); - return d.TryGetValue(str, out var val) ? val : str; - } - - private static string TranslateToType(object o) => Translate(o, StrictTypeToType); - - private static string TranslateToName(object o) => Translate(o, StrictTypeToName); - - protected override void GenerateBody() - { - var type = typeof(ISunVoxLib); - if (!type.IsInterface) - throw new Exception(); - - var (delegateDefinitions, delegates, delegateCalls) = ReadData(type); - - AppendLine("using System;"); - AppendLine("using System.Reflection;"); - AppendLine(); - AppendLine("namespace SunSharp.LibraryLoading"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("public class ProxyClass : ISunVoxLib"); - AppendLine("{"); - AddIndent(() => - { - AddConstructor(); - AppendLine(); - AppendLine("#region delegate definitions"); - AppendLine(); - foreach (var d in delegateDefinitions) - { - AppendLine(d); - AppendLine(); - } - - AppendLine("#endregion delegate definitions"); - AppendLine(); - AppendLine("#region delegates"); - AppendLine(); - AppendLineNoTab("#pragma warning disable CS0649"); - AppendLine(); - foreach (var d in delegates) - { - AppendLine(d); - AppendLine(); - } - - AppendLineNoTab("#pragma warning restore CS0649"); - AppendLine(); - AppendLine("#endregion delegates"); - AppendLine(); - AppendLine($"#region interface"); - AppendLine(); - foreach (var d in delegateCalls) - { - AppendLine(d); - AppendLine(); - } - - AppendLine($"#endregion interface"); - }); - AppendLine("}"); - }); - AppendLine("}"); - } - - private void AddDelegateDefinitions() - { - } - - private void AddConstructor() - { - AppendLine("public ProxyClass(Func GetDelegate)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("var type = GetType();"); - AppendLine("var fields = type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);"); - AppendLine("foreach (var field in fields)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("if (typeof(Delegate).IsAssignableFrom(field.FieldType))"); - AppendLine("{"); - AddIndent(() => { AppendLine("field.SetValue(this, GetDelegate(field.Name, field.FieldType));"); }); - AppendLine("}"); - }); - AppendLine("}"); - }); - AppendLine("}"); - } - - private static (ICollection delegateDefinitions, ICollection delegates, ICollection - delegateCalls) ReadData(Type t) - { - HashSet delegateDefinitions = new(); - HashSet delegates = new(); - HashSet delegateCalls = new(); - foreach (var method in t.GetMethods()) - { - (var delegateDefinition, var @delegate, var delegateCall) = ParseMethod(method); - delegateDefinitions.Add(delegateDefinition); - delegates.Add(@delegate); - delegateCalls.Add(delegateCall); - } - - return (delegateDefinitions.OrderBy(s => s).ToList(), delegates.OrderBy(s => s).ToList(), - delegateCalls.OrderBy(s => s).ToList()); - } - - private static (string delegateDefinition, string @delegate, string delegateCall) ParseMethod(MethodInfo info) - { - string returnsTypeName = TranslateToType(info.ReturnType.Name) ?? "void"; - - string delegateTypeName; - { - var pars = info.GetParameters(); - var returnsType = TranslateToName(info.ReturnType.Name) ?? "Void"; - var @out = returnsType.Length == 0 ? "Void" : returnsType; - var @in = string.Join("_", pars.Select(s => TranslateToName(s.ParameterType.Name))); - @in = @in.Length == 0 ? "Void" : @in; - delegateTypeName = $"o_{@out}_i_{@in}"; - } - - string delegateTypeArgs; - { - var namedPars = new List<(Type, string)>(); - foreach (var parameter in info.GetParameters()) - { - int count = namedPars.Count(p => p.Item1 == parameter.ParameterType); - var parameterName = - $"_{TranslateToType(parameter.ParameterType.Name)}{(count != 0 ? count : "")}"; // int, int2, int3... - namedPars.Add((parameter.ParameterType, parameterName)); - } - - delegateTypeArgs = - string.Join(", ", namedPars.Select(p => $"{TranslateToType(p.Item1.Name)} {p.Item2}")); - } - - string delegateInstanceName = $"{info.Name}"; - - string delegateDefinition = $"private delegate {returnsTypeName} {delegateTypeName}({delegateTypeArgs});"; - string @delegate = $"private {delegateTypeName} {delegateInstanceName};"; - string delegateCall; - // call - { - var pars = string.Join(", ", - info.GetParameters().Select(p => $"{TranslateToType(p.ParameterType.Name)} {p.Name}")); - var forwardedPars = string.Join(", ", info.GetParameters().Select(p => p.Name)); - delegateCall = - $"{returnsTypeName} {info.DeclaringType?.Name}.{info.Name}({pars}) => {delegateInstanceName}({forwardedPars});"; - } - - return (delegateDefinition, @delegate, delegateCall); - } - } -} diff --git a/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs b/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs deleted file mode 100644 index 4abc7df..0000000 --- a/CodeGeneration/Generators/SpecificGenerators/SpecificModules_Generator.cs +++ /dev/null @@ -1,249 +0,0 @@ -using CodeGeneration.ReparsedData; -using SunSharp; -using SunSharp.ObjectWrapper.Modules; - -namespace CodeGeneration.Generators.SpecificGenerators -{ - internal class SpecificModules_Generator : BaseGenerator - { - private Data _data; - - public SpecificModules_Generator(Data data) - { - _data = data; - } - - protected override void GenerateBody() - { - AppendLine("/*"); - AppendLine(" * IMPORTANT!"); - AppendLine( - " * Do not modify this file manually. It was generated automatically by the CodeGeneration project."); - AppendLine("*/"); - AppendLine(); - AppendLine("namespace SunSharp.ObjectWrapper.Modules"); - AppendLine("{"); - AddIndent(() => - { - GenerateEnums(); - AppendLine(); - GenerateExtensions(); - AppendLine(); - GenerateStructs(); - }); - - AppendLine("}"); - } - - private void GenerateEnums() - { - AppendLine("#region enums"); - var enums = _data.Enums.OrderBy(e => e.Name).ToArray(); - for (int i = 0; i < enums.Length; i++) - { - AppendLine(); - var @enum = enums[i]; - AppendLine($"public enum {@enum.Name} : ushort"); - AppendLine("{"); - AddIndent(() => - { - foreach (var value in @enum.Values) - { - AppendLine($"{value.name} = {value.value},"); - } - }); - AppendLine("}"); - } - - AppendLine(); - AppendLine("#endregion enums"); - } - - private void GenerateExtensions() - { - AppendLine("public static class ModuleExtensions"); - AppendLine("{"); - AddIndent(() => - { - var modules = _data.Modules.OrderBy(m => m.FriendlyName).ToArray(); - for (int i = 0; i < modules.Length; i++) - { - var module = modules[i]; - AppendLine( - $"public static {module.FriendlyName}ModuleHandle As{module.FriendlyName}(this ModuleHandle module) => new {module.FriendlyName}ModuleHandle(module);"); - - if (i != modules.Length - 1) - AppendLine(); - } - }); - AppendLine("}"); - } - - private void GenerateStructs() - { - var modules = _data.Modules.OrderBy(m => m.FriendlyName).ToArray(); - for (var i = 0; i < modules.Length; i++) - { - var m = modules[i]; - - AppendLine($"public struct {m.FriendlyName}ModuleHandle : {nameof(IModuleHandleWrapper)}"); - AppendLine("{"); - AddIndent(() => - { - AppendLine("public ModuleHandle ModuleHandle { get; private set; }"); - AppendLine(); - AppendLine($"public {m.FriendlyName}ModuleHandle(ModuleHandle module)"); - AppendLine("{"); - AddIndent(() => { AppendLine("ModuleHandle = module;"); }); - AppendLine("}"); - - AppendLine(); - GenerateModuleMethods(m); - - if (m.Controllers.Any() || m.Curves.Any()) - AppendLine(); - - if (m.Controllers.Any()) - { - AppendLine("#region controllers"); - AppendLine(); - GenerateControllers(m); - AppendLine("#endregion controllers"); - } - - if (m.Controllers.Any() && m.Curves.Any()) - AppendLine(); - - if (m.Curves.Any()) - { - AppendLine("#region curves"); - AppendLine(); - GenerateCurves(m); - AppendLine("#endregion curves"); - } - - if (m.Curves.Any() && m.AdditionalCodeDescription != null) - { - AppendLine(); - } - }); - AppendLine("}"); - if (i != modules.Length - 1) - AppendLine(); - } - } - - private void GenerateModuleMethods(ModuleDesc m) - { - if (m.AdditionalCodeDescription == null) - return; - - var acd = m.AdditionalCodeDescription; - AppendLine(); - AppendLine("#region module type-specific methods"); - AppendLine(); - acd.AddCode(Context, _data); - AppendLine("#endregion module type-specific methods"); - AppendLine(); - } - - private void GenerateControllers(ModuleDesc module) - { - foreach (var c in module.Controllers.OrderBy(c => c.FriendlyName)) - { - if (!string.IsNullOrWhiteSpace(c.EnumTypeName)) - { - // ENUM - var @enum = _data.Enums.First(e => e.Name == c.EnumTypeName); - AppendLine("/// "); - AppendLine($"/// Original name: {c.InternalName}"); - AppendLine( - $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); - if (!string.IsNullOrWhiteSpace(c.Description)) - AppendLine($"/// {c.Description} "); - AppendLine("/// "); - AppendLine( - $"public {@enum.Name} Get{c.FriendlyName}() => ({@enum.Name})ModuleHandle.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - AppendLine(); - AppendLine("/// "); - AppendLine($"/// Original name: {c.InternalName}"); - AppendLine( - $"/// Possible values: {string.Join(", ", @enum.Values.Select(v => v.name))} "); - if (!string.IsNullOrWhiteSpace(c.Description)) - AppendLine($"/// {c.Description} "); - AppendLine("/// "); - AppendLine( - $"public void Set{c.FriendlyName}({@enum.Name} value) => ModuleHandle.SetControllerValue({c.Id}, (int)value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - AppendLine(); - } - else - { - // REAL - AppendLine("/// "); - AppendLine($"/// Original name: {c.InternalName}"); - AppendLine($"/// Value range: {c.MinValue} to {c.MaxValue} "); - if (!string.IsNullOrWhiteSpace(c.Description)) - AppendLine($"/// {c.Description} "); - AppendLine("/// "); - AppendLine( - $"public int Get{c.FriendlyName}() => ModuleHandle.GetControllerValue({c.Id}, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - AppendLine(); - AppendLine("/// "); - AppendLine($"/// Original name: {c.InternalName}"); - AppendLine($"/// Value range: {c.MinValue} to {c.MaxValue} "); - if (!string.IsNullOrWhiteSpace(c.Description)) - AppendLine($"/// {c.Description} "); - AppendLine("/// "); - AppendLine( - $"public void Set{c.FriendlyName}(int value) => ModuleHandle.SetControllerValue({c.Id}, value, {nameof(ValueScalingType)}.{ValueScalingType.Displayed});"); - AppendLine(); - } - } - } - - private void GenerateCurves(ModuleDesc module) - { - foreach (var curve in module.Curves.OrderBy(c => c.FriendlyName)) - { - AppendLine("/// "); - AppendLine($"/// Read {curve.FriendlyName} containing {curve.Size} values."); - AppendLine($"/// Value range: {curve.MinValue} to {curve.MaxValue}. "); - if (!string.IsNullOrWhiteSpace(curve.Description)) - AppendLine($"/// {curve.Description} "); - AppendLine("/// "); - AppendLine($"public void Read{curve.FriendlyName}(float[] buffer)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (buffer.Length < {curve.Size})"); - AddIndent(() => - AppendLine( - $"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); - AppendLine(); - AppendLine($"ModuleHandle.ReadCurve({curve.Id}, buffer);"); - }); - AppendLine("}"); - AppendLine(); - AppendLine("/// "); - AppendLine($"/// Write {curve.FriendlyName} containing {curve.Size} values."); - AppendLine($"/// Value range: {curve.MinValue} to {curve.MaxValue}. "); - if (!string.IsNullOrWhiteSpace(curve.Description)) - AppendLine($"/// {curve.Description} "); - AppendLine("/// "); - AppendLine($"public void Write{curve.FriendlyName}(float[] buffer)"); - AppendLine("{"); - AddIndent(() => - { - AppendLine($"if (buffer.Length < {curve.Size})"); - AddIndent(() => - AppendLine( - $"throw new System.ArgumentException(\"Buffer must be at least of size {curve.Size}\");")); - AppendLine(); - AppendLine($"ModuleHandle.WriteCurve({curve.Id}, buffer);"); - }); - AppendLine("}"); - AppendLine(); - } - } - } -} diff --git a/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs b/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs deleted file mode 100644 index f02fad7..0000000 --- a/CodeGeneration/Generators/VorbisPlayerAdditionalGenerator.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace CodeGeneration.Generators -{ - internal class VorbisPlayerAdditionalGenerator : AdditionalGenerator - { - public override void AppendCode() - { - AppendLine("/// "); - AppendLine("public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path);"); - AppendLine(); - AppendLine("/// "); - AppendLine("public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data);"); - } - } -} diff --git a/CodeGeneration/ModuleDataParser.cs b/CodeGeneration/ModuleDataParser.cs deleted file mode 100644 index a1c2180..0000000 --- a/CodeGeneration/ModuleDataParser.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System.Text.RegularExpressions; -using CodeGeneration.ReparsedData; -using SunSharp; -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; - -namespace CodeGeneration -{ - internal class ModuleDataParser - { - internal static Data ReparseModuleData(Slot slot) - { - var oldData = Data.GetData(); - - var newData = new Data(); - newData.Modules = new List(); - newData.Enums = oldData.Enums; - - RecreateModuleDescriptions(oldData, newData, slot); - - return newData; - } - - internal static void RecreateModuleDescriptions(Data oldData, Data newData, Slot slot) - { - foreach (var module in slot.Synthesizer) - { - var internalName = module.GetName(); - var existingDescription = oldData.Modules.FirstOrDefault(d => d.InternalName == internalName); - var newDescription = CreateModuleDescription(newData, existingDescription, module); - newData.Modules.Add(newDescription); - } - } - - internal static ModuleDesc CreateModuleDescription(Data newData, ModuleDesc original, - SunSharp.ObjectWrapper.ModuleHandle module) - { - var internalName = module.Slot.Library.GetModuleName(module.Slot.Id, module.Id); - var friendlyName = ModuleTypes.GetFriendlyName(internalName); - var description = original?.Description ?? string.Empty; - var controllerDescriptions = new List(); - var curveDescriptions = original?.Curves ?? new List(); - - for (int i = 0; i < module.GetControllerCount(); i++) - { - var originalControllerDescription = original?.Controllers?.FirstOrDefault(c => c.Id == i); - var controllerDescription = - CreateControllerDescription(newData, originalControllerDescription, module, i); - controllerDescriptions.Add(controllerDescription); - } - - return new ModuleDesc(friendlyName, internalName, description, controllerDescriptions, curveDescriptions, - original?.AdditionalCodeDescription); - } - - internal static CtlDesc CreateControllerDescription(Data newData, CtlDesc original, - SunSharp.ObjectWrapper.ModuleHandle module, int i) - { - var originalName = module.GetControllerName(i); - var friendlyName = original?.FriendlyName ?? SanitizeControllerName(originalName); - var description = original?.Description ?? string.Empty; - - var minValue = module.GetControllerMinValue(i, ValueScalingType.Displayed); - var maxValue = module.GetControllerMaxValue(i, ValueScalingType.Displayed); - - if (original != null) - { - if (original.MinValue != minValue) - Console.WriteLine( - $"MinValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MinValue}, is: {minValue})"); - if (original.MaxValue != maxValue) - Console.WriteLine( - $"MaxValue changed on {i}.{friendlyName}@{module.GetName()} (was: {original.MaxValue}, is: {maxValue})"); - if (original.InternalName != originalName) - Console.WriteLine( - $"InternalName changed on {i}.{friendlyName}@{module.GetName()} (was: {original.FriendlyName}, is: {friendlyName})"); - } - - var originalIsEnum = module.GetControllerType(i); - if (originalIsEnum == ControllerType.Enum) - { - if (original == null) - { - Console.WriteLine($"Newly found controller {i}.{friendlyName}@{module.GetName()} is of type Enum"); - } - else if (original.IgnoreInternalEnum == false && !string.IsNullOrWhiteSpace(original.EnumTypeName)) - { - var @enum = newData.Enums.FirstOrDefault(e => e.Name == original.EnumTypeName); - if (@enum == null) - { - Console.WriteLine( - $"Enum {original.EnumTypeName} of controller {i}.{friendlyName}@{module.GetName()} was not found!"); - } - else - { - var min = @enum.Values.Min(v => v.value); - var max = @enum.Values.Max(v => v.value); - if (min != original.MinValue || max != original.MaxValue) - { - Console.WriteLine( - $"Enum {@enum.Name} doesn't fit value range of controller {i}.{friendlyName}@{module.GetName()} (is: {min} to {max}, but expected ({minValue} to {maxValue})"); - } - } - } - else if (original.IgnoreInternalEnum == false) - { - Console.WriteLine( - $"Missing enum type or ignore on controller {i}.{friendlyName}@{module.GetName()}"); - } - } - else - { - if (original != null) - { - if (!string.IsNullOrWhiteSpace(original.EnumTypeName)) - { - Console.WriteLine( - $"Controller {i}.{friendlyName}@{module.GetName()} is of type Real, but enum name is assigned"); - } - - if (original.IgnoreInternalEnum) - { - Console.WriteLine( - $"Controller {i}.{friendlyName}@{module.GetName()} has unnecessary ignore of missing Enum, since controller is of type Real"); - } - } - } - - return new CtlDesc(i, friendlyName, originalName, description, minValue, maxValue, - original?.IgnoreInternalEnum ?? false, original?.EnumTypeName); - } - - internal static string SanitizeControllerName(string name) - { - Regex rgx = new Regex("[^a-zA-Z0-9 ]"); - var _sanitized = rgx.Replace(name, " "); - var words = _sanitized.Split(' '); - var capitalizedWords = words.Select(s => s.Trim()) - .Where(s => !string.IsNullOrWhiteSpace(s)) - .Select(s => string.Concat(char.ToUpper(s[0]), s[1..])); - return string.Join(string.Empty, capitalizedWords); - } - } -} diff --git a/CodeGeneration/ModuleTypes.cs b/CodeGeneration/ModuleTypes.cs deleted file mode 100644 index b083a45..0000000 --- a/CodeGeneration/ModuleTypes.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace CodeGeneration -{ - public partial class ModuleTypes - { - public static ICollection<(int value, string friendlyName, string internalName)> GetModuleTypes() => - new (int, string, string)[] - { - (1, "AnalogGenerator", "Analog generator"), - (2, "DrumSynth", "DrumSynth"), - (3, "FM", "FM"), - (4, "FMX", "FMX"), - (5, "Generator", "Generator"), - (6, "Input", "Input"), - (7, "Kicker", "Kicker"), - (8, "VorbisPlayer", "Vorbis player"), - (9, "Sampler", "Sampler"), - (10, "SpectraVoice", "SpectraVoice"), - - (64, "Amplifier", "Amplifier"), - (65, "Compressor", "Compressor"), - (66, "DcBlocker", "DC Blocker"), - (67, "Delay", "Delay"), - (68, "Distortion", "Distortion"), - (69, "Echo", "Echo"), - (70, "EQ", "EQ"), - (71, "FFT", "FFT"), - (72, "Filter", "Filter"), - (73, "FilterPro", "Filter Pro"), - (74, "Flanger", "Flanger"), - (75, "LFO", "LFO"), - (76, "Loop", "Loop"), - (77, "Modulator", "Modulator"), - (78, "PitchShifter", "Pitch shifter"), - (79, "Reverb", "Reverb"), - (80, "VocalFilter", "Vocal filter"), - (81, "Vibrato", "Vibrato"), - (82, "WaveShaper", "WaveShaper"), - (128, "ADSR", "ADSR"), - (129, "ControlToNote", "Ctl2Note"), - (130, "Feedback", "Feedback"), - (131, "Glide", "Glide"), - (132, "GPIO", "GPIO"), - (133, "MetaModule", "MetaModule"), - (134, "MultiControl", "MultiCtl"), - (135, "MultiSynth", "MultiSynth"), - (136, "PitchToControl", "Pitch2Ctl"), - (137, "PitchDetector", "Pitch Detector"), - (138, "SoundToControl", "Sound2Ctl"), - (139, "VelocityToControl", "Velocity2Ctl"), - - (-1, "Output", "Output"), - }; - - private static ICollection<(int value, string friendlyName, string internalName)> _privateCollection = - GetModuleTypes(); - - public static string GetFriendlyName(string internalName) - { - return _privateCollection.FirstOrDefault(t => t.internalName == internalName).friendlyName; - } - } -} diff --git a/CodeGeneration/Program.cs b/CodeGeneration/Program.cs deleted file mode 100644 index 0fbfcb4..0000000 --- a/CodeGeneration/Program.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System.Runtime.CompilerServices; -using CodeGeneration.Generators.SpecificGenerators; -using CodeGeneration.ReparsedData; -using SunSharp.ObjectWrapper; - -namespace CodeGeneration -{ - internal static class Program - { - internal static SunVox _sunVox; - - internal static string GetSourceFilePathName([CallerFilePath] string callerFilePath = null) => - Path.GetDirectoryName(callerFilePath) ?? ""; - - private static float[] buffer = new float[32]; - - internal static void GuaranteeEventProcessing() - { - // TODO FIXME UGLY - _sunVox.AudioCallback(buffer, 0, _sunVox.GetTicks()); - } - - internal static void Main() - { - // generate ProxyClass - { - var path = Path.GetDirectoryName(GetSourceFilePathName()); - path = Path.Join(path, "SunSharp", "LibraryLoading", "ProxyClass.Generated.cs"); - - var generator = new ProxyClass_Generator(); - var changed = generator.Generate(path); - if (changed) - { - Console.WriteLine("ProxyClass was Generated, rebuild SunSharp and re-run to continue."); - return; - } - } - - // generate ModuleType - { - var path = Path.GetDirectoryName(GetSourceFilePathName()); // SunSharp parent path - path = Path.Join(path, "SunSharp", "ObjectWrapper", "ModuleType.Generated.cs"); - - var generator = new ModuleType_Generator(); - var changed = generator.Generate(path); - if (changed) - { - Console.WriteLine("ModuleType was generated, rebuild and re-run to regenerate SongData!"); - return; - } - } - - SunSharp.Redistribution.LibraryLoader.LoadLibrary(); - var lib = SunSharp.Redistribution.LibraryLoader.GetLibrary(); - - _sunVox = new SunVox(lib, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); - var slot = _sunVox.Slots[0]; - slot.Open(); - slot.Load("all_modules.sunvox"); - - // is ModuleTypes up to date? - { - var set = new HashSet(); - foreach (var value in ModuleTypes.GetModuleTypes()) - set.Add(value.internalName); - - foreach (var module in _sunVox.Slots[0].Synthesizer) - { - var name = ModuleTypeHelper.InternalNameFromType(module.GetModuleType()); - if (!set.Contains(name)) - { - throw new Exception($"Type {name} is not known, add it to the ModuleTypes.cs first!"); - } - } - } - - // regenerate SongData - { - var data = ModuleDataParser.ReparseModuleData(slot); - - var path = Path.Join(GetSourceFilePathName(), "ReparsedData", "Data.Regenerated.cs"); - - var generator = new ModuleData_Generator(data); - var changed = generator.Generate(path); - if (changed) - { - Console.WriteLine("ModuleData was regenerated, rebuild and re-run to regenerate SpecificModules!"); - return; - } - } - slot.Close(); - _sunVox.Dispose(); - - // generate SpecificModules - { - var data = Data.GetData(); - - var path = Path.GetDirectoryName(GetSourceFilePathName()); // SunSharp parent path - path = Path.Join(path, "SunSharp", "ObjectWrapper", "Modules", "SpecificModules.Generated.cs"); - - var generator = new SpecificModules_Generator(data); - var changed = generator.Generate(path); - if (changed) - { - Console.WriteLine("SpecificModules was generated, rebuild SunSharp!"); - return; - } - } - - Console.WriteLine("Nothing was changed, yay! :)"); - } - } -} diff --git a/CodeGeneration/ReparsedData/Classes.cs b/CodeGeneration/ReparsedData/Classes.cs deleted file mode 100644 index 35f0ae9..0000000 --- a/CodeGeneration/ReparsedData/Classes.cs +++ /dev/null @@ -1,113 +0,0 @@ -using CodeGeneration.Generators; - -namespace CodeGeneration.ReparsedData -{ - public class ModuleDesc - { - public string FriendlyName { get; set; } - public string InternalName { get; set; } - public string Description { get; set; } - public ICollection Controllers { get; set; } - public ICollection Curves { get; set; } - public AddCodeDesc AdditionalCodeDescription { get; set; } - - public ModuleDesc(string friendlyName, string internalName, string description, - ICollection controllers, ICollection curves, AddCodeDesc aditionalCodeDescription) - { - FriendlyName = friendlyName; - InternalName = internalName; - Description = description; - Controllers = controllers; - Curves = curves; - AdditionalCodeDescription = aditionalCodeDescription; - } - } - - public class EnumDesc - { - public string Name { get; set; } - public ICollection<(int value, string name)> Values { get; set; } - - public EnumDesc(string name, params (int, string)[] values) - { - Name = name; - Values = values; - } - } - - public class CtlDesc - { - public int Id { get; set; } - public string FriendlyName { get; set; } - public string InternalName { get; set; } - public string Description { get; set; } - public int MinValue { get; set; } - public int MaxValue { get; set; } - public bool IgnoreInternalEnum { get; set; } - public string EnumTypeName { get; set; } - - public CtlDesc(int id, string friendlyName, string internalName, string description, int min, int max, - bool ignoreInternalEnum = false, string enumTypeName = null) - { - Id = id; - FriendlyName = friendlyName; - InternalName = internalName; - Description = description; - MinValue = min; - MaxValue = max; - EnumTypeName = enumTypeName; - IgnoreInternalEnum = ignoreInternalEnum; - } - - public CtlDesc(int id, string friendlyName, string internalname, string description, int min, int max, - string enumTypeName) - { - Id = id; - FriendlyName = friendlyName; - InternalName = internalname; - Description = description; - MinValue = min; - MaxValue = max; - EnumTypeName = enumTypeName; - IgnoreInternalEnum = false; - } - } - - public class CurveDesc - { - public int Id { get; set; } - public string FriendlyName { get; set; } - public int Size { get; set; } - public float MinValue { get; set; } - public float MaxValue { get; set; } - public string Description { get; set; } - - public CurveDesc(int id, string friendlyName, string description, float min, float max, int size) - { - Id = id; - FriendlyName = friendlyName; - MinValue = min; - MaxValue = max; - Size = size; - Description = description; - } - } - - public abstract class AddCodeDesc - { - public abstract void AddCode(CodeGenerationContext context, Data data = null); - } - - public class AddCodeDesc : AddCodeDesc where T : AdditionalGenerator, new() - { - public override void AddCode(CodeGenerationContext context, Data data = null) - { - var t = new T - { - Context = context, - Data = data - }; - t.AppendCode(); - } - } -} diff --git a/CodeGeneration/ReparsedData/Data.Regenerated.cs b/CodeGeneration/ReparsedData/Data.Regenerated.cs deleted file mode 100644 index 02bf404..0000000 --- a/CodeGeneration/ReparsedData/Data.Regenerated.cs +++ /dev/null @@ -1,1697 +0,0 @@ -/* - * IMPORTANT! - * Please run CodeGeneration each time this file is manually changed. -*/ - -using CodeGeneration.Generators; - -namespace CodeGeneration.ReparsedData -{ - public partial class Data - { - public static Data GetData() - { - var data = new Data(); - - data.Enums = new EnumDesc[] - { - new EnumDesc( - "ADSRCurveType", - new []{ - (0, "Linear"), - (1, "Exp1"), - (2, "Exp2"), - (3, "Nexp1"), - (4, "Nexp2"), - (5, "Sin"), - (6, "Rect"), - (7, "SmoothRect"), - (8, "Bit2"), - (9, "Bit3"), - (10, "Bit4"), - (11, "Bit5"), - } - ), - new EnumDesc( - "ADSRMode", - new []{ - (0, "Generator"), - (1, "AmplitudeModulatorMono"), - (2, "AmplitudeModulatorStereo"), - } - ), - new EnumDesc( - "ADSROnNoteOffBehaviour", - new []{ - (0, "DoNothing"), - (1, "StopOnLastNote"), - (2, "Stop"), - } - ), - new EnumDesc( - "ADSROnNoteOnBehaviour", - new []{ - (0, "DoNothing"), - (1, "StartOnFirstNote"), - (2, "Start"), - } - ), - new EnumDesc( - "ADSRSmoothTransitions", - new []{ - (0, "Off"), - (1, "RestartAndVolumeChange"), - (2, "RestartAndVolumeChangeSmooth"), - (3, "VolumeChange"), - } - ), - new EnumDesc( - "ADSRSustainMode", - new []{ - (0, "Off"), - (1, "On"), - (2, "Repeat"), - } - ), - new EnumDesc( - "AnalogGeneratorEnvelopeMode", - new []{ - (0, "Off"), - (1, "SustainOff"), - (2, "SustainOn"), - } - ), - new EnumDesc( - "AnalogGeneratorFilterType", - new []{ - (0, "Off"), - (1, "LP12dB"), - (2, "HP12dB"), - (3, "BP12dB"), - (4, "BR12dB"), - (5, "LP24dB"), - (6, "HP24dB"), - (7, "BP24dB"), - (8, "BR24dB"), - } - ), - new EnumDesc( - "AnalogGeneratorOsc2Mode", - new []{ - (0, "Add"), - (1, "Sub"), - (2, "Mul"), - (3, "Min"), - (4, "Max"), - (5, "BitwiseAnd"), - (6, "BitwiseXor"), - } - ), - new EnumDesc( - "AnalogGeneratorWaveform", - new []{ - (0, "Triangle"), - (1, "Saw"), - (2, "Square"), - (3, "NoiseSampler"), - (4, "Drawn"), - (5, "Sin"), - (6, "Hsin"), - (7, "Asin"), - (8, "DrawnSpline"), - (9, "NoiseSamplerSpline"), - (10, "WhiteNoise"), - (11, "PinkNoise"), - (12, "RedNoise"), - (13, "BlueNosie"), - (14, "VioletNoise"), - (15, "GreyNoise"), - (16, "Harmonics"), - } - ), - new EnumDesc( - "Channels", - new []{ - (0, "Stereo"), - (1, "Mono"), - } - ), - new EnumDesc( - "ChannelsInverted", - new []{ - (0, "Mono"), - (1, "Stereo"), - } - ), - new EnumDesc( - "CompressorMode", - new []{ - (0, "Peak"), - (1, "RMS"), - (2, "PeakZeroLatency"), - } - ), - new EnumDesc( - "ControlToNoteOffBehaviour", - new []{ - (0, "Nothing"), - (1, "OnMinPitch"), - (2, "OnMaxPitch"), - } - ), - new EnumDesc( - "ControlToNoteOnBehaviour", - new []{ - (0, "Nothing"), - (1, "OnPitchChange"), - } - ), - new EnumDesc( - "DelayUnit", - new []{ - (0, "SecondDivBy16384"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - (7, "SecondDivBy44100"), - (8, "SecondDivBy48000"), - (9, "Sample"), - } - ), - new EnumDesc( - "DistortionType", - new []{ - (0, "Clipping"), - (1, "Foldback"), - (2, "Foldback2"), - (3, "Foldback3"), - (4, "Overflow"), - (5, "Overflow2"), - (6, "SaturationFoldback"), - (7, "SaturationFoldbackSin"), - (8, "Saturation3"), - (9, "Saturation4"), - (10, "Saturation5"), - } - ), - new EnumDesc( - "EchoDelayUnit", - new []{ - (0, "SecondDivBy256"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - } - ), - new EnumDesc( - "EchoFilter", - new []{ - (0, "Off"), - (1, "LP6dB"), - (2, "HP6dB"), - } - ), - new EnumDesc( - "FFTBufferOverlap", - new []{ - (0, "None"), - (1, "x2"), - (2, "x4"), - } - ), - new EnumDesc( - "FFTBufferSize", - new []{ - (0, "x64"), - (1, "x128"), - (2, "x256"), - (3, "x512"), - (4, "x1024"), - (5, "x2048"), - (6, "x4096"), - (7, "x8192"), - } - ), - new EnumDesc( - "FFTSampleRate", - new []{ - (0, "Hz8000"), - (1, "Hz11025"), - (2, "Hz16000"), - (3, "Hz22050"), - (4, "Hz32000"), - (5, "Hz44100"), - (6, "Hz48000"), - (7, "Hz88200"), - (8, "Hz96000"), - (9, "Hz192000"), - } - ), - new EnumDesc( - "FilterLFOFrequencyUnit", - new []{ - (0, "FiveHundredthHz"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - } - ), - new EnumDesc( - "FilterLFOWaveform", - new []{ - (0, "Sin"), - (1, "Saw"), - (2, "Saw2"), - (3, "Square"), - (4, "Random"), - } - ), - new EnumDesc( - "FilterProMode", - new []{ - (0, "Stereo"), - (1, "Mono"), - (2, "StereoSmoothing"), - (3, "MonoSmoothing"), - } - ), - new EnumDesc( - "FilterProRollOff", - new []{ - (0, "dB12"), - (1, "dB24"), - (2, "dB36"), - (3, "dB48"), - } - ), - new EnumDesc( - "FilterProType", - new []{ - (0, "LP"), - (1, "HP"), - (2, "BPConstSkirtGain"), - (3, "BPConstPeakGain"), - (4, "Notch"), - (5, "AllPass"), - (6, "Peaking"), - (7, "LowShelf"), - (8, "HighShelf"), - (9, "LP6dB"), - (10, "HP6dB"), - } - ), - new EnumDesc( - "FilterRollOff", - new []{ - (0, "dB12"), - (1, "dB24"), - (2, "dB36"), - (3, "dB48"), - } - ), - new EnumDesc( - "FilterType", - new []{ - (0, "LP"), - (1, "HP"), - (2, "BP"), - (3, "Notch"), - } - ), - new EnumDesc( - "FlangerLFOFrequencyUnit", - new []{ - (0, "FiveHundredthHz"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - } - ), - new EnumDesc( - "FlangerLFOWaveform", - new []{ - (0, "Hsin"), - (1, "Sin"), - } - ), - new EnumDesc( - "FMXCustomWaveform", - new []{ - (0, "Off"), - (1, "SingleCycle"), - (2, "Continuous"), - } - ), - new EnumDesc( - "FMXModulationType", - new []{ - (0, "Phase"), - (1, "Frequency"), - (2, "Amplitude"), - (3, "Add"), - (4, "Sub"), - (5, "Min"), - (6, "Max"), - (7, "And"), - (8, "Xor"), - (9, "PhasePlus"), - } - ), - new EnumDesc( - "FMXSampleRate", - new []{ - (0, "Hz8000"), - (1, "Hz11025"), - (2, "Hz16000"), - (3, "Hz22050"), - (4, "Hz32000"), - (5, "Hz44100"), - (6, "Native"), - } - ), - new EnumDesc( - "FMXWaveform", - new []{ - (0, "Custom"), - (1, "Triangle"), - (2, "Triangle3"), - (3, "Saw"), - (4, "Saw3"), - (5, "Square"), - (6, "Sin"), - (7, "Hsin"), - (8, "Asin"), - (9, "Sin3"), - } - ), - new EnumDesc( - "GeneratorWaveform", - new []{ - (0, "Triangle"), - (1, "Saw"), - (2, "Square"), - (3, "NoiseSampler"), - (4, "Drawn"), - (5, "Sin"), - (6, "Hsin"), - (7, "Asin"), - (8, "Rsin"), - } - ), - new EnumDesc( - "KickerWaveform", - new []{ - (0, "Triangle"), - (1, "Square"), - (2, "Sin"), - } - ), - new EnumDesc( - "LFOFrequencyUnit", - new []{ - (0, "HzDividedBy64"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - } - ), - new EnumDesc( - "LFOSineQuality", - new []{ - (0, "Auto"), - (1, "Low"), - (2, "Middle"), - (3, "High"), - } - ), - new EnumDesc( - "LFOSmoothTransitions", - new []{ - (0, "Off"), - (1, "Waveform"), - } - ), - new EnumDesc( - "LFOType", - new []{ - (0, "Amplitude"), - (1, "Panning"), - } - ), - new EnumDesc( - "LFOWaveform", - new []{ - (0, "Sin"), - (1, "Square"), - (2, "Sin2"), - (3, "Saw"), - (4, "Saw2"), - (5, "Random"), - (6, "Triangle"), - (7, "RandomInterpolated"), - } - ), - new EnumDesc( - "LoopMode", - new []{ - (0, "Normal"), - (1, "PingPong"), - } - ), - new EnumDesc( - "LoopOnNoteOn", - new []{ - (0, "Restart"), - (1, "RestartCurrentIteration"), - } - ), - new EnumDesc( - "LoopTimeUnit", - new []{ - (0, "LineDivBy128"), - (1, "Line"), - (2, "HalfLine"), - (3, "OneThirdLine"), - (4, "Tick"), - (5, "Millisecond"), - (6, "Hz"), - } - ), - new EnumDesc( - "MetaModulePatternMode", - new []{ - (0, "Off"), - (1, "OnRepeat"), - (2, "OnNoRepeat"), - (3, "OnRepeatEndless"), - (4, "OnNoRepeatEndless"), - } - ), - new EnumDesc( - "ModulationType", - new []{ - (0, "Amplitude"), - (1, "Phase"), - (2, "PhaseAbsolute"), - } - ), - new EnumDesc( - "PitchDetectorAlgorithm", - new []{ - (0, "FastZeroCrossing"), - (1, "Autocorrelation"), - (2, "Cepstrum"), - } - ), - new EnumDesc( - "PitchDetectorAlgSampleRate", - new []{ - (0, "Hz12000"), - (1, "Hz24000"), - (2, "Hz44100"), - } - ), - new EnumDesc( - "PitchDetectorBufferSize", - new []{ - (0, "Ms5"), - (1, "Ms10"), - (2, "Ms21"), - (3, "Ms42"), - (4, "Ms85"), - } - ), - new EnumDesc( - "PitchShifterBypassMode", - new []{ - (0, "Off"), - (1, "SlowTransition"), - (2, "FastTransition"), - } - ), - new EnumDesc( - "PitchToControlMode", - new []{ - (0, "FrequencyHz"), - (1, "Pitch"), - } - ), - new EnumDesc( - "PitchToControlOnNoteOff", - new []{ - (0, "DoNothing"), - (1, "PitchDown"), - (2, "PitchUp"), - } - ), - new EnumDesc( - "Quality", - new []{ - (0, "HQ"), - (1, "HQMono"), - (2, "LQ"), - (3, "LQMono"), - } - ), - new EnumDesc( - "SamplerEnvelopeInterpolation", - new []{ - (0, "Off"), - (1, "Linear"), - } - ), - new EnumDesc( - "SamplerInterpolation", - new []{ - (0, "Off"), - (1, "Linear"), - (2, "Spline"), - } - ), - new EnumDesc( - "SoundToControlMode", - new []{ - (0, "LQ"), - (1, "HQ"), - } - ), - new EnumDesc( - "SpectraVoiceHarmonicType", - new []{ - (0, "Hsin"), - (1, "Rect"), - (2, "Org1"), - (3, "Org2"), - (4, "Org3"), - (5, "Org4"), - (6, "Sin"), - (7, "Random"), - (8, "Triangle1"), - (9, "Triangle2"), - (10, "Overtones1"), - (11, "Overtones2"), - (12, "Overtones3"), - (13, "Overtones4"), - (14, "Overtones1Plus"), - (15, "Overtones2Plus"), - (16, "Overtones3Plus"), - (17, "Overtones4Plus"), - (18, "Metal"), - } - ), - new EnumDesc( - "SpectraVoiceMode", - new []{ - (0, "HQ"), - (1, "HQMono"), - (2, "LQ"), - (3, "LQMono"), - (4, "HQSpline"), - } - ), - new EnumDesc( - "SpectraVoiceResolution", - new []{ - (0, "Size4096"), - (1, "Size8192"), - (2, "Size16384"), - (3, "Size32768"), - (4, "Size65536"), - (5, "Size131072"), - } - ), - new EnumDesc( - "Toggle", - new []{ - (0, "Off"), - (1, "On"), - } - ), - new EnumDesc( - "ToggleInverse", - new []{ - (0, "On"), - (1, "Off"), - } - ), - new EnumDesc( - "VelocityToControlOnNoteOff", - new []{ - (0, "DoNothing"), - (1, "VelocityDown"), - (2, "VelocityUp"), - } - ), - new EnumDesc( - "VibratoFrequencyUnit", - new []{ - (0, "HzDividedBy64"), - (1, "Millisecond"), - (2, "Hz"), - (3, "Tick"), - (4, "Line"), - (5, "HalfLine"), - (6, "OneThirdLine"), - } - ), - new EnumDesc( - "VocalFilterVoiceType", - new []{ - (0, "Soprano"), - (1, "Alto"), - (2, "Tenor"), - (3, "Bass"), - } - ), - new EnumDesc( - "VocalFilterVowel", - new []{ - (0, "A"), - (1, "E"), - (2, "I"), - (3, "O"), - (4, "U"), - } - ), - }; - - data.Modules = new ModuleDesc[] - { - new ModuleDesc( - "ADSR", - "ADSR", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 32768), - new CtlDesc(1, "Attack", "Attack", "", 0, 10000), - new CtlDesc(2, "Decay", "Decay", "", 0, 10000), - new CtlDesc(3, "SustainLevel", "Sustain level", "", 0, 32768), - new CtlDesc(4, "Release", "Release", "", 0, 10000), - new CtlDesc(5, "AttackCurve", "Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(6, "DecayCurve", "Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(7, "ReleaseCurve", "Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(8, "Sustain", "Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(9, "SustainPedal", "Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(10, "State", "State", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(11, "OnNoteOn", "On NoteON", "", 0, 2, enumTypeName: "ADSROnNoteOnBehaviour"), - new CtlDesc(12, "OnNoteOff", "On NoteOFF", "", 0, 2, enumTypeName: "ADSROnNoteOffBehaviour"), - new CtlDesc(13, "Mode", "Mode", "", 0, 2, enumTypeName: "ADSRMode"), - new CtlDesc(14, "SmoothTransitions", "Smooth transitions", "", 0, 3, enumTypeName: "ADSRSmoothTransitions"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Amplifier", - "Amplifier", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 1024), - new CtlDesc(1, "Balance", "Balance", "", -128, 128), - new CtlDesc(2, "DCOffset", "DC Offset", "", -128, 128), - new CtlDesc(3, "Inverse", "Inverse", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(4, "StereoWidth", "Stereo width", "", 0, 256), - new CtlDesc(5, "Absolute", "Absolute", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(6, "FineVolume", "Fine volume", "", 0, 32768), - new CtlDesc(7, "Gain", "Gain", "", 0, 5000), - new CtlDesc(8, "BipolarDCOffset", "Bipolar DC Offset", "", -16384, 16384), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "AnalogGenerator", - "Analog generator", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Waveform", "Waveform", "", 0, 16, enumTypeName: "AnalogGeneratorWaveform"), - new CtlDesc(2, "Panning", "Panning", "", -128, 128), - new CtlDesc(3, "Attack", "Attack", "", 0, 256), - new CtlDesc(4, "Release", "Release", "", 0, 256), - new CtlDesc(5, "Sustain", "Sustain", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(6, "ExponentialEnvelope", "Exponential envelope", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(7, "DutyCycle", "Duty cycle", "", 0, 1024), - new CtlDesc(8, "Osc2", "Osc2", "", -1000, 1000), - new CtlDesc(9, "Filter", "Filter", "", 0, 8, enumTypeName: "AnalogGeneratorFilterType"), - new CtlDesc(10, "FFreq", "F.freq", "", 0, 14000), - new CtlDesc(11, "FResonance", "F.resonance", "", 0, 1530), - new CtlDesc(12, "FExponentialFreq", "F.exponential freq", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(13, "FAttack", "F.attack", "", 0, 256), - new CtlDesc(14, "FRelease", "F.release", "", 0, 256), - new CtlDesc(15, "FEnvelope", "F.envelope", "", 0, 2, enumTypeName: "AnalogGeneratorEnvelopeMode"), - new CtlDesc(16, "Polyphony", "Polyphony", "", 1, 32, ignoreInternalEnum: true), - new CtlDesc(17, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - new CtlDesc(18, "Noise", "Noise", "", 0, 256), - new CtlDesc(19, "Osc2Volume", "Osc2 volume", "", 0, 32768), - new CtlDesc(20, "Osc2Mode", "Osc2 mode", "", 0, 6, enumTypeName: "AnalogGeneratorOsc2Mode"), - new CtlDesc(21, "Osc2Phase", "Osc2 phase", "", 0, 32768), - }, - new List() - { - new CurveDesc(0, "DrawnValues", "Used for 'Drawn', 'DrawnSpline' and 'Harmonics'.", -1, 1, 32), - }, - null - ), - new ModuleDesc( - "Compressor", - "Compressor", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "Threshold", "Threshold", "", 0, 512), - new CtlDesc(2, "Slope", "Slope", "", 0, 200), - new CtlDesc(3, "Attack", "Attack", "", 0, 500), - new CtlDesc(4, "Release", "Release", "", 1, 1000), - new CtlDesc(5, "Mode", "Mode", "", 0, 2, enumTypeName: "CompressorMode"), - new CtlDesc(6, "SideChainInput", "Side-chain input", "", 0, 32, ignoreInternalEnum: true), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "ControlToNote", - "Ctl2Note", - "", - new List() - { - new CtlDesc(0, "Pitch", "Pitch", "", 0, 32768), - new CtlDesc(1, "FirstNote", "First note", "", 0, 120, ignoreInternalEnum: true), - new CtlDesc(2, "RangeNumberOfSemitones", "Range (number of semitones)", "", 0, 120, ignoreInternalEnum: true), - new CtlDesc(3, "Transpose", "Transpose", "", -128, 128, ignoreInternalEnum: true), - new CtlDesc(4, "Finetune", "Finetune", "", -256, 256), - new CtlDesc(5, "Velocity", "Velocity", "", 0, 256), - new CtlDesc(6, "State", "State", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(7, "NoteOn", "NoteON", "", 0, 1, enumTypeName: "ControlToNoteOnBehaviour"), - new CtlDesc(8, "NoteOff", "NoteOFF", "", 0, 2, enumTypeName: "ControlToNoteOffBehaviour"), - new CtlDesc(9, "RecordNotes", "Record notes", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "DcBlocker", - "DC Blocker", - "", - new List() - { - new CtlDesc(0, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Delay", - "Delay", - "", - new List() - { - new CtlDesc(0, "Dry", "Dry", "", 0, 512), - new CtlDesc(1, "Wet", "Wet", "", 0, 512), - new CtlDesc(2, "DelayL", "Delay L", "", 0, 256), - new CtlDesc(3, "DelayR", "Delay R", "", 0, 256), - new CtlDesc(4, "VolumeL", "Volume L", "", 0, 256), - new CtlDesc(5, "VolumeR", "Volume R", "", 0, 256), - new CtlDesc(6, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - new CtlDesc(7, "Inverse", "Inverse", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(8, "DelayUnit", "Delay unit", "", 0, 9, enumTypeName: "DelayUnit"), - new CtlDesc(9, "DelayMultiplier", "Delay multiplier", "", 1, 15, ignoreInternalEnum: true), - new CtlDesc(10, "Feedback", "Feedback", "", 0, 32768), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Distortion", - "Distortion", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "DistortionType", "Type", "", 0, 10, enumTypeName: "DistortionType"), - new CtlDesc(2, "Power", "Power", "", 0, 256), - new CtlDesc(3, "BitDepth", "Bit depth", "", 1, 16, ignoreInternalEnum: true), - new CtlDesc(4, "Freq", "Freq", "", 0, 44100), - new CtlDesc(5, "Noise", "Noise", "", 0, 256), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "DrumSynth", - "DrumSynth", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "Panning", "Panning", "", -128, 128), - new CtlDesc(2, "Polyphony", "Polyphony", "", 1, 8, ignoreInternalEnum: true), - new CtlDesc(3, "BassVolume", "Bass volume", "", 0, 512), - new CtlDesc(4, "BassPower", "Bass power", "", 0, 256), - new CtlDesc(5, "BassTone", "Bass tone", "", 0, 256), - new CtlDesc(6, "BassLength", "Bass length", "", 0, 256), - new CtlDesc(7, "HihatVolume", "Hihat volume", "", 0, 512), - new CtlDesc(8, "HihatLength", "Hihat length", "", 0, 256), - new CtlDesc(9, "SnareVolume", "Snare volume", "", 0, 512), - new CtlDesc(10, "SnareTone", "Snare tone", "", 0, 256), - new CtlDesc(11, "SnareLength", "Snare length", "", 0, 256), - new CtlDesc(12, "BassPanning", "Bass panning", "", -128, 128), - new CtlDesc(13, "HihatPanning", "Hihat panning", "", -128, 128), - new CtlDesc(14, "SnarePanning", "Snare panning", "", -128, 128), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Echo", - "Echo", - "", - new List() - { - new CtlDesc(0, "Dry", "Dry", "", 0, 256), - new CtlDesc(1, "Wet", "Wet", "", 0, 256), - new CtlDesc(2, "Feedback", "Feedback", "", 0, 256), - new CtlDesc(3, "Delay", "Delay", "", 0, 256), - new CtlDesc(4, "RightChannelOffset", "Right channel offset", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(5, "DelayUnit", "Delay unit", "", 0, 6, enumTypeName: "EchoDelayUnit"), - new CtlDesc(6, "RightChannelOffsetDelay", "Right channel offset", "Delay/32768", 0, 32768), - new CtlDesc(7, "Filter", "Filter", "", 0, 2, enumTypeName: "EchoFilter"), - new CtlDesc(8, "FFreq", "F.freq", "", 0, 22000), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "EQ", - "EQ", - "", - new List() - { - new CtlDesc(0, "Low", "Low", "", 0, 512), - new CtlDesc(1, "Middle", "Middle", "", 0, 512), - new CtlDesc(2, "High", "High", "", 0, 512), - new CtlDesc(3, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Feedback", - "Feedback", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 10000), - new CtlDesc(1, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "FFT", - "FFT", - "", - new List() - { - new CtlDesc(0, "SampleRate", "Sample rate", "", 0, 9, enumTypeName: "FFTSampleRate"), - new CtlDesc(1, "Channels", "Channels", "", 0, 1, enumTypeName: "ChannelsInverted"), - new CtlDesc(2, "BufferSamples", "Buffer (samples)", "", 0, 7, enumTypeName: "FFTBufferSize"), - new CtlDesc(3, "BufOverlap", "Buf overlap", "", 0, 2, enumTypeName: "FFTBufferOverlap"), - new CtlDesc(4, "Feedback", "Feedback", "", 0, 32768), - new CtlDesc(5, "NoiseReduction", "Noise reduction", "", 0, 32768), - new CtlDesc(6, "PhaseGainNorm16384", "Phase gain (norm=16384)", "", 0, 32768, ignoreInternalEnum: true), - new CtlDesc(7, "AllPassFilter", "All-pass filter", "", 0, 32768), - new CtlDesc(8, "FrequencySpread", "Frequency spread", "", 0, 32768), - new CtlDesc(9, "RandomPhase", "Random phase", "", 0, 32768), - new CtlDesc(10, "RandomPhaseLite", "Random phase (lite)", "", 0, 32768), - new CtlDesc(11, "FreqShift", "Freq shift", "", -4096, 4096), - new CtlDesc(12, "Deform1", "Deform1", "", 0, 32768), - new CtlDesc(13, "Deform2", "Deform2", "", 0, 32768), - new CtlDesc(14, "HPCutoff", "HP cutoff", "", 0, 32768), - new CtlDesc(15, "LPCutoff", "LP cutoff", "", 0, 32768), - new CtlDesc(16, "Volume", "Volume", "", 0, 32768), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Filter", - "Filter", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Frequency", "Freq", "", 0, 14000), - new CtlDesc(2, "Resonance", "Resonance", "", 0, 1530), - new CtlDesc(3, "FilterType", "Type", "", 0, 3, enumTypeName: "FilterType"), - new CtlDesc(4, "Response", "Response", "", 0, 256), - new CtlDesc(5, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - new CtlDesc(6, "Impulse", "Impulse", "", 0, 14000), - new CtlDesc(7, "Mix", "Mix", "", 0, 256), - new CtlDesc(8, "LFOFreq", "LFO freq", "", 0, 1024), - new CtlDesc(9, "LFOAmp", "LFO amp", "", 0, 256), - new CtlDesc(10, "SetLFOPhase", "Set LFO phase", "", 0, 256), - new CtlDesc(11, "ExponentialFreq", "Exponential freq", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(12, "RollOff", "Roll-off", "", 0, 3, enumTypeName: "FilterRollOff"), - new CtlDesc(13, "LFOFreqUnit", "LFO freq unit", "", 0, 6, enumTypeName: "FilterLFOFrequencyUnit"), - new CtlDesc(14, "LFOWaveform", "LFO waveform", "", 0, 4, enumTypeName: "FilterLFOWaveform"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "FilterPro", - "Filter Pro", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 32768), - new CtlDesc(1, "FilterType", "Type", "", 0, 10, enumTypeName: "FilterProType"), - new CtlDesc(2, "Freq", "Freq", "", 0, 22000), - new CtlDesc(3, "FreqFinetune", "Freq finetune", "", -1000, 1000), - new CtlDesc(4, "FreqScale", "Freq scale", "", 0, 200), - new CtlDesc(5, "ExponentialFreq", "Exponential freq", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(6, "Q", "Q", "", 0, 32768), - new CtlDesc(7, "Gain", "Gain", "", -16384, 16384), - new CtlDesc(8, "RollOff", "Roll-off", "", 0, 3, enumTypeName: "FilterProRollOff"), - new CtlDesc(9, "Response", "Response", "", 0, 1000), - new CtlDesc(10, "Mode", "Mode", "", 0, 3, enumTypeName: "FilterProMode"), - new CtlDesc(11, "Mix", "Mix", "", 0, 32768), - new CtlDesc(12, "LFOFreq", "LFO freq", "", 0, 1024), - new CtlDesc(13, "LFOAmp", "LFO amp", "", 0, 32768), - new CtlDesc(14, "LFOWaveform", "LFO waveform", "", 0, 4, enumTypeName: "FilterLFOWaveform"), - new CtlDesc(15, "SetLFOPhase", "Set LFO phase", "", 0, 256), - new CtlDesc(16, "LFOFreqUnit", "LFO freq unit", "", 0, 6, enumTypeName: "FilterLFOFrequencyUnit"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Flanger", - "Flanger", - "", - new List() - { - new CtlDesc(0, "Dry", "Dry", "", 0, 256), - new CtlDesc(1, "Wet", "Wet", "", 0, 256), - new CtlDesc(2, "Feedback", "Feedback", "", 0, 256), - new CtlDesc(3, "Delay", "Delay", "", 8, 1000), - new CtlDesc(4, "Response", "Response", "", 0, 256), - new CtlDesc(5, "LFOFreq", "LFO freq", "", 0, 512), - new CtlDesc(6, "LFOAmp", "LFO amp", "", 0, 256), - new CtlDesc(7, "LFOWaveform", "LFO waveform", "", 0, 1, enumTypeName: "FlangerLFOWaveform"), - new CtlDesc(8, "SetLFOPhase", "Set LFO phase", "", 0, 256), - new CtlDesc(9, "LFOFreqUnit", "LFO freq unit", "", 0, 6, enumTypeName: "FlangerLFOFrequencyUnit"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "FM", - "FM", - "", - new List() - { - new CtlDesc(0, "CVolume", "C.Volume", "", 0, 256), - new CtlDesc(1, "MVolume", "M.Volume", "", 0, 256), - new CtlDesc(2, "Panning", "Panning", "", -128, 128), - new CtlDesc(3, "CFreqRatio", "C.Freq ratio", "", 0, 16), - new CtlDesc(4, "MFreqRatio", "M.Freq ratio", "", 0, 16), - new CtlDesc(5, "MSelfModulation", "M.Self-modulation", "", 0, 256), - new CtlDesc(6, "CAttack", "C.Attack", "", 0, 512), - new CtlDesc(7, "CDecay", "C.Decay", "", 0, 512), - new CtlDesc(8, "CSustain", "C.Sustain", "", 0, 256), - new CtlDesc(9, "CRelease", "C.Release", "", 0, 512), - new CtlDesc(10, "MAttack", "M.Attack", "", 0, 512), - new CtlDesc(11, "MDecay", "M.Decay", "", 0, 512), - new CtlDesc(12, "MSustain", "M.Sustain", "", 0, 256), - new CtlDesc(13, "MRelease", "M.Release", "", 0, 512), - new CtlDesc(14, "MScalingPerKey", "M.Scaling per key", "", 0, 4), - new CtlDesc(15, "Polyphony", "Polyphony", "", 1, 16, ignoreInternalEnum: true), - new CtlDesc(16, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "FMX", - "FMX", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 32768), - new CtlDesc(1, "Panning", "Panning", "", -128, 128), - new CtlDesc(2, "SampleRate", "Sample rate", "", 0, 6, enumTypeName: "FMXSampleRate"), - new CtlDesc(3, "Polyphony", "Polyphony", "", 1, 32, ignoreInternalEnum: true), - new CtlDesc(4, "Channels", "Channels", "", 0, 1, enumTypeName: "ChannelsInverted"), - new CtlDesc(5, "InputOperatorNum", "Input -> Operator #", "", 0, 5, ignoreInternalEnum: true), - new CtlDesc(6, "InputCustomWaveform", "Input -> Custom waveform", "", 0, 2, enumTypeName: "FMXCustomWaveform"), - new CtlDesc(7, "ADSRSmoothTransitions", "ADSR smooth transitions", "", 0, 3, enumTypeName: "ADSRSmoothTransitions"), - new CtlDesc(8, "NoiseFilter", "Noise filter (32768 - OFF)", "", 0, 32768), - new CtlDesc(9, "Volume1", "1 Volume", "", 0, 32768), - new CtlDesc(10, "Volume2", "2 Volume", "", 0, 32768), - new CtlDesc(11, "Volume3", "3 Volume", "", 0, 32768), - new CtlDesc(12, "Volume4", "4 Volume", "", 0, 32768), - new CtlDesc(13, "Volume5", "5 Volume", "", 0, 32768), - new CtlDesc(14, "Attack1", "1 Attack", "", 0, 10000), - new CtlDesc(15, "Attack2", "2 Attack", "", 0, 10000), - new CtlDesc(16, "Attack3", "3 Attack", "", 0, 10000), - new CtlDesc(17, "Attack4", "4 Attack", "", 0, 10000), - new CtlDesc(18, "Attack5", "5 Attack", "", 0, 10000), - new CtlDesc(19, "Decay1", "1 Decay", "", 0, 10000), - new CtlDesc(20, "Decay2", "2 Decay", "", 0, 10000), - new CtlDesc(21, "Decay3", "3 Decay", "", 0, 10000), - new CtlDesc(22, "Decay4", "4 Decay", "", 0, 10000), - new CtlDesc(23, "Decay5", "5 Decay", "", 0, 10000), - new CtlDesc(24, "SustainLevel1", "1 Sustain level", "", 0, 32768), - new CtlDesc(25, "SustainLevel2", "2 Sustain level", "", 0, 32768), - new CtlDesc(26, "SustainLevel3", "3 Sustain level", "", 0, 32768), - new CtlDesc(27, "SustainLevel4", "4 Sustain level", "", 0, 32768), - new CtlDesc(28, "SustainLevel5", "5 Sustain level", "", 0, 32768), - new CtlDesc(29, "Release1", "1 Release", "", 0, 10000), - new CtlDesc(30, "Release2", "2 Release", "", 0, 10000), - new CtlDesc(31, "Release3", "3 Release", "", 0, 10000), - new CtlDesc(32, "Release4", "4 Release", "", 0, 10000), - new CtlDesc(33, "Release5", "5 Release", "", 0, 10000), - new CtlDesc(34, "AttackCurve1", "1 Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(35, "AttackCurve2", "2 Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(36, "AttackCurve3", "3 Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(37, "AttackCurve4", "4 Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(38, "AttackCurve5", "5 Attack curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(39, "DecayCurve1", "1 Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(40, "DecayCurve2", "2 Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(41, "DecayCurve3", "3 Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(42, "DecayCurve4", "4 Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(43, "DecayCurve5", "5 Decay curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(44, "ReleaseCurve1", "1 Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(45, "ReleaseCurve2", "2 Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(46, "ReleaseCurve3", "3 Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(47, "ReleaseCurve4", "4 Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(48, "ReleaseCurve5", "5 Release curve", "", 0, 11, enumTypeName: "ADSRCurveType"), - new CtlDesc(49, "Sustain1", "1 Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(50, "Sustain2", "2 Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(51, "Sustain3", "3 Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(52, "Sustain4", "4 Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(53, "Sustain5", "5 Sustain", "", 0, 2, enumTypeName: "ADSRSustainMode"), - new CtlDesc(54, "SustainPedal1", "1 Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(55, "SustainPedal2", "2 Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(56, "SustainPedal3", "3 Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(57, "SustainPedal4", "4 Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(58, "SustainPedal5", "5 Sustain pedal", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(59, "EnvelopeScalingPerKey1", "1 Envelope scaling per key", "", -128, 128), - new CtlDesc(60, "EnvelopeScalingPerKey2", "2 Envelope scaling per key", "", -128, 128), - new CtlDesc(61, "EnvelopeScalingPerKey3", "3 Envelope scaling per key", "", -128, 128), - new CtlDesc(62, "EnvelopeScalingPerKey4", "4 Envelope scaling per key", "", -128, 128), - new CtlDesc(63, "EnvelopeScalingPerKey5", "5 Envelope scaling per key", "", -128, 128), - new CtlDesc(64, "VolumeScalingPerKey1", "1 Volume scaling per key", "", -128, 128), - new CtlDesc(65, "VolumeScalingPerKey2", "2 Volume scaling per key", "", -128, 128), - new CtlDesc(66, "VolumeScalingPerKey3", "3 Volume scaling per key", "", -128, 128), - new CtlDesc(67, "VolumeScalingPerKey4", "4 Volume scaling per key", "", -128, 128), - new CtlDesc(68, "VolumeScalingPerKey5", "5 Volume scaling per key", "", -128, 128), - new CtlDesc(69, "VelocitySensitivity1", "1 Velocity sensitivity", "", -128, 128), - new CtlDesc(70, "VelocitySensitivity2", "2 Velocity sensitivity", "", -128, 128), - new CtlDesc(71, "VelocitySensitivity3", "3 Velocity sensitivity", "", -128, 128), - new CtlDesc(72, "VelocitySensitivity4", "4 Velocity sensitivity", "", -128, 128), - new CtlDesc(73, "VelocitySensitivity5", "5 Velocity sensitivity", "", -128, 128), - new CtlDesc(74, "Waveform1", "1 Waveform", "", 0, 9, enumTypeName: "FMXWaveform"), - new CtlDesc(75, "Waveform2", "2 Waveform", "", 0, 9, enumTypeName: "FMXWaveform"), - new CtlDesc(76, "Waveform3", "3 Waveform", "", 0, 9, enumTypeName: "FMXWaveform"), - new CtlDesc(77, "Waveform4", "4 Waveform", "", 0, 9, enumTypeName: "FMXWaveform"), - new CtlDesc(78, "Waveform5", "5 Waveform", "", 0, 9, enumTypeName: "FMXWaveform"), - new CtlDesc(79, "Noise1", "1 Noise", "", 0, 32768), - new CtlDesc(80, "Noise2", "2 Noise", "", 0, 32768), - new CtlDesc(81, "Noise3", "3 Noise", "", 0, 32768), - new CtlDesc(82, "Noise4", "4 Noise", "", 0, 32768), - new CtlDesc(83, "Noise5", "5 Noise", "", 0, 32768), - new CtlDesc(84, "Phase1", "1 Phase", "", 0, 32768), - new CtlDesc(85, "Phase2", "2 Phase", "", 0, 32768), - new CtlDesc(86, "Phase3", "3 Phase", "", 0, 32768), - new CtlDesc(87, "Phase4", "4 Phase", "", 0, 32768), - new CtlDesc(88, "Phase5", "5 Phase", "", 0, 32768), - new CtlDesc(89, "FreqMultiply1", "1 Freq multiply", "", 0, 32000), - new CtlDesc(90, "FreqMultiply2", "2 Freq multiply", "", 0, 32000), - new CtlDesc(91, "FreqMultiply3", "3 Freq multiply", "", 0, 32000), - new CtlDesc(92, "FreqMultiply4", "4 Freq multiply", "", 0, 32000), - new CtlDesc(93, "FreqMultiply5", "5 Freq multiply", "", 0, 32000), - new CtlDesc(94, "ConstantPitch1", "1 Constant pitch", "", -8192, 8192), - new CtlDesc(95, "ConstantPitch2", "2 Constant pitch", "", -8192, 8192), - new CtlDesc(96, "ConstantPitch3", "3 Constant pitch", "", -8192, 8192), - new CtlDesc(97, "ConstantPitch4", "4 Constant pitch", "", -8192, 8192), - new CtlDesc(98, "ConstantPitch5", "5 Constant pitch", "", -8192, 8192), - new CtlDesc(99, "SelfModulation1", "1 Self-modulation", "", 0, 32768), - new CtlDesc(100, "SelfModulation2", "2 Self-modulation", "", 0, 32768), - new CtlDesc(101, "SelfModulation3", "3 Self-modulation", "", 0, 32768), - new CtlDesc(102, "SelfModulation4", "4 Self-modulation", "", 0, 32768), - new CtlDesc(103, "SelfModulation5", "5 Self-modulation", "", 0, 32768), - new CtlDesc(104, "Feedback1", "1 Feedback", "", 0, 32768), - new CtlDesc(105, "Feedback2", "2 Feedback", "", 0, 32768), - new CtlDesc(106, "Feedback3", "3 Feedback", "", 0, 32768), - new CtlDesc(107, "Feedback4", "4 Feedback", "", 0, 32768), - new CtlDesc(108, "Feedback5", "5 Feedback", "", 0, 32768), - new CtlDesc(109, "ModulationType1", "1 Modulation type", "", 0, 9, enumTypeName: "FMXModulationType"), - new CtlDesc(110, "ModulationType2", "2 Modulation type", "", 0, 9, enumTypeName: "FMXModulationType"), - new CtlDesc(111, "ModulationType3", "3 Modulation type", "", 0, 9, enumTypeName: "FMXModulationType"), - new CtlDesc(112, "ModulationType4", "4 Modulation type", "", 0, 9, enumTypeName: "FMXModulationType"), - new CtlDesc(113, "ModulationType5", "5 Modulation type", "", 0, 9, enumTypeName: "FMXModulationType"), - new CtlDesc(114, "OutputMode1", "1 Output mode", "", 0, 31, ignoreInternalEnum: true), - new CtlDesc(115, "OutputMode2", "2 Output mode", "", 0, 15, ignoreInternalEnum: true), - new CtlDesc(116, "OutputMode3", "3 Output mode", "", 0, 7, ignoreInternalEnum: true), - new CtlDesc(117, "OutputMode4", "4 Output mode", "", 0, 3, ignoreInternalEnum: true), - new CtlDesc(118, "EnvelopeGain", "Envelope gain", "", 0, 8000), - }, - new List() - { - new CurveDesc(0, "CustomWaveform", "Used as a waveform where 'Custom' waveform type was applied.", -1, 1, 256), - }, - new AddCodeDesc() - ), - new ModuleDesc( - "Generator", - "Generator", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Waveform", "Waveform", "", 0, 8, enumTypeName: "GeneratorWaveform"), - new CtlDesc(2, "Panning", "Panning", "", -128, 128), - new CtlDesc(3, "Attack", "Attack", "", 0, 512), - new CtlDesc(4, "Release", "Release", "", 0, 512), - new CtlDesc(5, "Polyphony", "Polyphony", "", 1, 16, ignoreInternalEnum: true), - new CtlDesc(6, "Mode", "Mode", "", 0, 1, enumTypeName: "Channels"), - new CtlDesc(7, "Sustain", "Sustain", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(8, "FreqModulationByInput", "Freq.modulation by input", "", 0, 256), - new CtlDesc(9, "DutyCycle", "Duty cycle", "", 0, 1022), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Glide", - "Glide", - "", - new List() - { - new CtlDesc(0, "Response", "Response", "", 0, 1000), - new CtlDesc(1, "SampleRate", "Sample rate", "", 1, 32768), - new CtlDesc(2, "ResetOnFirstNote", "Reset on 1st note", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(3, "Polyphony", "Polyphony", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(4, "Pitch", "Pitch", "", -600, 600), - new CtlDesc(5, "PitchScale", "Pitch scale", "", 0, 200), - new CtlDesc(6, "Reset", "Reset", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "GPIO", - "GPIO", - "", - new List() - { - new CtlDesc(0, "Out", "Out", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(1, "OutPin", "Out pin", "", 0, 256, ignoreInternalEnum: true), - new CtlDesc(2, "OutThreshold", "Out threshold", "", 0, 100), - new CtlDesc(3, "In", "In", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(4, "InPin", "In pin", "", 0, 256, ignoreInternalEnum: true), - new CtlDesc(5, "InNote", "In note", "", 0, 128, ignoreInternalEnum: true), - new CtlDesc(6, "InAmplitude", "In amplitude", "", 0, 100), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Input", - "Input", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 1024), - new CtlDesc(1, "Channels", "Channels", "", 0, 1, enumTypeName: "ChannelsInverted"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Kicker", - "Kicker", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Waveform", "Waveform", "", 0, 2, enumTypeName: "KickerWaveform"), - new CtlDesc(2, "Panning", "Panning", "", -128, 128), - new CtlDesc(3, "Attack", "Attack", "", 0, 512), - new CtlDesc(4, "Release", "Release", "", 0, 512), - new CtlDesc(5, "Boost", "Boost", "", 0, 1024), - new CtlDesc(6, "Acceleration", "Acceleration", "", 0, 1024), - new CtlDesc(7, "Polyphony", "Polyphony", "", 1, 4, ignoreInternalEnum: true), - new CtlDesc(8, "NoClick", "No click", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "LFO", - "LFO", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "LfoType", "Type", "", 0, 1, enumTypeName: "LFOType"), - new CtlDesc(2, "Amplitude", "Amplitude", "", 0, 256), - new CtlDesc(3, "Freq", "Freq", "", 1, 256), - new CtlDesc(4, "Waveform", "Waveform", "", 0, 7, enumTypeName: "LFOWaveform"), - new CtlDesc(5, "SetPhase", "Set phase", "", 0, 256), - new CtlDesc(6, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - new CtlDesc(7, "FrequencyUnit", "Frequency unit", "", 0, 6, enumTypeName: "LFOFrequencyUnit"), - new CtlDesc(8, "DutyCycle", "Duty cycle", "", 0, 256), - new CtlDesc(9, "Generator", "Generator", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(10, "FreqScale", "Freq scale", "", 0, 200), - new CtlDesc(11, "SmoothTransitions", "Smooth transitions", "", 0, 1, enumTypeName: "LFOSmoothTransitions"), - new CtlDesc(12, "SineQuality", "Sine quality", "", 0, 3, enumTypeName: "LFOSineQuality"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Loop", - "Loop", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Delay", "Length", "", 0, 256), - new CtlDesc(2, "Channels", "Channels", "", 0, 1, enumTypeName: "ChannelsInverted"), - new CtlDesc(3, "Repeats", "Repeat (128=endless)", "", 0, 128, ignoreInternalEnum: true), - new CtlDesc(4, "Mode", "Mode", "", 0, 1, enumTypeName: "LoopMode"), - new CtlDesc(5, "LengthUnit", "Length unit", "", 0, 6, enumTypeName: "LoopTimeUnit"), - new CtlDesc(6, "MaxBufferSize", "Max buffer size", "Max buffer size in seconds", 1, 240, ignoreInternalEnum: true), - new CtlDesc(7, "OnNoteOn", "On NoteON", "", 0, 1, enumTypeName: "LoopOnNoteOn"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "MetaModule", - "MetaModule", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 1024), - new CtlDesc(1, "InputModule", "Input module", "", 1, 256, ignoreInternalEnum: true), - new CtlDesc(2, "PlayPatterns", "Play patterns", "", 0, 4, enumTypeName: "MetaModulePatternMode"), - new CtlDesc(3, "BPM", "BPM (Beats Per Minute)", "", 1, 1000, ignoreInternalEnum: true), - new CtlDesc(4, "TPL", "TPL (Ticks Per Line)", "", 1, 31, ignoreInternalEnum: true), - }, - new List() - { - }, - new AddCodeDesc() - ), - new ModuleDesc( - "Modulator", - "Modulator", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "ModulationType", "Modulation type", "", 0, 2, enumTypeName: "ModulationType"), - new CtlDesc(2, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "MultiControl", - "MultiCtl", - "", - new List() - { - new CtlDesc(0, "Value", "Value", "", 0, 32768), - new CtlDesc(1, "Gain", "Gain", "", 0, 1024), - new CtlDesc(2, "Quantization", "Quantization", "", 0, 32768), - new CtlDesc(3, "OUTOffset", "OUT offset", "", -16384, 16384), - new CtlDesc(4, "Response", "Response", "", 0, 1000), - new CtlDesc(5, "SampleRate", "Sample rate", "", 1, 32768), - }, - new List() - { - new CurveDesc(0, "Curve", "Modifies applied values.", 0, 1, 257), - }, - null - ), - new ModuleDesc( - "MultiSynth", - "MultiSynth", - "", - new List() - { - new CtlDesc(0, "Transpose", "Transpose", "", -128, 128, ignoreInternalEnum: true), - new CtlDesc(1, "RandomPitch", "Random pitch", "", 0, 4096), - new CtlDesc(2, "Velocity", "Velocity", "", 0, 256), - new CtlDesc(3, "Finetune", "Finetune", "", -256, 256), - new CtlDesc(4, "RandomPhase", "Random phase", "", 0, 32768), - new CtlDesc(5, "RandomVelocity", "Random velocity", "", 0, 32768), - new CtlDesc(6, "Phase", "Phase", "", 0, 32768), - new CtlDesc(7, "Curve2Influence", "Curve2 influence", "", 0, 256), - }, - new List() - { - new CurveDesc(0, "NoteVelocityCurve", "Velocity to apply to arriving note.", 0, 1, 128), - new CurveDesc(1, "VelocityToVelocityCurve", "Map velocity values.", 0, 1, 257), - }, - null - ), - new ModuleDesc( - "Output", - "Output", - "", - new List() - { - }, - new List() - { - }, - null - ), - new ModuleDesc( - "PitchDetector", - "Pitch Detector", - "", - new List() - { - new CtlDesc(0, "Algorithm", "Algorithm", "", 0, 2, enumTypeName: "PitchDetectorAlgorithm"), - new CtlDesc(1, "Threshold", "Threshold", "", 0, 10000), - new CtlDesc(2, "Gain", "Gain", "", 0, 256), - new CtlDesc(3, "Microtones", "Microtones", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(4, "DetectorFinetune", "Detector finetune", "", -256, 256), - new CtlDesc(5, "LPFilterFreq", "LP filter freq (0 - OFF)", "", 0, 4000), - new CtlDesc(6, "LPFilterRollOff", "LP filter roll-off", "", 0, 3, enumTypeName: "FilterRollOff"), - new CtlDesc(7, "AlgSampleRateHz", "Alg1-2 Sample rate (Hz)", "", 0, 2, enumTypeName: "PitchDetectorAlgSampleRate"), - new CtlDesc(8, "AlgBufferMs", "Alg1-2 Buffer (ms)", "", 0, 4, enumTypeName: "PitchDetectorBufferSize"), - new CtlDesc(9, "AlgBufOverlap", "Alg1-2 Buf overlap", "", 0, 100), - new CtlDesc(10, "Alg1Sensitivity", "Alg1 Sensitivity (absolute threshold)", "", 0, 100), - new CtlDesc(11, "RecordNotes", "Record notes", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "PitchShifter", - "Pitch shifter", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "Pitch", "Pitch", "", -600, 600), - new CtlDesc(2, "PitchScale", "Pitch scale", "", 0, 200), - new CtlDesc(3, "Feedback", "Feedback", "", 0, 256), - new CtlDesc(4, "GrainSize", "Grain size", "", 0, 256), - new CtlDesc(5, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - new CtlDesc(6, "BypassIfPitchZero", "Bypass if pitch=0", "", 0, 2, enumTypeName: "PitchShifterBypassMode"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "PitchToControl", - "Pitch2Ctl", - "", - new List() - { - new CtlDesc(0, "Mode", "Mode", "", 0, 1, enumTypeName: "PitchToControlMode"), - new CtlDesc(1, "OnNoteOff", "On NoteOFF", "", 0, 2, enumTypeName: "PitchToControlOnNoteOff"), - new CtlDesc(2, "FirstNote", "First note", "", 0, 256, ignoreInternalEnum: true), - new CtlDesc(3, "RangeNumberOfSemitones", "Range (number of semitones)", "", 0, 256, ignoreInternalEnum: true), - new CtlDesc(4, "OUTMin", "OUT min", "", 0, 32768), - new CtlDesc(5, "OUTMax", "OUT max", "", 0, 32768), - new CtlDesc(6, "OUTController", "OUT controller", "", 0, 255, ignoreInternalEnum: true), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Reverb", - "Reverb", - "", - new List() - { - new CtlDesc(0, "Dry", "Dry", "", 0, 256), - new CtlDesc(1, "Wet", "Wet", "", 0, 256), - new CtlDesc(2, "Feedback", "Feedback", "", 0, 256), - new CtlDesc(3, "Damp", "Damp", "", 0, 256), - new CtlDesc(4, "StereoWidth", "Stereo width", "", 0, 256), - new CtlDesc(5, "Freeze", "Freeze", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(6, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - new CtlDesc(7, "AllPassFilter", "All-pass filter", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(8, "RoomSize", "Room size", "", 0, 128), - new CtlDesc(9, "RandomSeed", "Random seed", "", 0, 32768, ignoreInternalEnum: true), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Sampler", - "Sampler", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "Panning", "Panning", "", -128, 128), - new CtlDesc(2, "SampleInterpolation", "Sample interpolation", "", 0, 2, enumTypeName: "SamplerInterpolation"), - new CtlDesc(3, "EnvelopeInterpolation", "Envelope interpolation", "", 0, 1, enumTypeName: "SamplerEnvelopeInterpolation"), - new CtlDesc(4, "Polyphony", "Polyphony", "", 1, 32, ignoreInternalEnum: true), - new CtlDesc(5, "RecThreshold", "Rec threshold", "", 0, 10000), - }, - new List() - { - }, - new AddCodeDesc() - ), - new ModuleDesc( - "SoundToControl", - "Sound2Ctl", - "", - new List() - { - new CtlDesc(0, "SampleRate", "Sample rate", "", 1, 32768), - new CtlDesc(1, "Channels", "Channels", "", 0, 1, enumTypeName: "ChannelsInverted"), - new CtlDesc(2, "Absolute", "Absolute", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(3, "Gain", "Gain", "", 0, 1024), - new CtlDesc(4, "Smooth", "Smooth", "", 0, 256), - new CtlDesc(5, "Mode", "Mode", "", 0, 1, enumTypeName: "SoundToControlMode"), - new CtlDesc(6, "OutMin", "OUT min", "", 0, 32768), - new CtlDesc(7, "OutMax", "OUT max", "", 0, 32768), - new CtlDesc(8, "OUTController", "OUT controller", "", 0, 255, ignoreInternalEnum: true), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "SpectraVoice", - "SpectraVoice", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Panning", "Panning", "", -128, 128), - new CtlDesc(2, "Attack", "Attack", "", 0, 512), - new CtlDesc(3, "Release", "Release", "", 0, 512), - new CtlDesc(4, "Polyphony", "Polyphony", "", 1, 32, ignoreInternalEnum: true), - new CtlDesc(5, "Mode", "Mode", "", 0, 4, enumTypeName: "SpectraVoiceMode"), - new CtlDesc(6, "Sustain", "Sustain", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(7, "SpectrumResolution", "Spectrum resolution", "", 0, 5, enumTypeName: "SpectraVoiceResolution"), - new CtlDesc(8, "Harmonic", "Harmonic", "", 0, 15, ignoreInternalEnum: true), - new CtlDesc(9, "HarmonicFreq", "H.freq", "", 0, 22050, ignoreInternalEnum: true), - new CtlDesc(10, "HarmonicVolume", "H.volume", "", 0, 255, ignoreInternalEnum: true), - new CtlDesc(11, "HarmonicWidth", "H.width", "", 0, 255, ignoreInternalEnum: true), - new CtlDesc(12, "HarmonicType", "H.type", "", 0, 18, enumTypeName: "SpectraVoiceHarmonicType"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "VelocityToControl", - "Velocity2Ctl", - "", - new List() - { - new CtlDesc(0, "OnNoteOff", "On NoteOFF", "", 0, 2, enumTypeName: "VelocityToControlOnNoteOff"), - new CtlDesc(1, "OutMin", "OUT min", "", 0, 32768), - new CtlDesc(2, "OutMax", "OUT max", "", 0, 32768), - new CtlDesc(3, "OutOffset", "OUT offset", "", -16384, 16384), - new CtlDesc(4, "OutController", "OUT controller", "", 0, 255, ignoreInternalEnum: true), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "Vibrato", - "Vibrato", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 256), - new CtlDesc(1, "Amplitude", "Amplitude", "", 0, 256), - new CtlDesc(2, "Freq", "Freq", "", 1, 2048), - new CtlDesc(3, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - new CtlDesc(4, "SetPhase", "Set phase", "", 0, 256), - new CtlDesc(5, "FrequencyUnit", "Frequency unit", "", 0, 6, enumTypeName: "VibratoFrequencyUnit"), - new CtlDesc(6, "ExponentialAmplitude", "Exponential amplitude", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "VocalFilter", - "Vocal filter", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "FormantWidth", "Formant width", "", 0, 256), - new CtlDesc(2, "Intensity", "Intensity", "", 0, 256), - new CtlDesc(3, "Formants", "Formants", "", 1, 5, ignoreInternalEnum: true), - new CtlDesc(4, "Vowel", "Vowel (a,e,i,o,u)", "", 0, 256), - new CtlDesc(5, "VoiceType", "Voice type", "", 0, 3, enumTypeName: "VocalFilterVoiceType"), - new CtlDesc(6, "Channels", "Channels", "", 0, 1, enumTypeName: "Channels"), - new CtlDesc(7, "RandomFrequency", "Random frequency", "", 0, 1024), - new CtlDesc(8, "RandomSeed", "Random seed", "", 0, 32768), - new CtlDesc(9, "Vowel1", "Vowel1", "", 0, 4, enumTypeName: "VocalFilterVowel"), - new CtlDesc(10, "Vowel2", "Vowel2", "", 0, 4, enumTypeName: "VocalFilterVowel"), - new CtlDesc(11, "Vowel3", "Vowel3", "", 0, 4, enumTypeName: "VocalFilterVowel"), - new CtlDesc(12, "Vowel4", "Vowel4", "", 0, 4, enumTypeName: "VocalFilterVowel"), - new CtlDesc(13, "Vowel5", "Vowel5", "", 0, 4, enumTypeName: "VocalFilterVowel"), - }, - new List() - { - }, - null - ), - new ModuleDesc( - "VorbisPlayer", - "Vorbis player", - "", - new List() - { - new CtlDesc(0, "Volume", "Volume", "", 0, 512), - new CtlDesc(1, "OriginalSpeed", "Original speed", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(2, "Finetune", "Finetune", "", -128, 128), - new CtlDesc(3, "Transpose", "Transpose", "", -128, 128, ignoreInternalEnum: true), - new CtlDesc(4, "Interpolation", "Interpolation", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(5, "Polyphony", "Polyphony", "", 1, 4, ignoreInternalEnum: true), - new CtlDesc(6, "Repeat", "Repeat", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - }, - new AddCodeDesc() - ), - new ModuleDesc( - "WaveShaper", - "WaveShaper", - "", - new List() - { - new CtlDesc(0, "InputVolume", "Input volume", "", 0, 512), - new CtlDesc(1, "Mix", "Mix", "", 0, 256), - new CtlDesc(2, "OutputVolume", "Output volume", "", 0, 512), - new CtlDesc(3, "Symmetric", "Symmetric", "", 0, 1, enumTypeName: "Toggle"), - new CtlDesc(4, "Mode", "Mode", "", 0, 3, enumTypeName: "Quality"), - new CtlDesc(5, "DCBlocker", "DC blocker", "", 0, 1, enumTypeName: "Toggle"), - }, - new List() - { - new CurveDesc(0, "Curve", "Maps input to output.", 0, 1, 256), - }, - null - ), - }; - - return data; - } - } -} diff --git a/CodeGeneration/ReparsedData/Data.cs b/CodeGeneration/ReparsedData/Data.cs deleted file mode 100644 index 18c9093..0000000 --- a/CodeGeneration/ReparsedData/Data.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace CodeGeneration.ReparsedData -{ - public partial class Data - { - public ICollection Modules { get; set; } - public ICollection Enums { get; set; } - } -} diff --git a/CodeGeneration/all_modules.sunvox b/CodeGeneration/all_modules.sunvox deleted file mode 100644 index b3e1c5349526817f09e44f174195a8d5e2b9102d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23910 zcmeHP33yyp75>{&psYnjP*F!gtqPh3McgON*3e8d?S#;)cTbpEvK$oSAuVlAD>NpuOLhynpUH_r812 zIrrRq|F>j%x>kXyr*&m!KOW}+bC>Xk!)=}ILB7gl+VXe-@se~Zp)zM`e!8_q@&5el zZeJN-{oUQ((x^xMYwzjm)MJ`|%bQZINATF#(0Jkr4U11`JUOwrk^hm(GzUVM1Ef}W zb!mYM_?KGM)u#ByTrQXD&Ex)ibGgn`W|`(|YCd&kzASO3wKHh+vBaJ2t;<#B5&TOx zbqAPGaknc=9F*l{k#6a3((C`fr*!kuKv#iIIy(ZKpiPojt7E2t;c(Q>JRe9GNlj*JIE zuvH%>PU$h||I(K3!@^D!51A^S-7>m$Q)c_-v4Ns^2~y8Kh&e?$AD3RpM)?e1&MLLK zwCcgRoUq{z2dWC){sxn8<&!4g;y4+bFEM3peg&rcZDYAG&AR(lbBwl>YgY789YZ57 z<$OG1!q+42sM#Zgt#n?{V6e>(22bc67E`=XHW7oxCy5*kJO93}owxxnqY*?i7pq``sQ#l{kS*Ys*kF@~KtJ!ssESf~vWamcn z4YsCYc0nc%vlm4fsSoZqb-u6OOq+f2Uh3~m>(<7}K%blfuh11oKJE1>a9=wD4eYbSK7UjVOzH>K zmW=Ij#7bVbaJ$f=oX^5>f}zA`;W)o`Vnx_+H-Tv%9FEJkG6x!Yy9lt@%IA2ZnZZ%X zoG?vljH$|%8_kkp9hy1h8sXtjw)2yr7#r~T1_F# z2G?!OR&ax^3U-Mbp9Afhf}{s2$;1E(lo9)0Xe zB{Py;H#XYWGd#F1Yx-S)8hsAsuM)Ya5TpvvgtsY26ox2wRSv7qI!qXZwE+eBH07{1U3vOo#ceRHOT%G; zM{Ret`IE-+~MD5z4so?pW@hD|o^!O`1444z3@J zogdXd^(I_VF3LIeO3pd=D4ym$^gGAvx-1bk#W{(^%$_tKEa1wPIA@aiGrV?OktiCd zd3e*vXm-n%$~*t;1d|%*U>=Q}kA-}1lja)gx`MH*nSSj>L})mk>Ua6t;}T3u)N|oz zhek_tV#&~O{JzR*-pKiA-uHH7?)vds19zZ3YD@!im~s`tfq}~fhn6gNEKV}ws2b31 zc3#e>^S(FK#&fsV+E_O)3-on6Rv3}jEEsWc z3m+RA8yw!u%!pKQ?!0;y|9(Xi$((Q?^2d zmd#LUT{kf7DvUa+mUW8|$oc5kmypU`SbLZ-qhk@nlz&1%zu=bTu3;;=T~;aDd&GI0)V>x{*WNbXv(GWJ?xgvj2 zn_q%Wh@F!BRO(b2ddW7uP(IDNmrU*ziS%g9M5$h(JDI#!1adx};Y);!UtYUsNVKK* zoLbDc&tvqncaffvH2D@A`MV7!EY>4MJS|VUKgE@yzReq|1Qzum)j?Y*H<|mSISQvs zRh&ONRK*R()Bz6^uC1)86Gn!x=o;mircSFsKGiKaR2%f2ZC&nqkw>?RP&prS`SKQZ zW|p)sg^_Gxxt%Mlxk}`1S%bx3!b1HvYE-OJXwm@{&ZoMWG_Jm?rXC(1aSe$&s;PA) z)~Rwnw)SR9#;>b&i)rm>afSZfR)_u4xpz^q0guJc1VAFX@S z9=D9w(?xY0JMG%>FERPdF3KBh;{`W>r82b4tW3wet{W~r!|VEn66<64XKFFM9a$ph zV>e$?BzMh~^|YH99a|j708qTtCN`c=f~{@sTyJkpa#I|HH#0F-gg0#iQ{D3`!X_J2 z@Pom%`Zj6)$`Sw74|Ivy6UzCxfG@!_p1Zc5E>JSeXrsa~W_PB9XE0!%)^~a~Gtf5@ zw}(-+>lWC^`Dosk96{~WnhlO|*bWr+HD`q&pW1HF%zT>iAgFf#U7tN*n#1Efesy3z zzesQZp9@-mgK#ho!J#+|hx4hQBk%w`5D&tUcrcE_(Rc_RiihDCJe(g1cq9^d6dsLZ zaU33l$Kr8Vgva9vcp{F+33w8o%qNBxqY)?KDR?SQ!qadvo{neWnRphSjpyLGNTLZ# z(2N$eq7Cg>iVmEDW#~i-%hAOzAgsVjWYCRM(Sy^l3cXm3=i&Ky0bYm~VGa7Q7VG$g zP8RF20RtGsi?I72>T-M*pTiaSJidS{@kM+ISK-UJ8ehRR z_$sc&b@&>t#|`*8zJVL@O?(UA#&>WNZpL?U3%-Z%;|KU5ZpCf*5pKti@e}OAPw_MS z9KXOFxD&s`ukdT^#&7Uj{0_gzAMi)~348Eo`~`o-UHBXRj(^~v_!sWRzwsa3gL_eN zThqQJ*wm6)nRmD7|2hhF!U*Ih8-F*^i>J#W*vBL2|6$m&nN`oHfTyh|Oa|jmw9}vfAdTq&}e^JSoWe_=PW7QIAED zwl!h_qxyIGVsKpSrbt2F+ScMgX4V$7YYK~)wrsY4ZQr_$di|*6Y*vu-v6(mNz%Ve) z&wn_3SgKh2qx)iA&4j5iHg_uJ__+A4VKsbD$8B; zGN+t#*l34UAr4zdth!gGGG}TZ+@9{J%5u61C6M#cxi9yyqYk9B(XG{UV@$r4u{fA$ z>a6o7!CdF)sq9!^z<$MeyXst*(niil^WOZ!wwi~(4Z+r{tyc9rTh8-!82fUL)t1e7 z@}ikp{tlS-Ir=+bCoYcs4wx2j-vLv_xbJ`|p6okdflT-vF#QzMRK5c?6JMFq{fS#L z2H4}v68SGk)%2Aq_sDSIV|-*-6zofTRRhi@!7`aPQSQa1^67qsneJ0thsFlECUvsq zN4Eqj$oa%TUoLM~?K8f%-^Di@4UHI)~A7u8?RFQcXg#Nk}&d2`3@t#5buH2x%uF@g$_4gyfTuei9N; zLJCSqLJ4UoArU2{qJ(6Wkd6`(QbI~fNJq^5-Al#reh5>!HpN=Q-(X(}O6 zC8Vl^WR;Mv5)xKI%1TID327@KaV4a#gyfZwz7i5xLJCVrVhL$1A(17dvV>%okj@ek zT0%-oNNNdbEg`Wbq_%|QmXO{O5?n%xOGt7FX)YnrC8WB9WS5Zc5)xiQ%1cOk3284O z@g=0bgyffy{t^;kLJCYsf(dCbArU5|!h~d)kPZ_PVnRwxNQwz*F(EM~q{f8gn2;V5 z5@bS(Oh}RmX)+;ECZx)QWSNjI6B1@Z%1lU_328GSaVDhBgyfl!J`)mXLJCbtq6uj< zA(1Ae(u8E1kWLd4YC=j)NU8~GH6gJkq}GJwnvh--5^O?>tvoV!U~Yj>2qJEk&)XH& zry9ZYaz3%ymt?O)Y^JvtW3$B^6p=C8%EVzU%b1xxT-n*0!uZcy+4Ud}^&0 z+$L^}pHS6mdf&Y$=VLTqetrgdAXTn2n&pISe#xY(@^#+MtspV&wsZOW^DWsizAhQ{ zs*@`IaJHdL&PV&c4+!S2u6aurxL?S^rH#g|maU9k^4O(~mA5!pE{65n4Z6Chvu+?y z%dJt6PtzV^la((Ih<2%(8Q!|Ne+omZC^wmL8`yofkD6f9yk3J1zQjANeUwwIRk$j~ z<;NLR;$%#I)R0@s^I@vla8WT*>( Console.WriteLine(message); - - protected virtual void Write(string message) => Console.Write(message); - - protected virtual string ReadLine() => Console.ReadLine(); - - protected virtual void WaitForInput(string message = null) - { - if (message == null) - Console.WriteLine(message); - Console.WriteLine("Press enter to continue..."); - Console.ReadLine(); - } -} diff --git a/Examples/ExampleContainer.cs b/Examples/ExampleContainer.cs deleted file mode 100644 index 798fee8..0000000 --- a/Examples/ExampleContainer.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Examples; - -public abstract class ExampleContainer -{ - public string Name { get; protected set; } - - public ExampleContainer(string name) - { - Name = name; - } - - public abstract void Run(); -} - -public class ManualJobContainer : ExampleContainer - where T : BaseExample, new() -{ - public ManualJobContainer(string name) : base(name) - { - } - - public override void Run() - { - var instance = new T(); - instance.Run(); - } -} diff --git a/Examples/Examples.csproj b/Examples/Examples.csproj deleted file mode 100644 index 0ea53d8..0000000 --- a/Examples/Examples.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - Exe - net6.0 - enable - disable - - - - - - - - - - - - - - PreserveNewest - - - PreserveNewest - - - - diff --git a/Examples/ObjectWrapperListModulesAndPatterns.cs b/Examples/ObjectWrapperListModulesAndPatterns.cs deleted file mode 100644 index 1a37a18..0000000 --- a/Examples/ObjectWrapperListModulesAndPatterns.cs +++ /dev/null @@ -1,62 +0,0 @@ -using SunSharp; -using SunSharp.ObjectWrapper; - -namespace Examples; - -internal class ObjectWrapperListModulesAndPatterns : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load("the_lick.sunvox"); - WriteLine($"Loaded song: {slot.GetSongName()}"); - - ListModules(slot); - ListPatterns(slot); - - slot.Close(); - } - } - - private void ListModules(Slot slot) - { - WriteLine("Modules:"); - foreach (var module in slot.Synthesizer) - { - WriteLine($"{module.Id}. {module.GetName()}"); - for (int i = 0; i < module.GetControllerCount(); i++) - WriteLine($"\t{i}. {module.GetControllerName(i)}, v:{module.GetControllerValue(i)}"); - } - } - - private void ListPatterns(Slot slot) - { - WriteLine("Patterns:"); - foreach (var pattern in slot.Timeline) - { - WriteLine($"{pattern.Id}. {pattern.GetName()}"); - - WriteLine("Data:"); - WriteLine(string.Join(" ", Enumerable.Repeat("NNVVMMMMCCEEXXYY", pattern.GetTrackCount()))); - var data = pattern.GetData2D(); - var length = pattern.GetLength(); - var tracks = pattern.GetTrackCount(); - for (int l = 0; l < length; l++) - { - for (int t = 0; t < tracks; t++) - { - Write(data[l, t].ToString()); - if (t < tracks - 1) - Write(" "); - } - - Write(Environment.NewLine); - } - } - } -} diff --git a/Examples/ObjectWrapperManagePatterns.cs b/Examples/ObjectWrapperManagePatterns.cs deleted file mode 100644 index 3f3d056..0000000 --- a/Examples/ObjectWrapperManagePatterns.cs +++ /dev/null @@ -1,67 +0,0 @@ -using SunSharp; -using SunSharp.ObjectWrapper; - -namespace Examples; - -internal class ObjectWrapperManagePatterns : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load("the_lick.sunvox"); - WriteLine($"Loaded song: {slot.GetSongName()}"); - - var pattern = slot.Timeline.First(); // expect only one pattern - pattern.Resize(lines: pattern.GetLength() + 2); - - var tracks = pattern.GetTrackCount(); - var lines = pattern.GetLength(); - - var cloneX = pattern.GetPosition().x + pattern.GetLength(); - var clone = slot.Timeline.ClonePattern(pattern, cloneX, 0); - - var copyX = clone.GetPosition().x + clone.GetLength(); - var copy = slot.Timeline.CreatePattern("Inverted pattern", lines, tracks, copyX, 0); - - var data = pattern.GetData2D(); - var newData = new PatternEvent[lines, tracks]; - - for (int l = 0; l < lines; l++) - { - for (int t = 0; t < tracks; t++) - { - newData[l, t] = data[lines - 1 - l, tracks - t - 1]; - } - } - - copy.SetData2D(newData); - copy.Resize(tracks: 1); - - slot.SetAutostop(true); - slot.Rewind(0); - slot.Play(); - - int line = 0; - while (line != slot.GetSongLengthInLines() - 1 || slot.IsPlaying()) - { - var currentLine = slot.GetCurrentLine(); - if (currentLine != line) - { - line = currentLine; - WriteLine($"Current line: {line}"); - } - - Thread.Sleep(10); - } - - WriteLine("Song finished"); - Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... - slot.Close(); - } - } -} diff --git a/Examples/ObjectWrapperPlaySong.cs b/Examples/ObjectWrapperPlaySong.cs deleted file mode 100644 index 932713e..0000000 --- a/Examples/ObjectWrapperPlaySong.cs +++ /dev/null @@ -1,42 +0,0 @@ -using SunSharp; -using SunSharp.ObjectWrapper; - -namespace Examples; - -internal class ObjectWrapperPlaySong : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load("the_lick.sunvox"); - WriteLine($"Loaded song: {slot.GetSongName()}"); - - slot.SetAutostop(true); - slot.Rewind(0); - slot.Play(); - - int line = 0; - while (line != slot.GetSongLengthInLines() - 1 || slot.IsPlaying()) - { - var currentLine = slot.GetCurrentLine(); - if (currentLine != line) - { - line = currentLine; - WriteLine($"Current line: {line}"); - } - - Thread.Sleep(10); - } - - WriteLine("Song finished"); - Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... - - slot.Close(); - } - } -} diff --git a/Examples/ObjectWrapperSendEvents.cs b/Examples/ObjectWrapperSendEvents.cs deleted file mode 100644 index 1261b18..0000000 --- a/Examples/ObjectWrapperSendEvents.cs +++ /dev/null @@ -1,56 +0,0 @@ -using SunSharp; -using SunSharp.ObjectWrapper; - -namespace Examples; - -internal class ObjectWrapperSendEvents : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load("the_lick.sunvox"); - WriteLine($"Loaded song: {slot.GetSongName()}"); - SendNotes(slot); - slot.Close(); - } - } - - private void SendNotes(Slot slot) - { - var vp = slot.VirtualPattern; - var ticksPerSecond = vp.GetTicksPerSecond(); - WriteLine("Sending a few notes."); - var ticksPerBeat = (int)(ticksPerSecond * 60f / 80f); - var data = new (Note note, int time)[] // the lick, lol - { - (new Note(NoteName.D, 3), ticksPerBeat / 4), // note, and the time it should be held, in ticks - (new Note(NoteName.E, 3), ticksPerBeat / 4), - (new Note(NoteName.F, 3), ticksPerBeat / 4), - (new Note(NoteName.G, 3), ticksPerBeat / 4), - (new Note(NoteName.E, 3), ticksPerBeat * 2 / 4), - (new Note(NoteName.C, 3), ticksPerBeat / 4), - (new Note(NoteName.D, 3), ticksPerBeat / 4), - (Note.Off, 0) - }; - - int accumulator = 0; - uint current = vp.GetCurrentTick() + ticksPerSecond / 2; - foreach (var pair in data) - { - vp.SetEventTiming((int)(accumulator + current)); - vp.SendEvent(0, new PatternEvent(pair.note, 0x80, 2)); - accumulator += pair.time; - } - - vp.ResetEventTiming(); - - var wait = accumulator / (float)ticksPerSecond + 1; - WriteLine($"Waiting {wait} seconds..."); - Thread.Sleep((int)(wait * 1000)); - } -} diff --git a/Examples/ObjectWrapperUseModules.cs b/Examples/ObjectWrapperUseModules.cs deleted file mode 100644 index 6525a48..0000000 --- a/Examples/ObjectWrapperUseModules.cs +++ /dev/null @@ -1,69 +0,0 @@ -using SunSharp; -using SunSharp.ObjectWrapper; -using SunSharp.ObjectWrapper.Modules; - -namespace Examples; - -internal class ObjectWrapperUseModules : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - using (var sv = new SunVox(lib)) - { - WriteLine("Loading the song"); - var slot = sv.Slots[0]; - slot.Open(); - slot.Load("the_lick.sunvox"); - WriteLine($"Loaded song: {slot.GetSongName()}"); - - AnalogGeneratorModuleHandle analogGenerator = slot.Synthesizer - .First(m => m.GetModuleType() == ModuleType.AnalogGenerator) - .AsAnalogGenerator(); - - WriteLine($"Generator waveform: {analogGenerator.GetWaveform()}"); - WriteLine($"Changing waveform"); - analogGenerator.SetWaveform(AnalogGeneratorWaveform.Drawn); - Thread.Sleep(1000); // should be long enough - WriteLine($"Generator waveform: {analogGenerator.GetWaveform()}"); - WriteLine($"Reading drawn values"); - var buffer = new float[32]; - analogGenerator.ReadDrawnValues(buffer); - foreach (var f in buffer) - WriteLine($"{f}"); - WriteLine($"Changing drawn values"); - for (int i = 0; i < 32; i++) - { - buffer[i] = MathF.Sin(i * MathF.PI * 2 / 32f); - } - - analogGenerator.WriteDrawnValues(buffer); - WriteLine($"Reading drawn values"); - analogGenerator.ReadDrawnValues(buffer); - - foreach (var f in buffer) - WriteLine($"{f}"); - slot.SetAutostop(true); - slot.Rewind(0); - slot.Play(); - - int line = 0; - while (line != slot.GetSongLengthInLines() - 1 || slot.IsPlaying()) - { - var currentLine = slot.GetCurrentLine(); - analogGenerator.SetPanning((int)(128 * MathF.Sin(currentLine / 32f * 4f))); - if (currentLine != line) - { - line = currentLine; - WriteLine($"Current line: {line}"); - } - - Thread.Sleep(10); - } - - WriteLine("Song finished"); - Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... - slot.Close(); - } - } -} diff --git a/Examples/Program.cs b/Examples/Program.cs deleted file mode 100644 index a89154b..0000000 --- a/Examples/Program.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Examples; - -internal static class Program -{ - private static List Options = new List() - { - new ManualJobContainer("Thin wrapper - play a song"), - new ManualJobContainer("Thin wrapper - list modules and patterns"), - new ManualJobContainer("Thin wrapper - send events"), - new ManualJobContainer("ThinWrapper - user audio callback"), - new ManualJobContainer("Object wrapper - play a song"), - new ManualJobContainer("Object wrapper - list modules and patterns"), - new ManualJobContainer("Object wrapper - send events"), - new ManualJobContainer("Object wrapper - using Modules"), - new ManualJobContainer("Object wrapper - manage patterns"), - }; - - private static void Main(string[] args) - { - Console.WriteLine($"Select an option:"); - for (int index = 0; index < Options.Count; index++) - { - Console.WriteLine($"{index + 1}. {Options[index].Name}"); - } - - if (int.TryParse(Console.ReadLine(), out int number)) - { - number--; - if (number < 0 || number >= Options.Count) - return; - - Options[number].Run(); - } - } -} diff --git a/Examples/ThinWrapperListModulesAndPatterns.cs b/Examples/ThinWrapperListModulesAndPatterns.cs deleted file mode 100644 index d2157f3..0000000 --- a/Examples/ThinWrapperListModulesAndPatterns.cs +++ /dev/null @@ -1,82 +0,0 @@ -using SunSharp; -using SunSharp.ThinWrapper; - -namespace Examples; - -internal class ThinWrapperListModulesAndPatterns : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - lib.Init(sampleRate: -1); - WriteLine("Loading the song"); - lib.OpenSlot(0); - lib.Load(0, "the_lick.sunvox"); - - ListModules(lib); - ListPatterns(lib); - - lib.CloseSlot(0); - lib.Deinit(); - } - - private void ListModules(ISunVoxLib lib) - { - WriteLine("Modules:"); - var count = lib.GetUpperModuleCount(0); - var dict = new Dictionary(); - for (int i = 0; i < count; i++) - { - if (lib.GetModuleExists(0, i)) - { - var name = lib.GetModuleName(0, i); - dict.Add(i, name); - WriteLine($"{i}. \"{name}\""); - } - } - - WriteLine("Connections:"); - for (int i = 0; i < count; i++) - { - if (lib.GetModuleExists(0, i)) - { - foreach (var @out in lib.GetModuleOutputs(0, i)) - WriteLine($"{i}. {dict[i]}->{@out}. {dict[@out]}"); - } - } - } - - private void ListPatterns(ISunVoxLib lib) - { - WriteLine("Patterns:"); - var count = lib.GetUpperPatternCount(0); - for (int i = 0; i < count; i++) - { - if (lib.GetPatternExists(0, i)) - { - var name = lib.GetPatternName(0, i); - var position = lib.GetPatternPosition(0, i); - var tracks = lib.GetPatternTracks(0, i); - var lines = lib.GetPatternLines(0, i); - var data = lib.GetPatternData(0, i); - WriteLine( - $"{i}. \"{name}\" at position (x: {position.x}, y: {position.y}), length: ({tracks}x{lines})"); - - WriteLine("Data:"); - WriteLine(string.Join(" ", Enumerable.Repeat("NNVVMMMMCCEEXXYY", tracks))); - - for (int l = 0; l < lines; l++) - { - for (int t = 0; t < tracks; t++) - { - Write(data[l * tracks + t].ToString()); - if (t < tracks - 1) - Write(" "); - } - - Write(Environment.NewLine); - } - } - } - } -} diff --git a/Examples/ThinWrapperPlaySong.cs b/Examples/ThinWrapperPlaySong.cs deleted file mode 100644 index 5689df0..0000000 --- a/Examples/ThinWrapperPlaySong.cs +++ /dev/null @@ -1,40 +0,0 @@ -using SunSharp; -using SunSharp.ThinWrapper; - -namespace Examples; - -internal class ThinWrapperPlaySong : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - lib.Init(sampleRate: -1); - WriteLine("Loading the song"); - lib.OpenSlot(0); - lib.Load(0, "the_lick.sunvox"); - WriteLine($"Loaded song: {lib.GetSongName(0)}"); - lib.SetAutoStop(0, autoStop: true); - lib.Rewind(0, line: 0); - WriteLine("Playing the song"); - lib.Play(0); - - int line = 0; - while (line != lib.GetSongLengthInLines(0) - 1 || lib.IsPlaying(0)) - { - var currentLine = lib.GetCurrentLine(0); - if (currentLine != line) - { - line = currentLine; - WriteLine($"Current line: {line}"); - } - - Thread.Sleep(10); - } - - WriteLine("Song finished"); - Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... - - lib.CloseSlot(0); - lib.Deinit(); - } -} diff --git a/Examples/ThinWrapperSendEvents.cs b/Examples/ThinWrapperSendEvents.cs deleted file mode 100644 index cbab3c2..0000000 --- a/Examples/ThinWrapperSendEvents.cs +++ /dev/null @@ -1,54 +0,0 @@ -using SunSharp; -using SunSharp.ThinWrapper; - -namespace Examples; - -internal class ThinWrapperSendEvents : BaseExample -{ - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - lib.Init(sampleRate: -1); - WriteLine("Loading the song"); - lib.OpenSlot(0); - lib.Load(0, "the_lick.sunvox"); - - SendNotes(lib); - - lib.CloseSlot(0); - lib.Deinit(); - } - - private void SendNotes(ISunVoxLib lib) - { - var tps = lib.GetTicksPerSecond(); - WriteLine("Sending a few notes."); - var tpb = (int)(tps * 60f / 80f); - var data = new (Note note, int time)[] // the lick, lol - { - (new Note(NoteName.D, 3), tpb / 4), // note, and the time it should be held, in ticks - (new Note(NoteName.E, 3), tpb / 4), - (new Note(NoteName.F, 3), tpb / 4), - (new Note(NoteName.G, 3), tpb / 4), - (new Note(NoteName.E, 3), tpb * 2 / 4), - (new Note(NoteName.C, 3), tpb / 4), - (new Note(NoteName.D, 3), tpb / 4), - (Note.Off, 0) - }; - - int accumulator = 0; - uint current = lib.GetTicks() + tps / 2; - foreach (var pair in data) - { - lib.SetSendEventTimestamp(0, false, (int)(accumulator + current)); - lib.SendEvent(0, 0, new PatternEvent(pair.note, 0x80, 2)); - accumulator += pair.time; - } - - lib.SetSendEventTimestamp(0, true); - - var wait = accumulator / (float)tps + 1; - WriteLine($"Waiting {wait} seconds..."); - Thread.Sleep((int)(wait * 1000)); - } -} diff --git a/Examples/ThinWrapperUserAudioCallback.cs b/Examples/ThinWrapperUserAudioCallback.cs deleted file mode 100644 index 28f9208..0000000 --- a/Examples/ThinWrapperUserAudioCallback.cs +++ /dev/null @@ -1,87 +0,0 @@ -using NAudio.Wave; -using SunSharp; -using SunSharp.ThinWrapper; - -namespace Examples -{ - internal class ThinWrapperUserAudioCallback : BaseExample - { - protected override void RunTest(ISunVoxLib lib) - { - WriteLine("Initializing"); - lib.Init(48000, channels: AudioChannels.Stereo, - flags: InitFlags.UserAudioCallback | InitFlags.AudioFloat32); - WriteLine("Loading the song"); - lib.OpenSlot(0); - lib.Load(0, "the_lick.sunvox"); - WriteLine($"Loaded song: {lib.GetSongName(0)}"); - lib.SetAutoStop(0, autoStop: true); - lib.Rewind(0, line: 0); - WriteLine("Playing the song"); - lib.Play(0); - - using (var outputDevice = new WasapiOut()) - { - var provider = new SunvoxStereoSampleProvider(lib, 48000, 1024); - outputDevice.Init(provider); - outputDevice.Play(); - - int line = 0; - while (line != lib.GetSongLengthInLines(0) - 1 || lib.IsPlaying(0)) - { - var currentLine = lib.GetCurrentLine(0); - if (currentLine != line) - { - line = currentLine; - WriteLine($"Current line: {line}"); - } - - Thread.Sleep(10); - } - - WriteLine("Song finished"); - Thread.Sleep(1000); // wait a second, so the reverb may fade out a bit... - } - - lib.CloseSlot(0); - lib.Deinit(); - } - - private class SunvoxStereoSampleProvider : ISampleProvider - { - private ISunVoxLib _lib; - private int _sampleRate; - private float[] _internalBuffer; - private int _offset = 0; - - public SunvoxStereoSampleProvider(ISunVoxLib lib, int sampleRate, int internalBufferSize) - { - _lib = lib; - _sampleRate = sampleRate; - _internalBuffer = new float[internalBufferSize]; - _offset = internalBufferSize; - } - - public WaveFormat WaveFormat => WaveFormat.CreateIeeeFloatWaveFormat(_sampleRate, 2); - - public int Read(float[] buffer, int offset, int count) - { - var time = _lib.GetTicks(); - if (_offset >= _internalBuffer.Length) - { - var ret = _lib.AudioCallback(_internalBuffer, AudioChannels.Stereo, 0, time); - _offset = 0; - } - - var copiedCount = Math.Min(_internalBuffer.Length - _offset, count); - for (int i = 0; i < copiedCount; i++) - { - buffer[offset + i] = _internalBuffer[_offset + i]; - } - - _offset += copiedCount; - return copiedCount; - } - } - } -} diff --git a/Examples/jump_demo.sunvox b/Examples/jump_demo.sunvox deleted file mode 100644 index db07f40bc34723afbfe9323ab83afa9987535889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17206 zcmeHPO=}xR7#_)LqoyKR(;QUNgl+16B-llgV>>iCtgY`xvKFr@WcMP2O-xB`V`Ok? zOP3IW5B&i>>X1_@CO=_Ga|rYggc6GAsYf4sC{f>cG$Xw$e`)QdsLISB=F#lTXy$#M z_ubLTW2;iCGDwy5f)#>tgt6cpypcFl$ntt@V`bX-Ex>bTQO7plW4)P9A$}8HImNGhK!VI5*egPqy^%Gh z1dE0q`s5Pq-)Htb)p4z@lyu>S~aA17EY{-NjOzycGZCe92VVcvlE_ct~+J9P19gPtDhzz8w6!=AG! z(?pIjoz>WP@EIQHg2tU2qK=q8)OqdcvVEj$AE*k$E5uD$ zbg`~?IX=;)0ZBS!1G2*!kpJQDu?}+o!O&53fd$;DOBV~^-OHa~$bh2uL+&P^5YG|t zwtX+&#RAH^++@M;WugM^UB1zUp|9;@HSn-~_L4nf57<+-!tQvX%TRRnvPI~!eWMHg zDZ=kqVfKn|HoD=_%e_m{bqrk~eBXj$l-*)g*knXqnSXfy_bzO%wi<56NHFw~E?+kC zlr96QQ#(T%41J`_myJB7tET8ea}c^5pXl;!BahRQ!O%vmyo=B^cpG^_S3}VS7NFiW za2t7?p7bsUvGOkBT?4m~r*t(HU1$zM*T4ls1Ewdvi(}X*!F(7sCU5-z|(6^@=^am6JrmDPapy{%aBH>-N9=h;aoS!`da73Cp;d*bk-uAuY z_g=>zFkm+XlN4u_@Qs(VN>_LE(6!Xq*hed$TzYZ&_b*@G{^Q%`xj(a&uWrA5|KSJE zPWR(Q6VEfr?>y!#KV|qH&P<$f;O*^(aSuk$9w5#lU=T> zAD;c8#*bXg)oCEH0H(**xY@Mi>L?2(^qllspI#{VcG+x$qdjTq#+1Eom+xqPKC{sr^ge*FLd diff --git a/Examples/the_lick.sunvox b/Examples/the_lick.sunvox deleted file mode 100644 index 5177ca7b316051d4b6aedadce6a8f79c8cc4cf39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2343 zcmdUwzi-n(6vr>2{E`X?-I+^#Lea^+jij+>A*v8 zPDT7t?!QqHUsRvWKbEj){#FuvD%o+#-Y(gC$$nn4AC~Of^Y(b&ys*VvzO@EfTrK{n z#oAt+B>mBVaid8sgw4S{msmrNL=W4E7%ooHTCNeG@91PQIXF8$ole0h#&mjodT=(G z9G!66G2qVO;EfE^H08EUmw?eEs2|&dVc2)s~ zMcXPalaPDC#zO9e-0M-5q*pGk=y3YgsMl6kg%NmI2^?Set}BlTY$)771_^3-!Cq_Y z8u+nXij_)p!7oeG2l4K3N89NS`lC1*jvzEQL>O^wk#o95HGhXi%hvoeWy{oz2RAx8 zy?(B+>K`lqb%oz3T&rMwp)&t(_--VFyx_x)8LNIZr|PfbTT0F<4IBS^FVg$2d5DmW z^naP*cY*$wu$O^-oax;)&G2Sk#B36!&fZ>Ob=le0yZ6JH@;qT@Uj{en7IpI`oMG8+ zPJet|rkn8wW94{*WvBfCTk>OtUn=}c;mWStoaF&|k@MG8VCbACI Context.GetTabs(); + + protected virtual void AddIndent(Action action) => Context.AddIndent(action); + + protected virtual void AppendLine(string value = "") => Context.AppendLine(value); + + protected virtual void AppendLineNoTab(string value = "") => Context.AppendLineNoTab(value); + + protected virtual void Append(string value = "") => Context.Append(value); + + public virtual string Generate() + { + return GenerateBody(); + } + + protected abstract string GenerateBody(); +} \ No newline at end of file diff --git a/CodeGeneration/Generators/CodeGenerationContext.cs b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs similarity index 63% rename from CodeGeneration/Generators/CodeGenerationContext.cs rename to SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs index fe4f734..0a49357 100644 --- a/CodeGeneration/Generators/CodeGenerationContext.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs @@ -1,21 +1,27 @@ -using System.Text; +using System; +using System.Text; -namespace CodeGeneration.Generators +namespace SunSharp.CodeGeneration.CodeGenerationTools { public class CodeGenerationContext { - protected StringBuilder _sb = new StringBuilder(); - private int tabs = 0; + private const int SpacesPerTab = 4; - public const bool TabsInsteadOfSpaces = false; + private readonly StringBuilder _sb; + private int _tabs; - public string GetTabs() => TabsInsteadOfSpaces ? new string('\t', tabs) : new string(' ', tabs * 4); + public CodeGenerationContext() + { + _sb = new StringBuilder(); + } + + public string GetTabs() => new(' ', _tabs * SpacesPerTab); public void AddIndent(Action action) { - tabs++; + _tabs++; action(); - tabs--; + _tabs--; } public void AppendLine(string value = "") diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs new file mode 100644 index 0000000..308de2e --- /dev/null +++ b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs @@ -0,0 +1,47 @@ +using System; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; + +namespace SunSharp.CodeGeneration.CodeGenerationTools +{ + public static class PathHelper + { + public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] string? callerFilePath = null) + { + var expectedFolders = new string[] + { + "SunSharp", + "SunSharp.CodeGeneration", + "SunSharp.IntegrationTests", + "SunSharp.Redistribution", + "SunSharp.UnitTests", + }; + + ArgumentNullException.ThrowIfNull(callerFilePath); + + var fileInfo = new FileInfo(callerFilePath); + var directoryInfo = fileInfo.Directory; + while (directoryInfo != null && directoryInfo.Exists) + { + var directories = directoryInfo.GetDirectories(); + if (expectedFolders.All(f => directories.Any(d => d.Name == f))) + break; + else + { + directoryInfo = directoryInfo.Parent; + } + } + + // is current directoryInfo the folder we expected? + if (directoryInfo != null && expectedFolders.All(f => directoryInfo.GetDirectories().Any(d => d.Name == f))) + { + return Path.Join(directoryInfo.FullName, pathFromRoot); + } + else + { + throw new Exception("Could not trace back to the project folder."); + } + } + } +} diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs new file mode 100644 index 0000000..727b52a --- /dev/null +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs @@ -0,0 +1,23 @@ +using System.IO; +using NUnit.Framework; +using SunSharp.CodeGeneration.CodeGenerationTools; + +namespace SunSharp.CodeGeneration.NativeProxy; + +internal class NativeProxyCodeGeneration +{ + private const string PathToFile = "/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs"; + + [Test] + public void CheckIfCodeIsUpToDate() + { + var path = PathHelper.GetProjectFilePath(PathToFile); + var generator = new NativeProxyGenerator(); + var oldSourceCode = File.ReadAllText(path); + var newSourceCode = generator.Generate(); + + TestContext.Out.Write(newSourceCode); + + Assert.That(newSourceCode, Is.EqualTo(oldSourceCode)); + } +} \ No newline at end of file diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs new file mode 100644 index 0000000..3f3cee8 --- /dev/null +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs @@ -0,0 +1,168 @@ +using System; +using System.Linq; +using System.Reflection; +using SunSharp.CodeGeneration.CodeGenerationTools; +using SunSharp.Native; +using SunSharp.Native.Loader; +using static SunSharp.CodeGeneration.NativeProxy.TypeNameTranslation; + +namespace SunSharp.CodeGeneration.NativeProxy; + +public sealed class NativeProxyGenerator : BaseGenerator +{ + private record DelegateDefinition(Type ReturnType, Type[] Parameters); + private record MethodDefinition(MethodInfo MethodInfo, DelegateDefinition CorrespondingDelegate); + + private DelegateDefinition[] delegateDefinitions = Array.Empty(); + private MethodDefinition[] methodDefinitions = Array.Empty(); + + private static string GetDelegateNameCode(DelegateDefinition definition) + { + var @out = TranslateToCapitalizedName(definition.ReturnType); + var @in = string.Join(null, definition.Parameters.Select(static t => TranslateToCapitalizedName(t))); + @in = @in.Length == 0 ? "Void" : @in; + return $"Returns{@out}Takes{@in}"; + } + + private static string GetDelegateDefinitionCode(DelegateDefinition definition) + { + var returnType = TranslateToFriendlyName(definition.ReturnType); + var friendlyArguments = string.Join(", ", definition.Parameters.Select(static (t, i) => $"{TranslateToFriendlyName(t)} arg{i + 1}")); + + return $"private delegate {returnType} {GetDelegateNameCode(definition)}({friendlyArguments});"; + } + + private static string GetMethodDefinitionCode(MethodDefinition definition) + { + var returnType = TranslateToFriendlyName(definition.CorrespondingDelegate.ReturnType); + + var pars = definition.MethodInfo.GetParameters() + .Select(static p => $"{TranslateToFriendlyName(p.ParameterType)} {p.Name}") + .ToArray(); + var joinedPars = string.Join(", ", pars); + var forwardedPars = definition.MethodInfo.GetParameters().Select(static p => p.Name); + var joinedForwardedPars = string.Join(", ", forwardedPars); + return $"{returnType} {nameof(ISunVoxLibC)}.{definition.MethodInfo.Name}({joinedPars}) => {definition.MethodInfo.Name}?.Invoke({joinedForwardedPars}) ?? throw GetNoDelegateException();"; + } + + private static string GetDelegateForMethodDefinitionCode(MethodDefinition methodDefinition) + { + return $"private {GetDelegateNameCode(methodDefinition.CorrespondingDelegate)}? {methodDefinition.MethodInfo.Name};"; + } + + private void ReadData() + { + var type = typeof(ISunVoxLibC); + + delegateDefinitions = type.GetMethods() + .Select(static m => + new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray())) + .DistinctBy(GetDelegateNameCode) + .ToArray(); + + methodDefinitions = type.GetMethods() + .Select(static m => new MethodDefinition(m, new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray()))) + .ToArray(); + } + + protected override string GenerateBody() + { + ReadData(); + + AppendLineNoTab("#pragma warning disable CS0649"); + AppendLineNoTab("#nullable enable"); + AppendLine(); + AppendLine("using System;"); + AppendLine(); + AppendLine("namespace SunSharp.Native.Loader"); + AppendLine("{"); + AddIndent(() => + { + AppendLine($"public sealed partial class {nameof(Native.Loader.NativeProxy)} : {nameof(ISunVoxLibC)}"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("#region delegate definitions"); + AppendLine(); + + foreach (var d in delegateDefinitions.OrderBy(static d => GetDelegateNameCode(d))) + AppendDelegateDefinition(d); + + AppendLine("#endregion delegate definitions"); + AppendLine(); + AppendLine("#region delegates"); + AppendLine(); + + foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + AppendDelegateForMethodDefinition(m); + + AppendLine("#endregion delegates"); + AppendLine(); + AppendLine("#region interface"); + AppendLine(); + foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + { + AppendMethodDefinition(m); + } + + AppendLine("#endregion interface"); + AppendLine(); + AppendLoadMethod(); + AppendLine(); + AppendUnloadMethod(); + }); + AppendLine("}"); + }); + AppendLine("}"); + + return Context.GetBuiltString(); + } + + private void AppendLoadMethod() + { + AppendLine("private void LoadInternal()"); + AppendLine("{"); + AddIndent(() => + { + foreach (var methodDefinition in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + { + AppendLine($"{methodDefinition.MethodInfo.Name} = null;"); + } + }); + AppendLine("}"); + } + + private void AppendUnloadMethod() + { + AppendLine("private void UnloadInternal()"); + AppendLine("{"); + AddIndent(() => + { + foreach (var methodDefinition in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + { + var name = methodDefinition.MethodInfo.Name; + var delegateName = GetDelegateNameCode(methodDefinition.CorrespondingDelegate); + AppendLine($"{name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{name}\", typeof({delegateName}));"); + } + }); + AppendLine("}"); + } + + private void AppendMethodDefinition(MethodDefinition methodDefinition) + { + AppendLine(GetMethodDefinitionCode(methodDefinition)); + AppendLine(); + } + + private void AppendDelegateForMethodDefinition(MethodDefinition methodDefinition) + { + AppendLine(GetDelegateForMethodDefinitionCode(methodDefinition)); + AppendLine(); + } + + private void AppendDelegateDefinition(DelegateDefinition delegateDefinition) + { + AppendLine(GetDelegateDefinitionCode(delegateDefinition)); + AppendLine(); + } +} \ No newline at end of file diff --git a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs new file mode 100644 index 0000000..358a97d --- /dev/null +++ b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; + +namespace SunSharp.CodeGeneration.NativeProxy; + +public class TypeNameTranslation +{ + private static readonly ImmutableDictionary StrictTypeNameToFriendlyTypeNameDictionary = + new Dictionary + { + { "Int32", "int" }, + { "UInt32", "uint" }, + { "Void", "void" }, + }.ToImmutableDictionary(); + + private static readonly ImmutableDictionary StrictTypeNameToCapitalizedName = + new Dictionary + { + { "Int32", "Int" }, + { "UInt32", "Uint" }, + }.ToImmutableDictionary(); + + public static string TranslateToFriendlyName(Type type) + { + return Translate(type, StrictTypeNameToFriendlyTypeNameDictionary); + } + + public static string TranslateToCapitalizedName(Type type) + { + return Translate(type, StrictTypeNameToCapitalizedName); + } + + public static string Translate(Type type, ImmutableDictionary d) + { + var str = type.Name; + return d.TryGetValue(str, out var val) ? val : str; + } +} \ No newline at end of file diff --git a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj new file mode 100644 index 0000000..3a268d1 --- /dev/null +++ b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj @@ -0,0 +1,25 @@ + + + + net6.0 + enable + + false + true + + + + + + + + + + + + + + + + + diff --git a/SunSharp.IntegrationTests/LockingTests.cs b/SunSharp.IntegrationTests/LockingTests.cs new file mode 100644 index 0000000..8dbfb9b --- /dev/null +++ b/SunSharp.IntegrationTests/LockingTests.cs @@ -0,0 +1,6 @@ +namespace SunSharp.IntegrationTests +{ + public class LockingTests + { + } +} diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj new file mode 100644 index 0000000..608946f --- /dev/null +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -0,0 +1,24 @@ + + + + net6.0 + enable + + false + true + + + + + + + + + + + + + + + + diff --git a/SunSharp.IntegrationTests/SunVoxLibDriver.cs b/SunSharp.IntegrationTests/SunVoxLibDriver.cs new file mode 100644 index 0000000..c99cc66 --- /dev/null +++ b/SunSharp.IntegrationTests/SunVoxLibDriver.cs @@ -0,0 +1,33 @@ +using System; +using SunSharp.Redistribution; + +namespace SunSharp.IntegrationTests +{ + public class SunVoxLibDriver : IDisposable + { + public ISunVoxLib Library { get; set; } + + public SunVoxLibDriver() + { + LibraryLoader.Load(); + Library = LibraryLoader.GetLibraryInstance(); + } + + private void ReleaseUnmanagedResources() + { + if (LibraryLoader.IsLoaded) + LibraryLoader.Unload(); + } + + public void Dispose() + { + ReleaseUnmanagedResources(); + GC.SuppressFinalize(this); + } + + ~SunVoxLibDriver() + { + ReleaseUnmanagedResources(); + } + } +} diff --git a/SunSharp.Redistribution/lib/linux/lib_x86_64/sunvox.so b/SunSharp.IntegrationTests/sunvox_linux_x86_64.so similarity index 100% rename from SunSharp.Redistribution/lib/linux/lib_x86_64/sunvox.so rename to SunSharp.IntegrationTests/sunvox_linux_x86_64.so diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs new file mode 100644 index 0000000..d413643 --- /dev/null +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -0,0 +1,103 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using SunSharp.Native; +using SunSharp.Native.Loader; + +namespace SunSharp.Redistribution +{ + /// + /// Use this class to access a locally loaded SunVoxLib instance.
+ /// the library once, then . Construct a if necessary.
+ /// You may also call to unload the library, which should also deinitialize the library, to avoid any memory leaks. + /// You should keep the same library instance loaded in most use-cases. + ///
+ public static class LibraryLoader + { + private static ILibraryHandler GetPlatformSpecificLibraryHandler() + { + var errorMessage = $"Current platform and architecture not supported. Architecture: '{RuntimeInformation.ProcessArchitecture}', platform: '{RuntimeInformation.OSDescription}'"; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + var path = RuntimeInformation.ProcessArchitecture switch + { + Architecture.X64 => Path.Combine("runtimes", "/win-x64/native/sunvox.dll"), + Architecture.X86 => Path.Combine("runtimes", "sunvox_win_x86.dll"), + _ => throw new PlatformNotSupportedException(errorMessage) + }; + + return new WindowsLibraryHandler(path); + } + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + var path = RuntimeInformation.ProcessArchitecture switch + { + Architecture.X64 => Path.Combine("lib", "linux", "lib_x86_64", "sunvox.so"), + Architecture.X86 => Path.Combine("lib", "linux", "lib_x86", "sunvox.so"), + Architecture.Arm64 => Path.Combine("lib", "linux", "lib_arm64", "sunvox.so"), + _ => throw new PlatformNotSupportedException(errorMessage) + }; + + return new UnixLibraryHandler(path); + } + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + var path = RuntimeInformation.ProcessArchitecture switch + { + Architecture.X64 => Path.Combine("lib", "osx", "lib_x86_64", "sunvox.dylib"), + Architecture.Arm64 => Path.Combine("lib", "osx", "lib_arm64", "sunvox.dylib"), + _ => throw new PlatformNotSupportedException(errorMessage) + }; + + return new UnixLibraryHandler(path); + } + + throw new PlatformNotSupportedException(errorMessage); + } + + private static readonly object Lock = new object(); + + private static NativeProxy? _proxy; + private static ISunVoxLib? _lib; + + public static bool IsLoaded => _proxy?.IsLoaded ?? false; + + public static void Load() + { + lock (Lock) + { + if (_proxy == null) + { + var handler = GetPlatformSpecificLibraryHandler(); + _proxy = new NativeProxy(handler); + } + + _proxy.Load(); + } + } + + public static ISunVoxLib GetLibraryInstance() + { + lock (Lock) + { + if (!IsLoaded || _proxy == null) + throw new InvalidOperationException("The library was not loaded yet."); + + return _lib ??= new SunVoxLibNative(_proxy); + } + } + + public static void Unload() + { + lock (Lock) + { + if (!IsLoaded) + throw new InvalidOperationException("The library was not loaded yet."); + _proxy?.Unload(); + } + } + } +} diff --git a/SunSharp.Redistribution/LibraryLoadingException.cs b/SunSharp.Redistribution/LibraryLoadingException.cs new file mode 100644 index 0000000..bb5d24b --- /dev/null +++ b/SunSharp.Redistribution/LibraryLoadingException.cs @@ -0,0 +1,15 @@ +using System; + +namespace SunSharp.Redistribution +{ + public class LibraryLoadingException : Exception + { + public LibraryLoadingException(string message, Exception innerException) : base(message, innerException) + { + } + + public LibraryLoadingException(string message) : base(message) + { + } + } +} diff --git a/SunSharp.Redistribution/RELEASE-NOTES.txt b/SunSharp.Redistribution/RELEASE-NOTES.txt new file mode 100644 index 0000000..e290f25 --- /dev/null +++ b/SunSharp.Redistribution/RELEASE-NOTES.txt @@ -0,0 +1,21 @@ +SunSharp is distributed under the MIT license: + +Copyright (c) 2023 Sotakebk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SunSharp.Redistribution/Redistribution.cs b/SunSharp.Redistribution/Redistribution.cs deleted file mode 100644 index fdf3f5b..0000000 --- a/SunSharp.Redistribution/Redistribution.cs +++ /dev/null @@ -1,177 +0,0 @@ -using System; -using System.IO; -using System.Runtime.InteropServices; -using SunSharp.LibraryLoading; - -namespace SunSharp.Redistribution -{ - public static class LibraryLoader - { - #region platform invoke - -#pragma warning disable CA2101 // Specify marshaling for P/Invoke string arguments - - private static class WindowsImports - { - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - public static extern IntPtr LoadLibrary(string dllToLoad); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] - public static extern bool FreeLibrary(IntPtr hModule); - } - - private static class LinuxImports - { - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern IntPtr dlopen(string filename, int flags); - - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern IntPtr dlsym(IntPtr handle, string symbol); - - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern int dlclose(IntPtr hModule); - } - - private static class MacOSImports - { - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern IntPtr dlopen(string fileName, int flags); - - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern IntPtr dlsym(IntPtr handle, string symbol); - - [DllImport("libdl.so", CharSet = CharSet.Ansi)] - public static extern int dlclose(IntPtr handle); - } - -#pragma warning restore CA2101 // Specify marshaling for P/Invoke string arguments - - private static IntPtr LoadLibrary(string filename) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - return WindowsImports.LoadLibrary(filename); - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - return LinuxImports.dlopen(filename, 0); - - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - return MacOSImports.dlopen(filename, 0); - - throw new InvalidOperationException("Unsupported OS."); - } - - private static IntPtr FindFunction(IntPtr handle, string symbol) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - return WindowsImports.GetProcAddress(handle, symbol); - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - return LinuxImports.dlsym(handle, symbol); - else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - return MacOSImports.dlsym(handle, symbol); - - throw new InvalidOperationException("Unsupported OS."); - } - - private static void UnloadLibrary(IntPtr handle) - { - int returnCode; - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - returnCode = (WindowsImports.FreeLibrary(handle) ? 0 : 1); - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - returnCode = LinuxImports.dlclose(handle); - else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - returnCode = MacOSImports.dlclose(handle); - else - throw new InvalidOperationException("Unsupported OS."); - - if (returnCode != 0) - throw new InvalidOperationException($"UnloadLibrary failed, code: {returnCode}"); - } - - private static string GetLibraryPath() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - if (RuntimeInformation.ProcessArchitecture == Architecture.X64) - return Path.Combine("lib", "windows", "lib_x86_64", "sunvox.dll"); - if (RuntimeInformation.ProcessArchitecture == Architecture.X86) - return Path.Combine("lib", "windows", "lib_x86", "sunvox.dll"); - } - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) - return Path.Combine("lib", "linux", "lib_arm64", "sunvox.so"); - if (RuntimeInformation.ProcessArchitecture == Architecture.X64) - return Path.Combine("lib", "linux", "lib_x86_64", "sunvox.so"); - if (RuntimeInformation.ProcessArchitecture == Architecture.X86) - return Path.Combine("lib", "linux", "lib_x86", "sunvox.so"); - } - - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) - return Path.Combine("lib", "macos", "lib_arm64", "sunvox.dylib"); - if (RuntimeInformation.ProcessArchitecture == Architecture.X64) - return Path.Combine("lib", "macos", "lib_x86_64", "sunvox.dylib"); - } - - throw new InvalidOperationException("Unsupported OS."); - } - - #endregion platform invoke - - private static readonly object Lock = new object(); - private static IntPtr _loadedLibraryHandle = IntPtr.Zero; - private static ProxyClass? _proxyClass; - - public static void LoadLibrary() - { - lock (Lock) - { - if (_loadedLibraryHandle != IntPtr.Zero) - return; - - var path = GetLibraryPath(); - if (!File.Exists(path)) - throw new InvalidOperationException($"Library at location \"{path}\" does not exist."); - - _loadedLibraryHandle = LoadLibrary(path); - if (_loadedLibraryHandle == IntPtr.Zero) - throw new InvalidOperationException("LoadLibrary failed."); - } - } - - public static ISunVoxLib GetLibrary() - { - lock (Lock) - { - if (_loadedLibraryHandle == IntPtr.Zero) - throw new InvalidOperationException("Library is not loaded yet."); - - return _proxyClass ??= new ProxyClass(GetDelegateFromName); - } - } - - public static void UnloadLibrary() - { - lock (Lock) - { - if (_loadedLibraryHandle != IntPtr.Zero) - UnloadLibrary(_loadedLibraryHandle); - } - } - - private static Delegate GetDelegateFromName(string name, Type delegateType) - { - var ptr = FindFunction(_loadedLibraryHandle, name); - if (ptr == IntPtr.Zero) - throw new InvalidOperationException($"Symbol {name} not found! Library: {GetLibraryPath()}."); - return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); - } - } -} diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/SunSharp.Redistribution/SunSharp.Redistribution.csproj index 7ec2819..7051f52 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -6,7 +6,7 @@ True Sotakebk.SunSharp.Redistribution SunSharp.Redistribution - 1.0.0 + 2.0.0-alpha0 Sotakebk SunSharp.Redistribution SunVox Library redistribution for SunSharp. @@ -16,12 +16,21 @@ sunvox;music;wrapper latest-recommended README.md - license.txt + LICENSE.txt True snupkg enable + + + + + + @(ReleaseNoteLines, '%0a') + + + 9999 @@ -35,59 +44,20 @@ - - - - - - - - - - - - true - PreserveNewest - true - - - true - PreserveNewest - true - - - true - PreserveNewest - true - - - true - PreserveNewest - true - - - true - PreserveNewest - true - - - true - PreserveNewest - true - - - true - PreserveNewest - true - + - + + Always + + + Always + - + True \ @@ -95,6 +65,10 @@ True \ + + \ + True + diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.nuspec b/SunSharp.Redistribution/SunSharp.Redistribution.nuspec new file mode 100644 index 0000000..2f9d21d --- /dev/null +++ b/SunSharp.Redistribution/SunSharp.Redistribution.nuspec @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/SunSharp.Redistribution/UnixLibraryHandler.cs new file mode 100644 index 0000000..96e3542 --- /dev/null +++ b/SunSharp.Redistribution/UnixLibraryHandler.cs @@ -0,0 +1,76 @@ +using System; +using System.Runtime.InteropServices; +using SunSharp.Native.Loader; + +namespace SunSharp.Redistribution +{ + internal sealed class UnixLibraryHandler : ILibraryHandler + { + public bool IsLibraryLoaded => _ptr != IntPtr.Zero; + + private readonly object _lock = new object(); + private readonly string _path; + private volatile IntPtr _ptr = IntPtr.Zero; + + public UnixLibraryHandler(string path) + { + _path = path; + } + + public void LoadLibrary() + { + lock (_lock) + { + if (IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is already loaded."); + + var ptr = dlopen(_path, 0); + if (ptr == IntPtr.Zero) + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + + _ptr = ptr; + } + } + + public void UnloadLibrary() + { + lock (_lock) + { + if (!IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is not loaded."); + + var code = dlclose(_ptr); + if (code != 0) + throw new LibraryLoadingException("SunVoxLib failed to unload."); + _ptr = IntPtr.Zero; + } + } + + public Delegate GetFunctionByName(string name, Type delegateType) + { + if (delegateType.IsAssignableFrom(typeof(Delegate))) + throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); + + lock (_lock) + { + if (!IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is not loaded."); + + var ptr = dlsym(_ptr, name); + if (ptr == IntPtr.Zero) + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + + return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); + } + } + + [DllImport("libdl.so", CharSet = CharSet.Unicode)] + public static extern IntPtr dlopen(string filename, int flags); + + [DllImport("libdl.so", CharSet = CharSet.Unicode)] + public static extern IntPtr dlsym(IntPtr handle, string symbol); + + [DllImport("libdl.so")] + public static extern int dlclose(IntPtr handle); + } +} diff --git a/SunSharp.Redistribution/WindowsLibraryHandler.cs b/SunSharp.Redistribution/WindowsLibraryHandler.cs new file mode 100644 index 0000000..fa4334c --- /dev/null +++ b/SunSharp.Redistribution/WindowsLibraryHandler.cs @@ -0,0 +1,75 @@ +using System; +using System.Runtime.InteropServices; +using SunSharp.Native.Loader; + +namespace SunSharp.Redistribution +{ + internal sealed class WindowsLibraryHandler : ILibraryHandler + { + public bool IsLibraryLoaded => _ptr != IntPtr.Zero; + + private readonly object _lock = new object(); + private readonly string _path; + private volatile IntPtr _ptr = IntPtr.Zero; + + public WindowsLibraryHandler(string path) + { + _path = path; + } + + public void LoadLibrary() + { + lock (_lock) + { + if (IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is already loaded."); + + var ptr = WindowsLibraryHandler.LoadLibrary(_path); + if (ptr == IntPtr.Zero) + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + + _ptr = ptr; + } + } + + public void UnloadLibrary() + { + lock (_lock) + { + if (!IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is not loaded."); + + var ptr = _ptr; + _ptr = IntPtr.Zero; + WindowsLibraryHandler.FreeLibrary(ptr); + } + } + + public Delegate GetFunctionByName(string name, Type delegateType) + { + if (delegateType.IsAssignableFrom(typeof(Delegate))) + throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); + + lock (_lock) + { + if (!IsLibraryLoaded) + throw new LibraryLoadingException("SunVoxLib is not loaded."); + + var ptr = WindowsLibraryHandler.GetProcAddress(_ptr, name); + if (ptr == IntPtr.Zero) + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + + return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); + } + } + + [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, CharSet = CharSet.Ansi)] + private static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string dllToLoad); + + [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procedureName); + + [DllImport("kernel32.dll")] + private static extern bool FreeLibrary(IntPtr hModule); + } +} diff --git a/SunSharp.Redistribution/lib/linux/lib_arm64/sunvox.so b/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/lib/linux/lib_arm64/sunvox.so rename to SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so b/SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so new file mode 100644 index 0000000000000000000000000000000000000000..27690ff7b73f040ea01315632c3ee1d49832d060 GIT binary patch literal 904496 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

&PeAt6!gWhY=8 z*JKmId~=2Ol!8&24#m;0YYwH@v}e_Qln&!9kI$eGlIvUw723(Osr`DJbDKJLWUAjd$n#yy9r-2+mY0bEac8iyud z32bMk_H_gTSjxt}MfQ-ngoeuu(A))NMV z9+oAGxdkE5O(Ei1n`6w<#p!V4AZM*HX2DC)f%5XrkwnP@*AK#O@s_933A5uy?qa8u zvFE_gB8R6xeAqC-Pn$*s$fUe?4TQ&(^)mQi3Hwm z7|5Lao?VaLei-I63$gD@UL-&}n@|g}r-6b6aj{RDAP-_sB-A#+UaUCLpCcpOa3rTAIie zX!td8Cj!6EbpJ1JUCN%mic02GY)Pk2WLwg1oVgnGYw?U(w~q>Kv$dPG3g~O~YRSI( zXDwN_ybx>e$<+4ZFnj69T6ZIbL@U~~n&;^T5LYK3$CY)T)7$?rtmW9yBK9{H+A)|x zhk&p^RjB!K)>>zNxRQc^1J+{_iD{u|+csSVD-QNd)G*TuE*q~S3YIpURaRg;wWX^+ zeF#_cT;Bs!f(K~i;IibnQwbtVS8DfhsuHZA;+#o)Di1r8pd-)hAVF$3NTER;11;=6 zHu%19N3%Y^Br z9sl)q{2B9TcdNl;6dM^IXwo+K8~{PPbfCH9dl0*{O9z>s;(x@Ie4D8l%`T%O>2@xn zZdn=PVo<7wFj4&e0CM`F?SxmdIy{Q$!9k3yu4 zZn*rJP-Xi1lX+TjzF}!JQC6nWI2W+?;qg@u9v|=K5Ep}h&D{jU%4E3T)zCYO4t@wd zc{9@Ng3Z^k4g<0?hL!jC6_v{1XLM<)=p!@oE{F&g>3uULA-BU{MDvt#4>A<_ckmaM z!d_IEnGb`0E%uEFPjGGKJkXoFNfr!T=M+i3UY;!e8nj*roLj%ioXgxIl)@ggN&a0&8!Zh6 z-IdwF=Xf&$ms94(tNjtcPb4-)B1JsRo0!biFiuR=MQ4?vJUXik)0c7VR_!dm>;!+i zwz)(f&B^?hQws(=dY$GXnY?66pH8>sc6w8vPBS2hg0VD~`w(Z)gOTReyCh+W)Gt}Vv*9$bcopN>!g!)1 zhz*)do$bB&iu89YeZyyR6DC#;sv})RTfC>Spk45ndG|CfP(F>IoXkh5@82Sc+wY}7 zV-~W6g3-e?oEhKZmySh|X~hbn{7?})!sStS`!_?= zL*EQt(cThu?%xq9?}%3JiaHZ_=^Tw^d6QGF*46froE)zVj0D#w5}L*M+D0aK%uWA>G!kC1Fx`c)L403fyv=P^3O8kG zJ4lD8)kr*g8JC@YEt!r_%3X)(Qw*7c$Z68&4An^<)3=Pa5r4h^WBBW|@TZAppaoai zd3;MVbSamj0;#Xk_(O?DP2+nS2UoORPFjmk(w7$^DQW98?N&LL_k~9$7RLV4$^}I? zTpYmy>AOAiG|K}P6z-i=7;HE%lDK4Yr1@d9MjAe~B5-OT@VP~EiWq~{$*M0K%5>o8 zLPgE#CaP3_n;$moqw#6)n^Og`K@>?1&SLG9N7mxq!=XE#7rh}eGLpEKN*^WmAN@(GK&yB;MmN4?^cam1y+o(Efq?0Imh`E4@4^Y~5gWE7(A-$l*p zYOH7?IhQ`*?`3am(~s{$Xex@3vlT7Li-PV}Z2d>D#7Dd9+)j71yU8aJ!`$TrFH#uB z-@;v?ME;_u((ZHRsq$@{p0C`$04v68^uGad0v5?z#rqctFUey?&ks+lMTSx&@FLe(gr$j1Id0o*B zmqqG3a)j%9tC+h95v1$>Fg9F(?N|CRW(J9*nZB-l+qjo4*ydIbHnUpZl{2H|+n7+d zx(MJdy!@MLx8L5z72U534zvBhu=C`~n~H8I&Yjnr4D>YSwYP9{cf@@kPb%NSY{@LW z^nv{cv5IXr-PcIO-)smmvFQrzp;&jfei0Myh_DrK=Z`PY?8NS&SOagrRQX3hwG&&c@WdoWXN3o38vVp%*>Wy(d2O0kiacQ{ zZy@G|o0?Y45L?l>K-hUs(~7&{I|7Y2;tQ?eil!CYkrD(N=hk$#Y36W()-bARMd=U% zIVuetoeIkR8q4)ogP4-@i>flufFMk}(eg)K_6UFeX^{sP*HG517O&9m=kc|>!t8|I z|6{hY?%x}xy!*d<_a@CtXbKo}D(k3F>xiX&wU+kmBL|`3tC7S)2EcBA4PTGAJGH_( z%{HiJM>?1I%ZkD7S#DO=an+nE#zkvXvBlUHZtQ;9_@CX| z4gLaEYLwD{8LWJ7NyuH8f2gPXaSvYtPu~+f&B<-Dg{OwP+&OEQY36IeY|T~U1)8U^ z{ya@JyQn`;7i*qQ@#krhCg}Lw32GeB4r)1KjyC5V>S^)kqw$CB?RNOL+Tq`5hrcU# z_<=*;o*G=%{Kjy$I;15GNXY##;yzjVeQ@A!H8J%sN51=l#kA83_g+{CuPa}C(ZuzW z;gYn*|D8|w+4LWg>zfKIkTtwk!#T8@P&)9M{vk0E4P)T@T9g|!UCvEiK^&yC!^VYV z{H^rv!&*F@>8-=i4!F4YaN=K7YnoP7@c_cFhI-N&y1Jr$1}uZgw>+fuaDxQn&s zB8hwm_E*flNs#CO)UxT@z))V}|7V{XkN=6KE*Zh)oVscJrFy;Xax}5AL`Ik;AfAA5_l#GN}R23AGAR zyPpu;a?wU|{GiVlun*hd^ncO3?q7Ln7H8LQa!lx3IxF9k{treWS$uFXr{B7W|v}^O5Stq~2ZRFQw;U@onF=~GQy!r(_)@WA?XwpBpy)1m>{}UJORpd^8L8Gt z4>1z-rQ&@$F7&PTP*babJkYom0YBTrf(@Js51l`$jEl{1y(_GDaM{ba{dCcl$h-xEqv_w5Itc4X0P{qWStW z_y%6h8sfQs)2^~a2qk^ZyIRgRz#xwgj{^l{Yb{i*`YLP^4++4THmnl@ds`Q<29fX-rUqgYdH+p^gwpThm@)Yxviv2!$H{1Aq z+9eW^VQD>Ag^g4xlX=s~e6qI`zk~TXr3kUwVKNtE{K6}Uw(NjZY~A9O@(dr|F!^oa zh8#1lSBYQq8}d!^V?l~1KYpd3>{wz}CDM+IfB>_S)KGsF)j%|9a#T&{k~;5|Tpo7x zR#<0tWs#~yZMGTi@?Oc{q2nd~QuNU=8FX)smtmXtN(K-AFY%YBkN?R~q%E93UWa?H z>WJNNmh@kpr1A+rUh9;KKQfp#8=~z(i2Sk2#6=+vwu+n?Y zt~@2xiq0%XMpK=*UkN1Ej7vmTlUy=S#rjABv(_e+lbDnb0kiBPlCbzC;nH7i^2RDt zu0AA$F6utD*+vKdH*s$RUsZMGf8U$jK(LW>(TJHA+tkJ}vA#e{TOv5-!j0V68;F7$ zEVU?3sv}iK6G4j-yt%;X^&%Zn(P~R)YIQnxbXp6D3c0)_0pED3$V=6TFPy_WiV%Xr z^Zo5}ZW7RToagyJ^UnwFIcLA`wbx#It+m%)JN2kZ#w8{dU}gCVE8U;Wk;c2*1NB=q z)j86-x0(Ms61tlmS`~`AHMb>Uh<-FRG2c#Uy*3^lQ_q=QeS0#)n$ygf3h2M=|T1;WB^kaT&?Dyw^)9 zHfEi>*4~iW8MYrSktkv<+G39{nTk$1R-Im2Oe?gRmdmn&HW5`azvta>cStvBPsPcC zvgokF9-Ok`cIJWRKFitI{())JG^HIzTE&}?sK*CIQkSsv{!4kCfxE&P?!A8j0ph8r zN*XCHp8ky?vT^(4okPv~X(dkq1+{pFadT5-{M!Tw!FMVA=Nwp@ROPPJV?D}yoN{8R zq$ei46Swz}a7hRCMN^YQ&agh*>0-QZK8`WxM{#({Ah-JNkIeYsC}|=y-qE9K-JVD= zgLOB`)~a=Gb@{8e6?^Ts7L{8IKji#E+& zA-MkFYPQ9KD`=$Mqmk(!Kq#xYIk*ZYsLGd-tfo)dm&!5(R`R#tl$e2XF$2qhQWqc4 z?tOSHz{~n5Hw&WGv_l`MDfr7Vvj|~z&M24wHr-E&*d~Y_cT{{$7ZS?JRP$+Ai< zw%t!JhKHyiQlqnP+L|8IkzM!Y-L3lunof^pvF6;t;?u>pEKz1%`8tu%t|mWXLfK!d z_Cme3-)TbG5&oVR>aj3ao6rz$G6=;ph3TKi%UFb@#uP?UqYI1%9R-o@nf+RD4MAa4 z%Ii84nZ~lU@G~MEsNL`;JNrO^I@^YjaHHAF)CJ)>n147utcqLj5pL$2{Y=fm8nd05 zUBcmZ!YNzU7z`t9(Cz$xQ2bLo*qPmgvxg6nYai`y+LsQthnKox^v2zgI*fKW3#ri{ zR~MwV&@2O~a$#PU$y;JVfz&s=P!Cd%m{1^fvKQ(>3a3t#0HhA}1kw&ZJch5U8$JW) zUt`h>m3;3~_eM3$=Rd9F<$QHD?H3f>)uJZv!)wU7`tZ>$*{GVdAa`+yaEI|=heYQ3 zx|WJ!r2H&{c!Z5r&I30t^VrVhB^vU^WoF^Bl5crmzG(QA_vMR*cY0rDJ+YE8zN%72 z>Ua8X@5zEbObwjpd3l;nep0PFn*e7E2V1i8;nU=WX}_GUTIXN1bQ^`83C#Ng{@D)G zjoHQAO3sJOMm#Nu^du-B`O2Lzk2>s{($ts` zLlCrUO8hB<4OQ4oo2t|zO^@!`V`dIpN@K7t>Q%PZnteIVVah!0&lodZ)}fw6J1OO4 zDl~Hgwo0rs+1-EdhAJ~ldXki?^nlZ|6UEGs5ku_n53XvBo_;Q13N$|NVMEhL`P7%i z6<=}Q4Y1b6@u0o_e9ut+;vH}w*Fk$vsif$t^z;g+h!Ge6p)Bsh;<~d1b3c{npx6QT zrtX{~F;(ehB74r({a$7WX~3OFX1{b{IcbbUyvR#q(9^xHJB`qTG|iHF@AuLegmwpZ zr%|Iw(@1&FEnXTk1>B<;t*{jM+PRO}kaL&qHwax?oW;yV1bFLEOJ#e&TWDBDS}V;K zyjIELRO3o&5F_(Fs*0rU-WQ*^DK?SqU#<(0Md0|#)RnvBV0s`N#W2kbj#5Q&cBS<^ z2{IKtz>B9^)B&N2m^FGWauP0)?Nt(tC-3}Ww^B-nOu|*E|I*S|nHpZ0x;>;5Kuzya z1geoAu$pY<6&Ge!Q!Q|oz0EKOZK6)29P^oiO# zE=^6_a|34%a9B5eUJN7p((V#CCrss&*M9{Uj_Ygk%PjfqhWLHJx4+!c$LeqP`d_}&n$y8t zPS>Aj7~IO>O3q7%u-7{n4SpQl$oVf0e-54^BLaA;ymrn?;iqOKj#>MS{3J31Hq^U$8rWaNlHn%{){0i$XPAG{AZJznCj)5v zrX&@C^cBJKEmj)!fa?F)TDU%2eI=+d#k66mUwgFdgKWL%<5cz0aPY&PHUG^ap65P+ zG@2b^LmPVnj=~Ffh)YexNa`LS!ZVFAwlcm^ zkQVB!O;Fhz$63c{E6bP!*%|zdc~&t$q7dJ4qU?TCIWlPa3TA*y#mTsf;C_r_3-|YW zGcEi#-Uc0XALU_~diNz)_~WkR;TgIt(VI#8jNVL14^gHUo7S6&P4Gs>X%+}NgV{u!CTlfOGBv-+eN zhsR!V8jeYul{_``NonR~C|XKCFolYBncuc$4(HgfVg-P9eNS0>@a>ro^2=b>_}9}` z)EJ6l7Vr!vqCYb-X%EZWMQiDE*uJXB9$DDK1f#p&yCxX}FDt#8=0uEv+hvZ6JK_yeIReE$pcaR@F2LjgzS21D#5w=C zybHga7jS<5L8r_EPaedFxjBlMHUjcW2;e+Z1~-&#o|#6jXA*vBQ#zE?3|F3Es0@ksi>e%3d8! z-^QluL3&vP167llVYXS>AHaQt)bAKYEh$x}*?iv5K~OqNax{M{_xT{HWHRAHhka_3 z5P8Na-GvBeExe>}Vg*+1%}yxsj@3AkQ+($Pqc?B8YPyvuZRza z5Ye8|;60@D`232dgH}@ZN-E#j5qh=MmpzBX9Z((Iu^2Iq9-U(jos?l%+H5E;~&gzo=s2ELF~~^!yIX~y_Pe(SkUL>&&JJ5|0#Qom+4>9 zL&mfyJEm+*`uvgr^+E7Sj$#aF-kH`LZ55#5M41c;enPm}5pgf1TlTAoSBnKhPGr%? z3I6JLTvyM2PT1=Hg5+}(t7}L?T8zp)Xx~Aw2excSH|@!G)M~nt+D`23V)P-voX!Rt zzLgkO!bo00iT3h!JL=E0*K@ty6_{dq@UM&HULj#q>f0-h#>?G?-Jr_teeDmMcZ3q# zavP<&{4q^v?96!%okYMGM_AEy*1Qb-P&!@}OngvbRjwJd{?PtG>mznAG}a{hdEl?HS7k@Legw$=rK7kqwlPTWz0gPWp_73 zWcA$>BANleg;mkOHfe7i_)=5A-Aux{8lP}ebNy%!@N_f__@-GZ$ZHSV{wJVfJ;dX9 zR2)uw+;QYF^FK2Cb~9JL$@pX|{H_Z0!ke^IdPu;P2{cBY>Le!_3ntTl_cv-E+PRCu z5UavJYfQf@l*JR3y>FdUKS1dtIq}nIaX}4{I)1L0^0iZ(DqL`KZ}Yy}WaXYA=#uy!2jjjuM~y_oepVEx;s+c-V&?3>MB7C+MTW(UtoYth~L z22}#2s}|iVLMc;~n(T~754*TJeRE-Ynt3Ww#?|Xyi7i|0Ox$+Tm%&kO z%fq>4|G~O1^p>e%ejq3K2lE`dw&IEv&r`STa3%fXC3{R zunzuX-`L3&U!Aygts~!7^1R(fIQe!e--rC?yYqmbhV)yBdmFd2x8Uw;=UT3tvXZv~ zH3Ag4#U}Y}oAXKk7Y+~+Lh{a)6i@YAiF+FtUpsj!JFdj6+qRIX^Dlf5(UlMnVQ;Gq zgx$>rb%5^rYW#t(tcaBVIcg2xmafU+M!uOc3XE8b#$LgFncYz#MI}Brs#p0Nw@>

8nU=TS9ws>G9n$l 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 literal 0 HcmV?d00001 diff --git a/SunSharp.Redistribution/lib/linux/lib_x86/sunvox.so b/SunSharp.Redistribution/runtimes/linux-x86/native/native.so similarity index 100% rename from SunSharp.Redistribution/lib/linux/lib_x86/sunvox.so rename to SunSharp.Redistribution/runtimes/linux-x86/native/native.so diff --git a/SunSharp.Redistribution/lib/macos/lib_arm64/sunvox.dylib b/SunSharp.Redistribution/runtimes/macos-arm64/native/sunvox.dylib similarity index 100% rename from SunSharp.Redistribution/lib/macos/lib_arm64/sunvox.dylib rename to SunSharp.Redistribution/runtimes/macos-arm64/native/sunvox.dylib diff --git a/SunSharp.Redistribution/lib/macos/lib_x86_64/sunvox.dylib b/SunSharp.Redistribution/runtimes/macos-x86-64/native/sunvox.dylib similarity index 100% rename from SunSharp.Redistribution/lib/macos/lib_x86_64/sunvox.dylib rename to SunSharp.Redistribution/runtimes/macos-x86-64/native/sunvox.dylib diff --git a/SunSharp.Redistribution/lib/windows/lib_x86_64/sunvox.dll b/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll similarity index 100% rename from SunSharp.Redistribution/lib/windows/lib_x86_64/sunvox.dll rename to SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll diff --git a/SunSharp.Redistribution/lib/windows/lib_x86/sunvox.dll b/SunSharp.Redistribution/runtimes/win-x86-64/native/sunvox.dll similarity index 100% rename from SunSharp.Redistribution/lib/windows/lib_x86/sunvox.dll rename to SunSharp.Redistribution/runtimes/win-x86-64/native/sunvox.dll diff --git a/SunSharp.UnitTests/HelperTests.cs b/SunSharp.UnitTests/HelperTests.cs new file mode 100644 index 0000000..42f4563 --- /dev/null +++ b/SunSharp.UnitTests/HelperTests.cs @@ -0,0 +1,126 @@ +using System; +using System.Linq; +using System.Runtime.InteropServices; +using NUnit.Framework; + +namespace SunSharp.UnitTests; + +internal class HelperTests +{ + [TestCase(-1)] + [TestCase(0)] + [TestCase(1)] + [TestCase(short.MaxValue)] + [TestCase(short.MinValue)] + public void ToShortBitwiseShouldGiveSameValueForArgument(short testValue) + { + var value = (uint)unchecked((ushort)testValue); + + var result = Helper.ToShortBitwise(value); + + Assert.That(result, Is.EqualTo(testValue)); + } + + [TestCase(-1)] + [TestCase(0)] + [TestCase(1)] + [TestCase(short.MaxValue)] + [TestCase(short.MinValue)] + public void ToShortBitwiseShouldGiveSameValueForArgumentWithHighBits(short testValue) + { + var value = unchecked((ushort)testValue) | 0xFFFF0000; + + var result = Helper.ToShortBitwise(value); + + Assert.That(result, Is.EqualTo(testValue)); + } + + [Test] + public void CopyIntArrayShouldSkipNegativeOnesReturnEmptyArrayForNullPtr() + { + var array = Helper.CopyIntArraySkipNegativeOnes(IntPtr.Zero, 10); + + Assert.That(array, Is.EqualTo(Array.Empty())); + } + + [Test] + public void CopyIntArraySkipNegativeOnesShouldReturnValidData() + { + var originalArray = new[] { 0, 1, 2, -1, -1, -1, 4, 5 }; + int[] array; + var originalArrayHandle = GCHandle.Alloc(originalArray, GCHandleType.Pinned); + try + { + array = Helper.CopyIntArraySkipNegativeOnes( + originalArrayHandle.AddrOfPinnedObject(), originalArray.Length); + } + finally + { + originalArrayHandle.Free(); + } + + Assert.That(array, Is.EqualTo(originalArray.Where(i => i != -1).ToArray())); + } + + [TestCase(0, 0)] + [TestCase(-1, -1)] + [TestCase(1, 1)] + [TestCase(short.MaxValue, short.MaxValue)] + [TestCase(short.MinValue, short.MaxValue)] + [TestCase(short.MaxValue, short.MinValue)] + [TestCase(short.MinValue, short.MinValue)] + public void SplitValueTo2DPositionShouldReturnExpectedValues(short x, short y) + { + var value = unchecked((ushort)x) + | ((uint)(unchecked((ushort)y)) << 16); + var result = Helper.SplitValueTo2DPosition(value); + + Assert.That(result, Is.EqualTo((x, y))); + } + + [TestCase(0, 0)] + [TestCase(-1, -1)] + [TestCase(1, 1)] + [TestCase(short.MaxValue, short.MaxValue)] + [TestCase(short.MinValue, short.MaxValue)] + [TestCase(short.MaxValue, short.MinValue)] + [TestCase(short.MinValue, short.MinValue)] + public void SplitValueToFineTuneShouldReturnExpectedValues(short fineTune, short relativeNote) + { + var value = unchecked((ushort)fineTune) + | ((uint)(unchecked((ushort)relativeNote)) << 16); + var result = Helper.SplitValueToFineTune(value); + + Assert.That(result, Is.EqualTo((fineTune, relativeNote))); + } + + [TestCase(0x7800, 16.35)] // C0 + [TestCase(0x7800 - 0x100 * (12 * 4 + 9), 440)] // A4 + [TestCase(0x7800 - 0x100 * (12 * 5 + 9), 880)] // A5 + public void FrequencyFromPitchShouldReturnExpectedValues(double input, double expected) + { + var result = Helper.PitchToFrequency(input); + var resultFloat = Helper.PitchToFrequency((float)input); + + Assert.Multiple(() => + { + Assert.That(result, Is.EqualTo(expected).Within(expected * 0.01)); + Assert.That(resultFloat, Is.EqualTo(expected).Within(expected * 0.01)); + }); + } + + [TestCase(16.35, 0x7800)] // C0 + [TestCase(440, 0x7800 - 0x100 * (12 * 4 + 9))] // A4 + [TestCase(880, 0x7800 - 0x100 * (12 * 5 + 9))] // A5 + public void PitchFromFrequencyShouldReturnExpectedValues(double input, double expected) + { + var result = Helper.FrequencyToPitch(input); + var resultFloat = Helper.FrequencyToPitch((float)input); + + Assert.Multiple(() => + { + Assert.That(result, Is.EqualTo(expected).Within(expected * 0.01)); + Assert.That(resultFloat, Is.EqualTo(expected).Within(expected * 0.01)); + }); + } +} diff --git a/SunSharp.UnitTests/SunSharp.UnitTests.csproj b/SunSharp.UnitTests/SunSharp.UnitTests.csproj new file mode 100644 index 0000000..826e753 --- /dev/null +++ b/SunSharp.UnitTests/SunSharp.UnitTests.csproj @@ -0,0 +1,28 @@ + + + + net6.0 + enable + + false + true + + + + + + + + + + + + + + + + + + + + diff --git a/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs b/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs new file mode 100644 index 0000000..6b5f760 --- /dev/null +++ b/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs @@ -0,0 +1,230 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NSubstitute; +using NUnit.Framework; + +namespace SunSharp.UnitTests +{ + public class SunVoxLibExtensionsTests + { + private static bool IsNullableObjectArrayEqual(object[]? a, object[]? b) + { + if (a != null && b != null) + return a.SequenceEqual(b); + + return a == null && b == null; + } + + private static IEnumerable PrepareRunInLockActionCalls() + { + yield return new TestCaseData( + 0, + static (ISunVoxLib lib, Action action, object[]? _) => + { + lib.RunInLock(0, () => action(null)); + } + ); + yield return new TestCaseData( + 1, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg) => action(new[] { arg }), args[0]); + } + ); + yield return new TestCaseData( + 2, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2) => action(new[] { arg1, arg2 }), args[0], args[1]); + } + ); + yield return new TestCaseData( + 3, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3) => action(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); + } + ); + yield return new TestCaseData( + 4, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], args[2], args[3]); + } + ); + yield return new TestCaseData( + 5, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action(new[] { arg1, arg2, arg3, arg4, arg5 }), args[0], args[1], args[2], args[3], args[4]); + } + ); + } + + private static IEnumerable RunInLockActionCases => PrepareRunInLockActionCalls(); + + private static IEnumerable PrepareRunInLockFuncCalls() + { + yield return new TestCaseData( + 0, + static (ISunVoxLib lib, Func func, object[]? _) => + { + return lib.RunInLock(0, () => func(null)); + } + ); + yield return new TestCaseData( + 1, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg) => func(new[] { arg }), args[0]); + } + ); + yield return new TestCaseData( + 2, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2) => func(new[] { arg1, arg2 }), args[0], args[1]); + } + ); + yield return new TestCaseData( + 3, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3) => func(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); + } + ); + yield return new TestCaseData( + 4, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], args[2], args[3]); + } + ); + yield return new TestCaseData( + 5, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func(new[] { arg1, arg2, arg3, arg4, arg5 }), args[0], args[1], args[2], args[3], args[4]); + } + ); + } + + private static IEnumerable RunInLockFuncCases => PrepareRunInLockFuncCalls(); + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockShouldCallLockActionAndUnlock(int argCount, Action, object[]?> action) + { + var lib = Substitute.For(); + var mockAction = Substitute.For>(); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + action(lib, mockAction, mockData); + + // then + lib.Received(1).LockSlot(0); + mockAction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockShouldCallLockFuncAndUnlock(int argCount, Func, object[]?, object> function) + { + var lib = Substitute.For(); + var mockFunction = Substitute.For>(); + var mockResult = Substitute.For(); + mockFunction.Invoke(Arg.Any()).Returns(mockResult); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + var result = function(lib, mockFunction, mockData); + + // then + lib.Received(1).LockSlot(0); + mockFunction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); + Assert.That(result, Is.SameAs(mockResult)); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsException(int argCount, Action, object[]?> action) + { + var lib = Substitute.For(); + var sub = Substitute.For(); + var mockAction = new Action(_ => + { + sub(); + throw new Exception(); + }); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => action(lib, mockAction, mockData)); + + // then + lib.Received(1).LockSlot(0); + sub.Received(1).Invoke(); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(int argCount, Func, object[]?, object> function) + { + var lib = Substitute.For(); + var sub = Substitute.For(); + var mockFunction = new Func(_ => + { + sub(); + throw new Exception(); + }); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => function(lib, mockFunction, mockData)); + + // then + lib.Received(1).LockSlot(0); + sub.Received(1).Invoke(); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(int argCount, Action, object[]?> action) + { + var lib = Substitute.For(); + lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); + var mockAction = Substitute.For>(); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => action(lib, mockAction, mockData)); + + // then + lib.Received(1).LockSlot(0); + mockAction.Received(0).Invoke(Arg.Any()); + lib.Received(0).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int argCount, Func, object[]?, object> function) + { + var lib = Substitute.For(); + lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); + var mockFunction = Substitute.For>(); + var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => function(lib, mockFunction, mockData)); + + // then + lib.Received(1).LockSlot(0); + mockFunction.Received(0).Invoke(Arg.Any()); + lib.Received(0).UnlockSlot(0); + } + } +} diff --git a/SunSharp.sln b/SunSharp.sln index 4e5d42b..a9d939f 100644 --- a/SunSharp.sln +++ b/SunSharp.sln @@ -7,9 +7,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp", "SunSharp\SunSha EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Redistribution", "SunSharp.Redistribution\SunSharp.Redistribution.csproj", "{81E20175-47B1-4FFD-BC12-F85BBFF86E0C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeGeneration", "CodeGeneration\CodeGeneration.csproj", "{188E052D-F811-440D-8EB6-F4EC12DF2B57}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.UnitTests", "SunSharp.UnitTests\SunSharp.UnitTests.csproj", "{2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples", "Examples\Examples.csproj", "{BAFF3DC6-4C30-4710-9078-5EA0A9256811}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.IntegrationTests", "SunSharp.IntegrationTests\SunSharp.IntegrationTests.csproj", "{5FB5B619-BA45-440D-BE64-EFB06C58C985}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration", "SunSharp.CodeGeneration\SunSharp.CodeGeneration.csproj", "{4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -25,14 +27,18 @@ Global {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Debug|Any CPU.Build.0 = Debug|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.Build.0 = Release|Any CPU - {188E052D-F811-440D-8EB6-F4EC12DF2B57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {188E052D-F811-440D-8EB6-F4EC12DF2B57}.Debug|Any CPU.Build.0 = Debug|Any CPU - {188E052D-F811-440D-8EB6-F4EC12DF2B57}.Release|Any CPU.ActiveCfg = Release|Any CPU - {188E052D-F811-440D-8EB6-F4EC12DF2B57}.Release|Any CPU.Build.0 = Release|Any CPU - {BAFF3DC6-4C30-4710-9078-5EA0A9256811}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BAFF3DC6-4C30-4710-9078-5EA0A9256811}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BAFF3DC6-4C30-4710-9078-5EA0A9256811}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BAFF3DC6-4C30-4710-9078-5EA0A9256811}.Release|Any CPU.Build.0 = Release|Any CPU + {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Release|Any CPU.Build.0 = Release|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Release|Any CPU.Build.0 = Release|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SunSharp.sln.DotSettings.user b/SunSharp.sln.DotSettings.user new file mode 100644 index 0000000..8b196b1 --- /dev/null +++ b/SunSharp.sln.DotSettings.user @@ -0,0 +1,12 @@ + + True + True + True + True + True + True + True + True + True + True + True \ No newline at end of file diff --git a/SunSharp/DerivedData/ControllerData.cs b/SunSharp/Data/ControllerData.cs similarity index 94% rename from SunSharp/DerivedData/ControllerData.cs rename to SunSharp/Data/ControllerData.cs index 216144e..27d3bf1 100644 --- a/SunSharp/DerivedData/ControllerData.cs +++ b/SunSharp/Data/ControllerData.cs @@ -1,4 +1,4 @@ -namespace SunSharp.DerivedData +namespace SunSharp.Data { public class ControllerData : IDeepCopyable { diff --git a/SunSharp/DerivedData/DerivedDataFactory.cs b/SunSharp/Data/DataReader.cs similarity index 89% rename from SunSharp/DerivedData/DerivedDataFactory.cs rename to SunSharp/Data/DataReader.cs index 2c3eb6e..06cfe55 100644 --- a/SunSharp/DerivedData/DerivedDataFactory.cs +++ b/SunSharp/Data/DataReader.cs @@ -1,25 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; -using SunSharp.ObjectWrapper; -using SunSharp.ThinWrapper; -namespace SunSharp.DerivedData +//using SunSharp.ObjectWrapper; + +namespace SunSharp.Data { - public static class DerivedDataFactory + public static class DataReader { - #region entire song + //public static SongData ReadSongData(Slot slot) + //{ + // return ReadSongData(slot.Library, slot.Id); + //} public static SongData ReadSongData(ISunVoxLib lib, int slotId) { return lib.RunInLock(slotId, () => ReadSongDataInternal(lib, slotId)); } - public static SongData ReadSongData(Slot slot) - { - return slot.RunInLock(() => ReadSongDataInternal(slot.Library, slot.Id)); - } - internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slot) { var modules = ReadModules(lib, slot); @@ -44,8 +42,6 @@ internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slot) return songData; } - #endregion entire song - #region module data internal static ModuleData[] ReadModules(ISunVoxLib lib, int slot) @@ -83,7 +79,7 @@ internal static ModuleData ReadModule(ISunVoxLib lib, int slot, int moduleId) Bypass = flags.Bypass, Color = lib.GetModuleColor(slot, moduleId), Controllers = controllers, - FineTunePair = lib.GetModuleFineTune(slot, moduleId), + FineTune = lib.GetModuleFineTune(slot, moduleId), Id = moduleId, Inputs = lib.GetModuleInputs(slot, moduleId), Mute = flags.Mute, @@ -97,13 +93,13 @@ internal static ModuleData ReadModule(ISunVoxLib lib, int slot, int moduleId) #region controller data - public static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int moduleId, int controllerId) + internal static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int moduleId, int controllerId) { var controllerData = new ControllerData { Id = controllerId, Name = lib.GetModuleControllerName(slot, moduleId, controllerId) ?? "undefined", - Value = lib.GetModuleControllerValue(slot, moduleId, controllerId, ValueScalingType.Real), + Value = lib.GetModuleControllerValue(slot, moduleId, controllerId, ValueScalingMode.Real), ControllerType = lib.GetModuleControllerType(slot, moduleId, controllerId) }; return controllerData; @@ -115,7 +111,7 @@ public static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int mo #region pattern data - private static PatternData[] ReadPatterns(ISunVoxLib lib, int slot) + internal static PatternData[] ReadPatterns(ISunVoxLib lib, int slot) { var patternCount = lib.GetUpperPatternCount(slot); var patterns = new List(patternCount); diff --git a/SunSharp/DerivedData/IDeepCopyable.cs b/SunSharp/Data/IDeepCopyable.cs similarity index 70% rename from SunSharp/DerivedData/IDeepCopyable.cs rename to SunSharp/Data/IDeepCopyable.cs index 37bb3fe..dec5eb8 100644 --- a/SunSharp/DerivedData/IDeepCopyable.cs +++ b/SunSharp/Data/IDeepCopyable.cs @@ -1,4 +1,4 @@ -namespace SunSharp.DerivedData +namespace SunSharp.Data { public interface IDeepCopyable { diff --git a/SunSharp/DerivedData/ModuleData.cs b/SunSharp/Data/ModuleData.cs similarity index 90% rename from SunSharp/DerivedData/ModuleData.cs rename to SunSharp/Data/ModuleData.cs index 31a05d2..acf0ffc 100644 --- a/SunSharp/DerivedData/ModuleData.cs +++ b/SunSharp/Data/ModuleData.cs @@ -2,14 +2,14 @@ using System.Collections.Generic; using System.Linq; -namespace SunSharp.DerivedData +namespace SunSharp.Data { public sealed class ModuleData : IDeepCopyable { public int Id { get; set; } public string? Name { get; set; } public (int X, int Y) Position { get; set; } = (0, 0); - public FineTunePair FineTunePair { get; set; } + public FineTunePair FineTune { get; set; } public bool Solo { get; set; } public bool Mute { get; set; } public bool Bypass { get; set; } @@ -25,7 +25,7 @@ public ModuleData DeepCopy() Id = this.Id, Name = this.Name, Position = this.Position, - FineTunePair = this.FineTunePair, + FineTune = this.FineTune, Solo = this.Solo, Mute = this.Mute, Bypass = this.Bypass, diff --git a/SunSharp/DerivedData/PatternData.cs b/SunSharp/Data/PatternData.cs similarity index 97% rename from SunSharp/DerivedData/PatternData.cs rename to SunSharp/Data/PatternData.cs index f8f768c..c1bd31f 100644 --- a/SunSharp/DerivedData/PatternData.cs +++ b/SunSharp/Data/PatternData.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -namespace SunSharp.DerivedData +namespace SunSharp.Data { public class PatternData : IDeepCopyable { diff --git a/SunSharp/DerivedData/SongData.cs b/SunSharp/Data/SongData.cs similarity index 98% rename from SunSharp/DerivedData/SongData.cs rename to SunSharp/Data/SongData.cs index ab6259a..f9b2fb6 100644 --- a/SunSharp/DerivedData/SongData.cs +++ b/SunSharp/Data/SongData.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; -namespace SunSharp.DerivedData +namespace SunSharp.Data { public class SongData : IDeepCopyable { diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index b950fa9..6135ba4 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -1,34 +1,41 @@ -namespace SunSharp +using System; + +namespace SunSharp { - public enum AudioChannel : int + public enum AudioChannel { Mono = 0, Left = Mono, Right = 1, } - public enum AudioChannels : int + public enum AudioChannels { Mono = 1, Stereo = 2 } - public enum Column : int + public enum Column { NN = 0, + Note = NN, VV = 1, + Velocity = VV, MM = 2, + Module = MM, CCEE = 3, - XXYY = 4 + ControllerEffect = CCEE, + XXYY = 4, + Parameter = XXYY } - public enum TimeMapType : int + public enum TimeMapType { Speed = Constants.SV_TIME_MAP_SPEED, FrameCount = Constants.SV_TIME_MAP_FRAMECNT, } - public enum ValueScalingType : int + public enum ValueScalingMode { Real = 0, Column = 1, @@ -40,4 +47,40 @@ public enum ControllerType Real = 0, Enum = 1, } + + [Flags] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", + Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] + public enum InitFlags : uint + { + Default = 0, + + /// + /// Less data will be written to standard output. + /// + NoDebugOutput = Constants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, + + /// + /// No automatic sound management, sv_audio_callback must be used. + /// + UserAudioCallback = Constants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, + + /// + /// Sets the format which must be used with sv_audio_callback to . + /// May not apply without . Mutually exclusive with . + /// + AudioInt16 = Constants.SV_INIT_FLAG_AUDIO_INT16, + + /// + /// Sets the format which must be used with sv_audio_callback to . + /// May not apply without . Mutually exclusive with . + /// + AudioFloat32 = Constants.SV_INIT_FLAG_AUDIO_FLOAT32, + + /// + /// Audio callback and other methods will be called from one thread. + /// Applies if is set. + /// + OneThread = Constants.SV_INIT_FLAG_ONE_THREAD + } } diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTune.cs similarity index 76% rename from SunSharp/FineTunePair.cs rename to SunSharp/FineTune.cs index e86c7c3..5dd515b 100644 --- a/SunSharp/FineTunePair.cs +++ b/SunSharp/FineTune.cs @@ -14,7 +14,7 @@ public FineTunePair(short fineTune, short relativeNote) RelativeNote = relativeNote; } - public override bool Equals(object obj) + public override readonly bool Equals(object obj) { if (obj is FineTunePair other) return Equals(other); @@ -22,19 +22,19 @@ public override bool Equals(object obj) return false; } - public bool Equals(FineTunePair other) + public readonly bool Equals(FineTunePair other) { return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public override int GetHashCode() + public override readonly int GetHashCode() { return HashCode.Combine(FineTune, RelativeNote); } - public override string ToString() + public override readonly string ToString() { - return $"FineTunePair: fine-tune: {FineTune}, relative note: {RelativeNote}"; + return $"FineTune: fine-tune: {FineTune}, relative note: {RelativeNote}"; } public static bool operator ==(FineTunePair left, FineTunePair right) diff --git a/SunSharp/Helper.cs b/SunSharp/Helper.cs new file mode 100644 index 0000000..fd63109 --- /dev/null +++ b/SunSharp/Helper.cs @@ -0,0 +1,95 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp +{ + public static class Helper + { + public static short ToShortBitwise(uint value) + { + if ((value & 0x8000) == 0) + return (short)value; + + var val = (int)value; + return (short)(val - 0x10000); + } + + public static int[] CopyIntArraySkipNegativeOnes(IntPtr address, int count) + { + if (address == IntPtr.Zero) + { + return Array.Empty(); + } + + var nonZeroValues = 0; + for (var i = 0; i < count; i++) + { + if (Marshal.ReadInt32(address, i * sizeof(int)) != -1) + nonZeroValues++; + } + + var arr = new int[nonZeroValues]; + + var index = 0; + for (var i = 0; i < count; i++) + { + var value = Marshal.ReadInt32(address, i * sizeof(int)); + if (value == -1) + continue; + + arr[index] = value; + index++; + } + + return arr; + } + + #region macros + + // this code is translated from sunvox.h + + /// + /// Get x, y position from one xy value received from sv_get_module_xy(int, int). + /// + public static (short x, short y) SplitValueTo2DPosition(uint xy) + { + var x = xy & 0xFFFF; + var y = (xy >> 16) & 0xFFFF; + return (ToShortBitwise(x), ToShortBitwise(y)); + } + + /// + /// Get fine-tune and relative note value from packed fine-tune value received from sv_get_module_finetune(int, int). + /// + public static (short fineTune, short relativeNote) SplitValueToFineTune(uint packedFineTune) + { + var outFineTune = packedFineTune & 0xFFFF; + var outRelativeNote = (packedFineTune >> 16) & 0xFFFF; + return (ToShortBitwise(outFineTune), ToShortBitwise(outRelativeNote)); + } + + public static float PitchToFrequency(float pitch) + { + return (float)PitchToFrequency((double)pitch); + } + + // from SunVox pitch to Hz: freq = pow( 2, ( 30720 - pitch ) / 3072 ) * 16.333984375 + public static double PitchToFrequency(double pitch) + { + return Math.Pow(2, (30720.0 - pitch) / 3072.0) * 16.333984375; + } + + public static float FrequencyToPitch(float frequency) + { + return (float)FrequencyToPitch((double)frequency); + } + + // from Hz to SunVox pitch: pitch = 30720 - log2( freq / 16.333984375 ) * 3072 + public static double FrequencyToPitch(double frequency) + { + return 30720.0 - Math.Log(frequency / 16.333984375, 2) * 3072.0; + } + + #endregion macros + } +} diff --git a/SunSharp/ISunVoxLib.Modules.cs b/SunSharp/ISunVoxLib.Modules.cs new file mode 100644 index 0000000..cdefdff --- /dev/null +++ b/SunSharp/ISunVoxLib.Modules.cs @@ -0,0 +1,170 @@ +namespace SunSharp +{ + public partial interface ISunVoxLib + { + /// + /// Connect two specified modules. + /// Use or an alternative! + /// + /// + void ConnectModule(int slotId, int source, int destination); + + /// + /// Disconnect two specified modules. + /// Use or an alternative! + /// + /// + void DisconnectModule(int slotId, int source, int destination); + + /// + /// Find module by name. + /// + /// Id of found module, -1 if it was not found. + /// + int FindModule(int slotId, string name); + + (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId); + + void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b); + + string? GetModuleControllerName(int slotId, int moduleId, int controllerId); + + /// + /// Get module controller value. + /// + int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + + int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + + int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + + int GetModuleControllerOffset(int slotId, int moduleId, int controllerId); + + ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId); + + int GetModuleControllerGroup(int slotId, int moduleId, int controllerId); + + /// + /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce latency). + /// + void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode); + + FineTunePair GetModuleFineTune(int slotId, int moduleId); + + void SetModuleFineTune(int slotId, int moduleId, int fineTune); + + void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote); + + ModuleFlags GetModuleFlags(int slotId, int moduleId); + + bool GetModuleExists(int slotId, int moduleId); + + /// + /// Get an array of Ids of modules that are connected as inputs. + /// Does NOT return -1 for empty connection slots. + /// + /// + int[] GetModuleInputs(int slotId, int moduleId); + + string? GetModuleName(int slotId, int moduleId); + + void SetModuleName(int slotId, int moduleId, string name); + + string? GetModuleType(int slotId, int moduleId); + + /// + /// Get an array of Ids of modules. + /// Does NOT return -1 for empty connection slots. + /// + int[] GetModuleOutputs(int slotId, int moduleId); + + /// + /// Read module scope view, and write it to a buffer. + /// + /// Number of samples successfully read. + int ReadModuleScope(int slotId, int moduleId, int channel, short[] buffer); + + (int x, int y) GetModulePosition(int slotId, int moduleId); + + void SetModulePosition(int slotId, int moduleId, int x, int y); + + /// + /// Get the upper module count, which may be greater than the module count. + /// + /// + int GetUpperModuleCount(int slotId); + + int GetModuleControllerCount(int slotId, int moduleId); + + /// + /// load a module or a sample. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// CreatedmoduleId Id. + /// + int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0); + + /// + /// load a module or a sample from memory. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// Created module id. + /// + int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0); + + int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data); + + int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data); + + /// + /// Create a new module. Type refers to the name visible on new module creation window. + /// Use or an alternative! + /// + /// Created module id. + /// + int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, int z = 0); + + /// + /// Remove an existing module. + /// Use or an alternative! + /// + /// + void RemoveModule(int slotId, int moduleId); + + /// + /// Load a sample (xi, wav, aiff) to an existing module from file. + /// Set to -1 to apply the sample to all sample slots. + /// + /// + void LoadSamplerSample(int slotId, int moduleId, string path, int sampleSlot = -1); + + /// + /// Load a sample (xi, wav, aiff) to an existing module from memory. + /// Set to -1 to apply the sample to all sample slots. + /// + /// + void LoadSamplerSample(int slotId, int moduleId, byte[] data, int sampleSlot = -1); + + /// + /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. + /// + /// + void LoadIntoMetaModule(int slotId, int moduleId, string path); + + /// + /// load a file into the MetaModule from memory. Supported file formats: sunvox, mod, xm, midi. + /// + /// + void LoadIntoMetaModule(int slotId, int moduleId, byte[] data); + + /// + /// load a file into the Vorbis Player. Supported file formats: ogg. + /// + /// + void LoadIntoVorbisPLayer(int slotId, int moduleId, string path); + + /// + /// load a file into the Vorbis Player. Supported file formats: ogg. + /// + /// + void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data); + } +} diff --git a/SunSharp/ISunVoxLib.Patterns.cs b/SunSharp/ISunVoxLib.Patterns.cs new file mode 100644 index 0000000..323f742 --- /dev/null +++ b/SunSharp/ISunVoxLib.Patterns.cs @@ -0,0 +1,85 @@ +namespace SunSharp +{ + public partial interface ISunVoxLib + { + /// + /// Use or an alternative! + /// + /// + int CreatePattern(int slotId, int? patternToCloneId, int x, int y, int tracks, int lines, int? iconSeed, string? name); + + /// + /// Use or an alternative! + /// + /// + void RemovePattern(int slotId, int patternId); + + /// + /// Get the upper pattern count, which may be greater than the actual pattern count. + /// + /// + int GetUpperPatternCount(int slotId); + + /// + /// Find pattern by name. + /// + /// Pattern Id, or -1 if pattern was not found. + /// + int FindPattern(int slotId, string name); + + int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column); + + string? GetPatternName(int slotId, int patternId); + + /// + /// Use or an alternative! + /// + /// + void SetPatternName(int slotId, int patternId, string name); + + bool GetPatternExists(int slotId, int patternId); + + int GetPatternLines(int slotId, int patternId); + + int GetPatternTracks(int slotId, int patternId); + + /// + /// Use or an alternative! + /// + void SetPatternSize(int slotId, int patternId, int? tracks = null, + int? lines = null); + + (int x, int y) GetPatternPosition(int slotId, int patternId); + + int GetPatternX(int slotId, int patternId); + + int GetPatternY(int slotId, int patternId); + + /// + /// Use or an alternative! + /// + /// + void SetPatternPosition(int slotId, int patternId, int x, int y); + + /// + /// Use or an alternative! + /// + PatternEvent[]? GetPatternData(int slotId, int patternId); + + /// + /// Use or an alternative! + /// + /// + void SetPatternData(int slotId, int patternId, PatternEvent[] data); + + /// + /// Use or an alternative! + /// + /// + bool SetPatternMute(int slotId, int patternId, bool muted); + + void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + + void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev); + } +} diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/ISunVoxLib.cs index cb6b3d2..e57b863 100644 --- a/SunSharp/ISunVoxLib.cs +++ b/SunSharp/ISunVoxLib.cs @@ -1,482 +1,305 @@ -using System; - -namespace SunSharp +namespace SunSharp { - public interface ISunVoxLib + public partial interface ISunVoxLib { -#pragma warning disable CA1707 // Identifiers should not contain underscores -#pragma warning disable CA1716 // Identifiers should not match keywords -#pragma warning disable IDE1006 // Naming Styles - /// - /// int sv_init(const char* config, int freq, int channels, uint32_t flags) SUNVOX_FN_ATTR; + /// Initialize the engine. May be called again to re-initialize the engine. /// - int sv_init(IntPtr config, int freq, int channels, uint flags); + /// Sample rate. If not using audio callback, may be set to -1. + /// Configuration, which may include input and output devices. See SunVox Lib documentation for details. + /// Channels to be used. + /// Initialization flags. + /// The version of underlying library. + LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default); /// - /// int sv_deinit(void) SUNVOX_FN_ATTR; + /// Deinitializes the library, frees resources. /// - int sv_deinit(); + void Deinitialize(); /// - /// int sv_get_sample_rate(void) SUNVOX_FN_ATTR; + /// Get first characters of engine logs. /// - int sv_get_sample_rate(); + /// Character count to be read. + /// + string? GetLog(int size); /// - /// int sv_update_input(void) SUNVOX_FN_ATTR; + /// Use this method to get the current tick counter (from 0 to 0xFFFFFFFF).
+ /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
- int sv_update_input(); + /// + uint GetTicks(); /// - /// int sv_audio_callback(void* buf, int frames, int latency, uint32_t out_time); + /// Use this method to get the number of system ticks per second.
+ /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
- int sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time); + /// + uint GetTicksPerSecond(); - /// - /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* in_buf) SUNVOX_FN_ATTR; - /// - int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, - IntPtr in_buf); + int GetSampleRate(); /// - /// int sv_open_slot(int slot) SUNVOX_FN_ATTR; + /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the module creation).
+ /// Call it from the main thread only, where the SunVox sound stream is not locked. ///
- int sv_open_slot(int slot); + /// + void UpdateInputDevices(); /// - /// int sv_close_slot(int slot) SUNVOX_FN_ATTR; + /// Get the next piece of audio.
+ /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. ///
- int sv_close_slot(int slot); + /// Buffer to write sound data to. + /// Channels the library was initialized with. + /// Audio latency (in frames). + /// Buffer output time (in system ticks). + /// if buffer was filled with zeros. + bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// - /// int sv_lock_slot(int slot) SUNVOX_FN_ATTR; - /// - int sv_lock_slot(int slot); + /// + bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime); /// - /// int sv_unlock_slot(int slot) SUNVOX_FN_ATTR; + /// Get the next piece of audio.
+ /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. + /// Sends equal size buffer of an input device, which will be applied to any modules. ///
- int sv_unlock_slot(int slot); + /// Buffer to write sound data to. + /// Channels the library was initialized with. + /// Buffer to read sound data from. + /// Input data channels. + /// Audio latency (in frames). + /// Buffer output time (in system ticks). + /// if buffer was filled with zeros. + bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, + float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// - /// int sv_load(int slot, const char* name) SUNVOX_FN_ATTR; - /// - int sv_load(int slot, IntPtr name); + /// + bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// - /// int sv_load_from_memory(int slot, void* data, uint32_t data_size) SUNVOX_FN_ATTR; - /// - int sv_load_from_memory(int slot, IntPtr data, uint data_size); + /// + bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, + float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// - /// int sv_save(int slot, const char* name) SUNVOX_FN_ATTR; - /// - int sv_save(int slot, IntPtr name); + /// + bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// - /// int sv_play(int slot); - /// - int sv_play(int slot); + bool IsPlaying(int slotId); /// - /// int sv_play_from_beginning(int slot); + /// Get current behaviour for reaching the end of project timeline. /// - int sv_play_from_beginning(int slot); + /// if project is stopped after reaching the end. + /// + bool GetAutostop(int slotId); /// - /// int sv_stop(int slot); + /// Get current line number on the timeline. /// - int sv_stop(int slot); + /// + /// + int GetCurrentLine(int slotId); /// - /// int sv_pause(int slot); + /// Get current line in fixed point format (with tenth part). /// - int sv_pause(int slot); + int GetCurrentLineWithTenthPart(int slotId); /// - /// int sv_resume(int slot); + /// Get current signal level from the output module. /// - int sv_resume(int slot); + /// + /// + /// + int GetCurrentSignalLevel(int slotId, int channel); /// - /// int sv_sync_resume(int slot); + /// Get the project BPM (Beats Per Minute). /// - int sv_sync_resume(int slot); + /// + /// + int GetSongBpm(int slotId); /// - /// int sv_set_autostop(int slot, int autostop) SUNVOX_FN_ATTR; + /// Get the the project length in frames.
+ /// A frame is a pair of audio signal samples (left and right channel amplitudes). + /// The sample rate 44100 Hz means that you hear 44100 frames per second. ///
- int sv_set_autostop(int slot, int autostop); + /// + /// + int GetSongLengthInFrames(int slotId); /// - /// int sv_get_autostop(int slot) SUNVOX_FN_ATTR; + /// Get the the project length in frames or lines. /// - int sv_get_autostop(int slot); + /// + /// + int GetSongLengthInLines(int slotId); - /// - /// int sv_end_of_song( int slot) SUNVOX_FN_ATTR; - /// - int sv_end_of_song(int slot); + string? GetSongName(int slotId); - /// - /// int sv_rewind( int slot, int line_num) SUNVOX_FN_ATTR; - /// - int sv_rewind(int slot, int line_num); + void SetSongName(int slotId, string newName); /// - /// int sv_volume(int slot, int vol) SUNVOX_FN_ATTR; + /// Get the project TPL (Ticks Per Line). /// - int sv_volume(int slot, int vol); + /// + /// + int GetSongTpl(int slotId); /// - /// int sv_set_event_t( int slot, int set, int t) SUNVOX_FN_ATTR; + /// Save the SunVox project. /// - int sv_set_event_t(int slot, int set, int t); + /// + /// + void Save(int slotId, string path); /// - /// int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) SUNVOX_FN_ATTR; + /// /// - int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val); + /// + /// + /// + void SendEvent(int slotId, int track, PatternEvent data); - /// - /// int sv_get_current_line(int slot) SUNVOX_FN_ATTR; - /// - int sv_get_current_line(int slot); + void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); /// - /// int sv_get_current_line2(int slot) SUNVOX_FN_ATTR; + /// Set the timestamp of events to be sent.
+ /// Every event you send has a timestamp - this is the time when the event was generated (for example, when a key was pressed).
+ /// If is zero, the event will be heard as soon as possible, which is delayed by double the sound latency.
+ /// If is nonzero, the event will be additionally delayed by this many ticks.
+ /// See also: . ///
- int sv_get_current_line2(int slot); + /// + /// + /// + void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0); /// - /// int sv_get_current_signal_level(int slot, int channel) SUNVOX_FN_ATTR; + /// Get and set volume. Call with = -1 to only get the value. /// - int sv_get_current_signal_level(int slot, int channel); + /// + /// Value in range 0-256. + /// Previous volume in range 0-256. + /// + int Volume(int slotId, int volume); /// - /// const char* sv_get_song_name( int slot ) SUNVOX_FN_ATTR; + /// Get the project time map. + /// For = , Nth value equals speed at the beginning of Nth line (Bpm | Tpl << 16). + /// For = , Nth value equals frame counter at the beginning of Nth line. /// - IntPtr sv_get_song_name(int slot); + /// + uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type); /// - /// int sv_set_song_name( int slot, const char* name ) SUNVOX_FN_ATTR; + /// Load a project from file. /// - int sv_set_song_name(int slot, IntPtr name); + /// Target slot ID. + /// Path to the file; may be relative or absolute. + void Load(int slotId, string path); /// - /// int sv_get_song_bpm(int slot) SUNVOX_FN_ATTR; + /// Load a project from memory. /// - int sv_get_song_bpm(int slot); + /// + void Load(int slotId, byte[] data); /// - /// int sv_get_song_tpl(int slot) SUNVOX_FN_ATTR; + /// Open sound slot. Each slot can contain one independent implementation of the SunVox engine. + /// You can use several slots simultaneously (for example, one slot for music and another for effects). + /// Max number of slots = 16. /// - int sv_get_song_tpl(int slot); + /// A value between 0 and 15. + void OpenSlot(int slotId); /// - /// uint32_t sv_get_song_length_frames(int slot) SUNVOX_FN_ATTR; + /// Close sound slot. /// - uint sv_get_song_length_frames(int slot); + /// + void CloseSlot(int slotId); /// - /// uint32_t sv_get_song_length_lines(int slot) SUNVOX_FN_ATTR; + /// Enter a lock block. + /// Use to send multiple events at the same time, read or write data from multiple threads. + /// Remember to call ! /// - uint sv_get_song_length_lines(int slot); + /// + void LockSlot(int slotId); /// - /// int sv_get_time_map(int slot, int start_line, int len, uint32_t* dest, int flags) SUNVOX_FN_ATTR; + /// Leave a lock block. /// - int sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags); + /// + void UnlockSlot(int slotId); /// - /// int sv_new_module(int slot, const char* type, const char* name, int x, int y, int z) SUNVOX_FN_ATTR; + /// Set/get autostop mode. When autostop is off, the project plays endlessly in a loop. /// - int sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z); + /// + /// + void SetAutoStop(int slotId, bool autoStop); /// - /// int sv_remove_module(int slot, int mod_num) SUNVOX_FN_ATTR; + /// First call - stop playing; second call - reset all SunVox activity and switch the engine to standby mode. /// - int sv_remove_module(int slot, int mod_num); + /// + void StopPlayback(int slotId); - /// - /// int sv_connect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; - /// - int sv_connect_module(int slot, int source, int destination); - - /// - /// int sv_disconnect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; - /// - int sv_disconnect_module(int slot, int source, int destination); - - /// - /// int sv_load_module(int slot, const char* file_name, int x, int y, int z ) SUNVOX_FN_ATTR; - /// - int sv_load_module(int slot, IntPtr file_name, int x, int y, int z); - - /// - /// int sv_load_module_from_memory(int slot, void* data, uint32_t data_size, int x, int y, int z) SUNVOX_FN_ATTR; - /// - int sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z); + // TODO confirm name /// - /// int sv_sampler_load(int slot, int sampler_module, const char* file_name, int sample_slot) SUNVOX_FN_ATTR; + /// Start playing the project from the current position. /// - int sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot); + /// + void StartPlayback(int slotId); - /// - /// int sv_sampler_load_from_memory(int slot, int sampler_module, void* data, uint32_t data_size, int sample_slot) SUNVOX_FN_ATTR; - /// - int sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot); - - /// - /// int sv_metamodule_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; - /// - int sv_metamodule_load(int slot, int mod_num, IntPtr file_name); + // TODO confirm name /// - /// int sv_metamodule_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// Start playing the project from the beginning (line 0). /// - int sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); + /// + void StartPlaybackFromBeginning(int slotId); - /// - /// int sv_vplayer_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; - /// - int sv_vplayer_load(int slot, int mod_num, IntPtr file_name); + // TODO confirm name /// - /// int sv_vplayer_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// Jump to the specified position (line number on the timeline). /// - int sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); + /// + /// + void Rewind(int slotId, int line); - /// - /// int sv_get_number_of_modules(int slot) SUNVOX_FN_ATTR; - /// - int sv_get_number_of_modules(int slot); + // TODO confirm name /// - /// int sv_find_module(int slot, const char* name) SUNVOX_FN_ATTR; + /// Pause the audio stream on the specified slot. /// - int sv_find_module(int slot, IntPtr name); + /// + void PauseStream(int slotId); - /// - /// uint32_t sv_get_module_flags(int slot, int mod_num) SUNVOX_FN_ATTR; - /// - uint sv_get_module_flags(int slot, int mod_num); - - /// - /// int* sv_get_module_inputs( int slot, int mod_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_module_inputs(int slot, int mod_num); - - /// - /// int* sv_get_module_outputs( int slot, int mod_num ) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_module_outputs(int slot, int mod_num); - - /// - /// const char* sv_get_module_name( int slot, int mod_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_module_name(int slot, int mod_num); - - /// - /// int sv_set_module_name( int slot, int mod_num, const char* name ) SUNVOX_FN_ATTR; - /// - int sv_set_module_name(int slot, int mod_num, IntPtr name); - - /// - /// const char* sv_get_module_type( int slot, int mod_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_module_type(int slot, int mod_num); - - /// - /// uint32_t sv_get_module_xy(int slot, int mod_num) SUNVOX_FN_ATTR; - /// - uint sv_get_module_xy(int slot, int mod_num); - - /// - /// int sv_set_module_xy(int slot, int mod_num, int x, int y) SUNVOX_FN_ATTR; - /// - int sv_set_module_xy(int slot, int mod_num, int x, int y); - - /// - /// int sv_get_module_color( int slot, int mod_num) SUNVOX_FN_ATTR; - /// - int sv_get_module_color(int slot, int mod_num); - - /// - /// int sv_set_module_color(int slot, int mod_num, int color) SUNVOX_FN_ATTR; - /// - int sv_set_module_color(int slot, int mod_num, int color); - - /// - /// uint32_t sv_get_module_finetune(int slot, int mod_num) SUNVOX_FN_ATTR; - /// - uint sv_get_module_finetune(int slot, int mod_num); - - /// - /// int sv_set_module_finetune(int slot, int mod_num, int finetune) SUNVOX_FN_ATTR; - /// - int sv_set_module_finetune(int slot, int mod_num, int finetune); - - /// - /// int sv_set_module_relnote(int slot, int mod_num, int relative_note) SUNVOX_FN_ATTR; - /// - int sv_set_module_relnote(int slot, int mod_num, int relative_note); - - /// - /// uint32_t sv_get_module_scope2(int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read) SUNVOX_FN_ATTR; - /// - uint sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read); + // TODO confirm name /// - /// int sv_module_curve(int slot, int mod_num, int curve_num, float* data, int len, int w) SUNVOX_FN_ATTR; + /// Resume the audio stream on the specified slot. /// - int sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w); + /// + void ResumeStream(int slotId); - /// - /// int sv_get_number_of_module_ctls(int slot, int mod_num) SUNVOX_FN_ATTR; - /// - int sv_get_number_of_module_ctls(int slot, int mod_num); - - /// - /// const char* sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_module_ctl_name(int slot, int mod_num, int ctl_num); - - /// - /// int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled); - - /// - /// int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) SUNVOX_FN_ATTR; - /// - int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled); - - /// - /// int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled); - - /// - /// int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled); - - /// - /// int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num); - - /// - /// int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num); - - /// - /// int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; - /// - int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num); - - /// - /// int sv_get_number_of_patterns(int slot) SUNVOX_FN_ATTR; - /// - int sv_get_number_of_patterns(int slot); - - /// - /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) SUNVOX_FN_ATTR; - /// - int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name); - - /// - /// int sv_remove_pattern(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - int sv_remove_pattern(int slot, int pat_num); - - /// - /// int sv_find_pattern(int slot, const char* name ) SUNVOX_FN_ATTR; - /// - int sv_find_pattern(int slot, IntPtr name); - - /// - /// int sv_get_pattern_x(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - int sv_get_pattern_x(int slot, int pat_num); - - /// - /// int sv_get_pattern_y(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - int sv_get_pattern_y(int slot, int pat_num); - - /// - /// int sv_set_pattern_xy(int slot, int pat_num, int x, int y) SUNVOX_FN_ATTR; - /// - int sv_set_pattern_xy(int slot, int pat_num, int x, int y); - - /// - /// int sv_get_pattern_tracks(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - int sv_get_pattern_tracks(int slot, int pat_num); - - /// - /// int sv_get_pattern_lines(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - int sv_get_pattern_lines(int slot, int pat_num); - - /// - /// int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) SUNVOX_FN_ATTR; - /// - int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines); - - /// - /// const char* sv_get_pattern_name( int slot, int pat_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_pattern_name(int slot, int pat_num); - - /// - /// int sv_set_pattern_name( int slot, int pat_num, const char* name ) SUNVOX_FN_ATTR; - /// - int sv_set_pattern_name(int slot, int pat_num, IntPtr name); - - /// - /// sunvox_note* sv_get_pattern_data(int slot, int pat_num) SUNVOX_FN_ATTR; - /// - IntPtr sv_get_pattern_data(int slot, int pat_num); - - /// - /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) SUNVOX_FN_ATTR; - /// - int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, - int xxyy); - - /// - /// int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) SUNVOX_FN_ATTR; - /// - int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column); - - /// - /// int sv_pattern_mute(int slot, int pat_num, int mute) SUNVOX_FN_ATTR; - /// - int sv_pattern_mute(int slot, int pat_num, int mute); - - /// - /// uint32_t sv_get_ticks(void) SUNVOX_FN_ATTR; - /// - uint sv_get_ticks(); - - /// - /// uint32_t sv_get_ticks_per_second(void) SUNVOX_FN_ATTR; - /// - uint sv_get_ticks_per_second(); + // TODO confirm name /// - /// const char* sv_get_log(int size) SUNVOX_FN_ATTR; + /// Wait for sync (pattern effect 0x33 on any slot) and resume the audio stream on the specified slot. /// - IntPtr sv_get_log(int size); + /// + void ResumeStreamOnSyncEffect(int slotId); -#pragma warning restore CA1716 // Identifiers should not match keywords -#pragma warning restore IDE1006 // Naming Styles -#pragma warning restore CA1707 // Identifiers should not contain underscores + // TODO confirm name } } diff --git a/SunSharp/LibraryLoading/ProxyClass.Generated.cs b/SunSharp/LibraryLoading/ProxyClass.Generated.cs deleted file mode 100644 index ba5985e..0000000 --- a/SunSharp/LibraryLoading/ProxyClass.Generated.cs +++ /dev/null @@ -1,467 +0,0 @@ -using System; -using System.Reflection; - -namespace SunSharp.LibraryLoading -{ - public class ProxyClass : ISunVoxLib - { - public ProxyClass(Func GetDelegate) - { - var type = GetType(); - var fields = type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic); - foreach (var field in fields) - { - if (typeof(Delegate).IsAssignableFrom(field.FieldType)) - { - field.SetValue(this, GetDelegate(field.Name, field.FieldType)); - } - } - } - - #region delegate definitions - - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, int _int7, int _int8); - - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int_IntPtr(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6, IntPtr _IntPtr); - - private delegate int o_Int_i_Int_Int_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4, int _int5, int _int6); - - private delegate int o_Int_i_Int_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3, int _int4); - - private delegate int o_Int_i_Int_Int_Int_Int(int _int, int _int1, int _int2, int _int3); - - private delegate int o_Int_i_Int_Int_Int_IntPtr_Int_Int(int _int, int _int1, int _int2, IntPtr _IntPtr, int _int3, int _int4); - - private delegate int o_Int_i_Int_Int_Int_IntPtr_Int(int _int, int _int1, int _int2, IntPtr _IntPtr, int _int3); - - private delegate int o_Int_i_Int_Int_Int(int _int, int _int1, int _int2); - - private delegate int o_Int_i_Int_Int_IntPtr_Int(int _int, int _int1, IntPtr _IntPtr, int _int2); - - private delegate int o_Int_i_Int_Int_IntPtr_Uint_Int(int _int, int _int1, IntPtr _IntPtr, uint _uint, int _int2); - - private delegate int o_Int_i_Int_Int_IntPtr_Uint(int _int, int _int1, IntPtr _IntPtr, uint _uint); - - private delegate int o_Int_i_Int_Int_IntPtr(int _int, int _int1, IntPtr _IntPtr); - - private delegate int o_Int_i_Int_Int(int _int, int _int1); - - private delegate int o_Int_i_Int_IntPtr_Int_Int_Int(int _int, IntPtr _IntPtr, int _int1, int _int2, int _int3); - - private delegate int o_Int_i_Int_IntPtr_IntPtr_Int_Int_Int(int _int, IntPtr _IntPtr, IntPtr _IntPtr1, int _int1, int _int2, int _int3); - - private delegate int o_Int_i_Int_IntPtr_Uint_Int_Int_Int(int _int, IntPtr _IntPtr, uint _uint, int _int1, int _int2, int _int3); - - private delegate int o_Int_i_Int_IntPtr_Uint(int _int, IntPtr _IntPtr, uint _uint); - - private delegate int o_Int_i_Int_IntPtr(int _int, IntPtr _IntPtr); - - private delegate int o_Int_i_Int(int _int); - - private delegate int o_Int_i_IntPtr_Int_Int_Uint_Int_Int_IntPtr(IntPtr _IntPtr, int _int, int _int1, uint _uint, int _int2, int _int3, IntPtr _IntPtr1); - - private delegate int o_Int_i_IntPtr_Int_Int_Uint(IntPtr _IntPtr, int _int, int _int1, uint _uint); - - private delegate int o_Int_i_Void(); - - private delegate IntPtr o_IntPtr_i_Int_Int_Int(int _int, int _int1, int _int2); - - private delegate IntPtr o_IntPtr_i_Int_Int(int _int, int _int1); - - private delegate IntPtr o_IntPtr_i_Int(int _int); - - private delegate uint o_Uint_i_Int_Int_Int_IntPtr_Uint(int _int, int _int1, int _int2, IntPtr _IntPtr, uint _uint); - - private delegate uint o_Uint_i_Int_Int(int _int, int _int1); - - private delegate uint o_Uint_i_Int(int _int); - - private delegate uint o_Uint_i_Void(); - - #endregion delegate definitions - - #region delegates - -#pragma warning disable CS0649 - - private o_Int_i_Int sv_close_slot; - - private o_Int_i_Int sv_end_of_song; - - private o_Int_i_Int sv_get_autostop; - - private o_Int_i_Int sv_get_current_line; - - private o_Int_i_Int sv_get_current_line2; - - private o_Int_i_Int sv_get_number_of_modules; - - private o_Int_i_Int sv_get_number_of_patterns; - - private o_Int_i_Int sv_get_song_bpm; - - private o_Int_i_Int sv_get_song_tpl; - - private o_Int_i_Int sv_lock_slot; - - private o_Int_i_Int sv_open_slot; - - private o_Int_i_Int sv_pause; - - private o_Int_i_Int sv_play_from_beginning; - - private o_Int_i_Int sv_play; - - private o_Int_i_Int sv_resume; - - private o_Int_i_Int sv_stop; - - private o_Int_i_Int sv_sync_resume; - - private o_Int_i_Int sv_unlock_slot; - - private o_Int_i_Int_Int sv_get_current_signal_level; - - private o_Int_i_Int_Int sv_get_module_color; - - private o_Int_i_Int_Int sv_get_number_of_module_ctls; - - private o_Int_i_Int_Int sv_get_pattern_lines; - - private o_Int_i_Int_Int sv_get_pattern_tracks; - - private o_Int_i_Int_Int sv_get_pattern_x; - - private o_Int_i_Int_Int sv_get_pattern_y; - - private o_Int_i_Int_Int sv_remove_module; - - private o_Int_i_Int_Int sv_remove_pattern; - - private o_Int_i_Int_Int sv_rewind; - - private o_Int_i_Int_Int sv_set_autostop; - - private o_Int_i_Int_Int sv_volume; - - private o_Int_i_Int_Int_Int sv_connect_module; - - private o_Int_i_Int_Int_Int sv_disconnect_module; - - private o_Int_i_Int_Int_Int sv_get_module_ctl_group; - - private o_Int_i_Int_Int_Int sv_get_module_ctl_offset; - - private o_Int_i_Int_Int_Int sv_get_module_ctl_type; - - private o_Int_i_Int_Int_Int sv_pattern_mute; - - private o_Int_i_Int_Int_Int sv_set_event_t; - - private o_Int_i_Int_Int_Int sv_set_module_color; - - private o_Int_i_Int_Int_Int sv_set_module_finetune; - - private o_Int_i_Int_Int_Int sv_set_module_relnote; - - private o_Int_i_Int_Int_Int_Int sv_get_module_ctl_max; - - private o_Int_i_Int_Int_Int_Int sv_get_module_ctl_min; - - private o_Int_i_Int_Int_Int_Int sv_get_module_ctl_value; - - private o_Int_i_Int_Int_Int_Int sv_set_module_xy; - - private o_Int_i_Int_Int_Int_Int sv_set_pattern_size; - - private o_Int_i_Int_Int_Int_Int sv_set_pattern_xy; - - private o_Int_i_Int_Int_Int_Int_Int sv_get_pattern_event; - - private o_Int_i_Int_Int_Int_Int_Int sv_set_module_ctl_value; - - private o_Int_i_Int_Int_Int_Int_Int_Int_Int sv_send_event; - - private o_Int_i_Int_Int_Int_Int_Int_Int_Int_Int_Int sv_set_pattern_event; - - private o_Int_i_Int_Int_Int_Int_Int_Int_Int_IntPtr sv_new_pattern; - - private o_Int_i_Int_Int_Int_IntPtr_Int sv_get_time_map; - - private o_Int_i_Int_Int_Int_IntPtr_Int_Int sv_module_curve; - - private o_Int_i_Int_Int_IntPtr sv_metamodule_load; - - private o_Int_i_Int_Int_IntPtr sv_set_module_name; - - private o_Int_i_Int_Int_IntPtr sv_set_pattern_name; - - private o_Int_i_Int_Int_IntPtr sv_vplayer_load; - - private o_Int_i_Int_Int_IntPtr_Int sv_sampler_load; - - private o_Int_i_Int_Int_IntPtr_Uint sv_metamodule_load_from_memory; - - private o_Int_i_Int_Int_IntPtr_Uint sv_vplayer_load_from_memory; - - private o_Int_i_Int_Int_IntPtr_Uint_Int sv_sampler_load_from_memory; - - private o_Int_i_Int_IntPtr sv_find_module; - - private o_Int_i_Int_IntPtr sv_find_pattern; - - private o_Int_i_Int_IntPtr sv_load; - - private o_Int_i_Int_IntPtr sv_save; - - private o_Int_i_Int_IntPtr sv_set_song_name; - - private o_Int_i_Int_IntPtr_Int_Int_Int sv_load_module; - - private o_Int_i_Int_IntPtr_IntPtr_Int_Int_Int sv_new_module; - - private o_Int_i_Int_IntPtr_Uint sv_load_from_memory; - - private o_Int_i_Int_IntPtr_Uint_Int_Int_Int sv_load_module_from_memory; - - private o_Int_i_IntPtr_Int_Int_Uint sv_audio_callback; - - private o_Int_i_IntPtr_Int_Int_Uint sv_init; - - private o_Int_i_IntPtr_Int_Int_Uint_Int_Int_IntPtr sv_audio_callback2; - - private o_Int_i_Void sv_deinit; - - private o_Int_i_Void sv_get_sample_rate; - - private o_Int_i_Void sv_update_input; - - private o_IntPtr_i_Int sv_get_log; - - private o_IntPtr_i_Int sv_get_song_name; - - private o_IntPtr_i_Int_Int sv_get_module_inputs; - - private o_IntPtr_i_Int_Int sv_get_module_name; - - private o_IntPtr_i_Int_Int sv_get_module_outputs; - - private o_IntPtr_i_Int_Int sv_get_module_type; - - private o_IntPtr_i_Int_Int sv_get_pattern_data; - - private o_IntPtr_i_Int_Int sv_get_pattern_name; - - private o_IntPtr_i_Int_Int_Int sv_get_module_ctl_name; - - private o_Uint_i_Int sv_get_song_length_frames; - - private o_Uint_i_Int sv_get_song_length_lines; - - private o_Uint_i_Int_Int sv_get_module_finetune; - - private o_Uint_i_Int_Int sv_get_module_flags; - - private o_Uint_i_Int_Int sv_get_module_xy; - - private o_Uint_i_Int_Int_Int_IntPtr_Uint sv_get_module_scope2; - - private o_Uint_i_Void sv_get_ticks_per_second; - - private o_Uint_i_Void sv_get_ticks; - -#pragma warning restore CS0649 - - #endregion delegates - - #region interface - - int ISunVoxLib.sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time) => sv_audio_callback(buf, frames, latency, out_time); - - int ISunVoxLib.sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf) => sv_audio_callback2(buf, frames, latency, out_time, in_type, in_channels, in_buf); - - int ISunVoxLib.sv_close_slot(int slot) => sv_close_slot(slot); - - int ISunVoxLib.sv_connect_module(int slot, int source, int destination) => sv_connect_module(slot, source, destination); - - int ISunVoxLib.sv_deinit() => sv_deinit(); - - int ISunVoxLib.sv_disconnect_module(int slot, int source, int destination) => sv_disconnect_module(slot, source, destination); - - int ISunVoxLib.sv_end_of_song(int slot) => sv_end_of_song(slot); - - int ISunVoxLib.sv_find_module(int slot, IntPtr name) => sv_find_module(slot, name); - - int ISunVoxLib.sv_find_pattern(int slot, IntPtr name) => sv_find_pattern(slot, name); - - int ISunVoxLib.sv_get_autostop(int slot) => sv_get_autostop(slot); - - int ISunVoxLib.sv_get_current_line(int slot) => sv_get_current_line(slot); - - int ISunVoxLib.sv_get_current_line2(int slot) => sv_get_current_line2(slot); - - int ISunVoxLib.sv_get_current_signal_level(int slot, int channel) => sv_get_current_signal_level(slot, channel); - - int ISunVoxLib.sv_get_module_color(int slot, int mod_num) => sv_get_module_color(slot, mod_num); - - int ISunVoxLib.sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_group(slot, mod_num, ctl_num); - - int ISunVoxLib.sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_max(slot, mod_num, ctl_num, scaled); - - int ISunVoxLib.sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_min(slot, mod_num, ctl_num, scaled); - - int ISunVoxLib.sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_offset(slot, mod_num, ctl_num); - - int ISunVoxLib.sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_type(slot, mod_num, ctl_num); - - int ISunVoxLib.sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_value(slot, mod_num, ctl_num, scaled); - - int ISunVoxLib.sv_get_number_of_module_ctls(int slot, int mod_num) => sv_get_number_of_module_ctls(slot, mod_num); - - int ISunVoxLib.sv_get_number_of_modules(int slot) => sv_get_number_of_modules(slot); - - int ISunVoxLib.sv_get_number_of_patterns(int slot) => sv_get_number_of_patterns(slot); - - int ISunVoxLib.sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) => sv_get_pattern_event(slot, pat_num, track, line, column); - - int ISunVoxLib.sv_get_pattern_lines(int slot, int pat_num) => sv_get_pattern_lines(slot, pat_num); - - int ISunVoxLib.sv_get_pattern_tracks(int slot, int pat_num) => sv_get_pattern_tracks(slot, pat_num); - - int ISunVoxLib.sv_get_pattern_x(int slot, int pat_num) => sv_get_pattern_x(slot, pat_num); - - int ISunVoxLib.sv_get_pattern_y(int slot, int pat_num) => sv_get_pattern_y(slot, pat_num); - - int ISunVoxLib.sv_get_sample_rate() => sv_get_sample_rate(); - - int ISunVoxLib.sv_get_song_bpm(int slot) => sv_get_song_bpm(slot); - - int ISunVoxLib.sv_get_song_tpl(int slot) => sv_get_song_tpl(slot); - - int ISunVoxLib.sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags) => sv_get_time_map(slot, start_line, len, dest, flags); - - int ISunVoxLib.sv_init(IntPtr config, int freq, int channels, uint flags) => sv_init(config, freq, channels, flags); - - int ISunVoxLib.sv_load_from_memory(int slot, IntPtr data, uint data_size) => sv_load_from_memory(slot, data, data_size); - - int ISunVoxLib.sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z) => sv_load_module_from_memory(slot, data, data_size, x, y, z); - - int ISunVoxLib.sv_load_module(int slot, IntPtr file_name, int x, int y, int z) => sv_load_module(slot, file_name, x, y, z); - - int ISunVoxLib.sv_load(int slot, IntPtr name) => sv_load(slot, name); - - int ISunVoxLib.sv_lock_slot(int slot) => sv_lock_slot(slot); - - int ISunVoxLib.sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_metamodule_load_from_memory(slot, mod_num, data, data_size); - - int ISunVoxLib.sv_metamodule_load(int slot, int mod_num, IntPtr file_name) => sv_metamodule_load(slot, mod_num, file_name); - - int ISunVoxLib.sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w) => sv_module_curve(slot, mod_num, curve_num, data, len, w); - - int ISunVoxLib.sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z) => sv_new_module(slot, type, name, x, y, z); - - int ISunVoxLib.sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name) => sv_new_pattern(slot, clone, x, y, tracks, lines, icon_seed, name); - - int ISunVoxLib.sv_open_slot(int slot) => sv_open_slot(slot); - - int ISunVoxLib.sv_pattern_mute(int slot, int pat_num, int mute) => sv_pattern_mute(slot, pat_num, mute); - - int ISunVoxLib.sv_pause(int slot) => sv_pause(slot); - - int ISunVoxLib.sv_play_from_beginning(int slot) => sv_play_from_beginning(slot); - - int ISunVoxLib.sv_play(int slot) => sv_play(slot); - - int ISunVoxLib.sv_remove_module(int slot, int mod_num) => sv_remove_module(slot, mod_num); - - int ISunVoxLib.sv_remove_pattern(int slot, int pat_num) => sv_remove_pattern(slot, pat_num); - - int ISunVoxLib.sv_resume(int slot) => sv_resume(slot); - - int ISunVoxLib.sv_rewind(int slot, int line_num) => sv_rewind(slot, line_num); - - int ISunVoxLib.sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory(slot, sampler_module, data, data_size, sample_slot); - - int ISunVoxLib.sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot) => sv_sampler_load(slot, sampler_module, file_name, sample_slot); - - int ISunVoxLib.sv_save(int slot, IntPtr name) => sv_save(slot, name); - - int ISunVoxLib.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) => sv_send_event(slot, track_num, note, vel, module, ctl, ctl_val); - - int ISunVoxLib.sv_set_autostop(int slot, int autostop) => sv_set_autostop(slot, autostop); - - int ISunVoxLib.sv_set_event_t(int slot, int set, int t) => sv_set_event_t(slot, set, t); - - int ISunVoxLib.sv_set_module_color(int slot, int mod_num, int color) => sv_set_module_color(slot, mod_num, color); - - int ISunVoxLib.sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) => sv_set_module_ctl_value(slot, mod_num, ctl_num, val, scaled); - - int ISunVoxLib.sv_set_module_finetune(int slot, int mod_num, int finetune) => sv_set_module_finetune(slot, mod_num, finetune); - - int ISunVoxLib.sv_set_module_name(int slot, int mod_num, IntPtr name) => sv_set_module_name(slot, mod_num, name); - - int ISunVoxLib.sv_set_module_relnote(int slot, int mod_num, int relative_note) => sv_set_module_relnote(slot, mod_num, relative_note); - - int ISunVoxLib.sv_set_module_xy(int slot, int mod_num, int x, int y) => sv_set_module_xy(slot, mod_num, x, y); - - int ISunVoxLib.sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) => sv_set_pattern_event(slot, pat_num, track, line, nn, vv, mm, ccee, xxyy); - - int ISunVoxLib.sv_set_pattern_name(int slot, int pat_num, IntPtr name) => sv_set_pattern_name(slot, pat_num, name); - - int ISunVoxLib.sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) => sv_set_pattern_size(slot, pat_num, tracks, lines); - - int ISunVoxLib.sv_set_pattern_xy(int slot, int pat_num, int x, int y) => sv_set_pattern_xy(slot, pat_num, x, y); - - int ISunVoxLib.sv_set_song_name(int slot, IntPtr name) => sv_set_song_name(slot, name); - - int ISunVoxLib.sv_stop(int slot) => sv_stop(slot); - - int ISunVoxLib.sv_sync_resume(int slot) => sv_sync_resume(slot); - - int ISunVoxLib.sv_unlock_slot(int slot) => sv_unlock_slot(slot); - - int ISunVoxLib.sv_update_input() => sv_update_input(); - - int ISunVoxLib.sv_volume(int slot, int vol) => sv_volume(slot, vol); - - int ISunVoxLib.sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_vplayer_load_from_memory(slot, mod_num, data, data_size); - - int ISunVoxLib.sv_vplayer_load(int slot, int mod_num, IntPtr file_name) => sv_vplayer_load(slot, mod_num, file_name); - - IntPtr ISunVoxLib.sv_get_log(int size) => sv_get_log(size); - - IntPtr ISunVoxLib.sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_name(slot, mod_num, ctl_num); - - IntPtr ISunVoxLib.sv_get_module_inputs(int slot, int mod_num) => sv_get_module_inputs(slot, mod_num); - - IntPtr ISunVoxLib.sv_get_module_name(int slot, int mod_num) => sv_get_module_name(slot, mod_num); - - IntPtr ISunVoxLib.sv_get_module_outputs(int slot, int mod_num) => sv_get_module_outputs(slot, mod_num); - - IntPtr ISunVoxLib.sv_get_module_type(int slot, int mod_num) => sv_get_module_type(slot, mod_num); - - IntPtr ISunVoxLib.sv_get_pattern_data(int slot, int pat_num) => sv_get_pattern_data(slot, pat_num); - - IntPtr ISunVoxLib.sv_get_pattern_name(int slot, int pat_num) => sv_get_pattern_name(slot, pat_num); - - IntPtr ISunVoxLib.sv_get_song_name(int slot) => sv_get_song_name(slot); - - uint ISunVoxLib.sv_get_module_finetune(int slot, int mod_num) => sv_get_module_finetune(slot, mod_num); - - uint ISunVoxLib.sv_get_module_flags(int slot, int mod_num) => sv_get_module_flags(slot, mod_num); - - uint ISunVoxLib.sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read) => sv_get_module_scope2(slot, mod_num, channel, dest_buf, samples_to_read); - - uint ISunVoxLib.sv_get_module_xy(int slot, int mod_num) => sv_get_module_xy(slot, mod_num); - - uint ISunVoxLib.sv_get_song_length_frames(int slot) => sv_get_song_length_frames(slot); - - uint ISunVoxLib.sv_get_song_length_lines(int slot) => sv_get_song_length_lines(slot); - - uint ISunVoxLib.sv_get_ticks_per_second() => sv_get_ticks_per_second(); - - uint ISunVoxLib.sv_get_ticks() => sv_get_ticks(); - - #endregion interface - } -} diff --git a/SunSharp/Version.cs b/SunSharp/LibraryVersion.cs similarity index 62% rename from SunSharp/Version.cs rename to SunSharp/LibraryVersion.cs index 49886a2..6e0c08d 100644 --- a/SunSharp/Version.cs +++ b/SunSharp/LibraryVersion.cs @@ -1,6 +1,6 @@ namespace SunSharp { - public readonly struct Version + public readonly struct LibraryVersion { public byte Major { get; } @@ -8,17 +8,17 @@ public readonly struct Version public byte Minor2 { get; } - public Version(byte major, byte minor, byte minor2) + public LibraryVersion(byte major, byte minor, byte minor2) { Major = major; Minor = minor; Minor2 = minor2; } - public Version(int code) + public LibraryVersion(int code) { - Major = (byte)(code >> 16 & 255); - Minor = (byte)(code >> 8 & 255); + Major = (byte)((code >> 16) & 255); + Minor = (byte)((code >> 8) & 255); Minor2 = (byte)(code & 255); } diff --git a/SunSharp/ModuleFlags.cs b/SunSharp/ModuleFlags.cs index 6a048e4..ebcfb52 100644 --- a/SunSharp/ModuleFlags.cs +++ b/SunSharp/ModuleFlags.cs @@ -14,39 +14,37 @@ public readonly struct ModuleFlags private const int SV_MODULE_OUTPUTS_OFF = 16 + 8; private const uint SV_MODULE_OUTPUTS_MASK = 255u << 16 + 8; - private readonly uint _value; + public uint Value { get; } - public uint Value => _value; - - public bool Exists => (_value & SV_MODULE_FLAG_EXISTS) != 0; + public bool Exists => (Value & SV_MODULE_FLAG_EXISTS) != 0; /// /// This module receives notes and outputs sound. /// - public bool Generator => (_value & SV_MODULE_FLAG_GENERATOR) != 0; + public bool Generator => (Value & SV_MODULE_FLAG_GENERATOR) != 0; /// /// This module receives sound and outputs sound. /// - public bool Effect => (_value & SV_MODULE_FLAG_EFFECT) != 0; + public bool Effect => (Value & SV_MODULE_FLAG_EFFECT) != 0; - public bool Mute => (_value & SV_MODULE_FLAG_MUTE) != 0; - public bool Solo => (_value & SV_MODULE_FLAG_SOLO) != 0; - public bool Bypass => (_value & SV_MODULE_FLAG_BYPASS) != 0; + public bool Mute => (Value & SV_MODULE_FLAG_MUTE) != 0; + public bool Solo => (Value & SV_MODULE_FLAG_SOLO) != 0; + public bool Bypass => (Value & SV_MODULE_FLAG_BYPASS) != 0; /// /// Actual input count may be less or equal. /// - public int InputUpperCount => (int)((_value & SV_MODULE_INPUTS_MASK) >> SV_MODULE_INPUTS_OFF); + public int InputUpperCount => (int)((Value & SV_MODULE_INPUTS_MASK) >> SV_MODULE_INPUTS_OFF); /// /// Actual output count may be less or equal /// - public int OutputUpperCount => (int)((_value & SV_MODULE_OUTPUTS_MASK) >> SV_MODULE_OUTPUTS_OFF); + public int OutputUpperCount => (int)((Value & SV_MODULE_OUTPUTS_MASK) >> SV_MODULE_OUTPUTS_OFF); public ModuleFlags(uint value) { - _value = value; + Value = value; } public static implicit operator ModuleFlags(uint value) diff --git a/SunSharp/Native/ISunVoxLibC.cs b/SunSharp/Native/ISunVoxLibC.cs new file mode 100644 index 0000000..5ca1104 --- /dev/null +++ b/SunSharp/Native/ISunVoxLibC.cs @@ -0,0 +1,478 @@ +#pragma warning disable CA1707 // Identifiers should not contain underscores +#pragma warning disable CA1716 // Identifiers should not match keywords +#pragma warning disable IDE1006 // Naming Styles + +using System; + +namespace SunSharp.Native +{ + public interface ISunVoxLibC + { + /// + /// int sv_init(const char* config, int freq, int channels, uint32_t flags) SUNVOX_FN_ATTR; + /// + int sv_init(IntPtr config, int freq, int channels, uint flags); + + /// + /// int sv_deinit(void) SUNVOX_FN_ATTR; + /// + int sv_deinit(); + + /// + /// int sv_get_sample_rate(void) SUNVOX_FN_ATTR; + /// + int sv_get_sample_rate(); + + /// + /// int sv_update_input(void) SUNVOX_FN_ATTR; + /// + int sv_update_input(); + + /// + /// int sv_audio_callback(void* buf, int frames, int latency, uint32_t out_time); + /// + int sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time); + + /// + /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* in_buf) SUNVOX_FN_ATTR; + /// + int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, + IntPtr in_buf); + + /// + /// int sv_open_slot(int slot) SUNVOX_FN_ATTR; + /// + int sv_open_slot(int slot); + + /// + /// int sv_close_slot(int slot) SUNVOX_FN_ATTR; + /// + int sv_close_slot(int slot); + + /// + /// int sv_lock_slot(int slot) SUNVOX_FN_ATTR; + /// + int sv_lock_slot(int slot); + + /// + /// int sv_unlock_slot(int slot) SUNVOX_FN_ATTR; + /// + int sv_unlock_slot(int slot); + + /// + /// int sv_load(int slot, const char* name) SUNVOX_FN_ATTR; + /// + int sv_load(int slot, IntPtr name); + + /// + /// int sv_load_from_memory(int slot, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// + int sv_load_from_memory(int slot, IntPtr data, uint data_size); + + /// + /// int sv_save(int slot, const char* name) SUNVOX_FN_ATTR; + /// + int sv_save(int slot, IntPtr name); + + /// + /// int sv_play(int slot); + /// + int sv_play(int slot); + + /// + /// int sv_play_from_beginning(int slot); + /// + int sv_play_from_beginning(int slot); + + /// + /// int sv_stop(int slot); + /// + int sv_stop(int slot); + + /// + /// int sv_pause(int slot); + /// + int sv_pause(int slot); + + /// + /// int sv_resume(int slot); + /// + int sv_resume(int slot); + + /// + /// int sv_sync_resume(int slot); + /// + int sv_sync_resume(int slot); + + /// + /// int sv_set_autostop(int slot, int autostop) SUNVOX_FN_ATTR; + /// + int sv_set_autostop(int slot, int autostop); + + /// + /// int sv_get_autostop(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_autostop(int slot); + + /// + /// int sv_end_of_song( int slot) SUNVOX_FN_ATTR; + /// + int sv_end_of_song(int slot); + + /// + /// int sv_rewind( int slot, int line_num) SUNVOX_FN_ATTR; + /// + int sv_rewind(int slot, int line_num); + + /// + /// int sv_volume(int slot, int vol) SUNVOX_FN_ATTR; + /// + int sv_volume(int slot, int vol); + + /// + /// int sv_set_event_t( int slot, int set, int t) SUNVOX_FN_ATTR; + /// + int sv_set_event_t(int slot, int set, int t); + + /// + /// int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) SUNVOX_FN_ATTR; + /// + int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val); + + /// + /// int sv_get_current_line(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_current_line(int slot); + + /// + /// int sv_get_current_line2(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_current_line2(int slot); + + /// + /// int sv_get_current_signal_level(int slot, int channel) SUNVOX_FN_ATTR; + /// + int sv_get_current_signal_level(int slot, int channel); + + /// + /// const char* sv_get_song_name( int slot ) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_song_name(int slot); + + /// + /// int sv_set_song_name( int slot, const char* name ) SUNVOX_FN_ATTR; + /// + int sv_set_song_name(int slot, IntPtr name); + + /// + /// int sv_get_song_bpm(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_song_bpm(int slot); + + /// + /// int sv_get_song_tpl(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_song_tpl(int slot); + + /// + /// uint32_t sv_get_song_length_frames(int slot) SUNVOX_FN_ATTR; + /// + uint sv_get_song_length_frames(int slot); + + /// + /// uint32_t sv_get_song_length_lines(int slot) SUNVOX_FN_ATTR; + /// + uint sv_get_song_length_lines(int slot); + + /// + /// int sv_get_time_map(int slot, int start_line, int len, uint32_t* dest, int flags) SUNVOX_FN_ATTR; + /// + int sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags); + + /// + /// int sv_new_module(int slot, const char* type, const char* name, int x, int y, int z) SUNVOX_FN_ATTR; + /// + int sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z); + + /// + /// int sv_remove_module(int slot, int mod_num) SUNVOX_FN_ATTR; + /// + int sv_remove_module(int slot, int mod_num); + + /// + /// int sv_connect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; + /// + int sv_connect_module(int slot, int source, int destination); + + /// + /// int sv_disconnect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; + /// + int sv_disconnect_module(int slot, int source, int destination); + + /// + /// int sv_load_module(int slot, const char* file_name, int x, int y, int z ) SUNVOX_FN_ATTR; + /// + int sv_load_module(int slot, IntPtr file_name, int x, int y, int z); + + /// + /// int sv_load_module_from_memory(int slot, void* data, uint32_t data_size, int x, int y, int z) SUNVOX_FN_ATTR; + /// + int sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z); + + /// + /// int sv_sampler_load(int slot, int sampler_module, const char* file_name, int sample_slot) SUNVOX_FN_ATTR; + /// + int sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot); + + /// + /// int sv_sampler_load_from_memory(int slot, int sampler_module, void* data, uint32_t data_size, int sample_slot) SUNVOX_FN_ATTR; + /// + int sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot); + + /// + /// int sv_metamodule_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; + /// + int sv_metamodule_load(int slot, int mod_num, IntPtr file_name); + + /// + /// int sv_metamodule_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// + int sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); + + /// + /// int sv_vplayer_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; + /// + int sv_vplayer_load(int slot, int mod_num, IntPtr file_name); + + /// + /// int sv_vplayer_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// + int sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); + + /// + /// int sv_get_number_of_modules(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_number_of_modules(int slot); + + /// + /// int sv_find_module(int slot, const char* name) SUNVOX_FN_ATTR; + /// + int sv_find_module(int slot, IntPtr name); + + /// + /// uint32_t sv_get_module_flags(int slot, int mod_num) SUNVOX_FN_ATTR; + /// + uint sv_get_module_flags(int slot, int mod_num); + + /// + /// int* sv_get_module_inputs( int slot, int mod_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_module_inputs(int slot, int mod_num); + + /// + /// int* sv_get_module_outputs( int slot, int mod_num ) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_module_outputs(int slot, int mod_num); + + /// + /// const char* sv_get_module_name( int slot, int mod_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_module_name(int slot, int mod_num); + + /// + /// int sv_set_module_name( int slot, int mod_num, const char* name ) SUNVOX_FN_ATTR; + /// + int sv_set_module_name(int slot, int mod_num, IntPtr name); + + /// + /// const char* sv_get_module_type( int slot, int mod_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_module_type(int slot, int mod_num); + + /// + /// uint32_t sv_get_module_xy(int slot, int mod_num) SUNVOX_FN_ATTR; + /// + uint sv_get_module_xy(int slot, int mod_num); + + /// + /// int sv_set_module_xy(int slot, int mod_num, int x, int y) SUNVOX_FN_ATTR; + /// + int sv_set_module_xy(int slot, int mod_num, int x, int y); + + /// + /// int sv_get_module_color( int slot, int mod_num) SUNVOX_FN_ATTR; + /// + int sv_get_module_color(int slot, int mod_num); + + /// + /// int sv_set_module_color(int slot, int mod_num, int color) SUNVOX_FN_ATTR; + /// + int sv_set_module_color(int slot, int mod_num, int color); + + /// + /// uint32_t sv_get_module_finetune(int slot, int mod_num) SUNVOX_FN_ATTR; + /// + uint sv_get_module_finetune(int slot, int mod_num); + + /// + /// int sv_set_module_finetune(int slot, int mod_num, int finetune) SUNVOX_FN_ATTR; + /// + int sv_set_module_finetune(int slot, int mod_num, int finetune); + + /// + /// int sv_set_module_relnote(int slot, int mod_num, int relative_note) SUNVOX_FN_ATTR; + /// + int sv_set_module_relnote(int slot, int mod_num, int relative_note); + + /// + /// uint32_t sv_get_module_scope2(int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read) SUNVOX_FN_ATTR; + /// + uint sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read); + + /// + /// int sv_module_curve(int slot, int mod_num, int curve_num, float* data, int len, int w) SUNVOX_FN_ATTR; + /// + int sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w); + + /// + /// int sv_get_number_of_module_ctls(int slot, int mod_num) SUNVOX_FN_ATTR; + /// + int sv_get_number_of_module_ctls(int slot, int mod_num); + + /// + /// const char* sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_module_ctl_name(int slot, int mod_num, int ctl_num); + + /// + /// int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled); + + /// + /// int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) SUNVOX_FN_ATTR; + /// + int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled); + + /// + /// int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled); + + /// + /// int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled); + + /// + /// int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num); + + /// + /// int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num); + + /// + /// int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// + int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num); + + /// + /// int sv_get_number_of_patterns(int slot) SUNVOX_FN_ATTR; + /// + int sv_get_number_of_patterns(int slot); + + /// + /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) SUNVOX_FN_ATTR; + /// + int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name); + + /// + /// int sv_remove_pattern(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + int sv_remove_pattern(int slot, int pat_num); + + /// + /// int sv_find_pattern(int slot, const char* name ) SUNVOX_FN_ATTR; + /// + int sv_find_pattern(int slot, IntPtr name); + + /// + /// int sv_get_pattern_x(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + int sv_get_pattern_x(int slot, int pat_num); + + /// + /// int sv_get_pattern_y(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + int sv_get_pattern_y(int slot, int pat_num); + + /// + /// int sv_set_pattern_xy(int slot, int pat_num, int x, int y) SUNVOX_FN_ATTR; + /// + int sv_set_pattern_xy(int slot, int pat_num, int x, int y); + + /// + /// int sv_get_pattern_tracks(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + int sv_get_pattern_tracks(int slot, int pat_num); + + /// + /// int sv_get_pattern_lines(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + int sv_get_pattern_lines(int slot, int pat_num); + + /// + /// int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) SUNVOX_FN_ATTR; + /// + int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines); + + /// + /// const char* sv_get_pattern_name( int slot, int pat_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_pattern_name(int slot, int pat_num); + + /// + /// int sv_set_pattern_name( int slot, int pat_num, const char* name ) SUNVOX_FN_ATTR; + /// + int sv_set_pattern_name(int slot, int pat_num, IntPtr name); + + /// + /// sunvox_note* sv_get_pattern_data(int slot, int pat_num) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_pattern_data(int slot, int pat_num); + + /// + /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) SUNVOX_FN_ATTR; + /// + int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, + int xxyy); + + /// + /// int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) SUNVOX_FN_ATTR; + /// + int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column); + + /// + /// int sv_pattern_mute(int slot, int pat_num, int mute) SUNVOX_FN_ATTR; + /// + int sv_pattern_mute(int slot, int pat_num, int mute); + + /// + /// uint32_t sv_get_ticks(void) SUNVOX_FN_ATTR; + /// + uint sv_get_ticks(); + + /// + /// uint32_t sv_get_ticks_per_second(void) SUNVOX_FN_ATTR; + /// + uint sv_get_ticks_per_second(); + + /// + /// const char* sv_get_log(int size) SUNVOX_FN_ATTR; + /// + IntPtr sv_get_log(int size); + } +} diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs new file mode 100644 index 0000000..1b18313 --- /dev/null +++ b/SunSharp/Native/Loader/LibraryHandler.cs @@ -0,0 +1,28 @@ +using System; + +namespace SunSharp.Native.Loader +{ + public interface ILibraryHandler + { + public bool IsLibraryLoaded { get; } + + /// + /// A method to be called to load a library and prepare everything. + /// + void LoadLibrary(); + + /// + /// A method to unload the library if loaded, and destroy unmanaged objects. + /// + void UnloadLibrary(); + + /// + /// A method that returns a delegate from a function pointer, found in the loaded library by name.
+ /// Should fail immediately if the method is not found. + ///
+ /// + /// + /// + Delegate GetFunctionByName(string name, Type delegateType); + } +} diff --git a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs new file mode 100644 index 0000000..38d6130 --- /dev/null +++ b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs @@ -0,0 +1,646 @@ +#pragma warning disable CS0649 +#nullable enable + +using System; + +namespace SunSharp.Native.Loader +{ + public sealed partial class NativeProxy : ISunVoxLibC + { + #region delegate definitions + + private delegate IntPtr ReturnsIntPtrTakesInt(int arg1); + + private delegate IntPtr ReturnsIntPtrTakesIntInt(int arg1, int arg2); + + private delegate IntPtr ReturnsIntPtrTakesIntIntInt(int arg1, int arg2, int arg3); + + private delegate int ReturnsIntTakesInt(int arg1); + + private delegate int ReturnsIntTakesIntInt(int arg1, int arg2); + + private delegate int ReturnsIntTakesIntIntInt(int arg1, int arg2, int arg3); + + private delegate int ReturnsIntTakesIntIntIntInt(int arg1, int arg2, int arg3, int arg4); + + private delegate int ReturnsIntTakesIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5); + + private delegate int ReturnsIntTakesIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); + + private delegate int ReturnsIntTakesIntIntIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); + + private delegate int ReturnsIntTakesIntIntIntIntIntIntIntIntPtr(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, IntPtr arg8); + + private delegate int ReturnsIntTakesIntIntIntIntPtrInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5); + + private delegate int ReturnsIntTakesIntIntIntIntPtrIntInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5, int arg6); + + private delegate int ReturnsIntTakesIntIntIntPtr(int arg1, int arg2, IntPtr arg3); + + private delegate int ReturnsIntTakesIntIntIntPtrInt(int arg1, int arg2, IntPtr arg3, int arg4); + + private delegate int ReturnsIntTakesIntIntIntPtrUint(int arg1, int arg2, IntPtr arg3, uint arg4); + + private delegate int ReturnsIntTakesIntIntIntPtrUintInt(int arg1, int arg2, IntPtr arg3, uint arg4, int arg5); + + private delegate int ReturnsIntTakesIntIntPtr(int arg1, IntPtr arg2); + + private delegate int ReturnsIntTakesIntIntPtrIntIntInt(int arg1, IntPtr arg2, int arg3, int arg4, int arg5); + + private delegate int ReturnsIntTakesIntIntPtrIntPtrIntIntInt(int arg1, IntPtr arg2, IntPtr arg3, int arg4, int arg5, int arg6); + + private delegate int ReturnsIntTakesIntIntPtrUint(int arg1, IntPtr arg2, uint arg3); + + private delegate int ReturnsIntTakesIntIntPtrUintIntIntInt(int arg1, IntPtr arg2, uint arg3, int arg4, int arg5, int arg6); + + private delegate int ReturnsIntTakesIntPtrIntIntUint(IntPtr arg1, int arg2, int arg3, uint arg4); + + private delegate int ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr(IntPtr arg1, int arg2, int arg3, uint arg4, int arg5, int arg6, IntPtr arg7); + + private delegate int ReturnsIntTakesVoid(); + + private delegate uint ReturnsUintTakesInt(int arg1); + + private delegate uint ReturnsUintTakesIntInt(int arg1, int arg2); + + private delegate uint ReturnsUintTakesIntIntIntIntPtrUint(int arg1, int arg2, int arg3, IntPtr arg4, uint arg5); + + private delegate uint ReturnsUintTakesVoid(); + + #endregion delegate definitions + + #region delegates + + private ReturnsIntTakesIntPtrIntIntUint? sv_audio_callback; + + private ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr? sv_audio_callback2; + + private ReturnsIntTakesInt? sv_close_slot; + + private ReturnsIntTakesIntIntInt? sv_connect_module; + + private ReturnsIntTakesVoid? sv_deinit; + + private ReturnsIntTakesIntIntInt? sv_disconnect_module; + + private ReturnsIntTakesInt? sv_end_of_song; + + private ReturnsIntTakesIntIntPtr? sv_find_module; + + private ReturnsIntTakesIntIntPtr? sv_find_pattern; + + private ReturnsIntTakesInt? sv_get_autostop; + + private ReturnsIntTakesInt? sv_get_current_line; + + private ReturnsIntTakesInt? sv_get_current_line2; + + private ReturnsIntTakesIntInt? sv_get_current_signal_level; + + private ReturnsIntPtrTakesInt? sv_get_log; + + private ReturnsIntTakesIntInt? sv_get_module_color; + + private ReturnsIntTakesIntIntInt? sv_get_module_ctl_group; + + private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_max; + + private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_min; + + private ReturnsIntPtrTakesIntIntInt? sv_get_module_ctl_name; + + private ReturnsIntTakesIntIntInt? sv_get_module_ctl_offset; + + private ReturnsIntTakesIntIntInt? sv_get_module_ctl_type; + + private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_value; + + private ReturnsUintTakesIntInt? sv_get_module_finetune; + + private ReturnsUintTakesIntInt? sv_get_module_flags; + + private ReturnsIntPtrTakesIntInt? sv_get_module_inputs; + + private ReturnsIntPtrTakesIntInt? sv_get_module_name; + + private ReturnsIntPtrTakesIntInt? sv_get_module_outputs; + + private ReturnsUintTakesIntIntIntIntPtrUint? sv_get_module_scope2; + + private ReturnsIntPtrTakesIntInt? sv_get_module_type; + + private ReturnsUintTakesIntInt? sv_get_module_xy; + + private ReturnsIntTakesIntInt? sv_get_number_of_module_ctls; + + private ReturnsIntTakesInt? sv_get_number_of_modules; + + private ReturnsIntTakesInt? sv_get_number_of_patterns; + + private ReturnsIntPtrTakesIntInt? sv_get_pattern_data; + + private ReturnsIntTakesIntIntIntIntInt? sv_get_pattern_event; + + private ReturnsIntTakesIntInt? sv_get_pattern_lines; + + private ReturnsIntPtrTakesIntInt? sv_get_pattern_name; + + private ReturnsIntTakesIntInt? sv_get_pattern_tracks; + + private ReturnsIntTakesIntInt? sv_get_pattern_x; + + private ReturnsIntTakesIntInt? sv_get_pattern_y; + + private ReturnsIntTakesVoid? sv_get_sample_rate; + + private ReturnsIntTakesInt? sv_get_song_bpm; + + private ReturnsUintTakesInt? sv_get_song_length_frames; + + private ReturnsUintTakesInt? sv_get_song_length_lines; + + private ReturnsIntPtrTakesInt? sv_get_song_name; + + private ReturnsIntTakesInt? sv_get_song_tpl; + + private ReturnsUintTakesVoid? sv_get_ticks; + + private ReturnsUintTakesVoid? sv_get_ticks_per_second; + + private ReturnsIntTakesIntIntIntIntPtrInt? sv_get_time_map; + + private ReturnsIntTakesIntPtrIntIntUint? sv_init; + + private ReturnsIntTakesIntIntPtr? sv_load; + + private ReturnsIntTakesIntIntPtrUint? sv_load_from_memory; + + private ReturnsIntTakesIntIntPtrIntIntInt? sv_load_module; + + private ReturnsIntTakesIntIntPtrUintIntIntInt? sv_load_module_from_memory; + + private ReturnsIntTakesInt? sv_lock_slot; + + private ReturnsIntTakesIntIntIntPtr? sv_metamodule_load; + + private ReturnsIntTakesIntIntIntPtrUint? sv_metamodule_load_from_memory; + + private ReturnsIntTakesIntIntIntIntPtrIntInt? sv_module_curve; + + private ReturnsIntTakesIntIntPtrIntPtrIntIntInt? sv_new_module; + + private ReturnsIntTakesIntIntIntIntIntIntIntIntPtr? sv_new_pattern; + + private ReturnsIntTakesInt? sv_open_slot; + + private ReturnsIntTakesIntIntInt? sv_pattern_mute; + + private ReturnsIntTakesInt? sv_pause; + + private ReturnsIntTakesInt? sv_play; + + private ReturnsIntTakesInt? sv_play_from_beginning; + + private ReturnsIntTakesIntInt? sv_remove_module; + + private ReturnsIntTakesIntInt? sv_remove_pattern; + + private ReturnsIntTakesInt? sv_resume; + + private ReturnsIntTakesIntInt? sv_rewind; + + private ReturnsIntTakesIntIntIntPtrInt? sv_sampler_load; + + private ReturnsIntTakesIntIntIntPtrUintInt? sv_sampler_load_from_memory; + + private ReturnsIntTakesIntIntPtr? sv_save; + + private ReturnsIntTakesIntIntIntIntIntIntInt? sv_send_event; + + private ReturnsIntTakesIntInt? sv_set_autostop; + + private ReturnsIntTakesIntIntInt? sv_set_event_t; + + private ReturnsIntTakesIntIntInt? sv_set_module_color; + + private ReturnsIntTakesIntIntIntIntInt? sv_set_module_ctl_value; + + private ReturnsIntTakesIntIntInt? sv_set_module_finetune; + + private ReturnsIntTakesIntIntIntPtr? sv_set_module_name; + + private ReturnsIntTakesIntIntInt? sv_set_module_relnote; + + private ReturnsIntTakesIntIntIntInt? sv_set_module_xy; + + private ReturnsIntTakesIntIntIntIntIntIntIntIntInt? sv_set_pattern_event; + + private ReturnsIntTakesIntIntIntPtr? sv_set_pattern_name; + + private ReturnsIntTakesIntIntIntInt? sv_set_pattern_size; + + private ReturnsIntTakesIntIntIntInt? sv_set_pattern_xy; + + private ReturnsIntTakesIntIntPtr? sv_set_song_name; + + private ReturnsIntTakesInt? sv_stop; + + private ReturnsIntTakesInt? sv_sync_resume; + + private ReturnsIntTakesInt? sv_unlock_slot; + + private ReturnsIntTakesVoid? sv_update_input; + + private ReturnsIntTakesIntInt? sv_volume; + + private ReturnsIntTakesIntIntIntPtr? sv_vplayer_load; + + private ReturnsIntTakesIntIntIntPtrUint? sv_vplayer_load_from_memory; + + #endregion delegates + + #region interface + + int ISunVoxLibC.sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time) => sv_audio_callback?.Invoke(buf, frames, latency, out_time) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf) => sv_audio_callback2?.Invoke(buf, frames, latency, out_time, in_type, in_channels, in_buf) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_close_slot(int slot) => sv_close_slot?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_connect_module(int slot, int source, int destination) => sv_connect_module?.Invoke(slot, source, destination) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_deinit() => sv_deinit?.Invoke() ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_disconnect_module(int slot, int source, int destination) => sv_disconnect_module?.Invoke(slot, source, destination) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_end_of_song(int slot) => sv_end_of_song?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_find_module(int slot, IntPtr name) => sv_find_module?.Invoke(slot, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_find_pattern(int slot, IntPtr name) => sv_find_pattern?.Invoke(slot, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_autostop(int slot) => sv_get_autostop?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_current_line(int slot) => sv_get_current_line?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_current_line2(int slot) => sv_get_current_line2?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_current_signal_level(int slot, int channel) => sv_get_current_signal_level?.Invoke(slot, channel) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_log(int size) => sv_get_log?.Invoke(size) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_color(int slot, int mod_num) => sv_get_module_color?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_group?.Invoke(slot, mod_num, ctl_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_max?.Invoke(slot, mod_num, ctl_num, scaled) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_min?.Invoke(slot, mod_num, ctl_num, scaled) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_name?.Invoke(slot, mod_num, ctl_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_offset?.Invoke(slot, mod_num, ctl_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) => sv_get_module_ctl_type?.Invoke(slot, mod_num, ctl_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) => sv_get_module_ctl_value?.Invoke(slot, mod_num, ctl_num, scaled) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_module_finetune(int slot, int mod_num) => sv_get_module_finetune?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_module_flags(int slot, int mod_num) => sv_get_module_flags?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_module_inputs(int slot, int mod_num) => sv_get_module_inputs?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_module_name(int slot, int mod_num) => sv_get_module_name?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_module_outputs(int slot, int mod_num) => sv_get_module_outputs?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read) => sv_get_module_scope2?.Invoke(slot, mod_num, channel, dest_buf, samples_to_read) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_module_type(int slot, int mod_num) => sv_get_module_type?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_module_xy(int slot, int mod_num) => sv_get_module_xy?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_number_of_module_ctls(int slot, int mod_num) => sv_get_number_of_module_ctls?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_number_of_modules(int slot) => sv_get_number_of_modules?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_number_of_patterns(int slot) => sv_get_number_of_patterns?.Invoke(slot) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_pattern_data(int slot, int pat_num) => sv_get_pattern_data?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) => sv_get_pattern_event?.Invoke(slot, pat_num, track, line, column) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_pattern_lines(int slot, int pat_num) => sv_get_pattern_lines?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_pattern_name(int slot, int pat_num) => sv_get_pattern_name?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_pattern_tracks(int slot, int pat_num) => sv_get_pattern_tracks?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_pattern_x(int slot, int pat_num) => sv_get_pattern_x?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_pattern_y(int slot, int pat_num) => sv_get_pattern_y?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_sample_rate() => sv_get_sample_rate?.Invoke() ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_song_bpm(int slot) => sv_get_song_bpm?.Invoke(slot) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_song_length_frames(int slot) => sv_get_song_length_frames?.Invoke(slot) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_song_length_lines(int slot) => sv_get_song_length_lines?.Invoke(slot) ?? throw GetNoDelegateException(); + + IntPtr ISunVoxLibC.sv_get_song_name(int slot) => sv_get_song_name?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_song_tpl(int slot) => sv_get_song_tpl?.Invoke(slot) ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_ticks() => sv_get_ticks?.Invoke() ?? throw GetNoDelegateException(); + + uint ISunVoxLibC.sv_get_ticks_per_second() => sv_get_ticks_per_second?.Invoke() ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags) => sv_get_time_map?.Invoke(slot, start_line, len, dest, flags) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_init(IntPtr config, int freq, int channels, uint flags) => sv_init?.Invoke(config, freq, channels, flags) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_load(int slot, IntPtr name) => sv_load?.Invoke(slot, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_load_from_memory(int slot, IntPtr data, uint data_size) => sv_load_from_memory?.Invoke(slot, data, data_size) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_load_module(int slot, IntPtr file_name, int x, int y, int z) => sv_load_module?.Invoke(slot, file_name, x, y, z) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z) => sv_load_module_from_memory?.Invoke(slot, data, data_size, x, y, z) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_lock_slot(int slot) => sv_lock_slot?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_metamodule_load(int slot, int mod_num, IntPtr file_name) => sv_metamodule_load?.Invoke(slot, mod_num, file_name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_metamodule_load_from_memory?.Invoke(slot, mod_num, data, data_size) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w) => sv_module_curve?.Invoke(slot, mod_num, curve_num, data, len, w) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z) => sv_new_module?.Invoke(slot, type, name, x, y, z) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name) => sv_new_pattern?.Invoke(slot, clone, x, y, tracks, lines, icon_seed, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_open_slot(int slot) => sv_open_slot?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_pattern_mute(int slot, int pat_num, int mute) => sv_pattern_mute?.Invoke(slot, pat_num, mute) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_pause(int slot) => sv_pause?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_play(int slot) => sv_play?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_play_from_beginning(int slot) => sv_play_from_beginning?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_remove_module(int slot, int mod_num) => sv_remove_module?.Invoke(slot, mod_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_remove_pattern(int slot, int pat_num) => sv_remove_pattern?.Invoke(slot, pat_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_resume(int slot) => sv_resume?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_rewind(int slot, int line_num) => sv_rewind?.Invoke(slot, line_num) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot) => sv_sampler_load?.Invoke(slot, sampler_module, file_name, sample_slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory?.Invoke(slot, sampler_module, data, data_size, sample_slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_save(int slot, IntPtr name) => sv_save?.Invoke(slot, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) => sv_send_event?.Invoke(slot, track_num, note, vel, module, ctl, ctl_val) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_autostop(int slot, int autostop) => sv_set_autostop?.Invoke(slot, autostop) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_event_t(int slot, int set, int t) => sv_set_event_t?.Invoke(slot, set, t) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_color(int slot, int mod_num, int color) => sv_set_module_color?.Invoke(slot, mod_num, color) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) => sv_set_module_ctl_value?.Invoke(slot, mod_num, ctl_num, val, scaled) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_finetune(int slot, int mod_num, int finetune) => sv_set_module_finetune?.Invoke(slot, mod_num, finetune) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_name(int slot, int mod_num, IntPtr name) => sv_set_module_name?.Invoke(slot, mod_num, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_relnote(int slot, int mod_num, int relative_note) => sv_set_module_relnote?.Invoke(slot, mod_num, relative_note) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_module_xy(int slot, int mod_num, int x, int y) => sv_set_module_xy?.Invoke(slot, mod_num, x, y) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) => sv_set_pattern_event?.Invoke(slot, pat_num, track, line, nn, vv, mm, ccee, xxyy) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_pattern_name(int slot, int pat_num, IntPtr name) => sv_set_pattern_name?.Invoke(slot, pat_num, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) => sv_set_pattern_size?.Invoke(slot, pat_num, tracks, lines) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_pattern_xy(int slot, int pat_num, int x, int y) => sv_set_pattern_xy?.Invoke(slot, pat_num, x, y) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_set_song_name(int slot, IntPtr name) => sv_set_song_name?.Invoke(slot, name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_stop(int slot) => sv_stop?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_sync_resume(int slot) => sv_sync_resume?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_unlock_slot(int slot) => sv_unlock_slot?.Invoke(slot) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_update_input() => sv_update_input?.Invoke() ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_volume(int slot, int vol) => sv_volume?.Invoke(slot, vol) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_vplayer_load(int slot, int mod_num, IntPtr file_name) => sv_vplayer_load?.Invoke(slot, mod_num, file_name) ?? throw GetNoDelegateException(); + + int ISunVoxLibC.sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) => sv_vplayer_load_from_memory?.Invoke(slot, mod_num, data, data_size) ?? throw GetNoDelegateException(); + + #endregion interface + + private void LoadInternal() + { + sv_audio_callback = null; + sv_audio_callback2 = null; + sv_close_slot = null; + sv_connect_module = null; + sv_deinit = null; + sv_disconnect_module = null; + sv_end_of_song = null; + sv_find_module = null; + sv_find_pattern = null; + sv_get_autostop = null; + sv_get_current_line = null; + sv_get_current_line2 = null; + sv_get_current_signal_level = null; + sv_get_log = null; + sv_get_module_color = null; + sv_get_module_ctl_group = null; + sv_get_module_ctl_max = null; + sv_get_module_ctl_min = null; + sv_get_module_ctl_name = null; + sv_get_module_ctl_offset = null; + sv_get_module_ctl_type = null; + sv_get_module_ctl_value = null; + sv_get_module_finetune = null; + sv_get_module_flags = null; + sv_get_module_inputs = null; + sv_get_module_name = null; + sv_get_module_outputs = null; + sv_get_module_scope2 = null; + sv_get_module_type = null; + sv_get_module_xy = null; + sv_get_number_of_module_ctls = null; + sv_get_number_of_modules = null; + sv_get_number_of_patterns = null; + sv_get_pattern_data = null; + sv_get_pattern_event = null; + sv_get_pattern_lines = null; + sv_get_pattern_name = null; + sv_get_pattern_tracks = null; + sv_get_pattern_x = null; + sv_get_pattern_y = null; + sv_get_sample_rate = null; + sv_get_song_bpm = null; + sv_get_song_length_frames = null; + sv_get_song_length_lines = null; + sv_get_song_name = null; + sv_get_song_tpl = null; + sv_get_ticks = null; + sv_get_ticks_per_second = null; + sv_get_time_map = null; + sv_init = null; + sv_load = null; + sv_load_from_memory = null; + sv_load_module = null; + sv_load_module_from_memory = null; + sv_lock_slot = null; + sv_metamodule_load = null; + sv_metamodule_load_from_memory = null; + sv_module_curve = null; + sv_new_module = null; + sv_new_pattern = null; + sv_open_slot = null; + sv_pattern_mute = null; + sv_pause = null; + sv_play = null; + sv_play_from_beginning = null; + sv_remove_module = null; + sv_remove_pattern = null; + sv_resume = null; + sv_rewind = null; + sv_sampler_load = null; + sv_sampler_load_from_memory = null; + sv_save = null; + sv_send_event = null; + sv_set_autostop = null; + sv_set_event_t = null; + sv_set_module_color = null; + sv_set_module_ctl_value = null; + sv_set_module_finetune = null; + sv_set_module_name = null; + sv_set_module_relnote = null; + sv_set_module_xy = null; + sv_set_pattern_event = null; + sv_set_pattern_name = null; + sv_set_pattern_size = null; + sv_set_pattern_xy = null; + sv_set_song_name = null; + sv_stop = null; + sv_sync_resume = null; + sv_unlock_slot = null; + sv_update_input = null; + sv_volume = null; + sv_vplayer_load = null; + sv_vplayer_load_from_memory = null; + } + + private void UnloadInternal() + { + sv_audio_callback = (ReturnsIntTakesIntPtrIntIntUint)_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsIntTakesIntPtrIntIntUint)); + sv_audio_callback2 = (ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)); + sv_close_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsIntTakesInt)); + sv_connect_module = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsIntTakesIntIntInt)); + sv_deinit = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_deinit", typeof(ReturnsIntTakesVoid)); + sv_disconnect_module = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsIntTakesIntIntInt)); + sv_end_of_song = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsIntTakesInt)); + sv_find_module = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_find_module", typeof(ReturnsIntTakesIntIntPtr)); + sv_find_pattern = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsIntTakesIntIntPtr)); + sv_get_autostop = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsIntTakesInt)); + sv_get_current_line = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsIntTakesInt)); + sv_get_current_line2 = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsIntTakesInt)); + sv_get_current_signal_level = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsIntTakesIntInt)); + sv_get_log = (ReturnsIntPtrTakesInt)_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesInt)); + sv_get_module_color = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsIntTakesIntInt)); + sv_get_module_ctl_group = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsIntTakesIntIntInt)); + sv_get_module_ctl_max = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsIntTakesIntIntIntInt)); + sv_get_module_ctl_min = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsIntTakesIntIntIntInt)); + sv_get_module_ctl_name = (ReturnsIntPtrTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesIntIntInt)); + sv_get_module_ctl_offset = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsIntTakesIntIntInt)); + sv_get_module_ctl_type = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsIntTakesIntIntInt)); + sv_get_module_ctl_value = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsIntTakesIntIntIntInt)); + sv_get_module_finetune = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsUintTakesIntInt)); + sv_get_module_flags = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsUintTakesIntInt)); + sv_get_module_inputs = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_module_name = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_module_outputs = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_module_scope2 = (ReturnsUintTakesIntIntIntIntPtrUint)_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsUintTakesIntIntIntIntPtrUint)); + sv_get_module_type = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_module_xy = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsUintTakesIntInt)); + sv_get_number_of_module_ctls = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsIntTakesIntInt)); + sv_get_number_of_modules = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsIntTakesInt)); + sv_get_number_of_patterns = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsIntTakesInt)); + sv_get_pattern_data = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_pattern_event = (ReturnsIntTakesIntIntIntIntInt)_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsIntTakesIntIntIntIntInt)); + sv_get_pattern_lines = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsIntTakesIntInt)); + sv_get_pattern_name = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesIntInt)); + sv_get_pattern_tracks = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsIntTakesIntInt)); + sv_get_pattern_x = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsIntTakesIntInt)); + sv_get_pattern_y = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsIntTakesIntInt)); + sv_get_sample_rate = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsIntTakesVoid)); + sv_get_song_bpm = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsIntTakesInt)); + sv_get_song_length_frames = (ReturnsUintTakesInt)_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsUintTakesInt)); + sv_get_song_length_lines = (ReturnsUintTakesInt)_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsUintTakesInt)); + sv_get_song_name = (ReturnsIntPtrTakesInt)_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesInt)); + sv_get_song_tpl = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsIntTakesInt)); + sv_get_ticks = (ReturnsUintTakesVoid)_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsUintTakesVoid)); + sv_get_ticks_per_second = (ReturnsUintTakesVoid)_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsUintTakesVoid)); + sv_get_time_map = (ReturnsIntTakesIntIntIntIntPtrInt)_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsIntTakesIntIntIntIntPtrInt)); + sv_init = (ReturnsIntTakesIntPtrIntIntUint)_handler.GetFunctionByName("sv_init", typeof(ReturnsIntTakesIntPtrIntIntUint)); + sv_load = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_load", typeof(ReturnsIntTakesIntIntPtr)); + sv_load_from_memory = (ReturnsIntTakesIntIntPtrUint)_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsIntTakesIntIntPtrUint)); + sv_load_module = (ReturnsIntTakesIntIntPtrIntIntInt)_handler.GetFunctionByName("sv_load_module", typeof(ReturnsIntTakesIntIntPtrIntIntInt)); + sv_load_module_from_memory = (ReturnsIntTakesIntIntPtrUintIntIntInt)_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsIntTakesIntIntPtrUintIntIntInt)); + sv_lock_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsIntTakesInt)); + sv_metamodule_load = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsIntTakesIntIntIntPtr)); + sv_metamodule_load_from_memory = (ReturnsIntTakesIntIntIntPtrUint)_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUint)); + sv_module_curve = (ReturnsIntTakesIntIntIntIntPtrIntInt)_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsIntTakesIntIntIntIntPtrIntInt)); + sv_new_module = (ReturnsIntTakesIntIntPtrIntPtrIntIntInt)_handler.GetFunctionByName("sv_new_module", typeof(ReturnsIntTakesIntIntPtrIntPtrIntIntInt)); + sv_new_pattern = (ReturnsIntTakesIntIntIntIntIntIntIntIntPtr)_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsIntTakesIntIntIntIntIntIntIntIntPtr)); + sv_open_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsIntTakesInt)); + sv_pattern_mute = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsIntTakesIntIntInt)); + sv_pause = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_pause", typeof(ReturnsIntTakesInt)); + sv_play = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_play", typeof(ReturnsIntTakesInt)); + sv_play_from_beginning = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsIntTakesInt)); + sv_remove_module = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsIntTakesIntInt)); + sv_remove_pattern = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsIntTakesIntInt)); + sv_resume = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_resume", typeof(ReturnsIntTakesInt)); + sv_rewind = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_rewind", typeof(ReturnsIntTakesIntInt)); + sv_sampler_load = (ReturnsIntTakesIntIntIntPtrInt)_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsIntTakesIntIntIntPtrInt)); + sv_sampler_load_from_memory = (ReturnsIntTakesIntIntIntPtrUintInt)_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUintInt)); + sv_save = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_save", typeof(ReturnsIntTakesIntIntPtr)); + sv_send_event = (ReturnsIntTakesIntIntIntIntIntIntInt)_handler.GetFunctionByName("sv_send_event", typeof(ReturnsIntTakesIntIntIntIntIntIntInt)); + sv_set_autostop = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsIntTakesIntInt)); + sv_set_event_t = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsIntTakesIntIntInt)); + sv_set_module_color = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsIntTakesIntIntInt)); + sv_set_module_ctl_value = (ReturnsIntTakesIntIntIntIntInt)_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsIntTakesIntIntIntIntInt)); + sv_set_module_finetune = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsIntTakesIntIntInt)); + sv_set_module_name = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsIntTakesIntIntIntPtr)); + sv_set_module_relnote = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsIntTakesIntIntInt)); + sv_set_module_xy = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsIntTakesIntIntIntInt)); + sv_set_pattern_event = (ReturnsIntTakesIntIntIntIntIntIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsIntTakesIntIntIntIntIntIntIntIntInt)); + sv_set_pattern_name = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsIntTakesIntIntIntPtr)); + sv_set_pattern_size = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsIntTakesIntIntIntInt)); + sv_set_pattern_xy = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsIntTakesIntIntIntInt)); + sv_set_song_name = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsIntTakesIntIntPtr)); + sv_stop = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_stop", typeof(ReturnsIntTakesInt)); + sv_sync_resume = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsIntTakesInt)); + sv_unlock_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsIntTakesInt)); + sv_update_input = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_update_input", typeof(ReturnsIntTakesVoid)); + sv_volume = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_volume", typeof(ReturnsIntTakesIntInt)); + sv_vplayer_load = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsIntTakesIntIntIntPtr)); + sv_vplayer_load_from_memory = (ReturnsIntTakesIntIntIntPtrUint)_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUint)); + } + } +} diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs new file mode 100644 index 0000000..408453e --- /dev/null +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -0,0 +1,77 @@ +using System; + +namespace SunSharp.Native.Loader +{ + public sealed partial class NativeProxy + { + public bool IsLoaded { get; private set; } + + private readonly object _lock = new object(); + private readonly ILibraryHandler _handler; + + public NativeProxy(ILibraryHandler handler) + { + _handler = handler; + + if (handler.IsLibraryLoaded) + Load(); + } + + public void Load() + { + lock (_lock) + { + try + { + if (!_handler.IsLibraryLoaded) + _handler.LoadLibrary(); + } + catch (Exception) + { + _handler.UnloadLibrary(); + throw; + } + + LoadInternal(); + IsLoaded = true; + } + } + + public void Unload() + { + lock (_lock) + { + UnloadInternal(); + _handler.UnloadLibrary(); + IsLoaded = false; + } + } + + private Exception GetNoDelegateException() + { + string message; + try + { + lock (_lock) + { + if (_handler.IsLibraryLoaded && IsLoaded) + message = "Missing delegate. Library is loaded, proxy is loaded."; + else if (_handler.IsLibraryLoaded && !IsLoaded) + message = "Missing delegate. Library is loaded, proxy is not loaded."; + else if (!_handler.IsLibraryLoaded && IsLoaded) + message = "Missing delegate. Library is not loaded, proxy is loaded."; + else if (!_handler.IsLibraryLoaded && !IsLoaded) + message = "Missing delegate. Library is not loaded, proxy is not loaded."; + else + message = "Missing delegate, and library status is unknown."; + } + } + catch (Exception ex) + { + return new InvalidOperationException("Missing delegate. Library state is unknown.", ex); + } + + return new InvalidOperationException(message); + } + } +} diff --git a/SunSharp/Native/SunVoxLibNative.Modules.cs b/SunSharp/Native/SunVoxLibNative.Modules.cs new file mode 100644 index 0000000..29865a3 --- /dev/null +++ b/SunSharp/Native/SunVoxLibNative.Modules.cs @@ -0,0 +1,483 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Native +{ + public partial class SunVoxLibNative + { + /// + public void ConnectModule(int slotId, int source, int destination) + { + var ret = _lib.sv_connect_module(slotId, source, destination); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_connect_module)); + } + + /// + public void DisconnectModule(int slotId, int source, int destination) + { + var ret = _lib.sv_disconnect_module(slotId, source, destination); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_disconnect_module)); + } + + /// + public int FindModule(int slotId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_find_module(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < -1) + throw new SunVoxException(ret, nameof(_lib.sv_find_module)); + + return ret; + } + + /// + public (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId) + { + var ret = _lib.sv_get_module_color(slotId, moduleId); + var red = (byte)((ret) & 0xFF); + var green = (byte)((ret >> 8) & 0xFF); + var blue = (byte)((ret >> 16) & 0xFF); + return (red, green, blue); + } + + /// + public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) + { + var color = r & (g << 8) & (b << 16); + var ret = _lib.sv_set_module_color(slotId, moduleId, color); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_color)); + } + + /// + public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) + { + var ptr = _lib.sv_get_module_ctl_name(slotId, moduleId, controllerId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) + { + return _lib.sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); + } + + /// + public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) + { + return _lib.sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); + } + + /// + public int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) + { + return _lib.sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); + } + + /// + public int GetModuleControllerOffset(int slotId, int moduleId, int controllerId) + { + return _lib.sv_get_module_ctl_offset(slotId, moduleId, controllerId); + } + + /// + public ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId) + { + var ret = _lib.sv_get_module_ctl_type(slotId, moduleId, controllerId); + if (ret < 0 || ret > 1) + throw new SunVoxException(ret, nameof(_lib.sv_get_module_ctl_type)); + + return (ControllerType)ret; + } + + /// + public int GetModuleControllerGroup(int slotId, int moduleId, int controllerId) + { + return _lib.sv_get_module_ctl_group(slotId, moduleId, controllerId); + } + + /// + public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode) + { + var ret = _lib.sv_set_module_ctl_value(slotId, moduleId, controllerId, value, (int)scalingMode); + if (ret != 0) + throw new SunVoxException(0, nameof(_lib.sv_set_module_ctl_value)); + } + + /// + public FineTunePair GetModuleFineTune(int slotId, int moduleId) + { + var (fineTune, relativeNote) = Helper.SplitValueToFineTune(_lib.sv_get_module_finetune(slotId, moduleId)); + return new FineTunePair(fineTune, relativeNote); + } + + /// + public void SetModuleFineTune(int slotId, int moduleId, int fineTune) + { + var ret = _lib.sv_set_module_finetune(slotId, moduleId, fineTune); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_finetune)); + } + + /// + public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) + { + var ret = _lib.sv_set_module_relnote(slotId, moduleId, relativeNote); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_relnote)); + } + + /// + public ModuleFlags GetModuleFlags(int slotId, int moduleId) + { + return _lib.sv_get_module_flags(slotId, moduleId); + } + + /// + public bool GetModuleExists(int slotId, int moduleId) + { + return GetModuleFlags(slotId, moduleId).Exists; + } + + /// + public int[] GetModuleInputs(int slotId, int moduleId) + { + var count = GetModuleFlags(slotId, moduleId).InputUpperCount; + if (count == 0) + return Array.Empty(); + + var ptr = _lib.sv_get_module_inputs(slotId, moduleId); + try + { + return Helper.CopyIntArraySkipNegativeOnes(ptr, count); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public string? GetModuleName(int slotId, int moduleId) + { + var ptr = _lib.sv_get_module_name(slotId, moduleId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public void SetModuleName(int slotId, int moduleId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + try + { + var ret = _lib.sv_set_module_name(slotId, moduleId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_name)); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public string? GetModuleType(int slotId, int moduleId) + { + var ptr = _lib.sv_get_module_type(slotId, moduleId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public int[] GetModuleOutputs(int slotId, int moduleId) + { + var count = GetModuleFlags(slotId, moduleId).OutputUpperCount; + if (count == 0) + return Array.Empty(); + + var ptr = _lib.sv_get_module_outputs(slotId, moduleId); + try + { + return Helper.CopyIntArraySkipNegativeOnes(ptr, count); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public int ReadModuleScope(int slotId, int moduleId, int channel, short[] buffer) + { + var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); + var ptr = handle.AddrOfPinnedObject(); + try + { + return (int)_lib.sv_get_module_scope2(slotId, moduleId, channel, ptr, (uint)buffer.Length); + } + finally + { + handle.Free(); + } + } + + /// + public (int x, int y) GetModulePosition(int slotId, int moduleId) + { + return Helper.SplitValueTo2DPosition(_lib.sv_get_module_xy(slotId, moduleId)); + } + + /// + public void SetModulePosition(int slotId, int moduleId, int x, int y) + { + var ret = _lib.sv_set_module_xy(slotId, moduleId, x, y); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_xy)); + } + + /// + public int GetUpperModuleCount(int slotId) + { + var ret = _lib.sv_get_number_of_modules(slotId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_modules)); + return ret; + } + + /// + public int GetModuleControllerCount(int slotId, int moduleId) + { + var ret = _lib.sv_get_number_of_module_ctls(slotId, moduleId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_module_ctls)); + return ret; + } + + /// + public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_load_module(slotId, ptr, x, y, z); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_load_module)); + return ret; + } + + /// + public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_load_module_from_memory(slotId, handle.AddrOfPinnedObject(), (uint)data.Length, x, y, z); + } + finally + { + handle.Free(); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_load_module_from_memory)); + return ret; + } + + /// + public int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_module_curve(slotId, moduleId, curve, handle.AddrOfPinnedObject(), data.Length, 1); + } + finally + { + handle.Free(); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + return ret; + } + + /// + public int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_module_curve(slotId, moduleId, curve, handle.AddrOfPinnedObject(), data.Length, 0); + } + finally + { + handle.Free(); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + return ret; + } + + /// + public int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, + int z = 0) + { + var typePtr = Marshal.StringToHGlobalAnsi(type); + var namePtr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_new_module(slotId, typePtr, namePtr, x, y, z); + } + finally + { + Marshal.FreeHGlobal(typePtr); + Marshal.FreeHGlobal(namePtr); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_new_module)); + return ret; + } + + /// + public void RemoveModule(int slotId, int moduleId) + { + var ret = _lib.sv_remove_module(slotId, moduleId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_remove_module)); + } + + /// + public void LoadSamplerSample(int slotId, int moduleId, string path, + int sampleSlot = -1) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_sampler_load(slotId, moduleId, ptr, sampleSlot); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_sampler_load)); + } + + /// + public void LoadSamplerSample(int slotId, int moduleId, byte[] data, + int sampleSlot = -1) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_sampler_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length, + sampleSlot); + } + finally + { + handle.Free(); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_sampler_load_from_memory)); + } + + /// + public void LoadIntoMetaModule(int slotId, int moduleId, string path) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_metamodule_load(slotId, moduleId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load)); + } + + /// + public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_metamodule_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length); + } + finally + { + handle.Free(); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load_from_memory)); + } + + /// + public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_vplayer_load(slotId, moduleId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load)); + } + + /// + public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_vplayer_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length); + } + finally + { + handle.Free(); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load_from_memory)); + } + } +} diff --git a/SunSharp/Native/SunVoxLibNative.Patterns.cs b/SunSharp/Native/SunVoxLibNative.Patterns.cs new file mode 100644 index 0000000..93030e4 --- /dev/null +++ b/SunSharp/Native/SunVoxLibNative.Patterns.cs @@ -0,0 +1,225 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Native +{ + public partial class SunVoxLibNative + { + /// + public int CreatePattern(int slotId, int? patternToCloneId, int x, int y, int tracks, + int lines, int? iconSeed, string? name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_new_pattern(slotId, patternToCloneId ?? -1, x, y, tracks, lines, iconSeed ?? 0, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + return ret; + } + + /// + public void RemovePattern(int slotId, int patternId) + { + var ret = _lib.sv_remove_pattern(slotId, patternId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern)); + } + + /// + public int GetUpperPatternCount(int slotId) + { + var ret = _lib.sv_get_number_of_patterns(slotId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns)); + return ret; + } + + /// + public int FindPattern(int slotId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_find_pattern(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < -1) + throw new SunVoxException(ret, nameof(_lib.sv_find_pattern)); + + return ret; + } + + /// + public int GetPatternEventValue(int slotId, int patternId, int track, int line, + Column column) + { + var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event)); + return ret; + } + + /// + public string? GetPatternName(int slotId, int patternId) + { + var ptr = _lib.sv_get_pattern_name(slotId, patternId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public void SetPatternName(int slotId, int patternId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + try + { + var ret = _lib.sv_set_pattern_name(slotId, patternId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name)); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public bool GetPatternExists(int slotId, int patternId) + { + return GetPatternLines(slotId, patternId) > 0; + } + + /// + public int GetPatternLines(int slotId, int patternId) + { + var ret = _lib.sv_get_pattern_lines(slotId, patternId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines)); + return ret; + } + + /// + public int GetPatternTracks(int slotId, int patternId) + { + var ret = _lib.sv_get_pattern_tracks(slotId, patternId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks)); + return ret; + } + + /// + public void SetPatternSize(int slotId, int patternId, int? tracks = null, + int? lines = null) + { + var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size)); + } + + /// + public (int x, int y) GetPatternPosition(int slotId, int patternId) + { + return (_lib.sv_get_pattern_x(slotId, patternId), _lib.sv_get_pattern_y(slotId, patternId)); + } + + /// + public int GetPatternX(int slotId, int patternId) + { + return _lib.sv_get_pattern_x(slotId, patternId); + } + + /// + public int GetPatternY(int slotId, int patternId) + { + return _lib.sv_get_pattern_y(slotId, patternId); + } + + /// + public void SetPatternPosition(int slotId, int patternId, int x, int y) + { + var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy)); + } + + /// + public PatternEvent[]? GetPatternData(int slotId, int patternId) + { + if (!GetPatternExists(slotId, patternId)) + return null; + + var lines = GetPatternLines(slotId, patternId); + var tracks = GetPatternTracks(slotId, patternId); + + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + return null; + try + { + var arr = new PatternEvent[lines * tracks]; + for (var i = 0; i < lines * tracks; i++) + arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); + return arr; + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public void SetPatternData(int slotId, int patternId, PatternEvent[] data) + { + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + throw new SunVoxException(ptr.ToInt32(), nameof(_lib.sv_get_pattern_data)); + + var lines = GetPatternLines(slotId, patternId); + var tracks = GetPatternTracks(slotId, patternId); + + var minSize = Math.Min(lines * tracks, data.Length); + + for (var i = 0; i < minSize; i++) + { + Marshal.WriteInt64(ptr + i * sizeof(ulong), unchecked((long)data[i].Data)); + } + } + + /// + public bool SetPatternMute(int slotId, int patternId, bool muted) + { + var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + return ret == 1; + } + + /// + public void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + { + var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } + + /// + public void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev) + { + var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } + } +} diff --git a/SunSharp/Native/SunVoxLibNative.cs b/SunSharp/Native/SunVoxLibNative.cs new file mode 100644 index 0000000..ec8ca40 --- /dev/null +++ b/SunSharp/Native/SunVoxLibNative.cs @@ -0,0 +1,477 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Native +{ + public partial class SunVoxLibNative : ISunVoxLib + { + private readonly ISunVoxLibC _lib; + + public SunVoxLibNative(ISunVoxLibC nativeLibrary) + { + _lib = nativeLibrary; + } + + /// + public LibraryVersion Initialize(int sampleRate, string? config = null, + AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) + { + var ptr = Marshal.StringToHGlobalAnsi(config); + try + { + var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_init)); + return new LibraryVersion(ret); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public void Deinitialize() + { + var retCode = _lib.sv_deinit(); + if (retCode != 0) + throw new SunVoxException(retCode, nameof(_lib.sv_deinit)); + } + + /// + public string? GetLog(int size) + { + var ptr = _lib.sv_get_log(size); + try + { + return Marshal.PtrToStringAnsi(ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public uint GetTicks() + { + return _lib.sv_get_ticks(); + } + + /// + public uint GetTicksPerSecond() + { + return _lib.sv_get_ticks_per_second(); + } + + /// + public int GetSampleRate() + { + var ret = _lib.sv_get_sample_rate(); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_sample_rate)); + return ret; + } + + /// + public void UpdateInputDevices() + { + var ret = _lib.sv_update_input(); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_update_input)); + } + + /// + public bool IsPlaying(int slotId) + { + var ret = _lib.sv_end_of_song(slotId); + if (ret != 0 && ret != 1) + throw new SunVoxException(ret, nameof(_lib.sv_end_of_song)); + return ret == 0; + } + + /// + public bool GetAutostop(int slotId) + { + var ret = _lib.sv_get_autostop(slotId); + if (ret != 0 && ret != 1) + throw new SunVoxException(ret, nameof(_lib.sv_get_autostop)); + return ret == 1; + } + + /// + public int GetCurrentLine(int slotId) + { + return _lib.sv_get_current_line(slotId); + } + + /// + public int GetCurrentLineWithTenthPart(int slotId) + { + return _lib.sv_get_current_line2(slotId); + } + + /// + public int GetCurrentSignalLevel(int slotId, int channel) + { + return _lib.sv_get_current_signal_level(slotId, channel); + } + + /// + public int GetSongBpm(int slotId) + { + var ret = _lib.sv_get_song_bpm(slotId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_song_bpm)); + return ret; + } + + /// + public int GetSongLengthInFrames(int slotId) + { + var ret = _lib.sv_get_song_length_frames(slotId); + return (int)ret; + } + + /// + public int GetSongLengthInLines(int slotId) + { + var ret = _lib.sv_get_song_length_lines(slotId); + return (int)ret; + } + + /// + public string? GetSongName(int slotId) + { + var ptr = _lib.sv_get_song_name(slotId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public void SetSongName(int slotId, string newName) + { + var ptr = Marshal.StringToHGlobalAnsi(newName); + try + { + var ret = _lib.sv_set_song_name(slotId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_init)); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public int GetSongTpl(int slotId) + { + var ret = _lib.sv_get_song_tpl(slotId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_song_tpl)); + return ret; + } + + /// + public void Save(int slotId, string path) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_save(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_save)); + } + + public void SendEvent(int slotId, int track, PatternEvent data) + { + SendEvent(slotId, track, data.NN, data.VV, data.MM, data.CCEE, data.XXYY); + } + + public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, + int ccee = 0, int xxyy = 0) + { + var ret = _lib.sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_send_event)); + } + + public void SetAutoStop(int slotId, bool autoStop) + { + var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_autostop)); + } + + public void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0) + { + var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_event_t)); + } + + /// + public void StopPlayback(int slotId) + { + var ret = _lib.sv_stop(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_stop)); + } + + public void ResumeStreamOnSyncEffect(int slotId) + { + var ret = _lib.sv_sync_resume(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_sync_resume)); + } + + /// + public int Volume(int slotId, int volume) + { + var ret = _lib.sv_volume(slotId, volume); + if (ret < 0 || ret > 256) + throw new SunVoxException(ret, nameof(_lib.sv_volume)); + return ret; + } + + /// + public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) + { + var arr = new uint[length]; + var handle = GCHandle.Alloc(arr, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_get_time_map(slotId, startLine, length, handle.AddrOfPinnedObject(), (int)type); + } + finally + { + handle.Free(); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_time_map)); + return arr; + } + + /// + public void Load(int slotId, string path) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_load(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_load)); + } + + /// + public void Load(int slotId, byte[] data) + { + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_load_from_memory(slotId, handle.AddrOfPinnedObject(), (uint)data.Length); + } + finally + { + handle.Free(); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_load)); + } + + /// + public void OpenSlot(int slotId) + { + var ret = _lib.sv_open_slot(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_open_slot)); + } + + /// + public void CloseSlot(int slotId) + { + var ret = _lib.sv_close_slot(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_close_slot)); + } + + /// + public void LockSlot(int slotId) + { + var ret = _lib.sv_lock_slot(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_lock_slot)); + } + + /// + public void UnlockSlot(int slotId) + { + var ret = _lib.sv_unlock_slot(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot)); + } + + /// + public void PauseStream(int slotId) + { + var ret = _lib.sv_pause(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_pause)); + } + + /// + public void StartPlayback(int slotId) + { + var ret = _lib.sv_play(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_play)); + } + + /// + public void StartPlaybackFromBeginning(int slotId) + { + var ret = _lib.sv_play_from_beginning(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_play_from_beginning)); + } + + /// + public void ResumeStream(int slotId) + { + var ret = _lib.sv_resume(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_resume)); + } + + /// + public void Rewind(int slotId, int line) + { + var ret = _lib.sv_rewind(slotId, line); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_rewind)); + } + + private bool AudioCallbackInternal(T[] outputBuffer, AudioChannels channels, int latency, uint outTime) + { + if (channels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) + throw new ArgumentException("Buffer size is not a multiple of two."); + + var frames = outputBuffer.Length; + if (channels == AudioChannels.Stereo) + frames /= 2; + + var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); + var ptr = outHandle.AddrOfPinnedObject(); + int ret; + try + { + ret = _lib.sv_audio_callback(ptr, frames, latency, outTime); + } + finally + { + outHandle.Free(); + } + + if (ret != 0 && ret != 1) + throw new SunVoxException(ret, nameof(_lib.sv_audio_callback)); + + return ret == 1; + } + + private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels outputChannels, TIn[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, + int inputType) + { + if (outputChannels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) + throw new ArgumentException("Output buffer size is not a multiple of two."); + + if (inputChannels == AudioChannels.Stereo && (inputBuffer.Length & 1) != 0) + throw new ArgumentException("Input buffer size is not a multiple of two."); + + var inputFrames = inputBuffer.Length; + if (inputChannels == AudioChannels.Stereo) + inputFrames /= 2; + + var outputFrames = outputBuffer.Length; + if (outputChannels == AudioChannels.Stereo) + outputFrames /= 2; + + if (inputFrames != outputFrames) + throw new ArgumentException($"Input and output frame count is different (input: {inputFrames}, output: {outputFrames})."); + + var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); + var inHandle = GCHandle.Alloc(inputBuffer, GCHandleType.Pinned); + var outPtr = outHandle.AddrOfPinnedObject(); + var inPtr = inHandle.AddrOfPinnedObject(); + int ret; + try + { + ret = _lib.sv_audio_callback2(outPtr, outputFrames, latency, outTime, inputType, (int)inputChannels, inPtr); + } + finally + { + inHandle.Free(); + outHandle.Free(); + } + + if (ret != 0 && ret != 1) + throw new SunVoxException(ret, nameof(_lib.sv_audio_callback2)); + + return (ret == 1); + } + + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, channels, latency, outTime); + } + + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, channels, latency, outTime); + } + + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); + } + + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); + } + + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); + } + + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); + } + } +} diff --git a/SunSharp/sunvox.h b/SunSharp/Native/sunvox.h similarity index 100% rename from SunSharp/sunvox.h rename to SunSharp/Native/sunvox.h diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 5569f0c..1b0495a 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -5,16 +5,16 @@ namespace SunSharp public enum NoteName { C = 0, - CS = 1, + Cs = 1, D = 2, - DS = 3, + Ds = 3, E = 4, F = 5, - FS = 6, + Fs = 6, G = 7, - GS = 8, + Gs = 8, A = 9, - AS = 10, + As = 10, B = 11, Other = 12 } @@ -23,10 +23,11 @@ public static class NoteNameExtensions { public static char GetNoteNameCharacter(this NoteName noteName) { + const string notes = "CcDdEFfGgAaB"; var i = (int)noteName; if (i < 0 || i > 11) return '?'; - return "CcDdEFfGgAaB"[i]; + return notes[i]; } } @@ -49,27 +50,32 @@ public readonly struct Note /// /// Send "note off" to all modules. /// - public static Note AllNotesOff => new Note(NOTECMD_ALL_NOTES_OFF); + public static Note AllNotesOff => NOTECMD_ALL_NOTES_OFF; /// - /// Stop all modules, clear their internal buffers and put them into standby mode. + /// StopPlayback all modules, clear their internal buffers and put them into standby mode. /// - public static Note CleanSynths => new Note(NOTECMD_CLEAN_SYNTHS); + public static Note CleanSynths => NOTECMD_CLEAN_SYNTHS; /// - /// Stop playing the project. + /// StopPlayback playing the project. /// - public static Note Stop => new Note(NOTECMD_STOP); + public static Note Stop => NOTECMD_STOP; /// /// Start playing the project. /// - public static Note Play => new Note(NOTECMD_PLAY); + public static Note Play => NOTECMD_PLAY; /// /// Set the pitch specified in column XXYY, where 0x0000 - highest possible pitch, 0x7800 - lowest pitch (note C0); one semitone = 0x100. /// - public static Note SetPitch => new Note(NOTECMD_SET_PITCH); + public static Note SetPitch => NOTECMD_SET_PITCH; + + /// + /// StopPlayback the module: clear its internal buffers and put it into standby mode.one semitone = 0x100. + /// + public static Note CleanModule => NOTECMD_CLEAN_MODULE; public NoteName Name => Value > 0 || Value < 128 ? (NoteName)((Value - 1) % 12) : NoteName.Other; public int Octave => Value > 0 || Value < 128 ? (Value - 1) / 12 : 0; @@ -102,17 +108,17 @@ public static implicit operator byte(Note note) public override string ToString() { - switch (Value) + return Value switch { - case 0: return "__"; - case NOTECMD_NOTE_OFF: return "--"; - case NOTECMD_ALL_NOTES_OFF: return "-!"; - case NOTECMD_CLEAN_SYNTHS: return "C!"; - case NOTECMD_STOP: return "S!"; - case NOTECMD_PLAY: return "P!"; - case NOTECMD_SET_PITCH: return "SP"; - default: return Value < 128 ? $"{Name.GetNoteNameCharacter()}{Octave}".Substring(0, 2) : "??"; - } + 0 => "__", + NOTECMD_NOTE_OFF => "--", + NOTECMD_ALL_NOTES_OFF => "-!", + NOTECMD_CLEAN_SYNTHS => "C!", + NOTECMD_STOP => "S!", + NOTECMD_PLAY => "P!", + NOTECMD_SET_PITCH => "SP", + _ => Value < 128 ? $"{Name.GetNoteNameCharacter()}{Octave}" : "??", + }; } } } diff --git a/SunSharp/ObjectWrapper/Enums.cs b/SunSharp/ObjectWrapper/Enums.cs deleted file mode 100644 index 64038e8..0000000 --- a/SunSharp/ObjectWrapper/Enums.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SunSharp.ObjectWrapper -{ - [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1720:Identifier contains type name", - Justification = "The enum is supposed to help with choosing a type.")] - public enum OutputType - { - Float32 = 1, - Int16 = 2 - } -} diff --git a/SunSharp/ObjectWrapper/ModuleHandle.cs b/SunSharp/ObjectWrapper/ModuleHandle.cs deleted file mode 100644 index 1953752..0000000 --- a/SunSharp/ObjectWrapper/ModuleHandle.cs +++ /dev/null @@ -1,216 +0,0 @@ -using System.Linq; -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - /// - /// Represents a module. The underlying SunVox module may or may not exist! - /// - public readonly struct ModuleHandle - { - private readonly ISunVoxLib _lib; - private readonly int _slotId; - - public int Id { get; } - - public Slot Slot { get; } - - public ModuleHandle(Synthesizer synthesizer, int id) - { - Slot = synthesizer.Slot; - _slotId = Slot.Id; - _lib = synthesizer.Slot.Library; - Id = id; - } - - #region general - - public ModuleFlags GetFlags() => _lib.GetModuleFlags(_slotId, Id); - - public ModuleType GetModuleType() => ModuleTypeHelper.TypeFromInternalName(_lib.GetModuleType(_slotId, Id)); - - public bool GetExists() => _lib.GetModuleExists(_slotId, Id); - - public FineTunePair GetFineTune() => _lib.GetModuleFineTune(_slotId, Id); - - public void SetFineTune(FineTunePair pair) - { - _lib.SetModuleRelativeNote(_slotId, Id, pair.RelativeNote); - _lib.SetModuleFineTune(_slotId, Id, pair.FineTune); - } - - /// - /// Read module scope view, and write it to a buffer. - /// - /// - /// - /// Number of samples successfully read. - public int ReadScope(AudioChannel channel, short[] buffer) - { - return _lib.ReadModuleScope(_slotId, Id, (int)channel, buffer); - } - - #endregion general - - #region cosmetic - - public string? GetName() => _lib.GetModuleName(_slotId, Id); - - public void SetName(string name) => _lib.SetModuleName(_slotId, Id, name); - - public (int x, int y) GetPosition() => _lib.GetModulePosition(_slotId, Id); - - public void SetPosition(int x, int y) => _lib.SetModulePosition(_slotId, Id, x, y); - - public (byte r, byte g, byte b) GetColor() => _lib.GetModuleColor(_slotId, Id); - - public void SetColor(byte r, byte g, byte b) => _lib.SetModuleColor(_slotId, Id, r, g, b); - - #endregion cosmetic - - #region connections - - public int[] GetInputs() => _lib.GetModuleInputs(_slotId, Id); - - public ModuleHandle[] GetInputModules() - { - var synthesizer = Slot.Synthesizer; - return _lib.GetModuleInputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); - } - - public int[] GetOutputs() => _lib.GetModuleInputs(_slotId, Id); - - public ModuleHandle[] GetModuleOutputs() - { - var synthesizer = Slot.Synthesizer; - return _lib.GetModuleOutputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); - } - - #endregion connections - - #region specific data IO - - /// - /// Load a sample (xi, wav, aiff) to a Sampler module from file. - /// Set to -1 to apply the sample to all sample slots. - /// - public void LoadSamplerSample(string path, int sampleSlot = -1) - { - var lib = _lib; - var slotId = _slotId; - var id = Id; - Slot.RunInLock(() => { lib.LoadSamplerSample(slotId, id, path, sampleSlot); }); - } - - /// - /// Load a sample (xi, wav, aiff) to a Sampler module from memory. - /// Set to -1 to apply the sample to all sample slots. - /// - public void LoadSamplerSample(byte[] data, int sampleSlot = -1) - { - var lib = _lib; - var slotId = _slotId; - var id = Id; - Slot.RunInLock(() => { lib.LoadSamplerSample(slotId, id, data, sampleSlot); }); - } - - /// - /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// - public void LoadIntoMetaModule(string path) - { - _lib.LoadIntoMetaModule(_slotId, Id, path); - } - - /// - /// load a file from memory into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// - public void LoadIntoMetaModule(byte[] data) - { - _lib.LoadIntoMetaModule(_slotId, Id, data); - } - - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - public void LoadIntoVorbisPLayer(string path) - { - _lib.LoadIntoVorbisPLayer(_slotId, Id, path); - } - - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - public void LoadIntoVorbisPLayer(byte[] data) - { - _lib.LoadIntoVorbisPLayer(_slotId, Id, data); - } - - public int WriteCurve(int curveId, float[] buffer) - { - var lib = _lib; - var slotId = _slotId; - var id = Id; - return Slot.RunInLock(() => lib.WriteModuleCurve(slotId, id, curveId, buffer)); - } - - public int ReadCurve(int curveId, float[] buffer) - { - var lib = _lib; - var slotId = _slotId; - var id = Id; - return Slot.RunInLock(() => lib.ReadModuleCurve(slotId, id, curveId, buffer)); - } - - #endregion specific data IO - - #region controllers - - public int GetControllerCount() - { - return _lib.GetModuleControllerCount(_slotId, Id); - } - - public string? GetControllerName(int controllerId) - { - return _lib.GetModuleControllerName(_slotId, Id, controllerId); - } - - public int GetControllerValue(int controllerId, ValueScalingType scaling = ValueScalingType.Displayed) - { - return _lib.GetModuleControllerValue(_slotId, Id, controllerId, scaling); - } - - public void SetControllerValue(int controller, int value, ValueScalingType scaling = ValueScalingType.Displayed) - { - _lib.SetModuleControllerValue(_slotId, Id, controller, value, scaling); - } - - public int GetControllerMinValue(int controllerId, ValueScalingType scaling) - { - return _lib.GetModuleControllerMinValue(_slotId, Id, controllerId, scaling); - } - - public int GetControllerMaxValue(int controllerId, ValueScalingType scaling) - { - return _lib.GetModuleControllerMaxValue(_slotId, Id, controllerId, scaling); - } - - public int GetControllerOffset(int controllerId) - { - return _lib.GetModuleControllerOffset(_slotId, Id, controllerId); - } - - public ControllerType GetControllerType(int controllerId) - { - return _lib.GetModuleControllerType(_slotId, Id, controllerId); - } - - public int GetControllerGroup(int controllerId) - { - return _lib.GetModuleControllerGroup(_slotId, Id, controllerId); - } - - #endregion controllers - } -} diff --git a/SunSharp/ObjectWrapper/ModuleType.Generated.cs b/SunSharp/ObjectWrapper/ModuleType.Generated.cs deleted file mode 100644 index 6533636..0000000 --- a/SunSharp/ObjectWrapper/ModuleType.Generated.cs +++ /dev/null @@ -1,157 +0,0 @@ -/* - * IMPORTANT! - * Do not modify this file manually. It was generated automatically by the CodeGeneration project. -*/ - -namespace SunSharp.ObjectWrapper -{ - public enum ModuleType - { - ADSR = 128, - Amplifier = 64, - AnalogGenerator = 1, - Compressor = 65, - ControlToNote = 129, - DcBlocker = 66, - Delay = 67, - Distortion = 68, - DrumSynth = 2, - Echo = 69, - EQ = 70, - Feedback = 130, - FFT = 71, - Filter = 72, - FilterPro = 73, - Flanger = 74, - FM = 3, - FMX = 4, - Generator = 5, - Glide = 131, - GPIO = 132, - Input = 6, - Kicker = 7, - LFO = 75, - Loop = 76, - MetaModule = 133, - Modulator = 77, - MultiControl = 134, - MultiSynth = 135, - Output = -1, - PitchDetector = 137, - PitchShifter = 78, - PitchToControl = 136, - Reverb = 79, - Sampler = 9, - SoundToControl = 138, - SpectraVoice = 10, - VelocityToControl = 139, - Vibrato = 81, - VocalFilter = 80, - VorbisPlayer = 8, - WaveShaper = 82, - Unknown = 0, - } - - public static class ModuleTypeHelper - { - public static string InternalNameFromType(ModuleType type) - { - switch (type) - { - case ModuleType.ADSR: return "ADSR"; - case ModuleType.Amplifier: return "Amplifier"; - case ModuleType.AnalogGenerator: return "Analog generator"; - case ModuleType.Compressor: return "Compressor"; - case ModuleType.ControlToNote: return "Ctl2Note"; - case ModuleType.DcBlocker: return "DC Blocker"; - case ModuleType.Delay: return "Delay"; - case ModuleType.Distortion: return "Distortion"; - case ModuleType.DrumSynth: return "DrumSynth"; - case ModuleType.Echo: return "Echo"; - case ModuleType.EQ: return "EQ"; - case ModuleType.Feedback: return "Feedback"; - case ModuleType.FFT: return "FFT"; - case ModuleType.Filter: return "Filter"; - case ModuleType.FilterPro: return "Filter Pro"; - case ModuleType.Flanger: return "Flanger"; - case ModuleType.FM: return "FM"; - case ModuleType.FMX: return "FMX"; - case ModuleType.Generator: return "Generator"; - case ModuleType.Glide: return "Glide"; - case ModuleType.GPIO: return "GPIO"; - case ModuleType.Input: return "Input"; - case ModuleType.Kicker: return "Kicker"; - case ModuleType.LFO: return "LFO"; - case ModuleType.Loop: return "Loop"; - case ModuleType.MetaModule: return "MetaModule"; - case ModuleType.Modulator: return "Modulator"; - case ModuleType.MultiControl: return "MultiCtl"; - case ModuleType.MultiSynth: return "MultiSynth"; - case ModuleType.Output: return "Output"; - case ModuleType.PitchDetector: return "Pitch Detector"; - case ModuleType.PitchShifter: return "Pitch shifter"; - case ModuleType.PitchToControl: return "Pitch2Ctl"; - case ModuleType.Reverb: return "Reverb"; - case ModuleType.Sampler: return "Sampler"; - case ModuleType.SoundToControl: return "Sound2Ctl"; - case ModuleType.SpectraVoice: return "SpectraVoice"; - case ModuleType.VelocityToControl: return "Velocity2Ctl"; - case ModuleType.Vibrato: return "Vibrato"; - case ModuleType.VocalFilter: return "Vocal filter"; - case ModuleType.VorbisPlayer: return "Vorbis player"; - case ModuleType.WaveShaper: return "WaveShaper"; - default: return "unknown"; - } - } - - public static ModuleType TypeFromInternalName(string internalName) - { - switch (internalName) - { - case "ADSR": return ModuleType.ADSR; - case "Amplifier": return ModuleType.Amplifier; - case "Analog generator": return ModuleType.AnalogGenerator; - case "Compressor": return ModuleType.Compressor; - case "Ctl2Note": return ModuleType.ControlToNote; - case "DC Blocker": return ModuleType.DcBlocker; - case "Delay": return ModuleType.Delay; - case "Distortion": return ModuleType.Distortion; - case "DrumSynth": return ModuleType.DrumSynth; - case "Echo": return ModuleType.Echo; - case "EQ": return ModuleType.EQ; - case "Feedback": return ModuleType.Feedback; - case "FFT": return ModuleType.FFT; - case "Filter": return ModuleType.Filter; - case "Filter Pro": return ModuleType.FilterPro; - case "Flanger": return ModuleType.Flanger; - case "FM": return ModuleType.FM; - case "FMX": return ModuleType.FMX; - case "Generator": return ModuleType.Generator; - case "Glide": return ModuleType.Glide; - case "GPIO": return ModuleType.GPIO; - case "Input": return ModuleType.Input; - case "Kicker": return ModuleType.Kicker; - case "LFO": return ModuleType.LFO; - case "Loop": return ModuleType.Loop; - case "MetaModule": return ModuleType.MetaModule; - case "Modulator": return ModuleType.Modulator; - case "MultiCtl": return ModuleType.MultiControl; - case "MultiSynth": return ModuleType.MultiSynth; - case "Output": return ModuleType.Output; - case "Pitch Detector": return ModuleType.PitchDetector; - case "Pitch shifter": return ModuleType.PitchShifter; - case "Pitch2Ctl": return ModuleType.PitchToControl; - case "Reverb": return ModuleType.Reverb; - case "Sampler": return ModuleType.Sampler; - case "Sound2Ctl": return ModuleType.SoundToControl; - case "SpectraVoice": return ModuleType.SpectraVoice; - case "Velocity2Ctl": return ModuleType.VelocityToControl; - case "Vibrato": return ModuleType.Vibrato; - case "Vocal filter": return ModuleType.VocalFilter; - case "Vorbis player": return ModuleType.VorbisPlayer; - case "WaveShaper": return ModuleType.WaveShaper; - default: return ModuleType.Unknown; - } - } - } -} diff --git a/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs b/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs deleted file mode 100644 index ed4f1c9..0000000 --- a/SunSharp/ObjectWrapper/Modules/IModuleHandleWrapper.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace SunSharp.ObjectWrapper.Modules -{ - public interface IModuleHandleWrapper - { - ModuleHandle ModuleHandle { get; } - } - - public static class ModuleWrapperExtensions - { - /// - public static ModuleFlags GetFlags(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFlags(); - - /// - public static ModuleType GetModuleType(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetModuleType(); - - /// - public static bool GetExists(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetExists(); - - /// - public static FineTunePair GetFineTune(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFineTune(); - - /// - public static void SetFineTune(this IModuleHandleWrapper wrapper, FineTunePair pair) => - wrapper.ModuleHandle.SetFineTune(pair); - - /// - public static int ReadScope(this IModuleHandleWrapper wrapper, AudioChannel channel, short[] buffer) => - wrapper.ModuleHandle.ReadScope(channel, buffer); - - /// - public static string? GetName(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetName(); - - /// - public static void SetName(this IModuleHandleWrapper wrapper, string name) => - wrapper.ModuleHandle.SetName(name); - - /// - public static (int x, int y) GetPosition(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetPosition(); - - /// - public static void SetPosition(this IModuleHandleWrapper wrapper, int x, int y) => - wrapper.ModuleHandle.SetPosition(x, y); - - /// - public static (byte r, byte g, byte b) GetColor(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetColor(); - - /// - public static void SetColor(this IModuleHandleWrapper wrapper, byte R, byte G, byte B) => - wrapper.ModuleHandle.SetColor(R, G, B); - - /// - public static int[] GetInputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputs(); - - /// - public static ModuleHandle[] GetInputModules(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetInputModules(); - - /// - public static int[] GetOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetOutputs(); - - /// - public static ModuleHandle[] GetModuleOutputs(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetModuleOutputs(); - - /// - public static int GetControllerCount(this IModuleHandleWrapper wrapper) => - wrapper.ModuleHandle.GetControllerCount(); - - /// - public static string? GetControllerName(this IModuleHandleWrapper wrapper, int controllerId) => - wrapper.ModuleHandle.GetControllerName(controllerId); - - /// - public static int GetControllerValue(this IModuleHandleWrapper wrapper, int controllerId, - ValueScalingType scaling = ValueScalingType.Displayed) => - wrapper.ModuleHandle.GetControllerValue(controllerId, scaling); - - /// - public static void SetControllerValue(this IModuleHandleWrapper wrapper, int controller, int value, - ValueScalingType scaling = ValueScalingType.Displayed) => - wrapper.ModuleHandle.SetControllerValue(controller, value, scaling); - - /// - public static int GetControllerMinValue(this IModuleHandleWrapper wrapper, int controllerId, - ValueScalingType scaling) => wrapper.ModuleHandle.GetControllerMinValue(controllerId, scaling); - - /// - public static int GetControllerMaxValue(this IModuleHandleWrapper wrapper, int controllerId, - ValueScalingType scaling) => wrapper.ModuleHandle.GetControllerMaxValue(controllerId, scaling); - - /// - public static int GetControllerOffset(this IModuleHandleWrapper wrapper, int controllerId) => - wrapper.ModuleHandle.GetControllerOffset(controllerId); - - /// - public static ControllerType GetControllerType(this IModuleHandleWrapper wrapper, int controllerId) => - wrapper.ModuleHandle.GetControllerType(controllerId); - - /// - public static int GetControllerGroup(this IModuleHandleWrapper wrapper, int controllerId) => - wrapper.ModuleHandle.GetControllerGroup(controllerId); - } -} diff --git a/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs b/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs deleted file mode 100644 index 9fb33b3..0000000 --- a/SunSharp/ObjectWrapper/Modules/SpecificModules.Generated.cs +++ /dev/null @@ -1,7895 +0,0 @@ -/* - * IMPORTANT! - * Do not modify this file manually. It was generated automatically by the CodeGeneration project. -*/ - -namespace SunSharp.ObjectWrapper.Modules -{ - #region enums - - public enum ADSRCurveType : ushort - { - Linear = 0, - Exp1 = 1, - Exp2 = 2, - Nexp1 = 3, - Nexp2 = 4, - Sin = 5, - Rect = 6, - SmoothRect = 7, - Bit2 = 8, - Bit3 = 9, - Bit4 = 10, - Bit5 = 11, - } - - public enum ADSRMode : ushort - { - Generator = 0, - AmplitudeModulatorMono = 1, - AmplitudeModulatorStereo = 2, - } - - public enum ADSROnNoteOffBehaviour : ushort - { - DoNothing = 0, - StopOnLastNote = 1, - Stop = 2, - } - - public enum ADSROnNoteOnBehaviour : ushort - { - DoNothing = 0, - StartOnFirstNote = 1, - Start = 2, - } - - public enum ADSRSmoothTransitions : ushort - { - Off = 0, - RestartAndVolumeChange = 1, - RestartAndVolumeChangeSmooth = 2, - VolumeChange = 3, - } - - public enum ADSRSustainMode : ushort - { - Off = 0, - On = 1, - Repeat = 2, - } - - public enum AnalogGeneratorEnvelopeMode : ushort - { - Off = 0, - SustainOff = 1, - SustainOn = 2, - } - - public enum AnalogGeneratorFilterType : ushort - { - Off = 0, - LP12dB = 1, - HP12dB = 2, - BP12dB = 3, - BR12dB = 4, - LP24dB = 5, - HP24dB = 6, - BP24dB = 7, - BR24dB = 8, - } - - public enum AnalogGeneratorOsc2Mode : ushort - { - Add = 0, - Sub = 1, - Mul = 2, - Min = 3, - Max = 4, - BitwiseAnd = 5, - BitwiseXor = 6, - } - - public enum AnalogGeneratorWaveform : ushort - { - Triangle = 0, - Saw = 1, - Square = 2, - NoiseSampler = 3, - Drawn = 4, - Sin = 5, - Hsin = 6, - Asin = 7, - DrawnSpline = 8, - NoiseSamplerSpline = 9, - WhiteNoise = 10, - PinkNoise = 11, - RedNoise = 12, - BlueNosie = 13, - VioletNoise = 14, - GreyNoise = 15, - Harmonics = 16, - } - - public enum Channels : ushort - { - Stereo = 0, - Mono = 1, - } - - public enum ChannelsInverted : ushort - { - Mono = 0, - Stereo = 1, - } - - public enum CompressorMode : ushort - { - Peak = 0, - RMS = 1, - PeakZeroLatency = 2, - } - - public enum ControlToNoteOffBehaviour : ushort - { - Nothing = 0, - OnMinPitch = 1, - OnMaxPitch = 2, - } - - public enum ControlToNoteOnBehaviour : ushort - { - Nothing = 0, - OnPitchChange = 1, - } - - public enum DelayUnit : ushort - { - SecondDivBy16384 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - SecondDivBy44100 = 7, - SecondDivBy48000 = 8, - Sample = 9, - } - - public enum DistortionType : ushort - { - Clipping = 0, - Foldback = 1, - Foldback2 = 2, - Foldback3 = 3, - Overflow = 4, - Overflow2 = 5, - SaturationFoldback = 6, - SaturationFoldbackSin = 7, - Saturation3 = 8, - Saturation4 = 9, - Saturation5 = 10, - } - - public enum EchoDelayUnit : ushort - { - SecondDivBy256 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum EchoFilter : ushort - { - Off = 0, - LP6dB = 1, - HP6dB = 2, - } - - public enum FFTBufferOverlap : ushort - { - None = 0, - x2 = 1, - x4 = 2, - } - - public enum FFTBufferSize : ushort - { - x64 = 0, - x128 = 1, - x256 = 2, - x512 = 3, - x1024 = 4, - x2048 = 5, - x4096 = 6, - x8192 = 7, - } - - public enum FFTSampleRate : ushort - { - Hz8000 = 0, - Hz11025 = 1, - Hz16000 = 2, - Hz22050 = 3, - Hz32000 = 4, - Hz44100 = 5, - Hz48000 = 6, - Hz88200 = 7, - Hz96000 = 8, - Hz192000 = 9, - } - - public enum FilterLFOFrequencyUnit : ushort - { - FiveHundredthHz = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum FilterLFOWaveform : ushort - { - Sin = 0, - Saw = 1, - Saw2 = 2, - Square = 3, - Random = 4, - } - - public enum FilterProMode : ushort - { - Stereo = 0, - Mono = 1, - StereoSmoothing = 2, - MonoSmoothing = 3, - } - - public enum FilterProRollOff : ushort - { - dB12 = 0, - dB24 = 1, - dB36 = 2, - dB48 = 3, - } - - public enum FilterProType : ushort - { - LP = 0, - HP = 1, - BPConstSkirtGain = 2, - BPConstPeakGain = 3, - Notch = 4, - AllPass = 5, - Peaking = 6, - LowShelf = 7, - HighShelf = 8, - LP6dB = 9, - HP6dB = 10, - } - - public enum FilterRollOff : ushort - { - dB12 = 0, - dB24 = 1, - dB36 = 2, - dB48 = 3, - } - - public enum FilterType : ushort - { - LP = 0, - HP = 1, - BP = 2, - Notch = 3, - } - - public enum FlangerLFOFrequencyUnit : ushort - { - FiveHundredthHz = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum FlangerLFOWaveform : ushort - { - Hsin = 0, - Sin = 1, - } - - public enum FMXCustomWaveform : ushort - { - Off = 0, - SingleCycle = 1, - Continuous = 2, - } - - public enum FMXModulationType : ushort - { - Phase = 0, - Frequency = 1, - Amplitude = 2, - Add = 3, - Sub = 4, - Min = 5, - Max = 6, - And = 7, - Xor = 8, - PhasePlus = 9, - } - - public enum FMXSampleRate : ushort - { - Hz8000 = 0, - Hz11025 = 1, - Hz16000 = 2, - Hz22050 = 3, - Hz32000 = 4, - Hz44100 = 5, - Native = 6, - } - - public enum FMXWaveform : ushort - { - Custom = 0, - Triangle = 1, - Triangle3 = 2, - Saw = 3, - Saw3 = 4, - Square = 5, - Sin = 6, - Hsin = 7, - Asin = 8, - Sin3 = 9, - } - - public enum GeneratorWaveform : ushort - { - Triangle = 0, - Saw = 1, - Square = 2, - NoiseSampler = 3, - Drawn = 4, - Sin = 5, - Hsin = 6, - Asin = 7, - Rsin = 8, - } - - public enum KickerWaveform : ushort - { - Triangle = 0, - Square = 1, - Sin = 2, - } - - public enum LFOFrequencyUnit : ushort - { - HzDividedBy64 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum LFOSineQuality : ushort - { - Auto = 0, - Low = 1, - Middle = 2, - High = 3, - } - - public enum LFOSmoothTransitions : ushort - { - Off = 0, - Waveform = 1, - } - - public enum LFOType : ushort - { - Amplitude = 0, - Panning = 1, - } - - public enum LFOWaveform : ushort - { - Sin = 0, - Square = 1, - Sin2 = 2, - Saw = 3, - Saw2 = 4, - Random = 5, - Triangle = 6, - RandomInterpolated = 7, - } - - public enum LoopMode : ushort - { - Normal = 0, - PingPong = 1, - } - - public enum LoopOnNoteOn : ushort - { - Restart = 0, - RestartCurrentIteration = 1, - } - - public enum LoopTimeUnit : ushort - { - LineDivBy128 = 0, - Line = 1, - HalfLine = 2, - OneThirdLine = 3, - Tick = 4, - Millisecond = 5, - Hz = 6, - } - - public enum MetaModulePatternMode : ushort - { - Off = 0, - OnRepeat = 1, - OnNoRepeat = 2, - OnRepeatEndless = 3, - OnNoRepeatEndless = 4, - } - - public enum ModulationType : ushort - { - Amplitude = 0, - Phase = 1, - PhaseAbsolute = 2, - } - - public enum PitchDetectorAlgorithm : ushort - { - FastZeroCrossing = 0, - Autocorrelation = 1, - Cepstrum = 2, - } - - public enum PitchDetectorAlgSampleRate : ushort - { - Hz12000 = 0, - Hz24000 = 1, - Hz44100 = 2, - } - - public enum PitchDetectorBufferSize : ushort - { - Ms5 = 0, - Ms10 = 1, - Ms21 = 2, - Ms42 = 3, - Ms85 = 4, - } - - public enum PitchShifterBypassMode : ushort - { - Off = 0, - SlowTransition = 1, - FastTransition = 2, - } - - public enum PitchToControlMode : ushort - { - FrequencyHz = 0, - Pitch = 1, - } - - public enum PitchToControlOnNoteOff : ushort - { - DoNothing = 0, - PitchDown = 1, - PitchUp = 2, - } - - public enum Quality : ushort - { - HQ = 0, - HQMono = 1, - LQ = 2, - LQMono = 3, - } - - public enum SamplerEnvelopeInterpolation : ushort - { - Off = 0, - Linear = 1, - } - - public enum SamplerInterpolation : ushort - { - Off = 0, - Linear = 1, - Spline = 2, - } - - public enum SoundToControlMode : ushort - { - LQ = 0, - HQ = 1, - } - - public enum SpectraVoiceHarmonicType : ushort - { - Hsin = 0, - Rect = 1, - Org1 = 2, - Org2 = 3, - Org3 = 4, - Org4 = 5, - Sin = 6, - Random = 7, - Triangle1 = 8, - Triangle2 = 9, - Overtones1 = 10, - Overtones2 = 11, - Overtones3 = 12, - Overtones4 = 13, - Overtones1Plus = 14, - Overtones2Plus = 15, - Overtones3Plus = 16, - Overtones4Plus = 17, - Metal = 18, - } - - public enum SpectraVoiceMode : ushort - { - HQ = 0, - HQMono = 1, - LQ = 2, - LQMono = 3, - HQSpline = 4, - } - - public enum SpectraVoiceResolution : ushort - { - Size4096 = 0, - Size8192 = 1, - Size16384 = 2, - Size32768 = 3, - Size65536 = 4, - Size131072 = 5, - } - - public enum Toggle : ushort - { - Off = 0, - On = 1, - } - - public enum ToggleInverse : ushort - { - On = 0, - Off = 1, - } - - public enum VelocityToControlOnNoteOff : ushort - { - DoNothing = 0, - VelocityDown = 1, - VelocityUp = 2, - } - - public enum VibratoFrequencyUnit : ushort - { - HzDividedBy64 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum VocalFilterVoiceType : ushort - { - Soprano = 0, - Alto = 1, - Tenor = 2, - Bass = 3, - } - - public enum VocalFilterVowel : ushort - { - A = 0, - E = 1, - I = 2, - O = 3, - U = 4, - } - - #endregion enums - - public static class ModuleExtensions - { - public static ADSRModuleHandle AsADSR(this ModuleHandle module) => new ADSRModuleHandle(module); - - public static AmplifierModuleHandle AsAmplifier(this ModuleHandle module) => new AmplifierModuleHandle(module); - - public static AnalogGeneratorModuleHandle AsAnalogGenerator(this ModuleHandle module) => new AnalogGeneratorModuleHandle(module); - - public static CompressorModuleHandle AsCompressor(this ModuleHandle module) => new CompressorModuleHandle(module); - - public static ControlToNoteModuleHandle AsControlToNote(this ModuleHandle module) => new ControlToNoteModuleHandle(module); - - public static DcBlockerModuleHandle AsDcBlocker(this ModuleHandle module) => new DcBlockerModuleHandle(module); - - public static DelayModuleHandle AsDelay(this ModuleHandle module) => new DelayModuleHandle(module); - - public static DistortionModuleHandle AsDistortion(this ModuleHandle module) => new DistortionModuleHandle(module); - - public static DrumSynthModuleHandle AsDrumSynth(this ModuleHandle module) => new DrumSynthModuleHandle(module); - - public static EchoModuleHandle AsEcho(this ModuleHandle module) => new EchoModuleHandle(module); - - public static EQModuleHandle AsEQ(this ModuleHandle module) => new EQModuleHandle(module); - - public static FeedbackModuleHandle AsFeedback(this ModuleHandle module) => new FeedbackModuleHandle(module); - - public static FFTModuleHandle AsFFT(this ModuleHandle module) => new FFTModuleHandle(module); - - public static FilterModuleHandle AsFilter(this ModuleHandle module) => new FilterModuleHandle(module); - - public static FilterProModuleHandle AsFilterPro(this ModuleHandle module) => new FilterProModuleHandle(module); - - public static FlangerModuleHandle AsFlanger(this ModuleHandle module) => new FlangerModuleHandle(module); - - public static FMModuleHandle AsFM(this ModuleHandle module) => new FMModuleHandle(module); - - public static FMXModuleHandle AsFMX(this ModuleHandle module) => new FMXModuleHandle(module); - - public static GeneratorModuleHandle AsGenerator(this ModuleHandle module) => new GeneratorModuleHandle(module); - - public static GlideModuleHandle AsGlide(this ModuleHandle module) => new GlideModuleHandle(module); - - public static GPIOModuleHandle AsGPIO(this ModuleHandle module) => new GPIOModuleHandle(module); - - public static InputModuleHandle AsInput(this ModuleHandle module) => new InputModuleHandle(module); - - public static KickerModuleHandle AsKicker(this ModuleHandle module) => new KickerModuleHandle(module); - - public static LFOModuleHandle AsLFO(this ModuleHandle module) => new LFOModuleHandle(module); - - public static LoopModuleHandle AsLoop(this ModuleHandle module) => new LoopModuleHandle(module); - - public static MetaModuleModuleHandle AsMetaModule(this ModuleHandle module) => new MetaModuleModuleHandle(module); - - public static ModulatorModuleHandle AsModulator(this ModuleHandle module) => new ModulatorModuleHandle(module); - - public static MultiControlModuleHandle AsMultiControl(this ModuleHandle module) => new MultiControlModuleHandle(module); - - public static MultiSynthModuleHandle AsMultiSynth(this ModuleHandle module) => new MultiSynthModuleHandle(module); - - public static OutputModuleHandle AsOutput(this ModuleHandle module) => new OutputModuleHandle(module); - - public static PitchDetectorModuleHandle AsPitchDetector(this ModuleHandle module) => new PitchDetectorModuleHandle(module); - - public static PitchShifterModuleHandle AsPitchShifter(this ModuleHandle module) => new PitchShifterModuleHandle(module); - - public static PitchToControlModuleHandle AsPitchToControl(this ModuleHandle module) => new PitchToControlModuleHandle(module); - - public static ReverbModuleHandle AsReverb(this ModuleHandle module) => new ReverbModuleHandle(module); - - public static SamplerModuleHandle AsSampler(this ModuleHandle module) => new SamplerModuleHandle(module); - - public static SoundToControlModuleHandle AsSoundToControl(this ModuleHandle module) => new SoundToControlModuleHandle(module); - - public static SpectraVoiceModuleHandle AsSpectraVoice(this ModuleHandle module) => new SpectraVoiceModuleHandle(module); - - public static VelocityToControlModuleHandle AsVelocityToControl(this ModuleHandle module) => new VelocityToControlModuleHandle(module); - - public static VibratoModuleHandle AsVibrato(this ModuleHandle module) => new VibratoModuleHandle(module); - - public static VocalFilterModuleHandle AsVocalFilter(this ModuleHandle module) => new VocalFilterModuleHandle(module); - - public static VorbisPlayerModuleHandle AsVorbisPlayer(this ModuleHandle module) => new VorbisPlayerModuleHandle(module); - - public static WaveShaperModuleHandle AsWaveShaper(this ModuleHandle module) => new WaveShaperModuleHandle(module); - } - - public struct ADSRModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ADSRModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 10000 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 10000 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Decay - /// Value range: 0 to 10000 - /// - public int GetDecay() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Decay - /// Value range: 0 to 10000 - /// - public void SetDecay(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo - /// - public ADSRMode GetMode() => (ADSRMode)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo - /// - public void SetMode(ADSRMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, StopOnLastNote, Stop - /// - public ADSROnNoteOffBehaviour GetOnNoteOff() => (ADSROnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, StopOnLastNote, Stop - /// - public void SetOnNoteOff(ADSROnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: DoNothing, StartOnFirstNote, Start - /// - public ADSROnNoteOnBehaviour GetOnNoteOn() => (ADSROnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: DoNothing, StartOnFirstNote, Start - /// - public void SetOnNoteOn(ADSROnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 10000 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 10000 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public ADSRSmoothTransitions GetSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public void SetSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain() => (ADSRSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain(ADSRSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct AmplifierModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public AmplifierModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Balance - /// Value range: -128 to 128 - /// - public int GetBalance() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Balance - /// Value range: -128 to 128 - /// - public void SetBalance(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Bipolar DC Offset - /// Value range: -16384 to 16384 - /// - public int GetBipolarDCOffset() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Bipolar DC Offset - /// Value range: -16384 to 16384 - /// - public void SetBipolarDCOffset(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: DC Offset - /// Value range: -128 to 128 - /// - public int GetDCOffset() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: DC Offset - /// Value range: -128 to 128 - /// - public void SetDCOffset(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Fine volume - /// Value range: 0 to 32768 - /// - public int GetFineVolume() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Fine volume - /// Value range: 0 to 32768 - /// - public void SetFineVolume(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 5000 - /// - public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 5000 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct AnalogGeneratorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public AnalogGeneratorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 256 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 256 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1024 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1024 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Exponential envelope - /// Possible values: Off, On - /// - public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Exponential envelope - /// Possible values: Off, On - /// - public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: F.attack - /// Value range: 0 to 256 - /// - public int GetFAttack() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: F.attack - /// Value range: 0 to 256 - /// - public void SetFAttack(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: F.envelope - /// Possible values: Off, SustainOff, SustainOn - /// - public AnalogGeneratorEnvelopeMode GetFEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); - - /// - /// Original name: F.envelope - /// Possible values: Off, SustainOff, SustainOn - /// - public void SetFEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: F.exponential freq - /// Possible values: Off, On - /// - public Toggle GetFExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: F.exponential freq - /// Possible values: Off, On - /// - public void SetFExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 14000 - /// - public int GetFFreq() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 14000 - /// - public void SetFFreq(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB - /// - public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB - /// - public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: F.release - /// Value range: 0 to 256 - /// - public int GetFRelease() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: F.release - /// Value range: 0 to 256 - /// - public void SetFRelease(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); - - /// - /// Original name: F.resonance - /// Value range: 0 to 1530 - /// - public int GetFResonance() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: F.resonance - /// Value range: 0 to 1530 - /// - public void SetFResonance(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public int GetNoise() => ModuleHandle.GetControllerValue(18, ValueScalingType.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public void SetNoise(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 - /// Value range: -1000 to 1000 - /// - public int GetOsc2() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 - /// Value range: -1000 to 1000 - /// - public void SetOsc2(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 mode - /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor - /// - public AnalogGeneratorOsc2Mode GetOsc2Mode() => (AnalogGeneratorOsc2Mode)ModuleHandle.GetControllerValue(20, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 mode - /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor - /// - public void SetOsc2Mode(AnalogGeneratorOsc2Mode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 phase - /// Value range: 0 to 32768 - /// - public int GetOsc2Phase() => ModuleHandle.GetControllerValue(21, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 phase - /// Value range: 0 to 32768 - /// - public void SetOsc2Phase(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 volume - /// Value range: 0 to 32768 - /// - public int GetOsc2Volume() => ModuleHandle.GetControllerValue(19, ValueScalingType.Displayed); - - /// - /// Original name: Osc2 volume - /// Value range: 0 to 32768 - /// - public void SetOsc2Volume(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 256 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 256 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics - /// - public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics - /// - public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read DrawnValues containing 32 values. - /// Value range: -1 to 1. - /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. - /// - public void ReadDrawnValues(float[] buffer) - { - if (buffer.Length < 32) - throw new System.ArgumentException("Buffer must be at least of size 32"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write DrawnValues containing 32 values. - /// Value range: -1 to 1. - /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. - /// - public void WriteDrawnValues(float[] buffer) - { - if (buffer.Length < 32) - throw new System.ArgumentException("Buffer must be at least of size 32"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } - - public struct CompressorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public CompressorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 500 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 500 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Peak, RMS, PeakZeroLatency - /// - public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Peak, RMS, PeakZeroLatency - /// - public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 1 to 1000 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 1 to 1000 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Side-chain input - /// Value range: 0 to 32 - /// - public int GetSideChainInput() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Side-chain input - /// Value range: 0 to 32 - /// - public void SetSideChainInput(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Slope - /// Value range: 0 to 200 - /// - public int GetSlope() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Slope - /// Value range: 0 to 200 - /// - public void SetSlope(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 512 - /// - public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 512 - /// - public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct ControlToNoteModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ControlToNoteModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 120 - /// - public int GetFirstNote() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 120 - /// - public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: NoteOFF - /// Possible values: Nothing, OnMinPitch, OnMaxPitch - /// - public ControlToNoteOffBehaviour GetNoteOff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: NoteOFF - /// Possible values: Nothing, OnMinPitch, OnMaxPitch - /// - public void SetNoteOff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: NoteON - /// Possible values: Nothing, OnPitchChange - /// - public ControlToNoteOnBehaviour GetNoteOn() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: NoteON - /// Possible values: Nothing, OnPitchChange - /// - public void SetNoteOn(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Pitch - /// Value range: 0 to 32768 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Pitch - /// Value range: 0 to 32768 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 120 - /// - public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 120 - /// - public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public int GetVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public void SetVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct DcBlockerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DcBlockerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct DelayModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DelayModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Delay L - /// Value range: 0 to 256 - /// - public int GetDelayL() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Delay L - /// Value range: 0 to 256 - /// - public void SetDelayL(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Delay multiplier - /// Value range: 1 to 15 - /// - public int GetDelayMultiplier() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Delay multiplier - /// Value range: 1 to 15 - /// - public void SetDelayMultiplier(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Delay R - /// Value range: 0 to 256 - /// - public int GetDelayR() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Delay R - /// Value range: 0 to 256 - /// - public void SetDelayR(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample - /// - public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample - /// - public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 512 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 512 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume L - /// Value range: 0 to 256 - /// - public int GetVolumeL() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Volume L - /// Value range: 0 to 256 - /// - public void SetVolumeL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume R - /// Value range: 0 to 256 - /// - public int GetVolumeR() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Volume R - /// Value range: 0 to 256 - /// - public void SetVolumeR(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 512 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 512 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct DistortionModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DistortionModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Bit depth - /// Value range: 1 to 16 - /// - public int GetBitDepth() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Bit depth - /// Value range: 1 to 16 - /// - public void SetBitDepth(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 - /// - public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 - /// - public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 44100 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 44100 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public int GetNoise() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public void SetNoise(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Power - /// Value range: 0 to 256 - /// - public int GetPower() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Power - /// Value range: 0 to 256 - /// - public void SetPower(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct DrumSynthModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DrumSynthModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Bass length - /// Value range: 0 to 256 - /// - public int GetBassLength() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Bass length - /// Value range: 0 to 256 - /// - public void SetBassLength(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Bass panning - /// Value range: -128 to 128 - /// - public int GetBassPanning() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: Bass panning - /// Value range: -128 to 128 - /// - public void SetBassPanning(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); - - /// - /// Original name: Bass power - /// Value range: 0 to 256 - /// - public int GetBassPower() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Bass power - /// Value range: 0 to 256 - /// - public void SetBassPower(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Bass tone - /// Value range: 0 to 256 - /// - public int GetBassTone() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Bass tone - /// Value range: 0 to 256 - /// - public void SetBassTone(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Bass volume - /// Value range: 0 to 512 - /// - public int GetBassVolume() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Bass volume - /// Value range: 0 to 512 - /// - public void SetBassVolume(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Hihat length - /// Value range: 0 to 256 - /// - public int GetHihatLength() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Hihat length - /// Value range: 0 to 256 - /// - public void SetHihatLength(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Hihat panning - /// Value range: -128 to 128 - /// - public int GetHihatPanning() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: Hihat panning - /// Value range: -128 to 128 - /// - public void SetHihatPanning(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: Hihat volume - /// Value range: 0 to 512 - /// - public int GetHihatVolume() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Hihat volume - /// Value range: 0 to 512 - /// - public void SetHihatVolume(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 8 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 8 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Snare length - /// Value range: 0 to 256 - /// - public int GetSnareLength() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Snare length - /// Value range: 0 to 256 - /// - public void SetSnareLength(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: Snare panning - /// Value range: -128 to 128 - /// - public int GetSnarePanning() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: Snare panning - /// Value range: -128 to 128 - /// - public void SetSnarePanning(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); - - /// - /// Original name: Snare tone - /// Value range: 0 to 256 - /// - public int GetSnareTone() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Snare tone - /// Value range: 0 to 256 - /// - public void SetSnareTone(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Snare volume - /// Value range: 0 to 512 - /// - public int GetSnareVolume() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Snare volume - /// Value range: 0 to 512 - /// - public void SetSnareVolume(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct EchoModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public EchoModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Delay - /// Value range: 0 to 256 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Delay - /// Value range: 0 to 256 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 22000 - /// - public int GetFFreq() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 22000 - /// - public void SetFFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP6dB, HP6dB - /// - public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP6dB, HP6dB - /// - public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Right channel offset - /// Possible values: Off, On - /// - public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Right channel offset - /// Possible values: Off, On - /// - public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Right channel offset - /// Value range: 0 to 32768 - /// Delay/32768 - /// - public int GetRightChannelOffsetDelay() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Right channel offset - /// Value range: 0 to 32768 - /// Delay/32768 - /// - public void SetRightChannelOffsetDelay(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct EQModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public EQModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: High - /// Value range: 0 to 512 - /// - public int GetHigh() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: High - /// Value range: 0 to 512 - /// - public void SetHigh(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Low - /// Value range: 0 to 512 - /// - public int GetLow() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Low - /// Value range: 0 to 512 - /// - public void SetLow(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Middle - /// Value range: 0 to 512 - /// - public int GetMiddle() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Middle - /// Value range: 0 to 512 - /// - public void SetMiddle(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FeedbackModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FeedbackModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 10000 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 10000 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FFTModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FFTModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: All-pass filter - /// Value range: 0 to 32768 - /// - public int GetAllPassFilter() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: All-pass filter - /// Value range: 0 to 32768 - /// - public void SetAllPassFilter(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Buffer (samples) - /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 - /// - public FFTBufferSize GetBufferSamples() => (FFTBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Buffer (samples) - /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 - /// - public void SetBufferSamples(FFTBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Buf overlap - /// Possible values: None, x2, x4 - /// - public FFTBufferOverlap GetBufOverlap() => (FFTBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Buf overlap - /// Possible values: None, x2, x4 - /// - public void SetBufOverlap(FFTBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Deform1 - /// Value range: 0 to 32768 - /// - public int GetDeform1() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: Deform1 - /// Value range: 0 to 32768 - /// - public void SetDeform1(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); - - /// - /// Original name: Deform2 - /// Value range: 0 to 32768 - /// - public int GetDeform2() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: Deform2 - /// Value range: 0 to 32768 - /// - public void SetDeform2(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq shift - /// Value range: -4096 to 4096 - /// - public int GetFreqShift() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Freq shift - /// Value range: -4096 to 4096 - /// - public void SetFreqShift(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: Frequency spread - /// Value range: 0 to 32768 - /// - public int GetFrequencySpread() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Frequency spread - /// Value range: 0 to 32768 - /// - public void SetFrequencySpread(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: HP cutoff - /// Value range: 0 to 32768 - /// - public int GetHPCutoff() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: HP cutoff - /// Value range: 0 to 32768 - /// - public void SetHPCutoff(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); - - /// - /// Original name: LP cutoff - /// Value range: 0 to 32768 - /// - public int GetLPCutoff() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); - - /// - /// Original name: LP cutoff - /// Value range: 0 to 32768 - /// - public void SetLPCutoff(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); - - /// - /// Original name: Noise reduction - /// Value range: 0 to 32768 - /// - public int GetNoiseReduction() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Noise reduction - /// Value range: 0 to 32768 - /// - public void SetNoiseReduction(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Phase gain (norm=16384) - /// Value range: 0 to 32768 - /// - public int GetPhaseGainNorm16384() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Phase gain (norm=16384) - /// Value range: 0 to 32768 - /// - public void SetPhaseGainNorm16384(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public int GetRandomPhase() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Random phase (lite) - /// Value range: 0 to 32768 - /// - public int GetRandomPhaseLite() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Random phase (lite) - /// Value range: 0 to 32768 - /// - public void SetRandomPhaseLite(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 - /// - public FFTSampleRate GetSampleRate() => (FFTSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 - /// - public void SetSampleRate(FFTSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FilterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FilterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BP, Notch - /// - public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BP, Notch - /// - public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 14000 - /// - public int GetFrequency() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 14000 - /// - public void SetFrequency(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Impulse - /// Value range: 0 to 14000 - /// - public int GetImpulse() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Impulse - /// Value range: 0 to 14000 - /// - public void SetImpulse(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public int GetMix() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Resonance - /// Value range: 0 to 1530 - /// - public int GetResonance() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Resonance - /// Value range: 0 to 1530 - /// - public void SetResonance(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FilterProModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FilterProModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB - /// - public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB - /// - public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 22000 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 22000 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq finetune - /// Value range: -1000 to 1000 - /// - public int GetFreqFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Freq finetune - /// Value range: -1000 to 1000 - /// - public void SetFreqFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public int GetFreqScale() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: -16384 to 16384 - /// - public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: -16384 to 16384 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 32768 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 32768 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 32768 - /// - public int GetMix() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 32768 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing - /// - public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing - /// - public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Q - /// Value range: 0 to 32768 - /// - public int GetQ() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Q - /// Value range: 0 to 32768 - /// - public void SetQ(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FlangerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FlangerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Delay - /// Value range: 8 to 1000 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Delay - /// Value range: 8 to 1000 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 512 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 512 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FlangerLFOFrequencyUnit GetLFOFreqUnit() => (FlangerLFOFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FlangerLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Hsin, Sin - /// - public FlangerLFOWaveform GetLFOWaveform() => (FlangerLFOWaveform)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Hsin, Sin - /// - public void SetLFOWaveform(FlangerLFOWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FMModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FMModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: C.Attack - /// Value range: 0 to 512 - /// - public int GetCAttack() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: C.Attack - /// Value range: 0 to 512 - /// - public void SetCAttack(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: C.Decay - /// Value range: 0 to 512 - /// - public int GetCDecay() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: C.Decay - /// Value range: 0 to 512 - /// - public void SetCDecay(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: C.Freq ratio - /// Value range: 0 to 16 - /// - public int GetCFreqRatio() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: C.Freq ratio - /// Value range: 0 to 16 - /// - public void SetCFreqRatio(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: C.Release - /// Value range: 0 to 512 - /// - public int GetCRelease() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: C.Release - /// Value range: 0 to 512 - /// - public void SetCRelease(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: C.Sustain - /// Value range: 0 to 256 - /// - public int GetCSustain() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: C.Sustain - /// Value range: 0 to 256 - /// - public void SetCSustain(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: C.Volume - /// Value range: 0 to 256 - /// - public int GetCVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: C.Volume - /// Value range: 0 to 256 - /// - public void SetCVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Attack - /// Value range: 0 to 512 - /// - public int GetMAttack() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: M.Attack - /// Value range: 0 to 512 - /// - public void SetMAttack(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Decay - /// Value range: 0 to 512 - /// - public int GetMDecay() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: M.Decay - /// Value range: 0 to 512 - /// - public void SetMDecay(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Freq ratio - /// Value range: 0 to 16 - /// - public int GetMFreqRatio() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: M.Freq ratio - /// Value range: 0 to 16 - /// - public void SetMFreqRatio(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: M.Release - /// Value range: 0 to 512 - /// - public int GetMRelease() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: M.Release - /// Value range: 0 to 512 - /// - public void SetMRelease(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Scaling per key - /// Value range: 0 to 4 - /// - public int GetMScalingPerKey() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: M.Scaling per key - /// Value range: 0 to 4 - /// - public void SetMScalingPerKey(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Self-modulation - /// Value range: 0 to 256 - /// - public int GetMSelfModulation() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: M.Self-modulation - /// Value range: 0 to 256 - /// - public void SetMSelfModulation(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Sustain - /// Value range: 0 to 256 - /// - public int GetMSustain() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: M.Sustain - /// Value range: 0 to 256 - /// - public void SetMSustain(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); - - /// - /// Original name: M.Volume - /// Value range: 0 to 256 - /// - public int GetMVolume() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: M.Volume - /// Value range: 0 to 256 - /// - public void SetMVolume(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct FMXModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FMXModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region module type-specific methods - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetVolume(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(9 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetVolume(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(9 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetAttack(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(14 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetAttack(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(14 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetDecay(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(19 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetDecay(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(19 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSustainLevel(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSustainLevel(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetRelease(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(29 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetRelease(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(29 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(34 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(34 + index - 1, (int)value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(39 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(39 + index - 1, (int)value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(44 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(44 + index - 1, (int)value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSustain(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSustain(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Off, On - /// - public Toggle GetSustainPedal(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (Toggle)ModuleHandle.GetControllerValue(54 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Off, On - /// - public void SetSustainPedal(int index, Toggle value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(54 + index - 1, (int)value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(59 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(59 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(64 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(64 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(69 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(69 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (FMXWaveform)ModuleHandle.GetControllerValue(74 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform(int index, FMXWaveform value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(74 + index - 1, (int)value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetNoise(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(79 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetNoise(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(79 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetPhase(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(84 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetPhase(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(84 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(89 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(89 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(94 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(94 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSelfModulation(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(99 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSelfModulation(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(99 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetFeedback(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(104 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetFeedback(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(104 + index - 1, value, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (FMXModulationType)ModuleHandle.GetControllerValue(109 + index - 1, ValueScalingType.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType(int index, FMXModulationType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(109 + index - 1, (int)value, ValueScalingType.Displayed); - } - - #endregion module type-specific methods - - - #region controllers - - /// - /// Original name: ADSR smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public ADSRSmoothTransitions GetADSRSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: ADSR smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public void SetADSRSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack1() => ModuleHandle.GetControllerValue(14, ValueScalingType.Displayed); - - /// - /// Original name: 1 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack1(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack2() => ModuleHandle.GetControllerValue(15, ValueScalingType.Displayed); - - /// - /// Original name: 2 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack2(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack3() => ModuleHandle.GetControllerValue(16, ValueScalingType.Displayed); - - /// - /// Original name: 3 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack3(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack4() => ModuleHandle.GetControllerValue(17, ValueScalingType.Displayed); - - /// - /// Original name: 4 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack4(int value) => ModuleHandle.SetControllerValue(17, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack5() => ModuleHandle.GetControllerValue(18, ValueScalingType.Displayed); - - /// - /// Original name: 5 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack5(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(34, ValueScalingType.Displayed); - - /// - /// Original name: 1 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(34, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(35, ValueScalingType.Displayed); - - /// - /// Original name: 2 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(35, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(36, ValueScalingType.Displayed); - - /// - /// Original name: 3 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(36, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(37, ValueScalingType.Displayed); - - /// - /// Original name: 4 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(37, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(38, ValueScalingType.Displayed); - - /// - /// Original name: 5 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(38, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch1() => ModuleHandle.GetControllerValue(94, ValueScalingType.Displayed); - - /// - /// Original name: 1 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch1(int value) => ModuleHandle.SetControllerValue(94, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch2() => ModuleHandle.GetControllerValue(95, ValueScalingType.Displayed); - - /// - /// Original name: 2 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch2(int value) => ModuleHandle.SetControllerValue(95, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch3() => ModuleHandle.GetControllerValue(96, ValueScalingType.Displayed); - - /// - /// Original name: 3 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch3(int value) => ModuleHandle.SetControllerValue(96, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch4() => ModuleHandle.GetControllerValue(97, ValueScalingType.Displayed); - - /// - /// Original name: 4 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch4(int value) => ModuleHandle.SetControllerValue(97, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch5() => ModuleHandle.GetControllerValue(98, ValueScalingType.Displayed); - - /// - /// Original name: 5 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch5(int value) => ModuleHandle.SetControllerValue(98, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay1() => ModuleHandle.GetControllerValue(19, ValueScalingType.Displayed); - - /// - /// Original name: 1 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay1(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay2() => ModuleHandle.GetControllerValue(20, ValueScalingType.Displayed); - - /// - /// Original name: 2 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay2(int value) => ModuleHandle.SetControllerValue(20, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay3() => ModuleHandle.GetControllerValue(21, ValueScalingType.Displayed); - - /// - /// Original name: 3 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay3(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay4() => ModuleHandle.GetControllerValue(22, ValueScalingType.Displayed); - - /// - /// Original name: 4 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay4(int value) => ModuleHandle.SetControllerValue(22, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay5() => ModuleHandle.GetControllerValue(23, ValueScalingType.Displayed); - - /// - /// Original name: 5 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay5(int value) => ModuleHandle.SetControllerValue(23, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(39, ValueScalingType.Displayed); - - /// - /// Original name: 1 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(39, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(40, ValueScalingType.Displayed); - - /// - /// Original name: 2 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(40, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(41, ValueScalingType.Displayed); - - /// - /// Original name: 3 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(41, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(42, ValueScalingType.Displayed); - - /// - /// Original name: 4 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(42, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(43, ValueScalingType.Displayed); - - /// - /// Original name: 5 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(43, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Envelope gain - /// Value range: 0 to 8000 - /// - public int GetEnvelopeGain() => ModuleHandle.GetControllerValue(118, ValueScalingType.Displayed); - - /// - /// Original name: Envelope gain - /// Value range: 0 to 8000 - /// - public void SetEnvelopeGain(int value) => ModuleHandle.SetControllerValue(118, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey1() => ModuleHandle.GetControllerValue(59, ValueScalingType.Displayed); - - /// - /// Original name: 1 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(59, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey2() => ModuleHandle.GetControllerValue(60, ValueScalingType.Displayed); - - /// - /// Original name: 2 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(60, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey3() => ModuleHandle.GetControllerValue(61, ValueScalingType.Displayed); - - /// - /// Original name: 3 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(61, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey4() => ModuleHandle.GetControllerValue(62, ValueScalingType.Displayed); - - /// - /// Original name: 4 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(62, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey5() => ModuleHandle.GetControllerValue(63, ValueScalingType.Displayed); - - /// - /// Original name: 5 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(63, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback1() => ModuleHandle.GetControllerValue(104, ValueScalingType.Displayed); - - /// - /// Original name: 1 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback1(int value) => ModuleHandle.SetControllerValue(104, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback2() => ModuleHandle.GetControllerValue(105, ValueScalingType.Displayed); - - /// - /// Original name: 2 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback2(int value) => ModuleHandle.SetControllerValue(105, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback3() => ModuleHandle.GetControllerValue(106, ValueScalingType.Displayed); - - /// - /// Original name: 3 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback3(int value) => ModuleHandle.SetControllerValue(106, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback4() => ModuleHandle.GetControllerValue(107, ValueScalingType.Displayed); - - /// - /// Original name: 4 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback4(int value) => ModuleHandle.SetControllerValue(107, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback5() => ModuleHandle.GetControllerValue(108, ValueScalingType.Displayed); - - /// - /// Original name: 5 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback5(int value) => ModuleHandle.SetControllerValue(108, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply1() => ModuleHandle.GetControllerValue(89, ValueScalingType.Displayed); - - /// - /// Original name: 1 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply1(int value) => ModuleHandle.SetControllerValue(89, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply2() => ModuleHandle.GetControllerValue(90, ValueScalingType.Displayed); - - /// - /// Original name: 2 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply2(int value) => ModuleHandle.SetControllerValue(90, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply3() => ModuleHandle.GetControllerValue(91, ValueScalingType.Displayed); - - /// - /// Original name: 3 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply3(int value) => ModuleHandle.SetControllerValue(91, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply4() => ModuleHandle.GetControllerValue(92, ValueScalingType.Displayed); - - /// - /// Original name: 4 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply4(int value) => ModuleHandle.SetControllerValue(92, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply5() => ModuleHandle.GetControllerValue(93, ValueScalingType.Displayed); - - /// - /// Original name: 5 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply5(int value) => ModuleHandle.SetControllerValue(93, value, ValueScalingType.Displayed); - - /// - /// Original name: Input -> Custom waveform - /// Possible values: Off, SingleCycle, Continuous - /// - public FMXCustomWaveform GetInputCustomWaveform() => (FMXCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Input -> Custom waveform - /// Possible values: Off, SingleCycle, Continuous - /// - public void SetInputCustomWaveform(FMXCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Input -> Operator # - /// Value range: 0 to 5 - /// - public int GetInputOperatorNum() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Input -> Operator # - /// Value range: 0 to 5 - /// - public void SetInputOperatorNum(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType1() => (FMXModulationType)ModuleHandle.GetControllerValue(109, ValueScalingType.Displayed); - - /// - /// Original name: 1 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType1(FMXModulationType value) => ModuleHandle.SetControllerValue(109, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType2() => (FMXModulationType)ModuleHandle.GetControllerValue(110, ValueScalingType.Displayed); - - /// - /// Original name: 2 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType2(FMXModulationType value) => ModuleHandle.SetControllerValue(110, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType3() => (FMXModulationType)ModuleHandle.GetControllerValue(111, ValueScalingType.Displayed); - - /// - /// Original name: 3 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType3(FMXModulationType value) => ModuleHandle.SetControllerValue(111, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType4() => (FMXModulationType)ModuleHandle.GetControllerValue(112, ValueScalingType.Displayed); - - /// - /// Original name: 4 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType4(FMXModulationType value) => ModuleHandle.SetControllerValue(112, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType5() => (FMXModulationType)ModuleHandle.GetControllerValue(113, ValueScalingType.Displayed); - - /// - /// Original name: 5 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType5(FMXModulationType value) => ModuleHandle.SetControllerValue(113, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise1() => ModuleHandle.GetControllerValue(79, ValueScalingType.Displayed); - - /// - /// Original name: 1 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise1(int value) => ModuleHandle.SetControllerValue(79, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise2() => ModuleHandle.GetControllerValue(80, ValueScalingType.Displayed); - - /// - /// Original name: 2 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise2(int value) => ModuleHandle.SetControllerValue(80, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise3() => ModuleHandle.GetControllerValue(81, ValueScalingType.Displayed); - - /// - /// Original name: 3 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise3(int value) => ModuleHandle.SetControllerValue(81, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise4() => ModuleHandle.GetControllerValue(82, ValueScalingType.Displayed); - - /// - /// Original name: 4 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise4(int value) => ModuleHandle.SetControllerValue(82, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise5() => ModuleHandle.GetControllerValue(83, ValueScalingType.Displayed); - - /// - /// Original name: 5 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise5(int value) => ModuleHandle.SetControllerValue(83, value, ValueScalingType.Displayed); - - /// - /// Original name: Noise filter (32768 - OFF) - /// Value range: 0 to 32768 - /// - public int GetNoiseFilter() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Noise filter (32768 - OFF) - /// Value range: 0 to 32768 - /// - public void SetNoiseFilter(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Output mode - /// Value range: 0 to 31 - /// - public int GetOutputMode1() => ModuleHandle.GetControllerValue(114, ValueScalingType.Displayed); - - /// - /// Original name: 1 Output mode - /// Value range: 0 to 31 - /// - public void SetOutputMode1(int value) => ModuleHandle.SetControllerValue(114, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Output mode - /// Value range: 0 to 15 - /// - public int GetOutputMode2() => ModuleHandle.GetControllerValue(115, ValueScalingType.Displayed); - - /// - /// Original name: 2 Output mode - /// Value range: 0 to 15 - /// - public void SetOutputMode2(int value) => ModuleHandle.SetControllerValue(115, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Output mode - /// Value range: 0 to 7 - /// - public int GetOutputMode3() => ModuleHandle.GetControllerValue(116, ValueScalingType.Displayed); - - /// - /// Original name: 3 Output mode - /// Value range: 0 to 7 - /// - public void SetOutputMode3(int value) => ModuleHandle.SetControllerValue(116, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Output mode - /// Value range: 0 to 3 - /// - public int GetOutputMode4() => ModuleHandle.GetControllerValue(117, ValueScalingType.Displayed); - - /// - /// Original name: 4 Output mode - /// Value range: 0 to 3 - /// - public void SetOutputMode4(int value) => ModuleHandle.SetControllerValue(117, value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase1() => ModuleHandle.GetControllerValue(84, ValueScalingType.Displayed); - - /// - /// Original name: 1 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase1(int value) => ModuleHandle.SetControllerValue(84, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase2() => ModuleHandle.GetControllerValue(85, ValueScalingType.Displayed); - - /// - /// Original name: 2 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase2(int value) => ModuleHandle.SetControllerValue(85, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase3() => ModuleHandle.GetControllerValue(86, ValueScalingType.Displayed); - - /// - /// Original name: 3 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase3(int value) => ModuleHandle.SetControllerValue(86, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase4() => ModuleHandle.GetControllerValue(87, ValueScalingType.Displayed); - - /// - /// Original name: 4 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase4(int value) => ModuleHandle.SetControllerValue(87, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase5() => ModuleHandle.GetControllerValue(88, ValueScalingType.Displayed); - - /// - /// Original name: 5 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase5(int value) => ModuleHandle.SetControllerValue(88, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Release - /// Value range: 0 to 10000 - /// - public int GetRelease1() => ModuleHandle.GetControllerValue(29, ValueScalingType.Displayed); - - /// - /// Original name: 1 Release - /// Value range: 0 to 10000 - /// - public void SetRelease1(int value) => ModuleHandle.SetControllerValue(29, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Release - /// Value range: 0 to 10000 - /// - public int GetRelease2() => ModuleHandle.GetControllerValue(30, ValueScalingType.Displayed); - - /// - /// Original name: 2 Release - /// Value range: 0 to 10000 - /// - public void SetRelease2(int value) => ModuleHandle.SetControllerValue(30, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Release - /// Value range: 0 to 10000 - /// - public int GetRelease3() => ModuleHandle.GetControllerValue(31, ValueScalingType.Displayed); - - /// - /// Original name: 3 Release - /// Value range: 0 to 10000 - /// - public void SetRelease3(int value) => ModuleHandle.SetControllerValue(31, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Release - /// Value range: 0 to 10000 - /// - public int GetRelease4() => ModuleHandle.GetControllerValue(32, ValueScalingType.Displayed); - - /// - /// Original name: 4 Release - /// Value range: 0 to 10000 - /// - public void SetRelease4(int value) => ModuleHandle.SetControllerValue(32, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Release - /// Value range: 0 to 10000 - /// - public int GetRelease5() => ModuleHandle.GetControllerValue(33, ValueScalingType.Displayed); - - /// - /// Original name: 5 Release - /// Value range: 0 to 10000 - /// - public void SetRelease5(int value) => ModuleHandle.SetControllerValue(33, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(44, ValueScalingType.Displayed); - - /// - /// Original name: 1 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(44, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(45, ValueScalingType.Displayed); - - /// - /// Original name: 2 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(45, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(46, ValueScalingType.Displayed); - - /// - /// Original name: 3 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(46, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(47, ValueScalingType.Displayed); - - /// - /// Original name: 4 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(47, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(48, ValueScalingType.Displayed); - - /// - /// Original name: 5 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(48, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native - /// - public FMXSampleRate GetSampleRate() => (FMXSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native - /// - public void SetSampleRate(FMXSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation1() => ModuleHandle.GetControllerValue(99, ValueScalingType.Displayed); - - /// - /// Original name: 1 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation1(int value) => ModuleHandle.SetControllerValue(99, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation2() => ModuleHandle.GetControllerValue(100, ValueScalingType.Displayed); - - /// - /// Original name: 2 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation2(int value) => ModuleHandle.SetControllerValue(100, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation3() => ModuleHandle.GetControllerValue(101, ValueScalingType.Displayed); - - /// - /// Original name: 3 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation3(int value) => ModuleHandle.SetControllerValue(101, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation4() => ModuleHandle.GetControllerValue(102, ValueScalingType.Displayed); - - /// - /// Original name: 4 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation4(int value) => ModuleHandle.SetControllerValue(102, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation5() => ModuleHandle.GetControllerValue(103, ValueScalingType.Displayed); - - /// - /// Original name: 5 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation5(int value) => ModuleHandle.SetControllerValue(103, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain1() => (ADSRSustainMode)ModuleHandle.GetControllerValue(49, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain1(ADSRSustainMode value) => ModuleHandle.SetControllerValue(49, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain2() => (ADSRSustainMode)ModuleHandle.GetControllerValue(50, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain2(ADSRSustainMode value) => ModuleHandle.SetControllerValue(50, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain3() => (ADSRSustainMode)ModuleHandle.GetControllerValue(51, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain3(ADSRSustainMode value) => ModuleHandle.SetControllerValue(51, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain4() => (ADSRSustainMode)ModuleHandle.GetControllerValue(52, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain4(ADSRSustainMode value) => ModuleHandle.SetControllerValue(52, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain5() => (ADSRSustainMode)ModuleHandle.GetControllerValue(53, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain5(ADSRSustainMode value) => ModuleHandle.SetControllerValue(53, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel1() => ModuleHandle.GetControllerValue(24, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel1(int value) => ModuleHandle.SetControllerValue(24, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel2() => ModuleHandle.GetControllerValue(25, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel2(int value) => ModuleHandle.SetControllerValue(25, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel3() => ModuleHandle.GetControllerValue(26, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel3(int value) => ModuleHandle.SetControllerValue(26, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel4() => ModuleHandle.GetControllerValue(27, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel4(int value) => ModuleHandle.SetControllerValue(27, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel5() => ModuleHandle.GetControllerValue(28, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel5(int value) => ModuleHandle.SetControllerValue(28, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal1() => (Toggle)ModuleHandle.GetControllerValue(54, ValueScalingType.Displayed); - - /// - /// Original name: 1 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal1(Toggle value) => ModuleHandle.SetControllerValue(54, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal2() => (Toggle)ModuleHandle.GetControllerValue(55, ValueScalingType.Displayed); - - /// - /// Original name: 2 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal2(Toggle value) => ModuleHandle.SetControllerValue(55, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal3() => (Toggle)ModuleHandle.GetControllerValue(56, ValueScalingType.Displayed); - - /// - /// Original name: 3 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal3(Toggle value) => ModuleHandle.SetControllerValue(56, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal4() => (Toggle)ModuleHandle.GetControllerValue(57, ValueScalingType.Displayed); - - /// - /// Original name: 4 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal4(Toggle value) => ModuleHandle.SetControllerValue(57, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal5() => (Toggle)ModuleHandle.GetControllerValue(58, ValueScalingType.Displayed); - - /// - /// Original name: 5 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal5(Toggle value) => ModuleHandle.SetControllerValue(58, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity1() => ModuleHandle.GetControllerValue(69, ValueScalingType.Displayed); - - /// - /// Original name: 1 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity1(int value) => ModuleHandle.SetControllerValue(69, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity2() => ModuleHandle.GetControllerValue(70, ValueScalingType.Displayed); - - /// - /// Original name: 2 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity2(int value) => ModuleHandle.SetControllerValue(70, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity3() => ModuleHandle.GetControllerValue(71, ValueScalingType.Displayed); - - /// - /// Original name: 3 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity3(int value) => ModuleHandle.SetControllerValue(71, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity4() => ModuleHandle.GetControllerValue(72, ValueScalingType.Displayed); - - /// - /// Original name: 4 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity4(int value) => ModuleHandle.SetControllerValue(72, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity5() => ModuleHandle.GetControllerValue(73, ValueScalingType.Displayed); - - /// - /// Original name: 5 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity5(int value) => ModuleHandle.SetControllerValue(73, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume1() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: 1 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume1(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume2() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: 2 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume2(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume3() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: 3 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume3(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume4() => ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: 4 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume4(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume5() => ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: 5 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume5(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey1() => ModuleHandle.GetControllerValue(64, ValueScalingType.Displayed); - - /// - /// Original name: 1 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(64, value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey2() => ModuleHandle.GetControllerValue(65, ValueScalingType.Displayed); - - /// - /// Original name: 2 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(65, value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey3() => ModuleHandle.GetControllerValue(66, ValueScalingType.Displayed); - - /// - /// Original name: 3 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(66, value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey4() => ModuleHandle.GetControllerValue(67, ValueScalingType.Displayed); - - /// - /// Original name: 4 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(67, value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey5() => ModuleHandle.GetControllerValue(68, ValueScalingType.Displayed); - - /// - /// Original name: 5 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(68, value, ValueScalingType.Displayed); - - /// - /// Original name: 1 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform1() => (FMXWaveform)ModuleHandle.GetControllerValue(74, ValueScalingType.Displayed); - - /// - /// Original name: 1 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform1(FMXWaveform value) => ModuleHandle.SetControllerValue(74, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 2 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform2() => (FMXWaveform)ModuleHandle.GetControllerValue(75, ValueScalingType.Displayed); - - /// - /// Original name: 2 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform2(FMXWaveform value) => ModuleHandle.SetControllerValue(75, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 3 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform3() => (FMXWaveform)ModuleHandle.GetControllerValue(76, ValueScalingType.Displayed); - - /// - /// Original name: 3 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform3(FMXWaveform value) => ModuleHandle.SetControllerValue(76, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 4 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform4() => (FMXWaveform)ModuleHandle.GetControllerValue(77, ValueScalingType.Displayed); - - /// - /// Original name: 4 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform4(FMXWaveform value) => ModuleHandle.SetControllerValue(77, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: 5 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform5() => (FMXWaveform)ModuleHandle.GetControllerValue(78, ValueScalingType.Displayed); - - /// - /// Original name: 5 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform5(FMXWaveform value) => ModuleHandle.SetControllerValue(78, (int)value, ValueScalingType.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read CustomWaveform containing 256 values. - /// Value range: -1 to 1. - /// Used as a waveform where 'Custom' waveform type was applied. - /// - public void ReadCustomWaveform(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write CustomWaveform containing 256 values. - /// Value range: -1 to 1. - /// Used as a waveform where 'Custom' waveform type was applied. - /// - public void WriteCustomWaveform(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - - } - - public struct GeneratorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GeneratorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1022 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1022 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq.modulation by input - /// Value range: 0 to 256 - /// - public int GetFreqModulationByInput() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Freq.modulation by input - /// Value range: 0 to 256 - /// - public void SetFreqModulationByInput(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono - /// - public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono - /// - public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin - /// - public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin - /// - public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct GlideModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GlideModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public int GetPitchScale() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Possible values: Off, On - /// - public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Possible values: Off, On - /// - public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Reset - /// Possible values: Off, On - /// - public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Reset - /// Possible values: Off, On - /// - public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Reset on 1st note - /// Possible values: Off, On - /// - public Toggle GetResetOnFirstNote() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Reset on 1st note - /// Possible values: Off, On - /// - public void SetResetOnFirstNote(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct GPIOModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GPIOModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: In - /// Possible values: Off, On - /// - public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: In - /// Possible values: Off, On - /// - public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: In amplitude - /// Value range: 0 to 100 - /// - public int GetInAmplitude() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: In amplitude - /// Value range: 0 to 100 - /// - public void SetInAmplitude(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: In note - /// Value range: 0 to 128 - /// - public int GetInNote() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: In note - /// Value range: 0 to 128 - /// - public void SetInNote(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: In pin - /// Value range: 0 to 256 - /// - public int GetInPin() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: In pin - /// Value range: 0 to 256 - /// - public void SetInPin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Out - /// Possible values: Off, On - /// - public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Out - /// Possible values: Off, On - /// - public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Out pin - /// Value range: 0 to 256 - /// - public int GetOutPin() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Out pin - /// Value range: 0 to 256 - /// - public void SetOutPin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Out threshold - /// Value range: 0 to 100 - /// - public int GetOutThreshold() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Out threshold - /// Value range: 0 to 100 - /// - public void SetOutThreshold(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct InputModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public InputModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct KickerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public KickerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Acceleration - /// Value range: 0 to 1024 - /// - public int GetAcceleration() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Acceleration - /// Value range: 0 to 1024 - /// - public void SetAcceleration(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Boost - /// Value range: 0 to 1024 - /// - public int GetBoost() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Boost - /// Value range: 0 to 1024 - /// - public void SetBoost(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: No click - /// Possible values: Off, On - /// - public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: No click - /// Possible values: Off, On - /// - public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Square, Sin - /// - public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Square, Sin - /// - public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct LFOModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public LFOModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public int GetAmplitude() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 256 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 256 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 256 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 256 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public int GetFreqScale() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public LFOFrequencyUnit GetFrequencyUnit() => (LFOFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetFrequencyUnit(LFOFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Generator - /// Possible values: Off, On - /// - public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Generator - /// Possible values: Off, On - /// - public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: Amplitude, Panning - /// - public LFOType GetLfoType() => (LFOType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Type - /// Possible values: Amplitude, Panning - /// - public void SetLfoType(LFOType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public int GetSetPhase() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Sine quality - /// Possible values: Auto, Low, Middle, High - /// - public LFOSineQuality GetSineQuality() => (LFOSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: Sine quality - /// Possible values: Auto, Low, Middle, High - /// - public void SetSineQuality(LFOSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, Waveform - /// - public LFOSmoothTransitions GetSmoothTransitions() => (LFOSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, Waveform - /// - public void SetSmoothTransitions(LFOSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated - /// - public LFOWaveform GetWaveform() => (LFOWaveform)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated - /// - public void SetWaveform(LFOWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct LoopModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public LoopModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Length - /// Value range: 0 to 256 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Length - /// Value range: 0 to 256 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Length unit - /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz - /// - public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Length unit - /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz - /// - public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Max buffer size - /// Value range: 1 to 240 - /// Max buffer size in seconds - /// - public int GetMaxBufferSize() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Max buffer size - /// Value range: 1 to 240 - /// Max buffer size in seconds - /// - public void SetMaxBufferSize(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Normal, PingPong - /// - public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: Normal, PingPong - /// - public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: Restart, RestartCurrentIteration - /// - public LoopOnNoteOn GetOnNoteOn() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: Restart, RestartCurrentIteration - /// - public void SetOnNoteOn(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Repeat (128=endless) - /// Value range: 0 to 128 - /// - public int GetRepeats() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Repeat (128=endless) - /// Value range: 0 to 128 - /// - public void SetRepeats(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct MetaModuleModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MetaModuleModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region module type-specific methods - - /// - public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path); - - /// - public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); - #endregion module type-specific methods - - - #region controllers - - /// - /// Original name: BPM (Beats Per Minute) - /// Value range: 1 to 1000 - /// - public int GetBPM() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: BPM (Beats Per Minute) - /// Value range: 1 to 1000 - /// - public void SetBPM(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Input module - /// Value range: 1 to 256 - /// - public int GetInputModule() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Input module - /// Value range: 1 to 256 - /// - public void SetInputModule(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Play patterns - /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless - /// - public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Play patterns - /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless - /// - public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: TPL (Ticks Per Line) - /// Value range: 1 to 31 - /// - public int GetTPL() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: TPL (Ticks Per Line) - /// Value range: 1 to 31 - /// - public void SetTPL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct ModulatorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ModulatorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Modulation type - /// Possible values: Amplitude, Phase, PhaseAbsolute - /// - public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Modulation type - /// Possible values: Amplitude, Phase, PhaseAbsolute - /// - public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct MultiControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MultiControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public int GetGain() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public int GetOUTOffset() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public void SetOUTOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Quantization - /// Value range: 0 to 32768 - /// - public int GetQuantization() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Quantization - /// Value range: 0 to 32768 - /// - public void SetQuantization(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Value - /// Value range: 0 to 32768 - /// - public int GetValue() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Value - /// Value range: 0 to 32768 - /// - public void SetValue(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read Curve containing 257 values. - /// Value range: 0 to 1. - /// Modifies applied values. - /// - public void ReadCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write Curve containing 257 values. - /// Value range: 0 to 1. - /// Modifies applied values. - /// - public void WriteCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } - - public struct MultiSynthModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MultiSynthModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Curve2 influence - /// Value range: 0 to 256 - /// - public int GetCurve2Influence() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Curve2 influence - /// Value range: 0 to 256 - /// - public void SetCurve2Influence(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Phase - /// Value range: 0 to 32768 - /// - public int GetPhase() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Phase - /// Value range: 0 to 32768 - /// - public void SetPhase(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public int GetRandomPhase() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Random pitch - /// Value range: 0 to 4096 - /// - public int GetRandomPitch() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Random pitch - /// Value range: 0 to 4096 - /// - public void SetRandomPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Random velocity - /// Value range: 0 to 32768 - /// - public int GetRandomVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Random velocity - /// Value range: 0 to 32768 - /// - public void SetRandomVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public int GetVelocity() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public void SetVelocity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read NoteVelocityCurve containing 128 values. - /// Value range: 0 to 1. - /// Velocity to apply to arriving note. - /// - public void ReadNoteVelocityCurve(float[] buffer) - { - if (buffer.Length < 128) - throw new System.ArgumentException("Buffer must be at least of size 128"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write NoteVelocityCurve containing 128 values. - /// Value range: 0 to 1. - /// Velocity to apply to arriving note. - /// - public void WriteNoteVelocityCurve(float[] buffer) - { - if (buffer.Length < 128) - throw new System.ArgumentException("Buffer must be at least of size 128"); - - ModuleHandle.WriteCurve(0, buffer); - } - - /// - /// Read VelocityToVelocityCurve containing 257 values. - /// Value range: 0 to 1. - /// Map velocity values. - /// - public void ReadVelocityToVelocityCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.ReadCurve(1, buffer); - } - - /// - /// Write VelocityToVelocityCurve containing 257 values. - /// Value range: 0 to 1. - /// Map velocity values. - /// - public void WriteVelocityToVelocityCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.WriteCurve(1, buffer); - } - - #endregion curves - } - - public struct OutputModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public OutputModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - } - - public struct PitchDetectorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchDetectorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Alg1 Sensitivity (absolute threshold) - /// Value range: 0 to 100 - /// - public int GetAlg1Sensitivity() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Alg1 Sensitivity (absolute threshold) - /// Value range: 0 to 100 - /// - public void SetAlg1Sensitivity(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Buffer (ms) - /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 - /// - public PitchDetectorBufferSize GetAlgBufferMs() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Buffer (ms) - /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 - /// - public void SetAlgBufferMs(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Buf overlap - /// Value range: 0 to 100 - /// - public int GetAlgBufOverlap() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Buf overlap - /// Value range: 0 to 100 - /// - public void SetAlgBufOverlap(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Algorithm - /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum - /// - public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Algorithm - /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum - /// - public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Sample rate (Hz) - /// Possible values: Hz12000, Hz24000, Hz44100 - /// - public PitchDetectorAlgSampleRate GetAlgSampleRateHz() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Alg1-2 Sample rate (Hz) - /// Possible values: Hz12000, Hz24000, Hz44100 - /// - public void SetAlgSampleRateHz(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Detector finetune - /// Value range: -256 to 256 - /// - public int GetDetectorFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Detector finetune - /// Value range: -256 to 256 - /// - public void SetDetectorFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 256 - /// - public int GetGain() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 256 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: LP filter freq (0 - OFF) - /// Value range: 0 to 4000 - /// - public int GetLPFilterFreq() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: LP filter freq (0 - OFF) - /// Value range: 0 to 4000 - /// - public void SetLPFilterFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: LP filter roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterRollOff GetLPFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: LP filter roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetLPFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Microtones - /// Possible values: Off, On - /// - public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Microtones - /// Possible values: Off, On - /// - public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 10000 - /// - public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 10000 - /// - public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct PitchShifterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchShifterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Bypass if pitch=0 - /// Possible values: Off, SlowTransition, FastTransition - /// - public PitchShifterBypassMode GetBypassIfPitchZero() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Bypass if pitch=0 - /// Possible values: Off, SlowTransition, FastTransition - /// - public void SetBypassIfPitchZero(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Grain size - /// Value range: 0 to 256 - /// - public int GetGrainSize() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Grain size - /// Value range: 0 to 256 - /// - public void SetGrainSize(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public int GetPitchScale() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct PitchToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: First note - /// Value range: 0 to 256 - /// - public int GetFirstNote() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 256 - /// - public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: FrequencyHz, Pitch - /// - public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: FrequencyHz, Pitch - /// - public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, PitchDown, PitchUp - /// - public PitchToControlOnNoteOff GetOnNoteOff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, PitchDown, PitchUp - /// - public void SetOnNoteOff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOUTController() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOUTController(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOUTMax() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOUTMax(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOUTMin() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOUTMin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 256 - /// - public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 256 - /// - public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct ReverbModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ReverbModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: All-pass filter - /// Possible values: Off, On - /// - public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: All-pass filter - /// Possible values: Off, On - /// - public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Damp - /// Value range: 0 to 256 - /// - public int GetDamp() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Damp - /// Value range: 0 to 256 - /// - public void SetDamp(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Freeze - /// Possible values: Off, On - /// - public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Freeze - /// Possible values: Off, On - /// - public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public int GetRandomSeed() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: Room size - /// Value range: 0 to 128 - /// - public int GetRoomSize() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Room size - /// Value range: 0 to 128 - /// - public void SetRoomSize(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct SamplerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SamplerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region module type-specific methods - - /// - public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot); - - /// - public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot); - #endregion module type-specific methods - - - #region controllers - - /// - /// Original name: Envelope interpolation - /// Possible values: Off, Linear - /// - public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Envelope interpolation - /// Possible values: Off, Linear - /// - public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Rec threshold - /// Value range: 0 to 10000 - /// - public int GetRecThreshold() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Rec threshold - /// Value range: 0 to 10000 - /// - public void SetRecThreshold(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Sample interpolation - /// Possible values: Off, Linear, Spline - /// - public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Sample interpolation - /// Possible values: Off, Linear, Spline - /// - public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct SoundToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SoundToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public int GetGain() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: LQ, HQ - /// - public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: LQ, HQ - /// - public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOUTController() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOUTController(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOutMax() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOutMax(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOutMin() => ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOutMin(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Smooth - /// Value range: 0 to 256 - /// - public int GetSmooth() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Smooth - /// Value range: 0 to 256 - /// - public void SetSmooth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct SpectraVoiceModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SpectraVoiceModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Harmonic - /// Value range: 0 to 15 - /// - public int GetHarmonic() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Harmonic - /// Value range: 0 to 15 - /// - public void SetHarmonic(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: H.freq - /// Value range: 0 to 22050 - /// - public int GetHarmonicFreq() => ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: H.freq - /// Value range: 0 to 22050 - /// - public void SetHarmonicFreq(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingType.Displayed); - - /// - /// Original name: H.type - /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal - /// - public SpectraVoiceHarmonicType GetHarmonicType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: H.type - /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal - /// - public void SetHarmonicType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: H.volume - /// Value range: 0 to 255 - /// - public int GetHarmonicVolume() => ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: H.volume - /// Value range: 0 to 255 - /// - public void SetHarmonicVolume(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingType.Displayed); - - /// - /// Original name: H.width - /// Value range: 0 to 255 - /// - public int GetHarmonicWidth() => ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: H.width - /// Value range: 0 to 255 - /// - public void SetHarmonicWidth(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline - /// - public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline - /// - public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Spectrum resolution - /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 - /// - public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Spectrum resolution - /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 - /// - public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct VelocityToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VelocityToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, VelocityDown, VelocityUp - /// - public VelocityToControlOnNoteOff GetOnNoteOff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, VelocityDown, VelocityUp - /// - public void SetOnNoteOff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOutController() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOutController(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOutMax() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOutMax(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOutMin() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOutMin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public int GetOutOffset() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public void SetOutOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct VibratoModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VibratoModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public int GetAmplitude() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Exponential amplitude - /// Possible values: Off, On - /// - public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Exponential amplitude - /// Possible values: Off, On - /// - public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 2048 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 2048 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public int GetSetPhase() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct VocalFilterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VocalFilterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Formants - /// Value range: 1 to 5 - /// - public int GetFormants() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Formants - /// Value range: 1 to 5 - /// - public void SetFormants(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Formant width - /// Value range: 0 to 256 - /// - public int GetFormantWidth() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Formant width - /// Value range: 0 to 256 - /// - public void SetFormantWidth(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Intensity - /// Value range: 0 to 256 - /// - public int GetIntensity() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Intensity - /// Value range: 0 to 256 - /// - public void SetIntensity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Random frequency - /// Value range: 0 to 1024 - /// - public int GetRandomFrequency() => ModuleHandle.GetControllerValue(7, ValueScalingType.Displayed); - - /// - /// Original name: Random frequency - /// Value range: 0 to 1024 - /// - public void SetRandomFrequency(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingType.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public int GetRandomSeed() => ModuleHandle.GetControllerValue(8, ValueScalingType.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingType.Displayed); - - /// - /// Original name: Voice type - /// Possible values: Soprano, Alto, Tenor, Bass - /// - public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Voice type - /// Possible values: Soprano, Alto, Tenor, Bass - /// - public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel (a,e,i,o,u) - /// Value range: 0 to 256 - /// - public int GetVowel() => ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Vowel (a,e,i,o,u) - /// Value range: 0 to 256 - /// - public void SetVowel(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel1 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingType.Displayed); - - /// - /// Original name: Vowel1 - /// Possible values: A, E, I, O, U - /// - public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel2 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingType.Displayed); - - /// - /// Original name: Vowel2 - /// Possible values: A, E, I, O, U - /// - public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel3 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingType.Displayed); - - /// - /// Original name: Vowel3 - /// Possible values: A, E, I, O, U - /// - public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel4 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingType.Displayed); - - /// - /// Original name: Vowel4 - /// Possible values: A, E, I, O, U - /// - public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Vowel5 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingType.Displayed); - - /// - /// Original name: Vowel5 - /// Possible values: A, E, I, O, U - /// - public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct VorbisPlayerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VorbisPlayerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region module type-specific methods - - /// - public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path); - - /// - public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data); - #endregion module type-specific methods - - - #region controllers - - /// - /// Original name: Finetune - /// Value range: -128 to 128 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Finetune - /// Value range: -128 to 128 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Interpolation - /// Possible values: Off, On - /// - public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Interpolation - /// Possible values: Off, On - /// - public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Original speed - /// Possible values: Off, On - /// - public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Original speed - /// Possible values: Off, On - /// - public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingType.Displayed); - - /// - /// Original name: Repeat - /// Possible values: Off, On - /// - public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingType.Displayed); - - /// - /// Original name: Repeat - /// Possible values: Off, On - /// - public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - #endregion controllers - } - - public struct WaveShaperModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public WaveShaperModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - - #region controllers - - /// - /// Original name: DC blocker - /// Possible values: Off, On - /// - public Toggle GetDCBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingType.Displayed); - - /// - /// Original name: DC blocker - /// Possible values: Off, On - /// - public void SetDCBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Input volume - /// Value range: 0 to 512 - /// - public int GetInputVolume() => ModuleHandle.GetControllerValue(0, ValueScalingType.Displayed); - - /// - /// Original name: Input volume - /// Value range: 0 to 512 - /// - public void SetInputVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public int GetMix() => ModuleHandle.GetControllerValue(1, ValueScalingType.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingType.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingType.Displayed); - - /// - /// Original name: Output volume - /// Value range: 0 to 512 - /// - public int GetOutputVolume() => ModuleHandle.GetControllerValue(2, ValueScalingType.Displayed); - - /// - /// Original name: Output volume - /// Value range: 0 to 512 - /// - public void SetOutputVolume(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingType.Displayed); - - /// - /// Original name: Symmetric - /// Possible values: Off, On - /// - public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingType.Displayed); - - /// - /// Original name: Symmetric - /// Possible values: Off, On - /// - public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingType.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read Curve containing 256 values. - /// Value range: 0 to 1. - /// Maps input to output. - /// - public void ReadCurve(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write Curve containing 256 values. - /// Value range: 0 to 1. - /// Maps input to output. - /// - public void WriteCurve(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } -} diff --git a/SunSharp/ObjectWrapper/PatternHandle.cs b/SunSharp/ObjectWrapper/PatternHandle.cs deleted file mode 100644 index ceae3fb..0000000 --- a/SunSharp/ObjectWrapper/PatternHandle.cs +++ /dev/null @@ -1,167 +0,0 @@ -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - /// - /// Represents a pattern. The underlying SunVox pattern may or may not exist! - /// - public readonly struct PatternHandle - { - private readonly ISunVoxLib _lib; - private readonly int _id; - private readonly int _slotId; - private readonly Slot _slot; - - public int Id => _id; - public Slot Slot => _slot; - public ISunVoxLib Library => _lib; - - public PatternHandle(Timeline timeline, int id) - { - _lib = timeline.Slot.SunVox.Library; - _slot = timeline.Slot; - _slotId = timeline.Slot.Id; - _id = id; - } - - public bool GetExists() => _lib.GetPatternExists(_slotId, _id); - - public string? GetName() => _lib.GetPatternName(_slotId, _id); - - public void SetName(string name) - { - var lib = _lib; - var slotId = _slotId; - var id = _id; - _slot.RunInLock(() => lib.SetPatternName(slotId, id, name)); - } - - public (int x, int y) GetPosition() => _lib.GetPatternPosition(_slotId, _id); - - public void SetPosition(int x, int y) - { - var lib = _lib; - var slotId = _slotId; - var id = _id; - _slot.RunInLock(() => lib.SetPatternPosition(slotId, id, x, y)); - } - - public int GetTrackCount() => _lib.GetPatternTracks(_slotId, _id); - - public int GetLength() => _lib.GetPatternLines(_slotId, _id); - - /// - /// Resize the pattern. - /// - /// to leave as is. - /// to leave as is. - public void Resize(int? tracks = null, int? lines = null) - { - var lib = _lib; - var slotId = _slotId; - var id = _id; - _slot.RunInLock(() => lib.SetPatternSize(slotId, id, tracks, lines)); - } - - public PatternEvent[]? GetData() - { - var slotId = _slotId; - var id = _id; - var lib = _lib; - return _slot.RunInLock(() => lib.GetPatternData(slotId, id)); - } - - public PatternEvent[,]? GetData2D() - { - var slotId = _slotId; - var id = _id; - var lib = _lib; - var (data, tracks, lines) = _slot.RunInLock(() => - { - var data = lib.GetPatternData(slotId, id); - var tracks = lib.GetPatternTracks(slotId, id); - var lines = lib.GetPatternLines(slotId, id); - return (_data: data, _tracks: tracks, _lines: lines); - }); - - if (data == null) - return null; - - var newData = new PatternEvent[lines, tracks]; - - for (var l = 0; l < lines; l++) - for (var t = 0; t < tracks; t++) - newData[l, t] = data[l * tracks + t]; - - return newData; - } - - public void SetData(PatternEvent[] data) - { - var slotId = _slotId; - var id = _id; - var lib = _lib; - _slot.RunInLock(() => { lib.SetPatternData(slotId, id, data); }); - } - - public void SetData2D(PatternEvent[,] data) - { - // TODO: sv_set_pattern_data() does not exist - var slotId = _slotId; - var id = _id; - var lib = _lib; - int inputLines = data.GetLength(0); - int inputTracks = data.GetLength(1); - var newData = new PatternEvent[inputLines * inputTracks]; - - for (int l = 0; l < inputLines; l++) - for (int t = 0; t < inputTracks; t++) - newData[l * inputTracks + t] = data[l, t]; - - _slot.RunInLock(() => { lib.SetPatternData(slotId, id, newData); }); - } - - public void SetMute(int id, bool mute) - { - var lib = _lib; - var slotId = _id; - _slot.RunInLock(() => { lib.SetPatternMute(slotId, id, mute); }); - } - - public bool GetMute(int id) - { - var lib = _lib; - var slotId = _id; - return _slot.RunInLock(() => - { - var wasMuted = lib.SetPatternMute(slotId, id, false); - lib.SetPatternMute(slotId, id, wasMuted); - return wasMuted; - }); - } - - public void SetEvent(int track, int line, PatternEvent @event) - { - var lib = _lib; - var slotId = _id; - var id = _id; - _slot.RunInLock(() => { lib.SetPatternEvent(slotId, id, track, line, @event); }); - } - - public void SetEvent(int track, int line, int NN, int VV, int MM, int CCEE, int XXYY) - { - var lib = _lib; - var slotId = _id; - var id = _id; - _slot.RunInLock(() => { lib.SetPatternEvent(slotId, id, track, line, NN, VV, MM, CCEE, XXYY); }); - } - - public int GetEventValue(int track, int line, Column column) - { - var lib = _lib; - var slotId = _id; - var id = _id; - return _slot.RunInLock(() => { return lib.GetPatternEventValue(slotId, id, track, line, column); }); - } - } -} diff --git a/SunSharp/ObjectWrapper/Slot.cs b/SunSharp/ObjectWrapper/Slot.cs deleted file mode 100644 index e932c96..0000000 --- a/SunSharp/ObjectWrapper/Slot.cs +++ /dev/null @@ -1,272 +0,0 @@ -using System; -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - /// - /// Represents a SunVox slot. - /// - public class Slot - { - private readonly Slots _slots; - - public int Id { get; } - - /// - /// Virtual, 16-track pattern for sending events to the engine. - /// - public VirtualPattern VirtualPattern { get; } - - /// - /// Project timeline, containing all the existing patterns. - /// - public Timeline Timeline { get; } - - /// - /// Project synthesizer, containing all the existing modules. - /// - public Synthesizer Synthesizer { get; } - - public SunVox SunVox { get; } - - /// - /// Underlying library instance. - /// - public ISunVoxLib Library { get; } - - public bool IsOpen { get; private set; } - - internal Slot(int id, Slots slots, SunVox sunVox) - { - Id = id; - _slots = slots; - SunVox = sunVox; - Library = sunVox.Library; - VirtualPattern = new VirtualPattern(this); - Timeline = new Timeline(this); - Synthesizer = new Synthesizer(this); - } - - #region locks - - /// - /// Use to execute multiple operations in the 'same' SunVox time. - /// - /// - public void RunInLock(Action action) - { - if (!IsOpen) - throw new InvalidOperationException("Slot is closed."); - - Library.RunInLock(Id, action); - } - - /// - public T RunInLock(Func function) - { - if (!IsOpen) - throw new InvalidOperationException("Slot is closed."); - - return Library.RunInLock(Id, function); - } - - protected void Lock() => Library.LockSlot(Id); - - protected void Unlock() => Library.UnlockSlot(Id); - - #endregion locks - - #region open, close - - public void Open() - { - _slots.RunInOpeningLock(() => - { - if (!IsOpen) - { - Library.OpenSlot(Id); - IsOpen = true; - RunInLock(() => VirtualPattern.ResetEventTiming()); - } - }); - } - - public void Close() - { - _slots.RunInOpeningLock(() => - { - if (IsOpen) - { - IsOpen = false; - Library.CloseSlot(Id); - } - }); - } - - #endregion open, close - - #region loading, saving - - /// - /// Load a project from file. - /// - /// - public void Load(string path) => RunInLock(() => Library.Load(Id, path)); - - /// - /// load a project from memory. - /// - /// - public void Load(byte[] data) => RunInLock(() => Library.Load(Id, data)); - - /// - /// Save a project to file. - /// - /// - public void Save(string path) => RunInLock(() => Library.Save(Id, path)); - - #endregion loading, saving - - #region playing, stopping - - public void Play() - { - RunInLock(() => Library.Play(Id)); - } - - public void PlayFromBeginning() - { - RunInLock(() => Library.PlayFromBeginning(Id)); - } - - public void Stop() - { - RunInLock(() => Library.Stop(Id)); - } - - public void ResumeOnSyncEffect() - { - RunInLock(() => Library.ResumeOnSyncEffect(Id)); - } - - public void PauseAudio() - { - RunInLock(() => Library.Pause(Id)); - } - - public void ResumeAudio() - { - RunInLock(() => Library.Resume(Id)); - } - - public void SetAutostop(bool enable) - { - RunInLock(() => Library.SetAutoStop(Id, enable)); - } - - public bool GetAutostop() - { - return Library.GetAutostop(Id); - } - - public bool IsPlaying() - { - return Library.IsPlaying(Id); - } - - public void Rewind(int lineNumber) - { - RunInLock(() => Library.Rewind(Id, lineNumber)); - } - - public int GetCurrentLine() - { - return Library.GetCurrentLine(Id); - } - - /// - /// Get current line in fixed point format (with tenth part). - /// - public int GetCurrentLineHundreds() - { - return Library.GetCurrentLine2(Id); - } - - public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) - { - return Library.GetCurrentSignalLevel(Id, (int)channel); - } - - #endregion playing, stopping - - #region song properties - - public int GetVolume() - { - return Library.Volume(Id, -1); - } - - public void SetVolume(int value) - { - Library.Volume(Id, value); - } - - public int GetSongBpm() - { - return Library.GetSongBpm(Id); - } - - public void SetSongBpm(int value) - { - var xxyy = (ushort)Math.Min(Math.Max(0, value), 800); - VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetBpm, xxyy)); - } - - public int GetSongTpl() - { - return Library.GetSongTpl(Id); - } - - public void SetSongTpl(int value) - { - var xxyy = (ushort)Math.Min(Math.Max(1, value), 31); - VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetPlayingSpeed, xxyy)); - } - - public int GetSongLengthInLines() - { - return Library.GetSongLengthInLines(Id); - } - - public int GetSongLengthInFrames() - { - return Library.GetSongLengthInFrames(Id); - } - - public string? GetSongName() - { - return Library.GetSongName(Id); - } - - public void SetSongName(string name) - { - Library.SetSongName(Id, name); - } - - /// - /// Get the project time map. - /// For = , Nth value equals speed at the beginning of Nth line (Bpm | Tpl << 16). - /// For = , Nth value equals frame counter at the beginning of Nth line. - /// - /// - /// - /// - /// - public uint[] GetTimeMap(int startLine, int length, TimeMapType type) - { - return Library.GetTimeMap(Id, startLine, length, type); - } - - #endregion song properties - } -} diff --git a/SunSharp/ObjectWrapper/Slots.cs b/SunSharp/ObjectWrapper/Slots.cs deleted file mode 100644 index 303f318..0000000 --- a/SunSharp/ObjectWrapper/Slots.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.ObjectWrapper -{ - public class Slots : IEnumerable - { - public const int SlotCount = 16; - - private readonly Slot[] _slots; - private readonly object _lock; - - /// - /// Get a reference to a slot. There are 16 slots, so index must be in range 0-15. - /// - /// - /// - public Slot this[int i] - { - get - { - if (i < 0 || i >= SlotCount) - throw new ArgumentOutOfRangeException(nameof(i), i, $"Possible values: 0-{SlotCount}."); - return _slots[i]; - } - } - - internal Slots(SunVox sunVox) - { - _lock = new object(); - _slots = new Slot[SlotCount]; - for (int i = 0; i < SlotCount; i++) - _slots[i] = new Slot(i, this, sunVox); - } - - public void RunInOpeningLock(Action action) - { - if (action == null) - throw new ArgumentNullException(nameof(action)); - - lock (_lock) - { - action(); - } - } - - public T RunInOpeningLock(Func func) - { - if (func == null) - throw new ArgumentNullException(nameof(func)); - - lock (_lock) - { - return func(); - } - } - - /// - /// Try to get and open a new slot. - /// - /// if opening a closed slot failed. Otherwise, an open slot is returned. - public Slot? TryOpenNewSlot() - { - return RunInOpeningLock(() => - { - var slot = _slots.FirstOrDefault(s => !s.IsOpen); - slot?.Open(); - return slot; - }); - } - - public IEnumerator GetEnumerator() => ((IEnumerable)_slots).GetEnumerator(); - - IEnumerator IEnumerable.GetEnumerator() => _slots.GetEnumerator(); - } -} diff --git a/SunSharp/ObjectWrapper/SunVox.cs b/SunSharp/ObjectWrapper/SunVox.cs deleted file mode 100644 index 3a14679..0000000 --- a/SunSharp/ObjectWrapper/SunVox.cs +++ /dev/null @@ -1,226 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - /// - /// Allows for object-oriented approach to using the SunVox library. - /// No manual locking should be necessary. - /// - public class SunVox : System.IDisposable - { - private readonly ISunVoxLib _lib; - private readonly OutputType? _outputType; - - /// - /// The underlying library. Direct use is potentially dangerous and may break existing abstractions. - /// - public ISunVoxLib Library => _lib; - - public Slots Slots { get; } - - public bool NeedsUserCallback => OutputType != null; - public bool SingleThreaded { get; } - - public OutputType? OutputType => _outputType; - public Version Version { get; } - public int SampleRate { get; } - public AudioChannels Channels { get; } - - /// - /// Create an instance of the engine with own audio stream and threading. - /// - /// - /// - /// Leave for the value to be assigned by the engine. - /// Leave for the value to be assigned by the engine. - /// Leave for the value to be assigned by the engine. - /// Leave for the value to be assigned by the engine. - /// Limit information sent to Standard Output. - public SunVox(ISunVoxLib lib, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, - string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) - { - var flags = InitFlags.Default; - if (noDebugOutput) - flags |= InitFlags.NoDebugOutput; - - var @params = new List(); - if (bufferSize != null) @params.Add($"buffer={bufferSize.Value}"); - if (deviceIn != null) @params.Add($"audiodevice_in={deviceIn}"); - if (deviceOut != null) @params.Add($"audiodevice={deviceOut}"); - if (driver != null) @params.Add($"audiodriver={driver}"); - var configuration = @params.Any() ? string.Join("|", @params) : null; - - _lib = lib; - Version = _lib.Init(sampleRate: -1, config: configuration, channels: channels, flags: flags); - SampleRate = _lib.GetSampleRate(); - SingleThreaded = false; - _outputType = null; - Channels = channels; - Slots = new Slots(this); - } - - /// - /// Create an instance of the engine with the intent of using AudioCallback. - /// - /// - /// - /// - /// - /// Use to promise that audio callback and other methods will be called from one thread. - /// Limit information sent to Standard Output. - /// - public SunVox(ISunVoxLib lib, int sampleRate, OutputType outputType, - AudioChannels channels = AudioChannels.Stereo, - bool singleThreaded = false, bool noDebugOutput = true) - { - var flags = InitFlags.UserAudioCallback; - - if (noDebugOutput) - flags |= InitFlags.NoDebugOutput; - - if (outputType == ObjectWrapper.OutputType.Float32) - flags |= InitFlags.AudioFloat32; - else if (outputType == ObjectWrapper.OutputType.Int16) - flags |= InitFlags.AudioInt16; - else - throw new System.ArgumentException($"Invalid value: {(int)outputType}", nameof(outputType)); - - if (singleThreaded) - flags |= InitFlags.OneThread; - - if (sampleRate < 1) - throw new System.ArgumentException($"Invalid value: {sampleRate}", nameof(sampleRate)); - - _lib = lib; - Version = _lib.Init(sampleRate: sampleRate, channels: channels, flags: flags); - SampleRate = _lib.GetSampleRate(); - SingleThreaded = false; - Channels = channels; - _outputType = outputType; - Slots = new Slots(this); - } - - #region disposable - - private bool _deinitialized; - - protected virtual void Dispose(bool disposing) - { - if (!_deinitialized) - { - if (disposing) - { - } - - Library.Deinit(); - _deinitialized = true; - } - } - - ~SunVox() - { - Dispose(disposing: false); - } - - /// - /// Use to deinitialize the library and free resources. - /// - public void Dispose() - { - Dispose(disposing: true); - System.GC.SuppressFinalize(this); - } - - #endregion disposable - - #region audio I/O - - /// - /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the Input module creation). Call it from the main thread only, where the SunVox sound stream is not locked. - /// - public void UpdateInputDevices() => _lib.UpdateInputDevices(); - - private void AudioGuard(bool @float) - { - if (_outputType == null) - throw new System.InvalidOperationException("SunVox was not initialized in user callback mode."); - - if (_outputType == ObjectWrapper.OutputType.Float32 != !@float) - return; - - var expected = @float ? ObjectWrapper.OutputType.Float32 : ObjectWrapper.OutputType.Int16; - var msg = - $"SunVox was initialized with output type \"{OutputType}\", but callback was called expecting output type \"{expected}\""; - throw new System.InvalidOperationException(msg); - } - - /// - /// Get the next piece of audio. - /// If library was initialized with , the samples will be interlaced, and the buffer size must be a multiple of two. - /// - /// Buffer to write sound data to. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - public bool AudioCallback(float[] outputBuffer, int latency, uint outTime) - { - AudioGuard(true); - return _lib.AudioCallback(outputBuffer, Channels, latency, outTime); - } - - /// - public bool AudioCallback(short[] outputBuffer, int latency, uint outTime) - { - AudioGuard(false); - return _lib.AudioCallback(outputBuffer, Channels, latency, outTime); - } - - /// - /// Get the next piece of audio. - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// Sends equal size buffer of an input device, which will be applied to any Input modules. - /// - /// Buffer to write sound data to. - /// Buffer to read sound data from. - /// Input data channels. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - public bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, - uint outTime) - { - AudioGuard(true); - return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); - } - - /// - public bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, - uint outTime) - { - AudioGuard(true); - return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); - } - - /// - public bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, - uint outTime) - { - AudioGuard(false); - return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); - } - - /// - public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, - uint outTime) - { - AudioGuard(false); - return _lib.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); - } - - #endregion audio I/O - - public uint GetTicks() => _lib.GetTicks(); - - public uint GetTicksPerSecond() => _lib.GetTicksPerSecond(); - } -} diff --git a/SunSharp/ObjectWrapper/Synthesizer.cs b/SunSharp/ObjectWrapper/Synthesizer.cs deleted file mode 100644 index 9face70..0000000 --- a/SunSharp/ObjectWrapper/Synthesizer.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - public class Synthesizer : IEnumerable - { - private readonly ISunVoxLib _lib; - private readonly Slot _slot; - private readonly int _id; - - public Slot Slot => _slot; - - internal Synthesizer(Slot slot) - { - _slot = slot; - _lib = slot.SunVox.Library; - _id = slot.Id; - } - - public int GetUpperModuleCount() => _lib.GetUpperModuleCount(_id); - - public bool GetModuleExists(int moduleId) => _lib.GetModuleExists(_id, moduleId); - - public ModuleFlags GetModuleFlags(int moduleId) => _lib.GetModuleFlags(_id, moduleId); - - public bool TryGetModule(int moduleId, out ModuleHandle module) - { - if (_lib.GetModuleExists(_id, moduleId)) - { - module = new ModuleHandle(this, moduleId); - return true; - } - else - { - module = default; - return false; - } - } - - public bool TryGetModule(string name, out ModuleHandle module) - { - int moduleId = _lib.FindModule(_id, name); - if (moduleId > -1) - { - module = new ModuleHandle(this, moduleId); - return true; - } - else - { - module = default; - return false; - } - } - - public ModuleHandle CreateModule(ModuleType type, string name, int x = 0, int y = 0, int z = 0) - { - return _slot.RunInLock(() => - { - var moduleId = _lib.CreateModule(_id, ModuleTypeHelper.InternalNameFromType(type), name, x, y, z); - return new ModuleHandle(this, moduleId); - }); - } - - /// - /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// - /// - /// - /// - /// - public ModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) - { - return _slot.RunInLock(() => - { - var moduleId = _lib.LoadModule(_id, data, x, y, z); - return new ModuleHandle(this, moduleId); - }); - } - - /// - /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// - /// - /// - /// - /// - public ModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) - { - return _slot.RunInLock(() => - { - var moduleId = _lib.LoadModule(_id, path, x, y, z); - return new ModuleHandle(this, moduleId); - }); - } - - public void RemoveModule(int moduleId) - { - _slot.RunInLock(() => { _lib.RemoveModule(_id, moduleId); }); - } - - public void RemoveModule(ModuleHandle module) => RemoveModule(module.Id); - - public void ConnectModule(int sourceId, int destinationId) - { - _slot.RunInLock(() => { _lib.ConnectModule(_id, sourceId, destinationId); }); - } - - public void ConnectModule(ModuleHandle source, ModuleHandle destination) => - ConnectModule(source.Id, destination.Id); - - public void DisconnectModule(int sourceId, int destinationId) - { - _slot.RunInLock(() => { _lib.DisconnectModule(_id, sourceId, destinationId); }); - } - - public void DisconnectModule(ModuleHandle source, ModuleHandle destination) => - DisconnectModule(source.Id, destination.Id); - - public IEnumerator GetEnumerator() - { - for (int i = 0; i < GetUpperModuleCount(); i++) - if (TryGetModule(i, out var p)) - yield return p; - } - - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - } -} diff --git a/SunSharp/ObjectWrapper/Timeline.cs b/SunSharp/ObjectWrapper/Timeline.cs deleted file mode 100644 index 20e2597..0000000 --- a/SunSharp/ObjectWrapper/Timeline.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - public class Timeline : IEnumerable - { - public Slot Slot => _slot; - - private readonly ISunVoxLib _lib; - private readonly Slot _slot; - private readonly int _id; - - internal Timeline(Slot slot) - { - _slot = slot; - _lib = slot.SunVox.Library; - _id = slot.Id; - } - - public int GetUpperPatternCount() => _lib.GetUpperPatternCount(_id); - - public bool GetPatternExists(int patternId) => _lib.GetPatternExists(_id, patternId); - - public bool TryGetPattern(string name, out PatternHandle pattern) - { - var id = _lib.FindPattern(_id, name); - - if (id > -1) - { - pattern = new PatternHandle(this, id); - return true; - } - else - { - pattern = default; - return false; - } - } - - public bool TryGetPattern(int id, out PatternHandle pattern) - { - if (_lib.GetPatternExists(_id, id)) - { - pattern = new PatternHandle(this, id); - return true; - } - else - { - pattern = default; - return false; - } - } - - public PatternHandle CreatePattern(string name, int lines, int tracks, int x, int y, int? iconSeed = null) - { - return Slot.RunInLock(() => - { - var id = _lib.CreatePattern(_id, null, x, y, tracks, lines, iconSeed, name); - return new PatternHandle(this, id); - }); - } - - public PatternHandle ClonePattern(PatternHandle original, int x, int y) - { - return Slot.RunInLock(() => - { - var id = _lib.CreatePattern(_id, original.Id, x, y, -1, -1, null, original.GetName()); - return new PatternHandle(this, id); - }); - } - - public IEnumerator GetEnumerator() - { - for (var i = 0; i < GetUpperPatternCount(); i++) - if (TryGetPattern(i, out var p)) - yield return p; - } - - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - } -} diff --git a/SunSharp/ObjectWrapper/VirtualPattern.cs b/SunSharp/ObjectWrapper/VirtualPattern.cs deleted file mode 100644 index 268f814..0000000 --- a/SunSharp/ObjectWrapper/VirtualPattern.cs +++ /dev/null @@ -1,104 +0,0 @@ -using SunSharp.ThinWrapper; - -namespace SunSharp.ObjectWrapper -{ - public class VirtualPattern - { - public Slot Slot => _slot; - - private readonly ISunVoxLib _lib; - private readonly Slot _slot; - private readonly int _id; - private int? _lastSetTimeStamp; - private readonly object _lock; - - internal VirtualPattern(Slot slot) - { - _slot = slot; - _lib = slot.SunVox.Library; - _id = slot.Id; - _lock = new object(); - } - - public uint GetCurrentTick() => _lib.GetTicks(); - - public uint GetTicksPerSecond() => _lib.GetTicksPerSecond(); - - /// - /// Send an event to be processed as fast as possible. - /// Do not use if any other code sends events to the library directly. - /// - /// - /// - public void SendEventImmediately(int track, PatternEvent e) - { - lock (_lock) - { - if (_lastSetTimeStamp != null) - { - var previous = _lastSetTimeStamp; - _lib.SetSendEventTimestamp(_id, reset: true); - _lib.SendEvent(_id, track, e); - _lib.SetSendEventTimestamp(_id, false, previous.Value); - } - else - { - _lib.SendEvent(_id, track, e); - } - } - } - - /// - /// Set the tick timestamp of future events. - /// Do not use if any other code sends events to the library directly. - /// - /// - public void SetEventTiming(int timestamp) - { - lock (_lock) - { - _lib.SetSendEventTimestamp(_id, false, timestamp); - _lastSetTimeStamp = timestamp; - } - } - - /// - /// Reset the tick timestamp of future events. - /// Do not use if any other code sends events to the library directly. - /// - public void ResetEventTiming() - { - lock (_lock) - { - _lib.SetSendEventTimestamp(_id, true); - _lastSetTimeStamp = null; - } - } - - /// - /// Send an event. - /// - /// - /// - public void SendEvent(int track, PatternEvent @event) - { - lock (_lock) - { - _lib.SendEvent(_id, track, @event); - } - } - - /// - /// Send an event. - /// - /// - /// - public void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0) - { - lock (_lock) - { - _lib.SendEvent(_id, track, nn, vv, mm, ccee, xxyy); - } - } - } -} diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index e6f3f80..e4a3913 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -28,14 +28,14 @@ public struct PatternEvent : IEquatable public Effect Effect { - get => (Effect)EE; + readonly get => (Effect)EE; set => EE = (byte)value; } public Note Note { - get => (Note)NN; - set => NN = (byte)value; + readonly get => NN; + set => NN = value; } public PatternEvent(ulong value) : this() @@ -43,16 +43,16 @@ public PatternEvent(ulong value) : this() Data = value; } - public PatternEvent(Note note, byte velocity, ushort module) : this() + public PatternEvent(Note nn, byte vv, ushort mm) : this() { - NN = note; - VV = velocity; - MM = module; + NN = nn; + VV = vv; + MM = mm; } - public PatternEvent(Effect effect, ushort xxyy) : this() + public PatternEvent(Effect ee, ushort xxyy) : this() { - EE = (byte)effect; + EE = (byte)ee; XXYY = xxyy; } @@ -65,14 +65,13 @@ public PatternEvent(byte nn, byte vv, ushort mm, ushort ccee, ushort xxyy) : thi XXYY = xxyy; } - public PatternEvent(Note note, byte velocity, ushort module, byte controller, Effect effect, - ushort xxyy) : this() + public PatternEvent(Note nn, byte vv, ushort mm, byte cc, Effect ee, ushort xxyy) : this() { - NN = note; - VV = velocity; - MM = module; - CC = controller; - EE = (byte)effect; + NN = nn; + VV = vv; + MM = mm; + CC = cc; + EE = (byte)ee; XXYY = xxyy; } @@ -86,16 +85,16 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public override string ToString() => $"{(Note)NN}{VV:X2}{MM:X4}{CC:X2}{EE:X2}{XX:X2}{YY:X2}"; + public readonly override string ToString() => $"{(Note)NN}{VV:X2}{MM:X4}{CC:X2}{EE:X2}{XX:X2}{YY:X2}"; public static bool operator ==(PatternEvent a, PatternEvent b) => a.Data == b.Data; public static bool operator !=(PatternEvent a, PatternEvent b) => a.Data != b.Data; - public override bool Equals(object obj) => obj is PatternEvent e && this == e; + public readonly override bool Equals(object obj) => obj is PatternEvent e && this == e; - public bool Equals(PatternEvent other) => this == other; + public readonly bool Equals(PatternEvent other) => this == other; - public override int GetHashCode() => -1945990370 + Data.GetHashCode(); + public readonly override int GetHashCode() => -1945990370 + Data.GetHashCode(); } } diff --git a/SunSharp/README.md b/SunSharp/README.md index c68711b..5731265 100644 --- a/SunSharp/README.md +++ b/SunSharp/README.md @@ -1,5 +1,8 @@ # SunSharp + *[SunVox](https://warmplace.ru/soft/sunvox/)* is a small, fast and powerful modular synthesizer with pattern-based sequencer (tracker). *SunVox Library* is the main part of the *SunVox* engine without a graphical interface. *SunSharp* is a wrapper and helper library for *SunVox Library*, written in C#. The library contains a thin wrapper, allowing for comfortably making calls with C#-style methods and objects, as well as an intuitive object-oriented wrapper, managing a few more things for the user. Additionally, additional abstractions and mechanisms are provided to help implement dynamic music in games and other software. + Target SunVox version: 2.1b. -Read more on the [project's GitHub page](https://github.com/Sotakebk/SunSharp). + +Read more on the [project's GitHub page](https://github.com/Sotakebk/SunSharp). \ No newline at end of file diff --git a/SunSharp/RELEASE-NOTES.txt b/SunSharp/RELEASE-NOTES.txt new file mode 100644 index 0000000..e290f25 --- /dev/null +++ b/SunSharp/RELEASE-NOTES.txt @@ -0,0 +1,21 @@ +SunSharp is distributed under the MIT license: + +Copyright (c) 2023 Sotakebk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index a39e0b5..1dd07f2 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -13,7 +13,7 @@ https://github.com/Sotakebk/SunSharp.git git sunvox;music;wrapper - 1.0.0 + 2.0.0-alpha0 True True True @@ -22,11 +22,26 @@ False False README.md - MIT + LICENSE.txt snupkg enable + + + + + + @(ReleaseNoteLines, '%0a') + + + + + + <_Parameter1>SunSharp.UnitTests + + + 9999 @@ -46,19 +61,15 @@ - - - - - - True + \ + True - + True \ - + True \ diff --git a/SunSharp/ThinWrapper/SunVoxException.cs b/SunSharp/SunVoxException.cs similarity index 94% rename from SunSharp/ThinWrapper/SunVoxException.cs rename to SunSharp/SunVoxException.cs index c94e51e..465ff68 100644 --- a/SunSharp/ThinWrapper/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -1,6 +1,6 @@ using System; -namespace SunSharp.ThinWrapper +namespace SunSharp { public sealed class SunVoxException : Exception { diff --git a/SunSharp/SunVoxLibExtensions.cs b/SunSharp/SunVoxLibExtensions.cs new file mode 100644 index 0000000..a4720a1 --- /dev/null +++ b/SunSharp/SunVoxLibExtensions.cs @@ -0,0 +1,214 @@ +using System; + +namespace SunSharp +{ + public static class SunVoxLibExtensions + { + /// + /// Use to group multiple calls in one lock/unlock block. + /// Possible issues: when a slot is closed, then re-opened while user code is running, it may escape the abstraction and/or throw an exception. + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(arg1); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(arg1, arg2); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(arg1, arg2, arg3); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(arg1, arg2, arg3, arg4); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + action(arg1, arg2, arg3, arg4, arg5); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(arg1); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(arg1, arg2); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(arg1, arg2, arg3); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(arg1, arg2, arg3, arg4); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) + { + var entered = false; + try + { + lib.LockSlot(slotId); + entered = true; + return func(arg1, arg2, arg3, arg4, arg5); + } + finally + { + if (entered) + lib.UnlockSlot(slotId); + } + } + } +} diff --git a/SunSharp/ThinWrapper/SunVoxLibExtensions.cs b/SunSharp/ThinWrapper/SunVoxLibExtensions.cs deleted file mode 100644 index e2646fb..0000000 --- a/SunSharp/ThinWrapper/SunVoxLibExtensions.cs +++ /dev/null @@ -1,1445 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace SunSharp.ThinWrapper -{ - public static class SunVoxLibExtensions - { - #region helper helpers - - private static short ToShortBitwise(uint value) - { - if ((value & 0x8000) == 0) - return (short)value; - - var val = (int)value; - return (short)(val - 0x10000); - } - - private static int[] CopyIntArraySkipNegativeOnes(IntPtr ptr, int count) - { - var nonZeroValues = 0; - for (var i = 0; i < count; i++) - { - if (Marshal.ReadInt32(ptr, i * sizeof(int)) != -1) - nonZeroValues++; - } - - var arr = new int[nonZeroValues]; - - var index = 0; - for (var i = 0; i < count; i++) - { - var value = Marshal.ReadInt32(ptr, i * sizeof(int)); - if (value == -1) - continue; - - arr[index] = value; - index++; - } - - return arr; - } - - #endregion helper helpers - - #region macros - - // this code is translated from sunvox.h - - /// - /// Get x, y position from one xy value received from . - /// - public static (short x, short y) PositionToXY(uint xy) - { - uint x = xy & 0xFFFF; - uint y = (xy >> 16) & 0xFFFF; - return (ToShortBitwise(x), ToShortBitwise(y)); - } - - /// - /// Get fine-tune and relative note value from packed fine-tune value received from . - /// - public static (short fineTune, short relativeNote) SplitFineTune(uint packedFineTune) - { - var outFineTune = packedFineTune & 0xFFFF; - var outRelativeNote = (packedFineTune >> 16) & 0xFFFF; - return (ToShortBitwise(outFineTune), ToShortBitwise(outRelativeNote)); - } - - public static float FrequencyFromPitch(float pitch) - { - return (float)FrequencyFromPitch((double)pitch); - } - - public static double FrequencyFromPitch(double pitch) - { - var value = (30720.0 - pitch) / 3072.0; - value = Math.Pow(2, value) * 16.333984375; - return value; - } - - public static float PitchFromFrequency(float frequency) - { - return (float)PitchFromFrequency((double)frequency); - } - - public static double PitchFromFrequency(double frequency) - { - var value = Math.Log(frequency, 2) / 16.333984375; - value = 30720 - value * 3072; - return (float)value; - } - - #endregion macros - - #region audio rendering - - private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, AudioChannels channels, - int latency, uint outTime) - { - if (channels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) - throw new ArgumentException("Buffer size is not a multiple of two."); - - var frames = outputBuffer.Length; - if (channels == AudioChannels.Stereo) - frames /= 2; - - var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); - var ptr = outHandle.AddrOfPinnedObject(); - int ret; - try - { - ret = lib.sv_audio_callback(ptr, frames, latency, outTime); - } - finally - { - outHandle.Free(); - } - - if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(lib.sv_audio_callback)); - - return ret == 1; - } - - private static bool AudioCallbackInternal(this ISunVoxLib lib, T[] outputBuffer, - AudioChannels outputChannels, V[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, - int inputType) - { - if (outputChannels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) - throw new ArgumentException("Output buffer size is not a multiple of two."); - - if (inputChannels == AudioChannels.Stereo && (inputBuffer.Length & 1) != 0) - throw new ArgumentException("Input buffer size is not a multiple of two."); - - var inputFrames = inputBuffer.Length; - if (inputChannels == AudioChannels.Stereo) - inputFrames /= 2; - - var outputFrames = outputBuffer.Length; - if (outputChannels == AudioChannels.Stereo) - outputFrames /= 2; - - if (inputFrames != outputFrames) - throw new ArgumentException( - $"Input and output frame count is different (input: {inputFrames} vs {outputFrames})."); - - var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); - var inHandle = GCHandle.Alloc(inputBuffer, GCHandleType.Pinned); - var outPtr = outHandle.AddrOfPinnedObject(); - var inPtr = inHandle.AddrOfPinnedObject(); - int ret; - try - { - ret = lib.sv_audio_callback2(outPtr, outputFrames, latency, outTime, inputType, (int)inputChannels, - inPtr); - } - finally - { - inHandle.Free(); - outHandle.Free(); - } - - if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(lib.sv_audio_callback2)); - - return (ret == 1); - } - - /// - /// Get the next piece of audio. - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// - /// - /// Buffer to write sound data to. - /// Channels the library was initialized with. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels channels, int latency, - uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, channels, latency, outTime); - } - - /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels channels, int latency, - uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, channels, latency, outTime); - } - - /// - /// Get the next piece of audio. - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// Sends equal size buffer of an input device, which will be applied to any Input modules. - /// - /// - /// Buffer to write sound data to. - /// Channels the library was initialized with. - /// Buffer to read sound data from. - /// Input data channels. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, - float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, - outTime, 1); - } - - /// - public static bool AudioCallback(this ISunVoxLib lib, float[] outputBuffer, AudioChannels outputChannels, - short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, - outTime, 0); - } - - /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, - float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, - outTime, 1); - } - - /// - public static bool AudioCallback(this ISunVoxLib lib, short[] outputBuffer, AudioChannels outputChannels, - short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(lib, outputBuffer, outputChannels, inputBuffer, inputChannels, latency, - outTime, 0); - } - - #endregion audio rendering - - #region engine - - /// - /// Initialize the engine. - /// - /// - /// Sample rate. If not using audio callback, may be set to -1. - /// Configuration, which may include input and output devices. See SunVox Lib documentation for details. - /// Channels to be used. - /// Initialization flags. - /// The version of underlying library. - /// - public static Version Init(this ISunVoxLib lib, int sampleRate, string? config = null, - AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) - { - var ptr = Marshal.StringToHGlobalAnsi(config); - try - { - var ret = lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_init)); - return new Version(ret); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - /// Deinitializes the library, frees resources. - /// - /// - public static void Deinit(this ISunVoxLib lib) - { - var retCode = lib.sv_deinit(); - if (retCode != 0) - throw new SunVoxException(retCode, nameof(lib.sv_deinit)); - } - - /// - /// Get first characters of engine logs. - /// - /// - /// Character count to be read. - /// - public static string? GetLog(this ISunVoxLib lib, int size) - { - var ptr = lib.sv_get_log(size); - try - { - return Marshal.PtrToStringAnsi(ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - public static uint GetTicks(this ISunVoxLib lib) - { - return lib.sv_get_ticks(); - } - - public static uint GetTicksPerSecond(this ISunVoxLib lib) - { - return lib.sv_get_ticks_per_second(); - } - - public static int GetSampleRate(this ISunVoxLib lib) - { - var ret = lib.sv_get_sample_rate(); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_sample_rate)); - return ret; - } - - /// - /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the Input module creation). Call it from the main thread only, where the SunVox sound stream is not locked. - /// - /// - public static void UpdateInputDevices(this ISunVoxLib lib) - { - var ret = lib.sv_update_input(); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_update_input)); - } - - #endregion engine - - #region slot - - public static bool IsPlaying(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_end_of_song(slot); - if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(lib.sv_end_of_song)); - return ret == 0; - } - - /// - /// Get current behaviour for reaching the end of project timeline. - /// - /// if project is stopped after reaching the end. - /// - public static bool GetAutostop(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_autostop(slot); - if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(lib.sv_get_autostop)); - return ret == 1; - } - - public static int GetCurrentLine(this ISunVoxLib lib, int slot) - { - return lib.sv_get_current_line(slot); - } - - /// - /// Get current line in fixed point format (with tenth part). - /// - public static int GetCurrentLine2(this ISunVoxLib lib, int slot) - { - return lib.sv_get_current_line2(slot); - } - - public static int GetCurrentSignalLevel(this ISunVoxLib lib, int slot, int channel) - { - return lib.sv_get_current_signal_level(slot, channel); - } - - public static int GetSongBpm(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_song_bpm(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_song_bpm)); - return ret; - } - - public static int GetSongLengthInFrames(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_song_length_frames(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_song_length_frames)); - return (int)ret; - } - - public static int GetSongLengthInLines(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_song_length_lines(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_song_length_lines)); - return (int)ret; - } - - public static string? GetSongName(this ISunVoxLib lib, int slot) - { - var ptr = lib.sv_get_song_name(slot); - return Marshal.PtrToStringAnsi(ptr); - } - - public static void SetSongName(this ISunVoxLib lib, int slot, string newName) - { - var ptr = Marshal.StringToHGlobalAnsi(newName); - try - { - var ret = lib.sv_set_song_name(slot, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_init)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - public static int GetSongTpl(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_song_tpl(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_song_tpl)); - return ret; - } - - public static void Save(this ISunVoxLib lib, int slot, string path) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_save(slot, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_save)); - } - - public static void SendEvent(this ISunVoxLib lib, int slot, int track, PatternEvent @event) - { - SendEvent(lib, slot, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); - } - - public static void SendEvent(this ISunVoxLib lib, int slot, int track, int nn = 0, int vv = 0, int mm = 0, - int ccee = 0, int xxyy = 0) - { - var ret = lib.sv_send_event(slot, track, nn, vv, mm, ccee, xxyy); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_send_event)); - } - - public static void SetAutoStop(this ISunVoxLib lib, int slot, bool autoStop) - { - var ret = lib.sv_set_autostop(slot, autoStop ? 1 : 0); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_autostop)); - } - - public static void SetSendEventTimestamp(this ISunVoxLib lib, int slot, bool reset = true, int t = 0) - { - var ret = lib.sv_set_event_t(slot, reset ? 0 : 1, t); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_event_t)); - } - - public static void Stop(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_stop(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_stop)); - } - - public static void ResumeOnSyncEffect(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_sync_resume(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_sync_resume)); - } - - /// - /// Get and set volume. Call with = -1 to only get the value. - /// - /// - /// - /// Value in range 0-256. - /// Previous volume in range 0-256. - /// - public static int Volume(this ISunVoxLib lib, int slot, int volume) - { - var ret = lib.sv_volume(slot, volume); - if (ret < 0 || ret > 256) - throw new SunVoxException(ret, nameof(lib.sv_volume)); - return ret; - } - - /// - /// Get the project time map. - /// For = , Nth value equals speed at the beginning of Nth line (Bpm | Tpl << 16). - /// For = , Nth value equals frame counter at the beginning of Nth line. - /// - /// - public static uint[] GetTimeMap(this ISunVoxLib lib, int slot, int startLine, int length, TimeMapType type) - { - var arr = new uint[length]; - var handle = GCHandle.Alloc(arr, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_get_time_map(slot, startLine, length, handle.AddrOfPinnedObject(), (int)type); - } - finally - { - handle.Free(); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_get_time_map)); - return arr; - } - - /// - /// Load a project from path. - /// - /// - public static void Load(this ISunVoxLib lib, int slot, string path) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_load(slot, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_load)); - } - - /// - /// Load a project from memory. - /// - /// - public static void Load(this ISunVoxLib lib, int slot, byte[] data) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_load_from_memory(slot, handle.AddrOfPinnedObject(), (uint)data.Length); - } - finally - { - handle.Free(); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_load)); - } - - public static void OpenSlot(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_open_slot(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_open_slot)); - } - - public static void CloseSlot(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_close_slot(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_close_slot)); - } - - /// - /// Enter a lock block. - /// Use to send multiple events at the same time, read or write data from multiple threads. - /// Remember to call ! - /// - /// - public static void LockSlot(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_lock_slot(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_lock_slot)); - } - - /// - /// Leave a lock block. - /// - /// - public static void UnlockSlot(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_unlock_slot(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_unlock_slot)); - } - - /// - /// Use to group multiple calls in one lock/unlock block. - /// Possible issues: when a slot is closed, then re-opened while user code is running, it may escape the abstraction and/or throw an exception. - /// - public static void RunInLock(this ISunVoxLib lib, int slot, Action action) - { - var entered = false; - try - { - lib.LockSlot(slot); - entered = true; - action(); - } - finally - { - if (entered) - lib.UnlockSlot(slot); - } - } - - /// - public static T RunInLock(this ISunVoxLib lib, int slot, Func func) - { - bool entered = false; - try - { - lib.LockSlot(slot); - entered = true; - return func(); - } - finally - { - if (entered) - lib.UnlockSlot(slot); - } - } - - public static void Pause(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_pause(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_pause)); - } - - public static void Play(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_play(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_play)); - } - - public static void PlayFromBeginning(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_play_from_beginning(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_play_from_beginning)); - } - - public static void Resume(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_resume(slot); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_resume)); - } - - public static void Rewind(this ISunVoxLib lib, int slot, int line) - { - var ret = lib.sv_rewind(slot, line); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_rewind)); - } - - #endregion slot - - #region module - - /// - /// Use or an alternative! - /// - /// - public static void ConnectModule(this ISunVoxLib lib, int slot, int source, int destination) - { - var ret = lib.sv_connect_module(slot, source, destination); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_connect_module)); - } - - /// - /// - /// Use or an alternative! - /// - /// - public static void DisconnectModule(this ISunVoxLib lib, int slot, int source, int destination) - { - var ret = lib.sv_disconnect_module(slot, source, destination); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_disconnect_module)); - } - - /// - /// Find module by name. - /// - /// Id of found module, -1 if it was not found. - /// - public static int FindModule(this ISunVoxLib lib, int slot, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = lib.sv_find_module(slot, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < -1) - throw new SunVoxException(ret, nameof(lib.sv_find_module)); - - return ret; - } - - public static (byte r, byte g, byte b) GetModuleColor(this ISunVoxLib lib, int slot, int module) - { - var ret = lib.sv_get_module_color(slot, module); - var red = (byte)((ret) & 0xFF); - var green = (byte)((ret >> 8) & 0xFF); - var blue = (byte)((ret >> 16) & 0xFF); - return (red, green, blue); - } - - public static void SetModuleColor(this ISunVoxLib lib, int slot, int module, byte r, byte g, byte b) - { - var color = r & (g << 8) & (b << 16); - var ret = lib.sv_set_module_color(slot, module, color); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_module_color)); - } - - public static string? GetModuleControllerName(this ISunVoxLib lib, int slot, int module, int controller) - { - var ptr = lib.sv_get_module_ctl_name(slot, module, controller); - return Marshal.PtrToStringAnsi(ptr); - } - - /// - /// Get module controller value. - /// - public static int GetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, - ValueScalingType scaling) - { - return lib.sv_get_module_ctl_value(slot, module, controller, (int)scaling); - } - - public static int GetModuleControllerMinValue(this ISunVoxLib lib, int slot, int module, int controller, - ValueScalingType scaling) - { - return lib.sv_get_module_ctl_min(slot, module, controller, (int)scaling); - } - - public static int GetModuleControllerMaxValue(this ISunVoxLib lib, int slot, int module, int controller, - ValueScalingType scaling) - { - return lib.sv_get_module_ctl_max(slot, module, controller, (int)scaling); - } - - public static int GetModuleControllerOffset(this ISunVoxLib lib, int slot, int module, int controller) - { - return lib.sv_get_module_ctl_offset(slot, module, controller); - } - - public static ControllerType GetModuleControllerType(this ISunVoxLib lib, int slot, int module, int controller) - { - var ret = lib.sv_get_module_ctl_type(slot, module, controller); - if (ret < 0 || ret > 1) - throw new SunVoxException(ret, nameof(lib.sv_get_module_ctl_type)); - - return (ControllerType)ret; - } - - public static int GetModuleControllerGroup(this ISunVoxLib lib, int slot, int module, int controller) - { - return lib.sv_get_module_ctl_group(slot, module, controller); - } - - /// - /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce latency). - /// - public static void SetModuleControllerValue(this ISunVoxLib lib, int slot, int module, int controller, - int value, ValueScalingType scaling) - { - var ret = lib.sv_set_module_ctl_value(slot, module, controller, value, (int)scaling); - if (ret != 0) - throw new SunVoxException(0, nameof(lib.sv_set_module_ctl_value)); - } - - public static FineTunePair GetModuleFineTune(this ISunVoxLib lib, int slot, int module) - { - var (fineTune, relativeNote) = SplitFineTune(lib.sv_get_module_finetune(slot, module)); - return new FineTunePair(fineTune, relativeNote); - } - - public static void SetModuleFineTune(this ISunVoxLib lib, int slot, int module, int fineTune) - { - var ret = lib.sv_set_module_finetune(slot, module, fineTune); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_module_finetune)); - } - - public static void SetModuleRelativeNote(this ISunVoxLib lib, int slot, int module, int relativeNote) - { - var ret = lib.sv_set_module_relnote(slot, module, relativeNote); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_module_relnote)); - } - - public static ModuleFlags GetModuleFlags(this ISunVoxLib lib, int slot, int module) - { - return lib.sv_get_module_flags(slot, module); - } - - public static bool GetModuleExists(this ISunVoxLib lib, int slot, int module) - { - return GetModuleFlags(lib, slot, module).Exists; - } - - /// - /// Get an array of Ids of modules. - /// Does NOT return -1 for empty connection slots. - /// - /// - public static int[] GetModuleInputs(this ISunVoxLib lib, int slot, int module) - { - var count = GetModuleFlags(lib, slot, module).InputUpperCount; - if (count == 0) - return Array.Empty(); - - var ptr = lib.sv_get_module_inputs(slot, module); - try - { - return CopyIntArraySkipNegativeOnes(ptr, count); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - public static string? GetModuleName(this ISunVoxLib lib, int slot, int module) - { - var ptr = lib.sv_get_module_name(slot, module); - return Marshal.PtrToStringAnsi(ptr); - } - - public static void SetModuleName(this ISunVoxLib lib, int slot, int module, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - try - { - var ret = lib.sv_set_module_name(slot, module, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_module_name)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - public static string? GetModuleType(this ISunVoxLib lib, int slot, int module) - { - var ptr = lib.sv_get_module_type(slot, module); - return Marshal.PtrToStringAnsi(ptr); - } - - /// - /// Get an array of Ids of modules. - /// Does NOT return -1 for empty connection slots. - /// - public static int[] GetModuleOutputs(this ISunVoxLib lib, int slot, int module) - { - var count = GetModuleFlags(lib, slot, module).OutputUpperCount; - if (count == 0) - return Array.Empty(); - - var ptr = lib.sv_get_module_outputs(slot, module); - try - { - return CopyIntArraySkipNegativeOnes(ptr, count); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - /// Read module scope view, and write it to a buffer. - /// - /// Number of samples successfully read. - public static int ReadModuleScope(this ISunVoxLib lib, int slot, int module, int channel, short[] buffer) - { - var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); - var ptr = handle.AddrOfPinnedObject(); - try - { - return (int)lib.sv_get_module_scope2(slot, module, channel, ptr, (uint)buffer.Length); - } - finally - { - handle.Free(); - } - } - - public static (int x, int y) GetModulePosition(this ISunVoxLib lib, int slot, int module) - { - return PositionToXY(lib.sv_get_module_xy(slot, module)); - } - - public static void SetModulePosition(this ISunVoxLib lib, int slot, int module, int x, int y) - { - var ret = lib.sv_set_module_xy(slot, module, x, y); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_module_xy)); - } - - /// - /// Get the upper module count, which may be greater than the actual module count. - /// - /// - public static int GetUpperModuleCount(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_number_of_modules(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_number_of_modules)); - return ret; - } - - public static int GetModuleControllerCount(this ISunVoxLib lib, int slot, int module) - { - var ret = lib.sv_get_number_of_module_ctls(slot, module); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_number_of_module_ctls)); - return ret; - } - - /// - /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// Created module Id. - /// - public static int LoadModule(this ISunVoxLib lib, int slot, string path, int x = 0, int y = 0, int z = 0) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_load_module(slot, ptr, x, y, z); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_load_module)); - return ret; - } - - /// - /// load a module or sample from memory. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// Created module's Id. - /// - public static int LoadModule(this ISunVoxLib lib, int slot, byte[] data, int x = 0, int y = 0, int z = 0) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_load_module_from_memory(slot, handle.AddrOfPinnedObject(), (uint)data.Length, x, y, z); - } - finally - { - handle.Free(); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_load_module_from_memory)); - return ret; - } - - public static int WriteModuleCurve(this ISunVoxLib lib, int slot, int module, int curve, float[] data) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_module_curve(slot, module, curve, handle.AddrOfPinnedObject(), data.Length, 1); - } - finally - { - handle.Free(); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_module_curve)); - return ret; - } - - public static int ReadModuleCurve(this ISunVoxLib lib, int slot, int module, int curve, float[] data) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_module_curve(slot, module, curve, handle.AddrOfPinnedObject(), data.Length, 0); - } - finally - { - handle.Free(); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_module_curve)); - return ret; - } - - /// - /// Create a new module. Type refers to the name visible on new module creation window. - /// Use or an alternative! - /// - /// ID of newly created module. - /// - public static int CreateModule(this ISunVoxLib lib, int slot, string type, string name, int x = 0, int y = 0, - int z = 0) - { - var typeptr = Marshal.StringToHGlobalAnsi(type); - var nameptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = lib.sv_new_module(slot, typeptr, nameptr, x, y, z); - } - finally - { - Marshal.FreeHGlobal(typeptr); - Marshal.FreeHGlobal(nameptr); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_new_module)); - return ret; - } - - /// - /// Remove an existing module. - /// Use or an alternative! - /// - /// - public static void RemoveModule(this ISunVoxLib lib, int slot, int module) - { - var ret = lib.sv_remove_module(slot, module); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_remove_module)); - } - - /// - /// Load a sample (xi, wav, aiff) to an existing Sampler module from file. - /// Set to -1 to apply the sample to all sample slots. - /// - /// - public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, string path, - int sampleSlot = -1) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_sampler_load(slot, module, ptr, sampleSlot); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_sampler_load)); - } - - /// - /// Load a sample (xi, wav, aiff) to an existing Sampler module from memory. - /// Set to -1 to apply the sample to all sample slots. - /// - /// - public static void LoadSamplerSample(this ISunVoxLib lib, int slot, int module, byte[] data, - int sampleSlot = -1) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_sampler_load_from_memory(slot, module, handle.AddrOfPinnedObject(), (uint)data.Length, - sampleSlot); - } - finally - { - handle.Free(); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_sampler_load_from_memory)); - } - - /// - /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// - /// - public static void LoadIntoMetaModule(this ISunVoxLib lib, int slot, int module, string path) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_metamodule_load(slot, module, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_metamodule_load)); - } - - /// - /// load a file into the MetaModule from memory. Supported file formats: sunvox, mod, xm, midi. - /// - /// - public static void LoadIntoMetaModule(this ISunVoxLib lib, int slot, int module, byte[] data) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_metamodule_load_from_memory(slot, module, handle.AddrOfPinnedObject(), (uint)data.Length); - } - finally - { - handle.Free(); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_metamodule_load_from_memory)); - } - - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - /// - public static void LoadIntoVorbisPLayer(this ISunVoxLib lib, int slot, int module, string path) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = lib.sv_vplayer_load(slot, module, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_vplayer_load)); - } - - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - /// - public static void LoadIntoVorbisPLayer(this ISunVoxLib lib, int slot, int module, byte[] data) - { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = lib.sv_vplayer_load_from_memory(slot, module, handle.AddrOfPinnedObject(), (uint)data.Length); - } - finally - { - handle.Free(); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_vplayer_load_from_memory)); - } - - #endregion module - - #region pattern - - /// - /// Use or an alternative! - /// - /// - public static int CreatePattern(this ISunVoxLib lib, int slot, int? patternToClone, int x, int y, int tracks, - int lines, int? iconSeed, string? name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = lib.sv_new_pattern(slot, patternToClone ?? -1, x, y, tracks, lines, iconSeed ?? 0, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_new_pattern)); - return ret; - } - - /// - /// Use or an alternative! - /// - /// - public static void RemovePattern(this ISunVoxLib lib, int slot, int pattern) - { - var ret = lib.sv_remove_pattern(slot, pattern); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_remove_pattern)); - } - - /// - /// Get the upper pattern count, which may be greater than the actual pattern count. - /// - /// - public static int GetUpperPatternCount(this ISunVoxLib lib, int slot) - { - var ret = lib.sv_get_number_of_patterns(slot); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_number_of_patterns)); - return ret; - } - - /// - /// Find pattern by name. - /// - /// Pattern Id, or -1 if pattern was not found. - /// - public static int FindPattern(this ISunVoxLib lib, int slot, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = lib.sv_find_pattern(slot, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < -1) - throw new SunVoxException(ret, nameof(lib.sv_find_pattern)); - - return ret; - } - - public static int GetPatternEventValue(this ISunVoxLib lib, int slot, int pattern, int track, int line, - Column column) - { - var ret = lib.sv_get_pattern_event(slot, pattern, track, line, (int)column); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_pattern_event)); - return ret; - } - - public static string? GetPatternName(this ISunVoxLib lib, int slot, int pattern) - { - var ptr = lib.sv_get_pattern_name(slot, pattern); - return Marshal.PtrToStringAnsi(ptr); - } - - /// - /// Use or an alternative! - /// - /// - public static void SetPatternName(this ISunVoxLib lib, int slot, int pattern, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - try - { - var ret = lib.sv_set_pattern_name(slot, pattern, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_pattern_name)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - public static bool GetPatternExists(this ISunVoxLib lib, int slot, int pattern) - { - return GetPatternLines(lib, slot, pattern) > 0; - } - - public static int GetPatternLines(this ISunVoxLib lib, int slot, int pattern) - { - var ret = lib.sv_get_pattern_lines(slot, pattern); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_pattern_lines)); - return ret; - } - - public static int GetPatternTracks(this ISunVoxLib lib, int slot, int pattern) - { - var ret = lib.sv_get_pattern_tracks(slot, pattern); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_get_pattern_tracks)); - return ret; - } - - /// - /// Use or an alternative! - /// - public static void SetPatternSize(this ISunVoxLib lib, int slot, int pattern, int? tracks = null, - int? lines = null) - { - var ret = lib.sv_set_pattern_size(slot, pattern, tracks ?? -1, lines ?? -1); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_set_pattern_size)); - } - - public static (int x, int y) GetPatternPosition(this ISunVoxLib lib, int slot, int pattern) - { - return (lib.sv_get_pattern_x(slot, pattern), lib.sv_get_pattern_y(slot, pattern)); - } - - public static int GetPatternX(this ISunVoxLib lib, int slot, int pattern) - { - return lib.sv_get_pattern_x(slot, pattern); - } - - public static int GetPatternY(this ISunVoxLib lib, int slot, int pattern) - { - return lib.sv_get_pattern_y(slot, pattern); - } - - /// - /// Use or an alternative! - /// - /// - public static void SetPatternPosition(this ISunVoxLib lib, int slot, int pattern, int x, int y) - { - var ret = lib.sv_set_pattern_xy(slot, pattern, x, y); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_pattern_xy)); - } - - /// - /// Use or an alternative! - /// - public static PatternEvent[]? GetPatternData(this ISunVoxLib lib, int slot, int pattern) - { - if (!GetPatternExists(lib, slot, pattern)) - return null; - - var lines = GetPatternLines(lib, slot, pattern); - var tracks = GetPatternTracks(lib, slot, pattern); - - var ptr = lib.sv_get_pattern_data(slot, pattern); - if (ptr == IntPtr.Zero) - return null; - try - { - var arr = new PatternEvent[lines * tracks]; - for (var i = 0; i < lines * tracks; i++) - arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); - return arr; - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - /// Use or an alternative! - /// - /// - public static void SetPatternData(this ISunVoxLib lib, int slot, int pattern, PatternEvent[] data) - { - var ptr = lib.sv_get_pattern_data(slot, pattern); - if (ptr == IntPtr.Zero) - throw new SunVoxException(ptr.ToInt32(), nameof(lib.sv_get_pattern_data)); - - var lines = GetPatternLines(lib, slot, pattern); - var tracks = GetPatternTracks(lib, slot, pattern); - - var minSize = Math.Min(lines * tracks, data.Length); - - for (var i = 0; i < minSize; i++) - { - Marshal.WriteInt64(ptr + i * sizeof(ulong), unchecked((long)data[i].Data)); - } - } - - /// - /// Use or an alternative! - /// - /// - public static bool SetPatternMute(this ISunVoxLib lib, int slot, int pattern, bool muted) - { - var ret = lib.sv_pattern_mute(slot, pattern, muted ? 1 : 0); - if (ret < 0) - throw new SunVoxException(ret, nameof(lib.sv_pattern_mute)); - return ret == 1; - } - - public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, int NN, - int VV, int MM, int CCEE, int XXYY) - { - var ret = lib.sv_set_pattern_event(slot, pattern, track, line, NN, VV, MM, CCEE, XXYY); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_pattern_event)); - } - - public static void SetPatternEvent(this ISunVoxLib lib, int slot, int pattern, int track, int line, - PatternEvent ev) - { - var ret = lib.sv_set_pattern_event(slot, pattern, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); - if (ret != 0) - throw new SunVoxException(ret, nameof(lib.sv_set_pattern_event)); - } - - #endregion pattern - } -} diff --git a/SunSharp/ThinWrapper/ThinWrapperEnums.cs b/SunSharp/ThinWrapper/ThinWrapperEnums.cs deleted file mode 100644 index b4949cf..0000000 --- a/SunSharp/ThinWrapper/ThinWrapperEnums.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace SunSharp.ThinWrapper -{ - [Flags] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", - Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] - public enum InitFlags : uint - { - Default = 0, - - /// - /// Less data will be written to standard output. - /// - NoDebugOutput = Constants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, - - /// - /// No automatic sound management, sv_audio_callback must be used. - /// - UserAudioCallback = Constants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, - - /// - /// Sets the format which must be used with sv_audio_callback to . - /// May not apply without . Mutually exclusive with . - /// - AudioInt16 = Constants.SV_INIT_FLAG_AUDIO_INT16, - - /// - /// Sets the format which must be used with sv_audio_callback to . - /// May not apply without . Mutually exclusive with . - /// - AudioFloat32 = Constants.SV_INIT_FLAG_AUDIO_FLOAT32, - - /// - /// Audio callback and other methods will be called from one thread. - /// Applies if is set. - /// - OneThread = Constants.SV_INIT_FLAG_ONE_THREAD - } -} From e04084ed008db0bff1475e8197da8691dbff2144 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Fri, 13 Oct 2023 22:29:29 +0200 Subject: [PATCH 03/27] a whole lot of improvements and code coverage --- .../CodeGenerationTools/BaseGenerator.cs | 21 +- .../CodeGenerationContext.cs | 80 +- .../CodeGenerationTools/PathHelper.cs | 59 +- .../NativeProxy/NativeProxyCodeGeneration.cs | 2 +- .../NativeProxy/NativeProxyGenerator.cs | 39 +- .../NativeProxy/TypeNameTranslation.cs | 6 +- SunSharp.CodeGeneration/SelfTests.cs | 20 + .../SunSharp.CodeGeneration.csproj | 16 +- SunSharp.IntegrationTests/.runsettings | 4 + SunSharp.IntegrationTests/AssemblyInfo.cs | 5 + .../BaseIntegrationTests.cs | 64 + .../Infrastructure/Configuration.cs | 5 + SunSharp.IntegrationTests/LockingTests.cs | 6 - .../SunSharp.IntegrationTests.csproj | 18 +- SunSharp.IntegrationTests/SunVoxLibDriver.cs | 33 - .../SunVoxLibTests/PatternTests.cs | 141 ++ SunSharp.Redistribution/LibraryLoader.cs | 48 +- .../SunSharp.Redistribution.nuspec | 1 + SunSharp.Redistribution/UnixLibraryHandler.cs | 29 +- .../WindowsLibraryHandler.cs | 38 +- .../runtimes/linux-x86-64/native/native.so | Bin 904496 -> 0 bytes .../runtimes/linux-x86-64/native/sunvox.so | Bin .../linux-x86/native/{native.so => sunvox.so} | Bin SunSharp.Tests/AssemblyInfo.cs | 5 + SunSharp.Tests/Data/DataReaderTests.cs | 99 + SunSharp.Tests/Data/DataTests.cs | 45 + SunSharp.Tests/EffectExtensionsTests.cs | 49 + SunSharp.Tests/FineTunePairTests.cs | 77 + .../HelperTests.cs | 50 +- SunSharp.Tests/LibraryVersionTests.cs | 43 + SunSharp.Tests/Mocks/ModuleFlagsHelper.cs | 17 + SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs | 91 + SunSharp.Tests/ModuleFlagsTests.cs | 68 + .../Native/Loader/NativeProxyTests.cs | 371 ++++ ...unVoxLibNativeWrapperAudioCallbackTests.cs | 662 ++++++ .../SunVoxLibNativeWrapperModulesTests.cs | 1588 +++++++++++++++ .../SunVoxLibNativeWrapperPatternsTests.cs | 1768 +++++++++++++++++ .../Native/SunVoxLibNativeWrapperTests.cs | 1161 +++++++++++ SunSharp.Tests/NoteTests.cs | 202 ++ SunSharp.Tests/PatternEventTests.cs | 398 ++++ SunSharp.Tests/SunSharp.Tests.csproj | 32 + SunSharp.Tests/SunVoxExceptionTests.cs | 23 + SunSharp.Tests/SunVoxLibExtensionsTests.cs | 249 +++ SunSharp.UnitTests/SunSharp.UnitTests.csproj | 28 - .../SunVoxLibExtensionsTests.cs | 230 --- SunSharp.sln | 12 +- SunSharp.sln.DotSettings.user | 17 + SunSharp/Data/ControllerData.cs | 16 +- SunSharp/Data/DataReader.cs | 118 +- SunSharp/Data/ModuleData.cs | 28 +- SunSharp/Data/PatternData.cs | 22 +- SunSharp/Data/SongData.cs | 32 +- SunSharp/Effects.cs | 4 +- SunSharp/Enums.cs | 23 +- SunSharp/{FineTune.cs => FineTunePair.cs} | 19 +- SunSharp/Helper.cs | 27 +- SunSharp/ISunVoxLib.Modules.cs | 38 +- SunSharp/ISunVoxLib.Patterns.cs | 100 +- SunSharp/ISunVoxLib.cs | 115 +- SunSharp/LibraryVersion.cs | 5 +- SunSharp/ModuleFlags.cs | 22 +- SunSharp/Native/ISunVoxLibC.cs | 15 +- SunSharp/Native/Loader/LibraryHandler.cs | 2 +- .../NativeProxy.ISunVoxLibC.Generated.cs | 194 +- SunSharp/Native/Loader/NativeProxy.cs | 96 +- SunSharp/Native/SunVoxLibNative.Patterns.cs | 225 --- ...s.cs => SunVoxLibNativeWrapper.Modules.cs} | 405 ++-- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 347 ++++ ...LibNative.cs => SunVoxLibNativeWrapper.cs} | 438 ++-- SunSharp/Note.cs | 133 +- SunSharp/PatternEvent.cs | 53 +- SunSharp/SunSharp.csproj | 2 +- SunSharp/SunVoxException.cs | 3 +- SunSharp/SunVoxLibExtensions.cs | 46 +- 74 files changed, 8890 insertions(+), 1558 deletions(-) create mode 100644 SunSharp.CodeGeneration/SelfTests.cs create mode 100644 SunSharp.IntegrationTests/.runsettings create mode 100644 SunSharp.IntegrationTests/AssemblyInfo.cs create mode 100644 SunSharp.IntegrationTests/BaseIntegrationTests.cs create mode 100644 SunSharp.IntegrationTests/Infrastructure/Configuration.cs delete mode 100644 SunSharp.IntegrationTests/LockingTests.cs delete mode 100644 SunSharp.IntegrationTests/SunVoxLibDriver.cs create mode 100644 SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs delete mode 100644 SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so rename SunSharp.IntegrationTests/sunvox_linux_x86_64.so => SunSharp.Redistribution/runtimes/linux-x86-64/native/sunvox.so (100%) rename SunSharp.Redistribution/runtimes/linux-x86/native/{native.so => sunvox.so} (100%) create mode 100644 SunSharp.Tests/AssemblyInfo.cs create mode 100644 SunSharp.Tests/Data/DataReaderTests.cs create mode 100644 SunSharp.Tests/Data/DataTests.cs create mode 100644 SunSharp.Tests/EffectExtensionsTests.cs create mode 100644 SunSharp.Tests/FineTunePairTests.cs rename {SunSharp.UnitTests => SunSharp.Tests}/HelperTests.cs (68%) create mode 100644 SunSharp.Tests/LibraryVersionTests.cs create mode 100644 SunSharp.Tests/Mocks/ModuleFlagsHelper.cs create mode 100644 SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs create mode 100644 SunSharp.Tests/ModuleFlagsTests.cs create mode 100644 SunSharp.Tests/Native/Loader/NativeProxyTests.cs create mode 100644 SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs create mode 100644 SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs create mode 100644 SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs create mode 100644 SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs create mode 100644 SunSharp.Tests/NoteTests.cs create mode 100644 SunSharp.Tests/PatternEventTests.cs create mode 100644 SunSharp.Tests/SunSharp.Tests.csproj create mode 100644 SunSharp.Tests/SunVoxExceptionTests.cs create mode 100644 SunSharp.Tests/SunVoxLibExtensionsTests.cs delete mode 100644 SunSharp.UnitTests/SunSharp.UnitTests.csproj delete mode 100644 SunSharp.UnitTests/SunVoxLibExtensionsTests.cs rename SunSharp/{FineTune.cs => FineTunePair.cs} (62%) delete mode 100644 SunSharp/Native/SunVoxLibNative.Patterns.cs rename SunSharp/Native/{SunVoxLibNative.Modules.cs => SunVoxLibNativeWrapper.Modules.cs} (82%) create mode 100644 SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs rename SunSharp/Native/{SunVoxLibNative.cs => SunVoxLibNativeWrapper.cs} (87%) diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs b/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs index 142273b..a22be69 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs @@ -6,15 +6,20 @@ public abstract class BaseGenerator { protected CodeGenerationContext Context = new(); - protected virtual string GetTabs() => Context.GetTabs(); - - protected virtual void AddIndent(Action action) => Context.AddIndent(action); - - protected virtual void AppendLine(string value = "") => Context.AppendLine(value); + protected virtual void AddIndent(Action action) + { + Context.AddIndent(action); + } - protected virtual void AppendLineNoTab(string value = "") => Context.AppendLineNoTab(value); + protected virtual void AppendLine(string value = "") + { + Context.AppendLine(value); + } - protected virtual void Append(string value = "") => Context.Append(value); + protected virtual void AppendLineNoTab(string value = "") + { + Context.AppendLineNoTab(value); + } public virtual string Generate() { @@ -22,4 +27,4 @@ public virtual string Generate() } protected abstract string GenerateBody(); -} \ No newline at end of file +} diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs index 0a49357..e498574 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs @@ -1,47 +1,47 @@ using System; using System.Text; -namespace SunSharp.CodeGeneration.CodeGenerationTools +namespace SunSharp.CodeGeneration.CodeGenerationTools; + +public class CodeGenerationContext { - public class CodeGenerationContext + private const int SpacesPerTab = 4; + + private readonly StringBuilder _sb; + private int _tabs; + + public CodeGenerationContext() + { + _sb = new StringBuilder(); + } + + public string GetTabs() + { + return new string(' ', _tabs * SpacesPerTab); + } + + public void AddIndent(Action action) + { + _tabs++; + action(); + _tabs--; + } + + public void AppendLine(string value = "") + { + if (string.IsNullOrWhiteSpace(value)) + _sb.AppendLine(); + else + _sb.AppendLine(GetTabs() + value); + } + + public void AppendLineNoTab(string value = "") + { + _sb.AppendLine(value); + } + + public string GetBuiltString() { - private const int SpacesPerTab = 4; - - private readonly StringBuilder _sb; - private int _tabs; - - public CodeGenerationContext() - { - _sb = new StringBuilder(); - } - - public string GetTabs() => new(' ', _tabs * SpacesPerTab); - - public void AddIndent(Action action) - { - _tabs++; - action(); - _tabs--; - } - - public void AppendLine(string value = "") - { - if (string.IsNullOrWhiteSpace(value)) - _sb.AppendLine(); - else - _sb.AppendLine(GetTabs() + value); - } - - public void AppendLineNoTab(string value = "") - { - if (string.IsNullOrWhiteSpace(value)) - _sb.AppendLine(); - else - _sb.AppendLine(value); - } - - public void Append(string value = "") => _sb.Append(value); - - public string GetBuiltString() => _sb.ToString(); + return _sb.ToString(); } } diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs index 308de2e..6b56505 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs @@ -3,45 +3,38 @@ using System.Linq; using System.Runtime.CompilerServices; -namespace SunSharp.CodeGeneration.CodeGenerationTools +namespace SunSharp.CodeGeneration.CodeGenerationTools; + +public static class PathHelper { - public static class PathHelper + public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] string? callerFilePath = null) { - public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] string? callerFilePath = null) + var expectedFolders = new[] { - var expectedFolders = new string[] - { - "SunSharp", - "SunSharp.CodeGeneration", - "SunSharp.IntegrationTests", - "SunSharp.Redistribution", - "SunSharp.UnitTests", - }; + "SunSharp", + "SunSharp.CodeGeneration", + "SunSharp.IntegrationTests", + "SunSharp.Redistribution", + "SunSharp.Tests" + }; - ArgumentNullException.ThrowIfNull(callerFilePath); + ArgumentNullException.ThrowIfNull(callerFilePath); - var fileInfo = new FileInfo(callerFilePath); - var directoryInfo = fileInfo.Directory; - while (directoryInfo != null && directoryInfo.Exists) - { - var directories = directoryInfo.GetDirectories(); - if (expectedFolders.All(f => directories.Any(d => d.Name == f))) - break; - else - { - directoryInfo = directoryInfo.Parent; - } - } + var fileInfo = new FileInfo(callerFilePath); + var directoryInfo = fileInfo.Directory; + while (directoryInfo is { Exists: true }) + { + var directories = directoryInfo.GetDirectories(); + if (expectedFolders.All(f => directories.Any(d => d.Name == f))) + break; - // is current directoryInfo the folder we expected? - if (directoryInfo != null && expectedFolders.All(f => directoryInfo.GetDirectories().Any(d => d.Name == f))) - { - return Path.Join(directoryInfo.FullName, pathFromRoot); - } - else - { - throw new Exception("Could not trace back to the project folder."); - } + directoryInfo = directoryInfo.Parent; } + + // is current directoryInfo the folder we expected? + if (directoryInfo != null && expectedFolders.All(f => directoryInfo.GetDirectories().Any(d => d.Name == f))) + return Path.Join(directoryInfo.FullName, pathFromRoot); + + throw new Exception("Could not trace back to the project folder."); } } diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs index 727b52a..39be9f7 100644 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs @@ -20,4 +20,4 @@ public void CheckIfCodeIsUpToDate() Assert.That(newSourceCode, Is.EqualTo(oldSourceCode)); } -} \ No newline at end of file +} diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs index 3f3cee8..6b804e1 100644 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs @@ -10,9 +10,6 @@ namespace SunSharp.CodeGeneration.NativeProxy; public sealed class NativeProxyGenerator : BaseGenerator { - private record DelegateDefinition(Type ReturnType, Type[] Parameters); - private record MethodDefinition(MethodInfo MethodInfo, DelegateDefinition CorrespondingDelegate); - private DelegateDefinition[] delegateDefinitions = Array.Empty(); private MethodDefinition[] methodDefinitions = Array.Empty(); @@ -27,7 +24,8 @@ private static string GetDelegateNameCode(DelegateDefinition definition) private static string GetDelegateDefinitionCode(DelegateDefinition definition) { var returnType = TranslateToFriendlyName(definition.ReturnType); - var friendlyArguments = string.Join(", ", definition.Parameters.Select(static (t, i) => $"{TranslateToFriendlyName(t)} arg{i + 1}")); + var friendlyArguments = string.Join(", ", + definition.Parameters.Select(static (t, i) => $"{TranslateToFriendlyName(t)} arg{i + 1}")); return $"private delegate {returnType} {GetDelegateNameCode(definition)}({friendlyArguments});"; } @@ -42,12 +40,14 @@ private static string GetMethodDefinitionCode(MethodDefinition definition) var joinedPars = string.Join(", ", pars); var forwardedPars = definition.MethodInfo.GetParameters().Select(static p => p.Name); var joinedForwardedPars = string.Join(", ", forwardedPars); - return $"{returnType} {nameof(ISunVoxLibC)}.{definition.MethodInfo.Name}({joinedPars}) => {definition.MethodInfo.Name}?.Invoke({joinedForwardedPars}) ?? throw GetNoDelegateException();"; + return + $"{returnType} {nameof(ISunVoxLibC)}.{definition.MethodInfo.Name}({joinedPars}) => {definition.MethodInfo.Name}?.Invoke({joinedForwardedPars}) ?? throw GetNoDelegateException();"; } private static string GetDelegateForMethodDefinitionCode(MethodDefinition methodDefinition) { - return $"private {GetDelegateNameCode(methodDefinition.CorrespondingDelegate)}? {methodDefinition.MethodInfo.Name};"; + return + $"private {GetDelegateNameCode(methodDefinition.CorrespondingDelegate)}? {methodDefinition.MethodInfo.Name};"; } private void ReadData() @@ -61,7 +61,8 @@ private void ReadData() .ToArray(); methodDefinitions = type.GetMethods() - .Select(static m => new MethodDefinition(m, new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray()))) + .Select(static m => new MethodDefinition(m, + new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray()))) .ToArray(); } @@ -100,10 +101,7 @@ protected override string GenerateBody() AppendLine(); AppendLine("#region interface"); AppendLine(); - foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) - { - AppendMethodDefinition(m); - } + foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendMethodDefinition(m); AppendLine("#endregion interface"); AppendLine(); @@ -118,23 +116,21 @@ protected override string GenerateBody() return Context.GetBuiltString(); } - private void AppendLoadMethod() + private void AppendUnloadMethod() { - AppendLine("private void LoadInternal()"); + AppendLine("private void UnloadInternal()"); AppendLine("{"); AddIndent(() => { foreach (var methodDefinition in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) - { AppendLine($"{methodDefinition.MethodInfo.Name} = null;"); - } }); AppendLine("}"); } - private void AppendUnloadMethod() + private void AppendLoadMethod() { - AppendLine("private void UnloadInternal()"); + AppendLine("private void LoadInternal()"); AppendLine("{"); AddIndent(() => { @@ -142,7 +138,8 @@ private void AppendUnloadMethod() { var name = methodDefinition.MethodInfo.Name; var delegateName = GetDelegateNameCode(methodDefinition.CorrespondingDelegate); - AppendLine($"{name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{name}\", typeof({delegateName}));"); + AppendLine( + $"{name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{name}\", typeof({delegateName}));"); } }); AppendLine("}"); @@ -165,4 +162,8 @@ private void AppendDelegateDefinition(DelegateDefinition delegateDefinition) AppendLine(GetDelegateDefinitionCode(delegateDefinition)); AppendLine(); } -} \ No newline at end of file + + private record DelegateDefinition(Type ReturnType, Type[] Parameters); + + private record MethodDefinition(MethodInfo MethodInfo, DelegateDefinition CorrespondingDelegate); +} diff --git a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs index 358a97d..0ea82ee 100644 --- a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs +++ b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs @@ -11,14 +11,14 @@ public class TypeNameTranslation { { "Int32", "int" }, { "UInt32", "uint" }, - { "Void", "void" }, + { "Void", "void" } }.ToImmutableDictionary(); private static readonly ImmutableDictionary StrictTypeNameToCapitalizedName = new Dictionary { { "Int32", "Int" }, - { "UInt32", "Uint" }, + { "UInt32", "Uint" } }.ToImmutableDictionary(); public static string TranslateToFriendlyName(Type type) @@ -36,4 +36,4 @@ public static string Translate(Type type, ImmutableDictionary d) var str = type.Name; return d.TryGetValue(str, out var val) ? val : str; } -} \ No newline at end of file +} diff --git a/SunSharp.CodeGeneration/SelfTests.cs b/SunSharp.CodeGeneration/SelfTests.cs new file mode 100644 index 0000000..c1a3e9f --- /dev/null +++ b/SunSharp.CodeGeneration/SelfTests.cs @@ -0,0 +1,20 @@ +using System; +using NUnit.Framework; +using SunSharp.CodeGeneration.CodeGenerationTools; + +namespace SunSharp.CodeGeneration; + +public class SelfTests +{ + [Test] + public void PathHelperShouldFailToFindProjectRootDirectoryForInvalidArgument() + { + Assert.That( + static () => PathHelper.GetProjectFilePath("ThisFileDoesNotExist.cs", + Environment.GetFolderPath(Environment.SpecialFolder.Desktop)), + Throws.Exception.With.Message.EqualTo("Could not trace back to the project folder.")); + + Assert.That(static () => PathHelper.GetProjectFilePath("ThisFileDoesNotExist.cs", null), + Throws.ArgumentNullException); + } +} diff --git a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj index 3a268d1..4238455 100644 --- a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj +++ b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -9,11 +9,17 @@ - + - - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/SunSharp.IntegrationTests/.runsettings b/SunSharp.IntegrationTests/.runsettings new file mode 100644 index 0000000..b9e7ade --- /dev/null +++ b/SunSharp.IntegrationTests/.runsettings @@ -0,0 +1,4 @@ + + + + diff --git a/SunSharp.IntegrationTests/AssemblyInfo.cs b/SunSharp.IntegrationTests/AssemblyInfo.cs new file mode 100644 index 0000000..5e1c6ec --- /dev/null +++ b/SunSharp.IntegrationTests/AssemblyInfo.cs @@ -0,0 +1,5 @@ +using System.Diagnostics.CodeAnalysis; +using NUnit.Framework; + +[assembly: Parallelizable(ParallelScope.None)] +[assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs new file mode 100644 index 0000000..3dccd51 --- /dev/null +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -0,0 +1,64 @@ +using System; +using NUnit.Framework; +using SunSharp.Redistribution; + +namespace SunSharp.IntegrationTests; + +public class BaseIntegrationTests +{ + private ISunVoxLib? _lib; + + protected ISunVoxLib GetLoadedLibrary() + { + return _lib ?? throw new InvalidOperationException(); + } + + [OneTimeSetUp] + protected void OneTimeSetUp() + { + LibraryLoader.Load(); + _lib = LibraryLoader.GetLibraryInstance(); + } + + [OneTimeTearDown] + protected void OneTimeTearDown() + { + LibraryLoader.Unload(); + } + + [SetUp] + protected void SetUp() + { + try + { + _lib = LibraryLoader.GetLibraryInstance(); + _lib.Initialize(-1, flags: InitFlags.UserAudioCallback | InitFlags.AudioFloat32); + } + catch (Exception e) + { + TestContext.WriteLine(e); + } + } + + [TearDown] + protected void TearDown() + { + try + { + try + { + var log = _lib?.GetLog(0x10000); + TestContext.WriteLine(log); + } + finally + { + _lib?.Deinitialize(); + _lib = null; + } + } + catch (Exception e) + { + TestContext.WriteLine(e); + } + } +} diff --git a/SunSharp.IntegrationTests/Infrastructure/Configuration.cs b/SunSharp.IntegrationTests/Infrastructure/Configuration.cs new file mode 100644 index 0000000..f12f8d7 --- /dev/null +++ b/SunSharp.IntegrationTests/Infrastructure/Configuration.cs @@ -0,0 +1,5 @@ +namespace SunSharp.IntegrationTests.Infrastructure; + +public static class Configuration +{ +} diff --git a/SunSharp.IntegrationTests/LockingTests.cs b/SunSharp.IntegrationTests/LockingTests.cs deleted file mode 100644 index 8dbfb9b..0000000 --- a/SunSharp.IntegrationTests/LockingTests.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace SunSharp.IntegrationTests -{ - public class LockingTests - { - } -} diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 608946f..5ac5d8a 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -9,11 +9,19 @@ - + + + - - - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -21,4 +29,4 @@ - + \ No newline at end of file diff --git a/SunSharp.IntegrationTests/SunVoxLibDriver.cs b/SunSharp.IntegrationTests/SunVoxLibDriver.cs deleted file mode 100644 index c99cc66..0000000 --- a/SunSharp.IntegrationTests/SunVoxLibDriver.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using SunSharp.Redistribution; - -namespace SunSharp.IntegrationTests -{ - public class SunVoxLibDriver : IDisposable - { - public ISunVoxLib Library { get; set; } - - public SunVoxLibDriver() - { - LibraryLoader.Load(); - Library = LibraryLoader.GetLibraryInstance(); - } - - private void ReleaseUnmanagedResources() - { - if (LibraryLoader.IsLoaded) - LibraryLoader.Unload(); - } - - public void Dispose() - { - ReleaseUnmanagedResources(); - GC.SuppressFinalize(this); - } - - ~SunVoxLibDriver() - { - ReleaseUnmanagedResources(); - } - } -} diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs new file mode 100644 index 0000000..4c17fcc --- /dev/null +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -0,0 +1,141 @@ +using System.Linq; +using FluentAssertions; +using NUnit.Framework; +using SunSharp.Data; +using TddXt.AnyRoot.Numbers; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.IntegrationTests.SunVoxLibTests; + +internal class PatternTests : BaseIntegrationTests +{ + [Test] + public void EmptyProjectStartsWithOneEmptyPattern() + { + // Should be reported as a possible bug + + const int slotId = 0; + + var lib = GetLoadedLibrary(); + + lib.OpenSlot(slotId); + lib.LockSlot(slotId); + + var data = DataReader.ReadSongData(lib, slotId); + + lib.UnlockSlot(slotId); + lib.CloseSlot(slotId); + + data.Patterns.Count.Should().Be(1); + data.Patterns.First().Data.All(e => e.Data.Equals(0)).Should().BeTrue(); + } + + [Test] + public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() + { + const int slotId = 0; + + var firstPattern = new PatternData + { + Data = new PatternEvent[] + { + 1, 0, 0, 0, + 2, 2, 0, 0, + 0, 3, 3, 0, + 0, 0, 4, 4, + 0, 0, 0, 5 + }, + Lines = 5, + Tracks = 4, + Position = (0, 0), + Name = "One" + }; + + var secondPattern = new PatternData + { + Data = new PatternEvent[] + { + 0, 1, + 2, 0, + 0, 3, + 4, 0 + }, + Lines = 4, + Tracks = 2, + Position = (5, 4), + Name = "Another" + }; + + var clonePosition = (X: Any.Integer(), Y: Any.Integer()); + + var lib = GetLoadedLibrary(); + + lib.OpenSlot(slotId); + lib.LockSlot(slotId); + + var onePatternId = lib.CreatePattern(slotId, firstPattern.Position.X, firstPattern.Position.Y, + firstPattern.Tracks, firstPattern.Lines, name: firstPattern.Name); + lib.SetPatternData(slotId, onePatternId, firstPattern.Data.ToArray(), firstPattern.Tracks, firstPattern.Lines); + + var clonePatternId = lib.ClonePattern(slotId, onePatternId, clonePosition.X, clonePosition.Y); + var anotherPatternId = lib.CreatePattern(slotId, secondPattern.Position.X, secondPattern.Position.Y, + secondPattern.Tracks, secondPattern.Lines, name: secondPattern.Name); + lib.SetPatternData(slotId, anotherPatternId, secondPattern.Data.ToArray(), secondPattern.Tracks, + secondPattern.Lines); + + var data = DataReader.ReadSongData(lib, slotId); + + lib.RemovePattern(slotId, onePatternId); + + var dataAfterRemoval = DataReader.ReadSongData(lib, slotId); + + lib.UnlockSlot(slotId); + lib.CloseSlot(slotId); + + // pattern has expected data + data.Patterns.FirstOrDefault(p => p.Id == onePatternId) + .Should() + .BeEquivalentTo(firstPattern, options => options + .Excluding(p => p.Id) + .Excluding(p => p.IsDestructive) + .Excluding(p => p.IsLinear) + .Excluding(p => p.IsMuted) + .Excluding(p => p.HasDynamicTempo)); + + // clone has expected data + data.Patterns.FirstOrDefault(p => p.Id == clonePatternId) + .Should() + .BeEquivalentTo(firstPattern, options => options + .Excluding(p => p.Id) + .Excluding(p => p.IsDestructive) + .Excluding(p => p.IsLinear) + .Excluding(p => p.IsMuted) + .Excluding(p => p.HasDynamicTempo) + .Excluding(p => p.Position)); + data.Patterns.FirstOrDefault(p => p.Id == clonePatternId)?.Position + .Should() + .BeEquivalentTo(clonePosition); + + // clone doesn't exist + dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == clonePatternId).Should().Be(null); + + // the other pattern has expected data in both cases + data.Patterns.FirstOrDefault(p => p.Id == anotherPatternId) + .Should() + .BeEquivalentTo(secondPattern, options => options + .Excluding(p => p.Id) + .Excluding(p => p.IsDestructive) + .Excluding(p => p.IsLinear) + .Excluding(p => p.IsMuted) + .Excluding(p => p.HasDynamicTempo)); + + dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == anotherPatternId) + .Should() + .BeEquivalentTo(secondPattern, options => options + .Excluding(p => p.Id) + .Excluding(p => p.IsDestructive) + .Excluding(p => p.IsLinear) + .Excluding(p => p.IsMuted) + .Excluding(p => p.HasDynamicTempo)); + } +} diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index d413643..631fc32 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -7,23 +7,35 @@ namespace SunSharp.Redistribution { /// - /// Use this class to access a locally loaded SunVoxLib instance.
- /// the library once, then . Construct a if necessary.
- /// You may also call to unload the library, which should also deinitialize the library, to avoid any memory leaks. + /// Use this class to access a locally loaded SunVoxLib instance.
+ /// the library once, then . Construct a + /// if necessary.
+ /// You may also call to unload the library, which should also deinitialize the library, to avoid + /// any memory leaks. /// You should keep the same library instance loaded in most use-cases. ///
public static class LibraryLoader { + private static readonly object Lock = new object(); + + private static NativeProxy? _proxy; + private static ISunVoxLib? _lib; + + public static bool IsLoaded => _proxy?.IsLoaded ?? false; + private static ILibraryHandler GetPlatformSpecificLibraryHandler() { - var errorMessage = $"Current platform and architecture not supported. Architecture: '{RuntimeInformation.ProcessArchitecture}', platform: '{RuntimeInformation.OSDescription}'"; + var errorMessage = + $"Current platform and architecture not supported. Architecture: '{RuntimeInformation.ProcessArchitecture}', platform: '{RuntimeInformation.OSDescription}'"; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine("runtimes", "/win-x64/native/sunvox.dll"), - Architecture.X86 => Path.Combine("runtimes", "sunvox_win_x86.dll"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, + "runtimes/win-x64/native/sunvox.dll"), + Architecture.X86 => Path.Combine(Environment.CurrentDirectory, + "runtimes/win-x86-64/native/sunvox.dll"), _ => throw new PlatformNotSupportedException(errorMessage) }; @@ -34,9 +46,12 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine("lib", "linux", "lib_x86_64", "sunvox.so"), - Architecture.X86 => Path.Combine("lib", "linux", "lib_x86", "sunvox.so"), - Architecture.Arm64 => Path.Combine("lib", "linux", "lib_arm64", "sunvox.so"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, + "runtimes/linux-x86-64/native/sunvox.so"), + Architecture.X86 => Path.Combine(Environment.CurrentDirectory, + "runtimes/linux-x86/native/sunvox.so"), + Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, + "runtimes/linux-arm64/native/sunvox.so"), _ => throw new PlatformNotSupportedException(errorMessage) }; @@ -47,8 +62,10 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine("lib", "osx", "lib_x86_64", "sunvox.dylib"), - Architecture.Arm64 => Path.Combine("lib", "osx", "lib_arm64", "sunvox.dylib"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, + "runtimes/macos-x86-64/native/sunvox.so"), + Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, + "runtimes/macos-arm64/native/sunvox.so"), _ => throw new PlatformNotSupportedException(errorMessage) }; @@ -58,13 +75,6 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() throw new PlatformNotSupportedException(errorMessage); } - private static readonly object Lock = new object(); - - private static NativeProxy? _proxy; - private static ISunVoxLib? _lib; - - public static bool IsLoaded => _proxy?.IsLoaded ?? false; - public static void Load() { lock (Lock) @@ -86,7 +96,7 @@ public static ISunVoxLib GetLibraryInstance() if (!IsLoaded || _proxy == null) throw new InvalidOperationException("The library was not loaded yet."); - return _lib ??= new SunVoxLibNative(_proxy); + return _lib ??= new SunVoxLibNativeWrapper(_proxy); } } diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.nuspec b/SunSharp.Redistribution/SunSharp.Redistribution.nuspec index 2f9d21d..4ed93fe 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.nuspec +++ b/SunSharp.Redistribution/SunSharp.Redistribution.nuspec @@ -1,4 +1,5 @@ + diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/SunSharp.Redistribution/UnixLibraryHandler.cs index 96e3542..bf8ac1e 100644 --- a/SunSharp.Redistribution/UnixLibraryHandler.cs +++ b/SunSharp.Redistribution/UnixLibraryHandler.cs @@ -6,8 +6,6 @@ namespace SunSharp.Redistribution { internal sealed class UnixLibraryHandler : ILibraryHandler { - public bool IsLibraryLoaded => _ptr != IntPtr.Zero; - private readonly object _lock = new object(); private readonly string _path; private volatile IntPtr _ptr = IntPtr.Zero; @@ -17,16 +15,22 @@ public UnixLibraryHandler(string path) _path = path; } + public bool IsLibraryLoaded => _ptr != IntPtr.Zero; + public void LoadLibrary() { lock (_lock) { if (IsLibraryLoaded) - throw new LibraryLoadingException("SunVoxLib is already loaded."); + return; var ptr = dlopen(_path, 0); if (ptr == IntPtr.Zero) - throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + { + var error = dlerror(); + throw new LibraryLoadingException( + $"Failed to load SunVoxLib from path '{_path}' with error '{error}'."); + } _ptr = ptr; } @@ -37,11 +41,15 @@ public void UnloadLibrary() lock (_lock) { if (!IsLibraryLoaded) - throw new LibraryLoadingException("SunVoxLib is not loaded."); + return; var code = dlclose(_ptr); if (code != 0) - throw new LibraryLoadingException("SunVoxLib failed to unload."); + { + var error = dlerror(); + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error '{error}'."); + } + _ptr = IntPtr.Zero; } } @@ -58,7 +66,11 @@ public Delegate GetFunctionByName(string name, Type delegateType) var ptr = dlsym(_ptr, name); if (ptr == IntPtr.Zero) - throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + { + var error = dlerror(); + throw new LibraryLoadingException( + $"Failed to load SunVoxLib function '{name}' with error '{error}'."); + } return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); } @@ -72,5 +84,8 @@ public Delegate GetFunctionByName(string name, Type delegateType) [DllImport("libdl.so")] public static extern int dlclose(IntPtr handle); + + [DllImport("libdl.so", CharSet = CharSet.Unicode)] + public static extern string dlerror(); } } diff --git a/SunSharp.Redistribution/WindowsLibraryHandler.cs b/SunSharp.Redistribution/WindowsLibraryHandler.cs index fa4334c..7b7e820 100644 --- a/SunSharp.Redistribution/WindowsLibraryHandler.cs +++ b/SunSharp.Redistribution/WindowsLibraryHandler.cs @@ -6,8 +6,6 @@ namespace SunSharp.Redistribution { internal sealed class WindowsLibraryHandler : ILibraryHandler { - public bool IsLibraryLoaded => _ptr != IntPtr.Zero; - private readonly object _lock = new object(); private readonly string _path; private volatile IntPtr _ptr = IntPtr.Zero; @@ -17,6 +15,8 @@ public WindowsLibraryHandler(string path) _path = path; } + public bool IsLibraryLoaded => _ptr != IntPtr.Zero; + public void LoadLibrary() { lock (_lock) @@ -24,9 +24,13 @@ public void LoadLibrary() if (IsLibraryLoaded) throw new LibraryLoadingException("SunVoxLib is already loaded."); - var ptr = WindowsLibraryHandler.LoadLibrary(_path); + var ptr = LoadLibrary(_path); if (ptr == IntPtr.Zero) - throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + { + var error = Marshal.GetHRForLastWin32Error(); + throw new LibraryLoadingException( + $"Failed to load SunVoxLib from path '{_path}' with error '{error:X8}'."); + } _ptr = ptr; } @@ -41,7 +45,12 @@ public void UnloadLibrary() var ptr = _ptr; _ptr = IntPtr.Zero; - WindowsLibraryHandler.FreeLibrary(ptr); + var value = FreeLibrary(ptr); + if (value == 0) + { + var error = Marshal.GetHRForLastWin32Error(); + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error error '{error:X8}'."); + } } } @@ -55,21 +64,28 @@ public Delegate GetFunctionByName(string name, Type delegateType) if (!IsLibraryLoaded) throw new LibraryLoadingException("SunVoxLib is not loaded."); - var ptr = WindowsLibraryHandler.GetProcAddress(_ptr, name); + var ptr = GetProcAddress(_ptr, name); if (ptr == IntPtr.Zero) - throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}'."); + { + var error = Marshal.GetHRForLastWin32Error(); + throw new LibraryLoadingException( + $"Failed to load SunVoxLib function '{name}' with error '{error:X8}'."); + } return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); } } - [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, CharSet = CharSet.Ansi)] + [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, + CharSet = CharSet.Ansi)] private static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string dllToLoad); - [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, CharSet = CharSet.Ansi)] - private static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procedureName); + [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, + CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, + [MarshalAs(UnmanagedType.LPStr)] string procedureName); [DllImport("kernel32.dll")] - private static extern bool FreeLibrary(IntPtr hModule); + private static extern int FreeLibrary(IntPtr hModule); } } diff --git a/SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so b/SunSharp.Redistribution/runtimes/linux-x86-64/native/native.so deleted file mode 100644 index 27690ff7b73f040ea01315632c3ee1d49832d060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 904496 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

&PeAt6!gWhY=8 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

8nU=TS9ws>G9n$l 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 diff --git a/SunSharp.IntegrationTests/sunvox_linux_x86_64.so b/SunSharp.Redistribution/runtimes/linux-x86-64/native/sunvox.so similarity index 100% rename from SunSharp.IntegrationTests/sunvox_linux_x86_64.so rename to SunSharp.Redistribution/runtimes/linux-x86-64/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/linux-x86/native/native.so b/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/runtimes/linux-x86/native/native.so rename to SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so diff --git a/SunSharp.Tests/AssemblyInfo.cs b/SunSharp.Tests/AssemblyInfo.cs new file mode 100644 index 0000000..d417c0f --- /dev/null +++ b/SunSharp.Tests/AssemblyInfo.cs @@ -0,0 +1,5 @@ +using System.Diagnostics.CodeAnalysis; +using NUnit.Framework; + +[assembly: Parallelizable(ParallelScope.All)] +[assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.Tests/Data/DataReaderTests.cs b/SunSharp.Tests/Data/DataReaderTests.cs new file mode 100644 index 0000000..adf8557 --- /dev/null +++ b/SunSharp.Tests/Data/DataReaderTests.cs @@ -0,0 +1,99 @@ +using System.Linq; +using FluentAssertions; +using NUnit.Framework; +using SunSharp.Data; +using SunSharp.Tests.Mocks; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Data; + +public class DataReaderTests +{ + private static ModuleData CreateValidModuleData() + { + var moduleData = Any.Instance(); + + for (var i = 0; i < moduleData.Controllers.Count; i++) + moduleData.Controllers.ElementAt(i).Id = i; + + return moduleData; + } + + private static PatternData CreateValidPatternData() + { + var patternData = Any.Instance(); + + patternData.IsDestructive = patternData.Data.Any(static e => e.Effect.IsDestructive()); + patternData.IsLinear = patternData.Data.All(static e => !e.Effect.IsNonLinear()); + patternData.HasDynamicTempo = patternData.Data.Any(static e => e.Effect.ChangesTempo()); + patternData.Lines = patternData.Data.Count; + patternData.Tracks = 1; + + return patternData; + } + + private static SongData CreateValidSongData() + { + var songData = Any.Instance(); + + foreach (var pattern in songData.Patterns) + { + pattern.IsDestructive = pattern.Data.Any(static e => e.Effect.IsDestructive()); + pattern.IsLinear = pattern.Data.All(static e => !e.Effect.IsNonLinear()); + pattern.HasDynamicTempo = pattern.Data.Any(static e => e.Effect.ChangesTempo()); + pattern.Lines = pattern.Data.Count; + pattern.Tracks = 1; + } + + foreach (var module in songData.Modules) + for (var i = 0; i < module.Controllers.Count; i++) + module.Controllers.ElementAt(i).Id = i; + + songData.FirstLine = songData.Patterns.Min(static p => p.Position.X); + songData.LastLine = songData.Patterns.Max(static p => p.Position.X + p.Lines); + songData.Lines = songData.LastLine - songData.FirstLine; + return songData; + } + + [Test] + public void DataReaderReadSongDataShouldReturnEquivalentDataAsPutInMock() + { + var songData = CreateValidSongData(); + + var libraryMock = SunVoxLibMockProvider.BuildMock() + .WithSongData(0, songData) + .Build(); + + var data = DataReader.ReadSongData(libraryMock, 0); + + data.Should().BeEquivalentTo(songData); + } + + [Test] + public void DataReaderReadModuleShouldReturnEquivalentDataAsPutInMock() + { + var moduleData = CreateValidModuleData(); + + var libraryMock = SunVoxLibMockProvider.BuildMock() + .WithModuleData(0, new[] { moduleData }) + .Build(); + + var data = DataReader.ReadModule(libraryMock, 0, moduleData.Id); + + data.Should().BeEquivalentTo(moduleData); + } + + [Test] + public void DataReaderReadPatternShouldReturnEquivalentDataAsPutInMock() + { + var moduleData = CreateValidPatternData(); + + var libraryMock = SunVoxLibMockProvider.BuildMock() + .WithPatternData(0, new[] { moduleData }) + .Build(); + + var data = DataReader.ReadPattern(libraryMock, 0, moduleData.Id); + + data.Should().BeEquivalentTo(moduleData); + } +} diff --git a/SunSharp.Tests/Data/DataTests.cs b/SunSharp.Tests/Data/DataTests.cs new file mode 100644 index 0000000..1cd83d6 --- /dev/null +++ b/SunSharp.Tests/Data/DataTests.cs @@ -0,0 +1,45 @@ +using FluentAssertions; +using NUnit.Framework; +using SunSharp.Data; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Data; + +public class DataTests +{ + [Test] + public void SongDataDeepCopyShouldBeEquivalent() + { + var songData = Any.Instance(); + var anotherSongData = Any.Instance(); + + var clone = songData.DeepCopy(); + + clone.Should().BeEquivalentTo(songData); + clone.Should().NotBeEquivalentTo(anotherSongData); + } + + [Test] + public void PatternDataDeepCopyShouldBeEquivalent() + { + var patternData = Any.Instance(); + var anotherPatternData = Any.Instance(); + + var clone = patternData.DeepCopy(); + + clone.Should().BeEquivalentTo(patternData); + clone.Should().NotBeEquivalentTo(anotherPatternData); + } + + [Test] + public void ModuleDataDeepCopyShouldBeEquivalent() + { + var moduleData = Any.Instance(); + var anotherModuleData = Any.Instance(); + + var clone = moduleData.DeepCopy(); + + clone.Should().BeEquivalentTo(moduleData); + clone.Should().NotBeEquivalentTo(anotherModuleData); + } +} diff --git a/SunSharp.Tests/EffectExtensionsTests.cs b/SunSharp.Tests/EffectExtensionsTests.cs new file mode 100644 index 0000000..a17b441 --- /dev/null +++ b/SunSharp.Tests/EffectExtensionsTests.cs @@ -0,0 +1,49 @@ +using System; +using System.Linq; +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class EffectExtensionsTests +{ + [Test] + public void ShouldReturnCorrectExtensionMethodValuesForDefinedEnumValues() + { + var nonLinearEffects = new[] + { + Effect.Jump, + Effect.SetJumpMode, + Effect.StopPlaying + }; + + var destructiveEffects = new[] + { + Effect.DeleteEventOnTrackWithProbability, + Effect.CyclicShiftTrackLines, + Effect.GeneratePolyrhythm, + Effect.CopyTrackToPattern, + Effect.CopyTrackFromPattern, + Effect.WriteRandomValue + }; + + var timeModifyingEffects = new[] + { + Effect.SetBpm, + Effect.SetPlayingSpeed + }; + + foreach (var effect in Enum.GetValues()) + { + var expectedToBeNonLinear = nonLinearEffects.Contains(effect); + var expectedToBeDestructive = destructiveEffects.Contains(effect); + var expectedToBeTimeModifying = timeModifyingEffects.Contains(effect); + + Assert.Multiple(() => + { + Assert.That(effect.IsNonLinear(), Is.EqualTo(expectedToBeNonLinear)); + Assert.That(effect.IsDestructive(), Is.EqualTo(expectedToBeDestructive)); + Assert.That(effect.ChangesTempo(), Is.EqualTo(expectedToBeTimeModifying)); + }); + } + } +} diff --git a/SunSharp.Tests/FineTunePairTests.cs b/SunSharp.Tests/FineTunePairTests.cs new file mode 100644 index 0000000..1b43c61 --- /dev/null +++ b/SunSharp.Tests/FineTunePairTests.cs @@ -0,0 +1,77 @@ +using NUnit.Framework; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests; + +public class FineTunePairTests +{ + [Test] + public void FineTunePairFromPackedValueHasExpectedValues() + { + var fineTuneValue = Any.Instance(); + var relativeNoteValue = Any.Instance(); + + var packedValue = Helper.PackTwoSignedShorts(fineTuneValue, relativeNoteValue); + + var fineTune = new FineTunePair(packedValue); + Assert.Multiple(() => + { + Assert.That(fineTune.Value, Is.EqualTo(packedValue)); + Assert.That(fineTune.FineTune, Is.EqualTo(fineTuneValue)); + Assert.That(fineTune.RelativeNote, Is.EqualTo(relativeNoteValue)); + }); + } + + [Test] + public void FineTunePairToStringReturnsExpectedString() + { + var fineTune = new FineTunePair(0, 0); + const string message = "Fine-tune: 0, relative note: 0."; + + Assert.That(fineTune.ToString(), Is.EqualTo(message)); + + var anotherFineTune = new FineTunePair(9241, -9823); + const string anotherMessage = "Fine-tune: 9241, relative note: -9823."; + + Assert.That(anotherFineTune.ToString(), Is.EqualTo(anotherMessage)); + } + + [Test] + public void FineTunePairEqualityComparisonShouldJustWork() + { + var a = new FineTunePair(0, 1); + var b = new FineTunePair(0, 1); + var c = new FineTunePair(1, 0); + + Assert.Multiple(() => + { +#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + Assert.That(a.Equals(b)); + Assert.That(a.Equals(a)); + Assert.That(a.Equals((object?)b)); + Assert.That(a.Equals((object?)a)); + Assert.That(a.Equals(null), Is.False); + Assert.That(a.Equals(new object()), Is.False); + Assert.That(new Note(1).Equals(2), Is.False); + + Assert.That(a == b); + Assert.That(a != c); + Assert.That(a == c, Is.False); +#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + }); + } + + [Test] + public void FineTunePairGetHashCodeShouldPreserveComparability() + { + var a = new FineTunePair(0, 1); + var b = new FineTunePair(0, 1); + var c = new FineTunePair(1, 0); + + Assert.Multiple(() => + { + Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); + Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); + }); + } +} diff --git a/SunSharp.UnitTests/HelperTests.cs b/SunSharp.Tests/HelperTests.cs similarity index 68% rename from SunSharp.UnitTests/HelperTests.cs rename to SunSharp.Tests/HelperTests.cs index 42f4563..096679c 100644 --- a/SunSharp.UnitTests/HelperTests.cs +++ b/SunSharp.Tests/HelperTests.cs @@ -3,9 +3,9 @@ using System.Runtime.InteropServices; using NUnit.Framework; -namespace SunSharp.UnitTests; +namespace SunSharp.Tests; -internal class HelperTests +public class HelperTests { [TestCase(-1)] [TestCase(0)] @@ -59,39 +59,35 @@ public void CopyIntArraySkipNegativeOnesShouldReturnValidData() originalArrayHandle.Free(); } - Assert.That(array, Is.EqualTo(originalArray.Where(i => i != -1).ToArray())); + Assert.That(array, Is.EqualTo(originalArray.Where(static i => i != -1).ToArray())); } - [TestCase(0, 0)] - [TestCase(-1, -1)] - [TestCase(1, 1)] - [TestCase(short.MaxValue, short.MaxValue)] - [TestCase(short.MinValue, short.MaxValue)] - [TestCase(short.MaxValue, short.MinValue)] - [TestCase(short.MinValue, short.MinValue)] - public void SplitValueTo2DPositionShouldReturnExpectedValues(short x, short y) + [TestCase(0, 0, 0u)] + [TestCase(-1, -1, 0xFFFFFFFFu)] + [TestCase(1, 1, 0x00010001u)] + [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] + [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] + [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] + [TestCase(short.MinValue, short.MinValue, 0x80008000u)] + public void UnpackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) { - var value = unchecked((ushort)x) - | ((uint)(unchecked((ushort)y)) << 16); - var result = Helper.SplitValueTo2DPosition(value); + var result = Helper.UnpackTwoSignedShorts(value); - Assert.That(result, Is.EqualTo((x, y))); + Assert.That(result, Is.EqualTo((lowerBytes, upperBytes))); } - [TestCase(0, 0)] - [TestCase(-1, -1)] - [TestCase(1, 1)] - [TestCase(short.MaxValue, short.MaxValue)] - [TestCase(short.MinValue, short.MaxValue)] - [TestCase(short.MaxValue, short.MinValue)] - [TestCase(short.MinValue, short.MinValue)] - public void SplitValueToFineTuneShouldReturnExpectedValues(short fineTune, short relativeNote) + [TestCase(0, 0, 0u)] + [TestCase(-1, -1, 0xFFFFFFFFu)] + [TestCase(1, 1, 0x00010001u)] + [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] + [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] + [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] + [TestCase(short.MinValue, short.MinValue, 0x80008000u)] + public void PackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) { - var value = unchecked((ushort)fineTune) - | ((uint)(unchecked((ushort)relativeNote)) << 16); - var result = Helper.SplitValueToFineTune(value); + var result = Helper.PackTwoSignedShorts(lowerBytes, upperBytes); - Assert.That(result, Is.EqualTo((fineTune, relativeNote))); + Assert.That(result, Is.EqualTo(value)); } [TestCase(0x7800, 16.35)] // C0 diff --git a/SunSharp.Tests/LibraryVersionTests.cs b/SunSharp.Tests/LibraryVersionTests.cs new file mode 100644 index 0000000..0068a33 --- /dev/null +++ b/SunSharp.Tests/LibraryVersionTests.cs @@ -0,0 +1,43 @@ +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class LibraryVersionTests +{ + [Test] + public void LibraryVersionConstructorShouldSetPropertiesAsExpected() + { + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + var version = new LibraryVersion(major, minor, minor2); + Assert.Multiple(() => + { + Assert.That(version.Major, Is.EqualTo(1)); + Assert.That(version.Minor, Is.EqualTo(2)); + Assert.That(version.Minor2, Is.EqualTo(3)); + }); + const int code = (major << 16) + | (minor << 8) + | minor2; + var anotherVersion = new LibraryVersion(code); + Assert.Multiple(() => + { + Assert.That(anotherVersion.Major, Is.EqualTo(1)); + Assert.That(anotherVersion.Minor, Is.EqualTo(2)); + Assert.That(anotherVersion.Minor2, Is.EqualTo(3)); + }); + } + + [Test] + public void LibraryVersionToStringReturnsExpectedFormat() + { + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + var version = new LibraryVersion(major, minor, minor2); + var value = $"SunVox Lib v{major}.{minor}.{minor2}"; + + Assert.That(version.ToString(), Is.EqualTo(value)); + } +} diff --git a/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs b/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs new file mode 100644 index 0000000..ad0ae7a --- /dev/null +++ b/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs @@ -0,0 +1,17 @@ +namespace SunSharp.Tests.Mocks; + +public static class ModuleFlagsHelper +{ + public static uint CreateModuleFlagsValue(bool exists = false, bool isGenerator = false, bool isEffect = false, + bool isMute = false, bool isSolo = false, bool isBypassed = false, byte inputCount = 0, byte outputCount = 0) + { + return ((exists ? 1u : 0) << 0) + | ((isGenerator ? 1u : 0) << 1) + | ((isEffect ? 1u : 0) << 2) + | ((isMute ? 1u : 0) << 3) + | ((isSolo ? 1u : 0) << 4) + | ((isBypassed ? 1u : 0) << 5) + | ((uint)inputCount << 16) + | ((uint)outputCount << 24); + } +} diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs new file mode 100644 index 0000000..4d6c5e2 --- /dev/null +++ b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs @@ -0,0 +1,91 @@ +using System.Linq; +using NSubstitute; +using SunSharp.Data; + +namespace SunSharp.Tests.Mocks; + +public class SunVoxLibMockProvider +{ + private readonly ISunVoxLib _mock = Substitute.For(); + + public static SunVoxLibMockProvider BuildMock() + { + return new SunVoxLibMockProvider(); + } + + public SunVoxLibMockProvider WithSongData(int slotId, SongData songData) + { + _mock.GetSongName(slotId).Returns(songData.Name); + _mock.GetSongBpm(slotId).Returns(songData.BPM); + _mock.GetSongTpl(slotId).Returns(songData.TPL); + _mock.GetCurrentLine(slotId).Returns(songData.CurrentLine); + _mock.GetCurrentLineWithTenthPart(slotId).Returns(songData.CurrentLine * 10); + _mock.GetSongLengthInLines(slotId).Returns(songData.Lines); + + WithModuleData(slotId, songData.Modules.ToArray()); + + WithPatternData(slotId, songData.Patterns.ToArray()); + + return this; + } + + public SunVoxLibMockProvider WithPatternData(int slotId, PatternData[] patternData) + { + _mock.GetPatternExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); + _mock.GetUpperPatternCount(slotId).Returns(patternData.Max(static p => p.Id) + 1); + + foreach (var pattern in patternData) + { + _mock.GetPatternExists(slotId, pattern.Id).Returns(true); + _mock.GetPatternName(slotId, pattern.Id).Returns(pattern.Name); + _mock.GetPatternPosition(slotId, pattern.Id).Returns(pattern.Position); + _mock.GetPatternX(slotId, pattern.Id).Returns(pattern.Position.X); + _mock.GetPatternY(slotId, pattern.Id).Returns(pattern.Position.Y); + _mock.GetPatternData(slotId, pattern.Id).Returns((pattern.Data.ToArray(), pattern.Tracks, pattern.Lines)); + _mock.GetPatternMuted(slotId, pattern.Id).Returns(pattern.IsMuted); + } + + return this; + } + + public SunVoxLibMockProvider WithModuleData(int slotId, ModuleData[] moduleData) + { + _mock.GetModuleExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); + _mock.GetUpperModuleCount(slotId).Returns(moduleData.Max(static m => m.Id) + 1); + + foreach (var module in moduleData) + { + _mock.GetModuleExists(slotId, module.Id).Returns(true); + _mock.GetModuleName(slotId, module.Id).Returns(module.Name); + _mock.GetModuleColor(slotId, module.Id).Returns(module.Color); + _mock.GetModuleFineTune(slotId, module.Id).Returns(module.FineTune); + _mock.GetModulePosition(slotId, module.Id).Returns(module.Position); + _mock.GetModuleFlags(slotId, module.Id).Returns(new ModuleFlags(module.Flags)); + _mock.GetModuleType(slotId, module.Id).Returns(module.Type); + _mock.GetModuleInputs(slotId, module.Id).Returns(module.Inputs.ToArray()); + _mock.GetModuleOutputs(slotId, module.Id).Returns(module.Outputs.ToArray()); + + _mock.GetModuleControllerCount(slotId, module.Id).Returns(module.Controllers.Count); + foreach (var controller in module.Controllers) + { + _mock.GetModuleControllerName(slotId, module.Id, controller.Id).Returns(controller.Name); + _mock.GetModuleControllerGroup(slotId, module.Id, controller.Id).Returns(controller.Group); + _mock.GetModuleControllerValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) + .Returns(controller.Value); + _mock.GetModuleControllerMaxValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) + .Returns(controller.MaxValue); + _mock.GetModuleControllerMinValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) + .Returns(controller.MinValue); + _mock.GetModuleControllerType(slotId, module.Id, controller.Id).Returns(controller.ControllerType); + _mock.GetModuleControllerOffset(slotId, module.Id, controller.Id).Returns(controller.Offset); + } + } + + return this; + } + + public ISunVoxLib Build() + { + return _mock; + } +} diff --git a/SunSharp.Tests/ModuleFlagsTests.cs b/SunSharp.Tests/ModuleFlagsTests.cs new file mode 100644 index 0000000..21f45af --- /dev/null +++ b/SunSharp.Tests/ModuleFlagsTests.cs @@ -0,0 +1,68 @@ +using NUnit.Framework; +using static SunSharp.Tests.Mocks.ModuleFlagsHelper; + +namespace SunSharp.Tests; + +public class ModuleFlagsTests +{ + [Test] + public void ModuleFlagsPropertiesShouldReturnValuesAsExpected() + { + for (uint i = 0; i <= 0b111111; i++) + { + var flag = new ModuleFlags(i); + + Assert.Multiple(() => + { + Assert.That(flag.Exists, Is.EqualTo((i & (1 << 0)) != 0)); + Assert.That(flag.Generator, Is.EqualTo((i & (1 << 1)) != 0)); + Assert.That(flag.Effect, Is.EqualTo((i & (1 << 2)) != 0)); + Assert.That(flag.Mute, Is.EqualTo((i & (1 << 3)) != 0)); + Assert.That(flag.Solo, Is.EqualTo((i & (1 << 4)) != 0)); + Assert.That(flag.Bypass, Is.EqualTo((i & (1 << 5)) != 0)); + }); + } + } + + [Test] + public void ModuleFlagsInputCountAndOutputCountReturnExpectedValues() + { + var exampleFlags = new ModuleFlags(0); + Assert.Multiple(() => + { + Assert.That(exampleFlags.InputUpperCount, Is.EqualTo(0)); + Assert.That(exampleFlags.OutputUpperCount, Is.EqualTo(0)); + }); + + var otherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 255, outputCount: 255)); + Assert.Multiple(() => + { + Assert.That(otherExampleFlags.InputUpperCount, Is.EqualTo(255)); + Assert.That(otherExampleFlags.OutputUpperCount, Is.EqualTo(255)); + }); + + var andAnotherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 4, outputCount: 8)); + Assert.Multiple(() => + { + Assert.That(andAnotherExampleFlags.InputUpperCount, Is.EqualTo(4)); + Assert.That(andAnotherExampleFlags.OutputUpperCount, Is.EqualTo(8)); + }); + } + + [TestCase(0u)] + [TestCase(1u)] + [TestCase(2023u)] + [TestCase(uint.MaxValue)] + public void ModuleFlagsImplicitConversionShouldReturnInternalValue(uint value) + { + var exampleFlags = (ModuleFlags)value; + var valueFromConversion = (uint)exampleFlags; + + Assert.Multiple(() => + { + Assert.That(exampleFlags.Value, Is.EqualTo(value)); + Assert.That(valueFromConversion, Is.EqualTo(exampleFlags.Value)); + Assert.That(valueFromConversion, Is.EqualTo(value)); + }); + } +} diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs new file mode 100644 index 0000000..b922ac7 --- /dev/null +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -0,0 +1,371 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NSubstitute; +using NSubstitute.ExceptionExtensions; +using NUnit.Framework; +using SunSharp.Native; +using SunSharp.Native.Loader; + +namespace SunSharp.Tests.Native.Loader; + +public class NativeProxyTests +{ + private static void AssertThatGetFunctionByNameWasCalledForAllMethods(ILibraryHandler handler) + { + var methods = typeof(ISunVoxLibC).GetMethods(); + + foreach (var method in methods) + handler.Received(1).GetFunctionByName(method.Name, Arg.Any()); + } + + private static void AssertThatGetFunctionByNameWasCalledForNoMethods(ILibraryHandler handler) + { + handler.Received(0).GetFunctionByName(Arg.Any(), Arg.Any()); + } + + private static Dictionary PrepareHandlerAndGetDelegateDictionary(ILibraryHandler handler) + { + var delegates = new Dictionary(); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + delegates.Add(callInfo.Arg(), @delegate); + return @delegate; + }); + return delegates; + } + + [Test] + public void NativeProxyShouldCallExpectedMethodsInPositiveScenario() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(false); + var delegates = PrepareHandlerAndGetDelegateDictionary(handler); + + // when + var proxy = new NativeProxy(handler); + proxy.Load(); + + // then + _ = handler.Received().IsLibraryLoaded; + handler.Received(1).LoadLibrary(); + AssertThatGetFunctionByNameWasCalledForAllMethods(handler); + + // setup + handler.ClearReceivedCalls(); + handler.IsLibraryLoaded.Returns(true); + + // when + proxy.Load(); + + // then + _ = handler.Received().IsLibraryLoaded; + handler.Received(0).LoadLibrary(); + AssertThatGetFunctionByNameWasCalledForNoMethods(handler); + + //setup + handler.ClearReceivedCalls(); + handler.IsLibraryLoaded.Returns(true); + + // when + proxy.Unload(); + + // then + _ = handler.Received(1).IsLibraryLoaded; + delegates[nameof(ISunVoxLibC.sv_deinit)].Received(1).DynamicInvoke(); + handler.Received(1).UnloadLibrary(); + } + + [Test] + public void NativeProxyLoadShouldNotCallHandlerLoadIfLibraryLoadedButProxyIsNot() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); + + var proxy = new NativeProxy(handler); + + // when + proxy.Load(); + + // then + _ = handler.Received().IsLibraryLoaded; + handler.Received(0).LoadLibrary(); + AssertThatGetFunctionByNameWasCalledForAllMethods(handler); + } + + [Test] + public void NativProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(false); + var innerException = new Exception("A fun exception."); + handler.When(static h => h.LoadLibrary()).Throw(innerException); + + var proxy = new NativeProxy(handler); + + // when + Assert.That(() => proxy.Load(), Throws.Exception.EqualTo(innerException)); + Received.InOrder(() => + { + handler.Received(1).LoadLibrary(); + handler.Received(1).UnloadLibrary(); + }); + AssertThatGetFunctionByNameWasCalledForNoMethods(handler); + } + + [Test] + public void NativeProxyShouldCallUnloadLibraryWhenLibraryFailedAndRethrowException() + { + var handler = Substitute.For(); + var delegates = PrepareHandlerAndGetDelegateDictionary(handler); + handler.IsLibraryLoaded.Returns(false); + + var proxy = new NativeProxy(handler); + + proxy.Load(); + + _ = handler.Received().IsLibraryLoaded; + handler.Received(1).LoadLibrary(); + + handler.ClearReceivedCalls(); + handler.IsLibraryLoaded.Returns(true); + + proxy.Unload(); + + _ = handler.Received().IsLibraryLoaded; + handler.Received(1).UnloadLibrary(); + delegates[nameof(ISunVoxLibC.sv_deinit)].Received(1).DynamicInvoke(); + } + + [TestCase(false, true, "Missing delegate. Library is not loaded, proxy is loaded.")] + [TestCase(true, false, "Missing delegate. Library is loaded, proxy is not loaded.")] + [TestCase(false, false, "Missing delegate. Library is not loaded, proxy is not loaded.")] + [TestCase(true, true, "Missing delegate. Library is loaded, proxy is loaded.")] + public void NativeProxyGetExceptionReturnsExpectedMessage(bool libraryLoaded, bool proxyLoaded, string message) + { + var handler = Substitute.For(); + var proxy = new NativeProxy(handler); + + if (proxyLoaded) + proxy.Load(); + else + proxy.Unload(); + + Assert.That(proxy.IsLoaded, Is.EqualTo(proxyLoaded)); + + handler.IsLibraryLoaded.Returns(libraryLoaded); + + var exception = proxy.GetNoDelegateException(); + Assert.That(exception.Message, Is.EqualTo(message)); + } + + [Test] + public void NativeProxyGetExceptionReturnsExpectedMessageOnFailWhenGettingLibraryStatus() + { + var handler = Substitute.For(); + var proxy = new NativeProxy(handler); + + var innerException = new Exception("A fun exception."); + handler.IsLibraryLoaded.Throws(innerException); + const string message = "Missing delegate. Library state is unknown."; + + var exception = proxy.GetNoDelegateException(); + + Assert.Multiple(() => + { + Assert.That(exception.Message, Is.EqualTo(message)); + Assert.That(exception.InnerException, Is.EqualTo(innerException)); + }); + } + + private static object? GetDefault(Type type) + { + return type.IsValueType ? Activator.CreateInstance(type) : null; + } + + [Test] + public void NativeProxyShouldAskForAndCallProvidedDelegates() + { + var libraryHandler = Substitute.For(); + + var delegates = new Dictionary(); + libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + delegates.Add(callInfo.Arg(), @delegate); + return @delegate; + }); + + var proxy = new NativeProxy(libraryHandler); + proxy.Load(); + + foreach (var methodName in typeof(ISunVoxLibC).GetMethods().Select(m => m.Name)) + Assert.That(delegates.ContainsKey(methodName)); + + foreach (var method in typeof(ISunVoxLibC).GetMethods()) + { + var parameters = method.GetParameters().Select(p => GetDefault(p.ParameterType)).ToArray(); + method.Invoke(proxy, parameters); + + delegates[method.Name].Received(1).DynamicInvoke(parameters); + } + } + + [Test] + public void NativeProxyUnloadShouldCallDeinitWhenAvailable() + { + var libraryHandler = Substitute.For(); + + var delegates = new Dictionary(); + libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + delegates.Add(callInfo.Arg(), @delegate); + return @delegate; + }); + + libraryHandler.IsLibraryLoaded.Returns(true); + var proxy = new NativeProxy(libraryHandler); + proxy.Load(); + + // WHEN + proxy.Unload(); + + // THEN + var method = delegates[nameof(ISunVoxLibC.sv_deinit)]; + method.Received(1).DynamicInvoke(); + libraryHandler.Received(1).UnloadLibrary(); + } + + [Test] + public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsWhenDeinitFails() + { + var libraryHandler = Substitute.For(); + + var delegates = new Dictionary(); + libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + delegates.Add(callInfo.Arg(), @delegate); + return @delegate; + }); + + libraryHandler.IsLibraryLoaded.Returns(true); + + var proxy = new NativeProxy(libraryHandler); + var exception = new Exception("A fun exception."); + + proxy.Load(); + + var method = delegates[nameof(ISunVoxLibC.sv_deinit)]; + method.DynamicInvoke().Throws(exception); + + // WHEN - THEN + Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + + // AND + method.Received(1).DynamicInvoke(); + libraryHandler.Received(0).UnloadLibrary(); + } + + [Test] + public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsWhenUnloadLibraryFails() + { + var libraryHandler = Substitute.For(); + + var delegates = new Dictionary(); + libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(callInfo => + { + var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + delegates.Add(callInfo.Arg(), @delegate); + return @delegate; + }); + + libraryHandler.IsLibraryLoaded.Returns(true); + + var proxy = new NativeProxy(libraryHandler); + var exception = new Exception("A fun exception."); + + proxy.Load(); + + var method = delegates[nameof(ISunVoxLibC.sv_deinit)]; + libraryHandler.When(static handler => handler.UnloadLibrary()).Throw(exception); + + // WHEN - THEN + Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + + // AND + method.Received(1).DynamicInvoke(); + libraryHandler.Received(1).UnloadLibrary(); + } + + [Test] + public void NativeProxyUnloadShouldThrowBothExpectedExceptionsAndCallExpectedMethodsWhenUnloadLibraryAndDeinitFail() + { + var libraryHandler = Substitute.For(); + + libraryHandler.IsLibraryLoaded.Returns(true); + var delegates = PrepareHandlerAndGetDelegateDictionary(libraryHandler); + + var proxy = new NativeProxy(libraryHandler); + var exception = new Exception("A fun exception."); + + proxy.Load(); + + var method = delegates[nameof(ISunVoxLibC.sv_deinit)]; + method.DynamicInvoke().Throws(exception); + + // WHEN - THEN + Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + + // AND + method.Received(1).DynamicInvoke(); + libraryHandler.Received(0).UnloadLibrary(); + Assert.That(proxy.IsLoaded, Is.True); + } + + [Test] + public void NativeProxyUnloadShouldThrowWhenDeinitDelegateWasNotProvided() + { + var libraryHandler = Substitute.For(); + + libraryHandler.IsLibraryLoaded.Returns(true); + + var proxy = new NativeProxy(libraryHandler); + + proxy.Load(); + + // WHEN - THEN + Assert.That(() => proxy.Unload(), + Throws.InvalidOperationException + .With.Message + .EqualTo($"{nameof(ISunVoxLibC.sv_deinit)} was null, but library and proxy are both loaded.")); + + // AND + libraryHandler.Received(0).UnloadLibrary(); + Assert.That(proxy.IsLibraryLoaded); + } + + [Test] + public void NativeProxyInterfaceCallsShouldThrowInvalidOperationExceptionBeforeLoadCalled() + { + var libraryHandler = Substitute.For(); + libraryHandler.IsLibraryLoaded.Returns(false); + var proxy = new NativeProxy(libraryHandler); + + foreach (var method in typeof(ISunVoxLibC).GetMethods()) + { + var parameters = method.GetParameters().Select(static p => GetDefault(p.ParameterType)).ToArray(); + Assert.That(() => method.Invoke(proxy, parameters), + Throws.Exception.With.InnerException.TypeOf() + .And.InnerException.With.Message + .EqualTo("Missing delegate. Library is not loaded, proxy is not loaded.")); + } + } +} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs new file mode 100644 index 0000000..b25b475 --- /dev/null +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -0,0 +1,662 @@ +using System; +using System.Runtime.InteropServices; +using NSubstitute; +using NUnit.Framework; +using SunSharp.Native; +using TddXt.AnyRoot.Collections; +using TddXt.AnyRoot.Numbers; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Native; + +public class SunVoxLibNativeWrapperAudioCallbackTests +{ + #region input short, output short + + [TestCase(true)] + [TestCase(false)] + public void + ForOutputShortInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(32); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(32); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new short[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new short[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 0, 2, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + #endregion input short, output short + + #region input float, output short + + [TestCase(true)] + [TestCase(false)] + public void + ForOutputShortInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(32); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(32); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new short[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 2, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + #endregion + + #region input short, output float + + [TestCase(true)] + [TestCase(false)] + public void + ForOutputFloatInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(32); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(32); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new short[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 0, 2, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + #endregion + + #region output only, float, mono + + [TestCase(true)] + [TestCase(false)] + public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var buffer = Any.Array(25); + var copiedBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When( + static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedBuffer = new float[callInfo.ArgAt(1)]; + Marshal.Copy(callInfo.Arg(), copiedBuffer, 0, copiedBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length, latency, outTime); + Assert.Multiple(() => + { + Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [TestCase(-1)] + [TestCase(2)] + public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + var buffer = Any.Array(1); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion output only, float, mono + + #region output only, float, stereo + + [TestCase(true)] + [TestCase(false)] + public void ForFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var buffer = Any.Array(32); + var copiedBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When( + static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.Arg(), copiedBuffer, 0, copiedBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length / 2, latency, outTime); + Assert.Multiple(() => + { + Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [Test] + public void ForFloatInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + var buffer = Any.Array(31); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), + Throws.ArgumentException.With.Message.EqualTo("Buffer size is not a multiple of two.")); + + // then + library.Received(0).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + [TestCase(-1)] + [TestCase(2)] + public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + var buffer = Any.Array(32); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion output only, float, stereo + + #region output only, short, mono + + [TestCase(true)] + [TestCase(false)] + public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var buffer = Any.Array(25); + var copiedBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When( + static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedBuffer = new short[callInfo.ArgAt(1)]; + Marshal.Copy(callInfo.Arg(), copiedBuffer, 0, copiedBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length, latency, outTime); + Assert.Multiple(() => + { + Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [TestCase(-1)] + [TestCase(2)] + public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + var buffer = Any.Array(1); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion output only, short, mono + + #region output only, short, stereo + + [TestCase(true)] + [TestCase(false)] + public void ForShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var buffer = Any.Array(32); + var copiedBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When( + static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedBuffer = new short[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.Arg(), copiedBuffer, 0, copiedBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length / 2, latency, outTime); + Assert.Multiple(() => + { + Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [Test] + public void ForShortInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + var buffer = Any.Array(31); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), + Throws.ArgumentException.With.Message.EqualTo("Buffer size is not a multiple of two.")); + + // then + library.Received(0).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + [TestCase(-1)] + [TestCase(2)] + public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + var buffer = Any.Array(32); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion output only, short, stereo + + #region output float mono, input float mono + + [TestCase(true)] + [TestCase(false)] + public void ForOutputFloatInMonoInputFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(25); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(25); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new float[callInfo.ArgAt(1)]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new float[callInfo.ArgAt(1)]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length, latency, outTime, 1, 1, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [Test] + public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfBufferSizeMismatched() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(1); + var outputBuffer = Any.Array(1); + var inputBuffer = Any.Array(2); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That( + () => wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, + outTime), Throws.ArgumentException); + + // then + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()); + } + + [TestCase(-1)] + [TestCase(2)] + public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(returnCode); + var outputBuffer = Any.Array(25); + var inputBuffer = Any.Array(25); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That( + () => wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, + outTime), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion output float mono, input float mono + + #region output float stereo, input float mono + + [TestCase(true)] + [TestCase(false)] + public void + ForOutputFloatInStereoInputFloatInMonoShouldCallExpectedMethodWithHalfInputFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(32); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(16); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new float[callInfo.ArgAt(1)]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Mono, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [Test] + public void ForOutputFloatInStereoInputFloatInMonoShouldThrowDueToBufferSizeMismatch() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(1); + var outputBuffer = Any.Array(32); + var inputBuffer = Any.Array(17); // 17 is not half of 32 + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That( + () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Mono, latency, + outTime), Throws.ArgumentException); + + // then + library.Received(0).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, + Arg.Any()); + } + + #endregion output float stereo, input float mono + + #region input float stereo, output float stereo + + [TestCase(true)] + [TestCase(false)] + public void + ForOutputFloatInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + bool expectedValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()) + .Returns(expectedValue ? 1 : 0); + var outputBuffer = Any.Array(32); + var copiedOutputBuffer = Array.Empty(); + var inputBuffer = Any.Array(32); + var copiedInputBuffer = Array.Empty(); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + copiedOutputBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(0), copiedOutputBuffer, 0, copiedOutputBuffer.Length); + copiedInputBuffer = new float[callInfo.ArgAt(1) * 2]; + Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); + }); + + // when + var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, + latency, outTime); + + // then + library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 2, + Arg.Any()); + Assert.Multiple(() => + { + Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); + Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); + Assert.That(returnedValue, Is.EqualTo(expectedValue)); + }); + } + + [Test] + public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenInputBufferSizeNotDivisibleByTwo() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var outputBuffer = Any.Array(32); + var inputBuffer = Any.Array(31); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That( + () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, + outTime), + Throws.ArgumentException.With.Message.EqualTo("Input buffer size is not a multiple of two.")); + + // then + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()); + } + + [Test] + public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenOutputBufferSizeNotDivisibleByTwo() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var outputBuffer = Any.Array(31); + var inputBuffer = Any.Array(32); + var latency = Any.Integer(); + var outTime = Any.UnsignedInt(); + + // when + Assert.That( + () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, + outTime), + Throws.ArgumentException.With.Message.EqualTo("Output buffer size is not a multiple of two.")); + + // then + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()); + } + + #endregion input float stereo, output float stereo +} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs new file mode 100644 index 0000000..9094f45 --- /dev/null +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -0,0 +1,1588 @@ +using System; +using System.Runtime.InteropServices; +using NSubstitute; +using NUnit.Framework; +using SunSharp.Native; +using TddXt.AnyRoot.Collections; +using TddXt.AnyRoot.Numbers; +using TddXt.AnyRoot.Strings; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Native; + +public class SunVoxLibNativeWrapperModulesTests +{ + public static TestCaseData[] ModuleInputOutputAndResult => new TestCaseData[] + { + new(new[] { -1 }, Array.Empty()), + new(new[] { 0 }, new[] { 0 }), + new(new[] { -1, 0, 1, 2 }, new[] { 0, 1, 2 }), + new(new[] { -1, -1, 1, -1, 2, -1, -1, 3 }, new[] { 1, 2, 3 }) + }; + + [Test] + public void ConnectModuleShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + var slotId = Any.Integer(); + var source = Any.Integer(); + var destination = Any.Integer(); + + // when + wrapper.ConnectModule(slotId, source, destination); + + // then + library.Received(1).sv_connect_module(slotId, source, destination); + } + + [Test] + public void ConnectModuleShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + var source = Any.Integer(); + var destination = Any.Integer(); + + // when - then + Assert.That(() => wrapper.ConnectModule(slotId, source, destination), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_connect_module(slotId, source, destination); + } + + [Test] + public void CreateModuleShouldCallExpectedMethod() + { + var newModuleId = Any.Integer(); + var moduleName = Any.String(); + var moduleType = Any.String(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + var receivedModuleName = string.Empty; + var receivedModuleType = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(newModuleId); + library.When(static l => l.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedModuleType = Marshal.PtrToStringAnsi(callInfo.ArgAt(1)); + receivedModuleName = Marshal.PtrToStringAnsi(callInfo.ArgAt(2)); + }); + + // when + var value = wrapper.CreateModule(slotId, moduleType, moduleName, x, y, z); + + // then + library.Received(1).sv_new_module(slotId, Arg.Any(), Arg.Any(), x, y, z); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(newModuleId)); + Assert.That(receivedModuleName, Is.EqualTo(moduleName)); + Assert.That(receivedModuleType, Is.EqualTo(moduleType)); + }); + } + + [Test] + public void CreateModuleShouldThrowOnNegativeReturnedValue() + { + var moduleName = Any.String(); + var moduleType = Any.String(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.CreateModule(slotId, moduleType, moduleName, x, y, z), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_new_module(slotId, Arg.Any(), Arg.Any(), x, y, z); + } + + [Test] + public void DisconnectModuleShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + var slotId = Any.Integer(); + var source = Any.Integer(); + var destination = Any.Integer(); + + // when + wrapper.DisconnectModule(slotId, source, destination); + + // then + library.Received(1).sv_disconnect_module(slotId, source, destination); + } + + [Test] + public void DisconnectModuleShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + var source = Any.Integer(); + var destination = Any.Integer(); + + // when - then + Assert.That(() => wrapper.DisconnectModule(slotId, source, destination), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_disconnect_module(slotId, source, destination); + } + + [Test] + public void FindModuleShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var foundModuleId = Any.Integer(); + library.sv_find_module(Arg.Any(), Arg.Any()).Returns(foundModuleId); + var moduleName = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var value = wrapper.FindModule(slotId, moduleName); + + // then + library.Received(1).sv_find_module(slotId, Arg.Any()); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(foundModuleId)); + Assert.That(receivedString, Is.EqualTo(moduleName)); + }); + } + + [Test] + public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-1); + var moduleName = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var value = wrapper.FindModule(slotId, moduleName); + + // then + library.Received(1).sv_find_module(slotId, Arg.Any()); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(null)); + Assert.That(receivedString, Is.EqualTo(moduleName)); + }); + } + + [Test] + public void FindModuleShouldThrowOnUnexpectedValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-2); + var moduleName = Any.String(); + var slotId = Any.Integer(); + + // when + Assert.That(() => wrapper.FindModule(slotId, moduleName), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_find_module(slotId, Arg.Any()); + } + + [Test] + public void GetModuleColorShouldCallExpectedMethodAndReturnValue() + { + var r = Any.Byte(); + var g = Any.Byte(); + var b = Any.Byte(); + var code = r | (g << 8) | (b << 16); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetModuleColor(slotId, moduleId); + + // then + library.Received(1).sv_get_module_color(slotId, moduleId); + Assert.Multiple(() => { Assert.That(value, Is.EqualTo((r, g, b))); }); + } + + [Test] + public void GetModuleControllerCountShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var moduleCount = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(moduleCount); + + // when + var value = wrapper.GetModuleControllerCount(slotId, moduleId); + + // then + library.Received(1).sv_get_number_of_module_ctls(slotId, moduleId); + Assert.That(value, Is.EqualTo(moduleCount)); + } + + [Test] + public void GetModuleControllerCountShouldCallExpectedMethodAndThrowOnNegativeValue() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetModuleControllerCount(slotId, moduleId), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_number_of_module_ctls(slotId, moduleId); + } + + [Test] + public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Integer(); + library.sv_get_module_ctl_group(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); + + // when + var value = wrapper.GetModuleControllerGroup(slotId, moduleId, controllerId); + + // then + library.Received(1).sv_get_module_ctl_group(slotId, moduleId, controllerId); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [Test] + public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Integer(); + var scalingMode = Any.Instance(); + library.sv_get_module_ctl_max(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnedValue); + + // when + var value = wrapper.GetModuleControllerMaxValue(slotId, moduleId, controllerId, scalingMode); + + // then + library.Received(1).sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [Test] + public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Integer(); + var scalingMode = Any.Instance(); + library.sv_get_module_ctl_min(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnedValue); + + // when + var value = wrapper.GetModuleControllerMinValue(slotId, moduleId, controllerId, scalingMode); + + // then + library.Received(1).sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [Test] + public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_ctl_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var receivedControllerName = wrapper.GetModuleControllerName(slotId, moduleId, controllerId); + + // then + library.Received(1).sv_get_module_ctl_name(slotId, moduleId, controllerId); + Assert.That(receivedControllerName, Is.EqualTo(null)); + } + + [Test] + public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var controllerName = Any.String(); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var stringPointer = IntPtr.Zero; + string? receivedControllerName; + + try + { + stringPointer = Marshal.StringToHGlobalAnsi(controllerName); + library.sv_get_module_ctl_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(stringPointer); + + // when + receivedControllerName = wrapper.GetModuleControllerName(slotId, moduleId, controllerId); + } + finally + { + Marshal.FreeHGlobal(stringPointer); + } + + // then + library.Received(1).sv_get_module_ctl_name(slotId, moduleId, controllerId); + Assert.That(receivedControllerName, Is.EqualTo(controllerName)); + } + + [Test] + public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Integer(); + library.sv_get_module_ctl_offset(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); + + // when + var value = wrapper.GetModuleControllerOffset(slotId, moduleId, controllerId); + + // then + library.Received(1).sv_get_module_ctl_offset(slotId, moduleId, controllerId); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [Test] + public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Instance(); + library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns((int)returnedValue); + + // when + var value = wrapper.GetModuleControllerType(slotId, moduleId, controllerId); + + // then + library.Received(1).sv_get_module_ctl_type(slotId, moduleId, controllerId); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [Test] + public void GetModuleControllerTypeShouldCallExpectedMethodAndThrowOnUnexpectedValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetModuleControllerType(slotId, moduleId, controllerId), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_module_ctl_type(slotId, moduleId, controllerId); + } + + [Test] + public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var returnedValue = Any.Integer(); + var scalingMode = Any.Instance(); + library.sv_get_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnedValue); + + // when + var value = wrapper.GetModuleControllerValue(slotId, moduleId, controllerId, scalingMode); + + // then + library.Received(1).sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); + Assert.That(value, Is.EqualTo(returnedValue)); + } + + [TestCase(true)] + [TestCase(false)] + public void GetModuleExistsShouldCallExpectedMethodAndReturnValue(bool exists) + { + var flagsValue = (uint)(ModuleFlags.SV_MODULE_FLAG_EXISTS * (exists ? 1 : 0)); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var receivedExists = wrapper.GetModuleExists(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + Assert.That(receivedExists, Is.EqualTo(exists)); + } + + [Test] + public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue() + { + var moduleFineTune = Any.Instance(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_finetune(Arg.Any(), Arg.Any()).Returns(moduleFineTune.Value); + + // when + var receivedFineTune = wrapper.GetModuleFineTune(slotId, moduleId); + + // then + library.Received(1).sv_get_module_finetune(slotId, moduleId); + Assert.That(receivedFineTune, Is.EqualTo(moduleFineTune)); + } + + [Test] + public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue() + { + var flagsValue = Any.UnsignedInt(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var flags = wrapper.GetModuleFlags(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + Assert.That(flags, Is.EqualTo((ModuleFlags)flagsValue)); + } + + [TestCaseSource(nameof(ModuleInputOutputAndResult))] + public void GetModuleInputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) + { + var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_INPUTS_OFF) | + ModuleFlags.SV_MODULE_FLAG_EXISTS); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // assumes that GetModuleInputs frees this memory + var ptr = Marshal.AllocHGlobal(sizeof(int) * nativeData.Length); + Marshal.Copy(nativeData, 0, ptr, nativeData.Length); + library.sv_get_module_inputs(Arg.Any(), Arg.Any()).Returns(ptr); + + // when + var receivedInputs = wrapper.GetModuleInputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(1).sv_get_module_inputs(slotId, moduleId); + Assert.That(receivedInputs, Is.EquivalentTo(expectedOutput)); + } + + [Test] + public void GetModuleInputsShouldSkipCallsIfDoesNotExist() + { + const uint flagsValue = 0u; + Assert.That(new ModuleFlags(flagsValue).Exists, Is.False); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var receivedInputs = wrapper.GetModuleInputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(0).sv_get_module_inputs(slotId, moduleId); + Assert.That(receivedInputs, Is.EquivalentTo(Array.Empty())); + } + + [Test] + public void GetModuleInputsShouldSkipCallsIfZeroInputs() + { + const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; + Assert.That(new ModuleFlags(flagsValue).InputUpperCount, Is.EqualTo(0)); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var receivedInputs = wrapper.GetModuleInputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(0).sv_get_module_inputs(slotId, moduleId); + Assert.That(receivedInputs, Is.EquivalentTo(Array.Empty())); + } + + [Test] + public void GetModuleNameShouldCallExpectedMethodAndReturnNullWhenNullPointer() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var receivedModuleName = wrapper.GetModuleName(slotId, moduleId); + // then + library.Received(1).sv_get_module_name(slotId, moduleId); + Assert.That(receivedModuleName, Is.EqualTo(null)); + } + + [Test] + public void GetModuleNameShouldCallExpectedMethodAndReturnString() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleName = Any.String(); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var stringPointer = IntPtr.Zero; + string? receivedModuleName; + + try + { + stringPointer = Marshal.StringToHGlobalAnsi(moduleName); + library.sv_get_module_name(Arg.Any(), Arg.Any()).Returns(stringPointer); + + // when + receivedModuleName = wrapper.GetModuleName(slotId, moduleId); + } + finally + { + Marshal.FreeHGlobal(stringPointer); + } + + // then + library.Received(1).sv_get_module_name(slotId, moduleId); + Assert.That(receivedModuleName, Is.EqualTo(moduleName)); + } + + [TestCaseSource(nameof(ModuleInputOutputAndResult))] + public void GetModuleOutputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) + { + var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_OUTPUTS_OFF) | + ModuleFlags.SV_MODULE_FLAG_EXISTS); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // assumes that GetModuleOutputs frees this memory + var ptr = Marshal.AllocHGlobal(sizeof(int) * nativeData.Length); + Marshal.Copy(nativeData, 0, ptr, nativeData.Length); + library.sv_get_module_outputs(Arg.Any(), Arg.Any()).Returns(ptr); + + // when + var receivedOutputs = wrapper.GetModuleOutputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(1).sv_get_module_outputs(slotId, moduleId); + Assert.That(receivedOutputs, Is.EquivalentTo(expectedOutput)); + } + + [Test] + public void GetModuleOutputsShouldSkipCallsIfDoesNotExist() + { + const uint flagsValue = 0u; + Assert.That(new ModuleFlags(flagsValue).Exists, Is.False); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var receivedOutputs = wrapper.GetModuleOutputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(0).sv_get_module_outputs(slotId, moduleId); + Assert.That(receivedOutputs, Is.EquivalentTo(Array.Empty())); + } + + [Test] + public void GetModuleOutputsShouldSkipCallsIfZeroOutputs() + { + const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; + Assert.That(new ModuleFlags(flagsValue).InputUpperCount, Is.EqualTo(0)); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); + + // when + var receivedOutputs = wrapper.GetModuleOutputs(slotId, moduleId); + + // then + library.Received(1).sv_get_module_flags(slotId, moduleId); + library.Received(0).sv_get_module_outputs(slotId, moduleId); + Assert.That(receivedOutputs, Is.EquivalentTo(Array.Empty())); + } + + [Test] + public void GetModulePositionShouldCallExpectedMethodAndReturnValue() + { + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Short(); + var y = Any.Short(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_module_xy(Arg.Any(), Arg.Any()).Returns(Helper.PackTwoSignedShorts(x, y)); + // when + var value = wrapper.GetModulePosition(slotId, moduleId); + + // then + library.Received(1).sv_get_module_xy(slotId, moduleId); + Assert.That(value, Is.EqualTo((x, y))); + } + + [Test] + public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer() + { + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_module_type(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var receivedModuleName = wrapper.GetModuleType(slotId, moduleId); + // then + library.Received(1).sv_get_module_type(slotId, moduleId); + Assert.That(receivedModuleName, Is.EqualTo(null)); + } + + [Test] + public void GetModuleTypeShouldCallExpectedMethodAndReturnString() + { + var moduleType = Any.String(); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var stringPointer = IntPtr.Zero; + string? receivedModuleType; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + try + { + stringPointer = Marshal.StringToHGlobalAnsi(moduleType); + library.sv_get_module_type(Arg.Any(), Arg.Any()).Returns(stringPointer); + + // when + receivedModuleType = wrapper.GetModuleType(slotId, moduleId); + } + finally + { + Marshal.FreeHGlobal(stringPointer); + } + + // then + library.Received(1).sv_get_module_type(slotId, moduleId); + Assert.That(receivedModuleType, Is.EqualTo(moduleType)); + } + + [Test] + public void GetUpperModuleCountShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleCount = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_modules(Arg.Any()).Returns(moduleCount); + + // when + var value = wrapper.GetUpperModuleCount(slotId); + + // then + library.Received(1).sv_get_number_of_modules(slotId); + Assert.That(value, Is.EqualTo(moduleCount)); + } + + [Test] + public void GetUpperModuleCountShouldCallExpectedMethodAndThrowOnNegativeValue() + { + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_modules(Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetUpperModuleCount(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_number_of_modules(slotId); + } + + [Test] + public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + library.When(static l => + l.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new byte[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, (int)callInfo.Arg()); + }); + + // when + wrapper.LoadIntoMetaModule(slotId, moduleId, buffer); + + // then + library.Received(1).sv_metamodule_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + } + + [Test] + public void LoadIntoMetaModuleFromMemoryShouldThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.LoadIntoMetaModule(slotId, moduleId, buffer), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_metamodule_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); + } + + [Test] + public void LoadIntoMetaModuleShouldCallExpectedMethod() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var receivedString = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.When(static l => l.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.LoadIntoMetaModule(slotId, moduleId, path); + + // then + library.Received(1).sv_metamodule_load(slotId, moduleId, Arg.Any()); + Assert.That(receivedString, Is.EqualTo(path)); + } + + [Test] + public void LoadIntoMetaModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.LoadIntoMetaModule(slotId, moduleId, path), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_metamodule_load(slotId, moduleId, Arg.Any()); + } + + [Test] + public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + library.When(static l => + l.sv_vplayer_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new byte[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, (int)callInfo.Arg()); + }); + + // when + wrapper.LoadIntoVorbisPLayer(slotId, moduleId, buffer); + + // then + library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + } + + [Test] + public void LoadIntoVorbisPLayerFromMemoryShouldThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_vplayer_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.LoadIntoVorbisPLayer(slotId, moduleId, buffer), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); + } + + [Test] + public void LoadIntoVorbisPLayerShouldCallExpectedMethod() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var receivedString = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.When(static l => l.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.LoadIntoVorbisPLayer(slotId, moduleId, path); + + // then + library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); + Assert.That(receivedString, Is.EqualTo(path)); + } + + [Test] + public void LoadIntoVorbisPLayerShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.LoadIntoVorbisPLayer(slotId, moduleId, path), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); + } + + [Test] + public void LoadModuleFromMemoryShouldCallExpectedMethod() + { + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + var slotId = Any.Integer(); + var newModuleId = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()).Returns(newModuleId); + library.When(static l => l.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new byte[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, (int)callInfo.Arg()); + }); + + // when + var value = wrapper.LoadModule(slotId, buffer, x, y, z); + + // then + library.Received(1).sv_load_module_from_memory(slotId, Arg.Any(), (uint)buffer.Length, x, y, z); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(newModuleId)); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + }); + } + + [Test] + public void LoadModuleFromMemoryShouldThrowOnNonZeroReturnCode() + { + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + var slotId = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.LoadModule(slotId, buffer, x, y, z), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_load_module_from_memory(slotId, Arg.Any(), (uint)buffer.Length, x, y, z); + } + + [Test] + public void LoadModuleShouldCallExpectedMethod() + { + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + var slotId = Any.Integer(); + var newModuleId = Any.Integer(); + var path = Any.String(); + var receivedString = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(newModuleId); + library.When(static l => + l.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var value = wrapper.LoadModule(slotId, path, x, y, z); + + // then + library.Received(1).sv_load_module(slotId, Arg.Any(), x, y, z); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(newModuleId)); + Assert.That(receivedString, Is.EqualTo(path)); + }); + } + + [Test] + public void LoadModuleShouldThrowOnNonZeroReturnCode() + { + var x = Any.Integer(); + var y = Any.Integer(); + var z = Any.Integer(); + var slotId = Any.Integer(); + var path = Any.String(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.LoadModule(slotId, path, x, y, z), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_load_module(slotId, Arg.Any(), x, y, z); + } + + [Test] + public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var sampleSlot = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()) + .Returns(0); + library.When(static l => l.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new byte[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, (int)callInfo.Arg()); + }); + + // when + wrapper.LoadSamplerSample(slotId, moduleId, buffer, sampleSlot); + + // then + library.Received(1) + .sv_sampler_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length, sampleSlot); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + } + + [Test] + public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var sampleSlot = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.LoadSamplerSample(slotId, moduleId, buffer, sampleSlot), + Throws.Exception.TypeOf()); + + // then + library.Received(1) + .sv_sampler_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length, sampleSlot); + } + + [Test] + public void LoadSamplerSampleShouldCallExpectedMethod() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var sampleSlot = Any.Integer(); + var receivedString = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.When(static l => l.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.LoadSamplerSample(slotId, moduleId, path, sampleSlot); + + // then + library.Received(1).sv_sampler_load(slotId, moduleId, Arg.Any(), sampleSlot); + Assert.That(receivedString, Is.EqualTo(path)); + } + + [Test] + public void LoadSamplerSampleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var path = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var sampleSlot = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.LoadSamplerSample(slotId, moduleId, path, sampleSlot), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_sampler_load(slotId, moduleId, Arg.Any(), sampleSlot); + } + + [Test] + public void ReadModuleCurveShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var samplesWritten = Any.Integer(); + var curveId = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(samplesWritten); + library.When(static l => l.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new float[callInfo.ArgAt(4)]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, callInfo.ArgAt(4)); + }); + + // when + var value = wrapper.ReadModuleCurve(slotId, moduleId, curveId, buffer); + + // then + library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 0); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(samplesWritten)); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + }); + } + + [Test] + public void ReadModuleCurveShouldThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var curveId = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.ReadModuleCurve(slotId, moduleId, curveId, buffer), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 0); + } + + [Test] + public void ReadModuleScopeShouldCallExpectedMethod() + { + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var readSamples = Any.UnsignedInt(); + var buffer = Any.Array(16); + var receivedBuffer = Array.Empty(); + var channel = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_module_scope2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(readSamples); + + library.When(static l => + l.sv_get_module_scope2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new short[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, (int)callInfo.Arg()); + }); + + // when + var value = wrapper.ReadModuleScope(slotId, moduleId, channel, buffer); + + // then + library.Received(1) + .sv_get_module_scope2(slotId, moduleId, (int)channel, Arg.Any(), (uint)buffer.Length); + Assert.Multiple(() => + { + Assert.That(receivedBuffer, Is.EquivalentTo(buffer)); + Assert.That(value, Is.EqualTo(readSamples)); + }); + } + + [Test] + public void RemoveModuleShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.RemoveModule(slotId, moduleId); + + // then + library.Received(1).sv_remove_module(slotId, moduleId); + } + + [Test] + public void RemoveModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.RemoveModule(slotId, moduleId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_remove_module(slotId, moduleId); + } + + [Test] + public void SetModuleColorShouldCallExpectedMethod() + { + var r = Any.Byte(); + var g = Any.Byte(); + var b = Any.Byte(); + var code = r | (g << 8) | (b << 16); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + + // when + wrapper.SetModuleColor(slotId, moduleId, r, g, b); + + // then + library.Received(1).sv_set_module_color(slotId, moduleId, code); + } + + [Test] + public void SetModuleColorShouldThrowOnNonZeroReturnCode() + { + var r = Any.Byte(); + var g = Any.Byte(); + var b = Any.Byte(); + var code = r | (g << 8) | (b << 16); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_module_color(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + + // when + Assert.That(() => wrapper.SetModuleColor(slotId, moduleId, r, g, b), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_color(slotId, moduleId, code); + } + + [Test] + public void SetModuleControllerValueShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var scalingMode = Any.Instance(); + var valueToSet = Any.Integer(); + library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + + // when + wrapper.SetModuleControllerValue(slotId, moduleId, controllerId, valueToSet, scalingMode); + + // then + library.Received(1).sv_set_module_ctl_value(slotId, moduleId, controllerId, valueToSet, (int)scalingMode); + } + + [Test] + public void SetModuleControllerValueShouldCallExpectedMethodAndThrowOnNonZeroCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var controllerId = Any.Integer(); + var slotId = Any.Integer(); + var scalingMode = Any.Instance(); + var valueToSet = Any.Integer(); + library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when - then + Assert.That(() => wrapper.SetModuleControllerValue(slotId, moduleId, controllerId, valueToSet, scalingMode), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_ctl_value(slotId, moduleId, controllerId, valueToSet, (int)scalingMode); + } + + [Test] + public void SetModuleFineTuneShouldCallExpectedMethod() + { + var fineTune = Any.Integer(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetModuleFineTune(slotId, moduleId, fineTune); + + // then + library.Received(1).sv_set_module_finetune(slotId, moduleId, fineTune); + } + + [Test] + public void SetModuleFineTuneShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var fineTune = Any.Integer(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetModuleFineTune(slotId, moduleId, fineTune), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_finetune(slotId, moduleId, fineTune); + } + + [Test] + public void SetModuleNameShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var nameToSet = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + library.When(static l => l.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.SetModuleName(slotId, moduleId, nameToSet); + + // then + library.Received(1).sv_set_module_name(slotId, moduleId, Arg.Any()); + Assert.Multiple(() => { Assert.That(receivedString, Is.EqualTo(nameToSet)); }); + } + + [Test] + public void SetModuleNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var nameToSet = Any.String(); + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + library.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetModuleName(slotId, moduleId, nameToSet), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_name(slotId, moduleId, Arg.Any()); + } + + [Test] + public void SetModulePositionShouldCallExpectedMethod() + { + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Short(); + var y = Any.Short(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + wrapper.SetModulePosition(slotId, moduleId, x, y); + + // then + library.Received(1).sv_set_module_xy(slotId, moduleId, x, y); + } + + [Test] + public void SetModulePositionShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Short(); + var y = Any.Short(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_module_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetModulePosition(slotId, moduleId, x, y), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_xy(slotId, moduleId, x, y); + } + + [Test] + public void SetModuleRelativeNoteShouldCallExpectedMethod() + { + var fineTune = Any.Integer(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetModuleRelativeNote(slotId, moduleId, fineTune); + + // then + library.Received(1).sv_set_module_relnote(slotId, moduleId, fineTune); + } + + [Test] + public void SetModuleRelativeNoteShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var fineTune = Any.Integer(); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var moduleId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetModuleRelativeNote(slotId, moduleId, fineTune), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_module_relnote(slotId, moduleId, fineTune); + } + + [Test] + public void WriteModuleCurveShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var samplesWritten = Any.Integer(); + var curveId = Any.Integer(); + var buffer = Any.Array(); + var receivedBuffer = Array.Empty(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(samplesWritten); + library.When(static l => l.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedBuffer = new float[callInfo.ArgAt(4)]; + Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, callInfo.ArgAt(4)); + }); + + // when + var value = wrapper.WriteModuleCurve(slotId, moduleId, curveId, buffer); + + // then + library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 1); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(samplesWritten)); + Assert.That(receivedBuffer, Is.EqualTo(buffer)); + }); + } + + [Test] + public void WriteModuleCurveShouldThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var moduleId = Any.Integer(); + var curveId = Any.Integer(); + var buffer = Any.Array(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.WriteModuleCurve(slotId, moduleId, curveId, buffer), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 1); + } +} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs new file mode 100644 index 0000000..9dbf956 --- /dev/null +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -0,0 +1,1768 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using NSubstitute; +using NUnit.Framework; +using SunSharp.Native; +using TddXt.AnyRoot; +using TddXt.AnyRoot.Collections; +using TddXt.AnyRoot.Numbers; +using TddXt.AnyRoot.Strings; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Native; + +public class SunVoxLibNativeWrapperPatternsTests +{ + public static PatternDataCase[] PatternDataCases => new[] + { + new PatternDataCase + { + CaseName = "simple call with equal size buffers", + ToLines = 2, + ToTracks = 3, + FromLines = 2, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x3, 0x5, + 0x2, 0x4, 0x6 + }, + ToData = new PatternEvent[] + { + 0x1, 0x3, 0x5, + 0x2, 0x4, 0x6 + }, + ExpectedOperationCount = 2 * 3 + }, + new PatternDataCase + { + CaseName = "simple call with original data buffer being bigger", + ToLines = 2, + ToTracks = 2, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x1, 0x4, + 0x2, 0x5 + }, + ExpectedOperationCount = 2 * 2 + }, + new PatternDataCase + { + CaseName = "simple call with original data buffer being smaller", + ToLines = 3, + ToTracks = 3, + FromLines = 2, + FromTracks = 2, + FromData = new PatternEvent[] + { + 0x1, 0x4, + 0x2, 0x5 + }, + ToData = new PatternEvent[] + { + 0x1, 0x4, 0x0, + 0x2, 0x5, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 2 * 2 + }, + new PatternDataCase + { + CaseName = "call with maxLines and maxTracks smaller than size", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x1, 0x4, 0x0, + 0x2, 0x5, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 2 * 2, + MaxLines = 2, + MaxTracks = 2 + }, + new PatternDataCase + { + CaseName = "call with maxTracks set to zero", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 0, + MaxTracks = 0 + }, + new PatternDataCase + { + CaseName = "call with MaxLines set to zero", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 0, + MaxLines = 0 + }, + new PatternDataCase + { + CaseName = "call with maxTracks and maxLines set to zero", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 0, + MaxLines = 0, + MaxTracks = 0 + }, + new PatternDataCase + { + CaseName = "call with source data being empty", + ToLines = 3, + ToTracks = 3, + FromLines = 0, + FromTracks = 0, + FromData = Array.Empty(), + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 0 + }, + new PatternDataCase + { + CaseName = "call with target data being empty", + ToLines = 0, + ToTracks = 0, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = Array.Empty(), + ExpectedOperationCount = 0 + }, + new PatternDataCase + { + CaseName = "call with target buffer offset lines", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8 + }, + ExpectedOperationCount = 2 * 3, + TargetOffsetLines = 1 + }, + new PatternDataCase + { + CaseName = "call with target buffer offset tracks", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x1, 0x4, + 0x0, 0x2, 0x5, + 0x0, 0x3, 0x6 + }, + ExpectedOperationCount = 2 * 3, + TargetOffsetTracks = 1 + }, + new PatternDataCase + { + CaseName = "call with target buffer offset tracks and lines", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, + 0x0, 0x1, 0x4, + 0x0, 0x2, 0x5 + }, + ExpectedOperationCount = 2 * 2, + TargetOffsetTracks = 1, + TargetOffsetLines = 1 + }, + new PatternDataCase + { + CaseName = "call with source offset lines", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 2 * 3, + SourceOffsetLines = 1 + }, + new PatternDataCase + { + CaseName = "call with source offset tracks", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x4, 0x7, 0x0, + 0x5, 0x8, 0x0, + 0x6, 0x9, 0x0 + }, + ExpectedOperationCount = 2 * 3, + SourceOffsetTracks = 1 + }, + new PatternDataCase + { + CaseName = "call with source offset tracks and lines", + ToLines = 3, + ToTracks = 3, + FromLines = 3, + FromTracks = 3, + FromData = new PatternEvent[] + { + 0x1, 0x4, 0x7, + 0x2, 0x5, 0x8, + 0x3, 0x6, 0x9 + }, + ToData = new PatternEvent[] + { + 0x5, 0x8, 0x0, + 0x6, 0x9, 0x0, + 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 2 * 2, + SourceOffsetTracks = 1, + SourceOffsetLines = 1 + }, + new PatternDataCase + { + CaseName = "call with source offset real tracks and lines, and target offset tracks and lines", + ToLines = 4, + ToTracks = 4, + FromLines = 4, + FromTracks = 4, + FromData = new PatternEvent[] + { + 0x1, 0x6, 0xA, 0xE, + 0x2, 0x7, 0xB, 0xF, + 0x3, 0x8, 0xC, 0x10, + 0x4, 0x9, 0xD, 0x11 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x7, 0xB, 0xF, + 0x0, 0x8, 0xC, 0x10, + 0x0, 0x9, 0xD, 0x11 + }, + ExpectedOperationCount = 3 * 3, + SourceOffsetTracks = 1, + SourceOffsetLines = 1, + TargetOffsetTracks = 1, + TargetOffsetLines = 1 + }, + new PatternDataCase + { + CaseName = + "call with source offset real tracks and lines, and target offset tracks and lines, and max tracks and lines", + ToLines = 4, + ToTracks = 4, + FromLines = 4, + FromTracks = 4, + FromData = new PatternEvent[] + { + 0x1, 0x6, 0xA, 0xE, + 0x2, 0x7, 0xB, 0xF, + 0x3, 0x8, 0xC, 0x10, + 0x4, 0x9, 0xD, 0x11 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x7, 0xB, 0x0, + 0x0, 0x8, 0xC, 0x0, + 0x0, 0x0, 0x0, 0x0 + }, + ExpectedOperationCount = 2 * 2, + SourceOffsetTracks = 1, + SourceOffsetLines = 1, + TargetOffsetTracks = 1, + TargetOffsetLines = 1, + MaxLines = 2, + MaxTracks = 2 + }, + new PatternDataCase + { + CaseName = "call with target track offset being greater than size", + ToLines = 2, + ToTracks = 2, + FromLines = 2, + FromTracks = 2, + FromData = new PatternEvent[] + { + 0x1, 0x6, + 0x2, 0x7 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, + 0x0, 0x0 + }, + ExpectedOperationCount = 0, + TargetOffsetTracks = 2 + }, + new PatternDataCase + { + CaseName = "call with target line offset being greater than size", + ToLines = 2, + ToTracks = 2, + FromLines = 2, + FromTracks = 2, + FromData = new PatternEvent[] + { + 0x1, 0x6, + 0x2, 0x7 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, + 0x0, 0x0 + }, + ExpectedOperationCount = 0, + TargetOffsetLines = 2 + }, + new PatternDataCase + { + CaseName = "call with source line offset being greater than size", + ToLines = 2, + ToTracks = 2, + FromLines = 2, + FromTracks = 2, + FromData = new PatternEvent[] + { + 0x1, 0x6, + 0x2, 0x7 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, + 0x0, 0x0 + }, + ExpectedOperationCount = 0, + SourceOffsetLines = 2 + }, + new PatternDataCase + { + CaseName = "call with source line offset being greater than size", + ToLines = 2, + ToTracks = 2, + FromLines = 2, + FromTracks = 2, + FromData = new PatternEvent[] + { + 0x1, 0x6, + 0x2, 0x7 + }, + ToData = new PatternEvent[] + { + 0x0, 0x0, + 0x0, 0x0 + }, + ExpectedOperationCount = 0, + SourceOffsetTracks = 2 + } + }; + + [Test] + public void CloneModuleShouldThrowOnNegativeReturnedValue() + { + var originalPatternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.ClonePattern(slotId, originalPatternId, x, y), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); + } + + [Test] + public void ClonePatternShouldCallExpectedMethod() + { + var newPatternId = Any.Integer(); + var originalPatternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(newPatternId); + + // when + var value = wrapper.ClonePattern(slotId, originalPatternId, x, y); + + // then + library.Received(1).sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); + Assert.That(value, Is.EqualTo(newPatternId)); + } + + [Test] + public void CreateModuleShouldThrowOnNegativeReturnedValue() + { + var patternName = Any.String(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + var tracks = Any.Integer(); + var lines = Any.Integer(); + var iconSeed = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.CreatePattern(slotId, x, y, tracks, lines, iconSeed, patternName), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, iconSeed, Arg.Any()); + } + + [Test] + public void CreatePatternShouldCallExpectedMethod() + { + var newPatternId = Any.Integer(); + var patternName = Any.String(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + var tracks = Any.Integer(); + var lines = Any.Integer(); + var iconSeed = Any.Integer(); + var receivedPatternName = string.Empty; + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(newPatternId); + library.When(static l => l.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => { receivedPatternName = Marshal.PtrToStringAnsi(callInfo.Arg()); }); + + // when + var value = wrapper.CreatePattern(slotId, x, y, tracks, lines, iconSeed, patternName); + + // then + library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, iconSeed, Arg.Any()); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(newPatternId)); + Assert.That(receivedPatternName, Is.EqualTo(patternName)); + }); + } + + [Test] + public void CreatePatternShouldCallExpectedMethodWithDefaultValues() + { + var newPatternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + var tracks = Any.Integer(); + var lines = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(newPatternId); + + // when + var value = wrapper.CreatePattern(slotId, x, y, tracks, lines); + + // then + library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, 0, IntPtr.Zero); + Assert.That(value, Is.EqualTo(newPatternId)); + } + + [Test] + public void FindPatternShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var foundPatternId = Any.Integer(); + library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(foundPatternId); + var patternName = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var value = wrapper.FindPattern(slotId, patternName); + + // then + library.Received(1).sv_find_pattern(slotId, Arg.Any()); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(foundPatternId)); + Assert.That(receivedString, Is.EqualTo(patternName)); + }); + } + + [Test] + public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-1); + var patternName = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var value = wrapper.FindPattern(slotId, patternName); + + // then + library.Received(1).sv_find_pattern(slotId, Arg.Any()); + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(null)); + Assert.That(receivedString, Is.EqualTo(patternName)); + }); + } + + [Test] + public void FindPatternShouldCallExpectedMethodAndThrowOnReturnCodeLessThanNegativeOne() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-2); + var patternName = Any.String(); + var slotId = Any.Integer(); + + // when + Assert.That(() => wrapper.FindPattern(slotId, patternName), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_find_pattern(slotId, Arg.Any()); + } + + [Test] + public void GetPatternEventValueShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var column = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + + // when + wrapper.GetPatternEventValue(slotId, patternId, track, line, column); + + // then + library.Received(1).sv_get_pattern_event(slotId, patternId, track, line, (int)column); + } + + [Test] + public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var column = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.GetPatternEventValue(slotId, patternId, track, line, column), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_pattern_event(slotId, patternId, track, line, (int)column); + } + + [TestCase(true)] + [TestCase(false)] + public void GetPatternExistsShouldCallExpectedMethodAndReturnValue(bool exists) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var patternId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(exists ? 1 : 0); + + // when + var receivedExists = wrapper.GetPatternExists(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_lines(slotId, patternId); + Assert.That(receivedExists, Is.EqualTo(exists)); + } + + [Test] + public void GetPatternExistsShouldThrowOnErrorReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var patternId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetPatternExists(slotId, patternId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_pattern_lines(slotId, patternId); + } + + [Test] + public void GetPatternLinesShouldCallExpectedMethodAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var lines = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); + + // when + var receivedLines = wrapper.GetPatternLines(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_lines(slotId, patternId); + Assert.That(receivedLines, Is.EqualTo(lines)); + } + + [Test] + public void GetPatternLinesShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetPatternLines(slotId, patternId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_pattern_lines(slotId, patternId); + } + + [Test] + public void GetPatternNameShouldCallExpectedMethodAndReturnNullWhenNullPointer() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var patternId = Any.Integer(); + var slotId = Any.Integer(); + library.sv_get_pattern_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var receivedPatternName = wrapper.GetPatternName(slotId, patternId); + // then + library.Received(1).sv_get_pattern_name(slotId, patternId); + Assert.That(receivedPatternName, Is.EqualTo(null)); + } + + [Test] + public void GetPatternNameShouldCallExpectedMethodAndReturnString() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var patternName = Any.String(); + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var stringPointer = IntPtr.Zero; + string? receivedPatternName; + + try + { + stringPointer = Marshal.StringToHGlobalAnsi(patternName); + library.sv_get_pattern_name(Arg.Any(), Arg.Any()).Returns(stringPointer); + + // when + receivedPatternName = wrapper.GetPatternName(slotId, patternId); + } + finally + { + Marshal.FreeHGlobal(stringPointer); + } + + // then + library.Received(1).sv_get_pattern_name(slotId, patternId); + Assert.That(receivedPatternName, Is.EqualTo(patternName)); + } + + [Test] + public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); + library.sv_get_pattern_y(Arg.Any(), Arg.Any()).Returns(y); + + // when + var value = wrapper.GetPatternPosition(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_x(slotId, patternId); + library.Received(1).sv_get_pattern_y(slotId, patternId); + Assert.That(value, Is.EqualTo((x, y))); + } + + [Test] + public void GetPatternTracksShouldCallExpectedMethodAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var tracks = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); + + // when + var receivedLines = wrapper.GetPatternTracks(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + Assert.That(receivedLines, Is.EqualTo(tracks)); + } + + [Test] + public void GetPatternTracksShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetPatternTracks(slotId, patternId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + } + + [Test] + public void GetPatternXShouldCallExpectedMethodsAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); + + // when + var value = wrapper.GetPatternX(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_x(slotId, patternId); + Assert.That(value, Is.EqualTo(x)); + } + + [Test] + public void GetPatternYShouldCallExpectedMethodsAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_y(Arg.Any(), Arg.Any()).Returns(y); + + // when + var value = wrapper.GetPatternY(slotId, patternId); + + // then + library.Received(1).sv_get_pattern_y(slotId, patternId); + Assert.That(value, Is.EqualTo(y)); + } + + [Test] + public void GetUpperPatternCountShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_patterns(Arg.Any()).Returns(0); + + // when + wrapper.GetUpperPatternCount(slotId); + + // then + library.Received(1).sv_get_number_of_patterns(slotId); + } + + [Test] + public void GetUpperPatternCountShouldCallExpectedMethodAndThrowOnNegativeReturnCode() + { + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_number_of_patterns(Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetUpperPatternCount(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_number_of_patterns(slotId); + } + + [Test] + public void RemovePatternShouldCallExpectedMethod() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.RemovePattern(slotId, patternId); + + // then + library.Received(1).sv_remove_pattern(slotId, patternId); + } + + [Test] + public void RemovePatternShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.RemovePattern(slotId, patternId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_remove_pattern(slotId, patternId); + } + + [Test] + public void SetPatternNameShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var nameToSet = Any.String(); + var receivedString = string.Empty; + var slotId = Any.Integer(); + var patternId = Any.Integer(); + library.When(static l => l.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.SetPatternName(slotId, patternId, nameToSet); + + // then + library.Received(1).sv_set_pattern_name(slotId, patternId, Arg.Any()); + Assert.That(receivedString, Is.EqualTo(nameToSet)); + } + + [Test] + public void SetPatternNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var nameToSet = Any.String(); + var slotId = Any.Integer(); + var patternId = Any.Integer(); + library.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternName(slotId, patternId, nameToSet), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_pattern_name(slotId, patternId, Arg.Any()); + } + + [Test] + public void SetPatternPositionShouldCallExpectedMethodAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetPatternPosition(slotId, patternId, x, y); + + // then + library.Received(1).sv_set_pattern_xy(slotId, patternId, x, y); + } + + [Test] + public void SetPatternPositionShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var x = Any.Integer(); + var y = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternPosition(slotId, patternId, x, y), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_pattern_xy(slotId, patternId, x, y); + } + + [Test] + public void SetPatternSizeShouldCallExpectedMethodAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var lines = Any.Integer(); + var tracks = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetPatternSize(slotId, patternId, tracks, lines); + + // then + library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); + } + + [Test] + public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValue() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetPatternSize(slotId, patternId); + + // then + library.Received(1).sv_set_pattern_size(slotId, patternId, -1, -1); + } + + [Test] + public void SetPatternSizeShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var lines = Any.Integer(); + var tracks = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternSize(slotId, patternId, tracks, lines), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); + } + + [TestCase(true)] + [TestCase(false)] + public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted) + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(muted ? 1 : 0); + + // when + var value = wrapper.GetPatternMuted(slotId, patternId); + + // then + library.Received(1).sv_pattern_mute(slotId, patternId, -1); + Assert.That(value, Is.EqualTo(muted)); + } + + [Test] + public void GetPatternMutedShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.GetPatternMuted(slotId, patternId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_pattern_mute(slotId, patternId, -1); + } + + [TestCase(true)] + [TestCase(false)] + public void SetPatternMutedShouldCallExpectedMethod(bool muted) + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(Any.Boolean() ? 1 : 0); + + // when + wrapper.SetPatternMuted(slotId, patternId, muted); + + // then + library.Received(1).sv_pattern_mute(slotId, patternId, muted ? 1 : 0); + } + + [Test] + public void SetPatternMutedShouldThrowOnErrorReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var muted = Any.Boolean(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternMuted(slotId, patternId, muted), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_pattern_mute(slotId, patternId, muted ? 1 : 0); + } + + [Test] + public void SetPatternEventShouldCallExpectedMethod() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var nn = Any.Integer(); + var vv = Any.Integer(); + var mm = Any.Integer(); + var ccee = Any.Integer(); + var xxyy = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + + // when + wrapper.SetPatternEvent(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); + + // then + library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); + } + + [Test] + public void SetPatternEventShouldThrowOnNonZeroReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var nn = Any.Integer(); + var vv = Any.Integer(); + var mm = Any.Integer(); + var ccee = Any.Integer(); + var xxyy = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternEvent(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); + } + + [Test] + public void SetPatternEventWithStructShouldCallExpectedMethod() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var patternEvent = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + + // when + wrapper.SetPatternEvent(slotId, patternId, track, line, patternEvent); + + // then + library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, patternEvent.NN, patternEvent.VV, + patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); + } + + [Test] + public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode() + { + var patternId = Any.Integer(); + var slotId = Any.Integer(); + var track = Any.Integer(); + var line = Any.Integer(); + var patternEvent = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), + Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when + Assert.That(() => wrapper.SetPatternEvent(slotId, patternId, track, line, patternEvent), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, patternEvent.NN, patternEvent.VV, + patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); + } + + [Test] + public void GetPatternDataReturnsDataAsExpected() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + const int lines = 4; + const int tracks = 5; + var receivedPatternData = Array.Empty(); + var receivedTracks = 0; + var receivedLines = 0; + + var patternData = new PatternEvent[tracks * lines]; + for (var line = 0; line < lines; line++) + for (var track = 0; track < tracks; track++) + patternData[line * tracks + track] = new PatternEvent + { + CCEE = (ushort)line, + XXYY = (ushort)track + }; + + var handle = GCHandle.Alloc(patternData, GCHandleType.Pinned); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); + + try + { + // when + var result = wrapper.GetPatternData(slotId, patternId); + if (result != null) + (receivedPatternData, receivedTracks, receivedLines) = result.Value; + } + finally + { + handle.Free(); + } + // then + + Assert.That(receivedPatternData, Is.Not.EquivalentTo(Array.Empty())); + Assert.That(receivedPatternData, Has.Length.EqualTo(receivedTracks * receivedLines)); + Assert.That(receivedPatternData, Is.EquivalentTo(patternData)); + library.Received(1).sv_get_pattern_data(slotId, patternId); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + } + + [Test] + public void GetPatternDataReturnsNullWhenLengthEqualsZero() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(0); + // when + var receivedPatternData = wrapper.GetPatternData(slotId, patternId); + // then + Assert.That(receivedPatternData, Is.Null); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_tracks(Arg.Any(), Arg.Any()); + library.Received(0).sv_get_pattern_data(Arg.Any(), Arg.Any()); + } + + [Test] + public void GetPatternDataReturnsNullWhenPtrIsNullPtr() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + const int lines = 4; + const int tracks = 5; + + var patternData = new PatternEvent[tracks * lines]; + for (var i = 0; i < tracks * lines; i++) + patternData[i] = Any.Instance(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var result = wrapper.GetPatternData(slotId, patternId); + // then + Assert.That(result, Is.Null); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + library.Received(1).sv_get_pattern_data(slotId, patternId); + } + + [Test] + public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + const int readTracks = 2; + const int readLines = 3; + var originalData = new PatternEvent[readTracks * readLines]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(0); + + // when + var readEventCount = wrapper.ReadPatternData(slotId, patternId, buffer, readTracks, readLines); + + // then + Assert.Multiple(() => + { + Assert.That(readEventCount, Is.EqualTo(0)); + Assert.That(buffer, Is.EquivalentTo(originalData)); + }); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_data(Arg.Any(), Arg.Any()); + library.Received(0).sv_get_pattern_tracks(Arg.Any(), Arg.Any()); + } + + [Test] + public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + const int readTracks = 2; + const int readLines = 3; + var originalData = new PatternEvent[readTracks * readLines]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var readEventCount = wrapper.ReadPatternData(slotId, patternId, buffer, readTracks, readLines); + + // then + Assert.Multiple(() => + { + Assert.That(readEventCount, Is.EqualTo(0)); + Assert.That(buffer, Is.EquivalentTo(originalData)); + }); + library.Received(1).sv_get_pattern_data(slotId, patternId); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + } + + [Test] + public void WritePatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + const int readTracks = 2; + const int readLines = 3; + var originalData = new PatternEvent[readTracks * readLines]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); + + // when + var readEventCount = wrapper.WritePatternData(slotId, patternId, buffer, readTracks, readLines); + + // then + Assert.Multiple(() => + { + Assert.That(readEventCount, Is.EqualTo(0)); + Assert.That(buffer, Is.EquivalentTo(originalData)); + }); + library.Received(1).sv_get_pattern_data(slotId, patternId); + library.Received(1).sv_get_pattern_lines(slotId, patternId); + library.Received(1).sv_get_pattern_tracks(slotId, patternId); + } + + [TestCase(2, 2, 2, 1)] + [TestCase(2, 2, 1, 2)] + [TestCase(2, 2, 3, 2)] + [TestCase(2, 2, 2, 3)] + public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int tracksToRead, int linesToRead, + int tracksInBuffer, int linesInBuffer) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var originalData = new PatternEvent[tracksInBuffer * linesInBuffer]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + Assert.That(() => wrapper.ReadPatternData(slotId, patternId, buffer, tracksToRead, linesToRead), + Throws.ArgumentException); + + // then + Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + library.Received(0).sv_get_pattern_data(slotId, patternId); + library.Received(0).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_tracks(slotId, patternId); + } + + [TestCase(-2, 2, 0, 0, 0, 0)] + [TestCase(2, -2, 0, 0, 0, 0)] + [TestCase(2, 2, -1, 0, 0, 0)] + [TestCase(2, 2, 0, -1, 0, 0)] + [TestCase(2, 2, 0, 0, -1, 0)] + [TestCase(2, 2, 0, 0, 0, -1)] + public void ReadPatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks, int bufferLines, + int bufferOffsetTracks, int bufferOffsetLines, int readOffsetTracks, int readOffsetLines) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var originalData = new PatternEvent[2 * 2]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + Assert.That( + () => wrapper.ReadPatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, + bufferOffsetLines, readOffsetTracks, readOffsetLines), + Throws.TypeOf()); + + // then + Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + library.Received(0).sv_get_pattern_data(slotId, patternId); + library.Received(0).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_tracks(slotId, patternId); + } + + [TestCase(-2, 2, 0, 0, 0, 0)] + [TestCase(2, -2, 0, 0, 0, 0)] + [TestCase(2, 2, -1, 0, 0, 0)] + [TestCase(2, 2, 0, -1, 0, 0)] + [TestCase(2, 2, 0, 0, -1, 0)] + [TestCase(2, 2, 0, 0, 0, -1)] + public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks, int bufferLines, + int bufferOffsetTracks, int bufferOffsetLines, int writeOffsetTracks, int writeOffsetLines) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var originalData = new PatternEvent[2 * 2]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + Assert.That( + () => wrapper.WritePatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, + bufferOffsetLines, writeOffsetTracks, writeOffsetLines), + Throws.TypeOf()); + + // then + Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + library.Received(0).sv_get_pattern_data(slotId, patternId); + library.Received(0).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_tracks(slotId, patternId); + } + + [TestCase(2, 2, 2, 1)] + [TestCase(2, 2, 1, 2)] + [TestCase(2, 2, 3, 2)] + [TestCase(2, 2, 2, 3)] + public void WritePatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int tracksToRead, int linesToRead, + int tracksInBuffer, int linesInBuffer) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var originalData = new PatternEvent[tracksInBuffer * linesInBuffer]; + for (var i = 0; i < originalData.Length; i++) + originalData[i] = Any.UnsignedLong(); + + var buffer = (PatternEvent[])originalData.Clone(); + + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + Assert.That(() => wrapper.WritePatternData(slotId, patternId, buffer, tracksToRead, linesToRead), + Throws.ArgumentException); + + // then + Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + library.Received(0).sv_get_pattern_data(slotId, patternId); + library.Received(0).sv_get_pattern_lines(slotId, patternId); + library.Received(0).sv_get_pattern_tracks(slotId, patternId); + } + + private static void PrintPatternEventCollection(IList collection, int tracks, int lines, string name) + { + TestContext.Out.WriteLine(name); + for (var l = 0; l < lines; l++) + { + for (var t = 0; t < tracks; t++) + { + TestContext.Out.Write(collection[l * tracks + t].ToString()); + TestContext.Out.Write(" "); + } + + TestContext.Out.WriteLine(" "); + } + } + + [TestCaseSource(nameof(PatternDataCases))] + public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + int readEventCount; + var buffer = new PatternEvent[testCase.ToLines * testCase.ToTracks]; + + var handle = GCHandle.Alloc(testCase.FromData, GCHandleType.Pinned); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(testCase.FromLines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(testCase.FromTracks); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); + try + { + // when + readEventCount = wrapper.ReadPatternData(slotId, patternId, buffer, testCase.ToTracks, testCase.ToLines, + testCase.TargetOffsetTracks, testCase.TargetOffsetLines, testCase.SourceOffsetTracks, + testCase.SourceOffsetLines, testCase.MaxTracks, testCase.MaxLines); + } + finally + { + handle.Free(); + } + + PrintPatternEventCollection(testCase.FromData, testCase.FromTracks, testCase.FromLines, "original data"); + PrintPatternEventCollection(buffer, testCase.ToTracks, testCase.ToLines, "read buffer"); + PrintPatternEventCollection(testCase.ToData, testCase.ToTracks, testCase.ToLines, "expected"); + + // then + Assert.Multiple(() => + { + Assert.That(readEventCount, Is.EqualTo(testCase.ExpectedOperationCount)); + Assert.That(buffer, Is.EquivalentTo(testCase.ToData)); + }); + + library.Received(1).sv_get_pattern_lines(slotId, patternId); + var shouldContinueWithAccessingRemoteData = testCase.FromLines * testCase.FromTracks != 0; + library.Received(testCase.FromLines != 0 ? 1 : 0).sv_get_pattern_tracks(slotId, patternId); + library.Received(shouldContinueWithAccessingRemoteData ? 1 : 0).sv_get_pattern_data(slotId, patternId); + } + + [TestCaseSource(nameof(PatternDataCases))] + public void WritePatternDataShouldWorkAsExpected(PatternDataCase testCase) + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + int writtenEventCount; + var buffer = new PatternEvent[testCase.ToLines * testCase.ToTracks]; + + var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(testCase.ToLines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(testCase.ToTracks); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); + try + { + // when + writtenEventCount = wrapper.WritePatternData(slotId, patternId, testCase.FromData, testCase.FromTracks, + testCase.FromLines, testCase.SourceOffsetTracks, testCase.SourceOffsetLines, + testCase.TargetOffsetTracks, testCase.TargetOffsetLines, testCase.MaxTracks, testCase.MaxLines); + } + finally + { + handle.Free(); + } + + PrintPatternEventCollection(testCase.FromData, testCase.FromTracks, testCase.FromLines, "original data"); + PrintPatternEventCollection(buffer, testCase.ToTracks, testCase.ToLines, "written buffer"); + PrintPatternEventCollection(testCase.ToData, testCase.ToTracks, testCase.ToLines, "expected"); + + // then + Assert.Multiple(() => + { + Assert.That(writtenEventCount, Is.EqualTo(testCase.ExpectedOperationCount)); + Assert.That(buffer, Is.EquivalentTo(testCase.ToData)); + }); + + library.Received(1).sv_get_pattern_lines(slotId, patternId); + var shouldContinueWithAccessingRemoteData = testCase.ToLines * testCase.ToTracks != 0; + library.Received(testCase.ToLines != 0 ? 1 : 0).sv_get_pattern_tracks(slotId, patternId); + library.Received(shouldContinueWithAccessingRemoteData ? 1 : 0).sv_get_pattern_data(slotId, patternId); + } + + [Test] + public void SetPatternDataShouldSetDataAsExpected() + { + var slotId = Any.Integer(); + var patternId = Any.Integer(); + var lines = 3; + var tracks = 4; + var data = Any.Array(lines * tracks); + + var buffer = new PatternEvent[lines * tracks + 1]; + + var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); + library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + try + { + // when + wrapper.SetPatternData(slotId, patternId, data, tracks, lines); + } + finally + { + handle.Free(); + } + + Assert.Multiple(() => + { + Assert.That(buffer[..^1], Is.EquivalentTo(data)); + Assert.That(buffer[^1].Data, Is.EqualTo(0)); + }); + library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); + library.Received(1).sv_get_pattern_data(slotId, patternId); + } + + public class PatternDataCase + { + public string CaseName { get; set; } = string.Empty; + + public int FromTracks { get; set; } + public int FromLines { get; set; } + public PatternEvent[] FromData { get; set; } = Array.Empty(); + + public int ToTracks { get; set; } + public int ToLines { get; set; } + public PatternEvent[] ToData { get; set; } = Array.Empty(); + + public int TargetOffsetTracks { get; set; } + public int TargetOffsetLines { get; set; } + public int SourceOffsetTracks { get; set; } + public int SourceOffsetLines { get; set; } + public int? MaxTracks { get; set; } + public int? MaxLines { get; set; } + + public int ExpectedOperationCount { get; set; } + + public override string ToString() + { + return CaseName; + } + } +} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs new file mode 100644 index 0000000..00ee22b --- /dev/null +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -0,0 +1,1161 @@ +using System; +using System.Linq; +using System.Runtime.InteropServices; +using FluentAssertions; +using NSubstitute; +using NUnit.Framework; +using SunSharp.Native; +using TddXt.AnyRoot.Collections; +using TddXt.AnyRoot.Numbers; +using TddXt.AnyRoot.Strings; +using static TddXt.AnyRoot.Root; + +namespace SunSharp.Tests.Native; + +public class SunVoxLibNativeWrapperTests +{ + [Test] + public void CloseSlotShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_close_slot(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.CloseSlot(slotId); + + // then + library.Received(1).sv_close_slot(slotId); + } + + [Test] + public void CloseSlotShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_close_slot(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.CloseSlot(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_close_slot(slotId); + } + + [Test] + public void DeinitializeShouldCallDeinitAsExpected() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + library.sv_deinit().Returns(0); + + // when + wrapper.Deinitialize(); + + // then + library.Received(1).sv_deinit(); + } + + [Test] + public void DeinitializeShouldThrowExceptionOnNonzeroCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + library.sv_deinit().Returns(-1); + + // when - then + Assert.That(() => wrapper.Deinitialize(), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_deinit(); + } + + [TestCase(true)] + [TestCase(false)] + public void GetAutostopShouldReturnValue(bool autostop) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_autostop(Arg.Any()).Returns(autostop ? 1 : 0); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetAutostop(slotId); + + // then + library.Received(1).sv_get_autostop(slotId); + Assert.That(value, Is.EqualTo(autostop)); + } + + [Test] + public void GetAutostopShouldThrowOnInvalidValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_autostop(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => _ = wrapper.GetAutostop(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_autostop(slotId); + } + + [Test] + public void GetCurrentLineShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var currentLine = Any.Integer(); + library.sv_get_current_line(Arg.Any()).Returns(currentLine); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetCurrentLine(slotId); + + // then + library.Received(1).sv_get_current_line(slotId); + Assert.That(value, Is.EqualTo(currentLine)); + } + + [Test] + public void GetCurrentLineWithTenthPartShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var currentLineWithTenthPart = Any.Integer(); + library.sv_get_current_line2(Arg.Any()).Returns(currentLineWithTenthPart); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetCurrentLineWithTenthPart(slotId); + + // then + library.Received(1).sv_get_current_line2(slotId); + Assert.That(value, Is.EqualTo(currentLineWithTenthPart)); + } + + [Test] + public void GetCurrentSignalLevelShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var signalLevel = Any.Integer(); + library.sv_get_current_signal_level(Arg.Any(), Arg.Any()).Returns(signalLevel); + var slotId = Any.Integer(); + var channelId = Any.Integer(); + + // when + var value = wrapper.GetCurrentSignalLevel(slotId, channelId); + + // then + library.Received(1).sv_get_current_signal_level(slotId, channelId); + Assert.That(value, Is.EqualTo(signalLevel)); + } + + [Test] + public void GetLogsShouldReturnNullForNullPtr() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + library.sv_get_log(Arg.Any()).Returns(IntPtr.Zero); + + // when - then + var result = wrapper.GetLog(Any.Integer()); + + // then + Assert.That(result, Is.EqualTo(null)); + } + + [Test] + public void GetLogsShouldReturnStringForValidPointer() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + const string log = "this is a bunch of logs\nplease pretend that it's sufficient"; + var logLength = log.Length; + // assuming that GetLog calls free() + library.sv_get_log(logLength).Returns(static _ => Marshal.StringToHGlobalAnsi(log)); + + // when + var result = wrapper.GetLog(logLength); + + // then + Assert.That(result, Is.EqualTo(log)); + } + + [Test] + public void GetSampleRateShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var ticks = Any.Integer(); + library.sv_get_sample_rate().Returns(ticks); + + // when + var result = wrapper.GetSampleRate(); + + // then + Assert.That(result, Is.EqualTo(ticks)); + } + + [TestCase(0)] + [TestCase(-1)] + public void GetSampleRateShouldThrowOnNonsenseValue(int sampleRate) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_sample_rate().Returns(sampleRate); + + // when - then + Assert.That(() => _ = wrapper.GetSampleRate(), Throws.Exception.TypeOf()); + } + + [Test] + public void GetSongBpmShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var songBpm = Any.Integer(); + library.sv_get_song_bpm(Arg.Any()).Returns(songBpm); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetSongBpm(slotId); + + // then + library.Received(1).sv_get_song_bpm(slotId); + Assert.That(value, Is.EqualTo(songBpm)); + } + + [Test] + public void GetSongBpmShouldThrowOnInvalidValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_song_bpm(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => _ = wrapper.GetSongBpm(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_song_bpm(slotId); + } + + [Test] + public void GetSongLengthInFramesShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var songLength = Any.UnsignedInt(); + library.sv_get_song_length_frames(Arg.Any()).Returns(songLength); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetSongLengthInFrames(slotId); + + // then + library.Received(1).sv_get_song_length_frames(slotId); + Assert.That(value, Is.EqualTo(songLength)); + } + + [Test] + public void GetSongLengthInLinesShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var songLength = Any.UnsignedInt(); + library.sv_get_song_length_lines(Arg.Any()).Returns(songLength); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetSongLengthInLines(slotId); + + // then + library.Received(1).sv_get_song_length_lines(slotId); + Assert.That(value, Is.EqualTo(songLength)); + } + + [Test] + public void GetSongNameShouldReturnNullOnNullPtr() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + + library.sv_get_song_name(Arg.Any()).Returns(IntPtr.Zero); + + // when + var result = wrapper.GetSongName(slotId); + + // then + Assert.That(result, Is.EqualTo(null)); + library.Received(1).sv_get_song_name(slotId); + } + + [Test] + public void GetSongNameShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + const string songName = "epic song"; + var slotId = Any.Integer(); + + var ptr = Marshal.StringToHGlobalAnsi(songName); + try + { + library.sv_get_song_name(Arg.Any()).Returns(ptr); + + // when + var result = wrapper.GetSongName(slotId); + + // then + Assert.That(result, Is.EqualTo(songName)); + library.Received(1).sv_get_song_name(slotId); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + [Test] + public void GetSongTplShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var songTpl = Any.Integer(); + library.sv_get_song_tpl(Arg.Any()).Returns(songTpl); + var slotId = Any.Integer(); + + // when + var value = wrapper.GetSongTpl(slotId); + + // then + library.Received(1).sv_get_song_tpl(slotId); + Assert.That(value, Is.EqualTo(songTpl)); + } + + [Test] + public void GetSongTplShouldThrowOnInvalidValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_get_song_tpl(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => _ = wrapper.GetSongTpl(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_song_tpl(slotId); + } + + [Test] + public void GetTicksPerSecondShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var ticks = Any.UnsignedInt(); + library.sv_get_ticks_per_second().Returns(ticks); + + // when + var result = wrapper.GetTicksPerSecond(); + + // then + Assert.That(result, Is.EqualTo(ticks)); + } + + [Test] + public void GetTicksShouldReturnValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var ticks = Any.UnsignedInt(); + library.sv_get_ticks().Returns(ticks); + + // when + var result = wrapper.GetTicks(); + + // then + Assert.That(result, Is.EqualTo(ticks)); + } + + [Test] + public void GetTimeMapShouldReturnExpectedValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var timeMap = Enumerable.Range(0, 64).ToArray(); + var slotId = Any.Integer(); + var startLine = Any.Integer(); + var length = timeMap.Length; + var mapType = Any.Instance(); + + library + .When(static l => + l.sv_get_time_map(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + var intPtr = callInfo.Arg(); + for (var i = 0; i < timeMap.Length; i++) + Marshal.WriteInt32(intPtr + i * 4, timeMap[i]); + }); + + // when + var value = wrapper.GetTimeMap(slotId, startLine, length, mapType); + + // then + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)mapType); + value.Should().BeEquivalentTo(timeMap); + } + + [Test] + public void GetTimeMapShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var startLine = Any.Integer(); + var length = Any.Integer(); + var mapType = Any.Instance(); + library.sv_get_time_map(default, default, default, default, default).ReturnsForAnyArgs(-1); + + // when - then + Assert.That(() => _ = wrapper.GetTimeMap(slotId, startLine, length, mapType), + Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)mapType); + } + + [Test] + public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + var sampleRate = Any.Integer(); + var channels = Any.Instance(); + var initFlags = Any.Instance(); + + library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(-1); + + // when - then + Assert.That(() => _ = wrapper.Initialize(sampleRate, null, channels, initFlags), + Throws.Exception.TypeOf()); + + // and then + library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); + } + + [Test] + public void InitializeShouldCallInitAsExpected() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + const int returnCode = 123454321; + library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + + var sampleRate = Any.Integer(); + var channels = Any.Instance(); + var initFlags = Any.Instance(); + var config = Any.String(); + + string? receivedString = null; + library.When(static l => l.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + var version = wrapper.Initialize(sampleRate, config, channels, initFlags); + + // then + library.Received(1).sv_init(Arg.Any(), sampleRate, (int)channels, (uint)initFlags); + Assert.That(version, Is.EqualTo(new LibraryVersion(returnCode))); + Assert.That(receivedString, Is.EqualTo(config)); + } + + [Test] + public void InitializeShouldCallInitAsExpectedWithNullConfig() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + const int returnCode = 123454321; + library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(returnCode); + + var sampleRate = Any.Instance(); + var channels = Any.Instance(); + var initFlags = Any.Instance(); + + // when + var version = wrapper.Initialize(sampleRate, null, channels, initFlags); + + // then + library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); + Assert.That(version, Is.EqualTo(new LibraryVersion(returnCode))); + } + + [TestCase(true)] + [TestCase(false)] + public void IsPlayingShouldReturnExpectedValue(bool isPlaying) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_end_of_song(Arg.Any()).Returns(isPlaying ? 0 : 1); + var slotId = Any.Integer(); + + // when + var value = wrapper.IsPlaying(slotId); + + // then + library.Received(1).sv_end_of_song(slotId); + Assert.That(value, Is.EqualTo(isPlaying)); + } + + [TestCase(-1)] + [TestCase(2)] + public void IsPlayingShouldThrowOnUnexpectedValue(int returnCode) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_end_of_song(Arg.Any()).Returns(returnCode); + var slotId = Any.Integer(); + + // when + Assert.That(() => _ = wrapper.IsPlaying(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_end_of_song(slotId); + } + + [Test] + public void LoadFromMemoryShouldCallExpectedMethods() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var data = Any.Array(); + var receivedArray = Array.Empty(); + + library.When(static l => l.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + receivedArray = new byte[callInfo.Arg()]; + Marshal.Copy(callInfo.Arg(), receivedArray, 0, (int)callInfo.Arg()); + }); + + // when + wrapper.Load(slotId, data); + + // then + Assert.That(receivedArray, Is.EquivalentTo(data)); + library.Received(1).sv_load_from_memory(slotId, Arg.Any(), (uint)data.Length); + } + + [Test] + public void LoadFromMemoryShouldThrowOnNonzeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var data = Any.Array(); + + library.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.Load(slotId, data), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_load_from_memory(slotId, Arg.Any(), Arg.Any()); + } + + [Test] + public void LoadShouldCallExpectedMethods() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var receivedString = string.Empty; + var path = Any.String(); + + library.When(static l => l.sv_load(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.Load(slotId, path); + + // then + Assert.That(receivedString, Is.EqualTo(path)); + library.Received(1).sv_load(slotId, Arg.Any()); + } + + [Test] + public void LoadShouldThrowOnNonzeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var fileName = Any.String(); + + library.sv_load(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.Load(slotId, fileName), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_load(slotId, Arg.Any()); + } + + [Test] + public void LockSlotShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_lock_slot(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.LockSlot(slotId); + + // then + library.Received(1).sv_lock_slot(slotId); + } + + [Test] + public void LockSlotShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_lock_slot(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.LockSlot(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_lock_slot(slotId); + } + + [Test] + public void OpenSlotShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_open_slot(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.OpenSlot(slotId); + + // then + library.Received(1).sv_open_slot(slotId); + } + + [Test] + public void OpenSlotShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_open_slot(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.OpenSlot(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_open_slot(slotId); + } + + [Test] + public void PauseStreamShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pause(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.PauseStream(slotId); + + // then + library.Received(1).sv_pause(slotId); + } + + [Test] + public void PauseStreamShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_pause(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.PauseStream(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_pause(slotId); + } + + [Test] + public void ResumeStreamOnSyncEffectShouldCallMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_sync_resume(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.ResumeStreamOnSyncEffect(slotId); + + // then + library.Received(1).sv_sync_resume(slotId); + } + + [Test] + public void ResumeStreamOnSyncEffectShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_sync_resume(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.ResumeStreamOnSyncEffect(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_sync_resume(slotId); + } + + [Test] + public void ResumeStreamShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_resume(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.ResumeStream(slotId); + + // then + library.Received(1).sv_resume(slotId); + } + + [Test] + public void ResumeStreamShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_resume(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.ResumeStream(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_resume(slotId); + } + + [Test] + public void RewindShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_rewind(Arg.Any(), Arg.Any()).Returns(0); + var slotId = Any.Integer(); + var line = Any.Integer(); + + // when + wrapper.Rewind(slotId, line); + + // then + library.Received(1).sv_rewind(slotId, line); + } + + [Test] + public void RewindShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_rewind(Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + var line = Any.Integer(); + + // when - then + Assert.That(() => wrapper.Rewind(slotId, line), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_rewind(slotId, line); + } + + [Test] + public void SaveShouldCallExpectedMethods() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var receivedString = string.Empty; + var path = Any.String(); + + library.When(static l => l.sv_save(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.Save(slotId, path); + + // then + Assert.That(receivedString, Is.EqualTo(path)); + library.Received(1).sv_save(slotId, Arg.Any()); + } + + [Test] + public void SaveShouldThrowOnUnexpectedReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var path = Any.String(); + + library.sv_save(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.Save(slotId, path), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_save(slotId, Arg.Any()); + } + + [Test] + public void SendEventAllOverloadsShouldSendArgumentsAsExpectex() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var track = Any.Integer(); + + library.sv_send_event(default, default, default, default, default, default, default).ReturnsForAnyArgs(0); + var @event = new PatternEvent(Any.Byte(), Any.Byte(), Any.UnsignedShort(), Any.Byte(), Any.UnsignedShort()); + + // when + wrapper.SendEvent(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); + wrapper.SendEvent(slotId, track, @event); + + // then + library.Received(2).sv_send_event(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); + } + + [Test] + public void SendEventAllOverloadsShouldThrowException() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var track = Any.Integer(); + + library.sv_send_event(default, default, default, default, default, default, default).ReturnsForAnyArgs(-1); + var @event = new PatternEvent(Any.Byte(), Any.Byte(), Any.UnsignedShort(), Any.Byte(), Any.UnsignedShort()); + + Assert.Multiple(() => + { + Assert.That( + () => wrapper.SendEvent(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY), + Throws.Exception.TypeOf()); + Assert.That(() => wrapper.SendEvent(slotId, track, @event), Throws.Exception.TypeOf()); + }); + + // then + library.Received(2).sv_send_event(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); + } + + [TestCase(true)] + [TestCase(false)] + public void SetAutostopShouldCallWithArgument(bool autostop) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.SetAutoStop(slotId, autostop); + + // then + library.Received(1).sv_set_autostop(slotId, autostop ? 1 : 0); + } + + [Test] + public void SetAutostopShouldThrowOnInvalidReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.SetAutoStop(slotId, false), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_autostop(slotId, 0); + } + + [TestCase(true)] + [TestCase(false)] + public void SetSendEventTimestampShouldCallWithArgument(bool reset) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + var slotId = Any.Integer(); + var t = Any.Integer(); + + // when + wrapper.SetSendEventTimestamp(slotId, reset, t); + + // then + library.Received(1).sv_set_event_t(slotId, reset ? 0 : 1, t); + } + + [Test] + public void SetSendEventTimestampShouldThrowOnInvalidReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + var t = Any.Integer(); + + // when - then + Assert.That(() => wrapper.SetSendEventTimestamp(slotId, false, t), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_event_t(slotId, 1, t); + } + + [Test] + public void SetSongNameShouldSendString() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var receivedString = string.Empty; + var newSongName = Any.String(); + + library.When(static l => l.sv_set_song_name(Arg.Any(), Arg.Any())) + .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + + // when + wrapper.SetSongName(slotId, newSongName); + + // then + Assert.That(receivedString, Is.EqualTo(newSongName)); + library.Received(1).sv_set_song_name(slotId, Arg.Any()); + } + + [Test] + public void SetSongNameShouldThrowExceptionOnNonzeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + var slotId = Any.Integer(); + var newSongName = Any.String(); + + library.sv_set_song_name(Arg.Any(), Arg.Any()).Returns(-1); + + // when + Assert.That(() => wrapper.SetSongName(slotId, newSongName), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_set_song_name(slotId, Arg.Any()); + } + + [Test] + public void StartPlaybackFromBeginningShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_play_from_beginning(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.StartPlaybackFromBeginning(slotId); + + // then + library.Received(1).sv_play_from_beginning(slotId); + } + + [Test] + public void StartPlaybackFromBeginningShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_play_from_beginning(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.StartPlaybackFromBeginning(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_play_from_beginning(slotId); + } + + [Test] + public void StartPlaybackShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_play(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.StartPlayback(slotId); + + // then + library.Received(1).sv_play(slotId); + } + + [Test] + public void StartPlaybackShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_play(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.StartPlayback(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_play(slotId); + } + + [Test] + public void StopPlaybackShouldCallMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_stop(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.StopPlayback(slotId); + + // then + library.Received(1).sv_stop(slotId); + } + + [Test] + public void StopPlaybackShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_stop(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.StopPlayback(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_stop(slotId); + } + + [Test] + public void UnlockSlotShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_unlock_slot(Arg.Any()).Returns(0); + var slotId = Any.Integer(); + + // when + wrapper.UnlockSlot(slotId); + + // then + library.Received(1).sv_unlock_slot(slotId); + } + + [Test] + public void UnlockSlotShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_unlock_slot(Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.UnlockSlot(slotId), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_unlock_slot(slotId); + } + + [Test] + public void UpdateInputDevicesShouldCallExpectedMethod() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_update_input().Returns(0); + + // when + wrapper.UpdateInputDevices(); + + // then + library.Received(1).sv_update_input(); + } + + [Test] + public void UpdateInputDevicesShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + library.sv_update_input().Returns(-1); + + // when - then + Assert.That(() => wrapper.UpdateInputDevices(), Throws.Exception.TypeOf()); + } + + [Test] + public void VolumeShouldReturnExpectedValue() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + const int volume = 127; + const int otherVolume = 125; + library.sv_volume(Arg.Any(), Arg.Any()).Returns(volume); + var slotId = Any.Integer(); + + // when + var value = wrapper.Volume(slotId, otherVolume); + + // then + library.Received(1).sv_volume(slotId, otherVolume); + Assert.That(value, Is.EqualTo(volume)); + } + + [Test] + public void VolumeShouldThrowOnNonZeroReturnCode() + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + const int otherVolume = 125; + library.sv_volume(Arg.Any(), Arg.Any()).Returns(-1); + var slotId = Any.Integer(); + + // when - then + Assert.That(() => wrapper.Volume(slotId, otherVolume), Throws.Exception.TypeOf()); + + // then + library.Received(1).sv_volume(slotId, otherVolume); + } +} diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs new file mode 100644 index 0000000..d198c08 --- /dev/null +++ b/SunSharp.Tests/NoteTests.cs @@ -0,0 +1,202 @@ +using System; +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class NoteTests +{ + public static TestCaseData[] TestCases => new TestCaseData[] + { + new(new Note(NoteName.C, 0), "C0"), + new(new Note(NoteName.Cs, 0), "c0"), + new(new Note(NoteName.G, 3), "G3"), + new(Note.AllNotesOff, "-!"), + new(Note.Off, "--"), + new(Note.Play, "P!"), + new(Note.SetPitch, "SP"), + new(Note.Stop, "S!"), + new(Note.Silence, "__"), + new(Note.CleanSynths, "CS"), + new(Note.CleanModule, "CM"), + new(new Note(255), "??") + }; + + [TestCase(NoteName.A, 'A')] + [TestCase(NoteName.As, 'a')] + [TestCase(NoteName.B, 'B')] + [TestCase(NoteName.C, 'C')] + [TestCase(NoteName.Cs, 'c')] + [TestCase(NoteName.D, 'D')] + [TestCase(NoteName.Ds, 'd')] + [TestCase(NoteName.E, 'E')] + [TestCase(NoteName.F, 'F')] + [TestCase(NoteName.Fs, 'f')] + [TestCase(NoteName.G, 'G')] + [TestCase(NoteName.Gs, 'g')] + [TestCase(NoteName.Other, '?')] + [TestCase((NoteName)(-1), '?')] + public void GetNoteCharacterShouldReturnExpectedValue(NoteName argument, char expectedValue) + { + var value = argument.GetNoteCharacter(); + + Assert.That(value, Is.EqualTo(expectedValue)); + } + + [TestCase(0, NoteName.Other)] + [TestCase(1, NoteName.C)] + [TestCase(2, NoteName.Cs)] + [TestCase(1 + 12, NoteName.C)] + [TestCase(1 + 12 * 2, NoteName.C)] + [TestCase(1 + 12 * 3, NoteName.C)] + [TestCase(1 + 12 * 8, NoteName.C)] + [TestCase(127, NoteName.Fs)] + [TestCase(128, NoteName.Other)] + [TestCase(129, NoteName.Other)] + public void NoteNameGetterShouldReturnExpectedValue(byte noteValue, NoteName expectedValue) + { + var note = new Note(noteValue); + var value = note.Name; + + Assert.That(value, Is.EqualTo(expectedValue)); + } + + [TestCase(NoteName.C, 0, 1)] + [TestCase(NoteName.Cs, 0, 2)] + [TestCase(NoteName.C, 1, 13)] + [TestCase(NoteName.Fs, 10, 127)] + public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName name, int octave, byte expectedValue) + { + var note = new Note(name, octave); + var value = note.Value; + + Assert.Multiple(() => + { + Assert.That(value, Is.EqualTo(expectedValue)); + Assert.That(note.Octave, Is.EqualTo(octave)); + Assert.That(note.Name, Is.EqualTo(name)); + }); + } + + [TestCase(NoteName.C, -1)] + [TestCase(NoteName.C, 13)] + [TestCase(NoteName.G, 10)] + public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidArguments(NoteName name, int octave) + { + Assert.Throws(() => _ = new Note(name, octave)); + } + + [TestCase(NoteName.Other)] + [TestCase((NoteName)(-1))] + [TestCase((NoteName)13)] + public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidNoteName(NoteName name) + { + Assert.Throws(() => _ = new Note(name, 1)); + } + + [Test] + public void NotePropertiesShouldReturnValidValuesForSpecialCases() + { + Assert.Multiple(static () => + { + Assert.That(Note.AllNotesOff.IsAllNotesOff, Is.True); + Assert.That(Note.Off.IsNoteOff, Is.True); + Assert.That(Note.Play.IsPlay, Is.True); + Assert.That(Note.SetPitch.IsSetPitch, Is.True); + Assert.That(Note.Stop.IsStop, Is.True); + Assert.That(Note.Silence.IsSilence, Is.True); + Assert.That(Note.CleanSynths.IsCleanSynths, Is.True); + Assert.That(Note.CleanModule.IsCleanModule, Is.True); + + Assert.That(Note.Silence.IsNormal, Is.False); + Assert.That(Note.SetPitch.IsNormal, Is.False); + Assert.That(Note.Stop.IsNormal, Is.False); + Assert.That(Note.AllNotesOff.Octave, Is.EqualTo(-1)); + Assert.That(Note.AllNotesOff.Name, Is.EqualTo(NoteName.Other)); + }); + + Assert.Multiple(static () => + { + var normalNote = new Note(NoteName.E, 5); + + Assert.That(normalNote.IsAllNotesOff, Is.False); + Assert.That(normalNote.IsNoteOff, Is.False); + Assert.That(normalNote.IsPlay, Is.False); + Assert.That(normalNote.IsSetPitch, Is.False); + Assert.That(normalNote.IsStop, Is.False); + Assert.That(normalNote.IsSilence, Is.False); + Assert.That(normalNote.IsCleanSynths, Is.False); + Assert.That(normalNote.IsCleanModule, Is.False); + Assert.That(normalNote.IsNormal, Is.True); + Assert.That(normalNote.Octave, Is.EqualTo(5)); + Assert.That(normalNote.Name, Is.EqualTo(NoteName.E)); + }); + } + + [TestCaseSource(nameof(TestCases))] + public void NoteToStringShouldReturnExpectedValues(Note note, string expectedValue) + { + Assert.That(note.ToString(), Is.EqualTo(expectedValue)); + } + + [TestCase(0)] + [TestCase(255)] + [TestCase(10)] + [TestCase(128)] + public void NoteImplicitConversionShouldSetDataAsExpected(byte value) + { + var note = (Note)value; + var otherValue = (byte)note; + + Assert.Multiple(() => + { + Assert.That(note.Value, Is.EqualTo(value)); + Assert.That(otherValue, Is.EqualTo(value)); + }); + } + + [Test] + public void NoteEqualityComparisonShouldJustWork() + { + var a = new Note(1); + var b = new Note(1); + var c = new Note(2); + + Assert.Multiple(() => + { +#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + Assert.That(a.Equals(b)); + Assert.That(a.Equals(a)); + Assert.That(a.Equals(1)); + Assert.That(a.Equals(1)); + Assert.That(a.Equals((object?)b)); + Assert.That(a.Equals((object?)a)); + Assert.That(a.Equals(null), Is.False); + Assert.That(a.Equals(new object()), Is.False); + Assert.That(b.Equals(new Note(2)), Is.False); + Assert.That(b.Equals(2), Is.False); + Assert.That(new Note(1).Equals(2), Is.False); + + Assert.That(a == b); + Assert.That(a != b, Is.False); + Assert.That(a == 1); + Assert.That(a != 2); + Assert.That(a != c); + Assert.That(a == c, Is.False); +#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + }); + } + + [Test] + public void NoteGetHashCodeShouldPreserveComparability() + { + var a = new Note(1); + var b = new Note(1); + var c = new Note(2); + + Assert.Multiple(() => + { + Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); + Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); + }); + } +} diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs new file mode 100644 index 0000000..87bc15f --- /dev/null +++ b/SunSharp.Tests/PatternEventTests.cs @@ -0,0 +1,398 @@ +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class PatternEventTests +{ + public static TestCaseData[] TestCases => new[] + { + new TestCaseData(new PatternEvent(), "____________"), + new TestCaseData(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001______"), + new TestCaseData(new PatternEvent(0, 1), "__________0001"), + new TestCaseData(new PatternEvent(Effect.Arpeggio, 0x0704), "________080704"), + new TestCaseData(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), + new TestCaseData(new PatternEvent(Note.Off), "--__________"), + new TestCaseData(new PatternEvent(Note.AllNotesOff), "-!__________") + }; + + private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte velocity = 0, ushort module = 0, + byte controller = 0, byte effect = 0, ushort xxyy = 0) + { + return note // 1 byte + | ((ulong)velocity << 8) // 1 byte + | ((ulong)module << (8 * 2)) // 2 bytes + | ((ulong)effect << (8 * 4)) // 1 byte + | ((ulong)controller << (8 * 5)) // 1 byte + | ((ulong)xxyy << (8 * 6)); // 2 bytes + } + + [Test] + public void PatternEventConstructorFromBinaryDataShouldSetValuesAsExpected() + { + const byte note = 0x12; + const byte velocity = 0x95; + const ushort module = 0xd93e; + const byte controller = 0x12; + const byte effect = 0x95; + const ushort xxyy = 0x1011; + const ushort xx = xxyy & 0xFF; + const ushort yy = (xxyy >> 8) & 0xFF; + + var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); + var patternEvent = new PatternEvent(binaryValue); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); + }); + } + + [Test] + public void PatternEventConstructorForEffectShouldSetValuesAsExpected() + { + const byte effect = 0x95; + const ushort xxyy = 0x1010; + const ushort xx = xxyy & 0xFF; + const ushort yy = (xxyy >> 8) & 0xFF; + + var binaryValue = ConstructBinaryPatternEventValue(effect: effect, xxyy: xxyy); + var patternEvent = new PatternEvent((Effect)effect, xxyy); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(0), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(0), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(0), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo(effect), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(0), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); + }); + } + + [Test] + public void PatternEventConstructorForNoteShouldSetValuesAsExpected() + { + const byte note = 0x12; + const byte velocity = 0x95; + const ushort module = 0xd93e; + + var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module); + var patternEvent = new PatternEvent(note, velocity, module); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(0), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(0), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo(0), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo(Effect.None), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(0), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(0), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(0), "YY"); + }); + } + + [Test] + public void PatternEventConstructorWithAllParametersShouldSetValuesAsExpected() + { + const byte note = 0x12; + const byte velocity = 0x95; + const ushort module = 0xd93e; + const byte controller = 0x12; + const byte effect = 0x95; + const ushort xxyy = 0x1011; + const ushort xx = xxyy & 0xFF; + const ushort yy = (xxyy >> 8) & 0xFF; + + var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); + var patternEvent = new PatternEvent(note, velocity, module, controller, effect, xxyy); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); + }); + } + + [Test] + public void PatternEventConstructorWithAllParametersWithSpecifiedTypesShouldSetValuesAsExpected() + { + const byte note = 0x12; + const byte velocity = 0x95; + const ushort module = 0xd93e; + const byte controller = 0x12; + const byte effect = 0x95; + const ushort xxyy = 0x1011; + const ushort xx = xxyy & 0xFF; + const ushort yy = (xxyy >> 8) & 0xFF; + + var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); + var patternEvent = new PatternEvent(note, velocity, module, controller, (Effect)effect, xxyy); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); + }); + } + + [Test] + public void PatternEventConstructorWithAllParametersWithPackedControllerEffectShouldSetValuesAsExpected() + { + const byte note = 0x12; + const byte velocity = 0x95; + const ushort module = 0xd93e; + const byte controller = 0x12; + const byte effect = 0x95; + const ushort xxyy = 0x1011; + const ushort xx = xxyy & 0xFF; + const ushort yy = (xxyy >> 8) & 0xFF; + + var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); + var patternEvent = new PatternEvent(note, velocity, module, (controller << 8) | effect, xxyy); + + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); + Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); + Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); + Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); + Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); + Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); + Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); + Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); + Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); + Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); + }); + } + + [Test] + public void PatternEventSettersShouldJustWork() + { + var patternEvent = new PatternEvent + { + NN = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(1))); + Assert.That(patternEvent.NN, Is.EqualTo(1)); + Assert.That(patternEvent.Note, Is.EqualTo((Note)1)); + }); + + patternEvent = new PatternEvent + { + Note = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(1))); + Assert.That(patternEvent.NN, Is.EqualTo(1)); + Assert.That(patternEvent.Note, Is.EqualTo((Note)1)); + }); + + patternEvent = new PatternEvent + { + MM = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(module: 1))); + Assert.That(patternEvent.MM, Is.EqualTo(1)); + }); + + patternEvent = new PatternEvent + { + VV = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(velocity: 1))); + Assert.That(patternEvent.VV, Is.EqualTo(1)); + }); + + patternEvent = new PatternEvent + { + CC = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(controller: 1))); + Assert.That(patternEvent.CC, Is.EqualTo(1)); + }); + + patternEvent = new PatternEvent + { + EE = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1))); + Assert.That(patternEvent.EE, Is.EqualTo(1)); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)1)); + }); + + patternEvent = new PatternEvent + { + Effect = (Effect)1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1))); + Assert.That(patternEvent.EE, Is.EqualTo(1)); + Assert.That(patternEvent.Effect, Is.EqualTo((Effect)1)); + }); + + patternEvent = new PatternEvent + { + CCEE = 0x0101 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1, controller: 1))); + Assert.That(patternEvent.EE, Is.EqualTo(1)); + Assert.That(patternEvent.CC, Is.EqualTo(1)); + Assert.That(patternEvent.CCEE, Is.EqualTo(0x0101)); + }); + + patternEvent = new PatternEvent + { + XXYY = 0x0101 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0101))); + Assert.That(patternEvent.XX, Is.EqualTo(1)); + Assert.That(patternEvent.YY, Is.EqualTo(1)); + Assert.That(patternEvent.XXYY, Is.EqualTo(0x0101)); + }); + + patternEvent = new PatternEvent + { + XX = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0001))); + Assert.That(patternEvent.XX, Is.EqualTo(1)); + Assert.That(patternEvent.YY, Is.EqualTo(0)); + Assert.That(patternEvent.XXYY, Is.EqualTo(0x0001)); + }); + + patternEvent = new PatternEvent + { + YY = 1 + }; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0100))); + Assert.That(patternEvent.XX, Is.EqualTo(0)); + Assert.That(patternEvent.YY, Is.EqualTo(1)); + Assert.That(patternEvent.XXYY, Is.EqualTo(0x0100)); + }); + } + + [TestCaseSource(nameof(TestCases))] + public void PatternEventToStringShouldReturnExpectedValue(PatternEvent patternEvent, string expectedValue) + { + Assert.That(patternEvent.ToString(), Is.EqualTo(expectedValue)); + } + + [Test] + public void PatternEventEqualityComparisonShouldJustWork() + { + var a = new PatternEvent(1); + var b = new PatternEvent(1); + var c = new PatternEvent(2); + + Assert.Multiple(() => + { +#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + Assert.That(a.Equals(b)); + Assert.That(a.Equals(a)); + Assert.That(a.Equals(1)); + Assert.That(a.Equals(1)); + Assert.That(a.Equals((object?)b)); + Assert.That(a.Equals((object?)a)); + Assert.That(a.Equals(null), Is.False); + Assert.That(a.Equals(new object()), Is.False); + Assert.That(b.Equals(c), Is.False); + Assert.That(b.Equals(2), Is.False); + Assert.That(new Note(1).Equals(2), Is.False); + + Assert.That(a == b); + Assert.That(a != b, Is.False); + Assert.That(a == 1); + Assert.That(a != 2); + Assert.That(a != c); + Assert.That(a == c, Is.False); +#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure + }); + } + + [Test] + public void PatternEventGetHashCodeShouldPreserveComparability() + { + var a = new PatternEvent(1); + var b = new PatternEvent(1); + var c = new PatternEvent(2); + + Assert.Multiple(() => + { + Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); + Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); + }); + } + + [TestCase(0ul)] + [TestCase(1ul)] + [TestCase(2ul)] + public void PatternEventImplicitCastShouldJustWork(ulong value) + { + var patternEvent = (PatternEvent)value; + var extractedValue = (ulong)patternEvent; + Assert.Multiple(() => + { + Assert.That(patternEvent.Data, Is.EqualTo(value)); + Assert.That(extractedValue, Is.EqualTo(patternEvent.Data)); + Assert.That(extractedValue, Is.EqualTo(value)); + }); + } +} diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/SunSharp.Tests/SunSharp.Tests.csproj new file mode 100644 index 0000000..0f6e942 --- /dev/null +++ b/SunSharp.Tests/SunSharp.Tests.csproj @@ -0,0 +1,32 @@ + + + + net6.0 + enable + + false + true + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + \ No newline at end of file diff --git a/SunSharp.Tests/SunVoxExceptionTests.cs b/SunSharp.Tests/SunVoxExceptionTests.cs new file mode 100644 index 0000000..3364004 --- /dev/null +++ b/SunSharp.Tests/SunVoxExceptionTests.cs @@ -0,0 +1,23 @@ +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class SunVoxExceptionTests +{ + [Test] + public void ShouldHaveExpectedMessage() + { + const uint code = unchecked((uint)-1); + const string methodName = nameof(ShouldHaveExpectedMessage); + var exception = new SunVoxException(-1, methodName); + var exceptionFromUint = new SunVoxException(code, methodName); + var exceptionWithNoMethod = new SunVoxException(-1); + + Assert.Multiple(() => + { + Assert.That(exception.Message, Is.EqualTo($"Error code: {code:X}, method: '{methodName}'.")); + Assert.That(exceptionFromUint.Message, Is.EqualTo($"Error code: {code:X}, method: '{methodName}'.")); + Assert.That(exceptionWithNoMethod.Message, Is.EqualTo($"Error code: {code:X}, method: 'unknown'.")); + }); + } +} diff --git a/SunSharp.Tests/SunVoxLibExtensionsTests.cs b/SunSharp.Tests/SunVoxLibExtensionsTests.cs new file mode 100644 index 0000000..86826c3 --- /dev/null +++ b/SunSharp.Tests/SunVoxLibExtensionsTests.cs @@ -0,0 +1,249 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NSubstitute; +using NUnit.Framework; + +namespace SunSharp.Tests; + +public class SunVoxLibExtensionsTests +{ + private static IEnumerable RunInLockActionCases => PrepareRunInLockActionCalls(); + + private static IEnumerable RunInLockFuncCases => PrepareRunInLockFuncCalls(); + + private static bool IsNullableObjectArrayEqual(object[]? a, object[]? b) + { + if (a != null && b != null) + return a.SequenceEqual(b); + + return a == null && b == null; + } + + private static IEnumerable PrepareRunInLockActionCalls() + { + yield return new TestCaseData( + 0, + static (ISunVoxLib lib, Action action, object[]? _) => { lib.RunInLock(0, () => action(null)); } + ); + yield return new TestCaseData( + 1, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, arg => action(new[] { arg }), args[0]); + } + ); + yield return new TestCaseData( + 2, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2) => action(new[] { arg1, arg2 }), args[0], args[1]); + } + ); + yield return new TestCaseData( + 3, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3) => action(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); + } + ); + yield return new TestCaseData( + 4, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], + args[2], args[3]); + } + ); + yield return new TestCaseData( + 5, + static (ISunVoxLib lib, Action action, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action(new[] { arg1, arg2, arg3, arg4, arg5 }), + args[0], args[1], args[2], args[3], args[4]); + } + ); + } + + private static IEnumerable PrepareRunInLockFuncCalls() + { + yield return new TestCaseData( + 0, + static (ISunVoxLib lib, Func func, object[]? _) => + { + return lib.RunInLock(0, () => func(null)); + } + ); + yield return new TestCaseData( + 1, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, arg => func(new[] { arg }), args[0]); + } + ); + yield return new TestCaseData( + 2, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2) => func(new[] { arg1, arg2 }), args[0], args[1]); + } + ); + yield return new TestCaseData( + 3, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3) => func(new[] { arg1, arg2, arg3 }), args[0], args[1], + args[2]); + } + ); + yield return new TestCaseData( + 4, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func(new[] { arg1, arg2, arg3, arg4 }), args[0], + args[1], args[2], args[3]); + } + ); + yield return new TestCaseData( + 5, + static (ISunVoxLib lib, Func func, object[]? args) => + { + ArgumentNullException.ThrowIfNull(args); + return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func(new[] { arg1, arg2, arg3, arg4, arg5 }), + args[0], args[1], args[2], args[3], args[4]); + } + ); + } + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockShouldCallLockActionAndUnlock(int argCount, + Action, object[]?> action) + { + var lib = Substitute.For(); + var mockAction = Substitute.For>(); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + action(lib, mockAction, mockData); + + // then + lib.Received(1).LockSlot(0); + mockAction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockShouldCallLockFuncAndUnlock(int argCount, + Func, object[]?, object> function) + { + var lib = Substitute.For(); + var mockFunction = Substitute.For>(); + var mockResult = Substitute.For(); + mockFunction.Invoke(Arg.Any()).Returns(mockResult); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + var result = function(lib, mockFunction, mockData); + + // then + lib.Received(1).LockSlot(0); + mockFunction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); + Assert.That(result, Is.SameAs(mockResult)); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsException(int argCount, + Action, object[]?> action) + { + var lib = Substitute.For(); + var sub = Substitute.For(); + var mockAction = new Action(_ => + { + sub(); + throw new Exception(); + }); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => action(lib, mockAction, mockData)); + + // then + lib.Received(1).LockSlot(0); + sub.Received(1).Invoke(); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(int argCount, + Func, object[]?, object> function) + { + var lib = Substitute.For(); + var sub = Substitute.For(); + var mockFunction = new Func(_ => + { + sub(); + throw new Exception(); + }); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => function(lib, mockFunction, mockData)); + + // then + lib.Received(1).LockSlot(0); + sub.Received(1).Invoke(); + lib.Received(1).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockActionCases))] + public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(int argCount, + Action, object[]?> action) + { + var lib = Substitute.For(); + lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); + var mockAction = Substitute.For>(); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => action(lib, mockAction, mockData)); + + // then + lib.Received(1).LockSlot(0); + mockAction.Received(0).Invoke(Arg.Any()); + lib.Received(0).UnlockSlot(0); + } + + [TestCaseSource(nameof(RunInLockFuncCases))] + public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int argCount, + Func, object[]?, object> function) + { + var lib = Substitute.For(); + lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); + var mockFunction = Substitute.For>(); + var mockData = argCount == 0 + ? null + : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + // when + Assert.Throws(() => function(lib, mockFunction, mockData)); + + // then + lib.Received(1).LockSlot(0); + mockFunction.Received(0).Invoke(Arg.Any()); + lib.Received(0).UnlockSlot(0); + } +} diff --git a/SunSharp.UnitTests/SunSharp.UnitTests.csproj b/SunSharp.UnitTests/SunSharp.UnitTests.csproj deleted file mode 100644 index 826e753..0000000 --- a/SunSharp.UnitTests/SunSharp.UnitTests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - net6.0 - enable - - false - true - - - - - - - - - - - - - - - - - - - - diff --git a/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs b/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs deleted file mode 100644 index 6b5f760..0000000 --- a/SunSharp.UnitTests/SunVoxLibExtensionsTests.cs +++ /dev/null @@ -1,230 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using NSubstitute; -using NUnit.Framework; - -namespace SunSharp.UnitTests -{ - public class SunVoxLibExtensionsTests - { - private static bool IsNullableObjectArrayEqual(object[]? a, object[]? b) - { - if (a != null && b != null) - return a.SequenceEqual(b); - - return a == null && b == null; - } - - private static IEnumerable PrepareRunInLockActionCalls() - { - yield return new TestCaseData( - 0, - static (ISunVoxLib lib, Action action, object[]? _) => - { - lib.RunInLock(0, () => action(null)); - } - ); - yield return new TestCaseData( - 1, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg) => action(new[] { arg }), args[0]); - } - ); - yield return new TestCaseData( - 2, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2) => action(new[] { arg1, arg2 }), args[0], args[1]); - } - ); - yield return new TestCaseData( - 3, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3) => action(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); - } - ); - yield return new TestCaseData( - 4, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], args[2], args[3]); - } - ); - yield return new TestCaseData( - 5, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action(new[] { arg1, arg2, arg3, arg4, arg5 }), args[0], args[1], args[2], args[3], args[4]); - } - ); - } - - private static IEnumerable RunInLockActionCases => PrepareRunInLockActionCalls(); - - private static IEnumerable PrepareRunInLockFuncCalls() - { - yield return new TestCaseData( - 0, - static (ISunVoxLib lib, Func func, object[]? _) => - { - return lib.RunInLock(0, () => func(null)); - } - ); - yield return new TestCaseData( - 1, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg) => func(new[] { arg }), args[0]); - } - ); - yield return new TestCaseData( - 2, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2) => func(new[] { arg1, arg2 }), args[0], args[1]); - } - ); - yield return new TestCaseData( - 3, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3) => func(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); - } - ); - yield return new TestCaseData( - 4, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], args[2], args[3]); - } - ); - yield return new TestCaseData( - 5, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func(new[] { arg1, arg2, arg3, arg4, arg5 }), args[0], args[1], args[2], args[3], args[4]); - } - ); - } - - private static IEnumerable RunInLockFuncCases => PrepareRunInLockFuncCalls(); - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockShouldCallLockActionAndUnlock(int argCount, Action, object[]?> action) - { - var lib = Substitute.For(); - var mockAction = Substitute.For>(); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - action(lib, mockAction, mockData); - - // then - lib.Received(1).LockSlot(0); - mockAction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockShouldCallLockFuncAndUnlock(int argCount, Func, object[]?, object> function) - { - var lib = Substitute.For(); - var mockFunction = Substitute.For>(); - var mockResult = Substitute.For(); - mockFunction.Invoke(Arg.Any()).Returns(mockResult); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - var result = function(lib, mockFunction, mockData); - - // then - lib.Received(1).LockSlot(0); - mockFunction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); - Assert.That(result, Is.SameAs(mockResult)); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsException(int argCount, Action, object[]?> action) - { - var lib = Substitute.For(); - var sub = Substitute.For(); - var mockAction = new Action(_ => - { - sub(); - throw new Exception(); - }); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - Assert.Throws(() => action(lib, mockAction, mockData)); - - // then - lib.Received(1).LockSlot(0); - sub.Received(1).Invoke(); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(int argCount, Func, object[]?, object> function) - { - var lib = Substitute.For(); - var sub = Substitute.For(); - var mockFunction = new Func(_ => - { - sub(); - throw new Exception(); - }); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - Assert.Throws(() => function(lib, mockFunction, mockData)); - - // then - lib.Received(1).LockSlot(0); - sub.Received(1).Invoke(); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(int argCount, Action, object[]?> action) - { - var lib = Substitute.For(); - lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); - var mockAction = Substitute.For>(); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - Assert.Throws(() => action(lib, mockAction, mockData)); - - // then - lib.Received(1).LockSlot(0); - mockAction.Received(0).Invoke(Arg.Any()); - lib.Received(0).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int argCount, Func, object[]?, object> function) - { - var lib = Substitute.For(); - lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); - var mockFunction = Substitute.For>(); - var mockData = argCount == 0 ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); - // when - Assert.Throws(() => function(lib, mockFunction, mockData)); - - // then - lib.Received(1).LockSlot(0); - mockFunction.Received(0).Invoke(Arg.Any()); - lib.Received(0).UnlockSlot(0); - } - } -} diff --git a/SunSharp.sln b/SunSharp.sln index a9d939f..755af2b 100644 --- a/SunSharp.sln +++ b/SunSharp.sln @@ -7,12 +7,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp", "SunSharp\SunSha EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Redistribution", "SunSharp.Redistribution\SunSharp.Redistribution.csproj", "{81E20175-47B1-4FFD-BC12-F85BBFF86E0C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.UnitTests", "SunSharp.UnitTests\SunSharp.UnitTests.csproj", "{2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.IntegrationTests", "SunSharp.IntegrationTests\SunSharp.IntegrationTests.csproj", "{5FB5B619-BA45-440D-BE64-EFB06C58C985}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration", "SunSharp.CodeGeneration\SunSharp.CodeGeneration.csproj", "{4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Tests", "SunSharp.Tests\SunSharp.Tests.csproj", "{5074D4E5-D349-4061-8A5B-A8C1E1624AD8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -27,10 +27,6 @@ Global {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Debug|Any CPU.Build.0 = Debug|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.Build.0 = Release|Any CPU - {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2E3E35B9-551F-4FDB-BBBA-D05FB0B80803}.Release|Any CPU.Build.0 = Release|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.Build.0 = Debug|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -39,6 +35,10 @@ Global {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Debug|Any CPU.Build.0 = Debug|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.Build.0 = Release|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SunSharp.sln.DotSettings.user b/SunSharp.sln.DotSettings.user index 8b196b1..c0fdfe4 100644 --- a/SunSharp.sln.DotSettings.user +++ b/SunSharp.sln.DotSettings.user @@ -1,9 +1,26 @@  True + C:\Users\qcv846\AppData\Local\Temp\JetBrains\ReSharperPlatformVs17\vAny_625c2bcd\CoverageData\_SunSharp.-1442946053\Snapshot\snapshot.utdcvr + + + + + + True True True True + <SessionState ContinuousTestingMode="3" IsActive="True" Name="All tests from &lt;SunSharp.UnitTests&gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <And> + <Namespace>SunSharp.Tests</Namespace> + <Project Location="C:\10percent\SunSharp\SunSharp.Tests" Presentation="&lt;SunSharp.Tests&gt;" /> + </And> +</SessionState> + + <SessionState ContinuousTestingMode="3" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> + <Solution /> +</SessionState> True True True diff --git a/SunSharp/Data/ControllerData.cs b/SunSharp/Data/ControllerData.cs index 27d3bf1..ee57482 100644 --- a/SunSharp/Data/ControllerData.cs +++ b/SunSharp/Data/ControllerData.cs @@ -5,16 +5,24 @@ public class ControllerData : IDeepCopyable public int Id { get; set; } public string Name { get; set; } = string.Empty; public int Value { get; set; } + public int Offset { get; set; } + public int MinValue { get; set; } + public int MaxValue { get; set; } + public int Group { get; set; } public ControllerType ControllerType { get; set; } public ControllerData DeepCopy() { var clone = new ControllerData { - Id = this.Id, - Name = this.Name, - Value = this.Value, - ControllerType = this.ControllerType + Id = Id, + Name = Name, + Value = Value, + MinValue = MinValue, + MaxValue = MaxValue, + Offset = Offset, + Group = Group, + ControllerType = ControllerType }; return clone; } diff --git a/SunSharp/Data/DataReader.cs b/SunSharp/Data/DataReader.cs index 06cfe55..eef47c5 100644 --- a/SunSharp/Data/DataReader.cs +++ b/SunSharp/Data/DataReader.cs @@ -18,89 +18,94 @@ public static SongData ReadSongData(ISunVoxLib lib, int slotId) return lib.RunInLock(slotId, () => ReadSongDataInternal(lib, slotId)); } - internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slot) + internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slotId) { - var modules = ReadModules(lib, slot); - var patterns = ReadPatterns(lib, slot); + var modules = ReadModules(lib, slotId); + var patterns = ReadPatterns(lib, slotId); var songData = new SongData { + Name = lib.GetSongName(slotId), + TPL = lib.GetSongTpl(slotId), + BPM = lib.GetSongBpm(slotId), + + Lines = lib.GetSongLengthInLines(slotId), + CurrentLine = lib.GetCurrentLine(slotId), + FirstLine = patterns.Length == 0 ? 0 : patterns.Min(p => p.Position.X), + LastLine = patterns.Length == 0 ? 0 : patterns.Max(p => p.Position.X + p.Lines), + Modules = modules, - Patterns = patterns, - BPM = lib.GetSongBpm(slot), - CurrentLine = lib.GetCurrentLine(slot), - FirstLine = patterns.Min(p => p.Position.X), - Frames = lib.GetSongLengthInFrames(slot), - HasDynamicTempo = patterns.Any(p => p.HasDynamicTempo), - IsDestructive = patterns.Any(p => p.IsDestructive), - IsLinear = patterns.All(p => p.IsLinear), - LastLine = patterns.Max(p => p.Position.X + p.Lines), - Lines = lib.GetSongLengthInLines(slot), - Name = lib.GetSongName(slot), - TPL = lib.GetSongTpl(slot) + Patterns = patterns }; return songData; } #region module data - internal static ModuleData[] ReadModules(ISunVoxLib lib, int slot) + internal static ModuleData[] ReadModules(ISunVoxLib lib, int slotId) { - var moduleCount = lib.GetUpperModuleCount(slot); + var moduleCount = lib.GetUpperModuleCount(slotId); var modules = new List(moduleCount); for (var i = 0; i < moduleCount; i++) { - if (!lib.GetModuleExists(slot, i)) + if (!lib.GetModuleExists(slotId, i)) continue; - var m = ReadModule(lib, slot, i); + var m = ReadModule(lib, slotId, i); modules.Add(m); } return modules.ToArray(); } - internal static ModuleData ReadModule(ISunVoxLib lib, int slot, int moduleId) + internal static ModuleData ReadModule(ISunVoxLib lib, int slotId, int moduleId) { - var flags = lib.GetModuleFlags(slot, moduleId); + var flags = lib.GetModuleFlags(slotId, moduleId); - var controllerCount = lib.GetModuleControllerCount(slot, moduleId); + var controllerCount = lib.GetModuleControllerCount(slotId, moduleId); var controllers = new ControllerData[controllerCount]; for (var controllerId = 0; controllerId < controllerCount; controllerId++) { - var controllerData = ReadControllerData(lib, slot, moduleId, controllerId); + var controllerData = ReadControllerData(lib, slotId, moduleId, controllerId); controllers[controllerId] = controllerData; } - var moduleData = new ModuleData() + var moduleData = new ModuleData { - Bypass = flags.Bypass, - Color = lib.GetModuleColor(slot, moduleId), - Controllers = controllers, - FineTune = lib.GetModuleFineTune(slot, moduleId), Id = moduleId, - Inputs = lib.GetModuleInputs(slot, moduleId), - Mute = flags.Mute, - Name = lib.GetModuleName(slot, moduleId), - Outputs = lib.GetModuleOutputs(slot, moduleId), - Position = lib.GetModulePosition(slot, moduleId), - Solo = flags.Solo + Name = lib.GetModuleName(slotId, moduleId), + Type = lib.GetModuleType(slotId, moduleId), + + Position = lib.GetModulePosition(slotId, moduleId), + Color = lib.GetModuleColor(slotId, moduleId), + FineTune = lib.GetModuleFineTune(slotId, moduleId), + Flags = flags, + Controllers = controllers, + + Inputs = lib.GetModuleInputs(slotId, moduleId), + Outputs = lib.GetModuleOutputs(slotId, moduleId) }; return moduleData; } #region controller data - internal static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int moduleId, int controllerId) + internal static ControllerData ReadControllerData(ISunVoxLib lib, int slotId, int moduleId, int controllerId) { var controllerData = new ControllerData { Id = controllerId, - Name = lib.GetModuleControllerName(slot, moduleId, controllerId) ?? "undefined", - Value = lib.GetModuleControllerValue(slot, moduleId, controllerId, ValueScalingMode.Real), - ControllerType = lib.GetModuleControllerType(slot, moduleId, controllerId) + Name = lib.GetModuleControllerName(slotId, moduleId, controllerId) ?? "undefined", + + Value = lib.GetModuleControllerValue(slotId, moduleId, controllerId, ValueScalingMode.Real), + MinValue = lib.GetModuleControllerMinValue(slotId, moduleId, controllerId, ValueScalingMode.Real), + MaxValue = lib.GetModuleControllerMaxValue(slotId, moduleId, controllerId, ValueScalingMode.Real), + Offset = lib.GetModuleControllerOffset(slotId, moduleId, controllerId), + + ControllerType = lib.GetModuleControllerType(slotId, moduleId, controllerId), + Group = lib.GetModuleControllerGroup(slotId, moduleId, controllerId) }; return controllerData; } @@ -111,26 +116,27 @@ internal static ControllerData ReadControllerData(ISunVoxLib lib, int slot, int #region pattern data - internal static PatternData[] ReadPatterns(ISunVoxLib lib, int slot) + internal static PatternData[] ReadPatterns(ISunVoxLib lib, int slotId) { - var patternCount = lib.GetUpperPatternCount(slot); + var patternCount = lib.GetUpperPatternCount(slotId); var patterns = new List(patternCount); for (var i = 0; i < patternCount; i++) { - if (!lib.GetPatternExists(slot, i)) + if (!lib.GetPatternExists(slotId, i)) continue; - var p = ReadPatternData(lib, slot, i); + var p = ReadPattern(lib, slotId, i); patterns.Add(p); } return patterns.ToArray(); } - internal static PatternData ReadPatternData(ISunVoxLib lib, int slot, int patternId) + internal static PatternData ReadPattern(ISunVoxLib lib, int slotId, int patternId) { - var data = lib.GetPatternData(slot, patternId) ?? Array.Empty(); + var (data, tracks, lines) = lib.GetPatternData(slotId, patternId) ?? + throw new ArgumentException($"The slot {slotId} does not exist."); var isDestructive = false; var isLinear = true; var hasDynamicTempo = false; @@ -139,24 +145,24 @@ internal static PatternData ReadPatternData(ISunVoxLib lib, int slot, int patter { isDestructive = @event.Effect.IsDestructive() || isDestructive; isLinear = isLinear && !@event.Effect.IsNonLinear(); - hasDynamicTempo = hasDynamicTempo || @event.Effect.ModifiesTime(); + hasDynamicTempo = hasDynamicTempo || @event.Effect.ChangesTempo(); } - var muted = lib.SetPatternMute(slot, patternId, false); - lib.SetPatternMute(slot, patternId, muted); - - var patternData = new PatternData() + var patternData = new PatternData { - Data = data, - HasDynamicTempo = hasDynamicTempo, Id = patternId, + Name = lib.GetPatternName(slotId, patternId), + + HasDynamicTempo = hasDynamicTempo, IsDestructive = isDestructive, IsLinear = isLinear, - IsMuted = muted, - Lines = lib.GetPatternLines(slot, patternId), - Name = lib.GetPatternName(slot, patternId), - Position = lib.GetPatternPosition(slot, patternId), - Tracks = lib.GetPatternTracks(slot, patternId) + IsMuted = lib.GetPatternMuted(slotId, patternId), + + Position = lib.GetPatternPosition(slotId, patternId), + Lines = lines, + Tracks = tracks, + + Data = data }; return patternData; } diff --git a/SunSharp/Data/ModuleData.cs b/SunSharp/Data/ModuleData.cs index acf0ffc..2bd4f61 100644 --- a/SunSharp/Data/ModuleData.cs +++ b/SunSharp/Data/ModuleData.cs @@ -8,13 +8,12 @@ public sealed class ModuleData : IDeepCopyable { public int Id { get; set; } public string? Name { get; set; } + public string? Type { get; set; } public (int X, int Y) Position { get; set; } = (0, 0); public FineTunePair FineTune { get; set; } - public bool Solo { get; set; } - public bool Mute { get; set; } - public bool Bypass { get; set; } - public (int r, int g, int b) Color { get; set; } = (0, 0, 0); + public (byte r, byte g, byte b) Color { get; set; } = (0, 0, 0); public ICollection Controllers { get; set; } = Array.Empty(); + public uint Flags { get; set; } public ICollection Inputs { get; set; } = Array.Empty(); public ICollection Outputs { get; set; } = Array.Empty(); @@ -22,17 +21,16 @@ public ModuleData DeepCopy() { var copy = new ModuleData { - Id = this.Id, - Name = this.Name, - Position = this.Position, - FineTune = this.FineTune, - Solo = this.Solo, - Mute = this.Mute, - Bypass = this.Bypass, - Color = this.Color, - Controllers = this.Controllers.Select(c => c.DeepCopy()).ToArray(), - Inputs = this.Inputs.Select(i => i).ToArray(), - Outputs = this.Outputs.Select(o => o).ToArray() + Id = Id, + Name = Name, + Type = Type, + Position = Position, + FineTune = FineTune, + Flags = Flags, + Color = Color, + Controllers = Controllers.Select(c => c.DeepCopy()).ToArray(), + Inputs = Inputs.Select(i => i).ToArray(), + Outputs = Outputs.Select(o => o).ToArray() }; return copy; diff --git a/SunSharp/Data/PatternData.cs b/SunSharp/Data/PatternData.cs index c1bd31f..0522b15 100644 --- a/SunSharp/Data/PatternData.cs +++ b/SunSharp/Data/PatternData.cs @@ -19,18 +19,18 @@ public class PatternData : IDeepCopyable public PatternData DeepCopy() { - var copy = new PatternData() + var copy = new PatternData { - Id = this.Id, - Name = this.Name, - Position = this.Position, - Lines = this.Lines, - Tracks = this.Tracks, - IsMuted = this.IsMuted, - IsLinear = this.IsLinear, - IsDestructive = this.IsDestructive, - HasDynamicTempo = this.HasDynamicTempo, - Data = this.Data.Select(e => e).ToArray() + Id = Id, + Name = Name, + Position = Position, + Lines = Lines, + Tracks = Tracks, + IsMuted = IsMuted, + IsLinear = IsLinear, + IsDestructive = IsDestructive, + HasDynamicTempo = HasDynamicTempo, + Data = Data.Select(e => e).ToArray() }; return copy; } diff --git a/SunSharp/Data/SongData.cs b/SunSharp/Data/SongData.cs index f9b2fb6..48f7efd 100644 --- a/SunSharp/Data/SongData.cs +++ b/SunSharp/Data/SongData.cs @@ -9,34 +9,30 @@ public class SongData : IDeepCopyable public string? Name { get; set; } public int BPM { get; set; } public int TPL { get; set; } - public int Frames { get; set; } public int Lines { get; set; } public int CurrentLine { get; set; } public int FirstLine { get; set; } public int LastLine { get; set; } - public bool IsLinear { get; set; } - public bool IsDestructive { get; set; } - public bool HasDynamicTempo { get; set; } public ICollection Modules { get; set; } = Array.Empty(); public ICollection Patterns { get; set; } = Array.Empty(); + public bool IsLinear => Patterns.All(p => p.IsLinear); + public bool IsDestructive => Patterns.Any(p => p.IsDestructive); + public bool HasDynamicTempo => Patterns.Any(p => p.HasDynamicTempo); + public SongData DeepCopy() { - var copy = new SongData() + var copy = new SongData { - Name = this.Name, - BPM = this.BPM, - TPL = this.TPL, - Frames = this.Frames, - Lines = this.Lines, - CurrentLine = this.CurrentLine, - FirstLine = this.FirstLine, - LastLine = this.LastLine, - IsLinear = this.IsLinear, - IsDestructive = this.IsDestructive, - HasDynamicTempo = this.HasDynamicTempo, - Modules = this.Modules.Select(m => m.DeepCopy()).ToArray(), - Patterns = this.Patterns.Select(p => p.DeepCopy()).ToArray() + Name = Name, + BPM = BPM, + TPL = TPL, + Lines = Lines, + CurrentLine = CurrentLine, + FirstLine = FirstLine, + LastLine = LastLine, + Modules = Modules.Select(m => m.DeepCopy()).ToArray(), + Patterns = Patterns.Select(p => p.DeepCopy()).ToArray() }; return copy; } diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs index fc4774e..b8e3307 100644 --- a/SunSharp/Effects.cs +++ b/SunSharp/Effects.cs @@ -46,7 +46,7 @@ public enum Effect : byte GeneratePolyrhythm = 0x3A, CopyTrackToPattern = 0x3B, CopyTrackFromPattern = 0x3C, - WriteRandomValue = 0x3D, + WriteRandomValue = 0x3D } public static class EffectExtensions @@ -68,7 +68,7 @@ public static bool IsDestructive(this Effect effect) || effect == Effect.WriteRandomValue; } - public static bool ModifiesTime(this Effect effect) + public static bool ChangesTempo(this Effect effect) { return effect == Effect.SetBpm || effect == Effect.SetPlayingSpeed; diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 6135ba4..1290a67 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; namespace SunSharp { @@ -6,7 +7,7 @@ public enum AudioChannel { Mono = 0, Left = Mono, - Right = 1, + Right = 1 } public enum AudioChannels @@ -32,25 +33,25 @@ public enum Column public enum TimeMapType { Speed = Constants.SV_TIME_MAP_SPEED, - FrameCount = Constants.SV_TIME_MAP_FRAMECNT, + FrameCount = Constants.SV_TIME_MAP_FRAMECNT } public enum ValueScalingMode { Real = 0, Column = 1, - Displayed = 2, + Displayed = 2 } public enum ControllerType { Real = 0, - Enum = 1, + Enum = 1 } [Flags] - [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", - Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] + [SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", + Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] public enum InitFlags : uint { Default = 0, @@ -66,20 +67,20 @@ public enum InitFlags : uint UserAudioCallback = Constants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, /// - /// Sets the format which must be used with sv_audio_callback to . - /// May not apply without . Mutually exclusive with . + /// Sets the format which must be used with sv_audio_callback to . + /// May not apply without . Mutually exclusive with . /// AudioInt16 = Constants.SV_INIT_FLAG_AUDIO_INT16, /// - /// Sets the format which must be used with sv_audio_callback to . - /// May not apply without . Mutually exclusive with . + /// Sets the format which must be used with sv_audio_callback to . + /// May not apply without . Mutually exclusive with . /// AudioFloat32 = Constants.SV_INIT_FLAG_AUDIO_FLOAT32, /// /// Audio callback and other methods will be called from one thread. - /// Applies if is set. + /// Applies if is set. /// OneThread = Constants.SV_INIT_FLAG_ONE_THREAD } diff --git a/SunSharp/FineTune.cs b/SunSharp/FineTunePair.cs similarity index 62% rename from SunSharp/FineTune.cs rename to SunSharp/FineTunePair.cs index 5dd515b..f899dd9 100644 --- a/SunSharp/FineTune.cs +++ b/SunSharp/FineTunePair.cs @@ -3,18 +3,25 @@ namespace SunSharp { [Serializable] - public struct FineTunePair + public struct FineTunePair : IEquatable { public short FineTune { get; set; } public short RelativeNote { get; set; } + public readonly uint Value => Helper.PackTwoSignedShorts(FineTune, RelativeNote); + public FineTunePair(short fineTune, short relativeNote) { FineTune = fineTune; RelativeNote = relativeNote; } - public override readonly bool Equals(object obj) + public FineTunePair(uint value) + { + (FineTune, RelativeNote) = Helper.UnpackTwoSignedShorts(value); + } + + public readonly override bool Equals(object? obj) { if (obj is FineTunePair other) return Equals(other); @@ -27,14 +34,14 @@ public readonly bool Equals(FineTunePair other) return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public override readonly int GetHashCode() + public readonly override int GetHashCode() { return HashCode.Combine(FineTune, RelativeNote); } - public override readonly string ToString() + public readonly override string ToString() { - return $"FineTune: fine-tune: {FineTune}, relative note: {RelativeNote}"; + return $"Fine-tune: {FineTune}, relative note: {RelativeNote}."; } public static bool operator ==(FineTunePair left, FineTunePair right) @@ -44,7 +51,7 @@ public override readonly string ToString() public static bool operator !=(FineTunePair left, FineTunePair right) { - return !(left == right); + return !left.Equals(right); } } } diff --git a/SunSharp/Helper.cs b/SunSharp/Helper.cs index fd63109..a83ba54 100644 --- a/SunSharp/Helper.cs +++ b/SunSharp/Helper.cs @@ -17,16 +17,12 @@ public static short ToShortBitwise(uint value) public static int[] CopyIntArraySkipNegativeOnes(IntPtr address, int count) { if (address == IntPtr.Zero) - { return Array.Empty(); - } var nonZeroValues = 0; for (var i = 0; i < count; i++) - { if (Marshal.ReadInt32(address, i * sizeof(int)) != -1) nonZeroValues++; - } var arr = new int[nonZeroValues]; @@ -46,26 +42,19 @@ public static int[] CopyIntArraySkipNegativeOnes(IntPtr address, int count) #region macros - // this code is translated from sunvox.h + // this code is translated from sunvox.h, adapted to C# - /// - /// Get x, y position from one xy value received from sv_get_module_xy(int, int). - /// - public static (short x, short y) SplitValueTo2DPosition(uint xy) + // use to split position and fine-tune + public static (short lowerBytes, short upperBytes) UnpackTwoSignedShorts(uint value) { - var x = xy & 0xFFFF; - var y = (xy >> 16) & 0xFFFF; - return (ToShortBitwise(x), ToShortBitwise(y)); + var x = value & 0xFFFF; + var y = (value >> 16) & 0xFFFF; + return (unchecked((short)x), unchecked((short)y)); } - /// - /// Get fine-tune and relative note value from packed fine-tune value received from sv_get_module_finetune(int, int). - /// - public static (short fineTune, short relativeNote) SplitValueToFineTune(uint packedFineTune) + public static uint PackTwoSignedShorts(short lowerBytes, short upperBytes) { - var outFineTune = packedFineTune & 0xFFFF; - var outRelativeNote = (packedFineTune >> 16) & 0xFFFF; - return (ToShortBitwise(outFineTune), ToShortBitwise(outRelativeNote)); + return unchecked((ushort)lowerBytes) | ((uint)upperBytes << 16); } public static float PitchToFrequency(float pitch) diff --git a/SunSharp/ISunVoxLib.Modules.cs b/SunSharp/ISunVoxLib.Modules.cs index cdefdff..668ceed 100644 --- a/SunSharp/ISunVoxLib.Modules.cs +++ b/SunSharp/ISunVoxLib.Modules.cs @@ -4,24 +4,21 @@ public partial interface ISunVoxLib { /// /// Connect two specified modules. - /// Use or an alternative! + /// Use or an alternative! /// - /// void ConnectModule(int slotId, int source, int destination); /// /// Disconnect two specified modules. - /// Use or an alternative! + /// Use or an alternative! /// - /// void DisconnectModule(int slotId, int source, int destination); /// /// Find module by name. /// - /// Id of found module, -1 if it was not found. - /// - int FindModule(int slotId, string name); + /// Id of found module, or if it was not found. + int? FindModule(int slotId, string name); (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId); @@ -45,9 +42,11 @@ public partial interface ISunVoxLib int GetModuleControllerGroup(int slotId, int moduleId, int controllerId); /// - /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce latency). + /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce + /// latency). /// - void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode); + void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, + ValueScalingMode scalingMode); FineTunePair GetModuleFineTune(int slotId, int moduleId); @@ -82,7 +81,7 @@ public partial interface ISunVoxLib /// Read module scope view, and write it to a buffer. /// /// Number of samples successfully read. - int ReadModuleScope(int slotId, int moduleId, int channel, short[] buffer); + int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer); (int x, int y) GetModulePosition(int slotId, int moduleId); @@ -91,7 +90,6 @@ public partial interface ISunVoxLib /// /// Get the upper module count, which may be greater than the module count. /// - /// int GetUpperModuleCount(int slotId); int GetModuleControllerCount(int slotId, int moduleId); @@ -100,14 +98,12 @@ public partial interface ISunVoxLib /// load a module or a sample. Supported file formats: sunsynth, xi, wav, aiff. /// /// CreatedmoduleId Id. - /// int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0); /// /// load a module or a sample from memory. Supported file formats: sunsynth, xi, wav, aiff. /// /// Created module id. - /// int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0); int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data); @@ -116,55 +112,47 @@ public partial interface ISunVoxLib /// /// Create a new module. Type refers to the name visible on new module creation window. - /// Use or an alternative! + /// Use or an alternative! /// /// Created module id. - /// int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, int z = 0); /// /// Remove an existing module. - /// Use or an alternative! + /// Use or an alternative! /// - /// void RemoveModule(int slotId, int moduleId); /// /// Load a sample (xi, wav, aiff) to an existing module from file. - /// Set to -1 to apply the sample to all sample slots. + /// Set to -1 to apply the sample to all sample slots. /// - /// void LoadSamplerSample(int slotId, int moduleId, string path, int sampleSlot = -1); /// /// Load a sample (xi, wav, aiff) to an existing module from memory. - /// Set to -1 to apply the sample to all sample slots. + /// Set to -1 to apply the sample to all sample slots. /// - /// void LoadSamplerSample(int slotId, int moduleId, byte[] data, int sampleSlot = -1); /// /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. /// - /// void LoadIntoMetaModule(int slotId, int moduleId, string path); /// /// load a file into the MetaModule from memory. Supported file formats: sunvox, mod, xm, midi. /// - /// void LoadIntoMetaModule(int slotId, int moduleId, byte[] data); /// /// load a file into the Vorbis Player. Supported file formats: ogg. /// - /// void LoadIntoVorbisPLayer(int slotId, int moduleId, string path); /// /// load a file into the Vorbis Player. Supported file formats: ogg. /// - /// void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data); } } diff --git a/SunSharp/ISunVoxLib.Patterns.cs b/SunSharp/ISunVoxLib.Patterns.cs index 323f742..54456ad 100644 --- a/SunSharp/ISunVoxLib.Patterns.cs +++ b/SunSharp/ISunVoxLib.Patterns.cs @@ -3,38 +3,42 @@ public partial interface ISunVoxLib { /// - /// Use or an alternative! + /// Create a new pattern.
+ /// Use or an alternative! ///
- /// - int CreatePattern(int slotId, int? patternToCloneId, int x, int y, int tracks, int lines, int? iconSeed, string? name); + int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null); /// - /// Use or an alternative! + /// Clone a pattern.
+ /// Use or an alternative! + ///
+ int ClonePattern(int slotId, int originalPatternId, int x, int y); + + /// + /// Delete a pattern.
+ /// Deleting the original pattern also deletes all clones.
+ /// Use or an alternative! ///
- /// void RemovePattern(int slotId, int patternId); /// /// Get the upper pattern count, which may be greater than the actual pattern count. /// - /// int GetUpperPatternCount(int slotId); /// /// Find pattern by name. /// - /// Pattern Id, or -1 if pattern was not found. - /// - int FindPattern(int slotId, string name); + /// Pattern Id, or if pattern was not found. + int? FindPattern(int slotId, string name); int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column); string? GetPatternName(int slotId, int patternId); /// - /// Use or an alternative! + /// Use or an alternative! /// - /// void SetPatternName(int slotId, int patternId, string name); bool GetPatternExists(int slotId, int patternId); @@ -44,10 +48,9 @@ public partial interface ISunVoxLib int GetPatternTracks(int slotId, int patternId); /// - /// Use or an alternative! + /// Use or an alternative! /// - void SetPatternSize(int slotId, int patternId, int? tracks = null, - int? lines = null); + void SetPatternSize(int slotId, int patternId, int? tracks = null, int? lines = null); (int x, int y) GetPatternPosition(int slotId, int patternId); @@ -56,29 +59,76 @@ void SetPatternSize(int slotId, int patternId, int? tracks = null, int GetPatternY(int slotId, int patternId); /// - /// Use or an alternative! + /// Use or an alternative! /// - /// void SetPatternPosition(int slotId, int patternId, int x, int y); /// - /// Use or an alternative! + /// Use or an alternative! + /// + (PatternEvent[] data, int tracks, int lines)? GetPatternData(int slotId, int patternId); + + /// + /// Resizes the pattern and sets the pattern event data. Throws an exception if the pattern does not exist. + ///
+ /// Use or an alternative! + ///
+ void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines); + + /// + /// Allows to read a section or all of pattern data into a buffer. + ///
+ /// Use or an alternative! + ///
+ /// + /// + /// + /// Width of the buffer. + /// Height of the buffer. + /// Count of tracks in the buffer to be skipped. + /// Count of lines in the buffer to be skipped. + /// Count of tracks in the pattern to be skipped. + /// Count of lines in the pattern to be skipped. + /// Upper limit of tracks to be read. + /// Upper limit of lines to be read. + /// Number of read events. + public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, + int? maxTracks = null, int? maxLines = null); + + /// + /// Allows to write a section or all of a buffer into pattern data. + ///
+ /// Use or an alternative! ///
- PatternEvent[]? GetPatternData(int slotId, int patternId); + /// + /// + /// + /// Width of the buffer. + /// Height of the buffer. + /// Count of tracks in the buffer to be skipped. + /// Count of lines in the buffer to be skipped. + /// Count of tracks in the pattern to be skipped. + /// Count of lines in the pattern to be skipped. + /// Upper limit of tracks to be written. + /// Upper limit of lines to be written. + /// Number of written events. + public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int writeOffsetTracks = 0, int writeOffsetLines = 0, + int? maxTracks = null, int? maxLines = null); /// - /// Use or an alternative! + /// Use or an alternative! /// - /// - void SetPatternData(int slotId, int patternId, PatternEvent[] data); + void SetPatternMuted(int slotId, int patternId, bool muted); /// - /// Use or an alternative! + /// Use or an alternative! /// - /// - bool SetPatternMute(int slotId, int patternId, bool muted); + bool GetPatternMuted(int slotId, int patternId); - void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, + int xxyy); void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev); } diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/ISunVoxLib.cs index e57b863..c9a0f6f 100644 --- a/SunSharp/ISunVoxLib.cs +++ b/SunSharp/ISunVoxLib.cs @@ -6,11 +6,15 @@ public partial interface ISunVoxLib /// Initialize the engine. May be called again to re-initialize the engine. /// /// Sample rate. If not using audio callback, may be set to -1. - /// Configuration, which may include input and output devices. See SunVox Lib documentation for details. + /// + /// Configuration, which may include input and output devices. See SunVox Lib documentation for + /// details. + /// /// Channels to be used. /// Initialization flags. /// The version of underlying library. - LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default); + LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, + InitFlags flags = InitFlags.Default); /// /// Deinitializes the library, frees resources. @@ -18,53 +22,57 @@ public partial interface ISunVoxLib void Deinitialize(); /// - /// Get first characters of engine logs. + /// Get first characters of engine logs. /// /// Character count to be read. /// string? GetLog(int size); /// - /// Use this method to get the current tick counter (from 0 to 0xFFFFFFFF).
+ /// Use this method to get the current tick counter (from 0 to 0xFFFFFFFF).
/// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
/// uint GetTicks(); /// - /// Use this method to get the number of system ticks per second.
+ /// Use this method to get the number of system ticks per second.
/// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
/// uint GetTicksPerSecond(); + /// + /// Get the current sample rate. + /// + /// int GetSampleRate(); /// - /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the module creation).
+ /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the module + /// creation).
/// Call it from the main thread only, where the SunVox sound stream is not locked. ///
- /// void UpdateInputDevices(); /// - /// Get the next piece of audio.
+ /// Get the next piece of audio.
/// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. ///
/// Buffer to write sound data to. /// Channels the library was initialized with. /// Audio latency (in frames). /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. + /// if buffer was filled with zeros. bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime); /// - /// Get the next piece of audio.
+ /// Get the next piece of audio.
/// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// Sends equal size buffer of an input device, which will be applied to any modules. + /// Sends equal size buffer of an input device, which will be applied to any input modules. ///
/// Buffer to write sound data to. /// Channels the library was initialized with. @@ -72,19 +80,19 @@ public partial interface ISunVoxLib /// Input data channels. /// Audio latency (in frames). /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. + /// if buffer was filled with zeros. bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); @@ -93,8 +101,7 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// /// Get current behaviour for reaching the end of project timeline. /// - /// if project is stopped after reaching the end. - /// + /// if project is set to stop after reaching the end. bool GetAutostop(int slotId); /// @@ -125,13 +132,13 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, int GetSongBpm(int slotId); /// - /// Get the the project length in frames.
+ /// Get the the project length in frames.
/// A frame is a pair of audio signal samples (left and right channel amplitudes). /// The sample rate 44100 Hz means that you hear 44100 frames per second. ///
/// /// - int GetSongLengthInFrames(int slotId); + uint GetSongLengthInFrames(int slotId); /// /// Get the the project length in frames or lines. @@ -159,7 +166,6 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, void Save(int slotId, string path); /// - /// /// /// /// @@ -169,11 +175,17 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); /// - /// Set the timestamp of events to be sent.
- /// Every event you send has a timestamp - this is the time when the event was generated (for example, when a key was pressed).
- /// If is zero, the event will be heard as soon as possible, which is delayed by double the sound latency.
- /// If is nonzero, the event will be additionally delayed by this many ticks.
- /// See also: . + /// Set the timestamp of events to be sent. + ///
+ /// Every event you send has a timestamp - this is the time when the event was generated (for example, when a key was + /// pressed). + ///
+ /// If is zero, the event will be heard as soon as possible, which is delayed by double the sound + /// latency. + ///
+ /// If is nonzero, the event will be additionally delayed by this many ticks. + ///
+ /// See also: . ///
/// /// @@ -181,20 +193,22 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0); /// - /// Get and set volume. Call with = -1 to only get the value. + /// Get and set volume. Call with = -1 to only get the value. /// /// /// Value in range 0-256. /// Previous volume in range 0-256. - /// int Volume(int slotId, int volume); /// /// Get the project time map. - /// For = , Nth value equals speed at the beginning of Nth line (Bpm | Tpl << 16). - /// For = , Nth value equals frame counter at the beginning of Nth line. + ///
+ /// For = , Nth value equals speed at the beginning of Nth + /// line (Bpm | Tpl << 16). + ///
+ /// For = , Nth value equals frame counter at the + /// beginning of Nth line. ///
- /// uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type); /// @@ -207,19 +221,18 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// /// Load a project from memory. /// - /// void Load(int slotId, byte[] data); /// - /// Open sound slot. Each slot can contain one independent implementation of the SunVox engine. + /// Open slot. Each slot can contain one independent implementation of the SunVox engine. /// You can use several slots simultaneously (for example, one slot for music and another for effects). - /// Max number of slots = 16. + /// Max number of slots: 16. /// /// A value between 0 and 15. void OpenSlot(int slotId); /// - /// Close sound slot. + /// Close the slot. /// /// void CloseSlot(int slotId); @@ -227,15 +240,13 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// /// Enter a lock block. /// Use to send multiple events at the same time, read or write data from multiple threads. - /// Remember to call ! + /// Remember to call ! /// - /// void LockSlot(int slotId); /// /// Leave a lock block. /// - /// void UnlockSlot(int slotId); /// @@ -249,57 +260,43 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// First call - stop playing; second call - reset all SunVox activity and switch the engine to standby mode. /// /// - void StopPlayback(int slotId); - - // TODO confirm name + void StopPlayback(int slotId); // TODO confirm name /// /// Start playing the project from the current position. /// /// - void StartPlayback(int slotId); - - // TODO confirm name + void StartPlayback(int slotId); // TODO confirm name /// /// Start playing the project from the beginning (line 0). /// /// - void StartPlaybackFromBeginning(int slotId); - - // TODO confirm name + void StartPlaybackFromBeginning(int slotId); // TODO confirm name /// /// Jump to the specified position (line number on the timeline). /// /// /// - void Rewind(int slotId, int line); - - // TODO confirm name + void Rewind(int slotId, int line); // TODO confirm name /// /// Pause the audio stream on the specified slot. /// /// - void PauseStream(int slotId); - - // TODO confirm name + void PauseStream(int slotId); // TODO confirm name /// /// Resume the audio stream on the specified slot. /// /// - void ResumeStream(int slotId); - - // TODO confirm name + void ResumeStream(int slotId); // TODO confirm name /// /// Wait for sync (pattern effect 0x33 on any slot) and resume the audio stream on the specified slot. /// /// - void ResumeStreamOnSyncEffect(int slotId); - - // TODO confirm name + void ResumeStreamOnSyncEffect(int slotId); // TODO confirm name } } diff --git a/SunSharp/LibraryVersion.cs b/SunSharp/LibraryVersion.cs index 6e0c08d..c073df2 100644 --- a/SunSharp/LibraryVersion.cs +++ b/SunSharp/LibraryVersion.cs @@ -22,6 +22,9 @@ public LibraryVersion(int code) Minor2 = (byte)(code & 255); } - public override string ToString() => $"SunVox Lib v{Major}.{Minor}.{Minor2}"; + public override string ToString() + { + return $"SunVox Lib v{Major}.{Minor}.{Minor2}"; + } } } diff --git a/SunSharp/ModuleFlags.cs b/SunSharp/ModuleFlags.cs index ebcfb52..782db71 100644 --- a/SunSharp/ModuleFlags.cs +++ b/SunSharp/ModuleFlags.cs @@ -2,17 +2,17 @@ { public readonly struct ModuleFlags { - private const uint SV_MODULE_FLAG_EXISTS = 1 << 0; - private const uint SV_MODULE_FLAG_GENERATOR = 1 << 1; - private const uint SV_MODULE_FLAG_EFFECT = 1 << 2; - private const uint SV_MODULE_FLAG_MUTE = 1 << 3; - private const uint SV_MODULE_FLAG_SOLO = 1 << 4; - private const uint SV_MODULE_FLAG_BYPASS = 1 << 5; - - private const int SV_MODULE_INPUTS_OFF = 16; - private const uint SV_MODULE_INPUTS_MASK = 255u << 16; - private const int SV_MODULE_OUTPUTS_OFF = 16 + 8; - private const uint SV_MODULE_OUTPUTS_MASK = 255u << 16 + 8; + internal const uint SV_MODULE_FLAG_EXISTS = 1 << 0; + internal const uint SV_MODULE_FLAG_GENERATOR = 1 << 1; + internal const uint SV_MODULE_FLAG_EFFECT = 1 << 2; + internal const uint SV_MODULE_FLAG_MUTE = 1 << 3; + internal const uint SV_MODULE_FLAG_SOLO = 1 << 4; + internal const uint SV_MODULE_FLAG_BYPASS = 1 << 5; + + internal const int SV_MODULE_INPUTS_OFF = 16; + internal const uint SV_MODULE_INPUTS_MASK = 255u << 16; + internal const int SV_MODULE_OUTPUTS_OFF = 16 + 8; + internal const uint SV_MODULE_OUTPUTS_MASK = 255u << (16 + 8); public uint Value { get; } diff --git a/SunSharp/Native/ISunVoxLibC.cs b/SunSharp/Native/ISunVoxLibC.cs index 5ca1104..31ad173 100644 --- a/SunSharp/Native/ISunVoxLibC.cs +++ b/SunSharp/Native/ISunVoxLibC.cs @@ -34,7 +34,8 @@ public interface ISunVoxLibC int sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time); /// - /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* in_buf) SUNVOX_FN_ATTR; + /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* + /// in_buf) SUNVOX_FN_ATTR; /// int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf); @@ -225,7 +226,8 @@ int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int i int sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot); /// - /// int sv_sampler_load_from_memory(int slot, int sampler_module, void* data, uint32_t data_size, int sample_slot) SUNVOX_FN_ATTR; + /// int sv_sampler_load_from_memory(int slot, int sampler_module, void* data, uint32_t data_size, int sample_slot) + /// SUNVOX_FN_ATTR; /// int sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot); @@ -325,7 +327,8 @@ int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int i int sv_set_module_relnote(int slot, int mod_num, int relative_note); /// - /// uint32_t sv_get_module_scope2(int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read) SUNVOX_FN_ATTR; + /// uint32_t sv_get_module_scope2(int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read) + /// SUNVOX_FN_ATTR; /// uint sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read); @@ -385,7 +388,8 @@ int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int i int sv_get_number_of_patterns(int slot); /// - /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) SUNVOX_FN_ATTR; + /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) + /// SUNVOX_FN_ATTR; /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name); @@ -445,7 +449,8 @@ int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int i IntPtr sv_get_pattern_data(int slot, int pat_num); /// - /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) SUNVOX_FN_ATTR; + /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + /// SUNVOX_FN_ATTR; /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs index 1b18313..4ba7262 100644 --- a/SunSharp/Native/Loader/LibraryHandler.cs +++ b/SunSharp/Native/Loader/LibraryHandler.cs @@ -17,7 +17,7 @@ public interface ILibraryHandler void UnloadLibrary(); /// - /// A method that returns a delegate from a function pointer, found in the loaded library by name.
+ /// A method that returns a delegate from a function pointer, found in the loaded library by name.
/// Should fail immediately if the method is not found. ///
/// diff --git a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs index 38d6130..827e0d3 100644 --- a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs +++ b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs @@ -450,103 +450,6 @@ public sealed partial class NativeProxy : ISunVoxLibC #endregion interface private void LoadInternal() - { - sv_audio_callback = null; - sv_audio_callback2 = null; - sv_close_slot = null; - sv_connect_module = null; - sv_deinit = null; - sv_disconnect_module = null; - sv_end_of_song = null; - sv_find_module = null; - sv_find_pattern = null; - sv_get_autostop = null; - sv_get_current_line = null; - sv_get_current_line2 = null; - sv_get_current_signal_level = null; - sv_get_log = null; - sv_get_module_color = null; - sv_get_module_ctl_group = null; - sv_get_module_ctl_max = null; - sv_get_module_ctl_min = null; - sv_get_module_ctl_name = null; - sv_get_module_ctl_offset = null; - sv_get_module_ctl_type = null; - sv_get_module_ctl_value = null; - sv_get_module_finetune = null; - sv_get_module_flags = null; - sv_get_module_inputs = null; - sv_get_module_name = null; - sv_get_module_outputs = null; - sv_get_module_scope2 = null; - sv_get_module_type = null; - sv_get_module_xy = null; - sv_get_number_of_module_ctls = null; - sv_get_number_of_modules = null; - sv_get_number_of_patterns = null; - sv_get_pattern_data = null; - sv_get_pattern_event = null; - sv_get_pattern_lines = null; - sv_get_pattern_name = null; - sv_get_pattern_tracks = null; - sv_get_pattern_x = null; - sv_get_pattern_y = null; - sv_get_sample_rate = null; - sv_get_song_bpm = null; - sv_get_song_length_frames = null; - sv_get_song_length_lines = null; - sv_get_song_name = null; - sv_get_song_tpl = null; - sv_get_ticks = null; - sv_get_ticks_per_second = null; - sv_get_time_map = null; - sv_init = null; - sv_load = null; - sv_load_from_memory = null; - sv_load_module = null; - sv_load_module_from_memory = null; - sv_lock_slot = null; - sv_metamodule_load = null; - sv_metamodule_load_from_memory = null; - sv_module_curve = null; - sv_new_module = null; - sv_new_pattern = null; - sv_open_slot = null; - sv_pattern_mute = null; - sv_pause = null; - sv_play = null; - sv_play_from_beginning = null; - sv_remove_module = null; - sv_remove_pattern = null; - sv_resume = null; - sv_rewind = null; - sv_sampler_load = null; - sv_sampler_load_from_memory = null; - sv_save = null; - sv_send_event = null; - sv_set_autostop = null; - sv_set_event_t = null; - sv_set_module_color = null; - sv_set_module_ctl_value = null; - sv_set_module_finetune = null; - sv_set_module_name = null; - sv_set_module_relnote = null; - sv_set_module_xy = null; - sv_set_pattern_event = null; - sv_set_pattern_name = null; - sv_set_pattern_size = null; - sv_set_pattern_xy = null; - sv_set_song_name = null; - sv_stop = null; - sv_sync_resume = null; - sv_unlock_slot = null; - sv_update_input = null; - sv_volume = null; - sv_vplayer_load = null; - sv_vplayer_load_from_memory = null; - } - - private void UnloadInternal() { sv_audio_callback = (ReturnsIntTakesIntPtrIntIntUint)_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsIntTakesIntPtrIntIntUint)); sv_audio_callback2 = (ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)); @@ -642,5 +545,102 @@ private void UnloadInternal() sv_vplayer_load = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsIntTakesIntIntIntPtr)); sv_vplayer_load_from_memory = (ReturnsIntTakesIntIntIntPtrUint)_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUint)); } + + private void UnloadInternal() + { + sv_audio_callback = null; + sv_audio_callback2 = null; + sv_close_slot = null; + sv_connect_module = null; + sv_deinit = null; + sv_disconnect_module = null; + sv_end_of_song = null; + sv_find_module = null; + sv_find_pattern = null; + sv_get_autostop = null; + sv_get_current_line = null; + sv_get_current_line2 = null; + sv_get_current_signal_level = null; + sv_get_log = null; + sv_get_module_color = null; + sv_get_module_ctl_group = null; + sv_get_module_ctl_max = null; + sv_get_module_ctl_min = null; + sv_get_module_ctl_name = null; + sv_get_module_ctl_offset = null; + sv_get_module_ctl_type = null; + sv_get_module_ctl_value = null; + sv_get_module_finetune = null; + sv_get_module_flags = null; + sv_get_module_inputs = null; + sv_get_module_name = null; + sv_get_module_outputs = null; + sv_get_module_scope2 = null; + sv_get_module_type = null; + sv_get_module_xy = null; + sv_get_number_of_module_ctls = null; + sv_get_number_of_modules = null; + sv_get_number_of_patterns = null; + sv_get_pattern_data = null; + sv_get_pattern_event = null; + sv_get_pattern_lines = null; + sv_get_pattern_name = null; + sv_get_pattern_tracks = null; + sv_get_pattern_x = null; + sv_get_pattern_y = null; + sv_get_sample_rate = null; + sv_get_song_bpm = null; + sv_get_song_length_frames = null; + sv_get_song_length_lines = null; + sv_get_song_name = null; + sv_get_song_tpl = null; + sv_get_ticks = null; + sv_get_ticks_per_second = null; + sv_get_time_map = null; + sv_init = null; + sv_load = null; + sv_load_from_memory = null; + sv_load_module = null; + sv_load_module_from_memory = null; + sv_lock_slot = null; + sv_metamodule_load = null; + sv_metamodule_load_from_memory = null; + sv_module_curve = null; + sv_new_module = null; + sv_new_pattern = null; + sv_open_slot = null; + sv_pattern_mute = null; + sv_pause = null; + sv_play = null; + sv_play_from_beginning = null; + sv_remove_module = null; + sv_remove_pattern = null; + sv_resume = null; + sv_rewind = null; + sv_sampler_load = null; + sv_sampler_load_from_memory = null; + sv_save = null; + sv_send_event = null; + sv_set_autostop = null; + sv_set_event_t = null; + sv_set_module_color = null; + sv_set_module_ctl_value = null; + sv_set_module_finetune = null; + sv_set_module_name = null; + sv_set_module_relnote = null; + sv_set_module_xy = null; + sv_set_pattern_event = null; + sv_set_pattern_name = null; + sv_set_pattern_size = null; + sv_set_pattern_xy = null; + sv_set_song_name = null; + sv_stop = null; + sv_sync_resume = null; + sv_unlock_slot = null; + sv_update_input = null; + sv_volume = null; + sv_vplayer_load = null; + sv_vplayer_load_from_memory = null; + } } } diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 408453e..48569cf 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -4,66 +4,124 @@ namespace SunSharp.Native.Loader { public sealed partial class NativeProxy { - public bool IsLoaded { get; private set; } + private readonly ILibraryHandler _handler; private readonly object _lock = new object(); - private readonly ILibraryHandler _handler; public NativeProxy(ILibraryHandler handler) { _handler = handler; + } + + public bool IsLoaded { get; private set; } - if (handler.IsLibraryLoaded) - Load(); + public bool IsLibraryLoaded + { + get + { + lock (_lock) + { + return _handler.IsLibraryLoaded; + } + } } + /// + /// Loads the library if necessary. + /// Loads the library functions and sets the IsLoaded flag. + /// Nothing will be done if the library and proxy were already loaded. + /// public void Load() { lock (_lock) { + if (IsLoaded && _handler.IsLibraryLoaded) + return; + try { if (!_handler.IsLibraryLoaded) + { + // make sure that all delegates are null, do so ASAP so we don't hard fail for any reason + // this should never matter... probably + UnloadInternal(); + + // library is loaded, so we need to reload those delegates _handler.LoadLibrary(); + LoadInternal(); + } + else if (!IsLoaded) + { + LoadInternal(); + } } catch (Exception) { _handler.UnloadLibrary(); + UnloadInternal(); throw; } - LoadInternal(); IsLoaded = true; } } + /// + /// Unloads the SunVox engine if possible. + /// Unloads the library functions and sets the IsLoaded flag. + /// Unloads the library if possible. + /// If an unexpected exception is thrown, it will be rethrown, as this is a potentially dangerous situation where + /// memory was probably leaked. + /// public void Unload() { lock (_lock) { - UnloadInternal(); - _handler.UnloadLibrary(); - IsLoaded = false; + var handlerIsLibraryLoader = _handler.IsLibraryLoaded; + + // nothing to unload + if (!IsLoaded && !handlerIsLibraryLoader) + return; + + // sunvox might need to be unloaded + if (IsLoaded && handlerIsLibraryLoader) + { + if (sv_deinit == null) + throw new InvalidOperationException( + $"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); + + sv_deinit.Invoke(); + } + + // unload delegates if applies + if (IsLoaded) + { + UnloadInternal(); + IsLoaded = false; + } + + // unload library if applies + if (handlerIsLibraryLoader) + _handler.UnloadLibrary(); } } - private Exception GetNoDelegateException() + internal Exception GetNoDelegateException() { string message; try { lock (_lock) { - if (_handler.IsLibraryLoaded && IsLoaded) - message = "Missing delegate. Library is loaded, proxy is loaded."; - else if (_handler.IsLibraryLoaded && !IsLoaded) - message = "Missing delegate. Library is loaded, proxy is not loaded."; - else if (!_handler.IsLibraryLoaded && IsLoaded) - message = "Missing delegate. Library is not loaded, proxy is loaded."; - else if (!_handler.IsLibraryLoaded && !IsLoaded) - message = "Missing delegate. Library is not loaded, proxy is not loaded."; - else - message = "Missing delegate, and library status is unknown."; + var isLibraryLoaded = _handler.IsLibraryLoaded; + var isProxyLoaded = IsLoaded; + message = (isLibraryLoaded, isProxyLoaded) switch + { + (true, true) => "Missing delegate. Library is loaded, proxy is loaded.", + (true, false) => "Missing delegate. Library is loaded, proxy is not loaded.", + (false, true) => "Missing delegate. Library is not loaded, proxy is loaded.", + (false, false) => "Missing delegate. Library is not loaded, proxy is not loaded." + }; } } catch (Exception ex) diff --git a/SunSharp/Native/SunVoxLibNative.Patterns.cs b/SunSharp/Native/SunVoxLibNative.Patterns.cs deleted file mode 100644 index 93030e4..0000000 --- a/SunSharp/Native/SunVoxLibNative.Patterns.cs +++ /dev/null @@ -1,225 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace SunSharp.Native -{ - public partial class SunVoxLibNative - { - /// - public int CreatePattern(int slotId, int? patternToCloneId, int x, int y, int tracks, - int lines, int? iconSeed, string? name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = _lib.sv_new_pattern(slotId, patternToCloneId ?? -1, x, y, tracks, lines, iconSeed ?? 0, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); - return ret; - } - - /// - public void RemovePattern(int slotId, int patternId) - { - var ret = _lib.sv_remove_pattern(slotId, patternId); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern)); - } - - /// - public int GetUpperPatternCount(int slotId) - { - var ret = _lib.sv_get_number_of_patterns(slotId); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns)); - return ret; - } - - /// - public int FindPattern(int slotId, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - int ret; - try - { - ret = _lib.sv_find_pattern(slotId, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret < -1) - throw new SunVoxException(ret, nameof(_lib.sv_find_pattern)); - - return ret; - } - - /// - public int GetPatternEventValue(int slotId, int patternId, int track, int line, - Column column) - { - var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event)); - return ret; - } - - /// - public string? GetPatternName(int slotId, int patternId) - { - var ptr = _lib.sv_get_pattern_name(slotId, patternId); - return Marshal.PtrToStringAnsi(ptr); - } - - /// - public void SetPatternName(int slotId, int patternId, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - try - { - var ret = _lib.sv_set_pattern_name(slotId, patternId, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - public bool GetPatternExists(int slotId, int patternId) - { - return GetPatternLines(slotId, patternId) > 0; - } - - /// - public int GetPatternLines(int slotId, int patternId) - { - var ret = _lib.sv_get_pattern_lines(slotId, patternId); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines)); - return ret; - } - - /// - public int GetPatternTracks(int slotId, int patternId) - { - var ret = _lib.sv_get_pattern_tracks(slotId, patternId); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks)); - return ret; - } - - /// - public void SetPatternSize(int slotId, int patternId, int? tracks = null, - int? lines = null) - { - var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size)); - } - - /// - public (int x, int y) GetPatternPosition(int slotId, int patternId) - { - return (_lib.sv_get_pattern_x(slotId, patternId), _lib.sv_get_pattern_y(slotId, patternId)); - } - - /// - public int GetPatternX(int slotId, int patternId) - { - return _lib.sv_get_pattern_x(slotId, patternId); - } - - /// - public int GetPatternY(int slotId, int patternId) - { - return _lib.sv_get_pattern_y(slotId, patternId); - } - - /// - public void SetPatternPosition(int slotId, int patternId, int x, int y) - { - var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy)); - } - - /// - public PatternEvent[]? GetPatternData(int slotId, int patternId) - { - if (!GetPatternExists(slotId, patternId)) - return null; - - var lines = GetPatternLines(slotId, patternId); - var tracks = GetPatternTracks(slotId, patternId); - - var ptr = _lib.sv_get_pattern_data(slotId, patternId); - if (ptr == IntPtr.Zero) - return null; - try - { - var arr = new PatternEvent[lines * tracks]; - for (var i = 0; i < lines * tracks; i++) - arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); - return arr; - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - public void SetPatternData(int slotId, int patternId, PatternEvent[] data) - { - var ptr = _lib.sv_get_pattern_data(slotId, patternId); - if (ptr == IntPtr.Zero) - throw new SunVoxException(ptr.ToInt32(), nameof(_lib.sv_get_pattern_data)); - - var lines = GetPatternLines(slotId, patternId); - var tracks = GetPatternTracks(slotId, patternId); - - var minSize = Math.Min(lines * tracks, data.Length); - - for (var i = 0; i < minSize; i++) - { - Marshal.WriteInt64(ptr + i * sizeof(ulong), unchecked((long)data[i].Data)); - } - } - - /// - public bool SetPatternMute(int slotId, int patternId, bool muted) - { - var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); - return ret == 1; - } - - /// - public void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) - { - var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); - } - - /// - public void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev) - { - var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); - } - } -} diff --git a/SunSharp/Native/SunVoxLibNative.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs similarity index 82% rename from SunSharp/Native/SunVoxLibNative.Modules.cs rename to SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index 29865a3..0bbbcf1 100644 --- a/SunSharp/Native/SunVoxLibNative.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -3,9 +3,9 @@ namespace SunSharp.Native { - public partial class SunVoxLibNative + public partial class SunVoxLibNativeWrapper { - /// + /// public void ConnectModule(int slotId, int source, int destination) { var ret = _lib.sv_connect_module(slotId, source, destination); @@ -13,7 +13,29 @@ public void ConnectModule(int slotId, int source, int destination) throw new SunVoxException(ret, nameof(_lib.sv_connect_module)); } - /// + /// + public int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, + int z = 0) + { + var typePtr = Marshal.StringToHGlobalAnsi(type); + var namePtr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_new_module(slotId, typePtr, namePtr, x, y, z); + } + finally + { + Marshal.FreeHGlobal(typePtr); + Marshal.FreeHGlobal(namePtr); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_new_module)); + return ret; + } + + /// public void DisconnectModule(int slotId, int source, int destination) { var ret = _lib.sv_disconnect_module(slotId, source, destination); @@ -21,8 +43,8 @@ public void DisconnectModule(int slotId, int source, int destination) throw new SunVoxException(ret, nameof(_lib.sv_disconnect_module)); } - /// - public int FindModule(int slotId, string name) + /// + public int? FindModule(int slotId, string name) { var ptr = Marshal.StringToHGlobalAnsi(name); int ret; @@ -38,60 +60,62 @@ public int FindModule(int slotId, string name) if (ret < -1) throw new SunVoxException(ret, nameof(_lib.sv_find_module)); - return ret; + if (ret != -1) + return ret; + return null; } - /// + /// public (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId) { var ret = _lib.sv_get_module_color(slotId, moduleId); - var red = (byte)((ret) & 0xFF); + var red = (byte)(ret & 0xFF); var green = (byte)((ret >> 8) & 0xFF); var blue = (byte)((ret >> 16) & 0xFF); return (red, green, blue); } - /// - public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) + /// + public int GetModuleControllerCount(int slotId, int moduleId) { - var color = r & (g << 8) & (b << 16); - var ret = _lib.sv_set_module_color(slotId, moduleId, color); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_color)); + var ret = _lib.sv_get_number_of_module_ctls(slotId, moduleId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_module_ctls)); + return ret; } - /// - public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) + /// + public int GetModuleControllerGroup(int slotId, int moduleId, int controllerId) { - var ptr = _lib.sv_get_module_ctl_name(slotId, moduleId, controllerId); - return Marshal.PtrToStringAnsi(ptr); + return _lib.sv_get_module_ctl_group(slotId, moduleId, controllerId); } - /// - public int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) + /// + public int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { - return _lib.sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); + return _lib.sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); } - /// - public int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) + /// + public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) { - return _lib.sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); + var ptr = _lib.sv_get_module_ctl_name(slotId, moduleId, controllerId); + return Marshal.PtrToStringAnsi(ptr); } - /// + /// public int GetModuleControllerOffset(int slotId, int moduleId, int controllerId) { return _lib.sv_get_module_ctl_offset(slotId, moduleId, controllerId); } - /// + /// public ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId) { var ret = _lib.sv_get_module_ctl_type(slotId, moduleId, controllerId); @@ -101,66 +125,43 @@ public ControllerType GetModuleControllerType(int slotId, int moduleId, int cont return (ControllerType)ret; } - /// - public int GetModuleControllerGroup(int slotId, int moduleId, int controllerId) + /// + public int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { - return _lib.sv_get_module_ctl_group(slotId, moduleId, controllerId); + return _lib.sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); } - /// - public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode) + /// + public bool GetModuleExists(int slotId, int moduleId) { - var ret = _lib.sv_set_module_ctl_value(slotId, moduleId, controllerId, value, (int)scalingMode); - if (ret != 0) - throw new SunVoxException(0, nameof(_lib.sv_set_module_ctl_value)); + return GetModuleFlags(slotId, moduleId).Exists; } - /// + /// public FineTunePair GetModuleFineTune(int slotId, int moduleId) { - var (fineTune, relativeNote) = Helper.SplitValueToFineTune(_lib.sv_get_module_finetune(slotId, moduleId)); + var (fineTune, relativeNote) = Helper.UnpackTwoSignedShorts(_lib.sv_get_module_finetune(slotId, moduleId)); return new FineTunePair(fineTune, relativeNote); } - /// - public void SetModuleFineTune(int slotId, int moduleId, int fineTune) - { - var ret = _lib.sv_set_module_finetune(slotId, moduleId, fineTune); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_finetune)); - } - - /// - public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) - { - var ret = _lib.sv_set_module_relnote(slotId, moduleId, relativeNote); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_relnote)); - } - - /// + /// public ModuleFlags GetModuleFlags(int slotId, int moduleId) { return _lib.sv_get_module_flags(slotId, moduleId); } - /// - public bool GetModuleExists(int slotId, int moduleId) - { - return GetModuleFlags(slotId, moduleId).Exists; - } - - /// + /// public int[] GetModuleInputs(int slotId, int moduleId) { - var count = GetModuleFlags(slotId, moduleId).InputUpperCount; - if (count == 0) + var moduleFlags = GetModuleFlags(slotId, moduleId); + var inputCount = moduleFlags.InputUpperCount; + if (!moduleFlags.Exists || inputCount == 0) return Array.Empty(); var ptr = _lib.sv_get_module_inputs(slotId, moduleId); try { - return Helper.CopyIntArraySkipNegativeOnes(ptr, count); + return Helper.CopyIntArraySkipNegativeOnes(ptr, inputCount); } finally { @@ -168,47 +169,25 @@ public int[] GetModuleInputs(int slotId, int moduleId) } } - /// + /// public string? GetModuleName(int slotId, int moduleId) { var ptr = _lib.sv_get_module_name(slotId, moduleId); return Marshal.PtrToStringAnsi(ptr); } - /// - public void SetModuleName(int slotId, int moduleId, string name) - { - var ptr = Marshal.StringToHGlobalAnsi(name); - try - { - var ret = _lib.sv_set_module_name(slotId, moduleId, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_name)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// - public string? GetModuleType(int slotId, int moduleId) - { - var ptr = _lib.sv_get_module_type(slotId, moduleId); - return Marshal.PtrToStringAnsi(ptr); - } - - /// + /// public int[] GetModuleOutputs(int slotId, int moduleId) { - var count = GetModuleFlags(slotId, moduleId).OutputUpperCount; - if (count == 0) + var moduleFlags = GetModuleFlags(slotId, moduleId); + var outputCount = moduleFlags.OutputUpperCount; + if (!moduleFlags.Exists || outputCount == 0) return Array.Empty(); var ptr = _lib.sv_get_module_outputs(slotId, moduleId); try { - return Helper.CopyIntArraySkipNegativeOnes(ptr, count); + return Helper.CopyIntArraySkipNegativeOnes(ptr, outputCount); } finally { @@ -216,36 +195,20 @@ public int[] GetModuleOutputs(int slotId, int moduleId) } } - /// - public int ReadModuleScope(int slotId, int moduleId, int channel, short[] buffer) - { - var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); - var ptr = handle.AddrOfPinnedObject(); - try - { - return (int)_lib.sv_get_module_scope2(slotId, moduleId, channel, ptr, (uint)buffer.Length); - } - finally - { - handle.Free(); - } - } - - /// + /// public (int x, int y) GetModulePosition(int slotId, int moduleId) { - return Helper.SplitValueTo2DPosition(_lib.sv_get_module_xy(slotId, moduleId)); + return Helper.UnpackTwoSignedShorts(_lib.sv_get_module_xy(slotId, moduleId)); } - /// - public void SetModulePosition(int slotId, int moduleId, int x, int y) + /// + public string? GetModuleType(int slotId, int moduleId) { - var ret = _lib.sv_set_module_xy(slotId, moduleId, x, y); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_xy)); + var ptr = _lib.sv_get_module_type(slotId, moduleId); + return Marshal.PtrToStringAnsi(ptr); } - /// + /// public int GetUpperModuleCount(int slotId) { var ret = _lib.sv_get_number_of_modules(slotId); @@ -254,124 +217,120 @@ public int GetUpperModuleCount(int slotId) return ret; } - /// - public int GetModuleControllerCount(int slotId, int moduleId) - { - var ret = _lib.sv_get_number_of_module_ctls(slotId, moduleId); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_module_ctls)); - return ret; - } - - /// - public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) + /// + public void LoadIntoMetaModule(int slotId, int moduleId, string path) { var ptr = Marshal.StringToHGlobalAnsi(path); int ret; try { - ret = _lib.sv_load_module(slotId, ptr, x, y, z); + ret = _lib.sv_metamodule_load(slotId, moduleId, ptr); } finally { Marshal.FreeHGlobal(ptr); } - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_load_module)); - return ret; + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load)); } - /// - public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) + /// + public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; try { - ret = _lib.sv_load_module_from_memory(slotId, handle.AddrOfPinnedObject(), (uint)data.Length, x, y, z); + ret = _lib.sv_metamodule_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), + (uint)data.Length); } finally { handle.Free(); } - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_load_module_from_memory)); - return ret; + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load_from_memory)); } - /// - public int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data) + /// + public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + var ptr = Marshal.StringToHGlobalAnsi(path); int ret; try { - ret = _lib.sv_module_curve(slotId, moduleId, curve, handle.AddrOfPinnedObject(), data.Length, 1); + ret = _lib.sv_vplayer_load(slotId, moduleId, ptr); } finally { - handle.Free(); + Marshal.FreeHGlobal(ptr); } - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); - return ret; + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load)); } - /// - public int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data) + /// + public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; try { - ret = _lib.sv_module_curve(slotId, moduleId, curve, handle.AddrOfPinnedObject(), data.Length, 0); + ret = _lib.sv_vplayer_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), + (uint)data.Length); } finally { handle.Free(); } - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); - return ret; + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load_from_memory)); } - /// - public int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, - int z = 0) + /// + public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) { - var typePtr = Marshal.StringToHGlobalAnsi(type); - var namePtr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToHGlobalAnsi(path); int ret; try { - ret = _lib.sv_new_module(slotId, typePtr, namePtr, x, y, z); + ret = _lib.sv_load_module(slotId, ptr, x, y, z); } finally { - Marshal.FreeHGlobal(typePtr); - Marshal.FreeHGlobal(namePtr); + Marshal.FreeHGlobal(ptr); } if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_new_module)); + throw new SunVoxException(ret, nameof(_lib.sv_load_module)); return ret; } - /// - public void RemoveModule(int slotId, int moduleId) + /// + public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) { - var ret = _lib.sv_remove_module(slotId, moduleId); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_remove_module)); + var handle = GCHandle.Alloc(data, GCHandleType.Pinned); + int ret; + try + { + ret = _lib.sv_load_module_from_memory(slotId, handle.AddrOfPinnedObject(), (uint)data.Length, x, y, z); + } + finally + { + handle.Free(); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_load_module_from_memory)); + return ret; } - /// - public void LoadSamplerSample(int slotId, int moduleId, string path, - int sampleSlot = -1) + /// + public void LoadSamplerSample(int slotId, int moduleId, string path, int sampleSlot = -1) { var ptr = Marshal.StringToHGlobalAnsi(path); int ret; @@ -388,9 +347,8 @@ public void LoadSamplerSample(int slotId, int moduleId, string path, throw new SunVoxException(ret, nameof(_lib.sv_sampler_load)); } - /// - public void LoadSamplerSample(int slotId, int moduleId, byte[] data, - int sampleSlot = -1) + /// + public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int sampleSlot = -1) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; @@ -408,76 +366,117 @@ public void LoadSamplerSample(int slotId, int moduleId, byte[] data, throw new SunVoxException(ret, nameof(_lib.sv_sampler_load_from_memory)); } - /// - public void LoadIntoMetaModule(int slotId, int moduleId, string path) + /// + public int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data) { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; + var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, false); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + return ret; + } + + /// + public int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer) + { + var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); + var ptr = handle.AddrOfPinnedObject(); try { - ret = _lib.sv_metamodule_load(slotId, moduleId, ptr); + return (int)_lib.sv_get_module_scope2(slotId, moduleId, (int)channel, ptr, (uint)buffer.Length); } finally { - Marshal.FreeHGlobal(ptr); + handle.Free(); } + } + /// + public void RemoveModule(int slotId, int moduleId) + { + var ret = _lib.sv_remove_module(slotId, moduleId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load)); + throw new SunVoxException(ret, nameof(_lib.sv_remove_module)); } - /// - public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) + /// + public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) { - var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; - try - { - ret = _lib.sv_metamodule_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length); - } - finally - { - handle.Free(); - } + var color = r | (g << 8) | (b << 16); + var ret = _lib.sv_set_module_color(slotId, moduleId, color); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_color)); + } + /// + public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, + ValueScalingMode scalingMode) + { + var ret = _lib.sv_set_module_ctl_value(slotId, moduleId, controllerId, value, (int)scalingMode); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load_from_memory)); + throw new SunVoxException(0, nameof(_lib.sv_set_module_ctl_value)); } - /// - public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) + /// + public void SetModuleFineTune(int slotId, int moduleId, int fineTune) { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; + var ret = _lib.sv_set_module_finetune(slotId, moduleId, fineTune); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_finetune)); + } + + /// + public void SetModuleName(int slotId, int moduleId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); try { - ret = _lib.sv_vplayer_load(slotId, moduleId, ptr); + var ret = _lib.sv_set_module_name(slotId, moduleId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_name)); } finally { Marshal.FreeHGlobal(ptr); } + } + /// + public void SetModulePosition(int slotId, int moduleId, int x, int y) + { + var ret = _lib.sv_set_module_xy(slotId, moduleId, x, y); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load)); + throw new SunVoxException(ret, nameof(_lib.sv_set_module_xy)); } - /// - public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) + /// + public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) + { + var ret = _lib.sv_set_module_relnote(slotId, moduleId, relativeNote); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_module_relnote)); + } + + /// + public int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data) + { + var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, true); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + return ret; + } + + private int ModuleCurveOperationInternal(int slotId, int moduleId, int curve, float[] data, bool write) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); - int ret; try { - ret = _lib.sv_vplayer_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length); + return _lib.sv_module_curve(slotId, moduleId, curve, handle.AddrOfPinnedObject(), data.Length, + write ? 1 : 0); } finally { handle.Free(); } - - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load_from_memory)); } } } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs new file mode 100644 index 0000000..914e291 --- /dev/null +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -0,0 +1,347 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Native +{ + public partial class SunVoxLibNativeWrapper + { + public int ClonePattern(int slotId, int originalPatternId, int x, int y) + { + var ret = _lib.sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + return ret; + } + + public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_new_pattern(slotId, -1, x, y, tracks, lines, iconSeed, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + return ret; + } + + /// + public int? FindPattern(int slotId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + int ret; + try + { + ret = _lib.sv_find_pattern(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret < -1) + throw new SunVoxException(ret, nameof(_lib.sv_find_pattern)); + + if (ret != -1) + return ret; + return null; + } + + /// + public (PatternEvent[] data, int tracks, int lines)? GetPatternData(int slotId, int patternId) + { + var lines = GetPatternLines(slotId, patternId); + if (lines <= 0) + return null; + + var tracks = GetPatternTracks(slotId, patternId); + + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + return null; + + var arr = new PatternEvent[lines * tracks]; + for (var i = 0; i < lines * tracks; i++) + arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); + return (arr, tracks, lines); + } + + /// + public int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column) + { + var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event)); + return ret; + } + + /// + public bool GetPatternExists(int slotId, int patternId) + { + return GetPatternLines(slotId, patternId) > 0; + } + + /// + public int GetPatternLines(int slotId, int patternId) + { + var ret = _lib.sv_get_pattern_lines(slotId, patternId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines)); + return ret; + } + + /// + public bool GetPatternMuted(int slotId, int patternId) + { + var ret = _lib.sv_pattern_mute(slotId, patternId, -1); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + return ret == 1; + } + + /// + public string? GetPatternName(int slotId, int patternId) + { + var ptr = _lib.sv_get_pattern_name(slotId, patternId); + return Marshal.PtrToStringAnsi(ptr); + } + + /// + public (int x, int y) GetPatternPosition(int slotId, int patternId) + { + return (_lib.sv_get_pattern_x(slotId, patternId), _lib.sv_get_pattern_y(slotId, patternId)); + } + + /// + public int GetPatternTracks(int slotId, int patternId) + { + var ret = _lib.sv_get_pattern_tracks(slotId, patternId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks)); + return ret; + } + + /// + public int GetPatternX(int slotId, int patternId) + { + return _lib.sv_get_pattern_x(slotId, patternId); + } + + /// + public int GetPatternY(int slotId, int patternId) + { + return _lib.sv_get_pattern_y(slotId, patternId); + } + + /// + public int GetUpperPatternCount(int slotId) + { + var ret = _lib.sv_get_number_of_patterns(slotId); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns)); + return ret; + } + + /// + public void RemovePattern(int slotId, int patternId) + { + var ret = _lib.sv_remove_pattern(slotId, patternId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern)); + } + + /// + public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines) + { + if (tracks < 0) + throw new ArgumentOutOfRangeException(nameof(tracks), tracks, "Value cannot be negative."); + if (lines < 0) + throw new ArgumentOutOfRangeException(nameof(lines), lines, "Value cannot be negative."); + + if (tracks * lines != data.Length) + throw new ArgumentException( + $"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + + SetPatternSize(slotId, patternId, tracks, lines); + + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + return; + + for (var i = 0; i < lines * tracks; i++) + Marshal.WriteInt64(ptr, i * sizeof(long), unchecked((long)data[i].Data)); + } + + /// + public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, + int? maxTracks = null, int? maxLines = null) + { + if (readOffsetLines < 0) + throw new ArgumentOutOfRangeException(nameof(readOffsetLines), readOffsetLines, + "Value cannot be negative."); + if (readOffsetTracks < 0) + throw new ArgumentOutOfRangeException(nameof(readOffsetTracks), readOffsetTracks, + "Value cannot be negative."); + if (bufferOffsetLines < 0) + throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, + "Value cannot be negative."); + if (bufferOffsetTracks < 0) + throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, + "Value cannot be negative."); + if (bufferTracks < 0) + throw new ArgumentOutOfRangeException(nameof(bufferTracks), bufferTracks, "Value cannot be negative."); + if (bufferLines < 0) + throw new ArgumentOutOfRangeException(nameof(bufferLines), bufferLines, "Value cannot be negative."); + + if (bufferLines * bufferTracks != buffer.Length) + throw new ArgumentException( + $"Size of {nameof(buffer)} ({nameof(buffer)}.Length) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + + var realLines = GetPatternLines(slotId, patternId); + if (realLines == 0) + return 0; + var realTracks = GetPatternTracks(slotId, patternId); + + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + return 0; + + var linesToIterate = Math.Min(bufferLines - bufferOffsetLines, realLines - readOffsetLines); + linesToIterate = Math.Min(linesToIterate, maxLines ?? int.MaxValue); + var tracksToIterate = Math.Min(bufferTracks - bufferOffsetTracks, realTracks - readOffsetTracks); + tracksToIterate = Math.Min(tracksToIterate, maxTracks ?? int.MaxValue); + + var readEventCount = 0; + for (var l = 0; l < linesToIterate; l++) + for (var t = 0; t < tracksToIterate; t++) + { + var realIndex = (l + readOffsetLines) * realTracks + t + readOffsetTracks; + var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var value = Marshal.ReadInt64(ptr, realIndex * sizeof(ulong)); + buffer[bufferIndex] = unchecked((ulong)value); + readEventCount++; + } + + return readEventCount; + } + + /// + public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int writeOffsetTracks = 0, int writeOffsetLines = 0, + int? maxTracks = null, int? maxLines = null) + { + if (writeOffsetLines < 0) + throw new ArgumentOutOfRangeException(nameof(writeOffsetLines), writeOffsetLines, + "Value cannot be negative."); + if (writeOffsetTracks < 0) + throw new ArgumentOutOfRangeException(nameof(writeOffsetTracks), writeOffsetTracks, + "Value cannot be negative."); + if (bufferOffsetLines < 0) + throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, + "Value cannot be negative."); + if (bufferOffsetTracks < 0) + throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, + "Value cannot be negative."); + if (bufferTracks < 0) + throw new ArgumentOutOfRangeException(nameof(bufferTracks), bufferTracks, "Value cannot be negative."); + if (bufferLines < 0) + throw new ArgumentOutOfRangeException(nameof(bufferLines), bufferLines, "Value cannot be negative."); + + if (bufferLines * bufferTracks != buffer.Length) + throw new ArgumentException( + $"Size of {nameof(buffer)} ({buffer.Length}) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + + var realLines = GetPatternLines(slotId, patternId); + if (realLines == 0) + return 0; + var realTracks = GetPatternTracks(slotId, patternId); + + var ptr = _lib.sv_get_pattern_data(slotId, patternId); + if (ptr == IntPtr.Zero) + return 0; + + var linesToIterate = Math.Min(bufferLines - bufferOffsetLines, realLines - writeOffsetLines); + linesToIterate = Math.Min(linesToIterate, maxLines ?? int.MaxValue); + var tracksToIterate = Math.Min(bufferTracks - bufferOffsetTracks, realTracks - writeOffsetTracks); + tracksToIterate = Math.Min(tracksToIterate, maxTracks ?? int.MaxValue); + + var writeEventCount = 0; + for (var l = 0; l < linesToIterate; l++) + for (var t = 0; t < tracksToIterate; t++) + { + var realIndex = (l + writeOffsetLines) * realTracks + t + writeOffsetTracks; + var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var value = buffer[bufferIndex].Data; + Marshal.WriteInt64(ptr, realIndex * sizeof(ulong), unchecked((long)value)); + writeEventCount++; + } + + return writeEventCount; + } + + /// + public void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, + int xxyy) + { + var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } + + /// + public void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev) + { + var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } + + /// + public void SetPatternMuted(int slotId, int patternId, bool muted) + { + var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + } + + /// + public void SetPatternName(int slotId, int patternId, string name) + { + var ptr = Marshal.StringToHGlobalAnsi(name); + try + { + var ret = _lib.sv_set_pattern_name(slotId, patternId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name)); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public void SetPatternPosition(int slotId, int patternId, int x, int y) + { + var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy)); + } + + /// + public void SetPatternSize(int slotId, int patternId, int? tracks = null, int? lines = null) + { + var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size)); + } + } +} diff --git a/SunSharp/Native/SunVoxLibNative.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs similarity index 87% rename from SunSharp/Native/SunVoxLibNative.cs rename to SunSharp/Native/SunVoxLibNativeWrapper.cs index ec8ca40..11aa280 100644 --- a/SunSharp/Native/SunVoxLibNative.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -3,94 +3,72 @@ namespace SunSharp.Native { - public partial class SunVoxLibNative : ISunVoxLib + public partial class SunVoxLibNativeWrapper : ISunVoxLib { private readonly ISunVoxLibC _lib; - public SunVoxLibNative(ISunVoxLibC nativeLibrary) + public SunVoxLibNativeWrapper(ISunVoxLibC nativeLibrary) { _lib = nativeLibrary; } - /// - public LibraryVersion Initialize(int sampleRate, string? config = null, - AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime) { - var ptr = Marshal.StringToHGlobalAnsi(config); - try - { - var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_init)); - return new LibraryVersion(ret); - } - finally - { - Marshal.FreeHGlobal(ptr); - } + return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// - public void Deinitialize() + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime) { - var retCode = _lib.sv_deinit(); - if (retCode != 0) - throw new SunVoxException(retCode, nameof(_lib.sv_deinit)); + return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// - public string? GetLog(int size) + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, + AudioChannels inputChannels, int latency, uint outTime) { - var ptr = _lib.sv_get_log(size); - try - { - return Marshal.PtrToStringAnsi(ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// - public uint GetTicks() + /// + public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, + short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { - return _lib.sv_get_ticks(); + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// - public uint GetTicksPerSecond() + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, + AudioChannels inputChannels, int latency, uint outTime) { - return _lib.sv_get_ticks_per_second(); + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// - public int GetSampleRate() + /// + public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, + AudioChannels inputChannels, int latency, uint outTime) { - var ret = _lib.sv_get_sample_rate(); - if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_sample_rate)); - return ret; + return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// - public void UpdateInputDevices() + /// + public void CloseSlot(int slotId) { - var ret = _lib.sv_update_input(); + var ret = _lib.sv_close_slot(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_update_input)); + throw new SunVoxException(ret, nameof(_lib.sv_close_slot)); } - /// - public bool IsPlaying(int slotId) + /// + public void Deinitialize() { - var ret = _lib.sv_end_of_song(slotId); - if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(_lib.sv_end_of_song)); - return ret == 0; + var retCode = _lib.sv_deinit(); + if (retCode != 0) + throw new SunVoxException(retCode, nameof(_lib.sv_deinit)); } - /// + /// public bool GetAutostop(int slotId) { var ret = _lib.sv_get_autostop(slotId); @@ -99,25 +77,48 @@ public bool GetAutostop(int slotId) return ret == 1; } - /// + /// public int GetCurrentLine(int slotId) { return _lib.sv_get_current_line(slotId); } - /// + /// public int GetCurrentLineWithTenthPart(int slotId) { return _lib.sv_get_current_line2(slotId); } - /// + /// public int GetCurrentSignalLevel(int slotId, int channel) { return _lib.sv_get_current_signal_level(slotId, channel); } - /// + /// + public string? GetLog(int size) + { + var ptr = _lib.sv_get_log(size); + try + { + return Marshal.PtrToStringAnsi(ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public int GetSampleRate() + { + var ret = _lib.sv_get_sample_rate(); + if (ret < 1) + throw new SunVoxException(ret, nameof(_lib.sv_get_sample_rate)); + return ret; + } + + /// public int GetSongBpm(int slotId) { var ret = _lib.sv_get_song_bpm(slotId); @@ -126,44 +127,28 @@ public int GetSongBpm(int slotId) return ret; } - /// - public int GetSongLengthInFrames(int slotId) + /// + public uint GetSongLengthInFrames(int slotId) { var ret = _lib.sv_get_song_length_frames(slotId); - return (int)ret; + return ret; } - /// + /// public int GetSongLengthInLines(int slotId) { var ret = _lib.sv_get_song_length_lines(slotId); return (int)ret; } - /// + /// public string? GetSongName(int slotId) { var ptr = _lib.sv_get_song_name(slotId); return Marshal.PtrToStringAnsi(ptr); } - /// - public void SetSongName(int slotId, string newName) - { - var ptr = Marshal.StringToHGlobalAnsi(newName); - try - { - var ret = _lib.sv_set_song_name(slotId, ptr); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_init)); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - } - - /// + /// public int GetSongTpl(int slotId) { var ret = _lib.sv_get_song_tpl(slotId); @@ -172,76 +157,19 @@ public int GetSongTpl(int slotId) return ret; } - /// - public void Save(int slotId, string path) - { - var ptr = Marshal.StringToHGlobalAnsi(path); - int ret; - try - { - ret = _lib.sv_save(slotId, ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } - - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_save)); - } - - public void SendEvent(int slotId, int track, PatternEvent data) - { - SendEvent(slotId, track, data.NN, data.VV, data.MM, data.CCEE, data.XXYY); - } - - public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, - int ccee = 0, int xxyy = 0) - { - var ret = _lib.sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_send_event)); - } - - public void SetAutoStop(int slotId, bool autoStop) - { - var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_autostop)); - } - - public void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0) - { - var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_event_t)); - } - - /// - public void StopPlayback(int slotId) - { - var ret = _lib.sv_stop(slotId); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_stop)); - } - - public void ResumeStreamOnSyncEffect(int slotId) + /// + public uint GetTicks() { - var ret = _lib.sv_sync_resume(slotId); - if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_sync_resume)); + return _lib.sv_get_ticks(); } - /// - public int Volume(int slotId, int volume) + /// + public uint GetTicksPerSecond() { - var ret = _lib.sv_volume(slotId, volume); - if (ret < 0 || ret > 256) - throw new SunVoxException(ret, nameof(_lib.sv_volume)); - return ret; + return _lib.sv_get_ticks_per_second(); } - /// + /// public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) { var arr = new uint[length]; @@ -261,7 +189,34 @@ public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type return arr; } - /// + /// + public LibraryVersion Initialize(int sampleRate, string? config = null, + AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) + { + var ptr = Marshal.StringToHGlobalAnsi(config); + try + { + var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); + if (ret < 0) + throw new SunVoxException(ret, nameof(_lib.sv_init)); + return new LibraryVersion(ret); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// + public bool IsPlaying(int slotId) + { + var ret = _lib.sv_end_of_song(slotId); + if (ret != 0 && ret != 1) + throw new SunVoxException(ret, nameof(_lib.sv_end_of_song)); + return ret == 0; + } + + /// public void Load(int slotId, string path) { var ptr = Marshal.StringToHGlobalAnsi(path); @@ -279,7 +234,7 @@ public void Load(int slotId, string path) throw new SunVoxException(ret, nameof(_lib.sv_load)); } - /// + /// public void Load(int slotId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -297,7 +252,15 @@ public void Load(int slotId, byte[] data) throw new SunVoxException(ret, nameof(_lib.sv_load)); } - /// + /// + public void LockSlot(int slotId) + { + var ret = _lib.sv_lock_slot(slotId); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_lock_slot)); + } + + /// public void OpenSlot(int slotId) { var ret = _lib.sv_open_slot(slotId); @@ -305,39 +268,99 @@ public void OpenSlot(int slotId) throw new SunVoxException(ret, nameof(_lib.sv_open_slot)); } - /// - public void CloseSlot(int slotId) + /// + public void PauseStream(int slotId) { - var ret = _lib.sv_close_slot(slotId); + var ret = _lib.sv_pause(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_close_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_pause)); } - /// - public void LockSlot(int slotId) + /// + public void ResumeStream(int slotId) { - var ret = _lib.sv_lock_slot(slotId); + var ret = _lib.sv_resume(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_lock_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_resume)); } - /// - public void UnlockSlot(int slotId) + public void ResumeStreamOnSyncEffect(int slotId) { - var ret = _lib.sv_unlock_slot(slotId); + var ret = _lib.sv_sync_resume(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_sync_resume)); } - /// - public void PauseStream(int slotId) + /// + public void Rewind(int slotId, int line) { - var ret = _lib.sv_pause(slotId); + var ret = _lib.sv_rewind(slotId, line); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_pause)); + throw new SunVoxException(ret, nameof(_lib.sv_rewind)); + } + + /// + public void Save(int slotId, string path) + { + var ptr = Marshal.StringToHGlobalAnsi(path); + int ret; + try + { + ret = _lib.sv_save(slotId, ptr); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_save)); + } + + public void SendEvent(int slotId, int track, PatternEvent data) + { + SendEvent(slotId, track, data.NN, data.VV, data.MM, data.CCEE, data.XXYY); } - /// + public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, + int ccee = 0, int xxyy = 0) + { + var ret = _lib.sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_send_event)); + } + + public void SetAutoStop(int slotId, bool autoStop) + { + var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_autostop)); + } + + public void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0) + { + var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_set_event_t)); + } + + /// + public void SetSongName(int slotId, string newName) + { + var ptr = Marshal.StringToHGlobalAnsi(newName); + try + { + var ret = _lib.sv_set_song_name(slotId, ptr); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_init)); + } + finally + { + Marshal.FreeHGlobal(ptr); + } + } + + /// public void StartPlayback(int slotId) { var ret = _lib.sv_play(slotId); @@ -345,7 +368,7 @@ public void StartPlayback(int slotId) throw new SunVoxException(ret, nameof(_lib.sv_play)); } - /// + /// public void StartPlaybackFromBeginning(int slotId) { var ret = _lib.sv_play_from_beginning(slotId); @@ -353,20 +376,37 @@ public void StartPlaybackFromBeginning(int slotId) throw new SunVoxException(ret, nameof(_lib.sv_play_from_beginning)); } - /// - public void ResumeStream(int slotId) + /// + public void StopPlayback(int slotId) { - var ret = _lib.sv_resume(slotId); + var ret = _lib.sv_stop(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_resume)); + throw new SunVoxException(ret, nameof(_lib.sv_stop)); } - /// - public void Rewind(int slotId, int line) + /// + public void UnlockSlot(int slotId) { - var ret = _lib.sv_rewind(slotId, line); + var ret = _lib.sv_unlock_slot(slotId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_rewind)); + throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot)); + } + + /// + public void UpdateInputDevices() + { + var ret = _lib.sv_update_input(); + if (ret != 0) + throw new SunVoxException(ret, nameof(_lib.sv_update_input)); + } + + /// + public int Volume(int slotId, int volume) + { + var ret = _lib.sv_volume(slotId, volume); + if (ret < 0 || ret > 256) + throw new SunVoxException(ret, nameof(_lib.sv_volume)); + return ret; } private bool AudioCallbackInternal(T[] outputBuffer, AudioChannels channels, int latency, uint outTime) @@ -396,7 +436,8 @@ private bool AudioCallbackInternal(T[] outputBuffer, AudioChannels channels, return ret == 1; } - private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels outputChannels, TIn[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, + private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels outputChannels, + TIn[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime, int inputType) { if (outputChannels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) @@ -414,7 +455,8 @@ private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels outputFrames /= 2; if (inputFrames != outputFrames) - throw new ArgumentException($"Input and output frame count is different (input: {inputFrames}, output: {outputFrames})."); + throw new ArgumentException( + $"Input and output frame count is different (input: {inputFrames}, output: {outputFrames})."); var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); var inHandle = GCHandle.Alloc(inputBuffer, GCHandleType.Pinned); @@ -423,7 +465,8 @@ private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels int ret; try { - ret = _lib.sv_audio_callback2(outPtr, outputFrames, latency, outTime, inputType, (int)inputChannels, inPtr); + ret = _lib.sv_audio_callback2(outPtr, outputFrames, latency, outTime, inputType, (int)inputChannels, + inPtr); } finally { @@ -434,44 +477,7 @@ private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels if (ret != 0 && ret != 1) throw new SunVoxException(ret, nameof(_lib.sv_audio_callback2)); - return (ret == 1); - } - - /// - public bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, channels, latency, outTime); - } - - /// - public bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, channels, latency, outTime); - } - - /// - public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); - } - - /// - public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, - short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); - } - - /// - public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); - } - - /// - public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) - { - return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); + return ret == 1; } } } diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 1b0495a..314827d 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -1,4 +1,5 @@ -using System.Runtime.InteropServices; +using System; +using System.Runtime.InteropServices; namespace SunSharp { @@ -21,7 +22,7 @@ public enum NoteName public static class NoteNameExtensions { - public static char GetNoteNameCharacter(this NoteName noteName) + public static char GetNoteCharacter(this NoteName noteName) { const string notes = "CcDdEFfGgAaB"; var i = (int)noteName; @@ -32,7 +33,7 @@ public static char GetNoteNameCharacter(this NoteName noteName) } [StructLayout(LayoutKind.Explicit, Size = 1)] - public readonly struct Note + public readonly struct Note : IEquatable { [FieldOffset(0)] public readonly byte Value; @@ -45,54 +46,122 @@ public readonly struct Note private const byte NOTECMD_CLEAN_MODULE = 140; public static Note Silence => new Note(0); + + /// + /// Stops the note playing on its track. + /// public static Note Off => new Note(NOTECMD_NOTE_OFF); /// - /// Send "note off" to all modules. + /// Sends "note off" to all modules. /// public static Note AllNotesOff => NOTECMD_ALL_NOTES_OFF; /// - /// StopPlayback all modules, clear their internal buffers and put them into standby mode. + /// Stops all modules, clears their internal buffers and puts them into standby mode. /// public static Note CleanSynths => NOTECMD_CLEAN_SYNTHS; /// - /// StopPlayback playing the project. + /// Stops playing the project. /// public static Note Stop => NOTECMD_STOP; /// - /// Start playing the project. + /// Starts playing the project. /// public static Note Play => NOTECMD_PLAY; /// - /// Set the pitch specified in column XXYY, where 0x0000 - highest possible pitch, 0x7800 - lowest pitch (note C0); one semitone = 0x100. + /// Sets the pitch specified in column XXYY, where 0x0000 - highest possible pitch, 0x7800 - lowest pitch (note C0); + /// one semitone = 0x100. /// public static Note SetPitch => NOTECMD_SET_PITCH; /// - /// StopPlayback the module: clear its internal buffers and put it into standby mode.one semitone = 0x100. + /// Stops the module: clear its internal buffers and put it into standby mode. /// public static Note CleanModule => NOTECMD_CLEAN_MODULE; - public NoteName Name => Value > 0 || Value < 128 ? (NoteName)((Value - 1) % 12) : NoteName.Other; - public int Octave => Value > 0 || Value < 128 ? (Value - 1) / 12 : 0; + /// + /// Get the name of the note. Returns valid values for notes in range C0 to F#10 inclusive. + /// Returns otherwise. + /// + public NoteName Name + { + get + { + if (IsNormal) return (NoteName)((Value - 1) % 12); + + return NoteName.Other; + } + } + + /// + /// Get the name of the note. Returns valid values for notes in range C0 to F#10 inclusive. + /// Returns otherwise. + /// + public int Octave + { + get + { + if (IsNormal) return (Value - 1) / 12; + + return -1; + } + } + + /// public bool IsNoteOff => Value == NOTECMD_NOTE_OFF; + + /// public bool IsAllNotesOff => Value == NOTECMD_ALL_NOTES_OFF; - public bool IsNoteCleanSynths => Value == NOTECMD_CLEAN_SYNTHS; - public bool IsNoteStop => Value == NOTECMD_STOP; - public bool IsNotePlay => Value == NOTECMD_PLAY; - public bool IsNoteSetPitch => Value == NOTECMD_SET_PITCH; + + /// + public bool IsCleanSynths => Value == NOTECMD_CLEAN_SYNTHS; + + /// + public bool IsCleanModule => Value == NOTECMD_CLEAN_MODULE; + + /// + public bool IsStop => Value == NOTECMD_STOP; + + /// + public bool IsPlay => Value == NOTECMD_PLAY; + + /// + public bool IsSetPitch => Value == NOTECMD_SET_PITCH; + + /// + public bool IsSilence => Value == 0; + + /// + /// Whether this is a normal note. + /// + public bool IsNormal => Value > 0 && Value < 128; public Note(byte value) { Value = value; } + /// + /// Construct a note in range of C0 to F#10 inclusive. + /// + /// The note value. + /// public Note(NoteName name, int octave) { + if (name < NoteName.C || name > NoteName.B) + throw new ArgumentException($"Unsupported note '{name}'."); + + if (octave < 0 || octave > 10) + throw new ArgumentOutOfRangeException(nameof(octave), octave, + "Only values in range of 0 to 10 are supported."); + if (octave == 10 && name > NoteName.Fs) + throw new ArgumentOutOfRangeException(nameof(name), name, + "In the tenth octave, only notes up to F# are supported."); + Value = (byte)(1 + name + octave * 12); } @@ -113,12 +182,42 @@ public override string ToString() 0 => "__", NOTECMD_NOTE_OFF => "--", NOTECMD_ALL_NOTES_OFF => "-!", - NOTECMD_CLEAN_SYNTHS => "C!", + NOTECMD_CLEAN_SYNTHS => "CS", + NOTECMD_CLEAN_MODULE => "CM", NOTECMD_STOP => "S!", NOTECMD_PLAY => "P!", NOTECMD_SET_PITCH => "SP", - _ => Value < 128 ? $"{Name.GetNoteNameCharacter()}{Octave}" : "??", + _ => Value < 128 ? $"{Name.GetNoteCharacter()}{Octave}" : "??" + }; + } + + public bool Equals(Note other) + { + return Value == other.Value; + } + + public override bool Equals(object? obj) + { + return obj switch + { + Note other => Equals(other), + _ => false }; } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + + public static bool operator ==(Note left, Note right) + { + return left.Equals(right); + } + + public static bool operator !=(Note left, Note right) + { + return !(left == right); + } } } diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index e4a3913..6190b16 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -16,15 +16,15 @@ public struct PatternEvent : IEquatable [field: FieldOffset(4)] public ushort CCEE { get; set; } - [field: FieldOffset(5)] public byte CC { get; set; } - [field: FieldOffset(4)] public byte EE { get; set; } + [field: FieldOffset(5)] public byte CC { get; set; } + [field: FieldOffset(6)] public ushort XXYY { get; set; } - [field: FieldOffset(6)] public byte YY { get; set; } + [field: FieldOffset(7)] public byte YY { get; set; } - [field: FieldOffset(7)] public byte XX { get; set; } + [field: FieldOffset(6)] public byte XX { get; set; } public Effect Effect { @@ -75,6 +75,16 @@ public PatternEvent(Note nn, byte vv, ushort mm, byte cc, Effect ee, ushort xxyy XXYY = xxyy; } + public PatternEvent(Note nn, byte vv, ushort mm, byte cc, byte ee, ushort xxyy) : this() + { + NN = nn; + VV = vv; + MM = mm; + CC = cc; + EE = ee; + XXYY = xxyy; + } + public static implicit operator PatternEvent(ulong value) { return new PatternEvent(value); @@ -85,16 +95,39 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public readonly override string ToString() => $"{(Note)NN}{VV:X2}{MM:X4}{CC:X2}{EE:X2}{XX:X2}{YY:X2}"; + public readonly override string ToString() + { + return $"{(Note)NN}" + + $"{(VV != 0 ? $"{VV:X2}" : "__")}" + + $"{(MM != 0 ? $"{MM:X4}" : "__")}" + + $"{(CC != 0 ? $"{CC:X2}" : "__")}" + + $"{(EE != 0 ? $"{EE:X2}" : "__")}" + + $"{(XXYY != 0 ? $"{XXYY:X4}" : "__")}"; + } - public static bool operator ==(PatternEvent a, PatternEvent b) => a.Data == b.Data; + public static bool operator ==(PatternEvent a, PatternEvent b) + { + return a.Data == b.Data; + } - public static bool operator !=(PatternEvent a, PatternEvent b) => a.Data != b.Data; + public static bool operator !=(PatternEvent a, PatternEvent b) + { + return a.Data != b.Data; + } - public readonly override bool Equals(object obj) => obj is PatternEvent e && this == e; + public readonly override bool Equals(object? obj) + { + return obj is PatternEvent e && this == e; + } - public readonly bool Equals(PatternEvent other) => this == other; + public readonly bool Equals(PatternEvent other) + { + return this == other; + } - public readonly override int GetHashCode() => -1945990370 + Data.GetHashCode(); + public readonly override int GetHashCode() + { + return -1945990370 + Data.GetHashCode(); + } } } diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index 1dd07f2..d55c0b5 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -38,7 +38,7 @@ - <_Parameter1>SunSharp.UnitTests + <_Parameter1>SunSharp.Tests diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 465ff68..3e8d2fd 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -6,7 +6,6 @@ public sealed class SunVoxException : Exception { private readonly uint _code; private readonly string? _method; - public override string Message => $"Error code: {_code:X}, method: {_method ?? "unknown"}."; public SunVoxException(uint code, string? method = null) { @@ -17,5 +16,7 @@ public SunVoxException(uint code, string? method = null) public SunVoxException(int code, string? method = null) : this((uint)code, method) { } + + public override string Message => $"Error code: {_code:X}, method: '{_method ?? "unknown"}'."; } } diff --git a/SunSharp/SunVoxLibExtensions.cs b/SunSharp/SunVoxLibExtensions.cs index a4720a1..1b7f17b 100644 --- a/SunSharp/SunVoxLibExtensions.cs +++ b/SunSharp/SunVoxLibExtensions.cs @@ -6,7 +6,8 @@ public static class SunVoxLibExtensions { /// /// Use to group multiple calls in one lock/unlock block. - /// Possible issues: when a slot is closed, then re-opened while user code is running, it may escape the abstraction and/or throw an exception. + /// Possible issues: when a slot is closed, then re-opened while user code is running, it may escape the abstraction + /// and/or throw an exception. /// public static void RunInLock(this ISunVoxLib lib, int slotId, Action action) { @@ -24,7 +25,7 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action action) } } - /// + /// public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1) { var entered = false; @@ -41,7 +42,7 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action act } } - /// + /// public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2) { var entered = false; @@ -58,8 +59,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3) + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, + T2 arg2, T3 arg3) { var entered = false; try @@ -75,8 +77,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action } } - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4) + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, + T1 arg1, T2 arg2, T3 arg3, T4 arg4) { var entered = false; try @@ -92,8 +95,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Ac } } - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) + /// + public static void RunInLock(this ISunVoxLib lib, int slotId, + Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { var entered = false; try @@ -109,7 +113,7 @@ public static void RunInLock(this ISunVoxLib lib, int slotId } } - /// + /// public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func) { var entered = false; @@ -126,7 +130,7 @@ public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func + /// public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1) { var entered = false; @@ -143,8 +147,9 @@ public static TResult RunInLock(this ISunVoxLib lib, int slotId, Fu } } - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2) + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, + T1 arg1, T2 arg2) { var entered = false; try @@ -160,8 +165,9 @@ public static TResult RunInLock(this ISunVoxLib lib, int slotId } } - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3) + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, + Func func, T1 arg1, T2 arg2, T3 arg3) { var entered = false; try @@ -177,8 +183,9 @@ public static TResult RunInLock(this ISunVoxLib lib, int sl } } - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4) + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, + Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { var entered = false; try @@ -194,8 +201,9 @@ public static TResult RunInLock(this ISunVoxLib lib, in } } - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) + /// + public static TResult RunInLock(this ISunVoxLib lib, int slotId, + Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { var entered = false; try From 7a001178364a76dbaa45da3a166541cfe5ad2031 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Fri, 13 Oct 2023 22:32:08 +0200 Subject: [PATCH 04/27] remove and ignore --- .gitignore | 4 +++- SunSharp.sln.DotSettings.user | 29 ----------------------------- 2 files changed, 3 insertions(+), 30 deletions(-) delete mode 100644 SunSharp.sln.DotSettings.user diff --git a/.gitignore b/.gitignore index 2362ab1..49789ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ */[Bb]in */[Oo]bj -.vs \ No newline at end of file +.vs +.editorconfig +*.DotSettings.user diff --git a/SunSharp.sln.DotSettings.user b/SunSharp.sln.DotSettings.user deleted file mode 100644 index c0fdfe4..0000000 --- a/SunSharp.sln.DotSettings.user +++ /dev/null @@ -1,29 +0,0 @@ - - True - C:\Users\qcv846\AppData\Local\Temp\JetBrains\ReSharperPlatformVs17\vAny_625c2bcd\CoverageData\_SunSharp.-1442946053\Snapshot\snapshot.utdcvr - - - - - - - True - True - True - True - <SessionState ContinuousTestingMode="3" IsActive="True" Name="All tests from &lt;SunSharp.UnitTests&gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> - <And> - <Namespace>SunSharp.Tests</Namespace> - <Project Location="C:\10percent\SunSharp\SunSharp.Tests" Presentation="&lt;SunSharp.Tests&gt;" /> - </And> -</SessionState> - - <SessionState ContinuousTestingMode="3" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"> - <Solution /> -</SessionState> - True - True - True - True - True - True \ No newline at end of file From c1daae6fb7d0cd927a03bb401b1fcf5ceb9bd1fe Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Wed, 16 Apr 2025 15:55:21 +0200 Subject: [PATCH 05/27] some changes, tbd --- SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs | 5 +++-- SunSharp/SunSharp.csproj | 2 +- SunSharp/SunVoxException.cs | 7 +++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index 914e291..66d875b 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -167,13 +167,14 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t if (tracks * lines != data.Length) throw new ArgumentException( - $"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + $"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + // should throw an exception if the pattern in question does not exist SetPatternSize(slotId, patternId, tracks, lines); var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) - return; + throw new SunVoxException(0, $"{nameof(_lib.sv_get_pattern_data)} returned nullptr."); for (var i = 0; i < lines * tracks; i++) Marshal.WriteInt64(ptr, i * sizeof(long), unchecked((long)data[i].Data)); diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index d55c0b5..1b7f1b4 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -32,7 +32,7 @@ - @(ReleaseNoteLines, '%0a') + @(ReleaseNoteLines, '%0a%0d') diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 3e8d2fd..87b364a 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -2,6 +2,13 @@ namespace SunSharp { + /// + /// This exception signifies that SunVox returned an unexpected value, + /// which may be caused by being in the wrong state when calling methods. + /// In case of issues, please check STDOUT of the process hosting the SunVox library, + /// as more information may be provided there. + /// + /// public sealed class SunVoxException : Exception { private readonly uint _code; From 6832d91092bd8c0868bfaac967aa7563bfabf3ad Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sat, 13 Sep 2025 22:42:40 +0200 Subject: [PATCH 06/27] code quality changes; moving from Any to AutoFixture and FluentAssertions to AwesomeAssertions, general improvements --- LICENSE.md | 2 +- .../CodeGenerationTools/BaseGenerator.cs | 4 +- .../CodeGenerationContext.cs | 10 +- .../CodeGenerationTools/PathHelper.cs | 3 +- SunSharp.CodeGeneration/GlobalUsings.cs | 3 + .../NativeProxy/NativeProxyCodeGeneration.cs | 3 +- .../NativeProxy/NativeProxyGenerator.cs | 40 +- .../NativeProxy/TypeNameTranslation.cs | 5 +- SunSharp.CodeGeneration/SelfTests.cs | 20 - .../SunSharp.CodeGeneration.csproj | 20 +- SunSharp.IntegrationTests/.runsettings | 4 - SunSharp.IntegrationTests/AssemblyInfo.cs | 1 - .../BaseIntegrationTests.cs | 23 +- SunSharp.IntegrationTests/GlobalUsings.cs | 3 + .../Infrastructure/Configuration.cs | 5 - .../SunSharp.IntegrationTests.csproj | 24 +- .../SunVoxLibTests/PatternTests.cs | 40 +- SunSharp.Redistribution/LibraryLoader.cs | 23 +- .../SunSharp.Redistribution.csproj | 3 +- SunSharp.Redistribution/UnixLibraryHandler.cs | 9 +- SunSharp.Redistribution/license.txt | 2 +- SunSharp.Tests/AssemblyInfo.cs | 1 - SunSharp.Tests/Data/DataReaderTests.cs | 67 +- SunSharp.Tests/Data/DataTests.cs | 26 +- SunSharp.Tests/EffectExtensionsTests.cs | 13 +- SunSharp.Tests/FineTunePairTests.cs | 64 +- SunSharp.Tests/GlobalUsings.cs | 6 + SunSharp.Tests/HelperTests.cs | 40 +- SunSharp.Tests/LibraryVersionTests.cs | 25 +- SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs | 9 +- SunSharp.Tests/ModuleFlagsTests.cs | 48 +- .../Native/Loader/NativeProxyTests.cs | 79 +- ...unVoxLibNativeWrapperAudioCallbackTests.cs | 418 ++----- .../SunVoxLibNativeWrapperModulesTests.cs | 809 ++++--------- .../SunVoxLibNativeWrapperPatternsTests.cs | 1021 +++++++---------- .../Native/SunVoxLibNativeWrapperTests.cs | 588 ++++------ SunSharp.Tests/NoteTests.cs | 154 ++- SunSharp.Tests/PatternEventTests.cs | 320 +++--- SunSharp.Tests/SunSharp.Tests.csproj | 26 +- SunSharp.Tests/SunVoxExceptionTests.cs | 13 +- SunSharp.Tests/SunVoxLibExtensionsTests.cs | 36 +- SunSharp/Data/DataReader.cs | 18 +- SunSharp/Data/SongData.cs | 2 +- SunSharp/Effects.cs | 2 +- SunSharp/Enums.cs | 4 +- SunSharp/Helper.cs | 6 + SunSharp/ISunVoxLib.Modules.cs | 4 +- SunSharp/ISunVoxLib.Patterns.cs | 4 +- SunSharp/ISunVoxLib.cs | 18 +- SunSharp/Native/Loader/NativeProxy.cs | 7 +- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 116 +- SunSharp/Native/SunVoxLibNativeWrapper.cs | 78 +- SunSharp/Note.cs | 13 +- SunSharp/SunSharp.csproj | 14 +- SunSharp/SunVoxException.cs | 14 + SunSharp/license.txt | 2 +- 56 files changed, 1718 insertions(+), 2594 deletions(-) create mode 100644 SunSharp.CodeGeneration/GlobalUsings.cs delete mode 100644 SunSharp.CodeGeneration/SelfTests.cs delete mode 100644 SunSharp.IntegrationTests/.runsettings create mode 100644 SunSharp.IntegrationTests/GlobalUsings.cs delete mode 100644 SunSharp.IntegrationTests/Infrastructure/Configuration.cs create mode 100644 SunSharp.Tests/GlobalUsings.cs diff --git a/LICENSE.md b/LICENSE.md index e028818..82c5380 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Sotakebk +Copyright (c) 2023-2025 Sotakebk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs b/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs index a22be69..60561f8 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs @@ -1,6 +1,4 @@ -using System; - -namespace SunSharp.CodeGeneration.CodeGenerationTools; +namespace SunSharp.CodeGeneration.CodeGenerationTools; public abstract class BaseGenerator { diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs index e498574..e18f716 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs @@ -1,5 +1,4 @@ -using System; -using System.Text; +using System.Text; namespace SunSharp.CodeGeneration.CodeGenerationTools; @@ -7,14 +6,9 @@ public class CodeGenerationContext { private const int SpacesPerTab = 4; - private readonly StringBuilder _sb; + private readonly StringBuilder _sb = new(); private int _tabs; - public CodeGenerationContext() - { - _sb = new StringBuilder(); - } - public string GetTabs() { return new string(' ', _tabs * SpacesPerTab); diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs index 6b56505..e3b7b0f 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs +++ b/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs @@ -1,5 +1,4 @@ -using System; -using System.IO; +using System.IO; using System.Linq; using System.Runtime.CompilerServices; diff --git a/SunSharp.CodeGeneration/GlobalUsings.cs b/SunSharp.CodeGeneration/GlobalUsings.cs new file mode 100644 index 0000000..7d31e4f --- /dev/null +++ b/SunSharp.CodeGeneration/GlobalUsings.cs @@ -0,0 +1,3 @@ +global using AwesomeAssertions; +global using NUnit.Framework; +global using System; diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs index 39be9f7..64e5600 100644 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs @@ -1,5 +1,4 @@ using System.IO; -using NUnit.Framework; using SunSharp.CodeGeneration.CodeGenerationTools; namespace SunSharp.CodeGeneration.NativeProxy; @@ -18,6 +17,6 @@ public void CheckIfCodeIsUpToDate() TestContext.Out.Write(newSourceCode); - Assert.That(newSourceCode, Is.EqualTo(oldSourceCode)); + newSourceCode.Should().BeEquivalentTo(oldSourceCode); } } diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs index 6b804e1..9a61355 100644 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs +++ b/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs @@ -1,5 +1,4 @@ -using System; -using System.Linq; +using System.Linq; using System.Reflection; using SunSharp.CodeGeneration.CodeGenerationTools; using SunSharp.Native; @@ -10,8 +9,8 @@ namespace SunSharp.CodeGeneration.NativeProxy; public sealed class NativeProxyGenerator : BaseGenerator { - private DelegateDefinition[] delegateDefinitions = Array.Empty(); - private MethodDefinition[] methodDefinitions = Array.Empty(); + private DelegateDefinition[] _delegateDefinitions = []; + private MethodDefinition[] _methodDefinitions = []; private static string GetDelegateNameCode(DelegateDefinition definition) { @@ -54,16 +53,23 @@ private void ReadData() { var type = typeof(ISunVoxLibC); - delegateDefinitions = type.GetMethods() + _delegateDefinitions = [.. type.GetMethods() .Select(static m => - new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray())) - .DistinctBy(GetDelegateNameCode) - .ToArray(); - - methodDefinitions = type.GetMethods() + new DelegateDefinition(m.ReturnType, + [.. + m.GetParameters().Select(static p => p.ParameterType) + ]) + ) + .DistinctBy(GetDelegateNameCode)]; + + _methodDefinitions = [.. type.GetMethods() .Select(static m => new MethodDefinition(m, - new DelegateDefinition(m.ReturnType, m.GetParameters().Select(static p => p.ParameterType).ToArray()))) - .ToArray(); + new DelegateDefinition(m.ReturnType, + [.. + m.GetParameters().Select(static p => p.ParameterType)] + )) + ) + ]; } protected override string GenerateBody() @@ -86,7 +92,7 @@ protected override string GenerateBody() AppendLine("#region delegate definitions"); AppendLine(); - foreach (var d in delegateDefinitions.OrderBy(static d => GetDelegateNameCode(d))) + foreach (var d in _delegateDefinitions.OrderBy(static d => GetDelegateNameCode(d))) AppendDelegateDefinition(d); AppendLine("#endregion delegate definitions"); @@ -94,14 +100,14 @@ protected override string GenerateBody() AppendLine("#region delegates"); AppendLine(); - foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + foreach (var m in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendDelegateForMethodDefinition(m); AppendLine("#endregion delegates"); AppendLine(); AppendLine("#region interface"); AppendLine(); - foreach (var m in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendMethodDefinition(m); + foreach (var m in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendMethodDefinition(m); AppendLine("#endregion interface"); AppendLine(); @@ -122,7 +128,7 @@ private void AppendUnloadMethod() AppendLine("{"); AddIndent(() => { - foreach (var methodDefinition in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + foreach (var methodDefinition in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendLine($"{methodDefinition.MethodInfo.Name} = null;"); }); AppendLine("}"); @@ -134,7 +140,7 @@ private void AppendLoadMethod() AppendLine("{"); AddIndent(() => { - foreach (var methodDefinition in methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + foreach (var methodDefinition in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) { var name = methodDefinition.MethodInfo.Name; var delegateName = GetDelegateNameCode(methodDefinition.CorrespondingDelegate); diff --git a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs index 0ea82ee..5c7f2fe 100644 --- a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs +++ b/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Collections.Immutable; namespace SunSharp.CodeGeneration.NativeProxy; @@ -34,6 +33,6 @@ public static string TranslateToCapitalizedName(Type type) public static string Translate(Type type, ImmutableDictionary d) { var str = type.Name; - return d.TryGetValue(str, out var val) ? val : str; + return d.GetValueOrDefault(str, str); } } diff --git a/SunSharp.CodeGeneration/SelfTests.cs b/SunSharp.CodeGeneration/SelfTests.cs deleted file mode 100644 index c1a3e9f..0000000 --- a/SunSharp.CodeGeneration/SelfTests.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using NUnit.Framework; -using SunSharp.CodeGeneration.CodeGenerationTools; - -namespace SunSharp.CodeGeneration; - -public class SelfTests -{ - [Test] - public void PathHelperShouldFailToFindProjectRootDirectoryForInvalidArgument() - { - Assert.That( - static () => PathHelper.GetProjectFilePath("ThisFileDoesNotExist.cs", - Environment.GetFolderPath(Environment.SpecialFolder.Desktop)), - Throws.Exception.With.Message.EqualTo("Could not trace back to the project folder.")); - - Assert.That(static () => PathHelper.GetProjectFilePath("ThisFileDoesNotExist.cs", null), - Throws.ArgumentNullException); - } -} diff --git a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj index 4238455..85bce7e 100644 --- a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj +++ b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj @@ -1,22 +1,28 @@  - net6.0 + net8.0 enable - + 0.0.0.0 false true - - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.IntegrationTests/.runsettings b/SunSharp.IntegrationTests/.runsettings deleted file mode 100644 index b9e7ade..0000000 --- a/SunSharp.IntegrationTests/.runsettings +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/SunSharp.IntegrationTests/AssemblyInfo.cs b/SunSharp.IntegrationTests/AssemblyInfo.cs index 5e1c6ec..3b8beb8 100644 --- a/SunSharp.IntegrationTests/AssemblyInfo.cs +++ b/SunSharp.IntegrationTests/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using NUnit.Framework; [assembly: Parallelizable(ParallelScope.None)] [assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs index 3dccd51..d15c631 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -1,6 +1,4 @@ -using System; -using NUnit.Framework; -using SunSharp.Redistribution; +using SunSharp.Redistribution; namespace SunSharp.IntegrationTests; @@ -36,7 +34,7 @@ protected void SetUp() } catch (Exception e) { - TestContext.WriteLine(e); + TestContext.Out.WriteLine(e); } } @@ -45,20 +43,13 @@ protected void TearDown() { try { - try - { - var log = _lib?.GetLog(0x10000); - TestContext.WriteLine(log); - } - finally - { - _lib?.Deinitialize(); - _lib = null; - } + var log = _lib?.GetLog(0x10000); + TestContext.Out.WriteLine(log); } - catch (Exception e) + finally { - TestContext.WriteLine(e); + _lib?.Deinitialize(); + _lib = null; } } } diff --git a/SunSharp.IntegrationTests/GlobalUsings.cs b/SunSharp.IntegrationTests/GlobalUsings.cs new file mode 100644 index 0000000..7d31e4f --- /dev/null +++ b/SunSharp.IntegrationTests/GlobalUsings.cs @@ -0,0 +1,3 @@ +global using AwesomeAssertions; +global using NUnit.Framework; +global using System; diff --git a/SunSharp.IntegrationTests/Infrastructure/Configuration.cs b/SunSharp.IntegrationTests/Infrastructure/Configuration.cs deleted file mode 100644 index f12f8d7..0000000 --- a/SunSharp.IntegrationTests/Infrastructure/Configuration.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace SunSharp.IntegrationTests.Infrastructure; - -public static class Configuration -{ -} diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 5ac5d8a..787669b 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -1,24 +1,28 @@ - + - net6.0 + net8.0 enable - + 0.0.0.0 false true - - - - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs index 4c17fcc..6084cdf 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -1,9 +1,7 @@ using System.Linq; -using FluentAssertions; -using NUnit.Framework; +using AutoFixture; +using AutoFixture.NUnit4; using SunSharp.Data; -using TddXt.AnyRoot.Numbers; -using static TddXt.AnyRoot.Root; namespace SunSharp.IntegrationTests.SunVoxLibTests; @@ -26,25 +24,25 @@ public void EmptyProjectStartsWithOneEmptyPattern() lib.UnlockSlot(slotId); lib.CloseSlot(slotId); - data.Patterns.Count.Should().Be(1); - data.Patterns.First().Data.All(e => e.Data.Equals(0)).Should().BeTrue(); + data.Patterns.Should().ContainSingle(); + data.Patterns.First().Data.Should().OnlyContain(e => e == 0); } - [Test] - public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() + [Test, AutoData] + public void PatternCreationCloningThenReadingPropertiesWorksAsExpected(int x, int y) { const int slotId = 0; var firstPattern = new PatternData { - Data = new PatternEvent[] - { + Data = + [ 1, 0, 0, 0, 2, 2, 0, 0, 0, 3, 3, 0, 0, 0, 4, 4, 0, 0, 0, 5 - }, + ], Lines = 5, Tracks = 4, Position = (0, 0), @@ -53,20 +51,20 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() var secondPattern = new PatternData { - Data = new PatternEvent[] - { + Data = + [ 0, 1, 2, 0, 0, 3, 4, 0 - }, + ], Lines = 4, Tracks = 2, Position = (5, 4), Name = "Another" }; - var clonePosition = (X: Any.Integer(), Y: Any.Integer()); + var fixture = new Fixture(); var lib = GetLoadedLibrary(); @@ -75,12 +73,12 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() var onePatternId = lib.CreatePattern(slotId, firstPattern.Position.X, firstPattern.Position.Y, firstPattern.Tracks, firstPattern.Lines, name: firstPattern.Name); - lib.SetPatternData(slotId, onePatternId, firstPattern.Data.ToArray(), firstPattern.Tracks, firstPattern.Lines); + lib.SetPatternData(slotId, onePatternId, [.. firstPattern.Data], firstPattern.Tracks, firstPattern.Lines); - var clonePatternId = lib.ClonePattern(slotId, onePatternId, clonePosition.X, clonePosition.Y); + var clonePatternId = lib.ClonePattern(slotId, onePatternId, x, y); var anotherPatternId = lib.CreatePattern(slotId, secondPattern.Position.X, secondPattern.Position.Y, secondPattern.Tracks, secondPattern.Lines, name: secondPattern.Name); - lib.SetPatternData(slotId, anotherPatternId, secondPattern.Data.ToArray(), secondPattern.Tracks, + lib.SetPatternData(slotId, anotherPatternId, [.. secondPattern.Data], secondPattern.Tracks, secondPattern.Lines); var data = DataReader.ReadSongData(lib, slotId); @@ -112,9 +110,9 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() .Excluding(p => p.IsMuted) .Excluding(p => p.HasDynamicTempo) .Excluding(p => p.Position)); - data.Patterns.FirstOrDefault(p => p.Id == clonePatternId)?.Position - .Should() - .BeEquivalentTo(clonePosition); + data.Patterns.Should() + .Contain(p => p.Position.X == x && + p.Position.Y == y); // clone doesn't exist dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == clonePatternId).Should().Be(null); diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index 631fc32..b6940e0 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -9,7 +9,7 @@ namespace SunSharp.Redistribution /// /// Use this class to access a locally loaded SunVoxLib instance.
/// the library once, then . Construct a - /// if necessary.
+ /// if necessary.
/// You may also call to unload the library, which should also deinitialize the library, to avoid /// any memory leaks. /// You should keep the same library instance loaded in most use-cases. @@ -32,10 +32,8 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, - "runtimes/win-x64/native/sunvox.dll"), - Architecture.X86 => Path.Combine(Environment.CurrentDirectory, - "runtimes/win-x86-64/native/sunvox.dll"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/win-x64/native/sunvox.dll"), + Architecture.X86 => Path.Combine(Environment.CurrentDirectory, "runtimes/win-x86-64/native/sunvox.dll"), _ => throw new PlatformNotSupportedException(errorMessage) }; @@ -46,12 +44,9 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, - "runtimes/linux-x86-64/native/sunvox.so"), - Architecture.X86 => Path.Combine(Environment.CurrentDirectory, - "runtimes/linux-x86/native/sunvox.so"), - Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, - "runtimes/linux-arm64/native/sunvox.so"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-x86-64/native/sunvox.so"), + Architecture.X86 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-x86/native/sunvox.so"), + Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-arm64/native/sunvox.so"), _ => throw new PlatformNotSupportedException(errorMessage) }; @@ -62,10 +57,8 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, - "runtimes/macos-x86-64/native/sunvox.so"), - Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, - "runtimes/macos-arm64/native/sunvox.so"), + Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/macos-x86-64/native/sunvox.so"), + Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, "runtimes/macos-arm64/native/sunvox.so"), _ => throw new PlatformNotSupportedException(errorMessage) }; diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/SunSharp.Redistribution/SunSharp.Redistribution.csproj index 7051f52..b0bbfed 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -7,6 +7,7 @@ Sotakebk.SunSharp.Redistribution SunSharp.Redistribution 2.0.0-alpha0 + 0.0.0.0 Sotakebk SunSharp.Redistribution SunVox Library redistribution for SunSharp. @@ -16,7 +17,7 @@ sunvox;music;wrapper latest-recommended README.md - LICENSE.txt + license.txt True snupkg enable diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/SunSharp.Redistribution/UnixLibraryHandler.cs index bf8ac1e..8fc3117 100644 --- a/SunSharp.Redistribution/UnixLibraryHandler.cs +++ b/SunSharp.Redistribution/UnixLibraryHandler.cs @@ -22,14 +22,15 @@ public void LoadLibrary() lock (_lock) { if (IsLibraryLoaded) + { return; + } var ptr = dlopen(_path, 0); if (ptr == IntPtr.Zero) { var error = dlerror(); - throw new LibraryLoadingException( - $"Failed to load SunVoxLib from path '{_path}' with error '{error}'."); + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}' with error '{error}'."); } _ptr = ptr; @@ -41,7 +42,9 @@ public void UnloadLibrary() lock (_lock) { if (!IsLibraryLoaded) + { return; + } var code = dlclose(_ptr); if (code != 0) @@ -62,7 +65,9 @@ public Delegate GetFunctionByName(string name, Type delegateType) lock (_lock) { if (!IsLibraryLoaded) + { throw new LibraryLoadingException("SunVoxLib is not loaded."); + } var ptr = dlsym(_ptr, name); if (ptr == IntPtr.Zero) diff --git a/SunSharp.Redistribution/license.txt b/SunSharp.Redistribution/license.txt index 93543e8..8c07335 100644 --- a/SunSharp.Redistribution/license.txt +++ b/SunSharp.Redistribution/license.txt @@ -1,6 +1,6 @@ SunSharp is distributed under the MIT license: -Copyright (c) 2023 Sotakebk +Copyright (c) 2023-2025 Sotakebk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/SunSharp.Tests/AssemblyInfo.cs b/SunSharp.Tests/AssemblyInfo.cs index d417c0f..b6f25e6 100644 --- a/SunSharp.Tests/AssemblyInfo.cs +++ b/SunSharp.Tests/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using NUnit.Framework; [assembly: Parallelizable(ParallelScope.All)] [assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.Tests/Data/DataReaderTests.cs b/SunSharp.Tests/Data/DataReaderTests.cs index adf8557..f805efd 100644 --- a/SunSharp.Tests/Data/DataReaderTests.cs +++ b/SunSharp.Tests/Data/DataReaderTests.cs @@ -1,41 +1,33 @@ using System.Linq; -using FluentAssertions; -using NUnit.Framework; using SunSharp.Data; using SunSharp.Tests.Mocks; -using static TddXt.AnyRoot.Root; namespace SunSharp.Tests.Data; public class DataReaderTests { - private static ModuleData CreateValidModuleData() + private static ModuleData CreateValidModuleData(ModuleData moduleData) { - var moduleData = Any.Instance(); - for (var i = 0; i < moduleData.Controllers.Count; i++) + { moduleData.Controllers.ElementAt(i).Id = i; + } return moduleData; } - private static PatternData CreateValidPatternData() + private static PatternData CreateValidPatternData(PatternData patternData) { - var patternData = Any.Instance(); - patternData.IsDestructive = patternData.Data.Any(static e => e.Effect.IsDestructive()); patternData.IsLinear = patternData.Data.All(static e => !e.Effect.IsNonLinear()); patternData.HasDynamicTempo = patternData.Data.Any(static e => e.Effect.ChangesTempo()); patternData.Lines = patternData.Data.Count; patternData.Tracks = 1; - return patternData; } - private static SongData CreateValidSongData() + private static SongData CreateValidSongData(SongData songData) { - var songData = Any.Instance(); - foreach (var pattern in songData.Patterns) { pattern.IsDestructive = pattern.Data.Any(static e => e.Effect.IsDestructive()); @@ -46,54 +38,49 @@ private static SongData CreateValidSongData() } foreach (var module in songData.Modules) + { for (var i = 0; i < module.Controllers.Count; i++) + { module.Controllers.ElementAt(i).Id = i; + } + } songData.FirstLine = songData.Patterns.Min(static p => p.Position.X); songData.LastLine = songData.Patterns.Max(static p => p.Position.X + p.Lines); - songData.Lines = songData.LastLine - songData.FirstLine; + songData.Lines = (uint)(songData.LastLine - songData.FirstLine); return songData; } - [Test] - public void DataReaderReadSongDataShouldReturnEquivalentDataAsPutInMock() + [Test, AutoData] + public void DataReaderReadSongDataShouldReturnEquivalentDataAsPutInMock(SongData songData) { - var songData = CreateValidSongData(); - + var validSongData = CreateValidSongData(songData); var libraryMock = SunVoxLibMockProvider.BuildMock() - .WithSongData(0, songData) + .WithSongData(0, validSongData) .Build(); - var data = DataReader.ReadSongData(libraryMock, 0); - - data.Should().BeEquivalentTo(songData); + data.Should().BeEquivalentTo(validSongData); } - [Test] - public void DataReaderReadModuleShouldReturnEquivalentDataAsPutInMock() + [Test, AutoData] + public void DataReaderReadModuleShouldReturnEquivalentDataAsPutInMock(ModuleData moduleData) { - var moduleData = CreateValidModuleData(); - + var validModuleData = CreateValidModuleData(moduleData); var libraryMock = SunVoxLibMockProvider.BuildMock() - .WithModuleData(0, new[] { moduleData }) + .WithModuleData(0, [validModuleData]) .Build(); - - var data = DataReader.ReadModule(libraryMock, 0, moduleData.Id); - - data.Should().BeEquivalentTo(moduleData); + var data = DataReader.ReadModule(libraryMock, 0, validModuleData.Id); + data.Should().BeEquivalentTo(validModuleData); } - [Test] - public void DataReaderReadPatternShouldReturnEquivalentDataAsPutInMock() + [Test, AutoData] + public void DataReaderReadPatternShouldReturnEquivalentDataAsPutInMock(PatternData patternData) { - var moduleData = CreateValidPatternData(); - + var validPatternData = CreateValidPatternData(patternData); var libraryMock = SunVoxLibMockProvider.BuildMock() - .WithPatternData(0, new[] { moduleData }) + .WithPatternData(0, [validPatternData]) .Build(); - - var data = DataReader.ReadPattern(libraryMock, 0, moduleData.Id); - - data.Should().BeEquivalentTo(moduleData); + var data = DataReader.ReadPattern(libraryMock, 0, validPatternData.Id); + data.Should().BeEquivalentTo(validPatternData); } } diff --git a/SunSharp.Tests/Data/DataTests.cs b/SunSharp.Tests/Data/DataTests.cs index 1cd83d6..b801c61 100644 --- a/SunSharp.Tests/Data/DataTests.cs +++ b/SunSharp.Tests/Data/DataTests.cs @@ -1,42 +1,30 @@ -using FluentAssertions; -using NUnit.Framework; -using SunSharp.Data; -using static TddXt.AnyRoot.Root; +using SunSharp.Data; namespace SunSharp.Tests.Data; public class DataTests { - [Test] - public void SongDataDeepCopyShouldBeEquivalent() + [Test, AutoData] + public void SongDataDeepCopyShouldBeEquivalent(SongData songData, SongData anotherSongData) { - var songData = Any.Instance(); - var anotherSongData = Any.Instance(); - var clone = songData.DeepCopy(); clone.Should().BeEquivalentTo(songData); clone.Should().NotBeEquivalentTo(anotherSongData); } - [Test] - public void PatternDataDeepCopyShouldBeEquivalent() + [Test, AutoData] + public void PatternDataDeepCopyShouldBeEquivalent(PatternData patternData, PatternData anotherPatternData) { - var patternData = Any.Instance(); - var anotherPatternData = Any.Instance(); - var clone = patternData.DeepCopy(); clone.Should().BeEquivalentTo(patternData); clone.Should().NotBeEquivalentTo(anotherPatternData); } - [Test] - public void ModuleDataDeepCopyShouldBeEquivalent() + [Test, AutoData] + public void ModuleDataDeepCopyShouldBeEquivalent(ModuleData moduleData, ModuleData anotherModuleData) { - var moduleData = Any.Instance(); - var anotherModuleData = Any.Instance(); - var clone = moduleData.DeepCopy(); clone.Should().BeEquivalentTo(moduleData); diff --git a/SunSharp.Tests/EffectExtensionsTests.cs b/SunSharp.Tests/EffectExtensionsTests.cs index a17b441..62b9e61 100644 --- a/SunSharp.Tests/EffectExtensionsTests.cs +++ b/SunSharp.Tests/EffectExtensionsTests.cs @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using NUnit.Framework; +using System.Linq; namespace SunSharp.Tests; @@ -38,12 +36,9 @@ public void ShouldReturnCorrectExtensionMethodValuesForDefinedEnumValues() var expectedToBeDestructive = destructiveEffects.Contains(effect); var expectedToBeTimeModifying = timeModifyingEffects.Contains(effect); - Assert.Multiple(() => - { - Assert.That(effect.IsNonLinear(), Is.EqualTo(expectedToBeNonLinear)); - Assert.That(effect.IsDestructive(), Is.EqualTo(expectedToBeDestructive)); - Assert.That(effect.ChangesTempo(), Is.EqualTo(expectedToBeTimeModifying)); - }); + effect.IsNonLinear().Should().Be(expectedToBeNonLinear); + effect.IsDestructive().Should().Be(expectedToBeDestructive); + effect.ChangesTempo().Should().Be(expectedToBeTimeModifying); } } } diff --git a/SunSharp.Tests/FineTunePairTests.cs b/SunSharp.Tests/FineTunePairTests.cs index 1b43c61..24afe1b 100644 --- a/SunSharp.Tests/FineTunePairTests.cs +++ b/SunSharp.Tests/FineTunePairTests.cs @@ -1,25 +1,15 @@ -using NUnit.Framework; -using static TddXt.AnyRoot.Root; - -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class FineTunePairTests { - [Test] - public void FineTunePairFromPackedValueHasExpectedValues() + [Test, AutoData] + public void FineTunePairFromPackedValueHasExpectedValues(short fineTuneValue, short relativeNoteValue) { - var fineTuneValue = Any.Instance(); - var relativeNoteValue = Any.Instance(); - var packedValue = Helper.PackTwoSignedShorts(fineTuneValue, relativeNoteValue); - var fineTune = new FineTunePair(packedValue); - Assert.Multiple(() => - { - Assert.That(fineTune.Value, Is.EqualTo(packedValue)); - Assert.That(fineTune.FineTune, Is.EqualTo(fineTuneValue)); - Assert.That(fineTune.RelativeNote, Is.EqualTo(relativeNoteValue)); - }); + fineTune.Value.Should().Be(packedValue); + fineTune.FineTune.Should().Be(fineTuneValue); + fineTune.RelativeNote.Should().Be(relativeNoteValue); } [Test] @@ -27,13 +17,10 @@ public void FineTunePairToStringReturnsExpectedString() { var fineTune = new FineTunePair(0, 0); const string message = "Fine-tune: 0, relative note: 0."; - - Assert.That(fineTune.ToString(), Is.EqualTo(message)); - + fineTune.ToString().Should().Be(message); var anotherFineTune = new FineTunePair(9241, -9823); const string anotherMessage = "Fine-tune: 9241, relative note: -9823."; - - Assert.That(anotherFineTune.ToString(), Is.EqualTo(anotherMessage)); + anotherFineTune.ToString().Should().Be(anotherMessage); } [Test] @@ -42,23 +29,16 @@ public void FineTunePairEqualityComparisonShouldJustWork() var a = new FineTunePair(0, 1); var b = new FineTunePair(0, 1); var c = new FineTunePair(1, 0); - - Assert.Multiple(() => - { -#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - Assert.That(a.Equals(b)); - Assert.That(a.Equals(a)); - Assert.That(a.Equals((object?)b)); - Assert.That(a.Equals((object?)a)); - Assert.That(a.Equals(null), Is.False); - Assert.That(a.Equals(new object()), Is.False); - Assert.That(new Note(1).Equals(2), Is.False); - - Assert.That(a == b); - Assert.That(a != c); - Assert.That(a == c, Is.False); -#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - }); + a.Equals(b).Should().BeTrue(); + a.Equals(a).Should().BeTrue(); + a.Equals((object?)b).Should().BeTrue(); + a.Equals((object?)a).Should().BeTrue(); + a.Equals(null).Should().BeFalse(); + a.Equals(new object()).Should().BeFalse(); + new Note(1).Equals(2).Should().BeFalse(); + (a == b).Should().BeTrue(); + (a != c).Should().BeTrue(); + (a == c).Should().BeFalse(); } [Test] @@ -67,11 +47,7 @@ public void FineTunePairGetHashCodeShouldPreserveComparability() var a = new FineTunePair(0, 1); var b = new FineTunePair(0, 1); var c = new FineTunePair(1, 0); - - Assert.Multiple(() => - { - Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); - Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); - }); + a.GetHashCode().Should().Be(b.GetHashCode()); + a.GetHashCode().Should().NotBe(c.GetHashCode()); } } diff --git a/SunSharp.Tests/GlobalUsings.cs b/SunSharp.Tests/GlobalUsings.cs new file mode 100644 index 0000000..537990d --- /dev/null +++ b/SunSharp.Tests/GlobalUsings.cs @@ -0,0 +1,6 @@ +global using AwesomeAssertions; +global using AutoFixture.NUnit4; +global using NUnit.Framework; +global using System; +global using AutoFixture; +global using NSubstitute; diff --git a/SunSharp.Tests/HelperTests.cs b/SunSharp.Tests/HelperTests.cs index 096679c..a5b0a43 100644 --- a/SunSharp.Tests/HelperTests.cs +++ b/SunSharp.Tests/HelperTests.cs @@ -1,7 +1,5 @@ -using System; -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; -using NUnit.Framework; namespace SunSharp.Tests; @@ -15,10 +13,8 @@ public class HelperTests public void ToShortBitwiseShouldGiveSameValueForArgument(short testValue) { var value = (uint)unchecked((ushort)testValue); - var result = Helper.ToShortBitwise(value); - - Assert.That(result, Is.EqualTo(testValue)); + result.Should().Be(testValue); } [TestCase(-1)] @@ -29,18 +25,15 @@ public void ToShortBitwiseShouldGiveSameValueForArgument(short testValue) public void ToShortBitwiseShouldGiveSameValueForArgumentWithHighBits(short testValue) { var value = unchecked((ushort)testValue) | 0xFFFF0000; - var result = Helper.ToShortBitwise(value); - - Assert.That(result, Is.EqualTo(testValue)); + result.Should().Be(testValue); } [Test] public void CopyIntArrayShouldSkipNegativeOnesReturnEmptyArrayForNullPtr() { var array = Helper.CopyIntArraySkipNegativeOnes(IntPtr.Zero, 10); - - Assert.That(array, Is.EqualTo(Array.Empty())); + array.Should().BeEmpty(); } [Test] @@ -58,8 +51,7 @@ public void CopyIntArraySkipNegativeOnesShouldReturnValidData() { originalArrayHandle.Free(); } - - Assert.That(array, Is.EqualTo(originalArray.Where(static i => i != -1).ToArray())); + array.Should().BeEquivalentTo(originalArray.Where(static i => i != -1).ToArray()); } [TestCase(0, 0, 0u)] @@ -72,8 +64,7 @@ public void CopyIntArraySkipNegativeOnesShouldReturnValidData() public void UnpackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) { var result = Helper.UnpackTwoSignedShorts(value); - - Assert.That(result, Is.EqualTo((lowerBytes, upperBytes))); + result.Should().Be((lowerBytes, upperBytes)); } [TestCase(0, 0, 0u)] @@ -86,8 +77,7 @@ public void UnpackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, sho public void PackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) { var result = Helper.PackTwoSignedShorts(lowerBytes, upperBytes); - - Assert.That(result, Is.EqualTo(value)); + result.Should().Be(value); } [TestCase(0x7800, 16.35)] // C0 @@ -97,12 +87,8 @@ public void FrequencyFromPitchShouldReturnExpectedValues(double input, double ex { var result = Helper.PitchToFrequency(input); var resultFloat = Helper.PitchToFrequency((float)input); - - Assert.Multiple(() => - { - Assert.That(result, Is.EqualTo(expected).Within(expected * 0.01)); - Assert.That(resultFloat, Is.EqualTo(expected).Within(expected * 0.01)); - }); + result.Should().BeApproximately(expected, expected * 0.01); + resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); } [TestCase(16.35, 0x7800)] // C0 @@ -112,11 +98,7 @@ public void PitchFromFrequencyShouldReturnExpectedValues(double input, double ex { var result = Helper.FrequencyToPitch(input); var resultFloat = Helper.FrequencyToPitch((float)input); - - Assert.Multiple(() => - { - Assert.That(result, Is.EqualTo(expected).Within(expected * 0.01)); - Assert.That(resultFloat, Is.EqualTo(expected).Within(expected * 0.01)); - }); + result.Should().BeApproximately(expected, expected * 0.01); + resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); } } diff --git a/SunSharp.Tests/LibraryVersionTests.cs b/SunSharp.Tests/LibraryVersionTests.cs index 0068a33..77f0b55 100644 --- a/SunSharp.Tests/LibraryVersionTests.cs +++ b/SunSharp.Tests/LibraryVersionTests.cs @@ -1,6 +1,4 @@ -using NUnit.Framework; - -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class LibraryVersionTests { @@ -11,22 +9,16 @@ public void LibraryVersionConstructorShouldSetPropertiesAsExpected() const byte minor = 2; const byte minor2 = 3; var version = new LibraryVersion(major, minor, minor2); - Assert.Multiple(() => - { - Assert.That(version.Major, Is.EqualTo(1)); - Assert.That(version.Minor, Is.EqualTo(2)); - Assert.That(version.Minor2, Is.EqualTo(3)); - }); + version.Major.Should().Be(1); + version.Minor.Should().Be(2); + version.Minor2.Should().Be(3); const int code = (major << 16) | (minor << 8) | minor2; var anotherVersion = new LibraryVersion(code); - Assert.Multiple(() => - { - Assert.That(anotherVersion.Major, Is.EqualTo(1)); - Assert.That(anotherVersion.Minor, Is.EqualTo(2)); - Assert.That(anotherVersion.Minor2, Is.EqualTo(3)); - }); + anotherVersion.Major.Should().Be(1); + anotherVersion.Minor.Should().Be(2); + anotherVersion.Minor2.Should().Be(3); } [Test] @@ -37,7 +29,6 @@ public void LibraryVersionToStringReturnsExpectedFormat() const byte minor2 = 3; var version = new LibraryVersion(major, minor, minor2); var value = $"SunVox Lib v{major}.{minor}.{minor2}"; - - Assert.That(version.ToString(), Is.EqualTo(value)); + version.ToString().Should().Be(value); } } diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs index 4d6c5e2..bdf0544 100644 --- a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs +++ b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs @@ -1,5 +1,4 @@ using System.Linq; -using NSubstitute; using SunSharp.Data; namespace SunSharp.Tests.Mocks; @@ -22,9 +21,9 @@ public SunVoxLibMockProvider WithSongData(int slotId, SongData songData) _mock.GetCurrentLineWithTenthPart(slotId).Returns(songData.CurrentLine * 10); _mock.GetSongLengthInLines(slotId).Returns(songData.Lines); - WithModuleData(slotId, songData.Modules.ToArray()); + WithModuleData(slotId, [.. songData.Modules]); - WithPatternData(slotId, songData.Patterns.ToArray()); + WithPatternData(slotId, [.. songData.Patterns]); return this; } @@ -62,8 +61,8 @@ public SunVoxLibMockProvider WithModuleData(int slotId, ModuleData[] moduleData) _mock.GetModulePosition(slotId, module.Id).Returns(module.Position); _mock.GetModuleFlags(slotId, module.Id).Returns(new ModuleFlags(module.Flags)); _mock.GetModuleType(slotId, module.Id).Returns(module.Type); - _mock.GetModuleInputs(slotId, module.Id).Returns(module.Inputs.ToArray()); - _mock.GetModuleOutputs(slotId, module.Id).Returns(module.Outputs.ToArray()); + _mock.GetModuleInputs(slotId, module.Id).Returns([.. module.Inputs]); + _mock.GetModuleOutputs(slotId, module.Id).Returns([.. module.Outputs]); _mock.GetModuleControllerCount(slotId, module.Id).Returns(module.Controllers.Count); foreach (var controller in module.Controllers) diff --git a/SunSharp.Tests/ModuleFlagsTests.cs b/SunSharp.Tests/ModuleFlagsTests.cs index 21f45af..b280a52 100644 --- a/SunSharp.Tests/ModuleFlagsTests.cs +++ b/SunSharp.Tests/ModuleFlagsTests.cs @@ -1,5 +1,4 @@ -using NUnit.Framework; -using static SunSharp.Tests.Mocks.ModuleFlagsHelper; +using static SunSharp.Tests.Mocks.ModuleFlagsHelper; namespace SunSharp.Tests; @@ -12,15 +11,12 @@ public void ModuleFlagsPropertiesShouldReturnValuesAsExpected() { var flag = new ModuleFlags(i); - Assert.Multiple(() => - { - Assert.That(flag.Exists, Is.EqualTo((i & (1 << 0)) != 0)); - Assert.That(flag.Generator, Is.EqualTo((i & (1 << 1)) != 0)); - Assert.That(flag.Effect, Is.EqualTo((i & (1 << 2)) != 0)); - Assert.That(flag.Mute, Is.EqualTo((i & (1 << 3)) != 0)); - Assert.That(flag.Solo, Is.EqualTo((i & (1 << 4)) != 0)); - Assert.That(flag.Bypass, Is.EqualTo((i & (1 << 5)) != 0)); - }); + flag.Exists.Should().Be((i & (1 << 0)) != 0); + flag.Generator.Should().Be((i & (1 << 1)) != 0); + flag.Effect.Should().Be((i & (1 << 2)) != 0); + flag.Mute.Should().Be((i & (1 << 3)) != 0); + flag.Solo.Should().Be((i & (1 << 4)) != 0); + flag.Bypass.Should().Be((i & (1 << 5)) != 0); } } @@ -28,25 +24,16 @@ public void ModuleFlagsPropertiesShouldReturnValuesAsExpected() public void ModuleFlagsInputCountAndOutputCountReturnExpectedValues() { var exampleFlags = new ModuleFlags(0); - Assert.Multiple(() => - { - Assert.That(exampleFlags.InputUpperCount, Is.EqualTo(0)); - Assert.That(exampleFlags.OutputUpperCount, Is.EqualTo(0)); - }); + exampleFlags.InputUpperCount.Should().Be(0); + exampleFlags.OutputUpperCount.Should().Be(0); var otherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 255, outputCount: 255)); - Assert.Multiple(() => - { - Assert.That(otherExampleFlags.InputUpperCount, Is.EqualTo(255)); - Assert.That(otherExampleFlags.OutputUpperCount, Is.EqualTo(255)); - }); + otherExampleFlags.InputUpperCount.Should().Be(255); + otherExampleFlags.OutputUpperCount.Should().Be(255); var andAnotherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 4, outputCount: 8)); - Assert.Multiple(() => - { - Assert.That(andAnotherExampleFlags.InputUpperCount, Is.EqualTo(4)); - Assert.That(andAnotherExampleFlags.OutputUpperCount, Is.EqualTo(8)); - }); + andAnotherExampleFlags.InputUpperCount.Should().Be(4); + andAnotherExampleFlags.OutputUpperCount.Should().Be(8); } [TestCase(0u)] @@ -58,11 +45,8 @@ public void ModuleFlagsImplicitConversionShouldReturnInternalValue(uint value) var exampleFlags = (ModuleFlags)value; var valueFromConversion = (uint)exampleFlags; - Assert.Multiple(() => - { - Assert.That(exampleFlags.Value, Is.EqualTo(value)); - Assert.That(valueFromConversion, Is.EqualTo(exampleFlags.Value)); - Assert.That(valueFromConversion, Is.EqualTo(value)); - }); + exampleFlags.Value.Should().Be(value); + valueFromConversion.Should().Be(exampleFlags.Value); + valueFromConversion.Should().Be(value); } } diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs index b922ac7..9df1d2c 100644 --- a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -1,9 +1,7 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using NSubstitute; +using System.Threading.Tasks; using NSubstitute.ExceptionExtensions; -using NUnit.Framework; using SunSharp.Native; using SunSharp.Native.Loader; @@ -16,7 +14,9 @@ private static void AssertThatGetFunctionByNameWasCalledForAllMethods(ILibraryHa var methods = typeof(ISunVoxLibC).GetMethods(); foreach (var method in methods) + { handler.Received(1).GetFunctionByName(method.Name, Arg.Any()); + } } private static void AssertThatGetFunctionByNameWasCalledForNoMethods(ILibraryHandler handler) @@ -30,7 +30,7 @@ private static Dictionary PrepareHandlerAndGetDelegateDictiona handler.GetFunctionByName(Arg.Any(), Arg.Any()) .Returns(callInfo => { - var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + var @delegate = (Delegate)Substitute.For([callInfo.Arg()], []); delegates.Add(callInfo.Arg(), @delegate); return @delegate; }); @@ -96,7 +96,7 @@ public void NativeProxyLoadShouldNotCallHandlerLoadIfLibraryLoadedButProxyIsNot( } [Test] - public void NativProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() + public void NativeProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(false); @@ -106,7 +106,9 @@ public void NativProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() var proxy = new NativeProxy(handler); // when - Assert.That(() => proxy.Load(), Throws.Exception.EqualTo(innerException)); + proxy.Invoking(p => p.Load()) + .Should().Throw() + .Which.Should().BeEquivalentTo(innerException); Received.InOrder(() => { handler.Received(1).LoadLibrary(); @@ -153,12 +155,12 @@ public void NativeProxyGetExceptionReturnsExpectedMessage(bool libraryLoaded, bo else proxy.Unload(); - Assert.That(proxy.IsLoaded, Is.EqualTo(proxyLoaded)); + proxy.IsLoaded.Should().Be(proxyLoaded); handler.IsLibraryLoaded.Returns(libraryLoaded); var exception = proxy.GetNoDelegateException(); - Assert.That(exception.Message, Is.EqualTo(message)); + exception.Message.Should().Be(message); } [Test] @@ -173,11 +175,8 @@ public void NativeProxyGetExceptionReturnsExpectedMessageOnFailWhenGettingLibrar var exception = proxy.GetNoDelegateException(); - Assert.Multiple(() => - { - Assert.That(exception.Message, Is.EqualTo(message)); - Assert.That(exception.InnerException, Is.EqualTo(innerException)); - }); + exception.Message.Should().Be(message); + exception.InnerException.Should().Be(innerException); } private static object? GetDefault(Type type) @@ -194,7 +193,7 @@ public void NativeProxyShouldAskForAndCallProvidedDelegates() libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) .Returns(callInfo => { - var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + var @delegate = (Delegate)Substitute.For([callInfo.Arg()], []); delegates.Add(callInfo.Arg(), @delegate); return @delegate; }); @@ -203,7 +202,9 @@ public void NativeProxyShouldAskForAndCallProvidedDelegates() proxy.Load(); foreach (var methodName in typeof(ISunVoxLibC).GetMethods().Select(m => m.Name)) - Assert.That(delegates.ContainsKey(methodName)); + { + delegates.Should().ContainKey(methodName); + } foreach (var method in typeof(ISunVoxLibC).GetMethods()) { @@ -223,7 +224,7 @@ public void NativeProxyUnloadShouldCallDeinitWhenAvailable() libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) .Returns(callInfo => { - var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + var @delegate = (Delegate)Substitute.For([callInfo.Arg()], []); delegates.Add(callInfo.Arg(), @delegate); return @delegate; }); @@ -250,7 +251,7 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) .Returns(callInfo => { - var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + var @delegate = (Delegate)Substitute.For([callInfo.Arg()], []); delegates.Add(callInfo.Arg(), @delegate); return @delegate; }); @@ -266,7 +267,9 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW method.DynamicInvoke().Throws(exception); // WHEN - THEN - Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + proxy.Invoking(p => p.Unload()) + .Should().Throw() + .Which.Should().BeEquivalentTo(exception); // AND method.Received(1).DynamicInvoke(); @@ -282,7 +285,7 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW libraryHandler.GetFunctionByName(Arg.Any(), Arg.Any()) .Returns(callInfo => { - var @delegate = (Delegate)Substitute.For(new[] { callInfo.Arg() }, Array.Empty()); + var @delegate = (Delegate)Substitute.For([callInfo.Arg()], []); delegates.Add(callInfo.Arg(), @delegate); return @delegate; }); @@ -298,7 +301,9 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW libraryHandler.When(static handler => handler.UnloadLibrary()).Throw(exception); // WHEN - THEN - Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + proxy.Invoking(p => p.Unload()) + .Should().Throw() + .Which.Should().BeEquivalentTo(exception); // AND method.Received(1).DynamicInvoke(); @@ -322,12 +327,14 @@ public void NativeProxyUnloadShouldThrowBothExpectedExceptionsAndCallExpectedMet method.DynamicInvoke().Throws(exception); // WHEN - THEN - Assert.That(() => proxy.Unload(), Throws.Exception.EqualTo(exception)); + proxy.Invoking(p => p.Unload()) + .Should().Throw() + .Which.Should().BeEquivalentTo(exception); // AND method.Received(1).DynamicInvoke(); libraryHandler.Received(0).UnloadLibrary(); - Assert.That(proxy.IsLoaded, Is.True); + proxy.IsLoaded.Should().BeTrue(); } [Test] @@ -342,30 +349,32 @@ public void NativeProxyUnloadShouldThrowWhenDeinitDelegateWasNotProvided() proxy.Load(); // WHEN - THEN - Assert.That(() => proxy.Unload(), - Throws.InvalidOperationException - .With.Message - .EqualTo($"{nameof(ISunVoxLibC.sv_deinit)} was null, but library and proxy are both loaded.")); + proxy.Invoking(p => p.Unload()) + .Should().Throw() + .WithMessage($"{nameof(ISunVoxLibC.sv_deinit)} was null, but library and proxy are both loaded."); // AND libraryHandler.Received(0).UnloadLibrary(); - Assert.That(proxy.IsLibraryLoaded); + proxy.IsLibraryLoaded.Should().BeTrue(); } [Test] - public void NativeProxyInterfaceCallsShouldThrowInvalidOperationExceptionBeforeLoadCalled() + public async Task NativeProxyInterfaceCallsShouldThrowInvalidOperationExceptionBeforeLoadCalled() { var libraryHandler = Substitute.For(); libraryHandler.IsLibraryLoaded.Returns(false); var proxy = new NativeProxy(libraryHandler); - foreach (var method in typeof(ISunVoxLibC).GetMethods()) + var methods = typeof(ISunVoxLibC).GetMethods(); + + await Parallel.ForEachAsync(methods, (method, _) => { var parameters = method.GetParameters().Select(static p => GetDefault(p.ParameterType)).ToArray(); - Assert.That(() => method.Invoke(proxy, parameters), - Throws.Exception.With.InnerException.TypeOf() - .And.InnerException.With.Message - .EqualTo("Missing delegate. Library is not loaded, proxy is not loaded.")); - } + method.Invoking(m => m.Invoke(proxy, parameters)) + .Should().Throw() + .WithInnerException() + .WithMessage("Missing delegate. Library is not loaded, proxy is not loaded."); + return ValueTask.CompletedTask; + }); } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs index b25b475..b718b16 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -1,35 +1,26 @@ -using System; -using System.Runtime.InteropServices; -using NSubstitute; -using NUnit.Framework; +using System.Runtime.InteropServices; using SunSharp.Native; -using TddXt.AnyRoot.Collections; -using TddXt.AnyRoot.Numbers; -using static TddXt.AnyRoot.Root; namespace SunSharp.Tests.Native; public class SunVoxLibNativeWrapperAudioCallbackTests { + private const int ErrorResponseCode = -1; + #region input short, output short - [TestCase(true)] - [TestCase(false)] - public void - ForOutputShortInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + [Test, AutoData] + public void ForOutputShortInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { var library = Substitute.For(); + var outputBuffer = new short[256]; + var inputBuffer = new short[256]; var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(32); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(32); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -39,43 +30,32 @@ public void copiedInputBuffer = new short[callInfo.ArgAt(1) * 2]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 0, 2, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } #endregion input short, output short #region input float, output short - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void - ForOutputShortInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + ForOutputShortInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var outputBuffer = new short[256]; + var inputBuffer = new float[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(32); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(32); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -85,43 +65,32 @@ public void copiedInputBuffer = new float[callInfo.ArgAt(1) * 2]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 2, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } #endregion #region input short, output float - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void - ForOutputFloatInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + ForOutputFloatInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var outputBuffer = new float[256]; + var inputBuffer = new short[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(32); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(32); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -131,38 +100,28 @@ public void copiedInputBuffer = new short[callInfo.ArgAt(1) * 2]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 0, 2, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } #endregion #region output only, float, mono - [TestCase(true)] - [TestCase(false)] - public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue) + [Test, AutoData] + public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var buffer = new float[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var buffer = Any.Array(25); var copiedBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When( static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -176,29 +135,19 @@ public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCod // then library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length, latency, outTime); - Assert.Multiple(() => - { - Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedBuffer.Should().BeEquivalentTo(buffer); + returnedValue.Should().Be(expectedValue); } - [TestCase(-1)] - [TestCase(2)] - public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + [Test, AutoData] + public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(returnCode); - var buffer = Any.Array(1); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + .Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime), - Throws.Exception.TypeOf()); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Mono, latency, outTime)).Should().Throw(); // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } @@ -207,19 +156,16 @@ public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) #region output only, float, stereo - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void ForFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + bool expectedValue, int latency, uint outTime) { + var buffer = new float[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var buffer = Any.Array(32); var copiedBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When( static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -233,47 +179,32 @@ public void ForFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBool // then library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length / 2, latency, outTime); - Assert.Multiple(() => - { - Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedBuffer.Should().BeEquivalentTo(buffer); + returnedValue.Should().Be(expectedValue); } - [Test] - public void ForFloatInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo() + [Test, AutoData] + public void ForFloatInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var buffer = Any.Array(31); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), - Throws.ArgumentException.With.Message.EqualTo("Buffer size is not a multiple of two.")); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw().WithMessage("Buffer size is not a multiple of two."); // then library.Received(0).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - [TestCase(-1)] - [TestCase(2)] - public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + [Test, AutoData] + public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) { + var buffer = new float[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(returnCode); - var buffer = Any.Array(32); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + .Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), - Throws.Exception.TypeOf()); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw(); // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } @@ -282,18 +213,15 @@ public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) #region output only, short, mono - [TestCase(true)] - [TestCase(false)] - public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue) + [Test, AutoData] + public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var buffer = new short[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var buffer = Any.Array(25); var copiedBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When( static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -307,29 +235,20 @@ public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCod // then library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length, latency, outTime); - Assert.Multiple(() => - { - Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedBuffer.Should().BeEquivalentTo(buffer); + returnedValue.Should().Be(expectedValue); } - [TestCase(-1)] - [TestCase(2)] - public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + [Test, AutoData] + public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) { + var buffer = new short[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(returnCode); - var buffer = Any.Array(1); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + .Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Mono, latency, outTime), - Throws.Exception.TypeOf()); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Mono, latency, outTime)).Should().Throw(); // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } @@ -338,19 +257,16 @@ public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) #region output only, short, stereo - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void ForShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + bool expectedValue, int latency, uint outTime) { + var buffer = new short[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var buffer = Any.Array(32); var copiedBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When( static l => l.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -364,47 +280,32 @@ public void ForShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBool // then library.Received(1).sv_audio_callback(Arg.Any(), buffer.Length / 2, latency, outTime); - Assert.Multiple(() => - { - Assert.That(copiedBuffer, Is.EquivalentTo(buffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedBuffer.Should().BeEquivalentTo(buffer); + returnedValue.Should().Be(expectedValue); } - [Test] - public void ForShortInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo() + [Test, AutoData] + public void ForShortInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(short[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var buffer = Any.Array(31); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), - Throws.ArgumentException.With.Message.EqualTo("Buffer size is not a multiple of two.")); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw().WithMessage("Buffer size is not a multiple of two."); // then library.Received(0).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - [TestCase(-1)] - [TestCase(2)] - public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + [Test, AutoData] + public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) { + var buffer = new short[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(returnCode); - var buffer = Any.Array(32); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + .Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime), - Throws.Exception.TypeOf()); - + wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw(); // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } @@ -413,22 +314,17 @@ public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) #region output float mono, input float mono - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void ForOutputFloatInMonoInputFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode( - bool expectedValue) + bool expectedValue, float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(25); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(25); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -438,90 +334,61 @@ public void ForOutputFloatInMonoInputFloatInMonoShouldCallExpectedMethodAndRetur copiedInputBuffer = new float[callInfo.ArgAt(1)]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length, latency, outTime, 1, 1, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } - [Test] - public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfBufferSizeMismatched() + [Test, AutoData] + public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfBufferSizeMismatched(int latency, uint outTime) { + var outputBuffer = new float[10]; + var inputBuffer = new float[11]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any()) + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(1); - var outputBuffer = Any.Array(1); - var inputBuffer = Any.Array(2); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - // when - Assert.That( - () => wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, - outTime), Throws.ArgumentException); - + wrapper.Invoking(w => w.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, outTime)) + .Should().Throw(); // then - library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any(), Arg.Any()); + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - [TestCase(-1)] - [TestCase(2)] - public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(int returnCode) + [Test, AutoData] + public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any()) - .Returns(returnCode); - var outputBuffer = Any.Array(25); - var inputBuffer = Any.Array(25); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(ErrorResponseCode); // when - Assert.That( - () => wrapper.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, - outTime), Throws.Exception.TypeOf()); - + wrapper.Invoking(w => w.AudioCallback(outputBuffer, AudioChannels.Mono, inputBuffer, AudioChannels.Mono, latency, outTime)).Should().Throw(); // then - library.Received(1).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any(), Arg.Any()); + library.Received(1).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } #endregion output float mono, input float mono #region output float stereo, input float mono - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void - ForOutputFloatInStereoInputFloatInMonoShouldCallExpectedMethodWithHalfInputFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + ForOutputFloatInStereoInputFloatInMonoShouldCallExpectedMethodWithHalfInputFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var outputBuffer = new float[256]; + var inputBuffer = new float[128]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(32); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(16); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -531,66 +398,48 @@ public void copiedInputBuffer = new float[callInfo.ArgAt(1)]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Mono, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } - [Test] - public void ForOutputFloatInStereoInputFloatInMonoShouldThrowDueToBufferSizeMismatch() + [Test, AutoData] + public void ForOutputFloatInStereoInputFloatInMonoShouldThrowDueToBufferSizeMismatch(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(1); - var outputBuffer = Any.Array(32); - var inputBuffer = Any.Array(17); // 17 is not half of 32 - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - // when - Assert.That( - () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Mono, latency, - outTime), Throws.ArgumentException); + wrapper.Invoking(w => w.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Mono, latency, outTime)) + .Should().Throw(); // then - library.Received(0).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, - Arg.Any()); + library.Received(0).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, Arg.Any()); } #endregion output float stereo, input float mono #region input float stereo, output float stereo - [TestCase(true)] - [TestCase(false)] + [Test, AutoData] public void - ForOutputFloatInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( - bool expectedValue) + ForOutputFloatInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) { + var outputBuffer = new float[256]; + var inputBuffer = new float[256]; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); - var outputBuffer = Any.Array(32); var copiedOutputBuffer = Array.Empty(); - var inputBuffer = Any.Array(32); var copiedInputBuffer = Array.Empty(); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); library.When(static l => l.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => @@ -600,62 +449,45 @@ public void copiedInputBuffer = new float[callInfo.ArgAt(1) * 2]; Marshal.Copy(callInfo.ArgAt(6), copiedInputBuffer, 0, copiedInputBuffer.Length); }); - - // when var returnedValue = wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime); - - // then library.Received(1).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 2, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(copiedOutputBuffer, Is.EquivalentTo(outputBuffer)); - Assert.That(copiedInputBuffer, Is.EquivalentTo(inputBuffer)); - Assert.That(returnedValue, Is.EqualTo(expectedValue)); - }); + copiedOutputBuffer.Should().BeEquivalentTo(outputBuffer); + copiedInputBuffer.Should().BeEquivalentTo(inputBuffer); + returnedValue.Should().Be(expectedValue); } - [Test] - public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenInputBufferSizeNotDivisibleByTwo() + [Test, AutoData] + public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenInputBufferSizeNotDivisibleByTwo(int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var outputBuffer = Any.Array(32); - var inputBuffer = Any.Array(31); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + // Use provided parameters, but ensure inputBuffer is not divisible by two and outputBuffer is divisible by two + var outputBuffer = new float[256]; + var inputBuffer = new float[255]; // when - Assert.That( - () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, - outTime), - Throws.ArgumentException.With.Message.EqualTo("Input buffer size is not a multiple of two.")); - + wrapper.Invoking(w => w.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime)) + .Should().Throw() + .WithMessage("Input buffer size is not a multiple of two."); // then - library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any(), Arg.Any()); + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - [Test] - public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenOutputBufferSizeNotDivisibleByTwo() + [Test, AutoData] + public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenOutputBufferSizeNotDivisibleByTwo(int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var outputBuffer = Any.Array(31); - var inputBuffer = Any.Array(32); - var latency = Any.Integer(); - var outTime = Any.UnsignedInt(); - + // Use provided parameters, but ensure outputBuffer is not divisible by two and inputBuffer is divisible by two + var outputBuffer = new float[31]; + var inputBuffer = new float[32]; // when - Assert.That( - () => wrapper.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, - outTime), - Throws.ArgumentException.With.Message.EqualTo("Output buffer size is not a multiple of two.")); - + wrapper.Invoking(w => w.AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, latency, outTime)) + .Should().Throw() + .WithMessage("Output buffer size is not a multiple of two."); // then - library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), - Arg.Any(), Arg.Any(), Arg.Any()); + library.Received(0).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } #endregion input float stereo, output float stereo diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index 9094f45..5b283c9 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -1,34 +1,24 @@ -using System; -using System.Runtime.InteropServices; -using NSubstitute; -using NUnit.Framework; +using System.Runtime.InteropServices; using SunSharp.Native; -using TddXt.AnyRoot.Collections; -using TddXt.AnyRoot.Numbers; -using TddXt.AnyRoot.Strings; -using static TddXt.AnyRoot.Root; namespace SunSharp.Tests.Native; public class SunVoxLibNativeWrapperModulesTests { - public static TestCaseData[] ModuleInputOutputAndResult => new TestCaseData[] - { + public static readonly TestCaseData[] ModuleInputOutputAndResult = + [ new(new[] { -1 }, Array.Empty()), new(new[] { 0 }, new[] { 0 }), new(new[] { -1, 0, 1, 2 }, new[] { 0, 1, 2 }), new(new[] { -1, -1, 1, -1, 2, -1, -1, 3 }, new[] { 1, 2, 3 }) - }; + ]; - [Test] - public void ConnectModuleShouldCallExpectedMethod() + [Test, AutoData] + public void ConnectModuleShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var slotId = Any.Integer(); - var source = Any.Integer(); - var destination = Any.Integer(); // when wrapper.ConnectModule(slotId, source, destination); @@ -37,34 +27,23 @@ public void ConnectModuleShouldCallExpectedMethod() library.Received(1).sv_connect_module(slotId, source, destination); } - [Test] - public void ConnectModuleShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void ConnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); - var source = Any.Integer(); - var destination = Any.Integer(); // when - then - Assert.That(() => wrapper.ConnectModule(slotId, source, destination), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.ConnectModule(slotId, source, destination)).Should().Throw(); // then library.Received(1).sv_connect_module(slotId, source, destination); } - [Test] - public void CreateModuleShouldCallExpectedMethod() - { - var newModuleId = Any.Integer(); - var moduleName = Any.String(); - var moduleType = Any.String(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); + [Test, AutoData] + public void CreateModuleShouldCallExpectedMethod(int newModuleId, string moduleName, string moduleType, int slotId, int x, int y, int z) + { var receivedModuleName = string.Empty; var receivedModuleType = string.Empty; @@ -82,49 +61,33 @@ public void CreateModuleShouldCallExpectedMethod() // when var value = wrapper.CreateModule(slotId, moduleType, moduleName, x, y, z); - - // then library.Received(1).sv_new_module(slotId, Arg.Any(), Arg.Any(), x, y, z); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(newModuleId)); - Assert.That(receivedModuleName, Is.EqualTo(moduleName)); - Assert.That(receivedModuleType, Is.EqualTo(moduleType)); - }); + value.Should().Be(newModuleId); + receivedModuleName.Should().Be(moduleName); + receivedModuleType.Should().Be(moduleType); } - [Test] - public void CreateModuleShouldThrowOnNegativeReturnedValue() + [Test, AutoData] + public void CreateModuleShouldThrowOnNegativeReturnedValue(string moduleName, string moduleType, int slotId, int x, int y, int z) { - var moduleName = Any.String(); - var moduleType = Any.String(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.CreateModule(slotId, moduleType, moduleName, x, y, z), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.CreateModule(slotId, moduleType, moduleName, x, y, z)).Should().Throw(); // then library.Received(1).sv_new_module(slotId, Arg.Any(), Arg.Any(), x, y, z); } - [Test] - public void DisconnectModuleShouldCallExpectedMethod() + [Test, AutoData] + public void DisconnectModuleShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var slotId = Any.Integer(); - var source = Any.Integer(); - var destination = Any.Integer(); // when wrapper.DisconnectModule(slotId, source, destination); @@ -133,34 +96,27 @@ public void DisconnectModuleShouldCallExpectedMethod() library.Received(1).sv_disconnect_module(slotId, source, destination); } - [Test] - public void DisconnectModuleShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void DisconnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); - var source = Any.Integer(); - var destination = Any.Integer(); // when - then - Assert.That(() => wrapper.DisconnectModule(slotId, source, destination), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.DisconnectModule(slotId, source, destination)).Should().Throw(); // then library.Received(1).sv_disconnect_module(slotId, source, destination); } - [Test] - public void FindModuleShouldCallExpectedMethod() + [Test, AutoData] + public void FindModuleShouldCallExpectedMethod(int foundModuleId, string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var foundModuleId = Any.Integer(); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(foundModuleId); - var moduleName = Any.String(); var receivedString = string.Empty; - var slotId = Any.Integer(); library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -169,22 +125,17 @@ public void FindModuleShouldCallExpectedMethod() // then library.Received(1).sv_find_module(slotId, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(foundModuleId)); - Assert.That(receivedString, Is.EqualTo(moduleName)); - }); + value.Should().Be(foundModuleId); + receivedString.Should().Be(moduleName); } - [Test] - public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound() + [Test, AutoData] + public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound(string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-1); - var moduleName = Any.String(); var receivedString = string.Empty; - var slotId = Any.Integer(); library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -193,58 +144,44 @@ public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound() // then library.Received(1).sv_find_module(slotId, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(null)); - Assert.That(receivedString, Is.EqualTo(moduleName)); - }); + value.Should().BeNull(); + receivedString.Should().Be(moduleName); } - [Test] - public void FindModuleShouldThrowOnUnexpectedValue() + [Test, AutoData] + public void FindModuleShouldThrowOnUnexpectedValue(string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-2); - var moduleName = Any.String(); - var slotId = Any.Integer(); // when - Assert.That(() => wrapper.FindModule(slotId, moduleName), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.FindModule(slotId, moduleName)).Should().Throw(); // then library.Received(1).sv_find_module(slotId, Arg.Any()); } - [Test] - public void GetModuleColorShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleColorShouldCallExpectedMethodAndReturnValue(byte r, byte g, byte b, int moduleId, int slotId) { - var r = Any.Byte(); - var g = Any.Byte(); - var b = Any.Byte(); var code = r | (g << 8) | (b << 16); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); // when var value = wrapper.GetModuleColor(slotId, moduleId); // then library.Received(1).sv_get_module_color(slotId, moduleId); - Assert.Multiple(() => { Assert.That(value, Is.EqualTo((r, g, b))); }); + value.Should().Be((r, g, b)); } - [Test] - public void GetModuleControllerCountShouldCallExpectedMethod() + [Test, AutoData] + public void GetModuleControllerCountShouldCallExpectedMethod(int moduleId, int slotId, int moduleCount) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var moduleCount = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(moduleCount); @@ -254,36 +191,28 @@ public void GetModuleControllerCountShouldCallExpectedMethod() // then library.Received(1).sv_get_number_of_module_ctls(slotId, moduleId); - Assert.That(value, Is.EqualTo(moduleCount)); + value.Should().Be(moduleCount); } - [Test] - public void GetModuleControllerCountShouldCallExpectedMethodAndThrowOnNegativeValue() + [Test, AutoData] + public void GetModuleControllerCountShouldCallExpectedMethodAndThrowOnNegativeValue(int slotId, int moduleId) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetModuleControllerCount(slotId, moduleId), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetModuleControllerCount(slotId, moduleId)).Should().Throw(); // then library.Received(1).sv_get_number_of_module_ctls(slotId, moduleId); } - [Test] - public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Integer(); library.sv_get_module_ctl_group(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); // when @@ -291,19 +220,14 @@ public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_group(slotId, moduleId, controllerId); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } - [Test] - public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Integer(); - var scalingMode = Any.Instance(); library.sv_get_module_ctl_max(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -312,19 +236,14 @@ public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } - [Test] - public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Integer(); - var scalingMode = Any.Instance(); library.sv_get_module_ctl_min(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -333,17 +252,14 @@ public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } - [Test] - public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull() + [Test, AutoData] + public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_ctl_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when @@ -351,18 +267,14 @@ public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull() // then library.Received(1).sv_get_module_ctl_name(slotId, moduleId, controllerId); - Assert.That(receivedControllerName, Is.EqualTo(null)); + receivedControllerName.Should().BeNull(); } - [Test] - public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString() + [Test, AutoData] + public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString(string controllerName, int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var controllerName = Any.String(); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); var stringPointer = IntPtr.Zero; string? receivedControllerName; @@ -381,18 +293,14 @@ public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString() // then library.Received(1).sv_get_module_ctl_name(slotId, moduleId, controllerId); - Assert.That(receivedControllerName, Is.EqualTo(controllerName)); + receivedControllerName.Should().Be(controllerName); } - [Test] - public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Integer(); library.sv_get_module_ctl_offset(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); // when @@ -400,18 +308,14 @@ public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_offset(slotId, moduleId, controllerId); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } - [Test] - public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, ControllerType returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Instance(); library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns((int)returnedValue); // when @@ -419,37 +323,28 @@ public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_type(slotId, moduleId, controllerId); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } - [Test] - public void GetModuleControllerTypeShouldCallExpectedMethodAndThrowOnUnexpectedValue() + [Test, AutoData] + public void GetModuleControllerTypeShouldCallExpectedMethodAndThrowOnUnexpectedValue(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetModuleControllerType(slotId, moduleId, controllerId), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetModuleControllerType(slotId, moduleId, controllerId)).Should().Throw(); // then library.Received(1).sv_get_module_ctl_type(slotId, moduleId, controllerId); } - [Test] - public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var returnedValue = Any.Integer(); - var scalingMode = Any.Instance(); library.sv_get_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -458,18 +353,19 @@ public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); - Assert.That(value, Is.EqualTo(returnedValue)); + value.Should().Be(returnedValue); } [TestCase(true)] [TestCase(false)] public void GetModuleExistsShouldCallExpectedMethodAndReturnValue(bool exists) { + var fixture = new Fixture(); var flagsValue = (uint)(ModuleFlags.SV_MODULE_FLAG_EXISTS * (exists ? 1 : 0)); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); + var moduleId = fixture.Create(); + var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -477,17 +373,14 @@ public void GetModuleExistsShouldCallExpectedMethodAndReturnValue(bool exists) // then library.Received(1).sv_get_module_flags(slotId, moduleId); - Assert.That(receivedExists, Is.EqualTo(exists)); + receivedExists.Should().Be(exists); } - [Test] - public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue(FineTunePair moduleFineTune, int moduleId, int slotId) { - var moduleFineTune = Any.Instance(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_finetune(Arg.Any(), Arg.Any()).Returns(moduleFineTune.Value); // when @@ -495,17 +388,14 @@ public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_finetune(slotId, moduleId); - Assert.That(receivedFineTune, Is.EqualTo(moduleFineTune)); + receivedFineTune.Should().Be(moduleFineTune); } - [Test] - public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue(uint flagsValue, int moduleId, int slotId) { - var flagsValue = Any.UnsignedInt(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -513,18 +403,19 @@ public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_flags(slotId, moduleId); - Assert.That(flags, Is.EqualTo((ModuleFlags)flagsValue)); + flags.Should().Be((ModuleFlags)flagsValue); } [TestCaseSource(nameof(ModuleInputOutputAndResult))] public void GetModuleInputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) { - var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_INPUTS_OFF) | - ModuleFlags.SV_MODULE_FLAG_EXISTS); + var fixture = new Fixture(); + var flagsValue = unchecked((uint)((nativeData.Length << ModuleFlags.SV_MODULE_INPUTS_OFF) | + ModuleFlags.SV_MODULE_FLAG_EXISTS)); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); + var moduleId = fixture.Create(); + var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // assumes that GetModuleInputs frees this memory @@ -534,23 +425,22 @@ public void GetModuleInputsShouldCallExpectedMethodsAndReturnValue(int[] nativeD // when var receivedInputs = wrapper.GetModuleInputs(slotId, moduleId); - - // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(1).sv_get_module_inputs(slotId, moduleId); - Assert.That(receivedInputs, Is.EquivalentTo(expectedOutput)); + receivedInputs.Should().BeEquivalentTo(expectedOutput); } [Test] public void GetModuleInputsShouldSkipCallsIfDoesNotExist() { const uint flagsValue = 0u; - Assert.That(new ModuleFlags(flagsValue).Exists, Is.False); + var fixture = new Fixture(); + new ModuleFlags(flagsValue).Exists.Should().BeFalse(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); + var moduleId = fixture.Create(); + var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -559,19 +449,20 @@ public void GetModuleInputsShouldSkipCallsIfDoesNotExist() // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(0).sv_get_module_inputs(slotId, moduleId); - Assert.That(receivedInputs, Is.EquivalentTo(Array.Empty())); + receivedInputs.Should().BeEquivalentTo(Array.Empty()); } [Test] public void GetModuleInputsShouldSkipCallsIfZeroInputs() { const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; - Assert.That(new ModuleFlags(flagsValue).InputUpperCount, Is.EqualTo(0)); + var fixture = new Fixture(); + new ModuleFlags(flagsValue).InputUpperCount.Should().Be(0); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); + var moduleId = fixture.Create(); + var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -580,33 +471,28 @@ public void GetModuleInputsShouldSkipCallsIfZeroInputs() // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(0).sv_get_module_inputs(slotId, moduleId); - Assert.That(receivedInputs, Is.EquivalentTo(Array.Empty())); + receivedInputs.Should().BeEquivalentTo(Array.Empty()); } - [Test] - public void GetModuleNameShouldCallExpectedMethodAndReturnNullWhenNullPointer() + [Test, AutoData] + public void GetModuleNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(int moduleId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when var receivedModuleName = wrapper.GetModuleName(slotId, moduleId); // then library.Received(1).sv_get_module_name(slotId, moduleId); - Assert.That(receivedModuleName, Is.EqualTo(null)); + receivedModuleName.Should().BeNull(); } - [Test] - public void GetModuleNameShouldCallExpectedMethodAndReturnString() + [Test, AutoData] + public void GetModuleNameShouldCallExpectedMethodAndReturnString(int moduleId, int slotId, string moduleName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleName = Any.String(); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); var stringPointer = IntPtr.Zero; string? receivedModuleName; @@ -625,18 +511,19 @@ public void GetModuleNameShouldCallExpectedMethodAndReturnString() // then library.Received(1).sv_get_module_name(slotId, moduleId); - Assert.That(receivedModuleName, Is.EqualTo(moduleName)); + receivedModuleName.Should().Be(moduleName); } [TestCaseSource(nameof(ModuleInputOutputAndResult))] public void GetModuleOutputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) { + var fixture = new Fixture(); var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_OUTPUTS_OFF) | ModuleFlags.SV_MODULE_FLAG_EXISTS); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); + var moduleId = fixture.Create(); + var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // assumes that GetModuleOutputs frees this memory @@ -646,23 +533,19 @@ public void GetModuleOutputsShouldCallExpectedMethodsAndReturnValue(int[] native // when var receivedOutputs = wrapper.GetModuleOutputs(slotId, moduleId); - - // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(1).sv_get_module_outputs(slotId, moduleId); - Assert.That(receivedOutputs, Is.EquivalentTo(expectedOutput)); + receivedOutputs.Should().BeEquivalentTo(expectedOutput); } - [Test] - public void GetModuleOutputsShouldSkipCallsIfDoesNotExist() + [Test, AutoData] + public void GetModuleOutputsShouldSkipCallsIfDoesNotExist(int moduleId, int slotId) { const uint flagsValue = 0u; - Assert.That(new ModuleFlags(flagsValue).Exists, Is.False); + new ModuleFlags(flagsValue).Exists.Should().BeFalse(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -671,19 +554,17 @@ public void GetModuleOutputsShouldSkipCallsIfDoesNotExist() // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(0).sv_get_module_outputs(slotId, moduleId); - Assert.That(receivedOutputs, Is.EquivalentTo(Array.Empty())); + receivedOutputs.Should().BeEmpty(); } - [Test] - public void GetModuleOutputsShouldSkipCallsIfZeroOutputs() + [Test, AutoData] + public void GetModuleOutputsShouldSkipCallsIfZeroOutputs(int moduleId, int slotId) { const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; - Assert.That(new ModuleFlags(flagsValue).InputUpperCount, Is.EqualTo(0)); + new ModuleFlags(flagsValue).InputUpperCount.Should().Be(0); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -692,17 +573,12 @@ public void GetModuleOutputsShouldSkipCallsIfZeroOutputs() // then library.Received(1).sv_get_module_flags(slotId, moduleId); library.Received(0).sv_get_module_outputs(slotId, moduleId); - Assert.That(receivedOutputs, Is.EquivalentTo(Array.Empty())); + receivedOutputs.Should().BeEmpty(); } - [Test] - public void GetModulePositionShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetModulePositionShouldCallExpectedMethodAndReturnValue(int moduleId, int slotId, short x, short y) { - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Short(); - var y = Any.Short(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_module_xy(Arg.Any(), Arg.Any()).Returns(Helper.PackTwoSignedShorts(x, y)); @@ -711,15 +587,12 @@ public void GetModulePositionShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_module_xy(slotId, moduleId); - Assert.That(value, Is.EqualTo((x, y))); + value.Should().Be((x, y)); } - [Test] - public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer() + [Test, AutoData] + public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer(int moduleId, int slotId) { - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_module_type(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); @@ -728,20 +601,16 @@ public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer() var receivedModuleName = wrapper.GetModuleType(slotId, moduleId); // then library.Received(1).sv_get_module_type(slotId, moduleId); - Assert.That(receivedModuleName, Is.EqualTo(null)); + receivedModuleName.Should().BeNull(); } - [Test] - public void GetModuleTypeShouldCallExpectedMethodAndReturnString() + [Test, AutoData] + public void GetModuleTypeShouldCallExpectedMethodAndReturnString(int moduleId, int slotId, string moduleType) { - var moduleType = Any.String(); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var stringPointer = IntPtr.Zero; - string? receivedModuleType; - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); + var stringPointer = IntPtr.Zero; + string? receivedModuleType; try { @@ -758,15 +627,12 @@ public void GetModuleTypeShouldCallExpectedMethodAndReturnString() // then library.Received(1).sv_get_module_type(slotId, moduleId); - Assert.That(receivedModuleType, Is.EqualTo(moduleType)); + receivedModuleType.Should().Be(moduleType); } - [Test] - public void GetUpperModuleCountShouldCallExpectedMethod() + [Test, AutoData] + public void GetUpperModuleCountShouldCallExpectedMethod(int slotId, int moduleCount) { - var slotId = Any.Integer(); - var moduleCount = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_modules(Arg.Any()).Returns(moduleCount); @@ -776,31 +642,26 @@ public void GetUpperModuleCountShouldCallExpectedMethod() // then library.Received(1).sv_get_number_of_modules(slotId); - Assert.That(value, Is.EqualTo(moduleCount)); + value.Should().Be(moduleCount); } - [Test] - public void GetUpperModuleCountShouldCallExpectedMethodAndThrowOnNegativeValue() + [Test, AutoData] + public void GetUpperModuleCountShouldCallExpectedMethodAndThrowOnNegativeValue(int slotId) { - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_modules(Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetUpperModuleCount(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetUpperModuleCount(slotId)).Should().Throw(); // then library.Received(1).sv_get_number_of_modules(slotId); } - [Test] - public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod() + [Test, AutoData] + public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var buffer = Any.Array(); var receivedBuffer = Array.Empty(); var library = Substitute.For(); @@ -820,35 +681,27 @@ public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod() // then library.Received(1).sv_metamodule_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); + receivedBuffer.Should().BeEquivalentTo(buffer); } - [Test] - public void LoadIntoMetaModuleFromMemoryShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadIntoMetaModuleFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); // when - Assert.That(() => wrapper.LoadIntoMetaModule(slotId, moduleId, buffer), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadIntoMetaModule(slotId, moduleId, buffer)).Should().Throw(); // then library.Received(1).sv_metamodule_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); } - [Test] - public void LoadIntoMetaModuleShouldCallExpectedMethod() + [Test, AutoData] + public void LoadIntoMetaModuleShouldCallExpectedMethod(int slotId, int moduleId, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); var receivedString = string.Empty; var library = Substitute.For(); @@ -861,34 +714,26 @@ public void LoadIntoMetaModuleShouldCallExpectedMethod() // then library.Received(1).sv_metamodule_load(slotId, moduleId, Arg.Any()); - Assert.That(receivedString, Is.EqualTo(path)); + receivedString.Should().Be(path); } - [Test] - public void LoadIntoMetaModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadIntoMetaModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.LoadIntoMetaModule(slotId, moduleId, path), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadIntoMetaModule(slotId, moduleId, path)).Should().Throw(); // then library.Received(1).sv_metamodule_load(slotId, moduleId, Arg.Any()); } - [Test] - public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod() + [Test, AutoData] + public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var buffer = Any.Array(); var receivedBuffer = Array.Empty(); var library = Substitute.For(); @@ -908,35 +753,27 @@ public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod() // then library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); + receivedBuffer.Should().BeEquivalentTo(buffer); } - [Test] - public void LoadIntoVorbisPLayerFromMemoryShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadIntoVorbisPLayerFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_vplayer_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); // when - Assert.That(() => wrapper.LoadIntoVorbisPLayer(slotId, moduleId, buffer), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadIntoVorbisPLayer(slotId, moduleId, buffer)).Should().Throw(); // then library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); } - [Test] - public void LoadIntoVorbisPLayerShouldCallExpectedMethod() + [Test, AutoData] + public void LoadIntoVorbisPLayerShouldCallExpectedMethod(int slotId, int moduleId, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); var receivedString = string.Empty; var library = Substitute.For(); @@ -949,37 +786,26 @@ public void LoadIntoVorbisPLayerShouldCallExpectedMethod() // then library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); - Assert.That(receivedString, Is.EqualTo(path)); + receivedString.Should().Be(path); } - [Test] - public void LoadIntoVorbisPLayerShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadIntoVorbisPLayerShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.LoadIntoVorbisPLayer(slotId, moduleId, path), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadIntoVorbisPLayer(slotId, moduleId, path)).Should().Throw(); // then library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); } - [Test] - public void LoadModuleFromMemoryShouldCallExpectedMethod() - { - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); - var slotId = Any.Integer(); - var newModuleId = Any.Integer(); - var buffer = Any.Array(); + [Test, AutoData] + public void LoadModuleFromMemoryShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, byte[] buffer) + { var receivedBuffer = Array.Empty(); var library = Substitute.For(); @@ -996,46 +822,29 @@ public void LoadModuleFromMemoryShouldCallExpectedMethod() // when var value = wrapper.LoadModule(slotId, buffer, x, y, z); - - // then library.Received(1).sv_load_module_from_memory(slotId, Arg.Any(), (uint)buffer.Length, x, y, z); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(newModuleId)); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); - }); + value.Should().Be(newModuleId); + receivedBuffer.Should().BeEquivalentTo(buffer); } - [Test] - public void LoadModuleFromMemoryShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadModuleFromMemoryShouldThrowOnNonZeroReturnCode(int x, int y, int z, int slotId, byte[] buffer) { - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); - var slotId = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.LoadModule(slotId, buffer, x, y, z), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadModule(slotId, buffer, x, y, z)).Should().Throw(); // then library.Received(1).sv_load_module_from_memory(slotId, Arg.Any(), (uint)buffer.Length, x, y, z); } - [Test] - public void LoadModuleShouldCallExpectedMethod() - { - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); - var slotId = Any.Integer(); - var newModuleId = Any.Integer(); - var path = Any.String(); + [Test, AutoData] + public void LoadModuleShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, string path) + { var receivedString = string.Empty; var library = Substitute.For(); @@ -1048,44 +857,29 @@ public void LoadModuleShouldCallExpectedMethod() // when var value = wrapper.LoadModule(slotId, path, x, y, z); - - // then library.Received(1).sv_load_module(slotId, Arg.Any(), x, y, z); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(newModuleId)); - Assert.That(receivedString, Is.EqualTo(path)); - }); + value.Should().Be(newModuleId); + receivedString.Should().Be(path); } - [Test] - public void LoadModuleShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadModuleShouldThrowOnNonZeroReturnCode(int x, int y, int z, int slotId, string path) { - var x = Any.Integer(); - var y = Any.Integer(); - var z = Any.Integer(); - var slotId = Any.Integer(); - var path = Any.String(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); // when - Assert.That(() => wrapper.LoadModule(slotId, path, x, y, z), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadModule(slotId, path, x, y, z)).Should().Throw(); // then library.Received(1).sv_load_module(slotId, Arg.Any(), x, y, z); } - [Test] - public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod() + [Test, AutoData] + public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var sampleSlot = Any.Integer(); - var buffer = Any.Array(); var receivedBuffer = Array.Empty(); var library = Substitute.For(); @@ -1103,21 +897,14 @@ public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod() // when wrapper.LoadSamplerSample(slotId, moduleId, buffer, sampleSlot); - - // then library.Received(1) .sv_sampler_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length, sampleSlot); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); + receivedBuffer.Should().BeEquivalentTo(buffer); } - [Test] - public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int sampleSlot, byte[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var sampleSlot = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1125,21 +912,16 @@ public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode() .Returns(-1); // when - Assert.That(() => wrapper.LoadSamplerSample(slotId, moduleId, buffer, sampleSlot), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadSamplerSample(slotId, moduleId, buffer, sampleSlot)).Should().Throw(); // then library.Received(1) .sv_sampler_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length, sampleSlot); } - [Test] - public void LoadSamplerSampleShouldCallExpectedMethod() + [Test, AutoData] + public void LoadSamplerSampleShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var sampleSlot = Any.Integer(); var receivedString = string.Empty; var library = Substitute.For(); @@ -1149,41 +931,28 @@ public void LoadSamplerSampleShouldCallExpectedMethod() // when wrapper.LoadSamplerSample(slotId, moduleId, path, sampleSlot); - - // then library.Received(1).sv_sampler_load(slotId, moduleId, Arg.Any(), sampleSlot); - Assert.That(receivedString, Is.EqualTo(path)); + receivedString.Should().Be(path); } - [Test] - public void LoadSamplerSampleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LoadSamplerSampleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int sampleSlot, string path) { - var path = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var sampleSlot = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.LoadSamplerSample(slotId, moduleId, path, sampleSlot), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LoadSamplerSample(slotId, moduleId, path, sampleSlot)).Should().Throw(); // then library.Received(1).sv_sampler_load(slotId, moduleId, Arg.Any(), sampleSlot); } - [Test] - public void ReadModuleCurveShouldCallExpectedMethod() + [Test, AutoData] + public void ReadModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var samplesWritten = Any.Integer(); - var curveId = Any.Integer(); - var buffer = Any.Array(); - var receivedBuffer = Array.Empty(); + var samplesWritten = buffer.Length; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1193,52 +962,35 @@ public void ReadModuleCurveShouldCallExpectedMethod() Arg.Any(), Arg.Any())) .Do(callInfo => { - receivedBuffer = new float[callInfo.ArgAt(4)]; + var receivedBuffer = new int[callInfo.ArgAt(4)]; Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, callInfo.ArgAt(4)); }); // when var value = wrapper.ReadModuleCurve(slotId, moduleId, curveId, buffer); - - // then library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 0); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(samplesWritten)); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); - }); + value.Should().Be(samplesWritten); } - [Test] - public void ReadModuleCurveShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void ReadModuleCurveShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int curveId, float[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var curveId = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.ReadModuleCurve(slotId, moduleId, curveId, buffer), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.ReadModuleCurve(slotId, moduleId, curveId, buffer)).Should().Throw(); // then library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 0); } - [Test] - public void ReadModuleScopeShouldCallExpectedMethod() + [Test, AutoData] + public void ReadModuleScopeShouldCallExpectedMethod(int moduleId, int slotId, short[] buffer, uint readSamples, AudioChannel channel) { - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var readSamples = Any.UnsignedInt(); - var buffer = Any.Array(16); var receivedBuffer = Array.Empty(); - var channel = Any.Instance(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1260,19 +1012,13 @@ public void ReadModuleScopeShouldCallExpectedMethod() // then library.Received(1) .sv_get_module_scope2(slotId, moduleId, (int)channel, Arg.Any(), (uint)buffer.Length); - Assert.Multiple(() => - { - Assert.That(receivedBuffer, Is.EquivalentTo(buffer)); - Assert.That(value, Is.EqualTo(readSamples)); - }); + value.Should().Be((int)readSamples); + receivedBuffer.Should().BeEquivalentTo(buffer); } - [Test] - public void RemoveModuleShouldCallExpectedMethod() + [Test, AutoData] + public void RemoveModuleShouldCallExpectedMethod(int slotId, int moduleId) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(0); @@ -1284,36 +1030,28 @@ public void RemoveModuleShouldCallExpectedMethod() library.Received(1).sv_remove_module(slotId, moduleId); } - [Test] - public void RemoveModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void RemoveModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.RemoveModule(slotId, moduleId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.RemoveModule(slotId, moduleId)).Should().Throw(); // then library.Received(1).sv_remove_module(slotId, moduleId); } - [Test] - public void SetModuleColorShouldCallExpectedMethod() + [Test, AutoData] + public void SetModuleColorShouldCallExpectedMethod(byte r, byte g, byte b, int moduleId, int slotId) { - var r = Any.Byte(); - var g = Any.Byte(); - var b = Any.Byte(); var code = r | (g << 8) | (b << 16); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); // when wrapper.SetModuleColor(slotId, moduleId, r, g, b); @@ -1322,38 +1060,27 @@ public void SetModuleColorShouldCallExpectedMethod() library.Received(1).sv_set_module_color(slotId, moduleId, code); } - [Test] - public void SetModuleColorShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetModuleColorShouldThrowOnNonZeroReturnCode(byte r, byte g, byte b, int moduleId, int slotId) { - var r = Any.Byte(); - var g = Any.Byte(); - var b = Any.Byte(); var code = r | (g << 8) | (b << 16); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_module_color(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); // when - Assert.That(() => wrapper.SetModuleColor(slotId, moduleId, r, g, b), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModuleColor(slotId, moduleId, r, g, b)).Should().Throw(); // then library.Received(1).sv_set_module_color(slotId, moduleId, code); } - [Test] - public void SetModuleControllerValueShouldCallExpectedMethod() + [Test, AutoData] + public void SetModuleControllerValueShouldCallExpectedMethod(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var scalingMode = Any.Instance(); - var valueToSet = Any.Integer(); library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -1364,35 +1091,26 @@ public void SetModuleControllerValueShouldCallExpectedMethod() library.Received(1).sv_set_module_ctl_value(slotId, moduleId, controllerId, valueToSet, (int)scalingMode); } - [Test] - public void SetModuleControllerValueShouldCallExpectedMethodAndThrowOnNonZeroCode() + [Test, AutoData] + public void SetModuleControllerValueShouldCallExpectedMethodAndThrowOnNonZeroCode(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var controllerId = Any.Integer(); - var slotId = Any.Integer(); - var scalingMode = Any.Instance(); - var valueToSet = Any.Integer(); library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); // when - then - Assert.That(() => wrapper.SetModuleControllerValue(slotId, moduleId, controllerId, valueToSet, scalingMode), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModuleControllerValue(slotId, moduleId, controllerId, valueToSet, scalingMode)).Should().Throw(); // then library.Received(1).sv_set_module_ctl_value(slotId, moduleId, controllerId, valueToSet, (int)scalingMode); } - [Test] - public void SetModuleFineTuneShouldCallExpectedMethod() + [Test, AutoData] + public void SetModuleFineTuneShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { - var fineTune = Any.Integer(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -1402,33 +1120,27 @@ public void SetModuleFineTuneShouldCallExpectedMethod() library.Received(1).sv_set_module_finetune(slotId, moduleId, fineTune); } - [Test] - public void SetModuleFineTuneShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetModuleFineTuneShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int fineTune) { - var fineTune = Any.Integer(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetModuleFineTune(slotId, moduleId, fineTune), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModuleFineTune(slotId, moduleId, fineTune)).Should().Throw(); // then library.Received(1).sv_set_module_finetune(slotId, moduleId, fineTune); } - [Test] - public void SetModuleNameShouldCallExpectedMethod() + [Test, AutoData] + public void SetModuleNameShouldCallExpectedMethod(int slotId, int moduleId, string nameToSet) { + var receivedString = string.Empty; + var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var nameToSet = Any.String(); - var receivedString = string.Empty; - var slotId = Any.Integer(); - var moduleId = Any.Integer(); library.When(static l => l.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -1437,35 +1149,26 @@ public void SetModuleNameShouldCallExpectedMethod() // then library.Received(1).sv_set_module_name(slotId, moduleId, Arg.Any()); - Assert.Multiple(() => { Assert.That(receivedString, Is.EqualTo(nameToSet)); }); + receivedString.Should().Be(nameToSet); } - [Test] - public void SetModuleNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetModuleNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var nameToSet = Any.String(); - var slotId = Any.Integer(); - var moduleId = Any.Integer(); library.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetModuleName(slotId, moduleId, nameToSet), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModuleName(slotId, moduleId, nameToSet)).Should().Throw(); // then library.Received(1).sv_set_module_name(slotId, moduleId, Arg.Any()); } - [Test] - public void SetModulePositionShouldCallExpectedMethod() + [Test, AutoData] + public void SetModulePositionShouldCallExpectedMethod(int moduleId, int slotId, short x, short y) { - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Short(); - var y = Any.Short(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1476,34 +1179,25 @@ public void SetModulePositionShouldCallExpectedMethod() library.Received(1).sv_set_module_xy(slotId, moduleId, x, y); } - [Test] - public void SetModulePositionShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetModulePositionShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int moduleId, int slotId, short x, short y) { - var moduleId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Short(); - var y = Any.Short(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_module_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetModulePosition(slotId, moduleId, x, y), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModulePosition(slotId, moduleId, x, y)).Should().Throw(); // then library.Received(1).sv_set_module_xy(slotId, moduleId, x, y); } - [Test] - public void SetModuleRelativeNoteShouldCallExpectedMethod() + [Test, AutoData] + public void SetModuleRelativeNoteShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { - var fineTune = Any.Integer(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -1513,33 +1207,24 @@ public void SetModuleRelativeNoteShouldCallExpectedMethod() library.Received(1).sv_set_module_relnote(slotId, moduleId, fineTune); } - [Test] - public void SetModuleRelativeNoteShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetModuleRelativeNoteShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int fineTune) { - var fineTune = Any.Integer(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var moduleId = Any.Integer(); - var slotId = Any.Integer(); library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetModuleRelativeNote(slotId, moduleId, fineTune), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetModuleRelativeNote(slotId, moduleId, fineTune)).Should().Throw(); // then library.Received(1).sv_set_module_relnote(slotId, moduleId, fineTune); } - [Test] - public void WriteModuleCurveShouldCallExpectedMethod() + [Test, AutoData] + public void WriteModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var samplesWritten = Any.Integer(); - var curveId = Any.Integer(); - var buffer = Any.Array(); - var receivedBuffer = Array.Empty(); + var samplesWritten = buffer.Length; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1549,38 +1234,26 @@ public void WriteModuleCurveShouldCallExpectedMethod() Arg.Any(), Arg.Any())) .Do(callInfo => { - receivedBuffer = new float[callInfo.ArgAt(4)]; + var receivedBuffer = new int[callInfo.ArgAt(4)]; Marshal.Copy(callInfo.Arg(), receivedBuffer, 0, callInfo.ArgAt(4)); }); // when var value = wrapper.WriteModuleCurve(slotId, moduleId, curveId, buffer); - - // then library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 1); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(samplesWritten)); - Assert.That(receivedBuffer, Is.EqualTo(buffer)); - }); + value.Should().Be(samplesWritten); } - [Test] - public void WriteModuleCurveShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void WriteModuleCurveShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int curveId, float[] buffer) { - var slotId = Any.Integer(); - var moduleId = Any.Integer(); - var curveId = Any.Integer(); - var buffer = Any.Array(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.WriteModuleCurve(slotId, moduleId, curveId, buffer), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.WriteModuleCurve(slotId, moduleId, curveId, buffer)).Should().Throw(); // then library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 1); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs index 9dbf956..9b78cbe 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -1,364 +1,355 @@ -using System; -using System.Collections.Generic; -using System.Runtime.InteropServices; -using NSubstitute; -using NUnit.Framework; +using System.Runtime.InteropServices; using SunSharp.Native; -using TddXt.AnyRoot; -using TddXt.AnyRoot.Collections; -using TddXt.AnyRoot.Numbers; -using TddXt.AnyRoot.Strings; -using static TddXt.AnyRoot.Root; namespace SunSharp.Tests.Native; public class SunVoxLibNativeWrapperPatternsTests { - public static PatternDataCase[] PatternDataCases => new[] - { - new PatternDataCase + public static PatternDataCase[] PatternDataCases => + [ + new() { CaseName = "simple call with equal size buffers", ToLines = 2, ToTracks = 3, FromLines = 2, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x3, 0x5, 0x2, 0x4, 0x6 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x1, 0x3, 0x5, 0x2, 0x4, 0x6 - }, + ], ExpectedOperationCount = 2 * 3 }, - new PatternDataCase + new() { CaseName = "simple call with original data buffer being bigger", ToLines = 2, ToTracks = 2, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x1, 0x4, 0x2, 0x5 - }, + ], ExpectedOperationCount = 2 * 2 }, - new PatternDataCase + new() { CaseName = "simple call with original data buffer being smaller", ToLines = 3, ToTracks = 3, FromLines = 2, FromTracks = 2, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x2, 0x5 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x1, 0x4, 0x0, 0x2, 0x5, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 2 * 2 }, - new PatternDataCase + new() { CaseName = "call with maxLines and maxTracks smaller than size", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x1, 0x4, 0x0, 0x2, 0x5, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 2 * 2, MaxLines = 2, MaxTracks = 2 }, - new PatternDataCase + new() { CaseName = "call with maxTracks set to zero", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, MaxTracks = 0 }, - new PatternDataCase + new() { CaseName = "call with MaxLines set to zero", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, MaxLines = 0 }, - new PatternDataCase + new() { CaseName = "call with maxTracks and maxLines set to zero", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, MaxLines = 0, MaxTracks = 0 }, - new PatternDataCase + new() { CaseName = "call with source data being empty", ToLines = 3, ToTracks = 3, FromLines = 0, FromTracks = 0, - FromData = Array.Empty(), - ToData = new PatternEvent[] - { + FromData = [], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0 }, - new PatternDataCase + new() { CaseName = "call with target data being empty", ToLines = 0, ToTracks = 0, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = Array.Empty(), + ], + ToData = [], ExpectedOperationCount = 0 }, - new PatternDataCase + new() { CaseName = "call with target buffer offset lines", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x1, 0x4, 0x7, 0x2, 0x5, 0x8 - }, + ], ExpectedOperationCount = 2 * 3, TargetOffsetLines = 1 }, - new PatternDataCase + new() { CaseName = "call with target buffer offset tracks", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x1, 0x4, 0x0, 0x2, 0x5, 0x0, 0x3, 0x6 - }, + ], ExpectedOperationCount = 2 * 3, TargetOffsetTracks = 1 }, - new PatternDataCase + new() { CaseName = "call with target buffer offset tracks and lines", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x0, 0x2, 0x5 - }, + ], ExpectedOperationCount = 2 * 2, TargetOffsetTracks = 1, TargetOffsetLines = 1 }, - new PatternDataCase + new() { CaseName = "call with source offset lines", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x2, 0x5, 0x8, 0x3, 0x6, 0x9, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 2 * 3, SourceOffsetLines = 1 }, - new PatternDataCase + new() { CaseName = "call with source offset tracks", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x4, 0x7, 0x0, 0x5, 0x8, 0x0, 0x6, 0x9, 0x0 - }, + ], ExpectedOperationCount = 2 * 3, SourceOffsetTracks = 1 }, - new PatternDataCase + new() { CaseName = "call with source offset tracks and lines", ToLines = 3, ToTracks = 3, FromLines = 3, FromTracks = 3, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x4, 0x7, 0x2, 0x5, 0x8, 0x3, 0x6, 0x9 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x5, 0x8, 0x0, 0x6, 0x9, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 2 * 2, SourceOffsetTracks = 1, SourceOffsetLines = 1 }, - new PatternDataCase + new() { CaseName = "call with source offset real tracks and lines, and target offset tracks and lines", ToLines = 4, ToTracks = 4, FromLines = 4, FromTracks = 4, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0xA, 0xE, 0x2, 0x7, 0xB, 0xF, 0x3, 0x8, 0xC, 0x10, 0x4, 0x9, 0xD, 0x11 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xB, 0xF, 0x0, 0x8, 0xC, 0x10, 0x0, 0x9, 0xD, 0x11 - }, + ], ExpectedOperationCount = 3 * 3, SourceOffsetTracks = 1, SourceOffsetLines = 1, TargetOffsetTracks = 1, TargetOffsetLines = 1 }, - new PatternDataCase + new() { CaseName = "call with source offset real tracks and lines, and target offset tracks and lines, and max tracks and lines", @@ -366,20 +357,20 @@ public class SunVoxLibNativeWrapperPatternsTests ToTracks = 4, FromLines = 4, FromTracks = 4, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0xA, 0xE, 0x2, 0x7, 0xB, 0xF, 0x3, 0x8, 0xC, 0x10, 0x4, 0x9, 0xD, 0x11 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xB, 0x0, 0x0, 0x8, 0xC, 0x0, 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 2 * 2, SourceOffsetTracks = 1, SourceOffsetLines = 1, @@ -388,96 +379,91 @@ public class SunVoxLibNativeWrapperPatternsTests MaxLines = 2, MaxTracks = 2 }, - new PatternDataCase + new() { CaseName = "call with target track offset being greater than size", ToLines = 2, ToTracks = 2, FromLines = 2, FromTracks = 2, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0x2, 0x7 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, TargetOffsetTracks = 2 }, - new PatternDataCase + new() { CaseName = "call with target line offset being greater than size", ToLines = 2, ToTracks = 2, FromLines = 2, FromTracks = 2, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0x2, 0x7 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, TargetOffsetLines = 2 }, - new PatternDataCase + new() { CaseName = "call with source line offset being greater than size", ToLines = 2, ToTracks = 2, FromLines = 2, FromTracks = 2, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0x2, 0x7 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, SourceOffsetLines = 2 }, - new PatternDataCase + new() { CaseName = "call with source line offset being greater than size", ToLines = 2, ToTracks = 2, FromLines = 2, FromTracks = 2, - FromData = new PatternEvent[] - { + FromData = + [ 0x1, 0x6, 0x2, 0x7 - }, - ToData = new PatternEvent[] - { + ], + ToData = + [ 0x0, 0x0, 0x0, 0x0 - }, + ], ExpectedOperationCount = 0, SourceOffsetTracks = 2 } - }; + ]; - [Test] - public void CloneModuleShouldThrowOnNegativeReturnedValue() + [Test, AutoData] + public void CloneModuleShouldThrowOnNegativeReturnedValue(int slotId, int originalPatternId, int x, int y) { - var originalPatternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -485,22 +471,15 @@ public void CloneModuleShouldThrowOnNegativeReturnedValue() .Returns(-1); // when - Assert.That(() => wrapper.ClonePattern(slotId, originalPatternId, x, y), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.ClonePattern(slotId, originalPatternId, x, y)).Should().Throw(); // then library.Received(1).sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); } - [Test] - public void ClonePatternShouldCallExpectedMethod() + [Test, AutoData] + public void ClonePatternShouldCallExpectedMethod(int slotId, int originalPatternId, int x, int y, int newPatternId) { - var newPatternId = Any.Integer(); - var originalPatternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -509,23 +488,13 @@ public void ClonePatternShouldCallExpectedMethod() // when var value = wrapper.ClonePattern(slotId, originalPatternId, x, y); - - // then library.Received(1).sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); - Assert.That(value, Is.EqualTo(newPatternId)); + value.Should().Be(newPatternId); } - [Test] - public void CreateModuleShouldThrowOnNegativeReturnedValue() + [Test, AutoData] + public void CreateModuleShouldThrowOnNegativeReturnedValue(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName) { - var patternName = Any.String(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var tracks = Any.Integer(); - var lines = Any.Integer(); - var iconSeed = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -533,26 +502,16 @@ public void CreateModuleShouldThrowOnNegativeReturnedValue() .Returns(-1); // when - Assert.That(() => wrapper.CreatePattern(slotId, x, y, tracks, lines, iconSeed, patternName), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.CreatePattern(slotId, x, y, tracks, lines, iconSeed, patternName)).Should().Throw(); // then library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, iconSeed, Arg.Any()); } - [Test] - public void CreatePatternShouldCallExpectedMethod() + [Test, AutoData] + public void CreatePatternShouldCallExpectedMethod(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName, int newPatternId) { - var newPatternId = Any.Integer(); - var patternName = Any.String(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var tracks = Any.Integer(); - var lines = Any.Integer(); - var iconSeed = Any.Integer(); var receivedPatternName = string.Empty; - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -567,23 +526,13 @@ public void CreatePatternShouldCallExpectedMethod() // then library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, iconSeed, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(newPatternId)); - Assert.That(receivedPatternName, Is.EqualTo(patternName)); - }); + value.Should().Be(newPatternId); + receivedPatternName.Should().Be(patternName); } - [Test] - public void CreatePatternShouldCallExpectedMethodWithDefaultValues() + [Test, AutoData] + public void CreatePatternShouldCallExpectedMethodWithDefaultValues(int slotId, int x, int y, int tracks, int lines, int newPatternId) { - var newPatternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var tracks = Any.Integer(); - var lines = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -595,19 +544,16 @@ public void CreatePatternShouldCallExpectedMethodWithDefaultValues() // then library.Received(1).sv_new_pattern(slotId, -1, x, y, tracks, lines, 0, IntPtr.Zero); - Assert.That(value, Is.EqualTo(newPatternId)); + value.Should().Be(newPatternId); } - [Test] - public void FindPatternShouldCallExpectedMethod() + [Test, AutoData] + public void FindPatternShouldCallExpectedMethod(int slotId, string patternName, int foundPatternId) { + var receivedString = string.Empty; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var foundPatternId = Any.Integer(); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(foundPatternId); - var patternName = Any.String(); - var receivedString = string.Empty; - var slotId = Any.Integer(); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -616,22 +562,17 @@ public void FindPatternShouldCallExpectedMethod() // then library.Received(1).sv_find_pattern(slotId, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(foundPatternId)); - Assert.That(receivedString, Is.EqualTo(patternName)); - }); + value.Should().Be(foundPatternId); + receivedString.Should().Be(patternName); } - [Test] - public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound() + [Test, AutoData] + public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound(int slotId, string patternName) { + var receivedString = string.Empty; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-1); - var patternName = Any.String(); - var receivedString = string.Empty; - var slotId = Any.Integer(); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -640,38 +581,28 @@ public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound( // then library.Received(1).sv_find_pattern(slotId, Arg.Any()); - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(null)); - Assert.That(receivedString, Is.EqualTo(patternName)); - }); + value.Should().BeNull(); + receivedString.Should().Be(patternName); } - [Test] - public void FindPatternShouldCallExpectedMethodAndThrowOnReturnCodeLessThanNegativeOne() + [Test, AutoData] + public void FindPatternShouldCallExpectedMethodAndThrowOnReturnCodeLessThanNegativeOne(int slotId, string patternName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-2); - var patternName = Any.String(); - var slotId = Any.Integer(); // when - Assert.That(() => wrapper.FindPattern(slotId, patternName), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.FindPattern(slotId, patternName)) + .Should().Throw(); // then library.Received(1).sv_find_pattern(slotId, Arg.Any()); } - [Test] - public void GetPatternEventValueShouldCallExpectedMethod() + [Test, AutoData] + public void GetPatternEventValueShouldCallExpectedMethod(int slotId, int patternId, int track, int line, Column column) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var column = Any.Instance(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) @@ -684,23 +615,17 @@ public void GetPatternEventValueShouldCallExpectedMethod() library.Received(1).sv_get_pattern_event(slotId, patternId, track, line, (int)column); } - [Test] - public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, Column column) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var column = Any.Instance(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); // when - Assert.That(() => wrapper.GetPatternEventValue(slotId, patternId, track, line, column), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetPatternEventValue(slotId, patternId, track, line, column)) + .Should().Throw(); // then library.Received(1).sv_get_pattern_event(slotId, patternId, track, line, (int)column); @@ -710,10 +635,11 @@ public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnC [TestCase(false)] public void GetPatternExistsShouldCallExpectedMethodAndReturnValue(bool exists) { + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var patternId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(exists ? 1 : 0); // when @@ -721,32 +647,27 @@ public void GetPatternExistsShouldCallExpectedMethodAndReturnValue(bool exists) // then library.Received(1).sv_get_pattern_lines(slotId, patternId); - Assert.That(receivedExists, Is.EqualTo(exists)); + receivedExists.Should().Be(exists); } - [Test] - public void GetPatternExistsShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void GetPatternExistsShouldThrowOnErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var patternId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetPatternExists(slotId, patternId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetPatternExists(slotId, patternId)) + .Should().Throw(); // then library.Received(1).sv_get_pattern_lines(slotId, patternId); } - [Test] - public void GetPatternLinesShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetPatternLinesShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int lines) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var lines = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); @@ -756,56 +677,48 @@ public void GetPatternLinesShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_pattern_lines(slotId, patternId); - Assert.That(receivedLines, Is.EqualTo(lines)); + receivedLines.Should().Be(lines); } - [Test] - public void GetPatternLinesShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void GetPatternLinesShouldThrowOnErrorReturnCode(int slotId, int patternId) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetPatternLines(slotId, patternId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetPatternLines(slotId, patternId)) + .Should().Throw(); // then library.Received(1).sv_get_pattern_lines(slotId, patternId); } - [Test] - public void GetPatternNameShouldCallExpectedMethodAndReturnNullWhenNullPointer() + [Test, AutoData] + public void GetPatternNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var patternId = Any.Integer(); - var slotId = Any.Integer(); library.sv_get_pattern_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when var receivedPatternName = wrapper.GetPatternName(slotId, patternId); // then library.Received(1).sv_get_pattern_name(slotId, patternId); - Assert.That(receivedPatternName, Is.EqualTo(null)); + receivedPatternName.Should().BeNull(); } - [Test] - public void GetPatternNameShouldCallExpectedMethodAndReturnString() + [Test, AutoData] + public void GetPatternNameShouldCallExpectedMethodAndReturnString(int slotId, int patternId, string patternName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var patternName = Any.String(); - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var stringPointer = IntPtr.Zero; + var stringPointer = Marshal.StringToHGlobalAnsi(patternName); string? receivedPatternName; try { - stringPointer = Marshal.StringToHGlobalAnsi(patternName); library.sv_get_pattern_name(Arg.Any(), Arg.Any()).Returns(stringPointer); // when @@ -818,17 +731,12 @@ public void GetPatternNameShouldCallExpectedMethodAndReturnString() // then library.Received(1).sv_get_pattern_name(slotId, patternId); - Assert.That(receivedPatternName, Is.EqualTo(patternName)); + receivedPatternName.Should().Be(patternName); } - [Test] - public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue() + [Test, AutoData] + public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int x, int y) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); @@ -840,16 +748,12 @@ public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue() // then library.Received(1).sv_get_pattern_x(slotId, patternId); library.Received(1).sv_get_pattern_y(slotId, patternId); - Assert.That(value, Is.EqualTo((x, y))); + value.Should().Be((x, y)); } - [Test] - public void GetPatternTracksShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void GetPatternTracksShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int tracks) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var tracks = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); @@ -859,33 +763,27 @@ public void GetPatternTracksShouldCallExpectedMethodAndReturnValue() // then library.Received(1).sv_get_pattern_tracks(slotId, patternId); - Assert.That(receivedLines, Is.EqualTo(tracks)); + receivedLines.Should().Be(tracks); } - [Test] - public void GetPatternTracksShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void GetPatternTracksShouldThrowOnErrorReturnCode(int slotId, int patternId) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetPatternTracks(slotId, patternId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetPatternTracks(slotId, patternId)) + .Should().Throw(); // then library.Received(1).sv_get_pattern_tracks(slotId, patternId); } - [Test] - public void GetPatternXShouldCallExpectedMethodsAndReturnValue() + [Test, AutoData] + public void GetPatternXShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int x) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); @@ -895,16 +793,12 @@ public void GetPatternXShouldCallExpectedMethodsAndReturnValue() // then library.Received(1).sv_get_pattern_x(slotId, patternId); - Assert.That(value, Is.EqualTo(x)); + value.Should().Be(x); } - [Test] - public void GetPatternYShouldCallExpectedMethodsAndReturnValue() + [Test, AutoData] + public void GetPatternYShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int y) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_y(Arg.Any(), Arg.Any()).Returns(y); @@ -914,14 +808,12 @@ public void GetPatternYShouldCallExpectedMethodsAndReturnValue() // then library.Received(1).sv_get_pattern_y(slotId, patternId); - Assert.That(value, Is.EqualTo(y)); + value.Should().Be(y); } - [Test] - public void GetUpperPatternCountShouldCallExpectedMethod() + [Test, AutoData] + public void GetUpperPatternCountShouldCallExpectedMethod(int slotId) { - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_patterns(Arg.Any()).Returns(0); @@ -933,28 +825,24 @@ public void GetUpperPatternCountShouldCallExpectedMethod() library.Received(1).sv_get_number_of_patterns(slotId); } - [Test] - public void GetUpperPatternCountShouldCallExpectedMethodAndThrowOnNegativeReturnCode() + [Test, AutoData] + public void GetUpperPatternCountShouldCallExpectedMethodAndThrowOnNegativeReturnCode(int slotId) { - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_number_of_patterns(Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.GetUpperPatternCount(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetUpperPatternCount(slotId)) + .Should().Throw(); // then library.Received(1).sv_get_number_of_patterns(slotId); } - [Test] - public void RemovePatternShouldCallExpectedMethod() + [Test, AutoData] + public void RemovePatternShouldCallExpectedMethod(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(0); @@ -966,32 +854,27 @@ public void RemovePatternShouldCallExpectedMethod() library.Received(1).sv_remove_pattern(slotId, patternId); } - [Test] - public void RemovePatternShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void RemovePatternShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.RemovePattern(slotId, patternId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.RemovePattern(slotId, patternId)) + .Should().Throw(); // then library.Received(1).sv_remove_pattern(slotId, patternId); } - [Test] - public void SetPatternNameShouldCallExpectedMethod() + [Test, AutoData] + public void SetPatternNameShouldCallExpectedMethod(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var nameToSet = Any.String(); var receivedString = string.Empty; - var slotId = Any.Integer(); - var patternId = Any.Integer(); library.When(static l => l.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -1000,35 +883,26 @@ public void SetPatternNameShouldCallExpectedMethod() // then library.Received(1).sv_set_pattern_name(slotId, patternId, Arg.Any()); - Assert.That(receivedString, Is.EqualTo(nameToSet)); + receivedString.Should().Be(nameToSet); } - [Test] - public void SetPatternNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetPatternNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var nameToSet = Any.String(); - var slotId = Any.Integer(); - var patternId = Any.Integer(); library.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetPatternName(slotId, patternId, nameToSet), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetPatternName(slotId, patternId, nameToSet)).Should().Throw(); // then library.Received(1).sv_set_pattern_name(slotId, patternId, Arg.Any()); } - [Test] - public void SetPatternPositionShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void SetPatternPositionShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int x, int y) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); @@ -1040,34 +914,24 @@ public void SetPatternPositionShouldCallExpectedMethodAndReturnValue() library.Received(1).sv_set_pattern_xy(slotId, patternId, x, y); } - [Test] - public void SetPatternPositionShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void SetPatternPositionShouldThrowOnErrorReturnCode(int slotId, int patternId, int x, int y) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var x = Any.Integer(); - var y = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetPatternPosition(slotId, patternId, x, y), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetPatternPosition(slotId, patternId, x, y)) + .Should().Throw(); // then library.Received(1).sv_set_pattern_xy(slotId, patternId, x, y); } - [Test] - public void SetPatternSizeShouldCallExpectedMethodAndReturnValue() + [Test, AutoData] + public void SetPatternSizeShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int tracks, int lines) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var lines = Any.Integer(); - var tracks = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(0); @@ -1079,12 +943,9 @@ public void SetPatternSizeShouldCallExpectedMethodAndReturnValue() library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); } - [Test] - public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValue() + [Test, AutoData] + public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValue(int slotId, int patternId) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); @@ -1096,33 +957,24 @@ public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValu library.Received(1).sv_set_pattern_size(slotId, patternId, -1, -1); } - [Test] - public void SetPatternSizeShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void SetPatternSizeShouldThrowOnErrorReturnCode(int slotId, int patternId, int tracks, int lines) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var lines = Any.Integer(); - var tracks = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetPatternSize(slotId, patternId, tracks, lines), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetPatternSize(slotId, patternId, tracks, lines)) + .Should().Throw(); // then library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); } - [TestCase(true)] - [TestCase(false)] - public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted) + [Test, AutoData] + public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted, int slotId, int patternId) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(muted ? 1 : 0); @@ -1132,36 +984,15 @@ public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted) // then library.Received(1).sv_pattern_mute(slotId, patternId, -1); - Assert.That(value, Is.EqualTo(muted)); - } - - [Test] - public void GetPatternMutedShouldThrowOnErrorReturnCode() - { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - - var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - - // when - Assert.That(() => wrapper.GetPatternMuted(slotId, patternId), Throws.Exception.TypeOf()); - - // then - library.Received(1).sv_pattern_mute(slotId, patternId, -1); + value.Should().Be(muted); } - [TestCase(true)] - [TestCase(false)] - public void SetPatternMutedShouldCallExpectedMethod(bool muted) + [Test, AutoData] + public void SetPatternMutedShouldCallExpectedMethod(bool muted, int slotId, int patternId) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(Any.Boolean() ? 1 : 0); + library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(muted ? 1 : 0); // when wrapper.SetPatternMuted(slotId, patternId, muted); @@ -1170,38 +1001,9 @@ public void SetPatternMutedShouldCallExpectedMethod(bool muted) library.Received(1).sv_pattern_mute(slotId, patternId, muted ? 1 : 0); } - [Test] - public void SetPatternMutedShouldThrowOnErrorReturnCode() + [Test, AutoData] + public void SetPatternEventShouldCallExpectedMethod(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var muted = Any.Boolean(); - - var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - - // when - Assert.That(() => wrapper.SetPatternMuted(slotId, patternId, muted), - Throws.Exception.TypeOf()); - - // then - library.Received(1).sv_pattern_mute(slotId, patternId, muted ? 1 : 0); - } - - [Test] - public void SetPatternEventShouldCallExpectedMethod() - { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var nn = Any.Integer(); - var vv = Any.Integer(); - var mm = Any.Integer(); - var ccee = Any.Integer(); - var xxyy = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1215,19 +1017,9 @@ public void SetPatternEventShouldCallExpectedMethod() library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); } - [Test] - public void SetPatternEventShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetPatternEventShouldThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var nn = Any.Integer(); - var vv = Any.Integer(); - var mm = Any.Integer(); - var ccee = Any.Integer(); - var xxyy = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1235,22 +1027,16 @@ public void SetPatternEventShouldThrowOnNonZeroReturnCode() .Returns(-1); // when - Assert.That(() => wrapper.SetPatternEvent(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetPatternEvent(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy)) + .Should().Throw(); // then library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); } - [Test] - public void SetPatternEventWithStructShouldCallExpectedMethod() + [Test, AutoData] + public void SetPatternEventWithStructShouldCallExpectedMethod(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var patternEvent = Any.Instance(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1265,15 +1051,9 @@ public void SetPatternEventWithStructShouldCallExpectedMethod() patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); } - [Test] - public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { - var patternId = Any.Integer(); - var slotId = Any.Integer(); - var track = Any.Integer(); - var line = Any.Integer(); - var patternEvent = Any.Instance(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1281,19 +1061,17 @@ public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode() .Returns(-1); // when - Assert.That(() => wrapper.SetPatternEvent(slotId, patternId, track, line, patternEvent), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetPatternEvent(slotId, patternId, track, line, patternEvent)) + .Should().Throw(); // then library.Received(1).sv_set_pattern_event(slotId, patternId, track, line, patternEvent.NN, patternEvent.VV, patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); } - [Test] - public void GetPatternDataReturnsDataAsExpected() + [Test, AutoData] + public void GetPatternDataReturnsDataAsExpected(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); const int lines = 4; const int tracks = 5; var receivedPatternData = Array.Empty(); @@ -1302,12 +1080,14 @@ public void GetPatternDataReturnsDataAsExpected() var patternData = new PatternEvent[tracks * lines]; for (var line = 0; line < lines; line++) - for (var track = 0; track < tracks; track++) - patternData[line * tracks + track] = new PatternEvent - { - CCEE = (ushort)line, - XXYY = (ushort)track - }; + { + for (var track = 0; track < tracks; track++) + patternData[line * tracks + track] = new PatternEvent + { + CCEE = (ushort)line, + XXYY = (ushort)track + }; + } var handle = GCHandle.Alloc(patternData, GCHandleType.Pinned); var library = Substitute.For(); @@ -1329,44 +1109,35 @@ public void GetPatternDataReturnsDataAsExpected() } // then - Assert.That(receivedPatternData, Is.Not.EquivalentTo(Array.Empty())); - Assert.That(receivedPatternData, Has.Length.EqualTo(receivedTracks * receivedLines)); - Assert.That(receivedPatternData, Is.EquivalentTo(patternData)); + receivedPatternData.Should().NotBeEquivalentTo(Array.Empty()); + receivedPatternData.Should().HaveCount(receivedTracks * receivedLines); + receivedPatternData.Should().BeEquivalentTo(patternData); library.Received(1).sv_get_pattern_data(slotId, patternId); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(1).sv_get_pattern_tracks(slotId, patternId); } - [Test] - public void GetPatternDataReturnsNullWhenLengthEqualsZero() + [Test, AutoData] + public void GetPatternDataReturnsNullWhenLengthEqualsZero(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(0); // when var receivedPatternData = wrapper.GetPatternData(slotId, patternId); // then - Assert.That(receivedPatternData, Is.Null); + receivedPatternData.Should().BeNull(); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_tracks(Arg.Any(), Arg.Any()); library.Received(0).sv_get_pattern_data(Arg.Any(), Arg.Any()); } - [Test] - public void GetPatternDataReturnsNullWhenPtrIsNullPtr() + [Test, AutoData] + public void GetPatternDataReturnsNullWhenPtrIsNullPtr(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); const int lines = 4; const int tracks = 5; - var patternData = new PatternEvent[tracks * lines]; - for (var i = 0; i < tracks * lines; i++) - patternData[i] = Any.Instance(); - var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); @@ -1376,22 +1147,22 @@ public void GetPatternDataReturnsNullWhenPtrIsNullPtr() // when var result = wrapper.GetPatternData(slotId, patternId); // then - Assert.That(result, Is.Null); + result.Should().BeNull(); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(1).sv_get_pattern_tracks(slotId, patternId); library.Received(1).sv_get_pattern_data(slotId, patternId); } - [Test] - public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero() + [Test, AutoData] + public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); const int readTracks = 2; const int readLines = 3; var originalData = new PatternEvent[readTracks * readLines]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); @@ -1403,94 +1174,83 @@ public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero var readEventCount = wrapper.ReadPatternData(slotId, patternId, buffer, readTracks, readLines); // then - Assert.Multiple(() => - { - Assert.That(readEventCount, Is.EqualTo(0)); - Assert.That(buffer, Is.EquivalentTo(originalData)); - }); + readEventCount.Should().Be(0); + buffer.Should().BeEquivalentTo(originalData); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_data(Arg.Any(), Arg.Any()); library.Received(0).sv_get_pattern_tracks(Arg.Any(), Arg.Any()); } - [Test] - public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr() + [Test, AutoData] + public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); const int readTracks = 2; const int readLines = 3; var originalData = new PatternEvent[readTracks * readLines]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(Any.Integer()); - library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when var readEventCount = wrapper.ReadPatternData(slotId, patternId, buffer, readTracks, readLines); // then - Assert.Multiple(() => - { - Assert.That(readEventCount, Is.EqualTo(0)); - Assert.That(buffer, Is.EquivalentTo(originalData)); - }); + readEventCount.Should().Be(0); + buffer.Should().BeEquivalentTo(originalData); library.Received(1).sv_get_pattern_data(slotId, patternId); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(1).sv_get_pattern_tracks(slotId, patternId); } - [Test] - public void WritePatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr() + [Test, AutoData] + public void WritePatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); const int readTracks = 2; const int readLines = 3; var originalData = new PatternEvent[readTracks * readLines]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(Any.Integer()); - library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(Any.Integer()); + library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); + library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when var readEventCount = wrapper.WritePatternData(slotId, patternId, buffer, readTracks, readLines); // then - Assert.Multiple(() => - { - Assert.That(readEventCount, Is.EqualTo(0)); - Assert.That(buffer, Is.EquivalentTo(originalData)); - }); + readEventCount.Should().Be(0); + buffer.Should().BeEquivalentTo(originalData); library.Received(1).sv_get_pattern_data(slotId, patternId); library.Received(1).sv_get_pattern_lines(slotId, patternId); library.Received(1).sv_get_pattern_tracks(slotId, patternId); } - [TestCase(2, 2, 2, 1)] - [TestCase(2, 2, 1, 2)] - [TestCase(2, 2, 3, 2)] - [TestCase(2, 2, 2, 3)] - public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int tracksToRead, int linesToRead, - int tracksInBuffer, int linesInBuffer) + [Test, AutoData] + public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int slotId, int patternId, int tracksToRead, int linesToRead) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + const int tracksInBuffer = 4; + const int linesInBuffer = 32; var originalData = new PatternEvent[tracksInBuffer * linesInBuffer]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); @@ -1498,30 +1258,30 @@ public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int var wrapper = new SunVoxLibNativeWrapper(library); // when - Assert.That(() => wrapper.ReadPatternData(slotId, patternId, buffer, tracksToRead, linesToRead), - Throws.ArgumentException); - - // then - Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + wrapper.Invoking(w => w.ReadPatternData(slotId, patternId, buffer, tracksToRead, linesToRead)) + .Should().Throw(); + buffer.Should().BeEquivalentTo(originalData); library.Received(0).sv_get_pattern_data(slotId, patternId); library.Received(0).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_tracks(slotId, patternId); } - [TestCase(-2, 2, 0, 0, 0, 0)] - [TestCase(2, -2, 0, 0, 0, 0)] - [TestCase(2, 2, -1, 0, 0, 0)] - [TestCase(2, 2, 0, -1, 0, 0)] - [TestCase(2, 2, 0, 0, -1, 0)] - [TestCase(2, 2, 0, 0, 0, -1)] - public void ReadPatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks, int bufferLines, - int bufferOffsetTracks, int bufferOffsetLines, int readOffsetTracks, int readOffsetLines) + [TestCase(-1, 0, 0, 0)] + [TestCase(0, -1, 0, 0)] + [TestCase(0, 0, -1, 0)] + [TestCase(0, 0, 0, -1)] + public void ReadPatternDataShouldThrowIfAnyOffsetValueIsNegative(int bufferOffsetTracks, int bufferOffsetLines, int readOffsetTracks, int readOffsetLines) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); + const int bufferTracks = 2; + const int bufferLines = 2; var originalData = new PatternEvent[2 * 2]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); @@ -1529,13 +1289,9 @@ public void ReadPatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks var wrapper = new SunVoxLibNativeWrapper(library); // when - Assert.That( - () => wrapper.ReadPatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, - bufferOffsetLines, readOffsetTracks, readOffsetLines), - Throws.TypeOf()); - - // then - Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + wrapper.Invoking(w => w.ReadPatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, bufferOffsetLines, readOffsetTracks, readOffsetLines)) + .Should().Throw(); + buffer.Should().BeEquivalentTo(originalData); library.Received(0).sv_get_pattern_data(slotId, patternId); library.Received(0).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_tracks(slotId, patternId); @@ -1550,11 +1306,14 @@ public void ReadPatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks, int bufferLines, int bufferOffsetTracks, int bufferOffsetLines, int writeOffsetTracks, int writeOffsetLines) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); var originalData = new PatternEvent[2 * 2]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + originalData[i] = new PatternEvent((ulong)i); + } var buffer = (PatternEvent[])originalData.Clone(); @@ -1562,13 +1321,9 @@ public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTrack var wrapper = new SunVoxLibNativeWrapper(library); // when - Assert.That( - () => wrapper.WritePatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, - bufferOffsetLines, writeOffsetTracks, writeOffsetLines), - Throws.TypeOf()); - - // then - Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + wrapper.Invoking(w => w.WritePatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, bufferOffsetLines, writeOffsetTracks, writeOffsetLines)) + .Should().Throw(); + buffer.Should().BeEquivalentTo(originalData); library.Received(0).sv_get_pattern_data(slotId, patternId); library.Received(0).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_tracks(slotId, patternId); @@ -1581,11 +1336,16 @@ public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTrack public void WritePatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int tracksToRead, int linesToRead, int tracksInBuffer, int linesInBuffer) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); var originalData = new PatternEvent[tracksInBuffer * linesInBuffer]; for (var i = 0; i < originalData.Length; i++) - originalData[i] = Any.UnsignedLong(); + { + { + originalData[i] = new PatternEvent((ulong)i); + } + } var buffer = (PatternEvent[])originalData.Clone(); @@ -1593,17 +1353,15 @@ public void WritePatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(in var wrapper = new SunVoxLibNativeWrapper(library); // when - Assert.That(() => wrapper.WritePatternData(slotId, patternId, buffer, tracksToRead, linesToRead), - Throws.ArgumentException); - - // then - Assert.Multiple(() => { Assert.That(buffer, Is.EquivalentTo(originalData)); }); + wrapper.Invoking(w => w.WritePatternData(slotId, patternId, buffer, tracksToRead, linesToRead)) + .Should().Throw(); + buffer.Should().BeEquivalentTo(originalData); library.Received(0).sv_get_pattern_data(slotId, patternId); library.Received(0).sv_get_pattern_lines(slotId, patternId); library.Received(0).sv_get_pattern_tracks(slotId, patternId); } - private static void PrintPatternEventCollection(IList collection, int tracks, int lines, string name) + private static void PrintPatternEventCollection(PatternEvent[] collection, int tracks, int lines, string name) { TestContext.Out.WriteLine(name); for (var l = 0; l < lines; l++) @@ -1613,7 +1371,6 @@ private static void PrintPatternEventCollection(IList collection, TestContext.Out.Write(collection[l * tracks + t].ToString()); TestContext.Out.Write(" "); } - TestContext.Out.WriteLine(" "); } } @@ -1621,8 +1378,9 @@ private static void PrintPatternEventCollection(IList collection, [TestCaseSource(nameof(PatternDataCases))] public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); int readEventCount; var buffer = new PatternEvent[testCase.ToLines * testCase.ToTracks]; @@ -1649,12 +1407,8 @@ public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) PrintPatternEventCollection(testCase.ToData, testCase.ToTracks, testCase.ToLines, "expected"); // then - Assert.Multiple(() => - { - Assert.That(readEventCount, Is.EqualTo(testCase.ExpectedOperationCount)); - Assert.That(buffer, Is.EquivalentTo(testCase.ToData)); - }); - + readEventCount.Should().Be(testCase.ExpectedOperationCount); + buffer.Should().BeEquivalentTo(testCase.ToData); library.Received(1).sv_get_pattern_lines(slotId, patternId); var shouldContinueWithAccessingRemoteData = testCase.FromLines * testCase.FromTracks != 0; library.Received(testCase.FromLines != 0 ? 1 : 0).sv_get_pattern_tracks(slotId, patternId); @@ -1664,8 +1418,9 @@ public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) [TestCaseSource(nameof(PatternDataCases))] public void WritePatternDataShouldWorkAsExpected(PatternDataCase testCase) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); + var fixture = new Fixture(); + var slotId = fixture.Create(); + var patternId = fixture.Create(); int writtenEventCount; var buffer = new PatternEvent[testCase.ToLines * testCase.ToTracks]; @@ -1692,27 +1447,26 @@ public void WritePatternDataShouldWorkAsExpected(PatternDataCase testCase) PrintPatternEventCollection(testCase.ToData, testCase.ToTracks, testCase.ToLines, "expected"); // then - Assert.Multiple(() => - { - Assert.That(writtenEventCount, Is.EqualTo(testCase.ExpectedOperationCount)); - Assert.That(buffer, Is.EquivalentTo(testCase.ToData)); - }); - + writtenEventCount.Should().Be(testCase.ExpectedOperationCount); + buffer.Should().BeEquivalentTo(testCase.ToData); library.Received(1).sv_get_pattern_lines(slotId, patternId); var shouldContinueWithAccessingRemoteData = testCase.ToLines * testCase.ToTracks != 0; library.Received(testCase.ToLines != 0 ? 1 : 0).sv_get_pattern_tracks(slotId, patternId); library.Received(shouldContinueWithAccessingRemoteData ? 1 : 0).sv_get_pattern_data(slotId, patternId); } - [Test] - public void SetPatternDataShouldSetDataAsExpected() + [Test, AutoData] + public void SetPatternDataShouldSetDataAsExpected(int slotId, int patternId) { - var slotId = Any.Integer(); - var patternId = Any.Integer(); - var lines = 3; - var tracks = 4; - var data = Any.Array(lines * tracks); + const int tracks = 4; + const int lines = 32; + var data = new PatternEvent[lines * tracks]; + for (var i = 0; i < data.Length; i++) + { + data[i] = new PatternEvent((ulong)i); + } + // the +1 is here so that we can check that no more than the expected data is written var buffer = new PatternEvent[lines * tracks + 1]; var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); @@ -1730,11 +1484,8 @@ public void SetPatternDataShouldSetDataAsExpected() handle.Free(); } - Assert.Multiple(() => - { - Assert.That(buffer[..^1], Is.EquivalentTo(data)); - Assert.That(buffer[^1].Data, Is.EqualTo(0)); - }); + buffer[..^1].Should().BeEquivalentTo(data); + buffer[^1].Data.Should().Be(0); library.Received(1).sv_set_pattern_size(slotId, patternId, tracks, lines); library.Received(1).sv_get_pattern_data(slotId, patternId); } @@ -1745,11 +1496,11 @@ public class PatternDataCase public int FromTracks { get; set; } public int FromLines { get; set; } - public PatternEvent[] FromData { get; set; } = Array.Empty(); + public PatternEvent[] FromData { get; set; } = []; public int ToTracks { get; set; } public int ToLines { get; set; } - public PatternEvent[] ToData { get; set; } = Array.Empty(); + public PatternEvent[] ToData { get; set; } = []; public int TargetOffsetTracks { get; set; } public int TargetOffsetLines { get; set; } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index 00ee22b..e74ac36 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -1,26 +1,19 @@ -using System; -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; -using FluentAssertions; -using NSubstitute; -using NUnit.Framework; using SunSharp.Native; -using TddXt.AnyRoot.Collections; -using TddXt.AnyRoot.Numbers; -using TddXt.AnyRoot.Strings; -using static TddXt.AnyRoot.Root; namespace SunSharp.Tests.Native; public class SunVoxLibNativeWrapperTests { - [Test] - public void CloseSlotShouldCallExpectedMethod() + public const int ErrorResponseCode = -1; + + [Test, AutoData] + public void CloseSlotShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_close_slot(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.CloseSlot(slotId); @@ -29,16 +22,15 @@ public void CloseSlotShouldCallExpectedMethod() library.Received(1).sv_close_slot(slotId); } - [Test] - public void CloseSlotShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void CloseSlotShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_close_slot(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_close_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.CloseSlot(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.CloseSlot(slotId)).Should().Throw(); // then library.Received(1).sv_close_slot(slotId); @@ -65,101 +57,91 @@ public void DeinitializeShouldThrowExceptionOnNonzeroCode() var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_deinit().Returns(-1); + library.sv_deinit().Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.Deinitialize(), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Deinitialize()).Should().Throw(); // then library.Received(1).sv_deinit(); } - [TestCase(true)] - [TestCase(false)] - public void GetAutostopShouldReturnValue(bool autostop) + [Test, AutoData] + public void GetAutostopShouldReturnValue(bool autostop, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_autostop(Arg.Any()).Returns(autostop ? 1 : 0); - var slotId = Any.Integer(); // when var value = wrapper.GetAutostop(slotId); // then library.Received(1).sv_get_autostop(slotId); - Assert.That(value, Is.EqualTo(autostop)); + value.Should().Be(autostop); } - [Test] - public void GetAutostopShouldThrowOnInvalidValue() + [Test, AutoData] + public void GetAutostopShouldThrowOnInvalidValue(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_autostop(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_get_autostop(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => _ = wrapper.GetAutostop(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetAutostop(slotId)).Should().Throw(); // then library.Received(1).sv_get_autostop(slotId); } - [Test] - public void GetCurrentLineShouldReturnValue() + [Test, AutoData] + public void GetCurrentLineShouldReturnValue(int currentLine, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var currentLine = Any.Integer(); library.sv_get_current_line(Arg.Any()).Returns(currentLine); - var slotId = Any.Integer(); // when var value = wrapper.GetCurrentLine(slotId); // then library.Received(1).sv_get_current_line(slotId); - Assert.That(value, Is.EqualTo(currentLine)); + value.Should().Be(currentLine); } - [Test] - public void GetCurrentLineWithTenthPartShouldReturnValue() + [Test, AutoData] + public void GetCurrentLineWithTenthPartShouldReturnValue(int currentLineWithTenthPart, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var currentLineWithTenthPart = Any.Integer(); library.sv_get_current_line2(Arg.Any()).Returns(currentLineWithTenthPart); - var slotId = Any.Integer(); // when var value = wrapper.GetCurrentLineWithTenthPart(slotId); // then library.Received(1).sv_get_current_line2(slotId); - Assert.That(value, Is.EqualTo(currentLineWithTenthPart)); + value.Should().Be(currentLineWithTenthPart); } - [Test] - public void GetCurrentSignalLevelShouldReturnValue() + [Test, AutoData] + public void GetCurrentSignalLevelShouldReturnValue(int signalLevel, int slotId, int channelId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var signalLevel = Any.Integer(); library.sv_get_current_signal_level(Arg.Any(), Arg.Any()).Returns(signalLevel); - var slotId = Any.Integer(); - var channelId = Any.Integer(); // when var value = wrapper.GetCurrentSignalLevel(slotId, channelId); // then library.Received(1).sv_get_current_signal_level(slotId, channelId); - Assert.That(value, Is.EqualTo(signalLevel)); + value.Should().Be(signalLevel); } - [Test] - public void GetLogsShouldReturnNullForNullPtr() + [Test, AutoData] + public void GetLogsShouldReturnNullForNullPtr(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -167,42 +149,39 @@ public void GetLogsShouldReturnNullForNullPtr() library.sv_get_log(Arg.Any()).Returns(IntPtr.Zero); // when - then - var result = wrapper.GetLog(Any.Integer()); + var result = wrapper.GetLog(slotId); // then - Assert.That(result, Is.EqualTo(null)); + result.Should().BeNull(); } - [Test] - public void GetLogsShouldReturnStringForValidPointer() + [Test, AutoData] + public void GetLogsShouldReturnStringForValidPointer(string log) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const string log = "this is a bunch of logs\nplease pretend that it's sufficient"; var logLength = log.Length; - // assuming that GetLog calls free() - library.sv_get_log(logLength).Returns(static _ => Marshal.StringToHGlobalAnsi(log)); + library.sv_get_log(logLength).Returns(_ => Marshal.StringToHGlobalAnsi(log)); // when var result = wrapper.GetLog(logLength); // then - Assert.That(result, Is.EqualTo(log)); + result.Should().Be(log); } - [Test] - public void GetSampleRateShouldReturnValue() + [Test, AutoData] + public void GetSampleRateShouldReturnValue(int ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var ticks = Any.Integer(); library.sv_get_sample_rate().Returns(ticks); // when var result = wrapper.GetSampleRate(); // then - Assert.That(result, Is.EqualTo(ticks)); + result.Should().Be(ticks); } [TestCase(0)] @@ -214,81 +193,73 @@ public void GetSampleRateShouldThrowOnNonsenseValue(int sampleRate) library.sv_get_sample_rate().Returns(sampleRate); // when - then - Assert.That(() => _ = wrapper.GetSampleRate(), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetSampleRate()).Should().Throw(); } - [Test] - public void GetSongBpmShouldReturnValue() + [Test, AutoData] + public void GetSongBpmShouldReturnValue(int songBpm, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var songBpm = Any.Integer(); library.sv_get_song_bpm(Arg.Any()).Returns(songBpm); - var slotId = Any.Integer(); // when var value = wrapper.GetSongBpm(slotId); // then library.Received(1).sv_get_song_bpm(slotId); - Assert.That(value, Is.EqualTo(songBpm)); + value.Should().Be(songBpm); } - [Test] - public void GetSongBpmShouldThrowOnInvalidValue() + [Test, AutoData] + public void GetSongBpmShouldThrowOnInvalidValue(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_song_bpm(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_get_song_bpm(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => _ = wrapper.GetSongBpm(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetSongBpm(slotId)).Should().Throw(); // then library.Received(1).sv_get_song_bpm(slotId); } - [Test] - public void GetSongLengthInFramesShouldReturnValue() + [Test, AutoData] + public void GetSongLengthInFramesShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var songLength = Any.UnsignedInt(); library.sv_get_song_length_frames(Arg.Any()).Returns(songLength); - var slotId = Any.Integer(); // when var value = wrapper.GetSongLengthInFrames(slotId); // then library.Received(1).sv_get_song_length_frames(slotId); - Assert.That(value, Is.EqualTo(songLength)); + value.Should().Be(songLength); } - [Test] - public void GetSongLengthInLinesShouldReturnValue() + [Test, AutoData] + public void GetSongLengthInLinesShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var songLength = Any.UnsignedInt(); library.sv_get_song_length_lines(Arg.Any()).Returns(songLength); - var slotId = Any.Integer(); // when var value = wrapper.GetSongLengthInLines(slotId); // then library.Received(1).sv_get_song_length_lines(slotId); - Assert.That(value, Is.EqualTo(songLength)); + value.Should().Be(songLength); } - [Test] - public void GetSongNameShouldReturnNullOnNullPtr() + [Test, AutoData] + public void GetSongNameShouldReturnNullOnNullPtr(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); library.sv_get_song_name(Arg.Any()).Returns(IntPtr.Zero); @@ -296,18 +267,15 @@ public void GetSongNameShouldReturnNullOnNullPtr() var result = wrapper.GetSongName(slotId); // then - Assert.That(result, Is.EqualTo(null)); + result.Should().BeNull(); library.Received(1).sv_get_song_name(slotId); } - [Test] - public void GetSongNameShouldReturnValue() + [Test, AutoData] + public void GetSongNameShouldReturnValue(string songName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const string songName = "epic song"; - var slotId = Any.Integer(); - var ptr = Marshal.StringToHGlobalAnsi(songName); try { @@ -317,7 +285,7 @@ public void GetSongNameShouldReturnValue() var result = wrapper.GetSongName(slotId); // then - Assert.That(result, Is.EqualTo(songName)); + result.Should().Be(songName); library.Received(1).sv_get_song_name(slotId); } finally @@ -326,78 +294,70 @@ public void GetSongNameShouldReturnValue() } } - [Test] - public void GetSongTplShouldReturnValue() + [Test, AutoData] + public void GetSongTplShouldReturnValue(int songTpl, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var songTpl = Any.Integer(); library.sv_get_song_tpl(Arg.Any()).Returns(songTpl); - var slotId = Any.Integer(); // when var value = wrapper.GetSongTpl(slotId); // then library.Received(1).sv_get_song_tpl(slotId); - Assert.That(value, Is.EqualTo(songTpl)); + value.Should().Be(songTpl); } - [Test] - public void GetSongTplShouldThrowOnInvalidValue() + [Test, AutoData] + public void GetSongTplShouldThrowOnInvalidValue(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_song_tpl(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_get_song_tpl(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => _ = wrapper.GetSongTpl(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetSongTpl(slotId)).Should().Throw(); // then library.Received(1).sv_get_song_tpl(slotId); } - [Test] - public void GetTicksPerSecondShouldReturnValue() + [Test, AutoData] + public void GetTicksPerSecondShouldReturnValue(uint ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var ticks = Any.UnsignedInt(); library.sv_get_ticks_per_second().Returns(ticks); // when var result = wrapper.GetTicksPerSecond(); // then - Assert.That(result, Is.EqualTo(ticks)); + result.Should().Be(ticks); } - [Test] - public void GetTicksShouldReturnValue() + [Test, AutoData] + public void GetTicksShouldReturnValue(uint ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var ticks = Any.UnsignedInt(); library.sv_get_ticks().Returns(ticks); // when var result = wrapper.GetTicks(); // then - Assert.That(result, Is.EqualTo(ticks)); + result.Should().Be(ticks); } - [Test] - public void GetTimeMapShouldReturnExpectedValue() + [Test, AutoData] + public void GetTimeMapShouldReturnExpectedValue(int slotId, int startLine, TimeMapType mapType) { + const int length = 32; var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var timeMap = Enumerable.Range(0, 64).ToArray(); - var slotId = Any.Integer(); - var startLine = Any.Integer(); - var length = timeMap.Length; - var mapType = Any.Instance(); + var timeMap = Enumerable.Range(0, length).ToArray(); library .When(static l => @@ -406,7 +366,9 @@ public void GetTimeMapShouldReturnExpectedValue() { var intPtr = callInfo.Arg(); for (var i = 0; i < timeMap.Length; i++) + { Marshal.WriteInt32(intPtr + i * 4, timeMap[i]); + } }); // when @@ -417,48 +379,38 @@ public void GetTimeMapShouldReturnExpectedValue() value.Should().BeEquivalentTo(timeMap); } - [Test] - public void GetTimeMapShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void GetTimeMapShouldThrowOnNonZeroReturnCode(int slotId, int startLine, int length, TimeMapType mapType) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var startLine = Any.Integer(); - var length = Any.Integer(); - var mapType = Any.Instance(); - library.sv_get_time_map(default, default, default, default, default).ReturnsForAnyArgs(-1); + library.sv_get_time_map(0, 0, 0, default, 0).ReturnsForAnyArgs(ErrorResponseCode); // when - then - Assert.That(() => _ = wrapper.GetTimeMap(slotId, startLine, length, mapType), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.GetTimeMap(slotId, startLine, length, mapType)).Should().Throw(); // then library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)mapType); } - [Test] - public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue() + [Test, AutoData] + public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sampleRate, AudioChannels channels, InitFlags initFlags) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var sampleRate = Any.Integer(); - var channels = Any.Instance(); - var initFlags = Any.Instance(); - library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) - .Returns(-1); + .Returns(ErrorResponseCode); // when - then - Assert.That(() => _ = wrapper.Initialize(sampleRate, null, channels, initFlags), - Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Initialize(sampleRate, null, channels, initFlags)).Should().Throw(); // and then library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); } - [Test] - public void InitializeShouldCallInitAsExpected() + [Test, AutoData] + public void InitializeShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, InitFlags initFlags) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -467,11 +419,6 @@ public void InitializeShouldCallInitAsExpected() library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnCode); - var sampleRate = Any.Integer(); - var channels = Any.Instance(); - var initFlags = Any.Instance(); - var config = Any.String(); - string? receivedString = null; library.When(static l => l.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -481,12 +428,12 @@ public void InitializeShouldCallInitAsExpected() // then library.Received(1).sv_init(Arg.Any(), sampleRate, (int)channels, (uint)initFlags); - Assert.That(version, Is.EqualTo(new LibraryVersion(returnCode))); - Assert.That(receivedString, Is.EqualTo(config)); + version.Should().Be(new LibraryVersion(returnCode)); + receivedString.Should().Be(config); } - [Test] - public void InitializeShouldCallInitAsExpectedWithNullConfig() + [Test, AutoData] + public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, AudioChannels channels, InitFlags initFlags) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -495,58 +442,48 @@ public void InitializeShouldCallInitAsExpectedWithNullConfig() library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnCode); - var sampleRate = Any.Instance(); - var channels = Any.Instance(); - var initFlags = Any.Instance(); - // when var version = wrapper.Initialize(sampleRate, null, channels, initFlags); // then library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); - Assert.That(version, Is.EqualTo(new LibraryVersion(returnCode))); + version.Should().Be(new LibraryVersion(returnCode)); } - [TestCase(true)] - [TestCase(false)] - public void IsPlayingShouldReturnExpectedValue(bool isPlaying) + [Test, AutoData] + public void IsPlayingShouldReturnExpectedValue(bool isPlaying, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_end_of_song(Arg.Any()).Returns(isPlaying ? 0 : 1); - var slotId = Any.Integer(); // when var value = wrapper.IsPlaying(slotId); // then library.Received(1).sv_end_of_song(slotId); - Assert.That(value, Is.EqualTo(isPlaying)); + value.Should().Be(isPlaying); } - [TestCase(-1)] - [TestCase(2)] - public void IsPlayingShouldThrowOnUnexpectedValue(int returnCode) + [Test, AutoData] + public void IsPlayingShouldThrowOnUnexpectedValue(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_end_of_song(Arg.Any()).Returns(returnCode); - var slotId = Any.Integer(); + library.sv_end_of_song(Arg.Any()).Returns(ErrorResponseCode); // when - Assert.That(() => _ = wrapper.IsPlaying(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.IsPlaying(slotId)).Should().Throw(); // then library.Received(1).sv_end_of_song(slotId); } - [Test] - public void LoadFromMemoryShouldCallExpectedMethods() + [Test, AutoData] + public void LoadFromMemoryShouldCallExpectedMethods(int slotId, byte[] data) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var data = Any.Array(); var receivedArray = Array.Empty(); library.When(static l => l.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any())) @@ -560,35 +497,30 @@ public void LoadFromMemoryShouldCallExpectedMethods() wrapper.Load(slotId, data); // then - Assert.That(receivedArray, Is.EquivalentTo(data)); + receivedArray.Should().BeEquivalentTo(data); library.Received(1).sv_load_from_memory(slotId, Arg.Any(), (uint)data.Length); } - [Test] - public void LoadFromMemoryShouldThrowOnNonzeroReturnCode() + [Test, AutoData] + public void LoadFromMemoryShouldThrowOnNonzeroReturnCode(int slotId, byte[] data) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var data = Any.Array(); - - library.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + library.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.Load(slotId, data), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Load(slotId, data)).Should().Throw(); // then library.Received(1).sv_load_from_memory(slotId, Arg.Any(), Arg.Any()); } - [Test] - public void LoadShouldCallExpectedMethods() + [Test, AutoData] + public void LoadShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); var receivedString = string.Empty; - var path = Any.String(); library.When(static l => l.sv_load(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -597,34 +529,30 @@ public void LoadShouldCallExpectedMethods() wrapper.Load(slotId, path); // then - Assert.That(receivedString, Is.EqualTo(path)); + receivedString.Should().Be(path); library.Received(1).sv_load(slotId, Arg.Any()); } - [Test] - public void LoadShouldThrowOnNonzeroReturnCode() + [Test, AutoData] + public void LoadShouldThrowOnNonzeroReturnCode(int slotId, string fileName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var fileName = Any.String(); - - library.sv_load(Arg.Any(), Arg.Any()).Returns(-1); + library.sv_load(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.Load(slotId, fileName), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Load(slotId, fileName)).Should().Throw(); // then library.Received(1).sv_load(slotId, Arg.Any()); } - [Test] - public void LockSlotShouldCallExpectedMethod() + [Test, AutoData] + public void LockSlotShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_lock_slot(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.LockSlot(slotId); @@ -633,28 +561,26 @@ public void LockSlotShouldCallExpectedMethod() library.Received(1).sv_lock_slot(slotId); } - [Test] - public void LockSlotShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void LockSlotShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_lock_slot(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_lock_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.LockSlot(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.LockSlot(slotId)).Should().Throw(); // then library.Received(1).sv_lock_slot(slotId); } - [Test] - public void OpenSlotShouldCallExpectedMethod() + [Test, AutoData] + public void OpenSlotShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_open_slot(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.OpenSlot(slotId); @@ -663,28 +589,26 @@ public void OpenSlotShouldCallExpectedMethod() library.Received(1).sv_open_slot(slotId); } - [Test] - public void OpenSlotShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void OpenSlotShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_open_slot(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_open_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.OpenSlot(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.OpenSlot(slotId)).Should().Throw(); // then library.Received(1).sv_open_slot(slotId); } - [Test] - public void PauseStreamShouldCallExpectedMethod() + [Test, AutoData] + public void PauseStreamShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_pause(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.PauseStream(slotId); @@ -693,28 +617,26 @@ public void PauseStreamShouldCallExpectedMethod() library.Received(1).sv_pause(slotId); } - [Test] - public void PauseStreamShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void PauseStreamShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_pause(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_pause(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.PauseStream(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.PauseStream(slotId)).Should().Throw(); // then library.Received(1).sv_pause(slotId); } - [Test] - public void ResumeStreamOnSyncEffectShouldCallMethod() + [Test, AutoData] + public void ResumeStreamOnSyncEffectShouldCallMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_sync_resume(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.ResumeStreamOnSyncEffect(slotId); @@ -723,28 +645,26 @@ public void ResumeStreamOnSyncEffectShouldCallMethod() library.Received(1).sv_sync_resume(slotId); } - [Test] - public void ResumeStreamOnSyncEffectShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void ResumeStreamOnSyncEffectShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_sync_resume(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_sync_resume(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.ResumeStreamOnSyncEffect(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.ResumeStreamOnSyncEffect(slotId)).Should().Throw(); // then library.Received(1).sv_sync_resume(slotId); } - [Test] - public void ResumeStreamShouldCallExpectedMethod() + [Test, AutoData] + public void ResumeStreamShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_resume(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.ResumeStream(slotId); @@ -753,29 +673,26 @@ public void ResumeStreamShouldCallExpectedMethod() library.Received(1).sv_resume(slotId); } - [Test] - public void ResumeStreamShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void ResumeStreamShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_resume(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_resume(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.ResumeStream(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.ResumeStream(slotId)).Should().Throw(); // then library.Received(1).sv_resume(slotId); } - [Test] - public void RewindShouldCallExpectedMethod() + [Test, AutoData] + public void RewindShouldCallExpectedMethod(int slotId, int line) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_rewind(Arg.Any(), Arg.Any()).Returns(0); - var slotId = Any.Integer(); - var line = Any.Integer(); // when wrapper.Rewind(slotId, line); @@ -784,30 +701,26 @@ public void RewindShouldCallExpectedMethod() library.Received(1).sv_rewind(slotId, line); } - [Test] - public void RewindShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void RewindShouldThrowOnNonZeroReturnCode(int slotId, int line) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_rewind(Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); - var line = Any.Integer(); + library.sv_rewind(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.Rewind(slotId, line), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Rewind(slotId, line)).Should().Throw(); // then library.Received(1).sv_rewind(slotId, line); } - [Test] - public void SaveShouldCallExpectedMethods() + [Test, AutoData] + public void SaveShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); var receivedString = string.Empty; - var path = Any.String(); library.When(static l => l.sv_save(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -816,95 +729,108 @@ public void SaveShouldCallExpectedMethods() wrapper.Save(slotId, path); // then - Assert.That(receivedString, Is.EqualTo(path)); + receivedString.Should().Be(path); library.Received(1).sv_save(slotId, Arg.Any()); } - [Test] - public void SaveShouldThrowOnUnexpectedReturnCode() + [Test, AutoData] + public void SaveShouldThrowOnUnexpectedReturnCode(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var path = Any.String(); - library.sv_save(Arg.Any(), Arg.Any()).Returns(-1); + library.sv_save(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - Assert.That(() => wrapper.Save(slotId, path), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Save(slotId, path)).Should().Throw(); // then library.Received(1).sv_save(slotId, Arg.Any()); } - [Test] - public void SendEventAllOverloadsShouldSendArgumentsAsExpectex() + [Test, AutoData] + public void SendEventWithPatternEventStructShouldSendArgumentsAsExpected(int slotId, int track, PatternEvent patternEvent) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var track = Any.Integer(); - library.sv_send_event(default, default, default, default, default, default, default).ReturnsForAnyArgs(0); - var @event = new PatternEvent(Any.Byte(), Any.Byte(), Any.UnsignedShort(), Any.Byte(), Any.UnsignedShort()); + library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(0); // when - wrapper.SendEvent(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); - wrapper.SendEvent(slotId, track, @event); + wrapper.SendEvent(slotId, track, patternEvent); // then - library.Received(2).sv_send_event(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); + library.Received(1).sv_send_event(slotId, track, patternEvent.NN, patternEvent.VV, patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); } - [Test] - public void SendEventAllOverloadsShouldThrowException() + [Test, AutoData] + public void SendEventWithRawDataShouldSendArgumentsAsExpected(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var track = Any.Integer(); - library.sv_send_event(default, default, default, default, default, default, default).ReturnsForAnyArgs(-1); - var @event = new PatternEvent(Any.Byte(), Any.Byte(), Any.UnsignedShort(), Any.Byte(), Any.UnsignedShort()); + library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(0); - Assert.Multiple(() => - { - Assert.That( - () => wrapper.SendEvent(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY), - Throws.Exception.TypeOf()); - Assert.That(() => wrapper.SendEvent(slotId, track, @event), Throws.Exception.TypeOf()); - }); + // when + wrapper.SendEvent(slotId, track, nn, vv, mm, ccee, xxyy); // then - library.Received(2).sv_send_event(slotId, track, @event.NN, @event.VV, @event.MM, @event.CCEE, @event.XXYY); + library.Received(1).sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); + } + + [Test, AutoData] + public void SendEventWithPatternEventShouldThrowException(int slotId, int track, PatternEvent patternEvent) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + // when + library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(ErrorResponseCode); + + // then + wrapper.Invoking(w => w.SendEvent(slotId, track, patternEvent)).Should().Throw(); + library.Received(1).sv_send_event(slotId, track, patternEvent.NN, patternEvent.VV, patternEvent.MM, patternEvent.CCEE, patternEvent.XXYY); + } + + [Test, AutoData] + public void SendEventWithRawDataShouldThrowException(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) + { + var library = Substitute.For(); + var wrapper = new SunVoxLibNativeWrapper(library); + + library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(-1); + + // then + wrapper.Invoking(w => w.SendEvent(slotId, track, nn, vv, mm, ccee, xxyy)).Should().Throw(); + library.Received(1).sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); } [TestCase(true)] [TestCase(false)] - public void SetAutostopShouldCallWithArgument(bool autostop) + public void SetAutoStopShouldCallWithArgument(bool autoStop) { + var fixture = new Fixture(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(0); - var slotId = Any.Integer(); + var slotId = fixture.Create(); // when - wrapper.SetAutoStop(slotId, autostop); + wrapper.SetAutoStop(slotId, autoStop); // then - library.Received(1).sv_set_autostop(slotId, autostop ? 1 : 0); + library.Received(1).sv_set_autostop(slotId, autoStop ? 1 : 0); } - [Test] - public void SetAutostopShouldThrowOnInvalidReturnCode() + [Test, AutoData] + public void SetAutoStopShouldThrowOnInvalidReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); // when - then - Assert.That(() => wrapper.SetAutoStop(slotId, false), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetAutoStop(slotId, false)).Should().Throw(); // then library.Received(1).sv_set_autostop(slotId, 0); @@ -914,11 +840,12 @@ public void SetAutostopShouldThrowOnInvalidReturnCode() [TestCase(false)] public void SetSendEventTimestampShouldCallWithArgument(bool reset) { + var fixture = new Fixture(); var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var slotId = Any.Integer(); - var t = Any.Integer(); + var slotId = fixture.Create(); + var t = fixture.Create(); // when wrapper.SetSendEventTimestamp(slotId, reset, t); @@ -927,30 +854,26 @@ public void SetSendEventTimestampShouldCallWithArgument(bool reset) library.Received(1).sv_set_event_t(slotId, reset ? 0 : 1, t); } - [Test] - public void SetSendEventTimestampShouldThrowOnInvalidReturnCode() + [Test, AutoData] + public void SetSendEventTimestampShouldThrowOnInvalidReturnCode(int slotId, int t) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); - var t = Any.Integer(); // when - then - Assert.That(() => wrapper.SetSendEventTimestamp(slotId, false, t), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetSendEventTimestamp(slotId, false, t)).Should().Throw(); // then library.Received(1).sv_set_event_t(slotId, 1, t); } - [Test] - public void SetSongNameShouldSendString() + [Test, AutoData] + public void SetSongNameShouldSendString(int slotId, string newSongName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var receivedString = string.Empty; - var newSongName = Any.String(); + string? receivedString = null; library.When(static l => l.sv_set_song_name(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); @@ -959,34 +882,31 @@ public void SetSongNameShouldSendString() wrapper.SetSongName(slotId, newSongName); // then - Assert.That(receivedString, Is.EqualTo(newSongName)); + receivedString.Should().Be(newSongName); library.Received(1).sv_set_song_name(slotId, Arg.Any()); } - [Test] - public void SetSongNameShouldThrowExceptionOnNonzeroReturnCode() + [Test, AutoData] + public void SetSongNameShouldThrowExceptionOnNonzeroReturnCode(int slotId, string newSongName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - var slotId = Any.Integer(); - var newSongName = Any.String(); library.sv_set_song_name(Arg.Any(), Arg.Any()).Returns(-1); // when - Assert.That(() => wrapper.SetSongName(slotId, newSongName), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.SetSongName(slotId, newSongName)).Should().Throw(); // then library.Received(1).sv_set_song_name(slotId, Arg.Any()); } - [Test] - public void StartPlaybackFromBeginningShouldCallExpectedMethod() + [Test, AutoData] + public void StartPlaybackFromBeginningShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_play_from_beginning(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.StartPlaybackFromBeginning(slotId); @@ -995,28 +915,26 @@ public void StartPlaybackFromBeginningShouldCallExpectedMethod() library.Received(1).sv_play_from_beginning(slotId); } - [Test] - public void StartPlaybackFromBeginningShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void StartPlaybackFromBeginningShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_play_from_beginning(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_play_from_beginning(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.StartPlaybackFromBeginning(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.StartPlaybackFromBeginning(slotId)).Should().Throw(); // then library.Received(1).sv_play_from_beginning(slotId); } - [Test] - public void StartPlaybackShouldCallExpectedMethod() + [Test, AutoData] + public void StartPlaybackShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_play(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.StartPlayback(slotId); @@ -1025,28 +943,26 @@ public void StartPlaybackShouldCallExpectedMethod() library.Received(1).sv_play(slotId); } - [Test] - public void StartPlaybackShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void StartPlaybackShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_play(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_play(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.StartPlayback(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.StartPlayback(slotId)).Should().Throw(); // then library.Received(1).sv_play(slotId); } - [Test] - public void StopPlaybackShouldCallMethod() + [Test, AutoData] + public void StopPlaybackShouldCallMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_stop(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.StopPlayback(slotId); @@ -1055,28 +971,26 @@ public void StopPlaybackShouldCallMethod() library.Received(1).sv_stop(slotId); } - [Test] - public void StopPlaybackShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void StopPlaybackShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_stop(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_stop(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.StopPlayback(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.StopPlayback(slotId)).Should().Throw(); // then library.Received(1).sv_stop(slotId); } - [Test] - public void UnlockSlotShouldCallExpectedMethod() + [Test, AutoData] + public void UnlockSlotShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_unlock_slot(Arg.Any()).Returns(0); - var slotId = Any.Integer(); // when wrapper.UnlockSlot(slotId); @@ -1085,16 +999,15 @@ public void UnlockSlotShouldCallExpectedMethod() library.Received(1).sv_unlock_slot(slotId); } - [Test] - public void UnlockSlotShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void UnlockSlotShouldThrowOnNonZeroReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_unlock_slot(Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_unlock_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.UnlockSlot(slotId), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.UnlockSlot(slotId)).Should().Throw(); // then library.Received(1).sv_unlock_slot(slotId); @@ -1119,41 +1032,36 @@ public void UpdateInputDevicesShouldThrowOnNonZeroReturnCode() { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_update_input().Returns(-1); + library.sv_update_input().Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.UpdateInputDevices(), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.UpdateInputDevices()).Should().Throw(); } - [Test] - public void VolumeShouldReturnExpectedValue() + [Test, AutoData] + public void VolumeShouldReturnExpectedValue(int slotId, int volume, int otherVolume) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const int volume = 127; - const int otherVolume = 125; library.sv_volume(Arg.Any(), Arg.Any()).Returns(volume); - var slotId = Any.Integer(); // when var value = wrapper.Volume(slotId, otherVolume); // then library.Received(1).sv_volume(slotId, otherVolume); - Assert.That(value, Is.EqualTo(volume)); + value.Should().Be(volume); } - [Test] - public void VolumeShouldThrowOnNonZeroReturnCode() + [Test, AutoData] + public void VolumeShouldThrowOnNonZeroReturnCode(int slotId, int otherVolume) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const int otherVolume = 125; - library.sv_volume(Arg.Any(), Arg.Any()).Returns(-1); - var slotId = Any.Integer(); + library.sv_volume(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - then - Assert.That(() => wrapper.Volume(slotId, otherVolume), Throws.Exception.TypeOf()); + wrapper.Invoking(w => w.Volume(slotId, otherVolume)).Should().Throw(); // then library.Received(1).sv_volume(slotId, otherVolume); diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs index d198c08..e6f6529 100644 --- a/SunSharp.Tests/NoteTests.cs +++ b/SunSharp.Tests/NoteTests.cs @@ -1,12 +1,9 @@ -using System; -using NUnit.Framework; - -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class NoteTests { - public static TestCaseData[] TestCases => new TestCaseData[] - { + public static TestCaseData[] TestCases => + [ new(new Note(NoteName.C, 0), "C0"), new(new Note(NoteName.Cs, 0), "c0"), new(new Note(NoteName.G, 3), "G3"), @@ -19,7 +16,7 @@ public class NoteTests new(Note.CleanSynths, "CS"), new(Note.CleanModule, "CM"), new(new Note(255), "??") - }; + ]; [TestCase(NoteName.A, 'A')] [TestCase(NoteName.As, 'a')] @@ -38,8 +35,7 @@ public class NoteTests public void GetNoteCharacterShouldReturnExpectedValue(NoteName argument, char expectedValue) { var value = argument.GetNoteCharacter(); - - Assert.That(value, Is.EqualTo(expectedValue)); + value.Should().Be(expectedValue); } [TestCase(0, NoteName.Other)] @@ -56,8 +52,7 @@ public void NoteNameGetterShouldReturnExpectedValue(byte noteValue, NoteName exp { var note = new Note(noteValue); var value = note.Name; - - Assert.That(value, Is.EqualTo(expectedValue)); + value.Should().Be(expectedValue); } [TestCase(NoteName.C, 0, 1)] @@ -68,13 +63,9 @@ public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName n { var note = new Note(name, octave); var value = note.Value; - - Assert.Multiple(() => - { - Assert.That(value, Is.EqualTo(expectedValue)); - Assert.That(note.Octave, Is.EqualTo(octave)); - Assert.That(note.Name, Is.EqualTo(name)); - }); + value.Should().Be(expectedValue); + note.Octave.Should().Be(octave); + note.Name.Should().Be(name); } [TestCase(NoteName.C, -1)] @@ -82,7 +73,9 @@ public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName n [TestCase(NoteName.G, 10)] public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidArguments(NoteName name, int octave) { - Assert.Throws(() => _ = new Note(name, octave)); + var action = () => _ = new Note(name, octave); + action.Invoking(a => a()) + .Should().Throw(); } [TestCase(NoteName.Other)] @@ -90,52 +83,47 @@ public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidArguments(NoteNa [TestCase((NoteName)13)] public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidNoteName(NoteName name) { - Assert.Throws(() => _ = new Note(name, 1)); + var action = () => _ = new Note(name, 1); + action.Invoking(a => a()) + .Should().Throw(); } [Test] public void NotePropertiesShouldReturnValidValuesForSpecialCases() { - Assert.Multiple(static () => - { - Assert.That(Note.AllNotesOff.IsAllNotesOff, Is.True); - Assert.That(Note.Off.IsNoteOff, Is.True); - Assert.That(Note.Play.IsPlay, Is.True); - Assert.That(Note.SetPitch.IsSetPitch, Is.True); - Assert.That(Note.Stop.IsStop, Is.True); - Assert.That(Note.Silence.IsSilence, Is.True); - Assert.That(Note.CleanSynths.IsCleanSynths, Is.True); - Assert.That(Note.CleanModule.IsCleanModule, Is.True); - - Assert.That(Note.Silence.IsNormal, Is.False); - Assert.That(Note.SetPitch.IsNormal, Is.False); - Assert.That(Note.Stop.IsNormal, Is.False); - Assert.That(Note.AllNotesOff.Octave, Is.EqualTo(-1)); - Assert.That(Note.AllNotesOff.Name, Is.EqualTo(NoteName.Other)); - }); - - Assert.Multiple(static () => - { - var normalNote = new Note(NoteName.E, 5); - - Assert.That(normalNote.IsAllNotesOff, Is.False); - Assert.That(normalNote.IsNoteOff, Is.False); - Assert.That(normalNote.IsPlay, Is.False); - Assert.That(normalNote.IsSetPitch, Is.False); - Assert.That(normalNote.IsStop, Is.False); - Assert.That(normalNote.IsSilence, Is.False); - Assert.That(normalNote.IsCleanSynths, Is.False); - Assert.That(normalNote.IsCleanModule, Is.False); - Assert.That(normalNote.IsNormal, Is.True); - Assert.That(normalNote.Octave, Is.EqualTo(5)); - Assert.That(normalNote.Name, Is.EqualTo(NoteName.E)); - }); + Note.AllNotesOff.IsAllNotesOff.Should().BeTrue(); + Note.Off.IsNoteOff.Should().BeTrue(); + Note.Play.IsPlay.Should().BeTrue(); + Note.SetPitch.IsSetPitch.Should().BeTrue(); + Note.Stop.IsStop.Should().BeTrue(); + Note.Silence.IsSilence.Should().BeTrue(); + Note.CleanSynths.IsCleanSynths.Should().BeTrue(); + Note.CleanModule.IsCleanModule.Should().BeTrue(); + + Note.Silence.IsNormal.Should().BeFalse(); + Note.SetPitch.IsNormal.Should().BeFalse(); + Note.Stop.IsNormal.Should().BeFalse(); + Note.AllNotesOff.Octave.Should().Be(-1); + Note.AllNotesOff.Name.Should().Be(NoteName.Other); + + var normalNote = new Note(NoteName.E, 5); + normalNote.IsAllNotesOff.Should().BeFalse(); + normalNote.IsNoteOff.Should().BeFalse(); + normalNote.IsPlay.Should().BeFalse(); + normalNote.IsSetPitch.Should().BeFalse(); + normalNote.IsStop.Should().BeFalse(); + normalNote.IsSilence.Should().BeFalse(); + normalNote.IsCleanSynths.Should().BeFalse(); + normalNote.IsCleanModule.Should().BeFalse(); + normalNote.IsNormal.Should().BeTrue(); + normalNote.Octave.Should().Be(5); + normalNote.Name.Should().Be(NoteName.E); } [TestCaseSource(nameof(TestCases))] public void NoteToStringShouldReturnExpectedValues(Note note, string expectedValue) { - Assert.That(note.ToString(), Is.EqualTo(expectedValue)); + note.ToString().Should().Be(expectedValue); } [TestCase(0)] @@ -146,12 +134,8 @@ public void NoteImplicitConversionShouldSetDataAsExpected(byte value) { var note = (Note)value; var otherValue = (byte)note; - - Assert.Multiple(() => - { - Assert.That(note.Value, Is.EqualTo(value)); - Assert.That(otherValue, Is.EqualTo(value)); - }); + note.Value.Should().Be(value); + otherValue.Should().Be(value); } [Test] @@ -161,29 +145,24 @@ public void NoteEqualityComparisonShouldJustWork() var b = new Note(1); var c = new Note(2); - Assert.Multiple(() => - { -#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - Assert.That(a.Equals(b)); - Assert.That(a.Equals(a)); - Assert.That(a.Equals(1)); - Assert.That(a.Equals(1)); - Assert.That(a.Equals((object?)b)); - Assert.That(a.Equals((object?)a)); - Assert.That(a.Equals(null), Is.False); - Assert.That(a.Equals(new object()), Is.False); - Assert.That(b.Equals(new Note(2)), Is.False); - Assert.That(b.Equals(2), Is.False); - Assert.That(new Note(1).Equals(2), Is.False); - - Assert.That(a == b); - Assert.That(a != b, Is.False); - Assert.That(a == 1); - Assert.That(a != 2); - Assert.That(a != c); - Assert.That(a == c, Is.False); -#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - }); + a.Equals(b).Should().BeTrue(); + a.Equals(a).Should().BeTrue(); + a.Equals(1).Should().BeTrue(); + a.Equals(1).Should().BeTrue(); + a.Equals((object?)b).Should().BeTrue(); + a.Equals((object?)a).Should().BeTrue(); + a.Equals(null).Should().BeFalse(); + a.Equals(new object()).Should().BeFalse(); + b.Equals(new Note(2)).Should().BeFalse(); + b.Equals(2).Should().BeFalse(); + new Note(1).Equals(2).Should().BeFalse(); + + (a == b).Should().BeTrue(); + (a != b).Should().BeFalse(); + (a == 1).Should().BeTrue(); + (a != 2).Should().BeTrue(); + (a != c).Should().BeTrue(); + (a == c).Should().BeFalse(); } [Test] @@ -193,10 +172,7 @@ public void NoteGetHashCodeShouldPreserveComparability() var b = new Note(1); var c = new Note(2); - Assert.Multiple(() => - { - Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); - Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); - }); + a.GetHashCode().Should().Be(b.GetHashCode()); + a.GetHashCode().Should().NotBe(c.GetHashCode()); } } diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index 87bc15f..1d90a32 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -1,11 +1,9 @@ -using NUnit.Framework; - -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class PatternEventTests { - public static TestCaseData[] TestCases => new[] - { + public static TestCaseData[] TestCases => + [ new TestCaseData(new PatternEvent(), "____________"), new TestCaseData(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001______"), new TestCaseData(new PatternEvent(0, 1), "__________0001"), @@ -13,7 +11,7 @@ public class PatternEventTests new TestCaseData(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), new TestCaseData(new PatternEvent(Note.Off), "--__________"), new TestCaseData(new PatternEvent(Note.AllNotesOff), "-!__________") - }; + ]; private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte velocity = 0, ushort module = 0, byte controller = 0, byte effect = 0, ushort xxyy = 0) @@ -41,20 +39,17 @@ public void PatternEventConstructorFromBinaryDataShouldSetValuesAsExpected() var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); var patternEvent = new PatternEvent(binaryValue); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(note); + patternEvent.Note.Value.Should().Be(note); + patternEvent.CC.Should().Be(controller); + patternEvent.EE.Should().Be(effect); + patternEvent.CCEE.Should().Be((controller << 8) | effect); + patternEvent.MM.Should().Be(module); + patternEvent.Effect.Should().Be((Effect)effect); + patternEvent.XXYY.Should().Be(xxyy); + patternEvent.XX.Should().Be((byte)xx); + patternEvent.YY.Should().Be((byte)yy); } [Test] @@ -68,20 +63,17 @@ public void PatternEventConstructorForEffectShouldSetValuesAsExpected() var binaryValue = ConstructBinaryPatternEventValue(effect: effect, xxyy: xxyy); var patternEvent = new PatternEvent((Effect)effect, xxyy); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(0), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(0), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(0), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo(effect), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(0), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(0); + patternEvent.Note.Value.Should().Be(0); + patternEvent.CC.Should().Be(0); + patternEvent.EE.Should().Be(effect); + patternEvent.CCEE.Should().Be(effect); + patternEvent.MM.Should().Be(0); + patternEvent.Effect.Should().Be((Effect)effect); + patternEvent.XXYY.Should().Be(xxyy); + patternEvent.XX.Should().Be((byte)xx); + patternEvent.YY.Should().Be((byte)yy); } [Test] @@ -94,20 +86,17 @@ public void PatternEventConstructorForNoteShouldSetValuesAsExpected() var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module); var patternEvent = new PatternEvent(note, velocity, module); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(0), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(0), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo(0), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo(Effect.None), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(0), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(0), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(0), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(note); + patternEvent.Note.Value.Should().Be(note); + patternEvent.CC.Should().Be(0); + patternEvent.EE.Should().Be(0); + patternEvent.CCEE.Should().Be(0); + patternEvent.MM.Should().Be(module); + patternEvent.Effect.Should().Be(Effect.None); + patternEvent.XXYY.Should().Be(0); + patternEvent.XX.Should().Be(0); + patternEvent.YY.Should().Be(0); } [Test] @@ -125,20 +114,17 @@ public void PatternEventConstructorWithAllParametersShouldSetValuesAsExpected() var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); var patternEvent = new PatternEvent(note, velocity, module, controller, effect, xxyy); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(note); + patternEvent.Note.Value.Should().Be(note); + patternEvent.CC.Should().Be(controller); + patternEvent.EE.Should().Be(effect); + patternEvent.CCEE.Should().Be((controller << 8) | effect); + patternEvent.MM.Should().Be(module); + patternEvent.Effect.Should().Be((Effect)effect); + patternEvent.XXYY.Should().Be(xxyy); + patternEvent.XX.Should().Be((byte)xx); + patternEvent.YY.Should().Be((byte)yy); } [Test] @@ -156,20 +142,17 @@ public void PatternEventConstructorWithAllParametersWithSpecifiedTypesShouldSetV var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); var patternEvent = new PatternEvent(note, velocity, module, controller, (Effect)effect, xxyy); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(note); + patternEvent.Note.Value.Should().Be(note); + patternEvent.CC.Should().Be(controller); + patternEvent.EE.Should().Be(effect); + patternEvent.CCEE.Should().Be((controller << 8) | effect); + patternEvent.MM.Should().Be(module); + patternEvent.Effect.Should().Be((Effect)effect); + patternEvent.XXYY.Should().Be(xxyy); + patternEvent.XX.Should().Be((byte)xx); + patternEvent.YY.Should().Be((byte)yy); } [Test] @@ -187,20 +170,17 @@ public void PatternEventConstructorWithAllParametersWithPackedControllerEffectSh var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); var patternEvent = new PatternEvent(note, velocity, module, (controller << 8) | effect, xxyy); - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(binaryValue), "Data"); - Assert.That(patternEvent.NN, Is.EqualTo(note), "NN"); - Assert.That(patternEvent.Note.Value, Is.EqualTo(note), "Note"); - Assert.That(patternEvent.CC, Is.EqualTo(controller), "CC"); - Assert.That(patternEvent.EE, Is.EqualTo(effect), "EE"); - Assert.That(patternEvent.CCEE, Is.EqualTo((controller << 8) | effect), "CCEE"); - Assert.That(patternEvent.MM, Is.EqualTo(module), "MM"); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)effect), "Effect"); - Assert.That(patternEvent.XXYY, Is.EqualTo(xxyy), "XXYY"); - Assert.That(patternEvent.XX, Is.EqualTo(xx), "XX"); - Assert.That(patternEvent.YY, Is.EqualTo(yy), "YY"); - }); + patternEvent.Data.Should().Be(binaryValue); + patternEvent.NN.Should().Be(note); + patternEvent.Note.Value.Should().Be(note); + patternEvent.CC.Should().Be(controller); + patternEvent.EE.Should().Be(effect); + patternEvent.CCEE.Should().Be((controller << 8) | effect); + patternEvent.MM.Should().Be(module); + patternEvent.Effect.Should().Be((Effect)effect); + patternEvent.XXYY.Should().Be(xxyy); + patternEvent.XX.Should().Be((byte)xx); + patternEvent.YY.Should().Be((byte)yy); } [Test] @@ -210,129 +190,96 @@ public void PatternEventSettersShouldJustWork() { NN = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(1))); - Assert.That(patternEvent.NN, Is.EqualTo(1)); - Assert.That(patternEvent.Note, Is.EqualTo((Note)1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(1)); + patternEvent.NN.Should().Be(1); + patternEvent.Note.Should().Be((Note)1); patternEvent = new PatternEvent { Note = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(1))); - Assert.That(patternEvent.NN, Is.EqualTo(1)); - Assert.That(patternEvent.Note, Is.EqualTo((Note)1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(1)); + patternEvent.NN.Should().Be(1); + patternEvent.Note.Should().Be((Note)1); patternEvent = new PatternEvent { MM = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(module: 1))); - Assert.That(patternEvent.MM, Is.EqualTo(1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(module: 1)); + patternEvent.MM.Should().Be(1); patternEvent = new PatternEvent { VV = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(velocity: 1))); - Assert.That(patternEvent.VV, Is.EqualTo(1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(velocity: 1)); + patternEvent.VV.Should().Be(1); patternEvent = new PatternEvent { CC = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(controller: 1))); - Assert.That(patternEvent.CC, Is.EqualTo(1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(controller: 1)); + patternEvent.CC.Should().Be(1); patternEvent = new PatternEvent { EE = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1))); - Assert.That(patternEvent.EE, Is.EqualTo(1)); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(effect: 1)); + patternEvent.EE.Should().Be(1); + patternEvent.Effect.Should().Be((Effect)1); patternEvent = new PatternEvent { Effect = (Effect)1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1))); - Assert.That(patternEvent.EE, Is.EqualTo(1)); - Assert.That(patternEvent.Effect, Is.EqualTo((Effect)1)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(effect: 1)); + patternEvent.EE.Should().Be(1); + patternEvent.Effect.Should().Be((Effect)1); patternEvent = new PatternEvent { CCEE = 0x0101 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(effect: 1, controller: 1))); - Assert.That(patternEvent.EE, Is.EqualTo(1)); - Assert.That(patternEvent.CC, Is.EqualTo(1)); - Assert.That(patternEvent.CCEE, Is.EqualTo(0x0101)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(effect: 1, controller: 1)); + patternEvent.EE.Should().Be(1); + patternEvent.CC.Should().Be(1); + patternEvent.CCEE.Should().Be(0x0101); patternEvent = new PatternEvent { XXYY = 0x0101 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0101))); - Assert.That(patternEvent.XX, Is.EqualTo(1)); - Assert.That(patternEvent.YY, Is.EqualTo(1)); - Assert.That(patternEvent.XXYY, Is.EqualTo(0x0101)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(xxyy: 0x0101)); + patternEvent.XX.Should().Be(1); + patternEvent.YY.Should().Be(1); + patternEvent.XXYY.Should().Be(0x0101); patternEvent = new PatternEvent { XX = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0001))); - Assert.That(patternEvent.XX, Is.EqualTo(1)); - Assert.That(patternEvent.YY, Is.EqualTo(0)); - Assert.That(patternEvent.XXYY, Is.EqualTo(0x0001)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(xxyy: 0x0001)); + patternEvent.XX.Should().Be(1); + patternEvent.YY.Should().Be(0); + patternEvent.XXYY.Should().Be(0x0001); patternEvent = new PatternEvent { YY = 1 }; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(ConstructBinaryPatternEventValue(xxyy: 0x0100))); - Assert.That(patternEvent.XX, Is.EqualTo(0)); - Assert.That(patternEvent.YY, Is.EqualTo(1)); - Assert.That(patternEvent.XXYY, Is.EqualTo(0x0100)); - }); + patternEvent.Data.Should().Be(ConstructBinaryPatternEventValue(xxyy: 0x0100)); + patternEvent.XX.Should().Be(0); + patternEvent.YY.Should().Be(1); + patternEvent.XXYY.Should().Be(0x0100); } [TestCaseSource(nameof(TestCases))] public void PatternEventToStringShouldReturnExpectedValue(PatternEvent patternEvent, string expectedValue) { - Assert.That(patternEvent.ToString(), Is.EqualTo(expectedValue)); + patternEvent.ToString().Should().Be(expectedValue); } [Test] @@ -342,29 +289,24 @@ public void PatternEventEqualityComparisonShouldJustWork() var b = new PatternEvent(1); var c = new PatternEvent(2); - Assert.Multiple(() => - { -#pragma warning disable NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - Assert.That(a.Equals(b)); - Assert.That(a.Equals(a)); - Assert.That(a.Equals(1)); - Assert.That(a.Equals(1)); - Assert.That(a.Equals((object?)b)); - Assert.That(a.Equals((object?)a)); - Assert.That(a.Equals(null), Is.False); - Assert.That(a.Equals(new object()), Is.False); - Assert.That(b.Equals(c), Is.False); - Assert.That(b.Equals(2), Is.False); - Assert.That(new Note(1).Equals(2), Is.False); - - Assert.That(a == b); - Assert.That(a != b, Is.False); - Assert.That(a == 1); - Assert.That(a != 2); - Assert.That(a != c); - Assert.That(a == c, Is.False); -#pragma warning restore NUnit2010 // Use EqualConstraint for better assertion messages in case of failure - }); + a.Equals(b).Should().BeTrue(); + a.Equals(a).Should().BeTrue(); + a.Equals(1).Should().BeTrue(); + a.Equals(1).Should().BeTrue(); + a.Equals((object?)b).Should().BeTrue(); + a.Equals((object?)a).Should().BeTrue(); + a.Equals(null).Should().BeFalse(); + a.Equals(new object()).Should().BeFalse(); + b.Equals(c).Should().BeFalse(); + b.Equals(2).Should().BeFalse(); + new Note(1).Equals(2).Should().BeFalse(); + + (a == b).Should().BeTrue(); + (a != b).Should().BeFalse(); + (a == 1).Should().BeTrue(); + (a != 2).Should().BeTrue(); + (a != c).Should().BeTrue(); + (a == c).Should().BeFalse(); } [Test] @@ -374,11 +316,8 @@ public void PatternEventGetHashCodeShouldPreserveComparability() var b = new PatternEvent(1); var c = new PatternEvent(2); - Assert.Multiple(() => - { - Assert.That(a.GetHashCode(), Is.EqualTo(b.GetHashCode())); - Assert.That(a.GetHashCode(), !Is.EqualTo(c.GetHashCode())); - }); + a.GetHashCode().Should().Be(b.GetHashCode()); + a.GetHashCode().Should().NotBe(c.GetHashCode()); } [TestCase(0ul)] @@ -388,11 +327,8 @@ public void PatternEventImplicitCastShouldJustWork(ulong value) { var patternEvent = (PatternEvent)value; var extractedValue = (ulong)patternEvent; - Assert.Multiple(() => - { - Assert.That(patternEvent.Data, Is.EqualTo(value)); - Assert.That(extractedValue, Is.EqualTo(patternEvent.Data)); - Assert.That(extractedValue, Is.EqualTo(value)); - }); + patternEvent.Data.Should().Be(value); + extractedValue.Should().Be(patternEvent.Data); + extractedValue.Should().Be(value); } } diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/SunSharp.Tests/SunSharp.Tests.csproj index 0f6e942..757efea 100644 --- a/SunSharp.Tests/SunSharp.Tests.csproj +++ b/SunSharp.Tests/SunSharp.Tests.csproj @@ -1,25 +1,29 @@ - + - net6.0 + net8.0 enable - + 0.0.0.0 false true - - - - - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.Tests/SunVoxExceptionTests.cs b/SunSharp.Tests/SunVoxExceptionTests.cs index 3364004..2bd8129 100644 --- a/SunSharp.Tests/SunVoxExceptionTests.cs +++ b/SunSharp.Tests/SunVoxExceptionTests.cs @@ -1,6 +1,4 @@ -using NUnit.Framework; - -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class SunVoxExceptionTests { @@ -13,11 +11,8 @@ public void ShouldHaveExpectedMessage() var exceptionFromUint = new SunVoxException(code, methodName); var exceptionWithNoMethod = new SunVoxException(-1); - Assert.Multiple(() => - { - Assert.That(exception.Message, Is.EqualTo($"Error code: {code:X}, method: '{methodName}'.")); - Assert.That(exceptionFromUint.Message, Is.EqualTo($"Error code: {code:X}, method: '{methodName}'.")); - Assert.That(exceptionWithNoMethod.Message, Is.EqualTo($"Error code: {code:X}, method: 'unknown'.")); - }); + exception.Message.Should().Be($"Error code: {code:X}, method: '{methodName}'."); + exceptionFromUint.Message.Should().Be($"Error code: {code:X}, method: '{methodName}'."); + exceptionWithNoMethod.Message.Should().Be($"Error code: {code:X}, method: 'unknown'."); } } diff --git a/SunSharp.Tests/SunVoxLibExtensionsTests.cs b/SunSharp.Tests/SunVoxLibExtensionsTests.cs index 86826c3..307cafc 100644 --- a/SunSharp.Tests/SunVoxLibExtensionsTests.cs +++ b/SunSharp.Tests/SunVoxLibExtensionsTests.cs @@ -1,8 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using NSubstitute; -using NUnit.Framework; namespace SunSharp.Tests; @@ -31,7 +28,7 @@ private static IEnumerable PrepareRunInLockActionCalls() static (ISunVoxLib lib, Action action, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, arg => action(new[] { arg }), args[0]); + lib.RunInLock(0, arg => action([arg]), args[0]); } ); yield return new TestCaseData( @@ -39,7 +36,7 @@ private static IEnumerable PrepareRunInLockActionCalls() static (ISunVoxLib lib, Action action, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2) => action(new[] { arg1, arg2 }), args[0], args[1]); + lib.RunInLock(0, (arg1, arg2) => action([arg1, arg2]), args[0], args[1]); } ); yield return new TestCaseData( @@ -47,7 +44,7 @@ private static IEnumerable PrepareRunInLockActionCalls() static (ISunVoxLib lib, Action action, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3) => action(new[] { arg1, arg2, arg3 }), args[0], args[1], args[2]); + lib.RunInLock(0, (arg1, arg2, arg3) => action([arg1, arg2, arg3]), args[0], args[1], args[2]); } ); yield return new TestCaseData( @@ -55,7 +52,7 @@ private static IEnumerable PrepareRunInLockActionCalls() static (ISunVoxLib lib, Action action, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action(new[] { arg1, arg2, arg3, arg4 }), args[0], args[1], + lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action([arg1, arg2, arg3, arg4]), args[0], args[1], args[2], args[3]); } ); @@ -64,7 +61,7 @@ private static IEnumerable PrepareRunInLockActionCalls() static (ISunVoxLib lib, Action action, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action(new[] { arg1, arg2, arg3, arg4, arg5 }), + lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action([arg1, arg2, arg3, arg4, arg5]), args[0], args[1], args[2], args[3], args[4]); } ); @@ -84,7 +81,7 @@ private static IEnumerable PrepareRunInLockFuncCalls() static (ISunVoxLib lib, Func func, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, arg => func(new[] { arg }), args[0]); + return lib.RunInLock(0, arg => func([arg]), args[0]); } ); yield return new TestCaseData( @@ -92,7 +89,7 @@ private static IEnumerable PrepareRunInLockFuncCalls() static (ISunVoxLib lib, Func func, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2) => func(new[] { arg1, arg2 }), args[0], args[1]); + return lib.RunInLock(0, (arg1, arg2) => func([arg1, arg2]), args[0], args[1]); } ); yield return new TestCaseData( @@ -100,7 +97,7 @@ private static IEnumerable PrepareRunInLockFuncCalls() static (ISunVoxLib lib, Func func, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3) => func(new[] { arg1, arg2, arg3 }), args[0], args[1], + return lib.RunInLock(0, (arg1, arg2, arg3) => func([arg1, arg2, arg3]), args[0], args[1], args[2]); } ); @@ -109,7 +106,7 @@ private static IEnumerable PrepareRunInLockFuncCalls() static (ISunVoxLib lib, Func func, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func(new[] { arg1, arg2, arg3, arg4 }), args[0], + return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func([arg1, arg2, arg3, arg4]), args[0], args[1], args[2], args[3]); } ); @@ -118,7 +115,7 @@ private static IEnumerable PrepareRunInLockFuncCalls() static (ISunVoxLib lib, Func func, object[]? args) => { ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func(new[] { arg1, arg2, arg3, arg4, arg5 }), + return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func([arg1, arg2, arg3, arg4, arg5]), args[0], args[1], args[2], args[3], args[4]); } ); @@ -159,7 +156,7 @@ public void RunInLockShouldCallLockFuncAndUnlock(int argCount, // then lib.Received(1).LockSlot(0); mockFunction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); - Assert.That(result, Is.SameAs(mockResult)); + result.Should().BeSameAs(mockResult); lib.Received(1).UnlockSlot(0); } @@ -178,7 +175,7 @@ public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsExceptio ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); // when - Assert.Throws(() => action(lib, mockAction, mockData)); + ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); // then lib.Received(1).LockSlot(0); @@ -201,7 +198,8 @@ public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(in ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); // when - Assert.Throws(() => function(lib, mockFunction, mockData)); + var action = () => function(lib, mockFunction, mockData); + action.Invoking(a => a()).Should().Throw(); // then lib.Received(1).LockSlot(0); @@ -220,7 +218,7 @@ public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(in ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); // when - Assert.Throws(() => action(lib, mockAction, mockData)); + ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); // then lib.Received(1).LockSlot(0); @@ -239,7 +237,7 @@ public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int ? null : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); // when - Assert.Throws(() => function(lib, mockFunction, mockData)); + ((Action)(() => function(lib, mockFunction, mockData))).Should().Throw(); // then lib.Received(1).LockSlot(0); diff --git a/SunSharp/Data/DataReader.cs b/SunSharp/Data/DataReader.cs index eef47c5..f799c9e 100644 --- a/SunSharp/Data/DataReader.cs +++ b/SunSharp/Data/DataReader.cs @@ -2,12 +2,11 @@ using System.Collections.Generic; using System.Linq; -//using SunSharp.ObjectWrapper; - namespace SunSharp.Data { public static class DataReader { + // TODO //public static SongData ReadSongData(Slot slot) //{ // return ReadSongData(slot.Library, slot.Id); @@ -50,7 +49,9 @@ internal static ModuleData[] ReadModules(ISunVoxLib lib, int slotId) for (var i = 0; i < moduleCount; i++) { if (!lib.GetModuleExists(slotId, i)) + { continue; + } var m = ReadModule(lib, slotId, i); modules.Add(m); @@ -124,7 +125,9 @@ internal static PatternData[] ReadPatterns(ISunVoxLib lib, int slotId) for (var i = 0; i < patternCount; i++) { if (!lib.GetPatternExists(slotId, i)) + { continue; + } var p = ReadPattern(lib, slotId, i); patterns.Add(p); @@ -141,14 +144,14 @@ internal static PatternData ReadPattern(ISunVoxLib lib, int slotId, int patternI var isLinear = true; var hasDynamicTempo = false; - foreach (var @event in data) + foreach (var patternEvent in data) { - isDestructive = @event.Effect.IsDestructive() || isDestructive; - isLinear = isLinear && !@event.Effect.IsNonLinear(); - hasDynamicTempo = hasDynamicTempo || @event.Effect.ChangesTempo(); + isDestructive = isDestructive || patternEvent.Effect.IsDestructive(); + isLinear = isLinear && !patternEvent.Effect.IsNonLinear(); + hasDynamicTempo = hasDynamicTempo || patternEvent.Effect.ChangesTempo(); } - var patternData = new PatternData + return new PatternData { Id = patternId, Name = lib.GetPatternName(slotId, patternId), @@ -164,7 +167,6 @@ internal static PatternData ReadPattern(ISunVoxLib lib, int slotId, int patternI Data = data }; - return patternData; } #endregion pattern data diff --git a/SunSharp/Data/SongData.cs b/SunSharp/Data/SongData.cs index 48f7efd..63e4906 100644 --- a/SunSharp/Data/SongData.cs +++ b/SunSharp/Data/SongData.cs @@ -9,7 +9,7 @@ public class SongData : IDeepCopyable public string? Name { get; set; } public int BPM { get; set; } public int TPL { get; set; } - public int Lines { get; set; } + public uint Lines { get; set; } public int CurrentLine { get; set; } public int FirstLine { get; set; } public int LastLine { get; set; } diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs index b8e3307..2bd3579 100644 --- a/SunSharp/Effects.cs +++ b/SunSharp/Effects.cs @@ -19,7 +19,7 @@ public enum Effect : byte FineSlideDown = 0x12, SetBypassSoloMute = 0x13, ResetBypassSoloMute = 0x14, - ChangeModuleFinetune = 0x15, + ChangeModuleFineTune = 0x15, Retrigger = 0x19, FineVelocitySlide = 0x1A, CutNote = 0x1C, diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 1290a67..c3a615d 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -54,10 +54,10 @@ public enum ControllerType Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] public enum InitFlags : uint { - Default = 0, + None = 0, /// - /// Less data will be written to standard output. + /// Less information will be written to standard output. /// NoDebugOutput = Constants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, diff --git a/SunSharp/Helper.cs b/SunSharp/Helper.cs index a83ba54..0136dff 100644 --- a/SunSharp/Helper.cs +++ b/SunSharp/Helper.cs @@ -17,12 +17,18 @@ public static short ToShortBitwise(uint value) public static int[] CopyIntArraySkipNegativeOnes(IntPtr address, int count) { if (address == IntPtr.Zero) + { return Array.Empty(); + } var nonZeroValues = 0; for (var i = 0; i < count; i++) + { if (Marshal.ReadInt32(address, i * sizeof(int)) != -1) + { nonZeroValues++; + } + } var arr = new int[nonZeroValues]; diff --git a/SunSharp/ISunVoxLib.Modules.cs b/SunSharp/ISunVoxLib.Modules.cs index 668ceed..e68cf85 100644 --- a/SunSharp/ISunVoxLib.Modules.cs +++ b/SunSharp/ISunVoxLib.Modules.cs @@ -17,7 +17,7 @@ public partial interface ISunVoxLib /// /// Find module by name. /// - /// Id of found module, or if it was not found. + /// Identifier of found module, or if it was not found. int? FindModule(int slotId, string name); (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId); @@ -97,7 +97,7 @@ void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int va /// /// load a module or a sample. Supported file formats: sunsynth, xi, wav, aiff. /// - /// CreatedmoduleId Id. + /// Created module identifier.. int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0); /// diff --git a/SunSharp/ISunVoxLib.Patterns.cs b/SunSharp/ISunVoxLib.Patterns.cs index 54456ad..b7aca14 100644 --- a/SunSharp/ISunVoxLib.Patterns.cs +++ b/SunSharp/ISunVoxLib.Patterns.cs @@ -29,7 +29,7 @@ public partial interface ISunVoxLib /// /// Find pattern by name. /// - /// Pattern Id, or if pattern was not found. + /// Pattern identifier, or if pattern was not found. int? FindPattern(int slotId, string name); int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column); @@ -76,7 +76,7 @@ public partial interface ISunVoxLib void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines); /// - /// Allows to read a section or all of pattern data into a buffer. + /// Allows to read a section or all pattern data into a buffer. ///
/// Use or an alternative! ///
diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/ISunVoxLib.cs index c9a0f6f..870ae95 100644 --- a/SunSharp/ISunVoxLib.cs +++ b/SunSharp/ISunVoxLib.cs @@ -13,8 +13,7 @@ public partial interface ISunVoxLib /// Channels to be used. /// Initialization flags. /// The version of underlying library. - LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, - InitFlags flags = InitFlags.Default); + LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.None); /// /// Deinitializes the library, frees resources. @@ -132,7 +131,7 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, int GetSongBpm(int slotId); /// - /// Get the the project length in frames.
+ /// Get the project length in frames.
/// A frame is a pair of audio signal samples (left and right channel amplitudes). /// The sample rate 44100 Hz means that you hear 44100 frames per second. ///
@@ -141,11 +140,11 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, uint GetSongLengthInFrames(int slotId); /// - /// Get the the project length in frames or lines. + /// Get the project length in frames or lines. /// /// /// - int GetSongLengthInLines(int slotId); + uint GetSongLengthInLines(int slotId); string? GetSongName(int slotId); @@ -172,6 +171,15 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// void SendEvent(int slotId, int track, PatternEvent data); + /// + /// + /// + /// + /// + /// + /// + /// + /// void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); /// diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 48569cf..eeb99c1 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -81,14 +81,17 @@ public void Unload() // nothing to unload if (!IsLoaded && !handlerIsLibraryLoader) + { return; + } // sunvox might need to be unloaded if (IsLoaded && handlerIsLibraryLoader) { if (sv_deinit == null) - throw new InvalidOperationException( - $"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); + { + throw new InvalidOperationException($"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); + } sv_deinit.Invoke(); } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index 66d875b..2814f59 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -161,13 +161,19 @@ public void RemovePattern(int slotId, int patternId) public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines) { if (tracks < 0) + { throw new ArgumentOutOfRangeException(nameof(tracks), tracks, "Value cannot be negative."); + } + if (lines < 0) + { throw new ArgumentOutOfRangeException(nameof(lines), lines, "Value cannot be negative."); + } if (tracks * lines != data.Length) - throw new ArgumentException( - $"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + { + throw new ArgumentException($"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + } // should throw an exception if the pattern in question does not exist SetPatternSize(slotId, patternId, tracks, lines); @@ -186,34 +192,53 @@ public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int int? maxTracks = null, int? maxLines = null) { if (readOffsetLines < 0) - throw new ArgumentOutOfRangeException(nameof(readOffsetLines), readOffsetLines, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(readOffsetLines), readOffsetLines, "Value cannot be negative."); + } + if (readOffsetTracks < 0) - throw new ArgumentOutOfRangeException(nameof(readOffsetTracks), readOffsetTracks, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(readOffsetTracks), readOffsetTracks, "Value cannot be negative."); + } + if (bufferOffsetLines < 0) - throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, "Value cannot be negative."); + } + if (bufferOffsetTracks < 0) - throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, "Value cannot be negative."); + } + if (bufferTracks < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferTracks), bufferTracks, "Value cannot be negative."); + } + if (bufferLines < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferLines), bufferLines, "Value cannot be negative."); + } if (bufferLines * bufferTracks != buffer.Length) - throw new ArgumentException( - $"Size of {nameof(buffer)} ({nameof(buffer)}.Length) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + { + throw new ArgumentException($"Size of {nameof(buffer)} ({nameof(buffer)}.Length) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + } var realLines = GetPatternLines(slotId, patternId); if (realLines == 0) + { return 0; + } + var realTracks = GetPatternTracks(slotId, patternId); var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) + { return 0; + } var linesToIterate = Math.Min(bufferLines - bufferOffsetLines, realLines - readOffsetLines); linesToIterate = Math.Min(linesToIterate, maxLines ?? int.MaxValue); @@ -222,13 +247,15 @@ public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int var readEventCount = 0; for (var l = 0; l < linesToIterate; l++) - for (var t = 0; t < tracksToIterate; t++) { - var realIndex = (l + readOffsetLines) * realTracks + t + readOffsetTracks; - var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; - var value = Marshal.ReadInt64(ptr, realIndex * sizeof(ulong)); - buffer[bufferIndex] = unchecked((ulong)value); - readEventCount++; + for (var t = 0; t < tracksToIterate; t++) + { + var realIndex = (l + readOffsetLines) * realTracks + t + readOffsetTracks; + var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var value = Marshal.ReadInt64(ptr, realIndex * sizeof(ulong)); + buffer[bufferIndex] = unchecked((ulong)value); + readEventCount++; + } } return readEventCount; @@ -240,34 +267,53 @@ public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, in int? maxTracks = null, int? maxLines = null) { if (writeOffsetLines < 0) - throw new ArgumentOutOfRangeException(nameof(writeOffsetLines), writeOffsetLines, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(writeOffsetLines), writeOffsetLines, "Value cannot be negative."); + } + if (writeOffsetTracks < 0) - throw new ArgumentOutOfRangeException(nameof(writeOffsetTracks), writeOffsetTracks, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(writeOffsetTracks), writeOffsetTracks, "Value cannot be negative."); + } + if (bufferOffsetLines < 0) - throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(bufferOffsetLines), bufferOffsetLines, "Value cannot be negative."); + } + if (bufferOffsetTracks < 0) - throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, - "Value cannot be negative."); + { + throw new ArgumentOutOfRangeException(nameof(bufferOffsetTracks), bufferOffsetTracks, "Value cannot be negative."); + } + if (bufferTracks < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferTracks), bufferTracks, "Value cannot be negative."); + } + if (bufferLines < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferLines), bufferLines, "Value cannot be negative."); + } if (bufferLines * bufferTracks != buffer.Length) - throw new ArgumentException( - $"Size of {nameof(buffer)} ({buffer.Length}) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + { + throw new ArgumentException($"Size of {nameof(buffer)} ({buffer.Length}) is not equal to {nameof(bufferTracks)} * {nameof(bufferLines)} ({bufferTracks * bufferLines})."); + } var realLines = GetPatternLines(slotId, patternId); if (realLines == 0) + { return 0; + } + var realTracks = GetPatternTracks(slotId, patternId); var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) + { return 0; + } var linesToIterate = Math.Min(bufferLines - bufferOffsetLines, realLines - writeOffsetLines); linesToIterate = Math.Min(linesToIterate, maxLines ?? int.MaxValue); @@ -276,13 +322,15 @@ public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, in var writeEventCount = 0; for (var l = 0; l < linesToIterate; l++) - for (var t = 0; t < tracksToIterate; t++) { - var realIndex = (l + writeOffsetLines) * realTracks + t + writeOffsetTracks; - var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; - var value = buffer[bufferIndex].Data; - Marshal.WriteInt64(ptr, realIndex * sizeof(ulong), unchecked((long)value)); - writeEventCount++; + for (var t = 0; t < tracksToIterate; t++) + { + var realIndex = (l + writeOffsetLines) * realTracks + t + writeOffsetTracks; + var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var value = buffer[bufferIndex].Data; + Marshal.WriteInt64(ptr, realIndex * sizeof(ulong), unchecked((long)value)); + writeEventCount++; + } } return writeEventCount; diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs index 11aa280..65b96aa 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -57,7 +57,9 @@ public void CloseSlot(int slotId) { var ret = _lib.sv_close_slot(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_close_slot)); + } } /// @@ -65,7 +67,9 @@ public void Deinitialize() { var retCode = _lib.sv_deinit(); if (retCode != 0) + { throw new SunVoxException(retCode, nameof(_lib.sv_deinit)); + } } /// @@ -135,10 +139,10 @@ public uint GetSongLengthInFrames(int slotId) } /// - public int GetSongLengthInLines(int slotId) + public uint GetSongLengthInLines(int slotId) { var ret = _lib.sv_get_song_length_lines(slotId); - return (int)ret; + return ret; } /// @@ -153,7 +157,10 @@ public int GetSongTpl(int slotId) { var ret = _lib.sv_get_song_tpl(slotId); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_song_tpl)); + } + return ret; } @@ -185,20 +192,26 @@ public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type } if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_time_map)); + } + return arr; } /// public LibraryVersion Initialize(int sampleRate, string? config = null, - AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.Default) + AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.None) { var ptr = Marshal.StringToHGlobalAnsi(config); try { var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_init)); + } + return new LibraryVersion(ret); } finally @@ -212,7 +225,10 @@ public bool IsPlaying(int slotId) { var ret = _lib.sv_end_of_song(slotId); if (ret != 0 && ret != 1) + { throw new SunVoxException(ret, nameof(_lib.sv_end_of_song)); + } + return ret == 0; } @@ -231,7 +247,9 @@ public void Load(int slotId, string path) } if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_load)); + } } /// @@ -249,7 +267,9 @@ public void Load(int slotId, byte[] data) } if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_load)); + } } /// @@ -257,7 +277,9 @@ public void LockSlot(int slotId) { var ret = _lib.sv_lock_slot(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_lock_slot)); + } } /// @@ -265,7 +287,9 @@ public void OpenSlot(int slotId) { var ret = _lib.sv_open_slot(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_open_slot)); + } } /// @@ -273,7 +297,9 @@ public void PauseStream(int slotId) { var ret = _lib.sv_pause(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_pause)); + } } /// @@ -281,14 +307,18 @@ public void ResumeStream(int slotId) { var ret = _lib.sv_resume(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_resume)); + } } public void ResumeStreamOnSyncEffect(int slotId) { var ret = _lib.sv_sync_resume(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_sync_resume)); + } } /// @@ -296,7 +326,9 @@ public void Rewind(int slotId, int line) { var ret = _lib.sv_rewind(slotId, line); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_rewind)); + } } /// @@ -314,7 +346,9 @@ public void Save(int slotId, string path) } if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_save)); + } } public void SendEvent(int slotId, int track, PatternEvent data) @@ -327,21 +361,27 @@ public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, { var ret = _lib.sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_send_event)); + } } public void SetAutoStop(int slotId, bool autoStop) { var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_autostop)); + } } public void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0) { var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_event_t)); + } } /// @@ -352,7 +392,9 @@ public void SetSongName(int slotId, string newName) { var ret = _lib.sv_set_song_name(slotId, ptr); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_init)); + } } finally { @@ -365,7 +407,9 @@ public void StartPlayback(int slotId) { var ret = _lib.sv_play(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_play)); + } } /// @@ -373,7 +417,9 @@ public void StartPlaybackFromBeginning(int slotId) { var ret = _lib.sv_play_from_beginning(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_play_from_beginning)); + } } /// @@ -381,7 +427,9 @@ public void StopPlayback(int slotId) { var ret = _lib.sv_stop(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_stop)); + } } /// @@ -389,7 +437,9 @@ public void UnlockSlot(int slotId) { var ret = _lib.sv_unlock_slot(slotId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot)); + } } /// @@ -397,7 +447,9 @@ public void UpdateInputDevices() { var ret = _lib.sv_update_input(); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_update_input)); + } } /// @@ -405,18 +457,25 @@ public int Volume(int slotId, int volume) { var ret = _lib.sv_volume(slotId, volume); if (ret < 0 || ret > 256) + { throw new SunVoxException(ret, nameof(_lib.sv_volume)); + } + return ret; } private bool AudioCallbackInternal(T[] outputBuffer, AudioChannels channels, int latency, uint outTime) { if (channels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) + { throw new ArgumentException("Buffer size is not a multiple of two."); + } var frames = outputBuffer.Length; if (channels == AudioChannels.Stereo) + { frames /= 2; + } var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); var ptr = outHandle.AddrOfPinnedObject(); @@ -441,22 +500,31 @@ private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels int inputType) { if (outputChannels == AudioChannels.Stereo && (outputBuffer.Length & 1) != 0) + { throw new ArgumentException("Output buffer size is not a multiple of two."); + } if (inputChannels == AudioChannels.Stereo && (inputBuffer.Length & 1) != 0) + { throw new ArgumentException("Input buffer size is not a multiple of two."); + } var inputFrames = inputBuffer.Length; if (inputChannels == AudioChannels.Stereo) + { inputFrames /= 2; + } var outputFrames = outputBuffer.Length; if (outputChannels == AudioChannels.Stereo) + { outputFrames /= 2; + } if (inputFrames != outputFrames) - throw new ArgumentException( - $"Input and output frame count is different (input: {inputFrames}, output: {outputFrames})."); + { + throw new ArgumentException($"Input and output frame count is different (input: {inputFrames}, output: {outputFrames})."); + } var outHandle = GCHandle.Alloc(outputBuffer, GCHandleType.Pinned); var inHandle = GCHandle.Alloc(inputBuffer, GCHandleType.Pinned); diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 314827d..d9f3177 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -153,14 +153,19 @@ public Note(byte value) public Note(NoteName name, int octave) { if (name < NoteName.C || name > NoteName.B) + { throw new ArgumentException($"Unsupported note '{name}'."); + } if (octave < 0 || octave > 10) - throw new ArgumentOutOfRangeException(nameof(octave), octave, - "Only values in range of 0 to 10 are supported."); + { + throw new ArgumentOutOfRangeException(nameof(octave), octave, "Only values in range of 0 to 10 are supported."); + } + if (octave == 10 && name > NoteName.Fs) - throw new ArgumentOutOfRangeException(nameof(name), name, - "In the tenth octave, only notes up to F# are supported."); + { + throw new ArgumentOutOfRangeException(nameof(name), name, "In the tenth octave, only notes up to F# are supported."); + } Value = (byte)(1 + name + octave * 12); } diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index 1b7f1b4..bd0ac19 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -14,6 +14,7 @@ git sunvox;music;wrapper 2.0.0-alpha0 + 0.0.0.0 True True True @@ -22,7 +23,7 @@ False False README.md - LICENSE.txt + ./license.txt snupkg enable @@ -60,6 +61,17 @@ + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + \ diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 87b364a..403985c 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -14,6 +14,20 @@ public sealed class SunVoxException : Exception private readonly uint _code; private readonly string? _method; + public SunVoxException() + { + + } + + public SunVoxException(string message) : base(message) + { + + } + public SunVoxException(string message, Exception innerException) : base(message, innerException) + { + + } + public SunVoxException(uint code, string? method = null) { _code = code; diff --git a/SunSharp/license.txt b/SunSharp/license.txt index e290f25..8f5b677 100644 --- a/SunSharp/license.txt +++ b/SunSharp/license.txt @@ -1,6 +1,6 @@ SunSharp is distributed under the MIT license: -Copyright (c) 2023 Sotakebk +Copyright (c) 2023-2025 Sotakebk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From f04f666c2644cfd21a17284cb90227b1c5579475 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sat, 27 Sep 2025 13:25:53 +0200 Subject: [PATCH 07/27] Code generation, improvements --- Examples/Examples.csproj | 9 +++ Examples/Program.cs | 8 ++ .../GeneratorTests.cs | 20 +++++ .../SunSharp.CodeGeneration.Tests.csproj | 35 +++++++++ SunSharp.CodeGeneration/GeneratorDiscovery.cs | 69 ++++++++++++++++ SunSharp.CodeGeneration/GeneratorResult.cs | 76 ++++++++++++++++++ .../BaseGenerator.cs | 4 +- .../CodeGenerationContext.cs | 2 +- .../NativeProxy/NativeProxyGenerator.cs | 10 +-- .../NativeProxy/TypeNameTranslation.cs | 5 +- .../PathHelper.cs | 10 ++- SunSharp.CodeGeneration/GlobalUsings.cs | 3 - .../NativeProxy/NativeProxyCodeGeneration.cs | 22 ------ SunSharp.CodeGeneration/Program.cs | 78 +++++++++++++++++++ .../SunSharp.CodeGeneration.csproj | 29 ++----- SunSharp.IntegrationTests/GlobalUsings.cs | 4 +- .../SunSharp.IntegrationTests.csproj | 4 +- .../SunVoxLibTests/PatternTests.cs | 14 ++-- SunSharp.Tests/GlobalUsings.cs | 8 +- ...unVoxLibNativeWrapperAudioCallbackTests.cs | 4 +- SunSharp.Tests/NoteTests.cs | 4 +- SunSharp.Tests/PatternEventTests.cs | 14 ++-- SunSharp.Tests/SunSharp.Tests.csproj | 4 +- SunSharp.sln | 12 +++ SunSharp/FineTunePair.cs | 6 +- SunSharp/Native/Loader/LibraryHandler.cs | 2 +- ...erated.cs => NativeProxy.ISunVoxLibC.g.cs} | 2 +- SunSharp/PatternEvent.cs | 6 +- SunSharp/SunVoxException.cs | 4 +- SunSharp/SunVoxLibExtensions.cs | 10 +++ 30 files changed, 375 insertions(+), 103 deletions(-) create mode 100644 Examples/Examples.csproj create mode 100644 Examples/Program.cs create mode 100644 SunSharp.CodeGeneration.Tests/GeneratorTests.cs create mode 100644 SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj create mode 100644 SunSharp.CodeGeneration/GeneratorDiscovery.cs create mode 100644 SunSharp.CodeGeneration/GeneratorResult.cs rename SunSharp.CodeGeneration/{CodeGenerationTools => Generators}/BaseGenerator.cs (85%) rename SunSharp.CodeGeneration/{CodeGenerationTools => Generators}/CodeGenerationContext.cs (93%) rename SunSharp.CodeGeneration/{ => Generators}/NativeProxy/NativeProxyGenerator.cs (95%) rename SunSharp.CodeGeneration/{ => Generators}/NativeProxy/TypeNameTranslation.cs (89%) rename SunSharp.CodeGeneration/{CodeGenerationTools => Generators}/PathHelper.cs (89%) delete mode 100644 SunSharp.CodeGeneration/GlobalUsings.cs delete mode 100644 SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs create mode 100644 SunSharp.CodeGeneration/Program.cs rename SunSharp/Native/Loader/{NativeProxy.ISunVoxLibC.Generated.cs => NativeProxy.ISunVoxLibC.g.cs} (99%) diff --git a/Examples/Examples.csproj b/Examples/Examples.csproj new file mode 100644 index 0000000..f432dbe --- /dev/null +++ b/Examples/Examples.csproj @@ -0,0 +1,9 @@ + + + + Exe + net8.0 + enable + + + diff --git a/Examples/Program.cs b/Examples/Program.cs new file mode 100644 index 0000000..fb569f4 --- /dev/null +++ b/Examples/Program.cs @@ -0,0 +1,8 @@ +namespace Examples; + +internal sealed class Program +{ + private static void Main() + { + } +} diff --git a/SunSharp.CodeGeneration.Tests/GeneratorTests.cs b/SunSharp.CodeGeneration.Tests/GeneratorTests.cs new file mode 100644 index 0000000..676f0b8 --- /dev/null +++ b/SunSharp.CodeGeneration.Tests/GeneratorTests.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using AwesomeAssertions; +using NUnit.Framework; + +namespace SunSharp.CodeGeneration.Tests; + +internal class GeneratorTests +{ + public static IEnumerable Generators => GeneratorDiscovery.GetGenerators(); + + [TestCaseSource(nameof(Generators))] + public async Task Test(DiscoveredGenerator generator) + { + var result = await generator.GenerateAsync(); + + result.Successful.Should().BeTrue(); + result.ChangesNecessary.Should().BeFalse(); + } +} diff --git a/SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj b/SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj new file mode 100644 index 0000000..783d5c0 --- /dev/null +++ b/SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj @@ -0,0 +1,35 @@ + + + + net8.0 + enable + 0.0.0.0 + false + true + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + \ No newline at end of file diff --git a/SunSharp.CodeGeneration/GeneratorDiscovery.cs b/SunSharp.CodeGeneration/GeneratorDiscovery.cs new file mode 100644 index 0000000..11bdf0a --- /dev/null +++ b/SunSharp.CodeGeneration/GeneratorDiscovery.cs @@ -0,0 +1,69 @@ +using SunSharp.CodeGeneration.Generators; + +namespace SunSharp.CodeGeneration; + +public static class GeneratorDiscovery +{ + public static IReadOnlyList GetGenerators(string? nameFilter = null) + { + var assembly = typeof(GeneratorDiscovery).Assembly; + var query = assembly.GetTypes() + .Where(t => t.IsAssignableTo(typeof(BaseGenerator))) + .Where(t => !t.IsAbstract); + + if (!string.IsNullOrWhiteSpace(nameFilter)) + { + query = query.Where(t => t.Name.Contains(nameFilter, StringComparison.OrdinalIgnoreCase)); + } + + return query + .OrderBy(t => t.Name) + .Select(t => new DiscoveredGenerator(t)) + .ToArray(); + } +} + +public sealed class DiscoveredGenerator +{ + public Type GeneratorType { get; } + public string Name => GeneratorType.Name; + + internal DiscoveredGenerator(Type generatorType) + { + GeneratorType = generatorType; + } + + public async Task GenerateAsync(CancellationToken cancellationToken = default) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + var instance = (BaseGenerator?)Activator.CreateInstance(GeneratorType) + ?? throw new InvalidOperationException($"Could not create instance of '{GeneratorType}'."); + + var source = instance.Generate(); + var targetPath = instance.FilePath; + + string? originalFileContent = null; + if (File.Exists(targetPath)) + { + originalFileContent = await File.ReadAllTextAsync(targetPath, cancellationToken).ConfigureAwait(false); + } + + var sourceCodeIsTheSame = string.Equals(source, originalFileContent, StringComparison.Ordinal); + return sourceCodeIsTheSame + ? GeneratorResult.SuccessNoChanges(GeneratorType, targetPath) + : GeneratorResult.SuccessWithChanges(GeneratorType, targetPath, source); + } + catch (OperationCanceledException oce) + { + return GeneratorResult.Failure(GeneratorType, oce); + } + catch (Exception ex) + { + return GeneratorResult.Failure(GeneratorType, ex); + } + } + + public override string ToString() => Name; +} diff --git a/SunSharp.CodeGeneration/GeneratorResult.cs b/SunSharp.CodeGeneration/GeneratorResult.cs new file mode 100644 index 0000000..85e9774 --- /dev/null +++ b/SunSharp.CodeGeneration/GeneratorResult.cs @@ -0,0 +1,76 @@ +using System.Diagnostics.CodeAnalysis; + +namespace SunSharp.CodeGeneration; + +public sealed class GeneratorResult +{ + public required Type GeneratorType { get; init; } + public required string TargetPath { get; init; } + public required string? SourceCode { get; init; } + public required Exception? Exception { get; init; } + + [MemberNotNullWhen(true, nameof(SourceCode))] + public required bool ChangesNecessary { get; init; } + + [MemberNotNullWhen(true, nameof(Exception))] + public required bool Successful { get; init; } + + public static GeneratorResult SuccessWithChanges(Type generatorType, string targetPath, string sourceCode) + { + return new GeneratorResult + { + GeneratorType = generatorType, + TargetPath = targetPath, + SourceCode = sourceCode, + ChangesNecessary = true, + Successful = true, + Exception = null + }; + } + + public static GeneratorResult SuccessNoChanges(Type generatorType, string targetPath) + { + return new GeneratorResult + { + GeneratorType = generatorType, + TargetPath = targetPath, + SourceCode = null, + ChangesNecessary = false, + Successful = true, + Exception = null + }; + } + + public static GeneratorResult Failure(Type generatorType, Exception exception) + { + return new GeneratorResult + { + GeneratorType = generatorType, + TargetPath = string.Empty, + SourceCode = null, + ChangesNecessary = false, + Successful = false, + Exception = exception + }; + } + + public async Task ApplyAsync(CancellationToken cancellationToken = default) + { + if (!Successful) + { + throw new InvalidOperationException("Cannot apply an unsuccessful generator result."); + } + if (!ChangesNecessary) + { + return; + } + + var directory = Path.GetDirectoryName(TargetPath); + if (!string.IsNullOrEmpty(directory)) Directory.CreateDirectory(directory); + + var tempFile = Path.Combine(Path.GetDirectoryName(TargetPath)!, Path.GetRandomFileName()); + await File.WriteAllTextAsync(tempFile, SourceCode!, cancellationToken).ConfigureAwait(false); + File.Copy(tempFile, TargetPath, overwrite: true); + File.Delete(tempFile); + } +} diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs b/SunSharp.CodeGeneration/Generators/BaseGenerator.cs similarity index 85% rename from SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs rename to SunSharp.CodeGeneration/Generators/BaseGenerator.cs index 60561f8..f452057 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/BaseGenerator.cs +++ b/SunSharp.CodeGeneration/Generators/BaseGenerator.cs @@ -1,9 +1,11 @@ -namespace SunSharp.CodeGeneration.CodeGenerationTools; +namespace SunSharp.CodeGeneration.Generators; public abstract class BaseGenerator { protected CodeGenerationContext Context = new(); + public abstract string FilePath { get; } + protected virtual void AddIndent(Action action) { Context.AddIndent(action); diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs b/SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs similarity index 93% rename from SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs rename to SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs index e18f716..5fa30e9 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/CodeGenerationContext.cs +++ b/SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs @@ -1,6 +1,6 @@ using System.Text; -namespace SunSharp.CodeGeneration.CodeGenerationTools; +namespace SunSharp.CodeGeneration.Generators; public class CodeGenerationContext { diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs b/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs similarity index 95% rename from SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs rename to SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs index 9a61355..089e46b 100644 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyGenerator.cs +++ b/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs @@ -1,14 +1,14 @@ -using System.Linq; -using System.Reflection; -using SunSharp.CodeGeneration.CodeGenerationTools; +using System.Reflection; using SunSharp.Native; using SunSharp.Native.Loader; -using static SunSharp.CodeGeneration.NativeProxy.TypeNameTranslation; +using static SunSharp.CodeGeneration.Generators.NativeProxy.TypeNameTranslation; -namespace SunSharp.CodeGeneration.NativeProxy; +namespace SunSharp.CodeGeneration.Generators.NativeProxy; public sealed class NativeProxyGenerator : BaseGenerator { + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs"); + private DelegateDefinition[] _delegateDefinitions = []; private MethodDefinition[] _methodDefinitions = []; diff --git a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs b/SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs similarity index 89% rename from SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs rename to SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs index 5c7f2fe..b783f63 100644 --- a/SunSharp.CodeGeneration/NativeProxy/TypeNameTranslation.cs +++ b/SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs @@ -1,7 +1,6 @@ -using System.Collections.Generic; -using System.Collections.Immutable; +using System.Collections.Immutable; -namespace SunSharp.CodeGeneration.NativeProxy; +namespace SunSharp.CodeGeneration.Generators.NativeProxy; public class TypeNameTranslation { diff --git a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs b/SunSharp.CodeGeneration/Generators/PathHelper.cs similarity index 89% rename from SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs rename to SunSharp.CodeGeneration/Generators/PathHelper.cs index e3b7b0f..22b710b 100644 --- a/SunSharp.CodeGeneration/CodeGenerationTools/PathHelper.cs +++ b/SunSharp.CodeGeneration/Generators/PathHelper.cs @@ -1,8 +1,6 @@ -using System.IO; -using System.Linq; -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; -namespace SunSharp.CodeGeneration.CodeGenerationTools; +namespace SunSharp.CodeGeneration.Generators; public static class PathHelper { @@ -25,14 +23,18 @@ public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] st { var directories = directoryInfo.GetDirectories(); if (expectedFolders.All(f => directories.Any(d => d.Name == f))) + { break; + } directoryInfo = directoryInfo.Parent; } // is current directoryInfo the folder we expected? if (directoryInfo != null && expectedFolders.All(f => directoryInfo.GetDirectories().Any(d => d.Name == f))) + { return Path.Join(directoryInfo.FullName, pathFromRoot); + } throw new Exception("Could not trace back to the project folder."); } diff --git a/SunSharp.CodeGeneration/GlobalUsings.cs b/SunSharp.CodeGeneration/GlobalUsings.cs deleted file mode 100644 index 7d31e4f..0000000 --- a/SunSharp.CodeGeneration/GlobalUsings.cs +++ /dev/null @@ -1,3 +0,0 @@ -global using AwesomeAssertions; -global using NUnit.Framework; -global using System; diff --git a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs b/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs deleted file mode 100644 index 64e5600..0000000 --- a/SunSharp.CodeGeneration/NativeProxy/NativeProxyCodeGeneration.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.IO; -using SunSharp.CodeGeneration.CodeGenerationTools; - -namespace SunSharp.CodeGeneration.NativeProxy; - -internal class NativeProxyCodeGeneration -{ - private const string PathToFile = "/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs"; - - [Test] - public void CheckIfCodeIsUpToDate() - { - var path = PathHelper.GetProjectFilePath(PathToFile); - var generator = new NativeProxyGenerator(); - var oldSourceCode = File.ReadAllText(path); - var newSourceCode = generator.Generate(); - - TestContext.Out.Write(newSourceCode); - - newSourceCode.Should().BeEquivalentTo(oldSourceCode); - } -} diff --git a/SunSharp.CodeGeneration/Program.cs b/SunSharp.CodeGeneration/Program.cs new file mode 100644 index 0000000..2d4d106 --- /dev/null +++ b/SunSharp.CodeGeneration/Program.cs @@ -0,0 +1,78 @@ +namespace SunSharp.CodeGeneration; + +internal sealed class Program +{ + private static readonly CancellationTokenSource Cts = new(); + + private static async Task Main() + { + Console.WriteLine("Starting code generation..."); + + Console.CancelKeyPress += (_, eventArgs) => + { + Console.WriteLine("Cancel event triggered"); + Cts.Cancel(); + eventArgs.Cancel = true; + }; + + var generators = GeneratorDiscovery.GetGenerators(); + if (generators.Count == 0) + { + Console.WriteLine("No generator types were found."); + return 0; + } + + Console.WriteLine($"Discovered {generators.Count} generator(s)."); + + // Run all generators + var resultTasks = generators.Select(g => g.GenerateAsync(Cts.Token)); + var results = await Task.WhenAll(resultTasks); + + var failures = results.Where(r => !r.Successful).ToList(); + if (failures.Count != 0) + { + Console.WriteLine("One or more generators failed:"); + foreach (var f in failures) + { + Console.WriteLine($"[FAIL] {f.GeneratorType.Name}"); + if (f.Exception is not null) PrintException(f.Exception); + } + return -1; + } + + var withChanges = results.Where(r => r.ChangesNecessary).ToList(); + var unchanged = results.Length - withChanges.Count; + + Console.WriteLine($"Generators completed. Changed: {withChanges.Count}, Unchanged: {unchanged}."); + + if (withChanges.Count == 0) + { + Console.WriteLine("No changes are necessary."); + return 0; + } + + await Parallel.ForEachAsync( + withChanges, + Cts.Token, + async (result, token) => + { + Console.WriteLine($"Applying changes to '{result.TargetPath}'..."); + await result.ApplyAsync(token); + }); + + Console.WriteLine("All done!"); + return 0; + } + + private static void PrintException(Exception ex) + { + var depth = 0; + for (var current = ex; current is not null; current = current.InnerException) + { + var prefix = depth == 0 ? " " : new string(' ', (depth + 1) * 3); + Console.WriteLine($"{prefix}{current.GetType().Name}: {current.Message}"); + if (current.StackTrace is not null) Console.WriteLine($"{prefix}{current.StackTrace}"); + depth++; + } + } +} diff --git a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj index 85bce7e..806bc09 100644 --- a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj +++ b/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj @@ -1,37 +1,18 @@  + Exe net8.0 + enable enable - 0.0.0.0 - false - true - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + - - - + - + \ No newline at end of file diff --git a/SunSharp.IntegrationTests/GlobalUsings.cs b/SunSharp.IntegrationTests/GlobalUsings.cs index 7d31e4f..2871e49 100644 --- a/SunSharp.IntegrationTests/GlobalUsings.cs +++ b/SunSharp.IntegrationTests/GlobalUsings.cs @@ -1,3 +1,3 @@ -global using AwesomeAssertions; +global using System; +global using AwesomeAssertions; global using NUnit.Framework; -global using System; diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 787669b..bb0b320 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -10,8 +10,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs index 6084cdf..d2e2955 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -1,6 +1,4 @@ using System.Linq; -using AutoFixture; -using AutoFixture.NUnit4; using SunSharp.Data; namespace SunSharp.IntegrationTests.SunVoxLibTests; @@ -28,8 +26,8 @@ public void EmptyProjectStartsWithOneEmptyPattern() data.Patterns.First().Data.Should().OnlyContain(e => e == 0); } - [Test, AutoData] - public void PatternCreationCloningThenReadingPropertiesWorksAsExpected(int x, int y) + [Test] + public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() { const int slotId = 0; @@ -64,8 +62,6 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected(int x, in Name = "Another" }; - var fixture = new Fixture(); - var lib = GetLoadedLibrary(); lib.OpenSlot(slotId); @@ -75,7 +71,7 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected(int x, in firstPattern.Tracks, firstPattern.Lines, name: firstPattern.Name); lib.SetPatternData(slotId, onePatternId, [.. firstPattern.Data], firstPattern.Tracks, firstPattern.Lines); - var clonePatternId = lib.ClonePattern(slotId, onePatternId, x, y); + var clonePatternId = lib.ClonePattern(slotId, onePatternId, 8, 0); var anotherPatternId = lib.CreatePattern(slotId, secondPattern.Position.X, secondPattern.Position.Y, secondPattern.Tracks, secondPattern.Lines, name: secondPattern.Name); lib.SetPatternData(slotId, anotherPatternId, [.. secondPattern.Data], secondPattern.Tracks, @@ -111,8 +107,8 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected(int x, in .Excluding(p => p.HasDynamicTempo) .Excluding(p => p.Position)); data.Patterns.Should() - .Contain(p => p.Position.X == x && - p.Position.Y == y); + .Contain(p => p.Position.X == 8 && + p.Position.Y == 0); // clone doesn't exist dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == clonePatternId).Should().Be(null); diff --git a/SunSharp.Tests/GlobalUsings.cs b/SunSharp.Tests/GlobalUsings.cs index 537990d..e813d38 100644 --- a/SunSharp.Tests/GlobalUsings.cs +++ b/SunSharp.Tests/GlobalUsings.cs @@ -1,6 +1,8 @@ -global using AwesomeAssertions; +global using AutoFixture; global using AutoFixture.NUnit4; + +global using AwesomeAssertions; +global using NSubstitute; + global using NUnit.Framework; global using System; -global using AutoFixture; -global using NSubstitute; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs index b718b16..a7f18cc 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -74,7 +74,7 @@ public void returnedValue.Should().Be(expectedValue); } - #endregion + #endregion input float, output short #region input short, output float @@ -109,7 +109,7 @@ public void returnedValue.Should().Be(expectedValue); } - #endregion + #endregion input short, output float #region output only, float, mono diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs index e6f6529..7beba5b 100644 --- a/SunSharp.Tests/NoteTests.cs +++ b/SunSharp.Tests/NoteTests.cs @@ -74,8 +74,8 @@ public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName n public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidArguments(NoteName name, int octave) { var action = () => _ = new Note(name, octave); - action.Invoking(a => a()) - .Should().Throw(); + action.Invoking(a => a()) + .Should().Throw(); } [TestCase(NoteName.Other)] diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index 1d90a32..c216b40 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -4,13 +4,13 @@ public class PatternEventTests { public static TestCaseData[] TestCases => [ - new TestCaseData(new PatternEvent(), "____________"), - new TestCaseData(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001______"), - new TestCaseData(new PatternEvent(0, 1), "__________0001"), - new TestCaseData(new PatternEvent(Effect.Arpeggio, 0x0704), "________080704"), - new TestCaseData(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), - new TestCaseData(new PatternEvent(Note.Off), "--__________"), - new TestCaseData(new PatternEvent(Note.AllNotesOff), "-!__________") + new(new PatternEvent(), "____________"), + new(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001______"), + new(new PatternEvent(0, 1), "__________0001"), + new(new PatternEvent(Effect.Arpeggio, 0x0704), "________080704"), + new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), + new(new PatternEvent(Note.Off), "--__________"), + new(new PatternEvent(Note.AllNotesOff), "-!__________") ]; private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte velocity = 0, ushort module = 0, diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/SunSharp.Tests/SunSharp.Tests.csproj index 757efea..59b0958 100644 --- a/SunSharp.Tests/SunSharp.Tests.csproj +++ b/SunSharp.Tests/SunSharp.Tests.csproj @@ -10,8 +10,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.sln b/SunSharp.sln index 755af2b..0d80453 100644 --- a/SunSharp.sln +++ b/SunSharp.sln @@ -13,6 +13,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Tests", "SunSharp.Tests\SunSharp.Tests.csproj", "{5074D4E5-D349-4061-8A5B-A8C1E1624AD8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration.Tests", "SunSharp.CodeGeneration.Tests\SunSharp.CodeGeneration.Tests.csproj", "{141E1647-DA19-4B10-BED6-9CA8DA570D64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{19B23551-D241-425A-B92B-385F5222FC77}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +43,14 @@ Global {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.Build.0 = Release|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.Build.0 = Release|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.ActiveCfg = Release|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTunePair.cs index f899dd9..23b1c85 100644 --- a/SunSharp/FineTunePair.cs +++ b/SunSharp/FineTunePair.cs @@ -21,7 +21,7 @@ public FineTunePair(uint value) (FineTune, RelativeNote) = Helper.UnpackTwoSignedShorts(value); } - public readonly override bool Equals(object? obj) + public override readonly bool Equals(object? obj) { if (obj is FineTunePair other) return Equals(other); @@ -34,12 +34,12 @@ public readonly bool Equals(FineTunePair other) return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public readonly override int GetHashCode() + public override readonly int GetHashCode() { return HashCode.Combine(FineTune, RelativeNote); } - public readonly override string ToString() + public override readonly string ToString() { return $"Fine-tune: {FineTune}, relative note: {RelativeNote}."; } diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs index 4ba7262..0d7f4c8 100644 --- a/SunSharp/Native/Loader/LibraryHandler.cs +++ b/SunSharp/Native/Loader/LibraryHandler.cs @@ -17,7 +17,7 @@ public interface ILibraryHandler void UnloadLibrary(); /// - /// A method that returns a delegate from a function pointer, found in the loaded library by name.
+ /// A method that returns a delegate from a function pointer, found in the loaded library by name. /// Should fail immediately if the method is not found. ///
/// diff --git a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs similarity index 99% rename from SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs rename to SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs index 827e0d3..04ea987 100644 --- a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.Generated.cs +++ b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs @@ -1,4 +1,4 @@ -#pragma warning disable CS0649 +#pragma warning disable CS0649 #nullable enable using System; diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index 6190b16..731d847 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -95,7 +95,7 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public readonly override string ToString() + public override readonly string ToString() { return $"{(Note)NN}" + $"{(VV != 0 ? $"{VV:X2}" : "__")}" + @@ -115,7 +115,7 @@ public readonly override string ToString() return a.Data != b.Data; } - public readonly override bool Equals(object? obj) + public override readonly bool Equals(object? obj) { return obj is PatternEvent e && this == e; } @@ -125,7 +125,7 @@ public readonly bool Equals(PatternEvent other) return this == other; } - public readonly override int GetHashCode() + public override readonly int GetHashCode() { return -1945990370 + Data.GetHashCode(); } diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 403985c..0e2a3aa 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -16,16 +16,14 @@ public sealed class SunVoxException : Exception public SunVoxException() { - } public SunVoxException(string message) : base(message) { - } + public SunVoxException(string message, Exception innerException) : base(message, innerException) { - } public SunVoxException(uint code, string? method = null) diff --git a/SunSharp/SunVoxLibExtensions.cs b/SunSharp/SunVoxLibExtensions.cs index 1b7f17b..a312fa7 100644 --- a/SunSharp/SunVoxLibExtensions.cs +++ b/SunSharp/SunVoxLibExtensions.cs @@ -21,7 +21,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action action) finally { if (entered) + { lib.UnlockSlot(slotId); + } } } @@ -38,7 +40,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action act finally { if (entered) + { lib.UnlockSlot(slotId); + } } } @@ -55,7 +59,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Action(this ISunVoxLib lib, int slotId, Action finally { if (entered) + { lib.UnlockSlot(slotId); + } } } @@ -91,7 +99,9 @@ public static void RunInLock(this ISunVoxLib lib, int slotId, Ac finally { if (entered) + { lib.UnlockSlot(slotId); + } } } From b3732aafcbad54445e975e20cee6ce8a635615ee Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:15:15 +0100 Subject: [PATCH 08/27] wip --- .../GeneratorTests.cs | 1 + .../NativeProxy/NativeProxyGenerator.cs | 175 +++---- .../NativeProxy/TypeNameTranslation.cs | 37 -- .../SunVoxHeaderInterfaceGenerator.cs | 60 +++ .../Logic/SunVoxHeaderParser.cs | 143 ++++++ .../Logic/TypeTranslator.cs | 24 + SunSharp.Redistribution/UnixLibraryHandler.cs | 9 +- .../WindowsLibraryHandler.cs | 17 +- .../Native/SunVoxLibNativeWrapperTests.cs | 24 +- SunSharp.Tests/SunVoxLibExtensionsTests.cs | 12 +- SunSharp/Data/SongData.cs | 9 + SunSharp/Enums.cs | 14 +- SunSharp/FineTunePair.cs | 6 +- SunSharp/ISunVoxLib.cs | 52 +-- .../{ISunVoxLibC.cs => ISunVoxLibC.g.cs} | 215 +++++---- .../Loader/NativeProxy.ISunVoxLibC.g.cs | 434 +++++++++--------- SunSharp/Native/Loader/NativeProxy.cs | 27 +- .../Native/SunVoxLibNativeWrapper.Modules.cs | 22 +- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 4 + SunSharp/Native/SunVoxLibNativeWrapper.cs | 9 +- SunSharp/Note.cs | 2 +- SunSharp/PatternEvent.cs | 6 +- SunSharp/SunSharp.csproj | 9 +- SunSharp/{Constants.cs => SunVoxConstants.cs} | 2 +- 24 files changed, 714 insertions(+), 599 deletions(-) delete mode 100644 SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs create mode 100644 SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs create mode 100644 SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs create mode 100644 SunSharp.CodeGeneration/Logic/TypeTranslator.cs rename SunSharp/Native/{ISunVoxLibC.cs => ISunVoxLibC.g.cs} (57%) rename SunSharp/{Constants.cs => SunVoxConstants.cs} (93%) diff --git a/SunSharp.CodeGeneration.Tests/GeneratorTests.cs b/SunSharp.CodeGeneration.Tests/GeneratorTests.cs index 676f0b8..c316ff9 100644 --- a/SunSharp.CodeGeneration.Tests/GeneratorTests.cs +++ b/SunSharp.CodeGeneration.Tests/GeneratorTests.cs @@ -14,6 +14,7 @@ public async Task Test(DiscoveredGenerator generator) { var result = await generator.GenerateAsync(); + result.Exception.Should().BeNull(); result.Successful.Should().BeTrue(); result.ChangesNecessary.Should().BeFalse(); } diff --git a/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs b/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs index 089e46b..53994f0 100644 --- a/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs +++ b/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs @@ -1,80 +1,44 @@ -using System.Reflection; -using SunSharp.Native; +using SunSharp.CodeGeneration.Logic; using SunSharp.Native.Loader; -using static SunSharp.CodeGeneration.Generators.NativeProxy.TypeNameTranslation; namespace SunSharp.CodeGeneration.Generators.NativeProxy; -public sealed class NativeProxyGenerator : BaseGenerator +public sealed class NativeInterfaceGenerator : BaseGenerator { public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs"); - private DelegateDefinition[] _delegateDefinitions = []; - private MethodDefinition[] _methodDefinitions = []; - - private static string GetDelegateNameCode(DelegateDefinition definition) - { - var @out = TranslateToCapitalizedName(definition.ReturnType); - var @in = string.Join(null, definition.Parameters.Select(static t => TranslateToCapitalizedName(t))); - @in = @in.Length == 0 ? "Void" : @in; - return $"Returns{@out}Takes{@in}"; - } - - private static string GetDelegateDefinitionCode(DelegateDefinition definition) + private static string GetDelegateNameCode(ParsedFunction function) { - var returnType = TranslateToFriendlyName(definition.ReturnType); - var friendlyArguments = string.Join(", ", - definition.Parameters.Select(static (t, i) => $"{TranslateToFriendlyName(t)} arg{i + 1}")); - - return $"private delegate {returnType} {GetDelegateNameCode(definition)}({friendlyArguments});"; + var outName = TypeTranslator.TypeToCode(function.CSharpReturnType); + var inName = string.Join(null, function.Parameters.Select(p => TypeTranslator.TypeToCode(p.CSharpType))); + if (inName.Length == 0) inName = "Void"; + return $"Returns{outName}Takes{inName}"; } - private static string GetMethodDefinitionCode(MethodDefinition definition) - { - var returnType = TranslateToFriendlyName(definition.CorrespondingDelegate.ReturnType); - - var pars = definition.MethodInfo.GetParameters() - .Select(static p => $"{TranslateToFriendlyName(p.ParameterType)} {p.Name}") - .ToArray(); - var joinedPars = string.Join(", ", pars); - var forwardedPars = definition.MethodInfo.GetParameters().Select(static p => p.Name); - var joinedForwardedPars = string.Join(", ", forwardedPars); - return - $"{returnType} {nameof(ISunVoxLibC)}.{definition.MethodInfo.Name}({joinedPars}) => {definition.MethodInfo.Name}?.Invoke({joinedForwardedPars}) ?? throw GetNoDelegateException();"; - } + private record DelegateDefinitionCode(string DelegateName, string Code); - private static string GetDelegateForMethodDefinitionCode(MethodDefinition methodDefinition) + private static DelegateDefinitionCode GetDelegateDefinitionCode(ParsedFunction function) { - return - $"private {GetDelegateNameCode(methodDefinition.CorrespondingDelegate)}? {methodDefinition.MethodInfo.Name};"; + var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); + var args = string.Join(", ", function.Parameters.Select((p, i) => $"{TypeTranslator.TypeToCode(p.CSharpType)} arg{i + 1}")); + var name = GetDelegateNameCode(function); + return new DelegateDefinitionCode(name, $"private delegate {ret} {name}({args});"); } - private void ReadData() + private static string GetInterfaceMethodCode(ParsedFunction function) { - var type = typeof(ISunVoxLibC); - - _delegateDefinitions = [.. type.GetMethods() - .Select(static m => - new DelegateDefinition(m.ReturnType, - [.. - m.GetParameters().Select(static p => p.ParameterType) - ]) - ) - .DistinctBy(GetDelegateNameCode)]; - - _methodDefinitions = [.. type.GetMethods() - .Select(static m => new MethodDefinition(m, - new DelegateDefinition(m.ReturnType, - [.. - m.GetParameters().Select(static p => p.ParameterType)] - )) - ) - ]; + var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); + var pars = string.Join(", ", function.Parameters.Select(p => $"{TypeTranslator.TypeToCode(p.CSharpType)} {p.Name}")); + var forwarded = string.Join(", ", function.Parameters.Select(p => p.Name)); + return $"{ret} ISunVoxLibC.{function.Name}({pars}) => {function.Name}?.Invoke({forwarded}) ?? throw GetNoDelegateException();"; } protected override string GenerateBody() { - ReadData(); + var parsed = SunVoxHeaderParser.Parse(); + var functions = parsed.Functions + .OrderBy(f => f.Name) + .ToArray(); AppendLineNoTab("#pragma warning disable CS0649"); AppendLineNoTab("#nullable enable"); @@ -85,91 +49,92 @@ protected override string GenerateBody() AppendLine("{"); AddIndent(() => { - AppendLine($"public sealed partial class {nameof(Native.Loader.NativeProxy)} : {nameof(ISunVoxLibC)}"); + AppendLine($"public sealed partial class {nameof(Native.Loader.NativeProxy)} : ISunVoxLibC"); AppendLine("{"); AddIndent(() => { AppendLine("#region delegate definitions"); AppendLine(); - - foreach (var d in _delegateDefinitions.OrderBy(static d => GetDelegateNameCode(d))) - AppendDelegateDefinition(d); - + AppendDelegateDefinitions(functions); + AppendLine(); AppendLine("#endregion delegate definitions"); AppendLine(); AppendLine("#region delegates"); AppendLine(); - - foreach (var m in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) - AppendDelegateForMethodDefinition(m); - + foreach (var f in functions) + { + AppendLine($"private {GetDelegateNameCode(f)}? {f.Name};"); + AppendLine(); + } AppendLine("#endregion delegates"); AppendLine(); AppendLine("#region interface"); AppendLine(); - foreach (var m in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) AppendMethodDefinition(m); - + foreach (var f in functions) + { + AppendLine(GetInterfaceMethodCode(f)); + AppendLine(); + } AppendLine("#endregion interface"); AppendLine(); - AppendLoadMethod(); + AppendLoadMethod(functions); AppendLine(); - AppendUnloadMethod(); + AppendUnloadMethod(functions); }); AppendLine("}"); }); AppendLine("}"); - return Context.GetBuiltString(); } - private void AppendUnloadMethod() + private void AppendDelegateDefinitions(ParsedFunction[] functions) { - AppendLine("private void UnloadInternal()"); - AppendLine("{"); - AddIndent(() => + var uniqueDefinitions = new Dictionary(); + foreach (var f in functions) { - foreach (var methodDefinition in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) - AppendLine($"{methodDefinition.MethodInfo.Name} = null;"); - }); - AppendLine("}"); + var definition = GetDelegateDefinitionCode(f); + uniqueDefinitions[definition.DelegateName] = definition; + } + + var orderedDefinitions = uniqueDefinitions.Values + .OrderBy(d => d.DelegateName) + .Select(d => d.Code) + .ToArray(); + + for (var i = 0; i < orderedDefinitions.Length; i++) + { + AppendLine(orderedDefinitions[i]); + if (i + 1 != orderedDefinitions.Length) + { + AppendLine(); + } + } } - private void AppendLoadMethod() + private void AppendLoadMethod(ParsedFunction[] functions) { AppendLine("private void LoadInternal()"); AppendLine("{"); AddIndent(() => { - foreach (var methodDefinition in _methodDefinitions.OrderBy(static m => m.MethodInfo.Name)) + foreach (var f in functions.OrderBy(f => f.Name)) { - var name = methodDefinition.MethodInfo.Name; - var delegateName = GetDelegateNameCode(methodDefinition.CorrespondingDelegate); - AppendLine( - $"{name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{name}\", typeof({delegateName}));"); + var delegateName = GetDelegateNameCode(f); + AppendLine($"{f.Name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{f.Name}\", typeof({delegateName}));"); } }); AppendLine("}"); } - private void AppendMethodDefinition(MethodDefinition methodDefinition) - { - AppendLine(GetMethodDefinitionCode(methodDefinition)); - AppendLine(); - } - - private void AppendDelegateForMethodDefinition(MethodDefinition methodDefinition) - { - AppendLine(GetDelegateForMethodDefinitionCode(methodDefinition)); - AppendLine(); - } - - private void AppendDelegateDefinition(DelegateDefinition delegateDefinition) + private void AppendUnloadMethod(ParsedFunction[] functions) { - AppendLine(GetDelegateDefinitionCode(delegateDefinition)); - AppendLine(); + AppendLine("private void UnloadInternal()"); + AppendLine("{"); + AddIndent(() => + { + foreach (var f in functions.OrderBy(f => f.Name)) + AppendLine($"{f.Name} = null;"); + }); + AppendLine("}"); } - - private record DelegateDefinition(Type ReturnType, Type[] Parameters); - - private record MethodDefinition(MethodInfo MethodInfo, DelegateDefinition CorrespondingDelegate); } diff --git a/SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs b/SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs deleted file mode 100644 index b783f63..0000000 --- a/SunSharp.CodeGeneration/Generators/NativeProxy/TypeNameTranslation.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Collections.Immutable; - -namespace SunSharp.CodeGeneration.Generators.NativeProxy; - -public class TypeNameTranslation -{ - private static readonly ImmutableDictionary StrictTypeNameToFriendlyTypeNameDictionary = - new Dictionary - { - { "Int32", "int" }, - { "UInt32", "uint" }, - { "Void", "void" } - }.ToImmutableDictionary(); - - private static readonly ImmutableDictionary StrictTypeNameToCapitalizedName = - new Dictionary - { - { "Int32", "Int" }, - { "UInt32", "Uint" } - }.ToImmutableDictionary(); - - public static string TranslateToFriendlyName(Type type) - { - return Translate(type, StrictTypeNameToFriendlyTypeNameDictionary); - } - - public static string TranslateToCapitalizedName(Type type) - { - return Translate(type, StrictTypeNameToCapitalizedName); - } - - public static string Translate(Type type, ImmutableDictionary d) - { - var str = type.Name; - return d.GetValueOrDefault(str, str); - } -} diff --git a/SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs b/SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs new file mode 100644 index 0000000..bdd69e0 --- /dev/null +++ b/SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs @@ -0,0 +1,60 @@ +using SunSharp.CodeGeneration.Logic; + +namespace SunSharp.CodeGeneration.Generators.SunVoxHeader; + +public sealed class SunVoxHeaderInterfaceGenerator : BaseGenerator +{ + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/ISunVoxLibC.g.cs"); + + protected override string GenerateBody() + { + var parsed = SunVoxHeaderParser.Parse(); + + AppendLine("#pragma warning disable CA1707 // Identifiers should not contain underscores"); + AppendLine("#pragma warning disable CA1716 // Identifiers should not match keywords"); + AppendLine("#pragma warning disable IDE1006 // Naming Styles"); + AppendLine(); + AppendLine("using System;"); + AppendLine(); + AppendLine("namespace SunSharp.Native"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("public interface ISunVoxLibC"); + AppendLine("{"); + AddIndent(() => + { + for (var i = 0; i < parsed.Functions.Length; i++) + { + var f = parsed.Functions[i]; + AppendLine("/// "); + AppendLine($"/// {EscapeForXmlDoc(f.OriginalPrototype.Trim())}"); + AppendLine("/// "); + var signature = GetCSharpSignature(f); + AppendLine(signature); + if (i + 1 != parsed.Functions.Length) + { + AppendLine(); + } + } + }); + AppendLine("}"); + }); + AppendLine("}"); + return Context.GetBuiltString(); + } + + private static string GetCSharpSignature(ParsedFunction function) + { + var parameters = string.Join( + ", ", + function.Parameters.Select(p => TypeTranslator.TypeToCode(p.CSharpType) + " " + p.Name) + ); + return $"{TypeTranslator.TypeToCode(function.CSharpReturnType)} {function.Name}({parameters});"; + } + + private static string EscapeForXmlDoc(string value) + { + return System.Security.SecurityElement.Escape(value); + } +} diff --git a/SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs b/SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs new file mode 100644 index 0000000..bd90f6d --- /dev/null +++ b/SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs @@ -0,0 +1,143 @@ +using System.Collections.Immutable; +using System.Text.RegularExpressions; +using SunSharp.CodeGeneration.Generators; + +namespace SunSharp.CodeGeneration.Logic; + +public sealed record ParsedFunction(string ReturnType, string Name, ParsedParameter[] Parameters, string OriginalPrototype, Type CSharpReturnType); + +public sealed record ParsedParameter(string CType, string Name, Type CSharpType); + +public sealed record ParsedHeader(ParsedFunction[] Functions); + +public static class SunVoxHeaderParser +{ + public static ParsedHeader Parse() + { + var headerPath = PathHelper.GetProjectFilePath("SunSharp/Native/sunvox.h"); + if (!File.Exists(headerPath)) throw new FileNotFoundException("Could not locate sunvox.h", headerPath); + var lines = File.ReadAllLines(headerPath); + var functions = ParseFunctions(lines); + return new ParsedHeader(functions); + } + + private static ParsedFunction[] ParseFunctions(string[] lines) + { + var functions = new List(); + var (start, end) = FindStaticSection(lines); + var rx = new Regex(@"^\s*(?(?:const\s+)?[a-zA-Z_][a-zA-Z0-9_]*\s*(?:\*)?)\s+(?sv_[a-z0-9_]+)\s*\((?[^)]*)\)\s*(?:SUNVOX_FN_ATTR)?\s*;", RegexOptions.Compiled); + + for (var i = start; i < end; i++) + { + var m = rx.Match(lines[i]); + if (!m.Success) + { + continue; + } + + var ret = NormalizeType(m.Groups["ret"].Value.Trim()); + var name = m.Groups["name"].Value.Trim(); + var argsRaw = m.Groups["args"].Value.Trim(); + var original = lines[i].Replace("SUNVOX_FN_ATTR", string.Empty).Trim(); + + var parameters = new List(); + + if (argsRaw is not ("void" or "")) + { + foreach (var arg in argsRaw.Split(',')) + { + var ap = arg.Trim(); + if (ap.Length == 0) continue; + var (cType, parameterName) = ParseParameter(ap); + cType = NormalizeType(cType); + parameters.Add(new ParsedParameter(cType, parameterName, MapCTypeToCSharp(cType))); + } + } + functions.Add(new ParsedFunction(ret, name, parameters.ToArray(), original, MapCTypeToCSharp(ret))); + } + + return functions.ToArray(); + } + + private static (int start, int end) FindStaticSection(string[] lines) + { + var regionStartIndex = -1; + for (var i = 0; i < lines.Length; i++) + { + if (!lines[i].Trim().StartsWith("#ifdef SUNVOX_STATIC_LIB")) + { + continue; + } + + regionStartIndex = i; + break; + } + + if (regionStartIndex == -1) + { + throw new InvalidOperationException("Could not find the beginning of SUNVOX_STATIC_LIB section in header."); + } + + var depth = 0; + for (var i = regionStartIndex + 1; i < lines.Length; i++) + { + var line = lines[i].Trim(); + if (line.StartsWith("#ifdef") || line.StartsWith("#if")) + { + depth++; + } + else if (line.StartsWith("#endif")) + { + depth--; + if (depth == 0) + { + return (regionStartIndex, i); + } + } + else if (line.StartsWith("#else") && depth == 0) + { + return (regionStartIndex, i); + } + } + + throw new InvalidOperationException("Could not find the end of SUNVOX_STATIC_LIB section in header."); + } + + private static (string CType, string Name) ParseParameter(string param) + { + var parts = param.Split([' '], StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 1) return (parts[0], string.Empty); + var name = parts[^1]; + var type = string.Join(" ", parts.Take(parts.Length - 1)); + return (type, name); + } + + private static string NormalizeType(string t) + { + t = t.Replace(" ", " ").Trim(); + t = t.Replace(" *", "*").Replace("* ", "*"); + return t; + } + + private static readonly ImmutableDictionary SimpleTypeMap = new Dictionary + { + { "int", typeof(int) }, + { "uint32_t", typeof(uint) }, + { "const char*", typeof(IntPtr) }, + { "char*", typeof(IntPtr) }, + { "void*", typeof(IntPtr) }, + { "sunvox_note*", typeof(IntPtr) }, + { "int16_t*", typeof(IntPtr) }, + { "float*", typeof(IntPtr) }, + { "int*", typeof(IntPtr) }, + { "uint32_t*", typeof(IntPtr) }, + { "void", typeof(void) } + }.ToImmutableDictionary(); + + private static Type MapCTypeToCSharp(string cType) + { + if (SimpleTypeMap.TryGetValue(cType, out var mapped)) return mapped; + + throw new ArgumentException($"Unexpected C-lang type: '{cType}'.", nameof(cType)); + } +} diff --git a/SunSharp.CodeGeneration/Logic/TypeTranslator.cs b/SunSharp.CodeGeneration/Logic/TypeTranslator.cs new file mode 100644 index 0000000..9bc5a73 --- /dev/null +++ b/SunSharp.CodeGeneration/Logic/TypeTranslator.cs @@ -0,0 +1,24 @@ +using System.Collections.Frozen; + +namespace SunSharp.CodeGeneration.Logic; + +public static class TypeTranslator +{ + private static readonly FrozenDictionary TypeToCodeDictionary = new Dictionary + { + [typeof(int)] = "int", + [typeof(uint)] = "uint", + [typeof(float)] = "float", + [typeof(double)] = "double", + [typeof(void)] = "void", + [typeof(string)] = "string", + [typeof(bool)] = "bool" + }.ToFrozenDictionary(); + + public static string TypeToCode(Type type) + { + return TypeToCodeDictionary.TryGetValue(type, out var value) + ? value + : type.Name; + } +} diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/SunSharp.Redistribution/UnixLibraryHandler.cs index 8fc3117..f155872 100644 --- a/SunSharp.Redistribution/UnixLibraryHandler.cs +++ b/SunSharp.Redistribution/UnixLibraryHandler.cs @@ -70,14 +70,13 @@ public Delegate GetFunctionByName(string name, Type delegateType) } var ptr = dlsym(_ptr, name); - if (ptr == IntPtr.Zero) + if (ptr != IntPtr.Zero) { - var error = dlerror(); - throw new LibraryLoadingException( - $"Failed to load SunVoxLib function '{name}' with error '{error}'."); + return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); } - return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); + var error = dlerror(); + throw new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error}'."); } } diff --git a/SunSharp.Redistribution/WindowsLibraryHandler.cs b/SunSharp.Redistribution/WindowsLibraryHandler.cs index 7b7e820..4e00d76 100644 --- a/SunSharp.Redistribution/WindowsLibraryHandler.cs +++ b/SunSharp.Redistribution/WindowsLibraryHandler.cs @@ -46,11 +46,13 @@ public void UnloadLibrary() var ptr = _ptr; _ptr = IntPtr.Zero; var value = FreeLibrary(ptr); - if (value == 0) + if (value != 0) { - var error = Marshal.GetHRForLastWin32Error(); - throw new LibraryLoadingException($"Failed to unload SunVoxLib with error error '{error:X8}'."); + return; } + + var error = Marshal.GetHRForLastWin32Error(); + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error error '{error:X8}'."); } } @@ -65,14 +67,13 @@ public Delegate GetFunctionByName(string name, Type delegateType) throw new LibraryLoadingException("SunVoxLib is not loaded."); var ptr = GetProcAddress(_ptr, name); - if (ptr == IntPtr.Zero) + if (ptr != IntPtr.Zero) { - var error = Marshal.GetHRForLastWin32Error(); - throw new LibraryLoadingException( - $"Failed to load SunVoxLib function '{name}' with error '{error:X8}'."); + return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); } - return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); + var error = Marshal.GetHRForLastWin32Error(); + throw new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error:X8}'."); } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index e74ac36..febb464 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -67,29 +67,29 @@ public void DeinitializeShouldThrowExceptionOnNonzeroCode() } [Test, AutoData] - public void GetAutostopShouldReturnValue(bool autostop, int slotId) + public void GetAutomaticStopShouldReturnValue(bool automaticStop, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_autostop(Arg.Any()).Returns(autostop ? 1 : 0); + library.sv_get_autostop(Arg.Any()).Returns(automaticStop ? 1 : 0); // when - var value = wrapper.GetAutostop(slotId); + var value = wrapper.GetAutomaticStop(slotId); // then library.Received(1).sv_get_autostop(slotId); - value.Should().Be(autostop); + value.Should().Be(automaticStop); } [Test, AutoData] - public void GetAutostopShouldThrowOnInvalidValue(int slotId) + public void GetAutomaticStopShouldThrowOnInvalidValue(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_autostop(Arg.Any()).Returns(ErrorResponseCode); // when - then - wrapper.Invoking(w => w.GetAutostop(slotId)).Should().Throw(); + wrapper.Invoking(w => w.GetAutomaticStop(slotId)).Should().Throw(); // then library.Received(1).sv_get_autostop(slotId); @@ -611,7 +611,7 @@ public void PauseStreamShouldCallExpectedMethod(int slotId) library.sv_pause(Arg.Any()).Returns(0); // when - wrapper.PauseStream(slotId); + wrapper.PauseAudioStream(slotId); // then library.Received(1).sv_pause(slotId); @@ -625,7 +625,7 @@ public void PauseStreamShouldThrowOnNonZeroReturnCode(int slotId) library.sv_pause(Arg.Any()).Returns(ErrorResponseCode); // when - then - wrapper.Invoking(w => w.PauseStream(slotId)).Should().Throw(); + wrapper.Invoking(w => w.PauseAudioStream(slotId)).Should().Throw(); // then library.Received(1).sv_pause(slotId); @@ -667,7 +667,7 @@ public void ResumeStreamShouldCallExpectedMethod(int slotId) library.sv_resume(Arg.Any()).Returns(0); // when - wrapper.ResumeStream(slotId); + wrapper.ResumeAudioStream(slotId); // then library.Received(1).sv_resume(slotId); @@ -681,7 +681,7 @@ public void ResumeStreamShouldThrowOnNonZeroReturnCode(int slotId) library.sv_resume(Arg.Any()).Returns(ErrorResponseCode); // when - then - wrapper.Invoking(w => w.ResumeStream(slotId)).Should().Throw(); + wrapper.Invoking(w => w.ResumeAudioStream(slotId)).Should().Throw(); // then library.Received(1).sv_resume(slotId); @@ -816,7 +816,7 @@ public void SetAutoStopShouldCallWithArgument(bool autoStop) var slotId = fixture.Create(); // when - wrapper.SetAutoStop(slotId, autoStop); + wrapper.SetAutomaticStop(slotId, autoStop); // then library.Received(1).sv_set_autostop(slotId, autoStop ? 1 : 0); @@ -830,7 +830,7 @@ public void SetAutoStopShouldThrowOnInvalidReturnCode(int slotId) library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(-1); // when - then - wrapper.Invoking(w => w.SetAutoStop(slotId, false)).Should().Throw(); + wrapper.Invoking(w => w.SetAutomaticStop(slotId, false)).Should().Throw(); // then library.Received(1).sv_set_autostop(slotId, 0); diff --git a/SunSharp.Tests/SunVoxLibExtensionsTests.cs b/SunSharp.Tests/SunVoxLibExtensionsTests.cs index 307cafc..f9621ad 100644 --- a/SunSharp.Tests/SunVoxLibExtensionsTests.cs +++ b/SunSharp.Tests/SunVoxLibExtensionsTests.cs @@ -129,7 +129,7 @@ public void RunInLockShouldCallLockActionAndUnlock(int argCount, var mockAction = Substitute.For>(); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when action(lib, mockAction, mockData); @@ -149,7 +149,7 @@ public void RunInLockShouldCallLockFuncAndUnlock(int argCount, mockFunction.Invoke(Arg.Any()).Returns(mockResult); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when var result = function(lib, mockFunction, mockData); @@ -173,7 +173,7 @@ public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsExceptio }); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); @@ -196,7 +196,7 @@ public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(in }); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when var action = () => function(lib, mockFunction, mockData); action.Invoking(a => a()).Should().Throw(); @@ -216,7 +216,7 @@ public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(in var mockAction = Substitute.For>(); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); @@ -235,7 +235,7 @@ public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int var mockFunction = Substitute.For>(); var mockData = argCount == 0 ? null - : Enumerable.Range(0, argCount).Select(static i => (object)i.ToString()).ToArray(); + : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); // when ((Action)(() => function(lib, mockFunction, mockData))).Should().Throw(); diff --git a/SunSharp/Data/SongData.cs b/SunSharp/Data/SongData.cs index 63e4906..6efbcc1 100644 --- a/SunSharp/Data/SongData.cs +++ b/SunSharp/Data/SongData.cs @@ -7,8 +7,17 @@ namespace SunSharp.Data public class SongData : IDeepCopyable { public string? Name { get; set; } + + /// + /// Beats per minute. + /// public int BPM { get; set; } + + /// + /// Ticks per line. + /// public int TPL { get; set; } + public uint Lines { get; set; } public int CurrentLine { get; set; } public int FirstLine { get; set; } diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index c3a615d..a736997 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -32,8 +32,8 @@ public enum Column public enum TimeMapType { - Speed = Constants.SV_TIME_MAP_SPEED, - FrameCount = Constants.SV_TIME_MAP_FRAMECNT + Speed = SunVoxConstants.SV_TIME_MAP_SPEED, + FrameCount = SunVoxConstants.SV_TIME_MAP_FRAMECNT } public enum ValueScalingMode @@ -59,29 +59,29 @@ public enum InitFlags : uint /// /// Less information will be written to standard output. /// - NoDebugOutput = Constants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, + NoDebugOutput = SunVoxConstants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, /// /// No automatic sound management, sv_audio_callback must be used. /// - UserAudioCallback = Constants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, + UserAudioCallback = SunVoxConstants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, /// /// Sets the format which must be used with sv_audio_callback to . /// May not apply without . Mutually exclusive with . /// - AudioInt16 = Constants.SV_INIT_FLAG_AUDIO_INT16, + AudioInt16 = SunVoxConstants.SV_INIT_FLAG_AUDIO_INT16, /// /// Sets the format which must be used with sv_audio_callback to . /// May not apply without . Mutually exclusive with . /// - AudioFloat32 = Constants.SV_INIT_FLAG_AUDIO_FLOAT32, + AudioFloat32 = SunVoxConstants.SV_INIT_FLAG_AUDIO_FLOAT32, /// /// Audio callback and other methods will be called from one thread. /// Applies if is set. /// - OneThread = Constants.SV_INIT_FLAG_ONE_THREAD + OneThread = SunVoxConstants.SV_INIT_FLAG_ONE_THREAD } } diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTunePair.cs index 23b1c85..f899dd9 100644 --- a/SunSharp/FineTunePair.cs +++ b/SunSharp/FineTunePair.cs @@ -21,7 +21,7 @@ public FineTunePair(uint value) (FineTune, RelativeNote) = Helper.UnpackTwoSignedShorts(value); } - public override readonly bool Equals(object? obj) + public readonly override bool Equals(object? obj) { if (obj is FineTunePair other) return Equals(other); @@ -34,12 +34,12 @@ public readonly bool Equals(FineTunePair other) return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public override readonly int GetHashCode() + public readonly override int GetHashCode() { return HashCode.Combine(FineTune, RelativeNote); } - public override readonly string ToString() + public readonly override string ToString() { return $"Fine-tune: {FineTune}, relative note: {RelativeNote}."; } diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/ISunVoxLib.cs index 870ae95..3441c56 100644 --- a/SunSharp/ISunVoxLib.cs +++ b/SunSharp/ISunVoxLib.cs @@ -31,20 +31,17 @@ public partial interface ISunVoxLib /// Use this method to get the current tick counter (from 0 to 0xFFFFFFFF).
/// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
- /// uint GetTicks(); /// /// Use this method to get the number of system ticks per second.
/// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). ///
- /// uint GetTicksPerSecond(); /// /// Get the current sample rate. /// - /// int GetSampleRate(); /// @@ -101,7 +98,7 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// Get current behaviour for reaching the end of project timeline. /// /// if project is set to stop after reaching the end. - bool GetAutostop(int slotId); + bool GetAutomaticStop(int slotId); /// /// Get current line number on the timeline. @@ -160,26 +157,10 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// /// Save the SunVox project. /// - /// - /// void Save(int slotId, string path); - /// - /// - /// - /// - /// void SendEvent(int slotId, int track, PatternEvent data); - /// - /// - /// - /// - /// - /// - /// - /// - /// void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); /// @@ -195,9 +176,6 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, ///
/// See also: . ///
- /// - /// - /// void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0); /// @@ -212,7 +190,7 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// Get the project time map. ///
/// For = , Nth value equals speed at the beginning of Nth - /// line (Bpm | Tpl << 16). + /// line (BPM | TPL << 16). ///
/// For = , Nth value equals frame counter at the /// beginning of Nth line. @@ -260,51 +238,41 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, /// /// Set/get autostop mode. When autostop is off, the project plays endlessly in a loop. /// - /// - /// - void SetAutoStop(int slotId, bool autoStop); + void SetAutomaticStop(int slotId, bool autoStop); /// /// First call - stop playing; second call - reset all SunVox activity and switch the engine to standby mode. /// - /// - void StopPlayback(int slotId); // TODO confirm name + void StopPlayback(int slotId); /// /// Start playing the project from the current position. /// - /// - void StartPlayback(int slotId); // TODO confirm name + void StartPlayback(int slotId); /// /// Start playing the project from the beginning (line 0). /// - /// - void StartPlaybackFromBeginning(int slotId); // TODO confirm name + void StartPlaybackFromBeginning(int slotId); /// /// Jump to the specified position (line number on the timeline). /// - /// - /// - void Rewind(int slotId, int line); // TODO confirm name + void Rewind(int slotId, int line); /// /// Pause the audio stream on the specified slot. /// - /// - void PauseStream(int slotId); // TODO confirm name + void PauseAudioStream(int slotId); /// /// Resume the audio stream on the specified slot. /// - /// - void ResumeStream(int slotId); // TODO confirm name + void ResumeAudioStream(int slotId); /// /// Wait for sync (pattern effect 0x33 on any slot) and resume the audio stream on the specified slot. /// - /// - void ResumeStreamOnSyncEffect(int slotId); // TODO confirm name + void ResumeStreamOnSyncEffect(int slotId); } } diff --git a/SunSharp/Native/ISunVoxLibC.cs b/SunSharp/Native/ISunVoxLibC.g.cs similarity index 57% rename from SunSharp/Native/ISunVoxLibC.cs rename to SunSharp/Native/ISunVoxLibC.g.cs index 31ad173..8e8fa00 100644 --- a/SunSharp/Native/ISunVoxLibC.cs +++ b/SunSharp/Native/ISunVoxLibC.g.cs @@ -1,4 +1,4 @@ -#pragma warning disable CA1707 // Identifiers should not contain underscores +#pragma warning disable CA1707 // Identifiers should not contain underscores #pragma warning disable CA1716 // Identifiers should not match keywords #pragma warning disable IDE1006 // Naming Styles @@ -9,474 +9,467 @@ namespace SunSharp.Native public interface ISunVoxLibC { /// - /// int sv_init(const char* config, int freq, int channels, uint32_t flags) SUNVOX_FN_ATTR; + /// int sv_init( const char* config, int freq, int channels, uint32_t flags ) ; /// int sv_init(IntPtr config, int freq, int channels, uint flags); /// - /// int sv_deinit(void) SUNVOX_FN_ATTR; + /// int sv_deinit( void ) ; /// int sv_deinit(); /// - /// int sv_get_sample_rate(void) SUNVOX_FN_ATTR; + /// int sv_get_sample_rate( void ) ; /// int sv_get_sample_rate(); /// - /// int sv_update_input(void) SUNVOX_FN_ATTR; + /// int sv_update_input( void ) ; /// int sv_update_input(); /// - /// int sv_audio_callback(void* buf, int frames, int latency, uint32_t out_time); + /// int sv_audio_callback( void* buf, int frames, int latency, uint32_t out_time ) ; /// int sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time); /// - /// int sv_audio_callback2(void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* - /// in_buf) SUNVOX_FN_ATTR; + /// int sv_audio_callback2( void* buf, int frames, int latency, uint32_t out_time, int in_type, int in_channels, void* in_buf ) ; /// - int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, - IntPtr in_buf); + int sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf); /// - /// int sv_open_slot(int slot) SUNVOX_FN_ATTR; + /// int sv_open_slot( int slot ) ; /// int sv_open_slot(int slot); /// - /// int sv_close_slot(int slot) SUNVOX_FN_ATTR; + /// int sv_close_slot( int slot ) ; /// int sv_close_slot(int slot); /// - /// int sv_lock_slot(int slot) SUNVOX_FN_ATTR; + /// int sv_lock_slot( int slot ) ; /// int sv_lock_slot(int slot); /// - /// int sv_unlock_slot(int slot) SUNVOX_FN_ATTR; + /// int sv_unlock_slot( int slot ) ; /// int sv_unlock_slot(int slot); /// - /// int sv_load(int slot, const char* name) SUNVOX_FN_ATTR; + /// int sv_load( int slot, const char* name ) ; /// int sv_load(int slot, IntPtr name); /// - /// int sv_load_from_memory(int slot, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// int sv_load_from_memory( int slot, void* data, uint32_t data_size ) ; /// int sv_load_from_memory(int slot, IntPtr data, uint data_size); /// - /// int sv_save(int slot, const char* name) SUNVOX_FN_ATTR; + /// int sv_save( int slot, const char* name ) ; /// int sv_save(int slot, IntPtr name); /// - /// int sv_play(int slot); + /// int sv_play( int slot ) ; /// int sv_play(int slot); /// - /// int sv_play_from_beginning(int slot); + /// int sv_play_from_beginning( int slot ) ; /// int sv_play_from_beginning(int slot); /// - /// int sv_stop(int slot); + /// int sv_stop( int slot ) ; /// int sv_stop(int slot); /// - /// int sv_pause(int slot); + /// int sv_pause( int slot ) ; /// int sv_pause(int slot); /// - /// int sv_resume(int slot); + /// int sv_resume( int slot ) ; /// int sv_resume(int slot); /// - /// int sv_sync_resume(int slot); + /// int sv_sync_resume( int slot ) ; /// int sv_sync_resume(int slot); /// - /// int sv_set_autostop(int slot, int autostop) SUNVOX_FN_ATTR; + /// int sv_set_autostop( int slot, int autostop ) ; /// int sv_set_autostop(int slot, int autostop); /// - /// int sv_get_autostop(int slot) SUNVOX_FN_ATTR; + /// int sv_get_autostop( int slot ) ; /// int sv_get_autostop(int slot); /// - /// int sv_end_of_song( int slot) SUNVOX_FN_ATTR; + /// int sv_end_of_song( int slot ) ; /// int sv_end_of_song(int slot); /// - /// int sv_rewind( int slot, int line_num) SUNVOX_FN_ATTR; + /// int sv_rewind( int slot, int line_num ) ; /// int sv_rewind(int slot, int line_num); /// - /// int sv_volume(int slot, int vol) SUNVOX_FN_ATTR; + /// int sv_volume( int slot, int vol ) ; /// int sv_volume(int slot, int vol); /// - /// int sv_set_event_t( int slot, int set, int t) SUNVOX_FN_ATTR; + /// int sv_set_event_t( int slot, int set, int t ) ; /// int sv_set_event_t(int slot, int set, int t); /// - /// int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) SUNVOX_FN_ATTR; + /// int sv_send_event( int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val ) ; /// int sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val); /// - /// int sv_get_current_line(int slot) SUNVOX_FN_ATTR; + /// int sv_get_current_line( int slot ) ; /* Get current line number */ /// int sv_get_current_line(int slot); /// - /// int sv_get_current_line2(int slot) SUNVOX_FN_ATTR; + /// int sv_get_current_line2( int slot ) ; /* Get current line number in fixed point format 27.5 */ /// int sv_get_current_line2(int slot); /// - /// int sv_get_current_signal_level(int slot, int channel) SUNVOX_FN_ATTR; + /// int sv_get_current_signal_level( int slot, int channel ) ; /* From 0 to 255 */ /// int sv_get_current_signal_level(int slot, int channel); /// - /// const char* sv_get_song_name( int slot ) SUNVOX_FN_ATTR; + /// const char* sv_get_song_name( int slot ) ; /// IntPtr sv_get_song_name(int slot); /// - /// int sv_set_song_name( int slot, const char* name ) SUNVOX_FN_ATTR; + /// int sv_set_song_name( int slot, const char* name ) ; /// int sv_set_song_name(int slot, IntPtr name); /// - /// int sv_get_song_bpm(int slot) SUNVOX_FN_ATTR; + /// int sv_get_song_bpm( int slot ) ; /// int sv_get_song_bpm(int slot); /// - /// int sv_get_song_tpl(int slot) SUNVOX_FN_ATTR; + /// int sv_get_song_tpl( int slot ) ; /// int sv_get_song_tpl(int slot); /// - /// uint32_t sv_get_song_length_frames(int slot) SUNVOX_FN_ATTR; + /// uint32_t sv_get_song_length_frames( int slot ) ; /// uint sv_get_song_length_frames(int slot); /// - /// uint32_t sv_get_song_length_lines(int slot) SUNVOX_FN_ATTR; + /// uint32_t sv_get_song_length_lines( int slot ) ; /// uint sv_get_song_length_lines(int slot); /// - /// int sv_get_time_map(int slot, int start_line, int len, uint32_t* dest, int flags) SUNVOX_FN_ATTR; + /// int sv_get_time_map( int slot, int start_line, int len, uint32_t* dest, int flags ) ; /// int sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags); /// - /// int sv_new_module(int slot, const char* type, const char* name, int x, int y, int z) SUNVOX_FN_ATTR; + /// int sv_new_module( int slot, const char* type, const char* name, int x, int y, int z ) ; /* USE LOCK/UNLOCK! */ /// int sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z); /// - /// int sv_remove_module(int slot, int mod_num) SUNVOX_FN_ATTR; + /// int sv_remove_module( int slot, int mod_num ) ; /* USE LOCK/UNLOCK! */ /// int sv_remove_module(int slot, int mod_num); /// - /// int sv_connect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; + /// int sv_connect_module( int slot, int source, int destination ) ; /* USE LOCK/UNLOCK! */ /// int sv_connect_module(int slot, int source, int destination); /// - /// int sv_disconnect_module(int slot, int source, int destination) SUNVOX_FN_ATTR; + /// int sv_disconnect_module( int slot, int source, int destination ) ; /* USE LOCK/UNLOCK! */ /// int sv_disconnect_module(int slot, int source, int destination); /// - /// int sv_load_module(int slot, const char* file_name, int x, int y, int z ) SUNVOX_FN_ATTR; + /// int sv_load_module( int slot, const char* file_name, int x, int y, int z ) ; /// int sv_load_module(int slot, IntPtr file_name, int x, int y, int z); /// - /// int sv_load_module_from_memory(int slot, void* data, uint32_t data_size, int x, int y, int z) SUNVOX_FN_ATTR; + /// int sv_load_module_from_memory( int slot, void* data, uint32_t data_size, int x, int y, int z ) ; /// int sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z); /// - /// int sv_sampler_load(int slot, int sampler_module, const char* file_name, int sample_slot) SUNVOX_FN_ATTR; + /// int sv_sampler_load( int slot, int mod_num, const char* file_name, int sample_slot ) ; /// - int sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot); + int sv_sampler_load(int slot, int mod_num, IntPtr file_name, int sample_slot); /// - /// int sv_sampler_load_from_memory(int slot, int sampler_module, void* data, uint32_t data_size, int sample_slot) - /// SUNVOX_FN_ATTR; + /// int sv_sampler_load_from_memory( int slot, int mod_num, void* data, uint32_t data_size, int sample_slot ) ; /// - int sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot); + int sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size, int sample_slot); /// - /// int sv_metamodule_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; + /// int sv_metamodule_load( int slot, int mod_num, const char* file_name ) ; /// int sv_metamodule_load(int slot, int mod_num, IntPtr file_name); /// - /// int sv_metamodule_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// int sv_metamodule_load_from_memory( int slot, int mod_num, void* data, uint32_t data_size ) ; /// int sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); /// - /// int sv_vplayer_load(int slot, int mod_num, const char* file_name) SUNVOX_FN_ATTR; + /// int sv_vplayer_load( int slot, int mod_num, const char* file_name ) ; /// int sv_vplayer_load(int slot, int mod_num, IntPtr file_name); /// - /// int sv_vplayer_load_from_memory(int slot, int mod_num, void* data, uint32_t data_size) SUNVOX_FN_ATTR; + /// int sv_vplayer_load_from_memory( int slot, int mod_num, void* data, uint32_t data_size ) ; /// int sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size); /// - /// int sv_get_number_of_modules(int slot) SUNVOX_FN_ATTR; + /// int sv_get_number_of_modules( int slot ) ; /// int sv_get_number_of_modules(int slot); /// - /// int sv_find_module(int slot, const char* name) SUNVOX_FN_ATTR; + /// int sv_find_module( int slot, const char* name ) ; /// int sv_find_module(int slot, IntPtr name); /// - /// uint32_t sv_get_module_flags(int slot, int mod_num) SUNVOX_FN_ATTR; + /// uint32_t sv_get_module_flags( int slot, int mod_num ) ; /* SV_MODULE_FLAG_* */ /// uint sv_get_module_flags(int slot, int mod_num); /// - /// int* sv_get_module_inputs( int slot, int mod_num) SUNVOX_FN_ATTR; + /// int* sv_get_module_inputs( int slot, int mod_num ) ; /// IntPtr sv_get_module_inputs(int slot, int mod_num); /// - /// int* sv_get_module_outputs( int slot, int mod_num ) SUNVOX_FN_ATTR; + /// int* sv_get_module_outputs( int slot, int mod_num ) ; /// IntPtr sv_get_module_outputs(int slot, int mod_num); /// - /// const char* sv_get_module_name( int slot, int mod_num) SUNVOX_FN_ATTR; + /// const char* sv_get_module_type( int slot, int mod_num ) ; /// - IntPtr sv_get_module_name(int slot, int mod_num); + IntPtr sv_get_module_type(int slot, int mod_num); /// - /// int sv_set_module_name( int slot, int mod_num, const char* name ) SUNVOX_FN_ATTR; + /// const char* sv_get_module_name( int slot, int mod_num ) ; /// - int sv_set_module_name(int slot, int mod_num, IntPtr name); + IntPtr sv_get_module_name(int slot, int mod_num); /// - /// const char* sv_get_module_type( int slot, int mod_num) SUNVOX_FN_ATTR; + /// int sv_set_module_name( int slot, int mod_num, const char* name ) ; /// - IntPtr sv_get_module_type(int slot, int mod_num); + int sv_set_module_name(int slot, int mod_num, IntPtr name); /// - /// uint32_t sv_get_module_xy(int slot, int mod_num) SUNVOX_FN_ATTR; + /// uint32_t sv_get_module_xy( int slot, int mod_num ) ; /// uint sv_get_module_xy(int slot, int mod_num); /// - /// int sv_set_module_xy(int slot, int mod_num, int x, int y) SUNVOX_FN_ATTR; + /// int sv_set_module_xy( int slot, int mod_num, int x, int y ) ; /// int sv_set_module_xy(int slot, int mod_num, int x, int y); /// - /// int sv_get_module_color( int slot, int mod_num) SUNVOX_FN_ATTR; + /// int sv_get_module_color( int slot, int mod_num ) ; /// int sv_get_module_color(int slot, int mod_num); /// - /// int sv_set_module_color(int slot, int mod_num, int color) SUNVOX_FN_ATTR; + /// int sv_set_module_color( int slot, int mod_num, int color ) ; /// int sv_set_module_color(int slot, int mod_num, int color); /// - /// uint32_t sv_get_module_finetune(int slot, int mod_num) SUNVOX_FN_ATTR; + /// uint32_t sv_get_module_finetune( int slot, int mod_num ) ; /// uint sv_get_module_finetune(int slot, int mod_num); /// - /// int sv_set_module_finetune(int slot, int mod_num, int finetune) SUNVOX_FN_ATTR; + /// int sv_set_module_finetune( int slot, int mod_num, int finetune ) ; /// int sv_set_module_finetune(int slot, int mod_num, int finetune); /// - /// int sv_set_module_relnote(int slot, int mod_num, int relative_note) SUNVOX_FN_ATTR; + /// int sv_set_module_relnote( int slot, int mod_num, int relative_note ) ; /// int sv_set_module_relnote(int slot, int mod_num, int relative_note); /// - /// uint32_t sv_get_module_scope2(int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read) - /// SUNVOX_FN_ATTR; + /// uint32_t sv_get_module_scope2( int slot, int mod_num, int channel, int16_t* dest_buf, uint32_t samples_to_read ) ; /// uint sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read); /// - /// int sv_module_curve(int slot, int mod_num, int curve_num, float* data, int len, int w) SUNVOX_FN_ATTR; + /// int sv_module_curve( int slot, int mod_num, int curve_num, float* data, int len, int w ) ; /// int sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w); /// - /// int sv_get_number_of_module_ctls(int slot, int mod_num) SUNVOX_FN_ATTR; + /// int sv_get_number_of_module_ctls( int slot, int mod_num ) ; /// int sv_get_number_of_module_ctls(int slot, int mod_num); /// - /// const char* sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// const char* sv_get_module_ctl_name( int slot, int mod_num, int ctl_num ) ; /// IntPtr sv_get_module_ctl_name(int slot, int mod_num, int ctl_num); /// - /// int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_value( int slot, int mod_num, int ctl_num, int scaled ) ; /// int sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled); /// - /// int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) SUNVOX_FN_ATTR; + /// int sv_set_module_ctl_value( int slot, int mod_num, int ctl_num, int val, int scaled ) ; /// int sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled); /// - /// int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_min( int slot, int mod_num, int ctl_num, int scaled ) ; /// int sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled); /// - /// int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_max( int slot, int mod_num, int ctl_num, int scaled ) ; /// int sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled); /// - /// int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_offset( int slot, int mod_num, int ctl_num ) ; /* Get display value offset */ /// int sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num); /// - /// int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_type( int slot, int mod_num, int ctl_num ) ; /* 0 - normal (scaled); 1 - selector (enum); */ /// int sv_get_module_ctl_type(int slot, int mod_num, int ctl_num); /// - /// int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) SUNVOX_FN_ATTR; + /// int sv_get_module_ctl_group( int slot, int mod_num, int ctl_num ) ; /// int sv_get_module_ctl_group(int slot, int mod_num, int ctl_num); /// - /// int sv_get_number_of_patterns(int slot) SUNVOX_FN_ATTR; + /// int sv_new_pattern( int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) ; /* USE LOCK/UNLOCK! */ /// - int sv_get_number_of_patterns(int slot); + int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name); /// - /// int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, const char* name ) - /// SUNVOX_FN_ATTR; + /// int sv_remove_pattern( int slot, int pat_num ) ; /* USE LOCK/UNLOCK! */ /// - int sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name); + int sv_remove_pattern(int slot, int pat_num); /// - /// int sv_remove_pattern(int slot, int pat_num) SUNVOX_FN_ATTR; + /// int sv_get_number_of_patterns( int slot ) ; /// - int sv_remove_pattern(int slot, int pat_num); + int sv_get_number_of_patterns(int slot); /// - /// int sv_find_pattern(int slot, const char* name ) SUNVOX_FN_ATTR; + /// int sv_find_pattern( int slot, const char* name ) ; /// int sv_find_pattern(int slot, IntPtr name); /// - /// int sv_get_pattern_x(int slot, int pat_num) SUNVOX_FN_ATTR; + /// int sv_get_pattern_x( int slot, int pat_num ) ; /// int sv_get_pattern_x(int slot, int pat_num); /// - /// int sv_get_pattern_y(int slot, int pat_num) SUNVOX_FN_ATTR; + /// int sv_get_pattern_y( int slot, int pat_num ) ; /// int sv_get_pattern_y(int slot, int pat_num); /// - /// int sv_set_pattern_xy(int slot, int pat_num, int x, int y) SUNVOX_FN_ATTR; + /// int sv_set_pattern_xy( int slot, int pat_num, int x, int y ) ; /* USE LOCK/UNLOCK! */ /// int sv_set_pattern_xy(int slot, int pat_num, int x, int y); /// - /// int sv_get_pattern_tracks(int slot, int pat_num) SUNVOX_FN_ATTR; + /// int sv_get_pattern_tracks( int slot, int pat_num ) ; /// int sv_get_pattern_tracks(int slot, int pat_num); /// - /// int sv_get_pattern_lines(int slot, int pat_num) SUNVOX_FN_ATTR; + /// int sv_get_pattern_lines( int slot, int pat_num ) ; /// int sv_get_pattern_lines(int slot, int pat_num); /// - /// int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) SUNVOX_FN_ATTR; + /// int sv_set_pattern_size( int slot, int pat_num, int tracks, int lines ) ; /* USE LOCK/UNLOCK! */ /// int sv_set_pattern_size(int slot, int pat_num, int tracks, int lines); /// - /// const char* sv_get_pattern_name( int slot, int pat_num) SUNVOX_FN_ATTR; + /// const char* sv_get_pattern_name( int slot, int pat_num ) ; /// IntPtr sv_get_pattern_name(int slot, int pat_num); /// - /// int sv_set_pattern_name( int slot, int pat_num, const char* name ) SUNVOX_FN_ATTR; + /// int sv_set_pattern_name( int slot, int pat_num, const char* name ) ; /* USE LOCK/UNLOCK! */ /// int sv_set_pattern_name(int slot, int pat_num, IntPtr name); /// - /// sunvox_note* sv_get_pattern_data(int slot, int pat_num) SUNVOX_FN_ATTR; + /// sunvox_note* sv_get_pattern_data( int slot, int pat_num ) ; /// IntPtr sv_get_pattern_data(int slot, int pat_num); /// - /// int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) - /// SUNVOX_FN_ATTR; + /// int sv_set_pattern_event( int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy ) ; /// - int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, - int xxyy); + int sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); /// - /// int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) SUNVOX_FN_ATTR; + /// int sv_get_pattern_event( int slot, int pat_num, int track, int line, int column ) ; /// int sv_get_pattern_event(int slot, int pat_num, int track, int line, int column); /// - /// int sv_pattern_mute(int slot, int pat_num, int mute) SUNVOX_FN_ATTR; + /// int sv_pattern_mute( int slot, int pat_num, int mute ) ; /* USE LOCK/UNLOCK! */ /// int sv_pattern_mute(int slot, int pat_num, int mute); /// - /// uint32_t sv_get_ticks(void) SUNVOX_FN_ATTR; + /// uint32_t sv_get_ticks( void ) ; /// uint sv_get_ticks(); /// - /// uint32_t sv_get_ticks_per_second(void) SUNVOX_FN_ATTR; + /// uint32_t sv_get_ticks_per_second( void ) ; /// uint sv_get_ticks_per_second(); /// - /// const char* sv_get_log(int size) SUNVOX_FN_ATTR; + /// const char* sv_get_log( int size ) ; /// IntPtr sv_get_log(int size); } diff --git a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs index 04ea987..8c65c5e 100644 --- a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs +++ b/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs @@ -9,253 +9,253 @@ public sealed partial class NativeProxy : ISunVoxLibC { #region delegate definitions - private delegate IntPtr ReturnsIntPtrTakesInt(int arg1); + private delegate IntPtr ReturnsIntPtrTakesint(int arg1); - private delegate IntPtr ReturnsIntPtrTakesIntInt(int arg1, int arg2); + private delegate IntPtr ReturnsIntPtrTakesintint(int arg1, int arg2); - private delegate IntPtr ReturnsIntPtrTakesIntIntInt(int arg1, int arg2, int arg3); + private delegate IntPtr ReturnsIntPtrTakesintintint(int arg1, int arg2, int arg3); - private delegate int ReturnsIntTakesInt(int arg1); + private delegate int ReturnsintTakesint(int arg1); - private delegate int ReturnsIntTakesIntInt(int arg1, int arg2); + private delegate int ReturnsintTakesintint(int arg1, int arg2); - private delegate int ReturnsIntTakesIntIntInt(int arg1, int arg2, int arg3); + private delegate int ReturnsintTakesintintint(int arg1, int arg2, int arg3); - private delegate int ReturnsIntTakesIntIntIntInt(int arg1, int arg2, int arg3, int arg4); + private delegate int ReturnsintTakesintintintint(int arg1, int arg2, int arg3, int arg4); - private delegate int ReturnsIntTakesIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5); + private delegate int ReturnsintTakesintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5); - private delegate int ReturnsIntTakesIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); + private delegate int ReturnsintTakesintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); - private delegate int ReturnsIntTakesIntIntIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); + private delegate int ReturnsintTakesintintintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); - private delegate int ReturnsIntTakesIntIntIntIntIntIntIntIntPtr(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, IntPtr arg8); + private delegate int ReturnsintTakesintintintintintintintIntPtr(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, IntPtr arg8); - private delegate int ReturnsIntTakesIntIntIntIntPtrInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5); + private delegate int ReturnsintTakesintintintIntPtrint(int arg1, int arg2, int arg3, IntPtr arg4, int arg5); - private delegate int ReturnsIntTakesIntIntIntIntPtrIntInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5, int arg6); + private delegate int ReturnsintTakesintintintIntPtrintint(int arg1, int arg2, int arg3, IntPtr arg4, int arg5, int arg6); - private delegate int ReturnsIntTakesIntIntIntPtr(int arg1, int arg2, IntPtr arg3); + private delegate int ReturnsintTakesintintIntPtr(int arg1, int arg2, IntPtr arg3); - private delegate int ReturnsIntTakesIntIntIntPtrInt(int arg1, int arg2, IntPtr arg3, int arg4); + private delegate int ReturnsintTakesintintIntPtrint(int arg1, int arg2, IntPtr arg3, int arg4); - private delegate int ReturnsIntTakesIntIntIntPtrUint(int arg1, int arg2, IntPtr arg3, uint arg4); + private delegate int ReturnsintTakesintintIntPtruint(int arg1, int arg2, IntPtr arg3, uint arg4); - private delegate int ReturnsIntTakesIntIntIntPtrUintInt(int arg1, int arg2, IntPtr arg3, uint arg4, int arg5); + private delegate int ReturnsintTakesintintIntPtruintint(int arg1, int arg2, IntPtr arg3, uint arg4, int arg5); - private delegate int ReturnsIntTakesIntIntPtr(int arg1, IntPtr arg2); + private delegate int ReturnsintTakesintIntPtr(int arg1, IntPtr arg2); - private delegate int ReturnsIntTakesIntIntPtrIntIntInt(int arg1, IntPtr arg2, int arg3, int arg4, int arg5); + private delegate int ReturnsintTakesintIntPtrintintint(int arg1, IntPtr arg2, int arg3, int arg4, int arg5); - private delegate int ReturnsIntTakesIntIntPtrIntPtrIntIntInt(int arg1, IntPtr arg2, IntPtr arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesintIntPtrIntPtrintintint(int arg1, IntPtr arg2, IntPtr arg3, int arg4, int arg5, int arg6); - private delegate int ReturnsIntTakesIntIntPtrUint(int arg1, IntPtr arg2, uint arg3); + private delegate int ReturnsintTakesintIntPtruint(int arg1, IntPtr arg2, uint arg3); - private delegate int ReturnsIntTakesIntIntPtrUintIntIntInt(int arg1, IntPtr arg2, uint arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesintIntPtruintintintint(int arg1, IntPtr arg2, uint arg3, int arg4, int arg5, int arg6); - private delegate int ReturnsIntTakesIntPtrIntIntUint(IntPtr arg1, int arg2, int arg3, uint arg4); + private delegate int ReturnsintTakesIntPtrintintuint(IntPtr arg1, int arg2, int arg3, uint arg4); - private delegate int ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr(IntPtr arg1, int arg2, int arg3, uint arg4, int arg5, int arg6, IntPtr arg7); + private delegate int ReturnsintTakesIntPtrintintuintintintIntPtr(IntPtr arg1, int arg2, int arg3, uint arg4, int arg5, int arg6, IntPtr arg7); - private delegate int ReturnsIntTakesVoid(); + private delegate int ReturnsintTakesVoid(); - private delegate uint ReturnsUintTakesInt(int arg1); + private delegate uint ReturnsuintTakesint(int arg1); - private delegate uint ReturnsUintTakesIntInt(int arg1, int arg2); + private delegate uint ReturnsuintTakesintint(int arg1, int arg2); - private delegate uint ReturnsUintTakesIntIntIntIntPtrUint(int arg1, int arg2, int arg3, IntPtr arg4, uint arg5); + private delegate uint ReturnsuintTakesintintintIntPtruint(int arg1, int arg2, int arg3, IntPtr arg4, uint arg5); - private delegate uint ReturnsUintTakesVoid(); + private delegate uint ReturnsuintTakesVoid(); #endregion delegate definitions #region delegates - private ReturnsIntTakesIntPtrIntIntUint? sv_audio_callback; + private ReturnsintTakesIntPtrintintuint? sv_audio_callback; - private ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr? sv_audio_callback2; + private ReturnsintTakesIntPtrintintuintintintIntPtr? sv_audio_callback2; - private ReturnsIntTakesInt? sv_close_slot; + private ReturnsintTakesint? sv_close_slot; - private ReturnsIntTakesIntIntInt? sv_connect_module; + private ReturnsintTakesintintint? sv_connect_module; - private ReturnsIntTakesVoid? sv_deinit; + private ReturnsintTakesVoid? sv_deinit; - private ReturnsIntTakesIntIntInt? sv_disconnect_module; + private ReturnsintTakesintintint? sv_disconnect_module; - private ReturnsIntTakesInt? sv_end_of_song; + private ReturnsintTakesint? sv_end_of_song; - private ReturnsIntTakesIntIntPtr? sv_find_module; + private ReturnsintTakesintIntPtr? sv_find_module; - private ReturnsIntTakesIntIntPtr? sv_find_pattern; + private ReturnsintTakesintIntPtr? sv_find_pattern; - private ReturnsIntTakesInt? sv_get_autostop; + private ReturnsintTakesint? sv_get_autostop; - private ReturnsIntTakesInt? sv_get_current_line; + private ReturnsintTakesint? sv_get_current_line; - private ReturnsIntTakesInt? sv_get_current_line2; + private ReturnsintTakesint? sv_get_current_line2; - private ReturnsIntTakesIntInt? sv_get_current_signal_level; + private ReturnsintTakesintint? sv_get_current_signal_level; - private ReturnsIntPtrTakesInt? sv_get_log; + private ReturnsIntPtrTakesint? sv_get_log; - private ReturnsIntTakesIntInt? sv_get_module_color; + private ReturnsintTakesintint? sv_get_module_color; - private ReturnsIntTakesIntIntInt? sv_get_module_ctl_group; + private ReturnsintTakesintintint? sv_get_module_ctl_group; - private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_max; + private ReturnsintTakesintintintint? sv_get_module_ctl_max; - private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_min; + private ReturnsintTakesintintintint? sv_get_module_ctl_min; - private ReturnsIntPtrTakesIntIntInt? sv_get_module_ctl_name; + private ReturnsIntPtrTakesintintint? sv_get_module_ctl_name; - private ReturnsIntTakesIntIntInt? sv_get_module_ctl_offset; + private ReturnsintTakesintintint? sv_get_module_ctl_offset; - private ReturnsIntTakesIntIntInt? sv_get_module_ctl_type; + private ReturnsintTakesintintint? sv_get_module_ctl_type; - private ReturnsIntTakesIntIntIntInt? sv_get_module_ctl_value; + private ReturnsintTakesintintintint? sv_get_module_ctl_value; - private ReturnsUintTakesIntInt? sv_get_module_finetune; + private ReturnsuintTakesintint? sv_get_module_finetune; - private ReturnsUintTakesIntInt? sv_get_module_flags; + private ReturnsuintTakesintint? sv_get_module_flags; - private ReturnsIntPtrTakesIntInt? sv_get_module_inputs; + private ReturnsIntPtrTakesintint? sv_get_module_inputs; - private ReturnsIntPtrTakesIntInt? sv_get_module_name; + private ReturnsIntPtrTakesintint? sv_get_module_name; - private ReturnsIntPtrTakesIntInt? sv_get_module_outputs; + private ReturnsIntPtrTakesintint? sv_get_module_outputs; - private ReturnsUintTakesIntIntIntIntPtrUint? sv_get_module_scope2; + private ReturnsuintTakesintintintIntPtruint? sv_get_module_scope2; - private ReturnsIntPtrTakesIntInt? sv_get_module_type; + private ReturnsIntPtrTakesintint? sv_get_module_type; - private ReturnsUintTakesIntInt? sv_get_module_xy; + private ReturnsuintTakesintint? sv_get_module_xy; - private ReturnsIntTakesIntInt? sv_get_number_of_module_ctls; + private ReturnsintTakesintint? sv_get_number_of_module_ctls; - private ReturnsIntTakesInt? sv_get_number_of_modules; + private ReturnsintTakesint? sv_get_number_of_modules; - private ReturnsIntTakesInt? sv_get_number_of_patterns; + private ReturnsintTakesint? sv_get_number_of_patterns; - private ReturnsIntPtrTakesIntInt? sv_get_pattern_data; + private ReturnsIntPtrTakesintint? sv_get_pattern_data; - private ReturnsIntTakesIntIntIntIntInt? sv_get_pattern_event; + private ReturnsintTakesintintintintint? sv_get_pattern_event; - private ReturnsIntTakesIntInt? sv_get_pattern_lines; + private ReturnsintTakesintint? sv_get_pattern_lines; - private ReturnsIntPtrTakesIntInt? sv_get_pattern_name; + private ReturnsIntPtrTakesintint? sv_get_pattern_name; - private ReturnsIntTakesIntInt? sv_get_pattern_tracks; + private ReturnsintTakesintint? sv_get_pattern_tracks; - private ReturnsIntTakesIntInt? sv_get_pattern_x; + private ReturnsintTakesintint? sv_get_pattern_x; - private ReturnsIntTakesIntInt? sv_get_pattern_y; + private ReturnsintTakesintint? sv_get_pattern_y; - private ReturnsIntTakesVoid? sv_get_sample_rate; + private ReturnsintTakesVoid? sv_get_sample_rate; - private ReturnsIntTakesInt? sv_get_song_bpm; + private ReturnsintTakesint? sv_get_song_bpm; - private ReturnsUintTakesInt? sv_get_song_length_frames; + private ReturnsuintTakesint? sv_get_song_length_frames; - private ReturnsUintTakesInt? sv_get_song_length_lines; + private ReturnsuintTakesint? sv_get_song_length_lines; - private ReturnsIntPtrTakesInt? sv_get_song_name; + private ReturnsIntPtrTakesint? sv_get_song_name; - private ReturnsIntTakesInt? sv_get_song_tpl; + private ReturnsintTakesint? sv_get_song_tpl; - private ReturnsUintTakesVoid? sv_get_ticks; + private ReturnsuintTakesVoid? sv_get_ticks; - private ReturnsUintTakesVoid? sv_get_ticks_per_second; + private ReturnsuintTakesVoid? sv_get_ticks_per_second; - private ReturnsIntTakesIntIntIntIntPtrInt? sv_get_time_map; + private ReturnsintTakesintintintIntPtrint? sv_get_time_map; - private ReturnsIntTakesIntPtrIntIntUint? sv_init; + private ReturnsintTakesIntPtrintintuint? sv_init; - private ReturnsIntTakesIntIntPtr? sv_load; + private ReturnsintTakesintIntPtr? sv_load; - private ReturnsIntTakesIntIntPtrUint? sv_load_from_memory; + private ReturnsintTakesintIntPtruint? sv_load_from_memory; - private ReturnsIntTakesIntIntPtrIntIntInt? sv_load_module; + private ReturnsintTakesintIntPtrintintint? sv_load_module; - private ReturnsIntTakesIntIntPtrUintIntIntInt? sv_load_module_from_memory; + private ReturnsintTakesintIntPtruintintintint? sv_load_module_from_memory; - private ReturnsIntTakesInt? sv_lock_slot; + private ReturnsintTakesint? sv_lock_slot; - private ReturnsIntTakesIntIntIntPtr? sv_metamodule_load; + private ReturnsintTakesintintIntPtr? sv_metamodule_load; - private ReturnsIntTakesIntIntIntPtrUint? sv_metamodule_load_from_memory; + private ReturnsintTakesintintIntPtruint? sv_metamodule_load_from_memory; - private ReturnsIntTakesIntIntIntIntPtrIntInt? sv_module_curve; + private ReturnsintTakesintintintIntPtrintint? sv_module_curve; - private ReturnsIntTakesIntIntPtrIntPtrIntIntInt? sv_new_module; + private ReturnsintTakesintIntPtrIntPtrintintint? sv_new_module; - private ReturnsIntTakesIntIntIntIntIntIntIntIntPtr? sv_new_pattern; + private ReturnsintTakesintintintintintintintIntPtr? sv_new_pattern; - private ReturnsIntTakesInt? sv_open_slot; + private ReturnsintTakesint? sv_open_slot; - private ReturnsIntTakesIntIntInt? sv_pattern_mute; + private ReturnsintTakesintintint? sv_pattern_mute; - private ReturnsIntTakesInt? sv_pause; + private ReturnsintTakesint? sv_pause; - private ReturnsIntTakesInt? sv_play; + private ReturnsintTakesint? sv_play; - private ReturnsIntTakesInt? sv_play_from_beginning; + private ReturnsintTakesint? sv_play_from_beginning; - private ReturnsIntTakesIntInt? sv_remove_module; + private ReturnsintTakesintint? sv_remove_module; - private ReturnsIntTakesIntInt? sv_remove_pattern; + private ReturnsintTakesintint? sv_remove_pattern; - private ReturnsIntTakesInt? sv_resume; + private ReturnsintTakesint? sv_resume; - private ReturnsIntTakesIntInt? sv_rewind; + private ReturnsintTakesintint? sv_rewind; - private ReturnsIntTakesIntIntIntPtrInt? sv_sampler_load; + private ReturnsintTakesintintIntPtrint? sv_sampler_load; - private ReturnsIntTakesIntIntIntPtrUintInt? sv_sampler_load_from_memory; + private ReturnsintTakesintintIntPtruintint? sv_sampler_load_from_memory; - private ReturnsIntTakesIntIntPtr? sv_save; + private ReturnsintTakesintIntPtr? sv_save; - private ReturnsIntTakesIntIntIntIntIntIntInt? sv_send_event; + private ReturnsintTakesintintintintintintint? sv_send_event; - private ReturnsIntTakesIntInt? sv_set_autostop; + private ReturnsintTakesintint? sv_set_autostop; - private ReturnsIntTakesIntIntInt? sv_set_event_t; + private ReturnsintTakesintintint? sv_set_event_t; - private ReturnsIntTakesIntIntInt? sv_set_module_color; + private ReturnsintTakesintintint? sv_set_module_color; - private ReturnsIntTakesIntIntIntIntInt? sv_set_module_ctl_value; + private ReturnsintTakesintintintintint? sv_set_module_ctl_value; - private ReturnsIntTakesIntIntInt? sv_set_module_finetune; + private ReturnsintTakesintintint? sv_set_module_finetune; - private ReturnsIntTakesIntIntIntPtr? sv_set_module_name; + private ReturnsintTakesintintIntPtr? sv_set_module_name; - private ReturnsIntTakesIntIntInt? sv_set_module_relnote; + private ReturnsintTakesintintint? sv_set_module_relnote; - private ReturnsIntTakesIntIntIntInt? sv_set_module_xy; + private ReturnsintTakesintintintint? sv_set_module_xy; - private ReturnsIntTakesIntIntIntIntIntIntIntIntInt? sv_set_pattern_event; + private ReturnsintTakesintintintintintintintintint? sv_set_pattern_event; - private ReturnsIntTakesIntIntIntPtr? sv_set_pattern_name; + private ReturnsintTakesintintIntPtr? sv_set_pattern_name; - private ReturnsIntTakesIntIntIntInt? sv_set_pattern_size; + private ReturnsintTakesintintintint? sv_set_pattern_size; - private ReturnsIntTakesIntIntIntInt? sv_set_pattern_xy; + private ReturnsintTakesintintintint? sv_set_pattern_xy; - private ReturnsIntTakesIntIntPtr? sv_set_song_name; + private ReturnsintTakesintIntPtr? sv_set_song_name; - private ReturnsIntTakesInt? sv_stop; + private ReturnsintTakesint? sv_stop; - private ReturnsIntTakesInt? sv_sync_resume; + private ReturnsintTakesint? sv_sync_resume; - private ReturnsIntTakesInt? sv_unlock_slot; + private ReturnsintTakesint? sv_unlock_slot; - private ReturnsIntTakesVoid? sv_update_input; + private ReturnsintTakesVoid? sv_update_input; - private ReturnsIntTakesIntInt? sv_volume; + private ReturnsintTakesintint? sv_volume; - private ReturnsIntTakesIntIntIntPtr? sv_vplayer_load; + private ReturnsintTakesintintIntPtr? sv_vplayer_load; - private ReturnsIntTakesIntIntIntPtrUint? sv_vplayer_load_from_memory; + private ReturnsintTakesintintIntPtruint? sv_vplayer_load_from_memory; #endregion delegates @@ -399,9 +399,9 @@ public sealed partial class NativeProxy : ISunVoxLibC int ISunVoxLibC.sv_rewind(int slot, int line_num) => sv_rewind?.Invoke(slot, line_num) ?? throw GetNoDelegateException(); - int ISunVoxLibC.sv_sampler_load(int slot, int sampler_module, IntPtr file_name, int sample_slot) => sv_sampler_load?.Invoke(slot, sampler_module, file_name, sample_slot) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_sampler_load(int slot, int mod_num, IntPtr file_name, int sample_slot) => sv_sampler_load?.Invoke(slot, mod_num, file_name, sample_slot) ?? throw GetNoDelegateException(); - int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int sampler_module, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory?.Invoke(slot, sampler_module, data, data_size, sample_slot) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory?.Invoke(slot, mod_num, data, data_size, sample_slot) ?? throw GetNoDelegateException(); int ISunVoxLibC.sv_save(int slot, IntPtr name) => sv_save?.Invoke(slot, name) ?? throw GetNoDelegateException(); @@ -451,99 +451,99 @@ public sealed partial class NativeProxy : ISunVoxLibC private void LoadInternal() { - sv_audio_callback = (ReturnsIntTakesIntPtrIntIntUint)_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsIntTakesIntPtrIntIntUint)); - sv_audio_callback2 = (ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsIntTakesIntPtrIntIntUintIntIntIntPtr)); - sv_close_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsIntTakesInt)); - sv_connect_module = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsIntTakesIntIntInt)); - sv_deinit = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_deinit", typeof(ReturnsIntTakesVoid)); - sv_disconnect_module = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsIntTakesIntIntInt)); - sv_end_of_song = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsIntTakesInt)); - sv_find_module = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_find_module", typeof(ReturnsIntTakesIntIntPtr)); - sv_find_pattern = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsIntTakesIntIntPtr)); - sv_get_autostop = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsIntTakesInt)); - sv_get_current_line = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsIntTakesInt)); - sv_get_current_line2 = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsIntTakesInt)); - sv_get_current_signal_level = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsIntTakesIntInt)); - sv_get_log = (ReturnsIntPtrTakesInt)_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesInt)); - sv_get_module_color = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsIntTakesIntInt)); - sv_get_module_ctl_group = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsIntTakesIntIntInt)); - sv_get_module_ctl_max = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsIntTakesIntIntIntInt)); - sv_get_module_ctl_min = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsIntTakesIntIntIntInt)); - sv_get_module_ctl_name = (ReturnsIntPtrTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesIntIntInt)); - sv_get_module_ctl_offset = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsIntTakesIntIntInt)); - sv_get_module_ctl_type = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsIntTakesIntIntInt)); - sv_get_module_ctl_value = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsIntTakesIntIntIntInt)); - sv_get_module_finetune = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsUintTakesIntInt)); - sv_get_module_flags = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsUintTakesIntInt)); - sv_get_module_inputs = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_module_name = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_module_outputs = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_module_scope2 = (ReturnsUintTakesIntIntIntIntPtrUint)_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsUintTakesIntIntIntIntPtrUint)); - sv_get_module_type = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_module_xy = (ReturnsUintTakesIntInt)_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsUintTakesIntInt)); - sv_get_number_of_module_ctls = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsIntTakesIntInt)); - sv_get_number_of_modules = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsIntTakesInt)); - sv_get_number_of_patterns = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsIntTakesInt)); - sv_get_pattern_data = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_pattern_event = (ReturnsIntTakesIntIntIntIntInt)_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsIntTakesIntIntIntIntInt)); - sv_get_pattern_lines = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsIntTakesIntInt)); - sv_get_pattern_name = (ReturnsIntPtrTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesIntInt)); - sv_get_pattern_tracks = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsIntTakesIntInt)); - sv_get_pattern_x = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsIntTakesIntInt)); - sv_get_pattern_y = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsIntTakesIntInt)); - sv_get_sample_rate = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsIntTakesVoid)); - sv_get_song_bpm = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsIntTakesInt)); - sv_get_song_length_frames = (ReturnsUintTakesInt)_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsUintTakesInt)); - sv_get_song_length_lines = (ReturnsUintTakesInt)_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsUintTakesInt)); - sv_get_song_name = (ReturnsIntPtrTakesInt)_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesInt)); - sv_get_song_tpl = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsIntTakesInt)); - sv_get_ticks = (ReturnsUintTakesVoid)_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsUintTakesVoid)); - sv_get_ticks_per_second = (ReturnsUintTakesVoid)_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsUintTakesVoid)); - sv_get_time_map = (ReturnsIntTakesIntIntIntIntPtrInt)_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsIntTakesIntIntIntIntPtrInt)); - sv_init = (ReturnsIntTakesIntPtrIntIntUint)_handler.GetFunctionByName("sv_init", typeof(ReturnsIntTakesIntPtrIntIntUint)); - sv_load = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_load", typeof(ReturnsIntTakesIntIntPtr)); - sv_load_from_memory = (ReturnsIntTakesIntIntPtrUint)_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsIntTakesIntIntPtrUint)); - sv_load_module = (ReturnsIntTakesIntIntPtrIntIntInt)_handler.GetFunctionByName("sv_load_module", typeof(ReturnsIntTakesIntIntPtrIntIntInt)); - sv_load_module_from_memory = (ReturnsIntTakesIntIntPtrUintIntIntInt)_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsIntTakesIntIntPtrUintIntIntInt)); - sv_lock_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsIntTakesInt)); - sv_metamodule_load = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsIntTakesIntIntIntPtr)); - sv_metamodule_load_from_memory = (ReturnsIntTakesIntIntIntPtrUint)_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUint)); - sv_module_curve = (ReturnsIntTakesIntIntIntIntPtrIntInt)_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsIntTakesIntIntIntIntPtrIntInt)); - sv_new_module = (ReturnsIntTakesIntIntPtrIntPtrIntIntInt)_handler.GetFunctionByName("sv_new_module", typeof(ReturnsIntTakesIntIntPtrIntPtrIntIntInt)); - sv_new_pattern = (ReturnsIntTakesIntIntIntIntIntIntIntIntPtr)_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsIntTakesIntIntIntIntIntIntIntIntPtr)); - sv_open_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsIntTakesInt)); - sv_pattern_mute = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsIntTakesIntIntInt)); - sv_pause = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_pause", typeof(ReturnsIntTakesInt)); - sv_play = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_play", typeof(ReturnsIntTakesInt)); - sv_play_from_beginning = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsIntTakesInt)); - sv_remove_module = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsIntTakesIntInt)); - sv_remove_pattern = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsIntTakesIntInt)); - sv_resume = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_resume", typeof(ReturnsIntTakesInt)); - sv_rewind = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_rewind", typeof(ReturnsIntTakesIntInt)); - sv_sampler_load = (ReturnsIntTakesIntIntIntPtrInt)_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsIntTakesIntIntIntPtrInt)); - sv_sampler_load_from_memory = (ReturnsIntTakesIntIntIntPtrUintInt)_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUintInt)); - sv_save = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_save", typeof(ReturnsIntTakesIntIntPtr)); - sv_send_event = (ReturnsIntTakesIntIntIntIntIntIntInt)_handler.GetFunctionByName("sv_send_event", typeof(ReturnsIntTakesIntIntIntIntIntIntInt)); - sv_set_autostop = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsIntTakesIntInt)); - sv_set_event_t = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsIntTakesIntIntInt)); - sv_set_module_color = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsIntTakesIntIntInt)); - sv_set_module_ctl_value = (ReturnsIntTakesIntIntIntIntInt)_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsIntTakesIntIntIntIntInt)); - sv_set_module_finetune = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsIntTakesIntIntInt)); - sv_set_module_name = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsIntTakesIntIntIntPtr)); - sv_set_module_relnote = (ReturnsIntTakesIntIntInt)_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsIntTakesIntIntInt)); - sv_set_module_xy = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsIntTakesIntIntIntInt)); - sv_set_pattern_event = (ReturnsIntTakesIntIntIntIntIntIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsIntTakesIntIntIntIntIntIntIntIntInt)); - sv_set_pattern_name = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsIntTakesIntIntIntPtr)); - sv_set_pattern_size = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsIntTakesIntIntIntInt)); - sv_set_pattern_xy = (ReturnsIntTakesIntIntIntInt)_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsIntTakesIntIntIntInt)); - sv_set_song_name = (ReturnsIntTakesIntIntPtr)_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsIntTakesIntIntPtr)); - sv_stop = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_stop", typeof(ReturnsIntTakesInt)); - sv_sync_resume = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsIntTakesInt)); - sv_unlock_slot = (ReturnsIntTakesInt)_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsIntTakesInt)); - sv_update_input = (ReturnsIntTakesVoid)_handler.GetFunctionByName("sv_update_input", typeof(ReturnsIntTakesVoid)); - sv_volume = (ReturnsIntTakesIntInt)_handler.GetFunctionByName("sv_volume", typeof(ReturnsIntTakesIntInt)); - sv_vplayer_load = (ReturnsIntTakesIntIntIntPtr)_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsIntTakesIntIntIntPtr)); - sv_vplayer_load_from_memory = (ReturnsIntTakesIntIntIntPtrUint)_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsIntTakesIntIntIntPtrUint)); + sv_audio_callback = (ReturnsintTakesIntPtrintintuint)_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsintTakesIntPtrintintuint)); + sv_audio_callback2 = (ReturnsintTakesIntPtrintintuintintintIntPtr)_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsintTakesIntPtrintintuintintintIntPtr)); + sv_close_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsintTakesint)); + sv_connect_module = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsintTakesintintint)); + sv_deinit = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_deinit", typeof(ReturnsintTakesVoid)); + sv_disconnect_module = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsintTakesintintint)); + sv_end_of_song = (ReturnsintTakesint)_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsintTakesint)); + sv_find_module = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_module", typeof(ReturnsintTakesintIntPtr)); + sv_find_pattern = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsintTakesintIntPtr)); + sv_get_autostop = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsintTakesint)); + sv_get_current_line = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsintTakesint)); + sv_get_current_line2 = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsintTakesint)); + sv_get_current_signal_level = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsintTakesintint)); + sv_get_log = (ReturnsIntPtrTakesint)_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesint)); + sv_get_module_color = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsintTakesintint)); + sv_get_module_ctl_group = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsintTakesintintint)); + sv_get_module_ctl_max = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsintTakesintintintint)); + sv_get_module_ctl_min = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsintTakesintintintint)); + sv_get_module_ctl_name = (ReturnsIntPtrTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesintintint)); + sv_get_module_ctl_offset = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsintTakesintintint)); + sv_get_module_ctl_type = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsintTakesintintint)); + sv_get_module_ctl_value = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsintTakesintintintint)); + sv_get_module_finetune = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsuintTakesintint)); + sv_get_module_flags = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsuintTakesintint)); + sv_get_module_inputs = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesintint)); + sv_get_module_name = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesintint)); + sv_get_module_outputs = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesintint)); + sv_get_module_scope2 = (ReturnsuintTakesintintintIntPtruint)_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsuintTakesintintintIntPtruint)); + sv_get_module_type = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesintint)); + sv_get_module_xy = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsuintTakesintint)); + sv_get_number_of_module_ctls = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsintTakesintint)); + sv_get_number_of_modules = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsintTakesint)); + sv_get_number_of_patterns = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsintTakesint)); + sv_get_pattern_data = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesintint)); + sv_get_pattern_event = (ReturnsintTakesintintintintint)_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsintTakesintintintintint)); + sv_get_pattern_lines = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsintTakesintint)); + sv_get_pattern_name = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesintint)); + sv_get_pattern_tracks = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsintTakesintint)); + sv_get_pattern_x = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsintTakesintint)); + sv_get_pattern_y = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsintTakesintint)); + sv_get_sample_rate = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsintTakesVoid)); + sv_get_song_bpm = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsintTakesint)); + sv_get_song_length_frames = (ReturnsuintTakesint)_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsuintTakesint)); + sv_get_song_length_lines = (ReturnsuintTakesint)_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsuintTakesint)); + sv_get_song_name = (ReturnsIntPtrTakesint)_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesint)); + sv_get_song_tpl = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsintTakesint)); + sv_get_ticks = (ReturnsuintTakesVoid)_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsuintTakesVoid)); + sv_get_ticks_per_second = (ReturnsuintTakesVoid)_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsuintTakesVoid)); + sv_get_time_map = (ReturnsintTakesintintintIntPtrint)_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsintTakesintintintIntPtrint)); + sv_init = (ReturnsintTakesIntPtrintintuint)_handler.GetFunctionByName("sv_init", typeof(ReturnsintTakesIntPtrintintuint)); + sv_load = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_load", typeof(ReturnsintTakesintIntPtr)); + sv_load_from_memory = (ReturnsintTakesintIntPtruint)_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsintTakesintIntPtruint)); + sv_load_module = (ReturnsintTakesintIntPtrintintint)_handler.GetFunctionByName("sv_load_module", typeof(ReturnsintTakesintIntPtrintintint)); + sv_load_module_from_memory = (ReturnsintTakesintIntPtruintintintint)_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsintTakesintIntPtruintintintint)); + sv_lock_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsintTakesint)); + sv_metamodule_load = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsintTakesintintIntPtr)); + sv_metamodule_load_from_memory = (ReturnsintTakesintintIntPtruint)_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsintTakesintintIntPtruint)); + sv_module_curve = (ReturnsintTakesintintintIntPtrintint)_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsintTakesintintintIntPtrintint)); + sv_new_module = (ReturnsintTakesintIntPtrIntPtrintintint)_handler.GetFunctionByName("sv_new_module", typeof(ReturnsintTakesintIntPtrIntPtrintintint)); + sv_new_pattern = (ReturnsintTakesintintintintintintintIntPtr)_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsintTakesintintintintintintintIntPtr)); + sv_open_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsintTakesint)); + sv_pattern_mute = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsintTakesintintint)); + sv_pause = (ReturnsintTakesint)_handler.GetFunctionByName("sv_pause", typeof(ReturnsintTakesint)); + sv_play = (ReturnsintTakesint)_handler.GetFunctionByName("sv_play", typeof(ReturnsintTakesint)); + sv_play_from_beginning = (ReturnsintTakesint)_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsintTakesint)); + sv_remove_module = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsintTakesintint)); + sv_remove_pattern = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsintTakesintint)); + sv_resume = (ReturnsintTakesint)_handler.GetFunctionByName("sv_resume", typeof(ReturnsintTakesint)); + sv_rewind = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_rewind", typeof(ReturnsintTakesintint)); + sv_sampler_load = (ReturnsintTakesintintIntPtrint)_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsintTakesintintIntPtrint)); + sv_sampler_load_from_memory = (ReturnsintTakesintintIntPtruintint)_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsintTakesintintIntPtruintint)); + sv_save = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_save", typeof(ReturnsintTakesintIntPtr)); + sv_send_event = (ReturnsintTakesintintintintintintint)_handler.GetFunctionByName("sv_send_event", typeof(ReturnsintTakesintintintintintintint)); + sv_set_autostop = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsintTakesintint)); + sv_set_event_t = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsintTakesintintint)); + sv_set_module_color = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsintTakesintintint)); + sv_set_module_ctl_value = (ReturnsintTakesintintintintint)_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsintTakesintintintintint)); + sv_set_module_finetune = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsintTakesintintint)); + sv_set_module_name = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsintTakesintintIntPtr)); + sv_set_module_relnote = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsintTakesintintint)); + sv_set_module_xy = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsintTakesintintintint)); + sv_set_pattern_event = (ReturnsintTakesintintintintintintintintint)_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsintTakesintintintintintintintintint)); + sv_set_pattern_name = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsintTakesintintIntPtr)); + sv_set_pattern_size = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsintTakesintintintint)); + sv_set_pattern_xy = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsintTakesintintintint)); + sv_set_song_name = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsintTakesintIntPtr)); + sv_stop = (ReturnsintTakesint)_handler.GetFunctionByName("sv_stop", typeof(ReturnsintTakesint)); + sv_sync_resume = (ReturnsintTakesint)_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsintTakesint)); + sv_unlock_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsintTakesint)); + sv_update_input = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_update_input", typeof(ReturnsintTakesVoid)); + sv_volume = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_volume", typeof(ReturnsintTakesintint)); + sv_vplayer_load = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsintTakesintintIntPtr)); + sv_vplayer_load_from_memory = (ReturnsintTakesintintIntPtruint)_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsintTakesintintIntPtruint)); } private void UnloadInternal() diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index eeb99c1..3eb3e6e 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -79,21 +79,20 @@ public void Unload() { var handlerIsLibraryLoader = _handler.IsLibraryLoaded; - // nothing to unload - if (!IsLoaded && !handlerIsLibraryLoader) + switch (IsLoaded) { - return; - } - - // sunvox might need to be unloaded - if (IsLoaded && handlerIsLibraryLoader) - { - if (sv_deinit == null) - { - throw new InvalidOperationException($"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); - } - - sv_deinit.Invoke(); + // nothing to unload + case false when !handlerIsLibraryLoader: + return; + // sunvox might need to be unloaded + case true when handlerIsLibraryLoader: + if (sv_deinit == null) + { + throw new InvalidOperationException($"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); + } + + sv_deinit.Invoke(); + break; } // unload delegates if applies diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index 0bbbcf1..deb0107 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -105,6 +105,7 @@ public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerI /// public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) { + // memory managed by SunVox var ptr = _lib.sv_get_module_ctl_name(slotId, moduleId, controllerId); return Marshal.PtrToStringAnsi(ptr); } @@ -158,20 +159,15 @@ public int[] GetModuleInputs(int slotId, int moduleId) if (!moduleFlags.Exists || inputCount == 0) return Array.Empty(); + // memory managed by SunVox var ptr = _lib.sv_get_module_inputs(slotId, moduleId); - try - { - return Helper.CopyIntArraySkipNegativeOnes(ptr, inputCount); - } - finally - { - Marshal.FreeHGlobal(ptr); - } + return Helper.CopyIntArraySkipNegativeOnes(ptr, inputCount); } /// public string? GetModuleName(int slotId, int moduleId) { + // memory managed by SunVox var ptr = _lib.sv_get_module_name(slotId, moduleId); return Marshal.PtrToStringAnsi(ptr); } @@ -184,15 +180,9 @@ public int[] GetModuleOutputs(int slotId, int moduleId) if (!moduleFlags.Exists || outputCount == 0) return Array.Empty(); + // memory managed by SunVox var ptr = _lib.sv_get_module_outputs(slotId, moduleId); - try - { - return Helper.CopyIntArraySkipNegativeOnes(ptr, outputCount); - } - finally - { - Marshal.FreeHGlobal(ptr); - } + return Helper.CopyIntArraySkipNegativeOnes(ptr, outputCount); } /// diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index 2814f59..d30f719 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -63,6 +63,7 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic var tracks = GetPatternTracks(slotId, patternId); + // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) return null; @@ -178,6 +179,7 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t // should throw an exception if the pattern in question does not exist SetPatternSize(slotId, patternId, tracks, lines); + // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) throw new SunVoxException(0, $"{nameof(_lib.sv_get_pattern_data)} returned nullptr."); @@ -234,6 +236,7 @@ public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int var realTracks = GetPatternTracks(slotId, patternId); + // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) { @@ -309,6 +312,7 @@ public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, in var realTracks = GetPatternTracks(slotId, patternId); + // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) { diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs index 65b96aa..cbbc1b3 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -73,7 +73,7 @@ public void Deinitialize() } /// - public bool GetAutostop(int slotId) + public bool GetAutomaticStop(int slotId) { var ret = _lib.sv_get_autostop(slotId); if (ret != 0 && ret != 1) @@ -148,6 +148,7 @@ public uint GetSongLengthInLines(int slotId) /// public string? GetSongName(int slotId) { + // memory managed by SunVox var ptr = _lib.sv_get_song_name(slotId); return Marshal.PtrToStringAnsi(ptr); } @@ -293,7 +294,7 @@ public void OpenSlot(int slotId) } /// - public void PauseStream(int slotId) + public void PauseAudioStream(int slotId) { var ret = _lib.sv_pause(slotId); if (ret != 0) @@ -303,7 +304,7 @@ public void PauseStream(int slotId) } /// - public void ResumeStream(int slotId) + public void ResumeAudioStream(int slotId) { var ret = _lib.sv_resume(slotId); if (ret != 0) @@ -366,7 +367,7 @@ public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, } } - public void SetAutoStop(int slotId, bool autoStop) + public void SetAutomaticStop(int slotId, bool autoStop) { var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); if (ret != 0) diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index d9f3177..23a2738 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -167,7 +167,7 @@ public Note(NoteName name, int octave) throw new ArgumentOutOfRangeException(nameof(name), name, "In the tenth octave, only notes up to F# are supported."); } - Value = (byte)(1 + name + octave * 12); + Value = unchecked((byte)(1 + name + octave * 12)); } public static implicit operator Note(byte value) diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index 731d847..6190b16 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -95,7 +95,7 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public override readonly string ToString() + public readonly override string ToString() { return $"{(Note)NN}" + $"{(VV != 0 ? $"{VV:X2}" : "__")}" + @@ -115,7 +115,7 @@ public override readonly string ToString() return a.Data != b.Data; } - public override readonly bool Equals(object? obj) + public readonly override bool Equals(object? obj) { return obj is PatternEvent e && this == e; } @@ -125,7 +125,7 @@ public readonly bool Equals(PatternEvent other) return this == other; } - public override readonly int GetHashCode() + public readonly override int GetHashCode() { return -1945990370 + Data.GetHashCode(); } diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index bd0ac19..d15af06 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -38,11 +38,12 @@ - + <_Parameter1>SunSharp.Tests + 9999 @@ -55,12 +56,6 @@ $(WarningsAsErrors);NU1605;Nullable - - - - - - all diff --git a/SunSharp/Constants.cs b/SunSharp/SunVoxConstants.cs similarity index 93% rename from SunSharp/Constants.cs rename to SunSharp/SunVoxConstants.cs index bc7468d..6a54f31 100644 --- a/SunSharp/Constants.cs +++ b/SunSharp/SunVoxConstants.cs @@ -2,7 +2,7 @@ namespace SunSharp { - public static class Constants + public static class SunVoxConstants { public const uint SV_INIT_FLAG_NO_DEBUG_OUTPUT = 1 << 0; public const uint SV_INIT_FLAG_USER_AUDIO_CALLBACK = 1 << 1; From 2bba79434502b96c46f4f9d45bcca5a0a37e985d Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:56:05 +0100 Subject: [PATCH 09/27] move namespaces --- SunSharp.Tests/{ => Native}/SunVoxLibExtensionsTests.cs | 3 ++- SunSharp/Data/DataReader.cs | 1 + SunSharp/{ => Native}/ISunVoxLib.Modules.cs | 0 SunSharp/{ => Native}/ISunVoxLib.Patterns.cs | 0 SunSharp/{ => Native}/ISunVoxLib.cs | 0 SunSharp/{ => Native}/SunVoxLibExtensions.cs | 2 +- 6 files changed, 4 insertions(+), 2 deletions(-) rename SunSharp.Tests/{ => Native}/SunVoxLibExtensionsTests.cs (99%) rename SunSharp/{ => Native}/ISunVoxLib.Modules.cs (100%) rename SunSharp/{ => Native}/ISunVoxLib.Patterns.cs (100%) rename SunSharp/{ => Native}/ISunVoxLib.cs (100%) rename SunSharp/{ => Native}/SunVoxLibExtensions.cs (99%) diff --git a/SunSharp.Tests/SunVoxLibExtensionsTests.cs b/SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs similarity index 99% rename from SunSharp.Tests/SunVoxLibExtensionsTests.cs rename to SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs index f9621ad..546c279 100644 --- a/SunSharp.Tests/SunVoxLibExtensionsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs @@ -1,7 +1,8 @@ using System.Collections.Generic; using System.Linq; +using SunSharp.Native; -namespace SunSharp.Tests; +namespace SunSharp.Tests.Native; public class SunVoxLibExtensionsTests { diff --git a/SunSharp/Data/DataReader.cs b/SunSharp/Data/DataReader.cs index f799c9e..4e876fa 100644 --- a/SunSharp/Data/DataReader.cs +++ b/SunSharp/Data/DataReader.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using SunSharp.Native; namespace SunSharp.Data { diff --git a/SunSharp/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs similarity index 100% rename from SunSharp/ISunVoxLib.Modules.cs rename to SunSharp/Native/ISunVoxLib.Modules.cs diff --git a/SunSharp/ISunVoxLib.Patterns.cs b/SunSharp/Native/ISunVoxLib.Patterns.cs similarity index 100% rename from SunSharp/ISunVoxLib.Patterns.cs rename to SunSharp/Native/ISunVoxLib.Patterns.cs diff --git a/SunSharp/ISunVoxLib.cs b/SunSharp/Native/ISunVoxLib.cs similarity index 100% rename from SunSharp/ISunVoxLib.cs rename to SunSharp/Native/ISunVoxLib.cs diff --git a/SunSharp/SunVoxLibExtensions.cs b/SunSharp/Native/SunVoxLibExtensions.cs similarity index 99% rename from SunSharp/SunVoxLibExtensions.cs rename to SunSharp/Native/SunVoxLibExtensions.cs index a312fa7..7c7a303 100644 --- a/SunSharp/SunVoxLibExtensions.cs +++ b/SunSharp/Native/SunVoxLibExtensions.cs @@ -1,6 +1,6 @@ using System; -namespace SunSharp +namespace SunSharp.Native { public static class SunVoxLibExtensions { From 51105738a50fe074c9ce2304d9e05fc42c2b078f Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Tue, 16 Dec 2025 00:14:04 +0100 Subject: [PATCH 10/27] OOP pattern wrappers, further work --- LICENSE.md | 369 +- .../BaseIntegrationTests.cs | 7 +- .../SunVoxLibTests/PatternTests.cs | 6 +- SunSharp.Redistribution/LibraryLoader.cs | 20 +- SunSharp.Redistribution/license.txt | 392 +- ...aReaderTests.cs => SongDataReaderTests.cs} | 8 +- SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs | 1 + .../Native/SunVoxLibExtensionsTests.cs | 248 - .../Native/SunVoxLibNativeWrapperTests.cs | 18 +- .../Data/{DataReader.cs => SongDataReader.cs} | 21 +- SunSharp/Effects.cs | 77 - SunSharp/Enums.cs | 142 +- SunSharp/Helper.cs | 2 +- SunSharp/IModuleHandleWrapper.cs | 85 + SunSharp/ModuleHandle.cs | 369 + SunSharp/ModuleType.Generated.cs | 157 + SunSharp/Native/ISunVoxLib.Modules.cs | 14 +- SunSharp/Native/ISunVoxLib.Patterns.cs | 2 +- SunSharp/Native/ISunVoxLib.cs | 8 +- SunSharp/Native/Loader/LibraryHandler.cs | 3 - SunSharp/Native/Loader/NativeProxy.cs | 12 +- SunSharp/Native/SunVoxLibExtensions.cs | 232 - .../Native/SunVoxLibNativeWrapper.Modules.cs | 10 +- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 66 +- SunSharp/Native/SunVoxLibNativeWrapper.cs | 12 +- SunSharp/PatternEvent.cs | 5 +- SunSharp/PatternHandle.cs | 207 + SunSharp/Slot.cs | 500 ++ SunSharp/SlotLock.cs | 49 + SunSharp/Slots.cs | 70 + SunSharp/SpecificModules.Generated.cs | 7853 +++++++++++++++++ SunSharp/SunSharp.sln | 24 + SunSharp/SunVox.cs | 322 + SunSharp/SunVoxException.cs | 11 +- SunSharp/Synthesizer.cs | 279 + SunSharp/Timeline.cs | 109 + SunSharp/VirtualPattern.cs | 133 + SunSharp/license.txt | 369 +- 38 files changed, 11461 insertions(+), 751 deletions(-) rename SunSharp.Tests/Data/{DataReaderTests.cs => SongDataReaderTests.cs} (91%) delete mode 100644 SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs rename SunSharp/Data/{DataReader.cs => SongDataReader.cs} (93%) delete mode 100644 SunSharp/Effects.cs create mode 100644 SunSharp/IModuleHandleWrapper.cs create mode 100644 SunSharp/ModuleHandle.cs create mode 100644 SunSharp/ModuleType.Generated.cs delete mode 100644 SunSharp/Native/SunVoxLibExtensions.cs create mode 100644 SunSharp/PatternHandle.cs create mode 100644 SunSharp/Slot.cs create mode 100644 SunSharp/SlotLock.cs create mode 100644 SunSharp/Slots.cs create mode 100644 SunSharp/SpecificModules.Generated.cs create mode 100644 SunSharp/SunSharp.sln create mode 100644 SunSharp/SunVox.cs create mode 100644 SunSharp/Synthesizer.cs create mode 100644 SunSharp/Timeline.cs create mode 100644 SunSharp/VirtualPattern.cs diff --git a/LICENSE.md b/LICENSE.md index 82c5380..06fb014 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,21 +1,348 @@ -MIT License - -Copyright (c) 2023-2025 Sotakebk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +# Copyright (c) 2023-2025 Sotakebk + +## Mozilla Public License Version 2.0 + +### 1. Definitions + +**1.1. "Contributor"** + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +**1.2. "Contributor Version"** + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +**1.3. "Contribution"** + means Covered Software of a particular Contributor. + +**1.4. "Covered Software"** + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +**1.5. "Incompatible With Secondary Licenses"** + means + +* **(a)** that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or +* **(b)** that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +**1.6. "Executable Form"** + means any form of the work other than Source Code Form. + +**1.7. "Larger Work"** + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +**1.8. "License"** + means this document. + +**1.9. "Licensable"** + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +**1.10. "Modifications"** + means any of the following: + +* **(a)** any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or +* **(b)** any new file in Source Code Form that contains any Covered + Software. + +**1.11. "Patent Claims" of a Contributor** + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +**1.12. "Secondary License"** + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +**1.13. "Source Code Form"** + means the form of the work preferred for making modifications. + +**1.14. "You" (or "Your")** + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means **(a)** the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or **(b)** ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +### 2. License Grants and Conditions + +#### 2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +* **(a)** under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and +* **(b)** under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +#### 2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +#### 2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +* **(a)** for any code that a Contributor has removed from Covered Software; + or +* **(b)** for infringements caused by: **(i)** Your and any other third party's + modifications of Covered Software, or **(ii)** the combination of its + Contributions with other software (except as part of its Contributor + Version); or +* **(c)** under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +#### 2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +#### 2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +#### 2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +#### 2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +### 3. Responsibilities + +#### 3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +#### 3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +* **(a)** such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +* **(b)** You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +#### 3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +#### 3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +#### 3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +### 4. Inability to Comply Due to Statute or Regulation + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: **(a)** comply with +the terms of this License to the maximum extent possible; and **(b)** +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +### 5. Termination + +**5.1.** The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated **(a)** provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and **(b)** on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +**5.2.** If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +### 6. Disclaimer of Warranty + +> Covered Software is provided under this License on an "as is" +> basis, without warranty of any kind, either expressed, implied, or +> statutory, including, without limitation, warranties that the +> Covered Software is free of defects, merchantable, fit for a +> particular purpose or non-infringing. The entire risk as to the +> quality and performance of the Covered Software is with You. +> Should any Covered Software prove defective in any respect, You +> (not any Contributor) assume the cost of any necessary servicing, +> repair, or correction. This disclaimer of warranty constitutes an +> essential part of this License. No use of any Covered Software is +> authorized under this License except under this disclaimer. + +### 7. Limitation of Liability + +> Under no circumstances and under no legal theory, whether tort +> (including negligence), contract, or otherwise, shall any +> Contributor, or anyone who distributes Covered Software as +> permitted above, be liable to You for any direct, indirect, +> special, incidental, or consequential damages of any character +> including, without limitation, damages for lost profits, loss of +> goodwill, work stoppage, computer failure or malfunction, or any +> and all other commercial damages or losses, even if such party +> shall have been informed of the possibility of such damages. This +> limitation of liability shall not apply to liability for death or +> personal injury resulting from such party's negligence to the +> extent applicable law prohibits such limitation. Some +> jurisdictions do not allow the exclusion or limitation of +> incidental or consequential damages, so this exclusion and +> limitation may not apply to You. + +### 8. Litigation + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +### 9. Miscellaneous + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +### 10. Versions of the License + +#### 10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +#### 10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +#### 10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +## Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +## Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs index d15c631..4e3d423 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -1,8 +1,9 @@ -using SunSharp.Redistribution; +using SunSharp.Native; +using SunSharp.Redistribution; namespace SunSharp.IntegrationTests; -public class BaseIntegrationTests +public abstract class BaseIntegrationTests { private ISunVoxLib? _lib; @@ -30,7 +31,7 @@ protected void SetUp() try { _lib = LibraryLoader.GetLibraryInstance(); - _lib.Initialize(-1, flags: InitFlags.UserAudioCallback | InitFlags.AudioFloat32); + _lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); } catch (Exception e) { diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs index d2e2955..747b5e6 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -17,7 +17,7 @@ public void EmptyProjectStartsWithOneEmptyPattern() lib.OpenSlot(slotId); lib.LockSlot(slotId); - var data = DataReader.ReadSongData(lib, slotId); + var data = SongDataReader.ReadSongData(lib, slotId); lib.UnlockSlot(slotId); lib.CloseSlot(slotId); @@ -77,11 +77,11 @@ public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() lib.SetPatternData(slotId, anotherPatternId, [.. secondPattern.Data], secondPattern.Tracks, secondPattern.Lines); - var data = DataReader.ReadSongData(lib, slotId); + var data = SongDataReader.ReadSongData(lib, slotId); lib.RemovePattern(slotId, onePatternId); - var dataAfterRemoval = DataReader.ReadSongData(lib, slotId); + var dataAfterRemoval = SongDataReader.ReadSongData(lib, slotId); lib.UnlockSlot(slotId); lib.CloseSlot(slotId); diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index b6940e0..571ef2e 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -7,13 +7,21 @@ namespace SunSharp.Redistribution { /// - /// Use this class to access a locally loaded SunVoxLib instance.
- /// the library once, then . Construct a - /// if necessary.
- /// You may also call to unload the library, which should also deinitialize the library, to avoid - /// any memory leaks. - /// You should keep the same library instance loaded in most use-cases. + /// Use this class to load and manage a SunVoxLib instance. ///
+ /// + /// + /// the library once, then . + /// After that, you may either use the returned instance, or construct a instance with it. + /// + /// + /// If the library is already loaded, calling again will have no effect. + /// + /// + /// You may also call to unload the library, which should also deinitialize the library to avoid + /// any memory leaks. You should keep the same library instance loaded in most use-cases. + /// + /// public static class LibraryLoader { private static readonly object Lock = new object(); diff --git a/SunSharp.Redistribution/license.txt b/SunSharp.Redistribution/license.txt index 8c07335..06fb014 100644 --- a/SunSharp.Redistribution/license.txt +++ b/SunSharp.Redistribution/license.txt @@ -1,94 +1,348 @@ -SunSharp is distributed under the MIT license: +# Copyright (c) 2023-2025 Sotakebk -Copyright (c) 2023-2025 Sotakebk +## Mozilla Public License Version 2.0 -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +### 1. Definitions -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +**1.1. "Contributor"** + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +**1.2. "Contributor Version"** + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. +**1.3. "Contribution"** + means Covered Software of a particular Contributor. -Additional licenses apply: +**1.4. "Covered Software"** + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. +**1.5. "Incompatible With Secondary Licenses"** + means -SunVox Library License: +* **(a)** that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or +* **(b)** that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. -You can freely use the SunVox library in your own products (even commercial ones). +**1.6. "Executable Form"** + means any form of the work other than Source Code Form. -REQUIREMENT 1: -The following text must be included in the documentation and/or other materials provided with your products: -Powered by SunVox (modular synth & tracker) -Copyright (c) 2008 - 2022, Alexander Zolotov , WarmPlace.ru +**1.7. "Larger Work"** + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. -REQUIREMENT 2: -All other TXT files (from this folder) must be included in the documentation too. +**1.8. "License"** + means this document. +**1.9. "Licensable"** + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. -SunDog License: +**1.10. "Modifications"** + means any of the following: -SunDog engine is distributed under the MIT license: +* **(a)** any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or +* **(b)** any new file in Source Code Form that contains any Covered + Software. -Copyright (c) 2004 - 2022, Alexander Zolotov -WarmPlace.ru +**1.11. "Patent Claims" of a Contributor** + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +**1.12. "Secondary License"** + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +**1.13. "Source Code Form"** + means the form of the work preferred for making modifications. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +**1.14. "You" (or "Your")** + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means **(a)** the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or **(b)** ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. -Tremor License: +### 2. License Grants and Conditions -Copyright (c) 2002, Xiph.org Foundation +#### 2.1. Grants -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. +* **(a)** under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and +* **(b)** under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +#### 2.2. Effective Date -- Neither the name of the Xiph.org Foundation nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#### 2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +* **(a)** for any code that a Contributor has removed from Covered Software; + or +* **(b)** for infringements caused by: **(i)** Your and any other third party's + modifications of Covered Software, or **(ii)** the combination of its + Contributions with other software (except as part of its Contributor + Version); or +* **(c)** under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +#### 2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +#### 2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +#### 2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +#### 2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +### 3. Responsibilities + +#### 3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +#### 3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +* **(a)** such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +* **(b)** You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +#### 3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +#### 3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +#### 3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +### 4. Inability to Comply Due to Statute or Regulation + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: **(a)** comply with +the terms of this License to the maximum extent possible; and **(b)** +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +### 5. Termination + +**5.1.** The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated **(a)** provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and **(b)** on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +**5.2.** If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +### 6. Disclaimer of Warranty + +> Covered Software is provided under this License on an "as is" +> basis, without warranty of any kind, either expressed, implied, or +> statutory, including, without limitation, warranties that the +> Covered Software is free of defects, merchantable, fit for a +> particular purpose or non-infringing. The entire risk as to the +> quality and performance of the Covered Software is with You. +> Should any Covered Software prove defective in any respect, You +> (not any Contributor) assume the cost of any necessary servicing, +> repair, or correction. This disclaimer of warranty constitutes an +> essential part of this License. No use of any Covered Software is +> authorized under this License except under this disclaimer. + +### 7. Limitation of Liability + +> Under no circumstances and under no legal theory, whether tort +> (including negligence), contract, or otherwise, shall any +> Contributor, or anyone who distributes Covered Software as +> permitted above, be liable to You for any direct, indirect, +> special, incidental, or consequential damages of any character +> including, without limitation, damages for lost profits, loss of +> goodwill, work stoppage, computer failure or malfunction, or any +> and all other commercial damages or losses, even if such party +> shall have been informed of the possibility of such damages. This +> limitation of liability shall not apply to liability for death or +> personal injury resulting from such party's negligence to the +> extent applicable law prohibits such limitation. Some +> jurisdictions do not allow the exclusion or limitation of +> incidental or consequential damages, so this exclusion and +> limitation may not apply to You. + +### 8. Litigation + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +### 9. Miscellaneous + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +### 10. Versions of the License + +#### 10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +#### 10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +#### 10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +## Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +## Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/SunSharp.Tests/Data/DataReaderTests.cs b/SunSharp.Tests/Data/SongDataReaderTests.cs similarity index 91% rename from SunSharp.Tests/Data/DataReaderTests.cs rename to SunSharp.Tests/Data/SongDataReaderTests.cs index f805efd..4061f93 100644 --- a/SunSharp.Tests/Data/DataReaderTests.cs +++ b/SunSharp.Tests/Data/SongDataReaderTests.cs @@ -4,7 +4,7 @@ namespace SunSharp.Tests.Data; -public class DataReaderTests +public class SongDataReaderTests { private static ModuleData CreateValidModuleData(ModuleData moduleData) { @@ -58,7 +58,7 @@ public void DataReaderReadSongDataShouldReturnEquivalentDataAsPutInMock(SongData var libraryMock = SunVoxLibMockProvider.BuildMock() .WithSongData(0, validSongData) .Build(); - var data = DataReader.ReadSongData(libraryMock, 0); + var data = SongDataReader.ReadSongData(libraryMock, 0); data.Should().BeEquivalentTo(validSongData); } @@ -69,7 +69,7 @@ public void DataReaderReadModuleShouldReturnEquivalentDataAsPutInMock(ModuleData var libraryMock = SunVoxLibMockProvider.BuildMock() .WithModuleData(0, [validModuleData]) .Build(); - var data = DataReader.ReadModule(libraryMock, 0, validModuleData.Id); + var data = SongDataReader.ReadModule(libraryMock, 0, validModuleData.Id); data.Should().BeEquivalentTo(validModuleData); } @@ -80,7 +80,7 @@ public void DataReaderReadPatternShouldReturnEquivalentDataAsPutInMock(PatternDa var libraryMock = SunVoxLibMockProvider.BuildMock() .WithPatternData(0, [validPatternData]) .Build(); - var data = DataReader.ReadPattern(libraryMock, 0, validPatternData.Id); + var data = SongDataReader.ReadPattern(libraryMock, 0, validPatternData.Id); data.Should().BeEquivalentTo(validPatternData); } } diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs index bdf0544..c78c26d 100644 --- a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs +++ b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs @@ -1,5 +1,6 @@ using System.Linq; using SunSharp.Data; +using SunSharp.Native; namespace SunSharp.Tests.Mocks; diff --git a/SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs b/SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs deleted file mode 100644 index 546c279..0000000 --- a/SunSharp.Tests/Native/SunVoxLibExtensionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using SunSharp.Native; - -namespace SunSharp.Tests.Native; - -public class SunVoxLibExtensionsTests -{ - private static IEnumerable RunInLockActionCases => PrepareRunInLockActionCalls(); - - private static IEnumerable RunInLockFuncCases => PrepareRunInLockFuncCalls(); - - private static bool IsNullableObjectArrayEqual(object[]? a, object[]? b) - { - if (a != null && b != null) - return a.SequenceEqual(b); - - return a == null && b == null; - } - - private static IEnumerable PrepareRunInLockActionCalls() - { - yield return new TestCaseData( - 0, - static (ISunVoxLib lib, Action action, object[]? _) => { lib.RunInLock(0, () => action(null)); } - ); - yield return new TestCaseData( - 1, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, arg => action([arg]), args[0]); - } - ); - yield return new TestCaseData( - 2, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2) => action([arg1, arg2]), args[0], args[1]); - } - ); - yield return new TestCaseData( - 3, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3) => action([arg1, arg2, arg3]), args[0], args[1], args[2]); - } - ); - yield return new TestCaseData( - 4, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4) => action([arg1, arg2, arg3, arg4]), args[0], args[1], - args[2], args[3]); - } - ); - yield return new TestCaseData( - 5, - static (ISunVoxLib lib, Action action, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => action([arg1, arg2, arg3, arg4, arg5]), - args[0], args[1], args[2], args[3], args[4]); - } - ); - } - - private static IEnumerable PrepareRunInLockFuncCalls() - { - yield return new TestCaseData( - 0, - static (ISunVoxLib lib, Func func, object[]? _) => - { - return lib.RunInLock(0, () => func(null)); - } - ); - yield return new TestCaseData( - 1, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, arg => func([arg]), args[0]); - } - ); - yield return new TestCaseData( - 2, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2) => func([arg1, arg2]), args[0], args[1]); - } - ); - yield return new TestCaseData( - 3, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3) => func([arg1, arg2, arg3]), args[0], args[1], - args[2]); - } - ); - yield return new TestCaseData( - 4, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4) => func([arg1, arg2, arg3, arg4]), args[0], - args[1], args[2], args[3]); - } - ); - yield return new TestCaseData( - 5, - static (ISunVoxLib lib, Func func, object[]? args) => - { - ArgumentNullException.ThrowIfNull(args); - return lib.RunInLock(0, (arg1, arg2, arg3, arg4, arg5) => func([arg1, arg2, arg3, arg4, arg5]), - args[0], args[1], args[2], args[3], args[4]); - } - ); - } - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockShouldCallLockActionAndUnlock(int argCount, - Action, object[]?> action) - { - var lib = Substitute.For(); - var mockAction = Substitute.For>(); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - action(lib, mockAction, mockData); - - // then - lib.Received(1).LockSlot(0); - mockAction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockShouldCallLockFuncAndUnlock(int argCount, - Func, object[]?, object> function) - { - var lib = Substitute.For(); - var mockFunction = Substitute.For>(); - var mockResult = Substitute.For(); - mockFunction.Invoke(Arg.Any()).Returns(mockResult); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - var result = function(lib, mockFunction, mockData); - - // then - lib.Received(1).LockSlot(0); - mockFunction.Received(1).Invoke(Arg.Is(arr => IsNullableObjectArrayEqual(arr, mockData))); - result.Should().BeSameAs(mockResult); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockShouldCallLockActionAndUnlockWhenPassedActionThrowsException(int argCount, - Action, object[]?> action) - { - var lib = Substitute.For(); - var sub = Substitute.For(); - var mockAction = new Action(_ => - { - sub(); - throw new Exception(); - }); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); - - // then - lib.Received(1).LockSlot(0); - sub.Received(1).Invoke(); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockShouldCallLockFuncAndUnlockWhenPassedFuncThrowsException(int argCount, - Func, object[]?, object> function) - { - var lib = Substitute.For(); - var sub = Substitute.For(); - var mockFunction = new Func(_ => - { - sub(); - throw new Exception(); - }); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - var action = () => function(lib, mockFunction, mockData); - action.Invoking(a => a()).Should().Throw(); - - // then - lib.Received(1).LockSlot(0); - sub.Received(1).Invoke(); - lib.Received(1).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockActionCases))] - public void RunInLockForActionShouldCallLockAndNothingElseIfItThrowsException(int argCount, - Action, object[]?> action) - { - var lib = Substitute.For(); - lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); - var mockAction = Substitute.For>(); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - ((Action)(() => action(lib, mockAction, mockData))).Should().Throw(); - - // then - lib.Received(1).LockSlot(0); - mockAction.Received(0).Invoke(Arg.Any()); - lib.Received(0).UnlockSlot(0); - } - - [TestCaseSource(nameof(RunInLockFuncCases))] - public void RunInLockForFuncShouldCallLockAndNothingElseIfItThrowsException(int argCount, - Func, object[]?, object> function) - { - var lib = Substitute.For(); - lib.When(static x => x.LockSlot(Arg.Any())).Do(static _ => throw new Exception()); - var mockFunction = Substitute.For>(); - var mockData = argCount == 0 - ? null - : Enumerable.Range(0, argCount).Select(static object (i) => i.ToString()).ToArray(); - // when - ((Action)(() => function(lib, mockFunction, mockData))).Should().Throw(); - - // then - lib.Received(1).LockSlot(0); - mockFunction.Received(0).Invoke(Arg.Any()); - lib.Received(0).UnlockSlot(0); - } -} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index febb464..024c784 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -394,7 +394,7 @@ public void GetTimeMapShouldThrowOnNonZeroReturnCode(int slotId, int startLine, } [Test, AutoData] - public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sampleRate, AudioChannels channels, InitFlags initFlags) + public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -403,14 +403,14 @@ public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sample .Returns(ErrorResponseCode); // when - then - wrapper.Invoking(w => w.Initialize(sampleRate, null, channels, initFlags)).Should().Throw(); + wrapper.Invoking(w => w.Initialize(sampleRate, null, channels, sunVoxInitOptions)).Should().Throw(); // and then - library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); + library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)sunVoxInitOptions); } [Test, AutoData] - public void InitializeShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, InitFlags initFlags) + public void InitializeShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -424,16 +424,16 @@ public void InitializeShouldCallInitAsExpected(int sampleRate, string config, Au .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); // when - var version = wrapper.Initialize(sampleRate, config, channels, initFlags); + var version = wrapper.Initialize(sampleRate, config, channels, sunVoxInitOptions); // then - library.Received(1).sv_init(Arg.Any(), sampleRate, (int)channels, (uint)initFlags); + library.Received(1).sv_init(Arg.Any(), sampleRate, (int)channels, (uint)sunVoxInitOptions); version.Should().Be(new LibraryVersion(returnCode)); receivedString.Should().Be(config); } [Test, AutoData] - public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, AudioChannels channels, InitFlags initFlags) + public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -443,10 +443,10 @@ public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, Aud .Returns(returnCode); // when - var version = wrapper.Initialize(sampleRate, null, channels, initFlags); + var version = wrapper.Initialize(sampleRate, null, channels, sunVoxInitOptions); // then - library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)initFlags); + library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)sunVoxInitOptions); version.Should().Be(new LibraryVersion(returnCode)); } diff --git a/SunSharp/Data/DataReader.cs b/SunSharp/Data/SongDataReader.cs similarity index 93% rename from SunSharp/Data/DataReader.cs rename to SunSharp/Data/SongDataReader.cs index 4e876fa..24be38a 100644 --- a/SunSharp/Data/DataReader.cs +++ b/SunSharp/Data/SongDataReader.cs @@ -5,17 +5,24 @@ namespace SunSharp.Data { - public static class DataReader + public static class SongDataReader { - // TODO - //public static SongData ReadSongData(Slot slot) - //{ - // return ReadSongData(slot.Library, slot.Id); - //} + public static SongData ReadSongData(Slot slot) + { + return ReadSongData(slot.Library, slot.Id); + } public static SongData ReadSongData(ISunVoxLib lib, int slotId) { - return lib.RunInLock(slotId, () => ReadSongDataInternal(lib, slotId)); + lib.LockSlot(slotId); + try + { + return ReadSongDataInternal(lib, slotId); + } + finally + { + lib.UnlockSlot(slotId); + } } internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slotId) diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs deleted file mode 100644 index 2bd3579..0000000 --- a/SunSharp/Effects.cs +++ /dev/null @@ -1,77 +0,0 @@ -namespace SunSharp -{ - public enum Effect : byte - { - None = 0, - - SlideUp = 0x01, - SlideDown = 0x02, - SlideToNote = 0x03, - Vibrato = 0x04, - PitchBendUp = 0x05, - PitchBendDown = 0x06, - SetPhasePercents = 0x07, - Arpeggio = 0x08, - SetPhase = 0x09, - VelocitySlide = 0x0A, - SetPlayingSpeed = 0x0F, - FineSlideUp = 0x11, - FineSlideDown = 0x12, - SetBypassSoloMute = 0x13, - ResetBypassSoloMute = 0x14, - ChangeModuleFineTune = 0x15, - Retrigger = 0x19, - FineVelocitySlide = 0x1A, - CutNote = 0x1C, - DelayNote = 0x1D, - SetBpm = 0x1F, - NoteProbability = 0x20, - NoteProbabilityRandomVelocity = 0x21, - SetControllerRandomAbsolute = 0x22, - SetControllerRandomRange = 0x23, - PlayNoteFromLine = 0x24, - PlayRandomNoteFromRange = 0x25, - PlayNoteRandomTrackSameLine = 0x26, - PlayRandomNoteFromRangeTracksSameLine = 0x27, - PlayNoteFromLineOnTrackZero = 0x28, - PlayRandomNoteFromRangeOnTrackZero = 0x29, - StopPlaying = 0x30, - Jump = 0x31, - SetJumpMode = 0x32, - SlotSync = 0x33, - SetResetProjectOptions = 0x34, - BindMidiOut = 0x35, - DeleteEventOnTrackWithProbability = 0x38, - CyclicShiftTrackLines = 0x39, - GeneratePolyrhythm = 0x3A, - CopyTrackToPattern = 0x3B, - CopyTrackFromPattern = 0x3C, - WriteRandomValue = 0x3D - } - - public static class EffectExtensions - { - public static bool IsNonLinear(this Effect effect) - { - return effect == Effect.Jump - || effect == Effect.SetJumpMode - || effect == Effect.StopPlaying; - } - - public static bool IsDestructive(this Effect effect) - { - return effect == Effect.DeleteEventOnTrackWithProbability - || effect == Effect.CyclicShiftTrackLines - || effect == Effect.GeneratePolyrhythm - || effect == Effect.CopyTrackToPattern - || effect == Effect.CopyTrackFromPattern - || effect == Effect.WriteRandomValue; - } - - public static bool ChangesTempo(this Effect effect) - { - return effect == Effect.SetBpm - || effect == Effect.SetPlayingSpeed; - } - } -} diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index a736997..743f2ed 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -18,16 +18,30 @@ public enum AudioChannels public enum Column { - NN = 0, - Note = NN, - VV = 1, - Velocity = VV, - MM = 2, - Module = MM, - CCEE = 3, - ControllerEffect = CCEE, - XXYY = 4, - Parameter = XXYY + /// + /// The 'Note' column (NN). + /// + Note = 0, + + /// + /// The 'Velocity' column (VV). + /// + Velocity = 1, + + /// + /// The 'Module' column (MM). + /// + Module = 2, + + /// + /// The 'Controller Effect' column (CCEE). + /// + ControllerEffect = 3, + + /// + /// The 'Parameter' column (XXYY). + /// + Parameter = 4 } public enum TimeMapType @@ -50,9 +64,7 @@ public enum ControllerType } [Flags] - [SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect suffix", - Justification = "Corresponds to SV_INIT_FLAG flags, this just makes sense.")] - public enum InitFlags : uint + public enum SunVoxInitOptions : uint { None = 0, @@ -84,4 +96,108 @@ public enum InitFlags : uint /// OneThread = SunVoxConstants.SV_INIT_FLAG_ONE_THREAD } + + [SuppressMessage("Naming", "CA1720:Identifier contains type name", Justification = "The enum is supposed to help with choosing a type.")] + public enum OutputType + { + Float32 = 1, + Int16 = 2 + } + + public enum Effect : byte + { + None = 0, + + SlideUp = 0x01, + SlideDown = 0x02, + SlideToNote = 0x03, + Vibrato = 0x04, + PitchBendUp = 0x05, + PitchBendDown = 0x06, + SetPhasePercents = 0x07, + Arpeggio = 0x08, + SetPhase = 0x09, + VelocitySlide = 0x0A, + SetPlayingSpeed = 0x0F, + FineSlideUp = 0x11, + FineSlideDown = 0x12, + SetBypassSoloMute = 0x13, + ResetBypassSoloMute = 0x14, + ChangeModuleFineTune = 0x15, + Retrigger = 0x19, + FineVelocitySlide = 0x1A, + CutNote = 0x1C, + DelayNote = 0x1D, + SetBpm = 0x1F, + NoteProbability = 0x20, + NoteProbabilityRandomVelocity = 0x21, + SetControllerRandomAbsolute = 0x22, + SetControllerRandomRange = 0x23, + PlayNoteFromLine = 0x24, + PlayRandomNoteFromRange = 0x25, + PlayNoteRandomTrackSameLine = 0x26, + PlayRandomNoteFromRangeTracksSameLine = 0x27, + PlayNoteFromLineOnTrackZero = 0x28, + PlayRandomNoteFromRangeOnTrackZero = 0x29, + StopPlaying = 0x30, + Jump = 0x31, + SetJumpMode = 0x32, + SlotSync = 0x33, + SetResetProjectOptions = 0x34, + BindMidiOut = 0x35, + DeleteEventOnTrackWithProbability = 0x38, + CyclicShiftTrackLines = 0x39, + GeneratePolyrhythm = 0x3A, + CopyTrackToPattern = 0x3B, + CopyTrackFromPattern = 0x3C, + WriteRandomValue = 0x3D + } + + public static class EffectExtensions + { + /// + /// Determines whether the specified effect is non-linear. + /// + /// + /// Non-linear effects are those that alter the normal sequential flow of pattern playback, + /// such as jumps or stops, rather than modifying the sound or parameters of the notes being played. + /// + public static bool IsNonLinear(this Effect effect) + { + return effect == Effect.Jump + || effect == Effect.SetJumpMode + || effect == Effect.StopPlaying; + } + + /// + /// Determines whether the specified effect is destructive. + /// + /// + /// Destructive effects are those that can remove or overwrite existing data in the pattern, + /// potentially leading to loss of information. + /// The effects considered destructive include deleting events, shifting track lines, + /// generating polyrhythms, copying tracks, and writing random values. + /// + public static bool IsDestructive(this Effect effect) + { + return effect == Effect.DeleteEventOnTrackWithProbability + || effect == Effect.CyclicShiftTrackLines + || effect == Effect.GeneratePolyrhythm + || effect == Effect.CopyTrackToPattern + || effect == Effect.CopyTrackFromPattern + || effect == Effect.WriteRandomValue; + } + + /// + /// Determines whether the specified effect changes the tempo. + /// + /// + /// Tempo-changing effects are those that modify the speed or BPM (beats per minute) of the playback. + /// + public static bool ChangesTempo(this Effect effect) + { + return effect == Effect.SetBpm + || effect == Effect.SetPlayingSpeed; + } + } } diff --git a/SunSharp/Helper.cs b/SunSharp/Helper.cs index 0136dff..04338d8 100644 --- a/SunSharp/Helper.cs +++ b/SunSharp/Helper.cs @@ -82,7 +82,7 @@ public static float FrequencyToPitch(float frequency) // from Hz to SunVox pitch: pitch = 30720 - log2( freq / 16.333984375 ) * 3072 public static double FrequencyToPitch(double frequency) { - return 30720.0 - Math.Log(frequency / 16.333984375, 2) * 3072.0; + return 30720.0 - (Math.Log(frequency / 16.333984375, 2) * 3072.0); } #endregion macros diff --git a/SunSharp/IModuleHandleWrapper.cs b/SunSharp/IModuleHandleWrapper.cs new file mode 100644 index 0000000..17cec2f --- /dev/null +++ b/SunSharp/IModuleHandleWrapper.cs @@ -0,0 +1,85 @@ +namespace SunSharp +{ + public interface IModuleHandleWrapper + { + ModuleHandle ModuleHandle { get; } + } + + public static class ModuleHandleWrapperExtensions + { + /// + public static ModuleFlags GetFlags(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFlags(); + + /// + public static ModuleType GetModuleType(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetModuleType(); + + /// + public static bool GetExists(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetExists(); + + /// + public static FineTunePair GetFineTune(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFineTune(); + + /// + public static void SetFinetune(this IModuleHandleWrapper wrapper, FineTunePair fineTune) => wrapper.ModuleHandle.SetFineTune(fineTune); + + /// + public static int ReadScope(this IModuleHandleWrapper wrapper, AudioChannel channel, short[] buffer) => wrapper.ModuleHandle.ReadScope(channel, buffer); + + /// + public static string? GetName(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetName(); + + /// + public static void SetName(this IModuleHandleWrapper wrapper, string name) => wrapper.ModuleHandle.SetName(name); + + /// + public static (int x, int y) GetPosition(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetPosition(); + + /// + public static void SetPosition(this IModuleHandleWrapper wrapper, int x, int y) => wrapper.ModuleHandle.SetPosition(x, y); + + /// + public static (byte R, byte G, byte B) GetColor(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetColor(); + + /// + public static void SetColor(this IModuleHandleWrapper wrapper, byte R, byte G, byte B) => wrapper.ModuleHandle.SetColor(R, G, B); + + /// + public static int[] GetInputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputs(); + + /// + public static ModuleHandle[] GetInputModules(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputModules(); + + /// + public static int[] GetOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetOutputs(); + + /// + public static ModuleHandle[] GetModuleOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetModuleOutputs(); + + /// + public static int GetControllerCount(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetControllerCount(); + + /// + public static string? GetControllerName(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerName(controllerId); + + /// + public static int GetControllerValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed) => wrapper.ModuleHandle.GetControllerValue(controllerId, scaling); + + /// + public static void SetControllerValue(this IModuleHandleWrapper wrapper, int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed) => wrapper.ModuleHandle.SetControllerValue(controller, value, scaling); + + /// + public static int GetControllerMinValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling) => wrapper.ModuleHandle.GetControllerMinValue(controllerId, scaling); + + /// + public static int GetControllerMaxValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling) => wrapper.ModuleHandle.GetControllerMaxValue(controllerId, scaling); + + /// + public static int GetControllerOffset(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerOffset(controllerId); + + /// + public static ControllerType GetModuleControllerType(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerType(controllerId); + + /// + public static int GetModuleControllerGroup(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerGroup(controllerId); + } +} diff --git a/SunSharp/ModuleHandle.cs b/SunSharp/ModuleHandle.cs new file mode 100644 index 0000000..f459160 --- /dev/null +++ b/SunSharp/ModuleHandle.cs @@ -0,0 +1,369 @@ +using System.Linq; +using SunSharp.Native; + +namespace SunSharp +{ + /// + /// Represents a handle to a module. The handle may be invalid if the pattern does not exist. + /// + public interface IModuleHandle + { + int Id { get; } + + ModuleFlags GetFlags(); + + ModuleType GetModuleType(); + + bool GetExists(); + + FineTunePair GetFineTune(); + + void SetFineTune(FineTunePair fineTune); + + /// + /// Read module scope view, and write it to a buffer. + /// + /// Number of samples successfully read. + int ReadScope(AudioChannel channel, short[] buffer); + + string? GetName(); + + void SetName(string name); + + (int x, int y) GetPosition(); + + void SetPosition(int x, int y); + + (byte R, byte G, byte B) GetColor(); + + void SetColor(byte r, byte g, byte b); + + int[] GetInputs(); + + ModuleHandle[] GetInputModules(); + + int[] GetOutputs(); + + ModuleHandle[] GetModuleOutputs(); + + /// + /// Load a sample (xi, wav, aiff) to a Sampler module from file. + /// + /// + /// Set to to apply the sample to all sample slots. + /// + void LoadSamplerSample(string path, int? sampleSlot = null); + + /// + /// Load a sample (xi, wav, aiff) to a Sampler module from memory. + /// Set to -1 to apply the sample to all sample slots. + /// + void LoadSamplerSample(byte[] data, int sampleSlot = -1); + + /// + /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. + /// + void LoadIntoMetaModule(string path); + + /// + /// load a file from memory into the MetaModule. Supported file formats: sunvox, mod, xm, midi. + /// + void LoadIntoMetaModule(byte[] data); + + /// + /// load a file into the Vorbis Player. Supported file formats: ogg. + /// + void LoadIntoVorbisPLayer(string path); + + /// + /// load a file into the Vorbis Player. Supported file formats: ogg. + /// + void LoadIntoVorbisPLayer(byte[] data); + + int WriteCurve(int curveId, float[] buffer); + + int ReadCurve(int curveId, float[] buffer); + + int GetControllerCount(); + + string? GetControllerName(int controllerId); + + int GetControllerValue(int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed); + + void SetControllerValue(int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed); + + int GetControllerMinValue(int controllerId, ValueScalingMode scaling); + + int GetControllerMaxValue(int controllerId, ValueScalingMode scaling); + + int GetControllerOffset(int controllerId); + + ControllerType GetControllerType(int controllerId); + + int GetControllerGroup(int controllerId); + } + + /// + public readonly struct ModuleHandle : IModuleHandle + { + private readonly ISunVoxLib _lib; + private readonly Slot _slot; + private readonly int _slotId; + + /// + public int Id { get; } + + public ModuleHandle(Synthesizer synthesizer, int id) + { + _slot = synthesizer.Slot; + _slotId = _slot.Id; + _lib = synthesizer.Slot.Library; + Id = id; + } + + #region general + + /// + public ModuleFlags GetFlags() + { + return _lib.GetModuleFlags(_slotId, Id); + } + + /// + public ModuleType GetModuleType() + { + return ModuleTypeHelper.TypeFromInternalName(_lib.GetModuleType(_slotId, Id)); + } + + /// + public bool GetExists() + { + return _lib.GetModuleExists(_slotId, Id); + } + + /// + public FineTunePair GetFineTune() + { + return _lib.GetModuleFineTune(_slotId, Id); + } + + /// + public void SetFineTune(FineTunePair fineTune) + { + _lib.SetModuleRelativeNote(_slotId, Id, fineTune.RelativeNote); + _lib.SetModuleFineTune(_slotId, Id, fineTune.FineTune); + } + + /// + public int ReadScope(AudioChannel channel, short[] buffer) + { + return _lib.ReadModuleScope(_slotId, Id, channel, buffer); + } + + #endregion general + + #region cosmetic + + /// + public string? GetName() + { + return _lib.GetModuleName(_slotId, Id); + } + + /// + public void SetName(string name) + { + _lib.SetModuleName(_slotId, Id, name); + } + + /// + public (int x, int y) GetPosition() + { + return _lib.GetModulePosition(_slotId, Id); + } + + /// + public void SetPosition(int x, int y) + { + _lib.SetModulePosition(_slotId, Id, x, y); + } + + /// + public (byte R, byte G, byte B) GetColor() + { + return _lib.GetModuleColor(_slotId, Id); + } + + /// + public void SetColor(byte r, byte g, byte b) + { + _lib.SetModuleColor(_slotId, Id, r, g, b); + } + + #endregion cosmetic + + #region connections + + /// + public int[] GetInputs() + { + return _lib.GetModuleInputs(_slotId, Id); + } + + /// + public ModuleHandle[] GetInputModules() + { + var synthesizer = _slot.Synthesizer; + return _lib.GetModuleInputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + } + + /// + public int[] GetOutputs() + { + return _lib.GetModuleInputs(_slotId, Id); + } + + /// + public ModuleHandle[] GetModuleOutputs() + { + var synthesizer = _slot.Synthesizer; + return _lib.GetModuleOutputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + } + + #endregion connections + + #region specific data IO + + /// + public void LoadSamplerSample(string path, int? sampleSlot = null) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + lib.LoadSamplerSample(slotId, id, path, sampleSlot); + } + } + + /// + public void LoadSamplerSample(byte[] data, int sampleSlot = -1) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + lib.LoadSamplerSample(slotId, id, data, sampleSlot); + } + } + + /// + public void LoadIntoMetaModule(string path) + { + _lib.LoadIntoMetaModule(_slotId, Id, path); + } + + /// + public void LoadIntoMetaModule(byte[] data) + { + _lib.LoadIntoMetaModule(_slotId, Id, data); + } + + /// + public void LoadIntoVorbisPLayer(string path) + { + _lib.LoadIntoVorbisPLayer(_slotId, Id, path); + } + + /// + public void LoadIntoVorbisPLayer(byte[] data) + { + _lib.LoadIntoVorbisPLayer(_slotId, Id, data); + } + + /// + public int WriteCurve(int curveId, float[] buffer) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + return lib.WriteModuleCurve(slotId, id, curveId, buffer); + } + } + + /// + public int ReadCurve(int curveId, float[] buffer) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + return lib.ReadModuleCurve(slotId, id, curveId, buffer); + } + } + + #endregion specific data IO + + #region controllers + + /// + public int GetControllerCount() + { + return _lib.GetModuleControllerCount(_slotId, Id); + } + + /// + public string? GetControllerName(int controllerId) + { + return _lib.GetModuleControllerName(_slotId, Id, controllerId); + } + + /// + public int GetControllerValue(int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed) + { + return _lib.GetModuleControllerValue(_slotId, Id, controllerId, scaling); + } + + /// + public void SetControllerValue(int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed) + { + _lib.SetModuleControllerValue(_slotId, Id, controller, value, scaling); + } + + /// + public int GetControllerMinValue(int controllerId, ValueScalingMode scaling) + { + return _lib.GetModuleControllerMinValue(_slotId, Id, controllerId, scaling); + } + + /// + public int GetControllerMaxValue(int controllerId, ValueScalingMode scaling) + { + return _lib.GetModuleControllerMaxValue(_slotId, Id, controllerId, scaling); + } + + /// + public int GetControllerOffset(int controllerId) + { + return _lib.GetModuleControllerOffset(_slotId, Id, controllerId); + } + + /// + public ControllerType GetControllerType(int controllerId) + { + return _lib.GetModuleControllerType(_slotId, Id, controllerId); + } + + /// + public int GetControllerGroup(int controllerId) + { + return _lib.GetModuleControllerGroup(_slotId, Id, controllerId); + } + + #endregion controllers + } +} diff --git a/SunSharp/ModuleType.Generated.cs b/SunSharp/ModuleType.Generated.cs new file mode 100644 index 0000000..46dcc76 --- /dev/null +++ b/SunSharp/ModuleType.Generated.cs @@ -0,0 +1,157 @@ +/* + * IMPORTANT! + * Do not modify this file manually. It was generated automatically by the CodeGeneration project. +*/ + +namespace SunSharp +{ + public enum ModuleType + { + ADSR = 128, + Amplifier = 64, + AnalogGenerator = 1, + Compressor = 65, + ControlToNote = 129, + DcBlocker = 66, + Delay = 67, + Distortion = 68, + DrumSynth = 2, + Echo = 69, + EQ = 70, + Feedback = 130, + FFT = 71, + Filter = 72, + FilterPro = 73, + Flanger = 74, + FM = 3, + FMX = 4, + Generator = 5, + Glide = 131, + GPIO = 132, + Input = 6, + Kicker = 7, + LFO = 75, + Loop = 76, + MetaModule = 133, + Modulator = 77, + MultiControl = 134, + MultiSynth = 135, + Output = -1, + PitchDetector = 137, + PitchShifter = 78, + PitchToControl = 136, + Reverb = 79, + Sampler = 9, + SoundToControl = 138, + SpectraVoice = 10, + VelocityToControl = 139, + Vibrato = 81, + VocalFilter = 80, + VorbisPlayer = 8, + WaveShaper = 82, + Unknown = 0, + } + + public static class ModuleTypeHelper + { + public static string InternalNameFromType(ModuleType type) + { + switch (type) + { + case ModuleType.ADSR: return "ADSR"; + case ModuleType.Amplifier: return "Amplifier"; + case ModuleType.AnalogGenerator: return "Analog generator"; + case ModuleType.Compressor: return "Compressor"; + case ModuleType.ControlToNote: return "Ctl2Note"; + case ModuleType.DcBlocker: return "DC Blocker"; + case ModuleType.Delay: return "Delay"; + case ModuleType.Distortion: return "Distortion"; + case ModuleType.DrumSynth: return "DrumSynth"; + case ModuleType.Echo: return "Echo"; + case ModuleType.EQ: return "EQ"; + case ModuleType.Feedback: return "Feedback"; + case ModuleType.FFT: return "FFT"; + case ModuleType.Filter: return "Filter"; + case ModuleType.FilterPro: return "Filter Pro"; + case ModuleType.Flanger: return "Flanger"; + case ModuleType.FM: return "FM"; + case ModuleType.FMX: return "FMX"; + case ModuleType.Generator: return "Generator"; + case ModuleType.Glide: return "Glide"; + case ModuleType.GPIO: return "GPIO"; + case ModuleType.Input: return "Input"; + case ModuleType.Kicker: return "Kicker"; + case ModuleType.LFO: return "LFO"; + case ModuleType.Loop: return "Loop"; + case ModuleType.MetaModule: return "MetaModule"; + case ModuleType.Modulator: return "Modulator"; + case ModuleType.MultiControl: return "MultiCtl"; + case ModuleType.MultiSynth: return "MultiSynth"; + case ModuleType.Output: return "Output"; + case ModuleType.PitchDetector: return "Pitch Detector"; + case ModuleType.PitchShifter: return "Pitch shifter"; + case ModuleType.PitchToControl: return "Pitch2Ctl"; + case ModuleType.Reverb: return "Reverb"; + case ModuleType.Sampler: return "Sampler"; + case ModuleType.SoundToControl: return "Sound2Ctl"; + case ModuleType.SpectraVoice: return "SpectraVoice"; + case ModuleType.VelocityToControl: return "Velocity2Ctl"; + case ModuleType.Vibrato: return "Vibrato"; + case ModuleType.VocalFilter: return "Vocal filter"; + case ModuleType.VorbisPlayer: return "Vorbis player"; + case ModuleType.WaveShaper: return "WaveShaper"; + default: return "unknown"; + } + } + + public static ModuleType TypeFromInternalName(string internalName) + { + switch (internalName) + { + case "ADSR": return ModuleType.ADSR; + case "Amplifier": return ModuleType.Amplifier; + case "Analog generator": return ModuleType.AnalogGenerator; + case "Compressor": return ModuleType.Compressor; + case "Ctl2Note": return ModuleType.ControlToNote; + case "DC Blocker": return ModuleType.DcBlocker; + case "Delay": return ModuleType.Delay; + case "Distortion": return ModuleType.Distortion; + case "DrumSynth": return ModuleType.DrumSynth; + case "Echo": return ModuleType.Echo; + case "EQ": return ModuleType.EQ; + case "Feedback": return ModuleType.Feedback; + case "FFT": return ModuleType.FFT; + case "Filter": return ModuleType.Filter; + case "Filter Pro": return ModuleType.FilterPro; + case "Flanger": return ModuleType.Flanger; + case "FM": return ModuleType.FM; + case "FMX": return ModuleType.FMX; + case "Generator": return ModuleType.Generator; + case "Glide": return ModuleType.Glide; + case "GPIO": return ModuleType.GPIO; + case "Input": return ModuleType.Input; + case "Kicker": return ModuleType.Kicker; + case "LFO": return ModuleType.LFO; + case "Loop": return ModuleType.Loop; + case "MetaModule": return ModuleType.MetaModule; + case "Modulator": return ModuleType.Modulator; + case "MultiCtl": return ModuleType.MultiControl; + case "MultiSynth": return ModuleType.MultiSynth; + case "Output": return ModuleType.Output; + case "Pitch Detector": return ModuleType.PitchDetector; + case "Pitch shifter": return ModuleType.PitchShifter; + case "Pitch2Ctl": return ModuleType.PitchToControl; + case "Reverb": return ModuleType.Reverb; + case "Sampler": return ModuleType.Sampler; + case "Sound2Ctl": return ModuleType.SoundToControl; + case "SpectraVoice": return ModuleType.SpectraVoice; + case "Velocity2Ctl": return ModuleType.VelocityToControl; + case "Vibrato": return ModuleType.Vibrato; + case "Vocal filter": return ModuleType.VocalFilter; + case "Vorbis player": return ModuleType.VorbisPlayer; + case "WaveShaper": return ModuleType.WaveShaper; + default: return ModuleType.Unknown; + } + } + } +} diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs index e68cf85..87b9482 100644 --- a/SunSharp/Native/ISunVoxLib.Modules.cs +++ b/SunSharp/Native/ISunVoxLib.Modules.cs @@ -1,4 +1,4 @@ -namespace SunSharp +namespace SunSharp.Native { public partial interface ISunVoxLib { @@ -125,15 +125,19 @@ void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int va /// /// Load a sample (xi, wav, aiff) to an existing module from file. - /// Set to -1 to apply the sample to all sample slots. /// - void LoadSamplerSample(int slotId, int moduleId, string path, int sampleSlot = -1); + /// + /// Set to to apply the sample to all sample slots. + /// + void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null); /// /// Load a sample (xi, wav, aiff) to an existing module from memory. - /// Set to -1 to apply the sample to all sample slots. /// - void LoadSamplerSample(int slotId, int moduleId, byte[] data, int sampleSlot = -1); + /// + /// Set to to apply the sample to all sample slots. + /// + void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null); /// /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. diff --git a/SunSharp/Native/ISunVoxLib.Patterns.cs b/SunSharp/Native/ISunVoxLib.Patterns.cs index b7aca14..0cc1d3e 100644 --- a/SunSharp/Native/ISunVoxLib.Patterns.cs +++ b/SunSharp/Native/ISunVoxLib.Patterns.cs @@ -1,4 +1,4 @@ -namespace SunSharp +namespace SunSharp.Native { public partial interface ISunVoxLib { diff --git a/SunSharp/Native/ISunVoxLib.cs b/SunSharp/Native/ISunVoxLib.cs index 3441c56..b2b77a5 100644 --- a/SunSharp/Native/ISunVoxLib.cs +++ b/SunSharp/Native/ISunVoxLib.cs @@ -1,4 +1,4 @@ -namespace SunSharp +namespace SunSharp.Native { public partial interface ISunVoxLib { @@ -11,9 +11,9 @@ public partial interface ISunVoxLib /// details. /// /// Channels to be used. - /// Initialization flags. + /// Initialization options. /// The version of underlying library. - LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.None); + LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None); /// /// Deinitializes the library, frees resources. @@ -176,7 +176,7 @@ bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, ///
/// See also: . ///
- void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0); + void SetSendEventTimestamp(int slotId, bool reset, int t); /// /// Get and set volume. Call with = -1 to only get the value. diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs index 0d7f4c8..0828d55 100644 --- a/SunSharp/Native/Loader/LibraryHandler.cs +++ b/SunSharp/Native/Loader/LibraryHandler.cs @@ -20,9 +20,6 @@ public interface ILibraryHandler /// A method that returns a delegate from a function pointer, found in the loaded library by name. /// Should fail immediately if the method is not found. /// - /// - /// - /// Delegate GetFunctionByName(string name, Type delegateType); } } diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 3eb3e6e..6eecded 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -36,7 +36,9 @@ public void Load() lock (_lock) { if (IsLoaded && _handler.IsLibraryLoaded) + { return; + } try { @@ -77,15 +79,15 @@ public void Unload() { lock (_lock) { - var handlerIsLibraryLoader = _handler.IsLibraryLoaded; + var handlerIsLibraryLoaded = _handler.IsLibraryLoaded; switch (IsLoaded) { // nothing to unload - case false when !handlerIsLibraryLoader: + case false when !handlerIsLibraryLoaded: return; // sunvox might need to be unloaded - case true when handlerIsLibraryLoader: + case true when handlerIsLibraryLoaded: if (sv_deinit == null) { throw new InvalidOperationException($"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); @@ -103,8 +105,10 @@ public void Unload() } // unload library if applies - if (handlerIsLibraryLoader) + if (handlerIsLibraryLoaded) + { _handler.UnloadLibrary(); + } } } diff --git a/SunSharp/Native/SunVoxLibExtensions.cs b/SunSharp/Native/SunVoxLibExtensions.cs deleted file mode 100644 index 7c7a303..0000000 --- a/SunSharp/Native/SunVoxLibExtensions.cs +++ /dev/null @@ -1,232 +0,0 @@ -using System; - -namespace SunSharp.Native -{ - public static class SunVoxLibExtensions - { - /// - /// Use to group multiple calls in one lock/unlock block. - /// Possible issues: when a slot is closed, then re-opened while user code is running, it may escape the abstraction - /// and/or throw an exception. - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(); - } - finally - { - if (entered) - { - lib.UnlockSlot(slotId); - } - } - } - - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(arg1); - } - finally - { - if (entered) - { - lib.UnlockSlot(slotId); - } - } - } - - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, T2 arg2) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(arg1, arg2); - } - finally - { - if (entered) - { - lib.UnlockSlot(slotId); - } - } - } - - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, T1 arg1, - T2 arg2, T3 arg3) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(arg1, arg2, arg3); - } - finally - { - if (entered) - { - lib.UnlockSlot(slotId); - } - } - } - - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, Action action, - T1 arg1, T2 arg2, T3 arg3, T4 arg4) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(arg1, arg2, arg3, arg4); - } - finally - { - if (entered) - { - lib.UnlockSlot(slotId); - } - } - } - - /// - public static void RunInLock(this ISunVoxLib lib, int slotId, - Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - action(arg1, arg2, arg3, arg4, arg5); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, T1 arg1) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(arg1); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, Func func, - T1 arg1, T2 arg2) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(arg1, arg2); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, - Func func, T1 arg1, T2 arg2, T3 arg3) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(arg1, arg2, arg3); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, - Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(arg1, arg2, arg3, arg4); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - - /// - public static TResult RunInLock(this ISunVoxLib lib, int slotId, - Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) - { - var entered = false; - try - { - lib.LockSlot(slotId); - entered = true; - return func(arg1, arg2, arg3, arg4, arg5); - } - finally - { - if (entered) - lib.UnlockSlot(slotId); - } - } - } -} diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index deb0107..e1194c5 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -320,13 +320,13 @@ public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) } /// - public void LoadSamplerSample(int slotId, int moduleId, string path, int sampleSlot = -1) + public void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null) { var ptr = Marshal.StringToHGlobalAnsi(path); int ret; try { - ret = _lib.sv_sampler_load(slotId, moduleId, ptr, sampleSlot); + ret = _lib.sv_sampler_load(slotId, moduleId, ptr, sampleSlot ?? -1); } finally { @@ -338,14 +338,14 @@ public void LoadSamplerSample(int slotId, int moduleId, string path, int sampleS } /// - public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int sampleSlot = -1) + public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; try { - ret = _lib.sv_sampler_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length, - sampleSlot); + var intPtr = handle.AddrOfPinnedObject(); + ret = _lib.sv_sampler_load_from_memory(slotId, moduleId, intPtr, (uint)data.Length, sampleSlot ?? -1); } finally { diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index d30f719..1f7a0bf 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -10,7 +10,10 @@ public int ClonePattern(int slotId, int originalPatternId, int x, int y) var ret = _lib.sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + } + return ret; } @@ -28,7 +31,10 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic } if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + } + return ret; } @@ -47,10 +53,15 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic } if (ret < -1) + { throw new SunVoxException(ret, nameof(_lib.sv_find_pattern)); + } if (ret != -1) + { return ret; + } + return null; } @@ -59,18 +70,25 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic { var lines = GetPatternLines(slotId, patternId); if (lines <= 0) + { return null; + } var tracks = GetPatternTracks(slotId, patternId); // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) + { return null; + } var arr = new PatternEvent[lines * tracks]; for (var i = 0; i < lines * tracks; i++) + { arr[i] = (ulong)Marshal.ReadInt64(ptr, i * sizeof(ulong)); + } + return (arr, tracks, lines); } @@ -79,7 +97,10 @@ public int GetPatternEventValue(int slotId, int patternId, int track, int line, { var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event)); + } + return ret; } @@ -94,7 +115,10 @@ public int GetPatternLines(int slotId, int patternId) { var ret = _lib.sv_get_pattern_lines(slotId, patternId); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines)); + } + return ret; } @@ -103,7 +127,10 @@ public bool GetPatternMuted(int slotId, int patternId) { var ret = _lib.sv_pattern_mute(slotId, patternId, -1); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + } + return ret == 1; } @@ -117,7 +144,9 @@ public bool GetPatternMuted(int slotId, int patternId) /// public (int x, int y) GetPatternPosition(int slotId, int patternId) { - return (_lib.sv_get_pattern_x(slotId, patternId), _lib.sv_get_pattern_y(slotId, patternId)); + var x = _lib.sv_get_pattern_x(slotId, patternId); + var y = _lib.sv_get_pattern_y(slotId, patternId); + return (x, y); } /// @@ -125,7 +154,10 @@ public int GetPatternTracks(int slotId, int patternId) { var ret = _lib.sv_get_pattern_tracks(slotId, patternId); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks)); + } + return ret; } @@ -146,7 +178,10 @@ public int GetUpperPatternCount(int slotId) { var ret = _lib.sv_get_number_of_patterns(slotId); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns)); + } + return ret; } @@ -155,7 +190,9 @@ public void RemovePattern(int slotId, int patternId) { var ret = _lib.sv_remove_pattern(slotId, patternId); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern)); + } } /// @@ -173,7 +210,8 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t if (tracks * lines != data.Length) { - throw new ArgumentException($"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); + throw new ArgumentException( + $"Size of {nameof(data)} ({nameof(data)}.Length) is not equal to {nameof(tracks)} * {nameof(lines)} ({tracks * lines})."); } // should throw an exception if the pattern in question does not exist @@ -182,10 +220,14 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t // memory managed by SunVox var ptr = _lib.sv_get_pattern_data(slotId, patternId); if (ptr == IntPtr.Zero) + { throw new SunVoxException(0, $"{nameof(_lib.sv_get_pattern_data)} returned nullptr."); + } for (var i = 0; i < lines * tracks; i++) + { Marshal.WriteInt64(ptr, i * sizeof(long), unchecked((long)data[i].Data)); + } } /// @@ -253,8 +295,8 @@ public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int { for (var t = 0; t < tracksToIterate; t++) { - var realIndex = (l + readOffsetLines) * realTracks + t + readOffsetTracks; - var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var realIndex = ((l + readOffsetLines) * realTracks) + t + readOffsetTracks; + var bufferIndex = ((l + bufferOffsetLines) * bufferTracks) + t + bufferOffsetTracks; var value = Marshal.ReadInt64(ptr, realIndex * sizeof(ulong)); buffer[bufferIndex] = unchecked((ulong)value); readEventCount++; @@ -329,8 +371,8 @@ public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, in { for (var t = 0; t < tracksToIterate; t++) { - var realIndex = (l + writeOffsetLines) * realTracks + t + writeOffsetTracks; - var bufferIndex = (l + bufferOffsetLines) * bufferTracks + t + bufferOffsetTracks; + var realIndex = ((l + writeOffsetLines) * realTracks) + t + writeOffsetTracks; + var bufferIndex = ((l + bufferOffsetLines) * bufferTracks) + t + bufferOffsetTracks; var value = buffer[bufferIndex].Data; Marshal.WriteInt64(ptr, realIndex * sizeof(ulong), unchecked((long)value)); writeEventCount++; @@ -346,7 +388,9 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, int { var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } } /// @@ -354,7 +398,9 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, Patt { var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + } } /// @@ -362,7 +408,9 @@ public void SetPatternMuted(int slotId, int patternId, bool muted) { var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + } } /// @@ -373,7 +421,9 @@ public void SetPatternName(int slotId, int patternId, string name) { var ret = _lib.sv_set_pattern_name(slotId, patternId, ptr); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name)); + } } finally { @@ -386,7 +436,9 @@ public void SetPatternPosition(int slotId, int patternId, int x, int y) { var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); if (ret != 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy)); + } } /// @@ -394,7 +446,9 @@ public void SetPatternSize(int slotId, int patternId, int? tracks = null, int? l { var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size)); + } } } } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs index cbbc1b3..9506011 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -118,7 +118,10 @@ public int GetSampleRate() { var ret = _lib.sv_get_sample_rate(); if (ret < 1) + { throw new SunVoxException(ret, nameof(_lib.sv_get_sample_rate)); + } + return ret; } @@ -127,7 +130,10 @@ public int GetSongBpm(int slotId) { var ret = _lib.sv_get_song_bpm(slotId); if (ret < 0) + { throw new SunVoxException(ret, nameof(_lib.sv_get_song_bpm)); + } + return ret; } @@ -202,12 +208,12 @@ public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type /// public LibraryVersion Initialize(int sampleRate, string? config = null, - AudioChannels channels = AudioChannels.Stereo, InitFlags flags = InitFlags.None) + AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None) { var ptr = Marshal.StringToHGlobalAnsi(config); try { - var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)flags); + var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)options); if (ret < 0) { throw new SunVoxException(ret, nameof(_lib.sv_init)); @@ -376,7 +382,7 @@ public void SetAutomaticStop(int slotId, bool autoStop) } } - public void SetSendEventTimestamp(int slotId, bool reset = true, int t = 0) + public void SetSendEventTimestamp(int slotId, bool reset, int t) { var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); if (ret != 0) diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index 6190b16..f9acee8 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -6,6 +6,9 @@ namespace SunSharp [StructLayout(LayoutKind.Explicit, Size = 8)] public struct PatternEvent : IEquatable { + /// + /// Gets or sets the raw 64-bit data value. + /// [field: FieldOffset(0)] public ulong Data { get; set; } [field: FieldOffset(0)] public byte NN { get; set; } @@ -127,7 +130,7 @@ public readonly bool Equals(PatternEvent other) public readonly override int GetHashCode() { - return -1945990370 + Data.GetHashCode(); + return Data.GetHashCode(); } } } diff --git a/SunSharp/PatternHandle.cs b/SunSharp/PatternHandle.cs new file mode 100644 index 0000000..c03db5e --- /dev/null +++ b/SunSharp/PatternHandle.cs @@ -0,0 +1,207 @@ +using SunSharp.Native; + +namespace SunSharp +{ + /// + /// Represents a handle to a pattern. The handle may be invalid if the pattern does not exist. + /// + public interface IPatternHandle + { + int Id { get; } + + bool GetExists(); + + string? GetName(); + + void SetName(string name); + + (int x, int y) GetPosition(); + + void SetPosition(int x, int y); + + int GetTrackCount(); + + int GetLength(); + + /// + /// Resize the pattern. + /// + /// to leave as is. + /// to leave as is. + void Resize(int? tracks = null, int? lines = null); + + (PatternEvent[] data, int tracks, int lines)? GetData(); + + void SetData(PatternEvent[] data, int tracks, int lines); + + void SetMuted(int id, bool mute); + + bool GetMuted(int id); + + void SetEvent(int track, int line, PatternEvent patternEvent); + + void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + + int GetEventValue(int track, int line, Column column); + } + + public readonly struct PatternHandle : IPatternHandle + { + private readonly ISunVoxLib _lib; + private readonly int _slotId; + private readonly Slot _slot; + + public int Id { get; } + + public PatternHandle(Timeline timeline, int id) + { + _lib = timeline.Slot.SunVox.Library; + _slot = timeline.Slot; + _slotId = timeline.Slot.Id; + Id = id; + } + + /// + public bool GetExists() + { + return _lib.GetPatternExists(_slotId, Id); + } + + /// + public string? GetName() + { + return _lib.GetPatternName(_slotId, Id); + } + + /// + public void SetName(string name) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + lib.SetPatternName(slotId, id, name); + } + } + + /// + public (int x, int y) GetPosition() + { + return _lib.GetPatternPosition(_slotId, Id); + } + + /// + public void SetPosition(int x, int y) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + using (_slot.AcquireLock()) + { + lib.SetPatternPosition(slotId, id, x, y); + } + } + + /// + public int GetTrackCount() => _lib.GetPatternTracks(_slotId, Id); + + /// + public int GetLength() => _lib.GetPatternLines(_slotId, Id); + + /// + public void Resize(int? tracks = null, int? lines = null) + { + var lib = _lib; + var slotId = _slotId; + var id = Id; + + using (_slot.AcquireLock()) + { + lib.SetPatternSize(slotId, id, tracks, lines); + } + } + + /// + public (PatternEvent[] data, int tracks, int lines)? GetData() + { + var slotId = _slotId; + var id = Id; + var lib = _lib; + using (_slot.AcquireLock()) + { + return lib.GetPatternData(slotId, id); + } + } + + /// + public void SetData(PatternEvent[] data, int tracks, int lines) + { + var slotId = _slotId; + var id = Id; + var lib = _lib; + using (_slot.AcquireLock()) + { + lib.SetPatternData(slotId, id, data, tracks, lines); + } + } + + /// + public void SetMuted(int id, bool mute) + { + var lib = _lib; + var slotId = Id; + using (_slot.AcquireLock()) + { + lib.SetPatternMuted(slotId, id, mute); + } + } + + /// + public bool GetMuted(int id) + { + using (_slot.AcquireLock()) + { + return _lib.GetPatternMuted(Id, id); + } + } + + /// + public void SetEvent(int track, int line, PatternEvent patternEvent) + { + var lib = _lib; + var slotId = Id; + var id = Id; + + using (_slot.AcquireLock()) + { + lib.SetPatternEvent(slotId, id, track, line, patternEvent); + } + } + + /// + public void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + { + var lib = _lib; + var slotId = Id; + var id = Id; + + using (_slot.AcquireLock()) + { + lib.SetPatternEvent(slotId, id, track, line, nn, vv, mm, ccee, xxyy); + } + } + + /// + public int GetEventValue(int track, int line, Column column) + { + var lib = _lib; + var slotId = Id; + var id = Id; + using (_slot.AcquireLock()) + { + return lib.GetPatternEventValue(slotId, id, track, line, column); + } + } + } +} diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs new file mode 100644 index 0000000..a32f544 --- /dev/null +++ b/SunSharp/Slot.cs @@ -0,0 +1,500 @@ +using System; +using SunSharp.Native; + +namespace SunSharp +{ + public sealed class SlotAlreadyOpenException : Exception + { + public SlotAlreadyOpenException() + { + } + + public SlotAlreadyOpenException(int index) : base($"Slot ID={index} is already open.") + { + } + + public SlotAlreadyOpenException(string message) : base(message) + { + } + + public SlotAlreadyOpenException(string message, Exception innerException) : base(message, innerException) + { + } + } + + public sealed class SlotAlreadyClosedException : Exception + { + public SlotAlreadyClosedException() + { + } + + public SlotAlreadyClosedException(int index) : base($"Slot ID={index} is already closed.") + { + } + + public SlotAlreadyClosedException(string message) : base(message) + { + } + + public SlotAlreadyClosedException(string message, Exception innerException) : base(message, innerException) + { + } + } + + /// + /// Represents a SunVox slot. + /// + public interface ISlot + { + int Id { get; } + + /// + /// Virtual, 16-track pattern for sending events to the engine. + /// + IVirtualPattern VirtualPattern { get; } + + /// + /// Project timeline, containing all the existing patterns. + /// + ITimeline Timeline { get; } + + /// + /// Project synthesizer, containing all the existing modules. + /// + ISynthesizer Synthesizer { get; } + + /// + /// SunVox instance this slot belongs to. + /// + ISunVox SunVox { get; } + + /// + /// Underlying library instance. + /// + ISunVoxLib Library { get; } + + /// + /// Gets a value indicating whether the slot is currently open. + /// + bool IsOpen { get; } + + /// + /// Can be used instead of the and methods, + /// taking advantage of the keyword. + /// + IDisposable AcquireLock(); + + /// + /// Locks the library-side reentrant mutex once. + /// + void Lock(); + + /// + /// Unlocks the library-side reentrant mutex once. + /// + void Unlock(); + + /// + /// Opens the slot for use. Uses the shared slot management lock for thread safety. + /// + void Open(); + + /// + /// Closes the slot. Uses the shared slot management lock for thread safety. + /// + void Close(); + + /// + /// Load a project from file. + /// + void Load(string path); + + /// + /// load a project from memory. + /// + void Load(byte[] data); + + /// + /// Save a project to file. + /// + void Save(string path); + + void StartPlayback(); + + void StartPlaybackFromBeginning(); + + void StopPlayback(); + + void ResumeStreamOnSyncEffect(); + + void PauseAudioStream(); + + void ResumeAudioStream(); + + void SetAutomaticStop(bool enable); + + bool GetAutomaticStop(); + + bool IsPlaying(); + + void Rewind(int lineNumber); + + int GetCurrentLine(); + + /// + /// Get current line in fixed point format (with tenth part). + /// + int GetCurrentLineWithTenthPart(); + + int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono); + + int GetVolume(); + + void SetVolume(int value); + + int GetSongBpm(); + + /// + /// Sets the beats per minute (BPM) for the current song. + /// The value is clamped to the range [0, 800]. + /// + void SetSongBpm(int value); + + int GetSongTpl(); + + /// + /// Sets song TPL (ticks per line) by sending a event. + /// The value is clamped to the range [1, 31]. + /// + void SetSongTpl(int value); + + uint GetSongLengthInLines(); + + uint GetSongLengthInFrames(); + + string? GetSongName(); + + void SetSongName(string name); + + /// + /// Get the project time map. + /// + /// + /// For = , n-th value equals speed at the beginning of n-th line (Bpm | Tpl << 16). + /// For = , n-th value equals frame counter at the beginning of Nth line. + /// + uint[] GetTimeMap(int startLine, int length, TimeMapType type); + } + + /// + public sealed class Slot : ISlot + { + /// + public int Id { get; } + + /// + public VirtualPattern VirtualPattern { get; } + + /// + public Timeline Timeline { get; } + + /// + public Synthesizer Synthesizer { get; } + + /// + public SunVox SunVox { get; } + + /// + IVirtualPattern ISlot.VirtualPattern => VirtualPattern; + + /// + ITimeline ISlot.Timeline => Timeline; + + /// + ISynthesizer ISlot.Synthesizer => Synthesizer; + + /// + ISunVox ISlot.SunVox => SunVox; + + /// + public ISunVoxLib Library { get; } + + /// + public bool IsOpen { get; private set; } + + private readonly object _slotManagementLock; + + internal Slot(int id, object slotManagementLock, SunVox sunVox) + { + Id = id; + _slotManagementLock = slotManagementLock; + SunVox = sunVox; + Library = sunVox.Library; + VirtualPattern = new VirtualPattern(this); + Timeline = new Timeline(this); + Synthesizer = new Synthesizer(this); + } + + #region locks + + /// + public void Lock() => Library.LockSlot(Id); + + /// + public void Unlock() => Library.UnlockSlot(Id); + + /// + public IDisposable AcquireLock() + { + return new SlotLock(SunVox, Id); + } + + #endregion locks + + #region open, close + + /// + public void Open() + { + lock (_slotManagementLock) + { + if (IsOpen) + { + throw new SlotAlreadyOpenException(Id); + } + Library.OpenSlot(Id); + IsOpen = true; + using (AcquireLock()) + { + VirtualPattern.ResetEventTiming(); + } + } + } + + /// + public void Close() + { + lock (_slotManagementLock) + { + if (!IsOpen) + { + throw new SlotAlreadyClosedException(Id); + } + + IsOpen = false; + Library.CloseSlot(Id); + } + } + + #endregion open, close + + #region loading, saving + + /// + public void Load(string path) + { + using (AcquireLock()) + { + Library.Load(Id, path); + } + } + + /// + public void Load(byte[] data) + { + using (AcquireLock()) + { + Library.Load(Id, data); + } + } + + /// + public void Save(string path) + { + using (AcquireLock()) + { + Library.Save(Id, path); + } + } + + #endregion loading, saving + + #region playing, stopping + + /// + public void StartPlayback() + { + using (AcquireLock()) + { + Library.StartPlayback(Id); + } + } + + /// + public void StartPlaybackFromBeginning() + { + using (AcquireLock()) + { + Library.StartPlaybackFromBeginning(Id); + } + } + + /// + public void StopPlayback() + { + using (AcquireLock()) + { + Library.StopPlayback(Id); + } + } + + /// + public void ResumeStreamOnSyncEffect() + { + using (AcquireLock()) + { + Library.ResumeStreamOnSyncEffect(Id); + } + } + + /// + public void PauseAudioStream() + { + using (AcquireLock()) + { + Library.PauseAudioStream(Id); + } + } + + /// + public void ResumeAudioStream() + { + using (AcquireLock()) + { + Library.ResumeAudioStream(Id); + } + } + + /// + public void SetAutomaticStop(bool enable) + { + using (AcquireLock()) + { + Library.SetAutomaticStop(Id, enable); + } + } + + /// + public bool GetAutomaticStop() + { + return Library.GetAutomaticStop(Id); + } + + /// + public bool IsPlaying() + { + return Library.IsPlaying(Id); + } + + /// + public void Rewind(int lineNumber) + { + using (AcquireLock()) + { + Library.Rewind(Id, lineNumber); + } + } + + /// + public int GetCurrentLine() + { + return Library.GetCurrentLine(Id); + } + + /// + public int GetCurrentLineWithTenthPart() + { + return Library.GetCurrentLineWithTenthPart(Id); + } + + /// + public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) + { + return Library.GetCurrentSignalLevel(Id, (int)channel); + } + + #endregion playing, stopping + + #region song properties + + /// + public int GetVolume() + { + return Library.Volume(Id, -1); + } + + /// + public void SetVolume(int value) + { + Library.Volume(Id, value); + } + + /// + public int GetSongBpm() + { + return Library.GetSongBpm(Id); + } + + /// + public void SetSongBpm(int value) + { + var xxyy = (ushort)Math.Min(Math.Max(0, value), 800); + VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetBpm, xxyy)); + } + + /// + public int GetSongTpl() + { + return Library.GetSongTpl(Id); + } + + /// + public void SetSongTpl(int value) + { + var xxyy = (ushort)Math.Min(Math.Max(1, value), 31); + VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetPlayingSpeed, xxyy)); + } + + /// + public uint GetSongLengthInLines() + { + return Library.GetSongLengthInLines(Id); + } + + /// + public uint GetSongLengthInFrames() + { + return Library.GetSongLengthInFrames(Id); + } + + /// + public string? GetSongName() + { + return Library.GetSongName(Id); + } + + /// + public void SetSongName(string name) + { + Library.SetSongName(Id, name); + } + + /// + public uint[] GetTimeMap(int startLine, int length, TimeMapType type) + { + return Library.GetTimeMap(Id, startLine, length, type); + } + + #endregion song properties + } +} diff --git a/SunSharp/SlotLock.cs b/SunSharp/SlotLock.cs new file mode 100644 index 0000000..1cbeae7 --- /dev/null +++ b/SunSharp/SlotLock.cs @@ -0,0 +1,49 @@ +using System; + +namespace SunSharp +{ + public sealed class SlotLock : IDisposable + { + private readonly SunVox _instance; + private readonly int _slotId; + private bool _disposed; + + public SlotLock(SunVox sunVox, int slotId) + { + _instance = sunVox; + _slotId = slotId; + sunVox.Library.LockSlot(slotId); + } + + private void ReleaseUnmanagedResources() + { + _instance.Library.UnlockSlot(_slotId); + } + + private void Dispose(bool disposing) + { + if (_disposed) + return; + + ReleaseUnmanagedResources(); + + if (disposing) + { + _instance.Dispose(); + } + + _disposed = true; + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + ~SlotLock() + { + Dispose(false); + } + } +} diff --git a/SunSharp/Slots.cs b/SunSharp/Slots.cs new file mode 100644 index 0000000..211a611 --- /dev/null +++ b/SunSharp/Slots.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; + +namespace SunSharp +{ + public interface ISlots : IEnumerable + { + /// + /// Get a reference to a slot. There are 16 slots, so index must be in range 0-15. + /// + /// + Slot this[int i] { get; } + + /// + /// Try to get and open a new slot. + /// + /// if failed to find an unused slot. + bool TryOpenNewSlot([NotNullWhen(true)] out Slot? slot); + } + + public readonly struct Slots : ISlots + { + public const int SlotCount = 16; + + private readonly Slot[] _slots; + public object SlotManagementLock { get; } + + public Slots(SunVox sunVox) + { + _slots = new Slot[SlotCount]; + SlotManagementLock = new object(); + for (var i = 0; i < SlotCount; i++) + { + _slots[i] = new Slot(i, this, sunVox); + } + } + + /// + public Slot this[int i] + { + get + { + if (i < 0 || i >= SlotCount) + { + throw new ArgumentOutOfRangeException(nameof(i), i, $"Possible values: 0-{SlotCount}."); + } + + return _slots[i]; + } + } + + /// + public bool TryOpenNewSlot([NotNullWhen(true)] out Slot? slot) + { + lock (SlotManagementLock) + { + slot = _slots.FirstOrDefault(s => !s.IsOpen); + slot?.Open(); + return slot != null; + } + } + + public IEnumerator GetEnumerator() => ((IEnumerable)_slots).GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => _slots.GetEnumerator(); + } +} diff --git a/SunSharp/SpecificModules.Generated.cs b/SunSharp/SpecificModules.Generated.cs new file mode 100644 index 0000000..0fde00d --- /dev/null +++ b/SunSharp/SpecificModules.Generated.cs @@ -0,0 +1,7853 @@ +/* + * IMPORTANT! + * Do not modify this file manually. It was generated automatically by the CodeGeneration project. +*/ + +using SunSharp; + +namespace SunSharp.Modules +{ + #region enums + + public enum ADSRCurveType : ushort + { + Linear = 0, + Exp1 = 1, + Exp2 = 2, + Nexp1 = 3, + Nexp2 = 4, + Sin = 5, + Rect = 6, + SmoothRect = 7, + Bit2 = 8, + Bit3 = 9, + Bit4 = 10, + Bit5 = 11, + } + + public enum ADSRMode : ushort + { + Generator = 0, + AmplitudeModulatorMono = 1, + AmplitudeModulatorStereo = 2, + } + + public enum ADSROnNoteOffBehaviour : ushort + { + DoNothing = 0, + StopOnLastNote = 1, + Stop = 2, + } + + public enum ADSROnNoteOnBehaviour : ushort + { + DoNothing = 0, + StartOnFirstNote = 1, + Start = 2, + } + + public enum ADSRSmoothTransitions : ushort + { + Off = 0, + RestartAndVolumeChange = 1, + RestartAndVolumeChangeSmooth = 2, + VolumeChange = 3, + } + + public enum ADSRSustainMode : ushort + { + Off = 0, + On = 1, + Repeat = 2, + } + + public enum AnalogGeneratorEnvelopeMode : ushort + { + Off = 0, + SustainOff = 1, + SustainOn = 2, + } + + public enum AnalogGeneratorFilterType : ushort + { + Off = 0, + LP12dB = 1, + HP12dB = 2, + BP12dB = 3, + BR12dB = 4, + LP24dB = 5, + HP24dB = 6, + BP24dB = 7, + BR24dB = 8, + } + + public enum AnalogGeneratorOsc2Mode : ushort + { + Add = 0, + Sub = 1, + Mul = 2, + Min = 3, + Max = 4, + BitwiseAnd = 5, + BitwiseXor = 6, + } + + public enum AnalogGeneratorWaveform : ushort + { + Triangle = 0, + Saw = 1, + Square = 2, + NoiseSampler = 3, + Drawn = 4, + Sin = 5, + Hsin = 6, + Asin = 7, + DrawnSpline = 8, + NoiseSamplerSpline = 9, + WhiteNoise = 10, + PinkNoise = 11, + RedNoise = 12, + BlueNosie = 13, + VioletNoise = 14, + GreyNoise = 15, + Harmonics = 16, + } + + public enum Channels : ushort + { + Stereo = 0, + Mono = 1, + } + + public enum ChannelsInverted : ushort + { + Mono = 0, + Stereo = 1, + } + + public enum CompressorMode : ushort + { + Peak = 0, + RMS = 1, + PeakZeroLatency = 2, + } + + public enum ControlToNoteOffBehaviour : ushort + { + Nothing = 0, + OnMinPitch = 1, + OnMaxPitch = 2, + } + + public enum ControlToNoteOnBehaviour : ushort + { + Nothing = 0, + OnPitchChange = 1, + } + + public enum DelayUnit : ushort + { + SecondDivBy16384 = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + SecondDivBy44100 = 7, + SecondDivBy48000 = 8, + Sample = 9, + } + + public enum DistortionType : ushort + { + Clipping = 0, + Foldback = 1, + Foldback2 = 2, + Foldback3 = 3, + Overflow = 4, + Overflow2 = 5, + SaturationFoldback = 6, + SaturationFoldbackSin = 7, + Saturation3 = 8, + Saturation4 = 9, + Saturation5 = 10, + } + + public enum EchoDelayUnit : ushort + { + SecondDivBy256 = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum EchoFilter : ushort + { + Off = 0, + LP6dB = 1, + HP6dB = 2, + } + + public enum FFTBufferOverlap : ushort + { + None = 0, + x2 = 1, + x4 = 2, + } + + public enum FFTBufferSize : ushort + { + x64 = 0, + x128 = 1, + x256 = 2, + x512 = 3, + x1024 = 4, + x2048 = 5, + x4096 = 6, + x8192 = 7, + } + + public enum FFTSampleRate : ushort + { + Hz8000 = 0, + Hz11025 = 1, + Hz16000 = 2, + Hz22050 = 3, + Hz32000 = 4, + Hz44100 = 5, + Hz48000 = 6, + Hz88200 = 7, + Hz96000 = 8, + Hz192000 = 9, + } + + public enum FilterLFOFrequencyUnit : ushort + { + FiveHundredthHz = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum FilterLFOWaveform : ushort + { + Sin = 0, + Saw = 1, + Saw2 = 2, + Square = 3, + Random = 4, + } + + public enum FilterProMode : ushort + { + Stereo = 0, + Mono = 1, + StereoSmoothing = 2, + MonoSmoothing = 3, + } + + public enum FilterProRollOff : ushort + { + dB12 = 0, + dB24 = 1, + dB36 = 2, + dB48 = 3, + } + + public enum FilterProType : ushort + { + LP = 0, + HP = 1, + BPConstSkirtGain = 2, + BPConstPeakGain = 3, + Notch = 4, + AllPass = 5, + Peaking = 6, + LowShelf = 7, + HighShelf = 8, + LP6dB = 9, + HP6dB = 10, + } + + public enum FilterRollOff : ushort + { + dB12 = 0, + dB24 = 1, + dB36 = 2, + dB48 = 3, + } + + public enum FilterType : ushort + { + LP = 0, + HP = 1, + BP = 2, + Notch = 3, + } + + public enum FlangerLFOFrequencyUnit : ushort + { + FiveHundredthHz = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum FlangerLFOWaveform : ushort + { + Hsin = 0, + Sin = 1, + } + + public enum FMXCustomWaveform : ushort + { + Off = 0, + SingleCycle = 1, + Continuous = 2, + } + + public enum FMXModulationType : ushort + { + Phase = 0, + Frequency = 1, + Amplitude = 2, + Add = 3, + Sub = 4, + Min = 5, + Max = 6, + And = 7, + Xor = 8, + PhasePlus = 9, + } + + public enum FMXSampleRate : ushort + { + Hz8000 = 0, + Hz11025 = 1, + Hz16000 = 2, + Hz22050 = 3, + Hz32000 = 4, + Hz44100 = 5, + Native = 6, + } + + public enum FMXWaveform : ushort + { + Custom = 0, + Triangle = 1, + Triangle3 = 2, + Saw = 3, + Saw3 = 4, + Square = 5, + Sin = 6, + Hsin = 7, + Asin = 8, + Sin3 = 9, + } + + public enum GeneratorWaveform : ushort + { + Triangle = 0, + Saw = 1, + Square = 2, + NoiseSampler = 3, + Drawn = 4, + Sin = 5, + Hsin = 6, + Asin = 7, + Rsin = 8, + } + + public enum KickerWaveform : ushort + { + Triangle = 0, + Square = 1, + Sin = 2, + } + + public enum LFOFrequencyUnit : ushort + { + HzDividedBy64 = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum LFOSineQuality : ushort + { + Auto = 0, + Low = 1, + Middle = 2, + High = 3, + } + + public enum LFOSmoothTransitions : ushort + { + Off = 0, + Waveform = 1, + } + + public enum LFOType : ushort + { + Amplitude = 0, + Panning = 1, + } + + public enum LFOWaveform : ushort + { + Sin = 0, + Square = 1, + Sin2 = 2, + Saw = 3, + Saw2 = 4, + Random = 5, + Triangle = 6, + RandomInterpolated = 7, + } + + public enum LoopMode : ushort + { + Normal = 0, + PingPong = 1, + } + + public enum LoopOnNoteOn : ushort + { + Restart = 0, + RestartCurrentIteration = 1, + } + + public enum LoopTimeUnit : ushort + { + LineDivBy128 = 0, + Line = 1, + HalfLine = 2, + OneThirdLine = 3, + Tick = 4, + Millisecond = 5, + Hz = 6, + } + + public enum MetaModulePatternMode : ushort + { + Off = 0, + OnRepeat = 1, + OnNoRepeat = 2, + OnRepeatEndless = 3, + OnNoRepeatEndless = 4, + } + + public enum ModulationType : ushort + { + Amplitude = 0, + Phase = 1, + PhaseAbsolute = 2, + } + + public enum PitchDetectorAlgorithm : ushort + { + FastZeroCrossing = 0, + Autocorrelation = 1, + Cepstrum = 2, + } + + public enum PitchDetectorAlgSampleRate : ushort + { + Hz12000 = 0, + Hz24000 = 1, + Hz44100 = 2, + } + + public enum PitchDetectorBufferSize : ushort + { + Ms5 = 0, + Ms10 = 1, + Ms21 = 2, + Ms42 = 3, + Ms85 = 4, + } + + public enum PitchShifterBypassMode : ushort + { + Off = 0, + SlowTransition = 1, + FastTransition = 2, + } + + public enum PitchToControlMode : ushort + { + FrequencyHz = 0, + Pitch = 1, + } + + public enum PitchToControlOnNoteOff : ushort + { + DoNothing = 0, + PitchDown = 1, + PitchUp = 2, + } + + public enum Quality : ushort + { + HQ = 0, + HQMono = 1, + LQ = 2, + LQMono = 3, + } + + public enum SamplerEnvelopeInterpolation : ushort + { + Off = 0, + Linear = 1, + } + + public enum SamplerInterpolation : ushort + { + Off = 0, + Linear = 1, + Spline = 2, + } + + public enum SoundToControlMode : ushort + { + LQ = 0, + HQ = 1, + } + + public enum SpectraVoiceHarmonicType : ushort + { + Hsin = 0, + Rect = 1, + Org1 = 2, + Org2 = 3, + Org3 = 4, + Org4 = 5, + Sin = 6, + Random = 7, + Triangle1 = 8, + Triangle2 = 9, + Overtones1 = 10, + Overtones2 = 11, + Overtones3 = 12, + Overtones4 = 13, + Overtones1Plus = 14, + Overtones2Plus = 15, + Overtones3Plus = 16, + Overtones4Plus = 17, + Metal = 18, + } + + public enum SpectraVoiceMode : ushort + { + HQ = 0, + HQMono = 1, + LQ = 2, + LQMono = 3, + HQSpline = 4, + } + + public enum SpectraVoiceResolution : ushort + { + Size4096 = 0, + Size8192 = 1, + Size16384 = 2, + Size32768 = 3, + Size65536 = 4, + Size131072 = 5, + } + + public enum Toggle : ushort + { + Off = 0, + On = 1, + } + + public enum ToggleInverse : ushort + { + On = 0, + Off = 1, + } + + public enum VelocityToControlOnNoteOff : ushort + { + DoNothing = 0, + VelocityDown = 1, + VelocityUp = 2, + } + + public enum VibratoFrequencyUnit : ushort + { + HzDividedBy64 = 0, + Millisecond = 1, + Hz = 2, + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum VocalFilterVoiceType : ushort + { + Soprano = 0, + Alto = 1, + Tenor = 2, + Bass = 3, + } + + public enum VocalFilterVowel : ushort + { + A = 0, + E = 1, + I = 2, + O = 3, + U = 4, + } + + #endregion enums + + public static class ModuleExtensions + { + public static ADSRModuleHandle AsADSR(this ModuleHandle module) => new ADSRModuleHandle(module); + + public static AmplifierModuleHandle AsAmplifier(this ModuleHandle module) => new AmplifierModuleHandle(module); + + public static AnalogGeneratorModuleHandle AsAnalogGenerator(this ModuleHandle module) => new AnalogGeneratorModuleHandle(module); + + public static CompressorModuleHandle AsCompressor(this ModuleHandle module) => new CompressorModuleHandle(module); + + public static ControlToNoteModuleHandle AsControlToNote(this ModuleHandle module) => new ControlToNoteModuleHandle(module); + + public static DcBlockerModuleHandle AsDcBlocker(this ModuleHandle module) => new DcBlockerModuleHandle(module); + + public static DelayModuleHandle AsDelay(this ModuleHandle module) => new DelayModuleHandle(module); + + public static DistortionModuleHandle AsDistortion(this ModuleHandle module) => new DistortionModuleHandle(module); + + public static DrumSynthModuleHandle AsDrumSynth(this ModuleHandle module) => new DrumSynthModuleHandle(module); + + public static EchoModuleHandle AsEcho(this ModuleHandle module) => new EchoModuleHandle(module); + + public static EQModuleHandle AsEQ(this ModuleHandle module) => new EQModuleHandle(module); + + public static FeedbackModuleHandle AsFeedback(this ModuleHandle module) => new FeedbackModuleHandle(module); + + public static FFTModuleHandle AsFFT(this ModuleHandle module) => new FFTModuleHandle(module); + + public static FilterModuleHandle AsFilter(this ModuleHandle module) => new FilterModuleHandle(module); + + public static FilterProModuleHandle AsFilterPro(this ModuleHandle module) => new FilterProModuleHandle(module); + + public static FlangerModuleHandle AsFlanger(this ModuleHandle module) => new FlangerModuleHandle(module); + + public static FMModuleHandle AsFM(this ModuleHandle module) => new FMModuleHandle(module); + + public static FMXModuleHandle AsFMX(this ModuleHandle module) => new FMXModuleHandle(module); + + public static GeneratorModuleHandle AsGenerator(this ModuleHandle module) => new GeneratorModuleHandle(module); + + public static GlideModuleHandle AsGlide(this ModuleHandle module) => new GlideModuleHandle(module); + + public static GPIOModuleHandle AsGPIO(this ModuleHandle module) => new GPIOModuleHandle(module); + + public static InputModuleHandle AsInput(this ModuleHandle module) => new InputModuleHandle(module); + + public static KickerModuleHandle AsKicker(this ModuleHandle module) => new KickerModuleHandle(module); + + public static LFOModuleHandle AsLFO(this ModuleHandle module) => new LFOModuleHandle(module); + + public static LoopModuleHandle AsLoop(this ModuleHandle module) => new LoopModuleHandle(module); + + public static MetaModuleModuleHandle AsMetaModule(this ModuleHandle module) => new MetaModuleModuleHandle(module); + + public static ModulatorModuleHandle AsModulator(this ModuleHandle module) => new ModulatorModuleHandle(module); + + public static MultiControlModuleHandle AsMultiControl(this ModuleHandle module) => new MultiControlModuleHandle(module); + + public static MultiSynthModuleHandle AsMultiSynth(this ModuleHandle module) => new MultiSynthModuleHandle(module); + + public static OutputModuleHandle AsOutput(this ModuleHandle module) => new OutputModuleHandle(module); + + public static PitchDetectorModuleHandle AsPitchDetector(this ModuleHandle module) => new PitchDetectorModuleHandle(module); + + public static PitchShifterModuleHandle AsPitchShifter(this ModuleHandle module) => new PitchShifterModuleHandle(module); + + public static PitchToControlModuleHandle AsPitchToControl(this ModuleHandle module) => new PitchToControlModuleHandle(module); + + public static ReverbModuleHandle AsReverb(this ModuleHandle module) => new ReverbModuleHandle(module); + + public static SamplerModuleHandle AsSampler(this ModuleHandle module) => new SamplerModuleHandle(module); + + public static SoundToControlModuleHandle AsSoundToControl(this ModuleHandle module) => new SoundToControlModuleHandle(module); + + public static SpectraVoiceModuleHandle AsSpectraVoice(this ModuleHandle module) => new SpectraVoiceModuleHandle(module); + + public static VelocityToControlModuleHandle AsVelocityToControl(this ModuleHandle module) => new VelocityToControlModuleHandle(module); + + public static VibratoModuleHandle AsVibrato(this ModuleHandle module) => new VibratoModuleHandle(module); + + public static VocalFilterModuleHandle AsVocalFilter(this ModuleHandle module) => new VocalFilterModuleHandle(module); + + public static VorbisPlayerModuleHandle AsVorbisPlayer(this ModuleHandle module) => new VorbisPlayerModuleHandle(module); + + public static WaveShaperModuleHandle AsWaveShaper(this ModuleHandle module) => new WaveShaperModuleHandle(module); + } + + public struct ADSRModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public ADSRModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Attack + /// Value range: 0 to 10000 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 10000 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Decay + /// Value range: 0 to 10000 + /// + public int GetDecay() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Decay + /// Value range: 0 to 10000 + /// + public void SetDecay(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo + /// + public ADSRMode GetMode() => (ADSRMode)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo + /// + public void SetMode(ADSRMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, StopOnLastNote, Stop + /// + public ADSROnNoteOffBehaviour GetOnNoteOff() => (ADSROnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, StopOnLastNote, Stop + /// + public void SetOnNoteOff(ADSROnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteON + /// Possible values: DoNothing, StartOnFirstNote, Start + /// + public ADSROnNoteOnBehaviour GetOnNoteOn() => (ADSROnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteON + /// Possible values: DoNothing, StartOnFirstNote, Start + /// + public void SetOnNoteOn(ADSROnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 10000 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 10000 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth transitions + /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange + /// + public ADSRSmoothTransitions GetSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth transitions + /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange + /// + public void SetSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: State + /// Possible values: Off, On + /// + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: State + /// Possible values: Off, On + /// + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain() => (ADSRSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain(ADSRSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct AmplifierModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public AmplifierModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Absolute + /// Possible values: Off, On + /// + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Absolute + /// Possible values: Off, On + /// + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Balance + /// Value range: -128 to 128 + /// + public int GetBalance() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Balance + /// Value range: -128 to 128 + /// + public void SetBalance(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Bipolar DC Offset + /// Value range: -16384 to 16384 + /// + public int GetBipolarDCOffset() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Bipolar DC Offset + /// Value range: -16384 to 16384 + /// + public void SetBipolarDCOffset(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: DC Offset + /// Value range: -128 to 128 + /// + public int GetDCOffset() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: DC Offset + /// Value range: -128 to 128 + /// + public void SetDCOffset(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Fine volume + /// Value range: 0 to 32768 + /// + public int GetFineVolume() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Fine volume + /// Value range: 0 to 32768 + /// + public void SetFineVolume(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 5000 + /// + public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 5000 + /// + public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Inverse + /// Possible values: Off, On + /// + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Inverse + /// Possible values: Off, On + /// + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Stereo width + /// Value range: 0 to 256 + /// + public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Stereo width + /// Value range: 0 to 256 + /// + public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct AnalogGeneratorModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public AnalogGeneratorModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Attack + /// Value range: 0 to 256 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 256 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 1024 + /// + public int GetDutyCycle() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 1024 + /// + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential envelope + /// Possible values: Off, On + /// + public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential envelope + /// Possible values: Off, On + /// + public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: F.attack + /// Value range: 0 to 256 + /// + public int GetFAttack() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: F.attack + /// Value range: 0 to 256 + /// + public void SetFAttack(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: F.envelope + /// Possible values: Off, SustainOff, SustainOn + /// + public AnalogGeneratorEnvelopeMode GetFEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + /// Original name: F.envelope + /// Possible values: Off, SustainOff, SustainOn + /// + public void SetFEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: F.exponential freq + /// Possible values: Off, On + /// + public Toggle GetFExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: F.exponential freq + /// Possible values: Off, On + /// + public void SetFExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: F.freq + /// Value range: 0 to 14000 + /// + public int GetFFreq() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: F.freq + /// Value range: 0 to 14000 + /// + public void SetFFreq(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Filter + /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB + /// + public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Filter + /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB + /// + public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: F.release + /// Value range: 0 to 256 + /// + public int GetFRelease() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: F.release + /// Value range: 0 to 256 + /// + public void SetFRelease(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); + + /// + /// Original name: F.resonance + /// Value range: 0 to 1530 + /// + public int GetFResonance() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: F.resonance + /// Value range: 0 to 1530 + /// + public void SetFResonance(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Noise + /// Value range: 0 to 256 + /// + public int GetNoise() => ModuleHandle.GetControllerValue(18, ValueScalingMode.Displayed); + + /// + /// Original name: Noise + /// Value range: 0 to 256 + /// + public void SetNoise(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 + /// Value range: -1000 to 1000 + /// + public int GetOsc2() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 + /// Value range: -1000 to 1000 + /// + public void SetOsc2(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 mode + /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor + /// + public AnalogGeneratorOsc2Mode GetOsc2Mode() => (AnalogGeneratorOsc2Mode)ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 mode + /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor + /// + public void SetOsc2Mode(AnalogGeneratorOsc2Mode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 phase + /// Value range: 0 to 32768 + /// + public int GetOsc2Phase() => ModuleHandle.GetControllerValue(21, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 phase + /// Value range: 0 to 32768 + /// + public void SetOsc2Phase(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 volume + /// Value range: 0 to 32768 + /// + public int GetOsc2Volume() => ModuleHandle.GetControllerValue(19, ValueScalingMode.Displayed); + + /// + /// Original name: Osc2 volume + /// Value range: 0 to 32768 + /// + public void SetOsc2Volume(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 256 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 256 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics + /// + public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics + /// + public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + + #region curves + + /// + /// Read DrawnValues containing 32 values. + /// Value range: -1 to 1. + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. + /// + public void ReadDrawnValues(float[] buffer) + { + if (buffer.Length < 32) + throw new System.ArgumentException("Buffer must be at least of size 32"); + + ModuleHandle.ReadCurve(0, buffer); + } + + /// + /// Write DrawnValues containing 32 values. + /// Value range: -1 to 1. + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. + /// + public void WriteDrawnValues(float[] buffer) + { + if (buffer.Length < 32) + throw new System.ArgumentException("Buffer must be at least of size 32"); + + ModuleHandle.WriteCurve(0, buffer); + } + + #endregion curves + } + + public struct CompressorModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public CompressorModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Attack + /// Value range: 0 to 500 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 500 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Peak, RMS, PeakZeroLatency + /// + public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Peak, RMS, PeakZeroLatency + /// + public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 1 to 1000 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 1 to 1000 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Side-chain input + /// Value range: 0 to 32 + /// + public int GetSideChainInput() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Side-chain input + /// Value range: 0 to 32 + /// + public void SetSideChainInput(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Slope + /// Value range: 0 to 200 + /// + public int GetSlope() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Slope + /// Value range: 0 to 200 + /// + public void SetSlope(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Threshold + /// Value range: 0 to 512 + /// + public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Threshold + /// Value range: 0 to 512 + /// + public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct ControlToNoteModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public ControlToNoteModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Finetune + /// Value range: -256 to 256 + /// + public int GetFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Finetune + /// Value range: -256 to 256 + /// + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: First note + /// Value range: 0 to 120 + /// + public int GetFirstNote() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: First note + /// Value range: 0 to 120 + /// + public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: NoteOFF + /// Possible values: Nothing, OnMinPitch, OnMaxPitch + /// + public ControlToNoteOffBehaviour GetNoteOff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: NoteOFF + /// Possible values: Nothing, OnMinPitch, OnMaxPitch + /// + public void SetNoteOff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: NoteON + /// Possible values: Nothing, OnPitchChange + /// + public ControlToNoteOnBehaviour GetNoteOn() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: NoteON + /// Possible values: Nothing, OnPitchChange + /// + public void SetNoteOn(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch + /// Value range: 0 to 32768 + /// + public int GetPitch() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch + /// Value range: 0 to 32768 + /// + public void SetPitch(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Range (number of semitones) + /// Value range: 0 to 120 + /// + public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Range (number of semitones) + /// Value range: 0 to 120 + /// + public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Record notes + /// Possible values: Off, On + /// + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Record notes + /// Possible values: Off, On + /// + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: State + /// Possible values: Off, On + /// + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: State + /// Possible values: Off, On + /// + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Velocity + /// Value range: 0 to 256 + /// + public int GetVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Velocity + /// Value range: 0 to 256 + /// + public void SetVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct DcBlockerModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public DcBlockerModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct DelayModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public DelayModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Delay L + /// Value range: 0 to 256 + /// + public int GetDelayL() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Delay L + /// Value range: 0 to 256 + /// + public void SetDelayL(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Delay multiplier + /// Value range: 1 to 15 + /// + public int GetDelayMultiplier() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Delay multiplier + /// Value range: 1 to 15 + /// + public void SetDelayMultiplier(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Delay R + /// Value range: 0 to 256 + /// + public int GetDelayR() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Delay R + /// Value range: 0 to 256 + /// + public void SetDelayR(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Delay unit + /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample + /// + public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Delay unit + /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample + /// + public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 512 + /// + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 512 + /// + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Inverse + /// Possible values: Off, On + /// + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Inverse + /// Possible values: Off, On + /// + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume L + /// Value range: 0 to 256 + /// + public int GetVolumeL() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Volume L + /// Value range: 0 to 256 + /// + public void SetVolumeL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume R + /// Value range: 0 to 256 + /// + public int GetVolumeR() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Volume R + /// Value range: 0 to 256 + /// + public void SetVolumeR(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 512 + /// + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 512 + /// + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct DistortionModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public DistortionModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Bit depth + /// Value range: 1 to 16 + /// + public int GetBitDepth() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Bit depth + /// Value range: 1 to 16 + /// + public void SetBitDepth(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 + /// + public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 + /// + public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 44100 + /// + public int GetFreq() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 44100 + /// + public void SetFreq(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Noise + /// Value range: 0 to 256 + /// + public int GetNoise() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Noise + /// Value range: 0 to 256 + /// + public void SetNoise(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Power + /// Value range: 0 to 256 + /// + public int GetPower() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Power + /// Value range: 0 to 256 + /// + public void SetPower(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct DrumSynthModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public DrumSynthModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Bass length + /// Value range: 0 to 256 + /// + public int GetBassLength() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Bass length + /// Value range: 0 to 256 + /// + public void SetBassLength(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Bass panning + /// Value range: -128 to 128 + /// + public int GetBassPanning() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: Bass panning + /// Value range: -128 to 128 + /// + public void SetBassPanning(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); + + /// + /// Original name: Bass power + /// Value range: 0 to 256 + /// + public int GetBassPower() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Bass power + /// Value range: 0 to 256 + /// + public void SetBassPower(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Bass tone + /// Value range: 0 to 256 + /// + public int GetBassTone() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Bass tone + /// Value range: 0 to 256 + /// + public void SetBassTone(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Bass volume + /// Value range: 0 to 512 + /// + public int GetBassVolume() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Bass volume + /// Value range: 0 to 512 + /// + public void SetBassVolume(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat length + /// Value range: 0 to 256 + /// + public int GetHihatLength() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat length + /// Value range: 0 to 256 + /// + public void SetHihatLength(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat panning + /// Value range: -128 to 128 + /// + public int GetHihatPanning() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat panning + /// Value range: -128 to 128 + /// + public void SetHihatPanning(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat volume + /// Value range: 0 to 512 + /// + public int GetHihatVolume() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Hihat volume + /// Value range: 0 to 512 + /// + public void SetHihatVolume(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 8 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 8 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Snare length + /// Value range: 0 to 256 + /// + public int GetSnareLength() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Snare length + /// Value range: 0 to 256 + /// + public void SetSnareLength(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: Snare panning + /// Value range: -128 to 128 + /// + public int GetSnarePanning() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: Snare panning + /// Value range: -128 to 128 + /// + public void SetSnarePanning(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); + + /// + /// Original name: Snare tone + /// Value range: 0 to 256 + /// + public int GetSnareTone() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Snare tone + /// Value range: 0 to 256 + /// + public void SetSnareTone(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Snare volume + /// Value range: 0 to 512 + /// + public int GetSnareVolume() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Snare volume + /// Value range: 0 to 512 + /// + public void SetSnareVolume(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct EchoModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public EchoModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Delay + /// Value range: 0 to 256 + /// + public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Delay + /// Value range: 0 to 256 + /// + public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Delay unit + /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Delay unit + /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: F.freq + /// Value range: 0 to 22000 + /// + public int GetFFreq() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: F.freq + /// Value range: 0 to 22000 + /// + public void SetFFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Filter + /// Possible values: Off, LP6dB, HP6dB + /// + public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Filter + /// Possible values: Off, LP6dB, HP6dB + /// + public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Right channel offset + /// Possible values: Off, On + /// + public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Right channel offset + /// Possible values: Off, On + /// + public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Right channel offset + /// Value range: 0 to 32768 + /// Delay/32768 + /// + public int GetRightChannelOffsetDelay() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Right channel offset + /// Value range: 0 to 32768 + /// Delay/32768 + /// + public void SetRightChannelOffsetDelay(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct EQModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public EQModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: High + /// Value range: 0 to 512 + /// + public int GetHigh() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: High + /// Value range: 0 to 512 + /// + public void SetHigh(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Low + /// Value range: 0 to 512 + /// + public int GetLow() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Low + /// Value range: 0 to 512 + /// + public void SetLow(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Middle + /// Value range: 0 to 512 + /// + public int GetMiddle() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Middle + /// Value range: 0 to 512 + /// + public void SetMiddle(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FeedbackModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FeedbackModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 10000 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 10000 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FFTModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FFTModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: All-pass filter + /// Value range: 0 to 32768 + /// + public int GetAllPassFilter() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: All-pass filter + /// Value range: 0 to 32768 + /// + public void SetAllPassFilter(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Buffer (samples) + /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 + /// + public FFTBufferSize GetBufferSamples() => (FFTBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Buffer (samples) + /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 + /// + public void SetBufferSamples(FFTBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Buf overlap + /// Possible values: None, x2, x4 + /// + public FFTBufferOverlap GetBufOverlap() => (FFTBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Buf overlap + /// Possible values: None, x2, x4 + /// + public void SetBufOverlap(FFTBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Deform1 + /// Value range: 0 to 32768 + /// + public int GetDeform1() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: Deform1 + /// Value range: 0 to 32768 + /// + public void SetDeform1(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); + + /// + /// Original name: Deform2 + /// Value range: 0 to 32768 + /// + public int GetDeform2() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: Deform2 + /// Value range: 0 to 32768 + /// + public void SetDeform2(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq shift + /// Value range: -4096 to 4096 + /// + public int GetFreqShift() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Freq shift + /// Value range: -4096 to 4096 + /// + public void SetFreqShift(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency spread + /// Value range: 0 to 32768 + /// + public int GetFrequencySpread() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency spread + /// Value range: 0 to 32768 + /// + public void SetFrequencySpread(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: HP cutoff + /// Value range: 0 to 32768 + /// + public int GetHPCutoff() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: HP cutoff + /// Value range: 0 to 32768 + /// + public void SetHPCutoff(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); + + /// + /// Original name: LP cutoff + /// Value range: 0 to 32768 + /// + public int GetLPCutoff() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + /// Original name: LP cutoff + /// Value range: 0 to 32768 + /// + public void SetLPCutoff(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); + + /// + /// Original name: Noise reduction + /// Value range: 0 to 32768 + /// + public int GetNoiseReduction() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Noise reduction + /// Value range: 0 to 32768 + /// + public void SetNoiseReduction(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Phase gain (norm=16384) + /// Value range: 0 to 32768 + /// + public int GetPhaseGainNorm16384() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Phase gain (norm=16384) + /// Value range: 0 to 32768 + /// + public void SetPhaseGainNorm16384(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase + /// Value range: 0 to 32768 + /// + public int GetRandomPhase() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase + /// Value range: 0 to 32768 + /// + public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase (lite) + /// Value range: 0 to 32768 + /// + public int GetRandomPhaseLite() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase (lite) + /// Value range: 0 to 32768 + /// + public void SetRandomPhaseLite(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 + /// + public FFTSampleRate GetSampleRate() => (FFTSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 + /// + public void SetSampleRate(FFTSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FilterModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FilterModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Exponential freq + /// Possible values: Off, On + /// + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential freq + /// Possible values: Off, On + /// + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: LP, HP, BP, Notch + /// + public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: LP, HP, BP, Notch + /// + public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 14000 + /// + public int GetFrequency() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 14000 + /// + public void SetFrequency(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Impulse + /// Value range: 0 to 14000 + /// + public int GetImpulse() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Impulse + /// Value range: 0 to 14000 + /// + public void SetImpulse(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 256 + /// + public int GetLFOAmp() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 256 + /// + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 1024 + /// + public int GetLFOFreq() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 1024 + /// + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Sin, Saw, Saw2, Square, Random + /// + public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Sin, Saw, Saw2, Square, Random + /// + public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 256 + /// + public int GetMix() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 256 + /// + public void SetMix(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Resonance + /// Value range: 0 to 1530 + /// + public int GetResonance() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Resonance + /// Value range: 0 to 1530 + /// + public void SetResonance(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 256 + /// + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 256 + /// + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: Roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FilterProModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FilterProModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Exponential freq + /// Possible values: Off, On + /// + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential freq + /// Possible values: Off, On + /// + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB + /// + public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB + /// + public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 22000 + /// + public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 0 to 22000 + /// + public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq finetune + /// Value range: -1000 to 1000 + /// + public int GetFreqFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Freq finetune + /// Value range: -1000 to 1000 + /// + public void SetFreqFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq scale + /// Value range: 0 to 200 + /// + public int GetFreqScale() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Freq scale + /// Value range: 0 to 200 + /// + public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: -16384 to 16384 + /// + public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: -16384 to 16384 + /// + public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 32768 + /// + public int GetLFOAmp() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 32768 + /// + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 1024 + /// + public int GetLFOFreq() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 1024 + /// + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Sin, Saw, Saw2, Square, Random + /// + public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Sin, Saw, Saw2, Square, Random + /// + public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 32768 + /// + public int GetMix() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 32768 + /// + public void SetMix(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing + /// + public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing + /// + public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Q + /// Value range: 0 to 32768 + /// + public int GetQ() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Q + /// Value range: 0 to 32768 + /// + public void SetQ(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public int GetResponse() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public void SetResponse(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FlangerModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FlangerModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Delay + /// Value range: 8 to 1000 + /// + public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Delay + /// Value range: 8 to 1000 + /// + public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 256 + /// + public int GetLFOAmp() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: LFO amp + /// Value range: 0 to 256 + /// + public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 512 + /// + public int GetLFOFreq() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq + /// Value range: 0 to 512 + /// + public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public FlangerLFOFrequencyUnit GetLFOFreqUnit() => (FlangerLFOFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: LFO freq unit + /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetLFOFreqUnit(FlangerLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Hsin, Sin + /// + public FlangerLFOWaveform GetLFOWaveform() => (FlangerLFOWaveform)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: LFO waveform + /// Possible values: Hsin, Sin + /// + public void SetLFOWaveform(FlangerLFOWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 256 + /// + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 256 + /// + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Set LFO phase + /// Value range: 0 to 256 + /// + public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FMModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FMModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: C.Attack + /// Value range: 0 to 512 + /// + public int GetCAttack() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: C.Attack + /// Value range: 0 to 512 + /// + public void SetCAttack(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: C.Decay + /// Value range: 0 to 512 + /// + public int GetCDecay() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: C.Decay + /// Value range: 0 to 512 + /// + public void SetCDecay(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: C.Freq ratio + /// Value range: 0 to 16 + /// + public int GetCFreqRatio() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: C.Freq ratio + /// Value range: 0 to 16 + /// + public void SetCFreqRatio(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: C.Release + /// Value range: 0 to 512 + /// + public int GetCRelease() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: C.Release + /// Value range: 0 to 512 + /// + public void SetCRelease(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: C.Sustain + /// Value range: 0 to 256 + /// + public int GetCSustain() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: C.Sustain + /// Value range: 0 to 256 + /// + public void SetCSustain(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: C.Volume + /// Value range: 0 to 256 + /// + public int GetCVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: C.Volume + /// Value range: 0 to 256 + /// + public void SetCVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Attack + /// Value range: 0 to 512 + /// + public int GetMAttack() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: M.Attack + /// Value range: 0 to 512 + /// + public void SetMAttack(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Decay + /// Value range: 0 to 512 + /// + public int GetMDecay() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: M.Decay + /// Value range: 0 to 512 + /// + public void SetMDecay(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Freq ratio + /// Value range: 0 to 16 + /// + public int GetMFreqRatio() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: M.Freq ratio + /// Value range: 0 to 16 + /// + public void SetMFreqRatio(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Release + /// Value range: 0 to 512 + /// + public int GetMRelease() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: M.Release + /// Value range: 0 to 512 + /// + public void SetMRelease(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Scaling per key + /// Value range: 0 to 4 + /// + public int GetMScalingPerKey() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: M.Scaling per key + /// Value range: 0 to 4 + /// + public void SetMScalingPerKey(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Self-modulation + /// Value range: 0 to 256 + /// + public int GetMSelfModulation() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: M.Self-modulation + /// Value range: 0 to 256 + /// + public void SetMSelfModulation(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Sustain + /// Value range: 0 to 256 + /// + public int GetMSustain() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: M.Sustain + /// Value range: 0 to 256 + /// + public void SetMSustain(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); + + /// + /// Original name: M.Volume + /// Value range: 0 to 256 + /// + public int GetMVolume() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: M.Volume + /// Value range: 0 to 256 + /// + public void SetMVolume(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 16 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 16 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct FMXModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public FMXModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region module type-specific methods + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetVolume(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(9 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetVolume(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(9 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public int GetAttack(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(14 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public void SetAttack(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(14 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public int GetDecay(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(19 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public void SetDecay(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(19 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetSustainLevel(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetSustainLevel(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public int GetRelease(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(29 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 10000 + /// + public void SetRelease(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(29 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (ADSRCurveType)ModuleHandle.GetControllerValue(34 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve(int index, ADSRCurveType value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(34 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (ADSRCurveType)ModuleHandle.GetControllerValue(39 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve(int index, ADSRCurveType value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(39 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (ADSRCurveType)ModuleHandle.GetControllerValue(44 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve(int index, ADSRCurveType value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(44 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetSustain(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetSustain(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Off, On + /// + public Toggle GetSustainPedal(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (Toggle)ModuleHandle.GetControllerValue(54 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Off, On + /// + public void SetSustainPedal(int index, Toggle value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(54 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(59 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(59 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(64 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(64 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(69 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(69 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (FMXWaveform)ModuleHandle.GetControllerValue(74 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform(int index, FMXWaveform value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(74 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetNoise(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(79 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetNoise(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(79 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetPhase(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(84 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetPhase(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(84 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(89 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(89 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(94 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(94 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetSelfModulation(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(99 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetSelfModulation(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(99 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public int GetFeedback(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return ModuleHandle.GetControllerValue(104 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Value range: 0 to 32768 + /// + public void SetFeedback(int index, int value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(104 + index - 1, value, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType(int index) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + return (FMXModulationType)ModuleHandle.GetControllerValue(109 + index - 1, ValueScalingMode.Displayed); + } + + /// + /// index range: 1 to 5 + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType(int index, FMXModulationType value) + { + if (index < 1 || index > 5) + throw new System.ArgumentOutOfRangeException(nameof(index)); + + ModuleHandle.SetControllerValue(109 + index - 1, (int)value, ValueScalingMode.Displayed); + } + + #endregion module type-specific methods + + #region controllers + + /// + /// Original name: ADSR smooth transitions + /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange + /// + public ADSRSmoothTransitions GetADSRSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: ADSR smooth transitions + /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange + /// + public void SetADSRSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Attack + /// Value range: 0 to 10000 + /// + public int GetAttack1() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Attack + /// Value range: 0 to 10000 + /// + public void SetAttack1(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Attack + /// Value range: 0 to 10000 + /// + public int GetAttack2() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Attack + /// Value range: 0 to 10000 + /// + public void SetAttack2(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Attack + /// Value range: 0 to 10000 + /// + public int GetAttack3() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Attack + /// Value range: 0 to 10000 + /// + public void SetAttack3(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Attack + /// Value range: 0 to 10000 + /// + public int GetAttack4() => ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Attack + /// Value range: 0 to 10000 + /// + public void SetAttack4(int value) => ModuleHandle.SetControllerValue(17, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Attack + /// Value range: 0 to 10000 + /// + public int GetAttack5() => ModuleHandle.GetControllerValue(18, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Attack + /// Value range: 0 to 10000 + /// + public void SetAttack5(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(34, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(34, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(35, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(35, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(36, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(36, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(37, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(37, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetAttackCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(38, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Attack curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetAttackCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(38, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Constant pitch + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch1() => ModuleHandle.GetControllerValue(94, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Constant pitch + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch1(int value) => ModuleHandle.SetControllerValue(94, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Constant pitch + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch2() => ModuleHandle.GetControllerValue(95, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Constant pitch + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch2(int value) => ModuleHandle.SetControllerValue(95, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Constant pitch + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch3() => ModuleHandle.GetControllerValue(96, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Constant pitch + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch3(int value) => ModuleHandle.SetControllerValue(96, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Constant pitch + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch4() => ModuleHandle.GetControllerValue(97, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Constant pitch + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch4(int value) => ModuleHandle.SetControllerValue(97, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Constant pitch + /// Value range: -8192 to 8192 + /// + public int GetConstantPitch5() => ModuleHandle.GetControllerValue(98, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Constant pitch + /// Value range: -8192 to 8192 + /// + public void SetConstantPitch5(int value) => ModuleHandle.SetControllerValue(98, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Decay + /// Value range: 0 to 10000 + /// + public int GetDecay1() => ModuleHandle.GetControllerValue(19, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Decay + /// Value range: 0 to 10000 + /// + public void SetDecay1(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Decay + /// Value range: 0 to 10000 + /// + public int GetDecay2() => ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Decay + /// Value range: 0 to 10000 + /// + public void SetDecay2(int value) => ModuleHandle.SetControllerValue(20, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Decay + /// Value range: 0 to 10000 + /// + public int GetDecay3() => ModuleHandle.GetControllerValue(21, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Decay + /// Value range: 0 to 10000 + /// + public void SetDecay3(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Decay + /// Value range: 0 to 10000 + /// + public int GetDecay4() => ModuleHandle.GetControllerValue(22, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Decay + /// Value range: 0 to 10000 + /// + public void SetDecay4(int value) => ModuleHandle.SetControllerValue(22, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Decay + /// Value range: 0 to 10000 + /// + public int GetDecay5() => ModuleHandle.GetControllerValue(23, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Decay + /// Value range: 0 to 10000 + /// + public void SetDecay5(int value) => ModuleHandle.SetControllerValue(23, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(39, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(39, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(40, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(40, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(41, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(41, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(42, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(42, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetDecayCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(43, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Decay curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetDecayCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(43, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Envelope gain + /// Value range: 0 to 8000 + /// + public int GetEnvelopeGain() => ModuleHandle.GetControllerValue(118, ValueScalingMode.Displayed); + + /// + /// Original name: Envelope gain + /// Value range: 0 to 8000 + /// + public void SetEnvelopeGain(int value) => ModuleHandle.SetControllerValue(118, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Envelope scaling per key + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey1() => ModuleHandle.GetControllerValue(59, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Envelope scaling per key + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(59, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Envelope scaling per key + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey2() => ModuleHandle.GetControllerValue(60, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Envelope scaling per key + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(60, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Envelope scaling per key + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey3() => ModuleHandle.GetControllerValue(61, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Envelope scaling per key + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(61, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Envelope scaling per key + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey4() => ModuleHandle.GetControllerValue(62, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Envelope scaling per key + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(62, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Envelope scaling per key + /// Value range: -128 to 128 + /// + public int GetEnvelopeScalingPerKey5() => ModuleHandle.GetControllerValue(63, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Envelope scaling per key + /// Value range: -128 to 128 + /// + public void SetEnvelopeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(63, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback1() => ModuleHandle.GetControllerValue(104, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback1(int value) => ModuleHandle.SetControllerValue(104, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback2() => ModuleHandle.GetControllerValue(105, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback2(int value) => ModuleHandle.SetControllerValue(105, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback3() => ModuleHandle.GetControllerValue(106, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback3(int value) => ModuleHandle.SetControllerValue(106, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback4() => ModuleHandle.GetControllerValue(107, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback4(int value) => ModuleHandle.SetControllerValue(107, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Feedback + /// Value range: 0 to 32768 + /// + public int GetFeedback5() => ModuleHandle.GetControllerValue(108, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Feedback + /// Value range: 0 to 32768 + /// + public void SetFeedback5(int value) => ModuleHandle.SetControllerValue(108, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Freq multiply + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply1() => ModuleHandle.GetControllerValue(89, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Freq multiply + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply1(int value) => ModuleHandle.SetControllerValue(89, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Freq multiply + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply2() => ModuleHandle.GetControllerValue(90, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Freq multiply + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply2(int value) => ModuleHandle.SetControllerValue(90, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Freq multiply + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply3() => ModuleHandle.GetControllerValue(91, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Freq multiply + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply3(int value) => ModuleHandle.SetControllerValue(91, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Freq multiply + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply4() => ModuleHandle.GetControllerValue(92, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Freq multiply + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply4(int value) => ModuleHandle.SetControllerValue(92, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Freq multiply + /// Value range: 0 to 32000 + /// + public int GetFreqMultiply5() => ModuleHandle.GetControllerValue(93, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Freq multiply + /// Value range: 0 to 32000 + /// + public void SetFreqMultiply5(int value) => ModuleHandle.SetControllerValue(93, value, ValueScalingMode.Displayed); + + /// + /// Original name: Input -> Custom waveform + /// Possible values: Off, SingleCycle, Continuous + /// + public FMXCustomWaveform GetInputCustomWaveform() => (FMXCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Input -> Custom waveform + /// Possible values: Off, SingleCycle, Continuous + /// + public void SetInputCustomWaveform(FMXCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Input -> Operator # + /// Value range: 0 to 5 + /// + public int GetInputOperatorNum() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Input -> Operator # + /// Value range: 0 to 5 + /// + public void SetInputOperatorNum(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType1() => (FMXModulationType)ModuleHandle.GetControllerValue(109, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType1(FMXModulationType value) => ModuleHandle.SetControllerValue(109, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType2() => (FMXModulationType)ModuleHandle.GetControllerValue(110, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType2(FMXModulationType value) => ModuleHandle.SetControllerValue(110, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType3() => (FMXModulationType)ModuleHandle.GetControllerValue(111, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType3(FMXModulationType value) => ModuleHandle.SetControllerValue(111, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType4() => (FMXModulationType)ModuleHandle.GetControllerValue(112, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType4(FMXModulationType value) => ModuleHandle.SetControllerValue(112, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public FMXModulationType GetModulationType5() => (FMXModulationType)ModuleHandle.GetControllerValue(113, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Modulation type + /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus + /// + public void SetModulationType5(FMXModulationType value) => ModuleHandle.SetControllerValue(113, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Noise + /// Value range: 0 to 32768 + /// + public int GetNoise1() => ModuleHandle.GetControllerValue(79, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Noise + /// Value range: 0 to 32768 + /// + public void SetNoise1(int value) => ModuleHandle.SetControllerValue(79, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Noise + /// Value range: 0 to 32768 + /// + public int GetNoise2() => ModuleHandle.GetControllerValue(80, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Noise + /// Value range: 0 to 32768 + /// + public void SetNoise2(int value) => ModuleHandle.SetControllerValue(80, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Noise + /// Value range: 0 to 32768 + /// + public int GetNoise3() => ModuleHandle.GetControllerValue(81, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Noise + /// Value range: 0 to 32768 + /// + public void SetNoise3(int value) => ModuleHandle.SetControllerValue(81, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Noise + /// Value range: 0 to 32768 + /// + public int GetNoise4() => ModuleHandle.GetControllerValue(82, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Noise + /// Value range: 0 to 32768 + /// + public void SetNoise4(int value) => ModuleHandle.SetControllerValue(82, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Noise + /// Value range: 0 to 32768 + /// + public int GetNoise5() => ModuleHandle.GetControllerValue(83, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Noise + /// Value range: 0 to 32768 + /// + public void SetNoise5(int value) => ModuleHandle.SetControllerValue(83, value, ValueScalingMode.Displayed); + + /// + /// Original name: Noise filter (32768 - OFF) + /// Value range: 0 to 32768 + /// + public int GetNoiseFilter() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Noise filter (32768 - OFF) + /// Value range: 0 to 32768 + /// + public void SetNoiseFilter(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Output mode + /// Value range: 0 to 31 + /// + public int GetOutputMode1() => ModuleHandle.GetControllerValue(114, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Output mode + /// Value range: 0 to 31 + /// + public void SetOutputMode1(int value) => ModuleHandle.SetControllerValue(114, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Output mode + /// Value range: 0 to 15 + /// + public int GetOutputMode2() => ModuleHandle.GetControllerValue(115, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Output mode + /// Value range: 0 to 15 + /// + public void SetOutputMode2(int value) => ModuleHandle.SetControllerValue(115, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Output mode + /// Value range: 0 to 7 + /// + public int GetOutputMode3() => ModuleHandle.GetControllerValue(116, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Output mode + /// Value range: 0 to 7 + /// + public void SetOutputMode3(int value) => ModuleHandle.SetControllerValue(116, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Output mode + /// Value range: 0 to 3 + /// + public int GetOutputMode4() => ModuleHandle.GetControllerValue(117, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Output mode + /// Value range: 0 to 3 + /// + public void SetOutputMode4(int value) => ModuleHandle.SetControllerValue(117, value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Phase + /// Value range: 0 to 32768 + /// + public int GetPhase1() => ModuleHandle.GetControllerValue(84, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Phase + /// Value range: 0 to 32768 + /// + public void SetPhase1(int value) => ModuleHandle.SetControllerValue(84, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Phase + /// Value range: 0 to 32768 + /// + public int GetPhase2() => ModuleHandle.GetControllerValue(85, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Phase + /// Value range: 0 to 32768 + /// + public void SetPhase2(int value) => ModuleHandle.SetControllerValue(85, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Phase + /// Value range: 0 to 32768 + /// + public int GetPhase3() => ModuleHandle.GetControllerValue(86, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Phase + /// Value range: 0 to 32768 + /// + public void SetPhase3(int value) => ModuleHandle.SetControllerValue(86, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Phase + /// Value range: 0 to 32768 + /// + public int GetPhase4() => ModuleHandle.GetControllerValue(87, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Phase + /// Value range: 0 to 32768 + /// + public void SetPhase4(int value) => ModuleHandle.SetControllerValue(87, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Phase + /// Value range: 0 to 32768 + /// + public int GetPhase5() => ModuleHandle.GetControllerValue(88, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Phase + /// Value range: 0 to 32768 + /// + public void SetPhase5(int value) => ModuleHandle.SetControllerValue(88, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Release + /// Value range: 0 to 10000 + /// + public int GetRelease1() => ModuleHandle.GetControllerValue(29, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Release + /// Value range: 0 to 10000 + /// + public void SetRelease1(int value) => ModuleHandle.SetControllerValue(29, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Release + /// Value range: 0 to 10000 + /// + public int GetRelease2() => ModuleHandle.GetControllerValue(30, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Release + /// Value range: 0 to 10000 + /// + public void SetRelease2(int value) => ModuleHandle.SetControllerValue(30, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Release + /// Value range: 0 to 10000 + /// + public int GetRelease3() => ModuleHandle.GetControllerValue(31, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Release + /// Value range: 0 to 10000 + /// + public void SetRelease3(int value) => ModuleHandle.SetControllerValue(31, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Release + /// Value range: 0 to 10000 + /// + public int GetRelease4() => ModuleHandle.GetControllerValue(32, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Release + /// Value range: 0 to 10000 + /// + public void SetRelease4(int value) => ModuleHandle.SetControllerValue(32, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Release + /// Value range: 0 to 10000 + /// + public int GetRelease5() => ModuleHandle.GetControllerValue(33, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Release + /// Value range: 0 to 10000 + /// + public void SetRelease5(int value) => ModuleHandle.SetControllerValue(33, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(44, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(44, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(45, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(45, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(46, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(46, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(47, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(47, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public ADSRCurveType GetReleaseCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(48, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Release curve + /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 + /// + public void SetReleaseCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(48, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native + /// + public FMXSampleRate GetSampleRate() => (FMXSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native + /// + public void SetSampleRate(FMXSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Self-modulation + /// Value range: 0 to 32768 + /// + public int GetSelfModulation1() => ModuleHandle.GetControllerValue(99, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Self-modulation + /// Value range: 0 to 32768 + /// + public void SetSelfModulation1(int value) => ModuleHandle.SetControllerValue(99, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Self-modulation + /// Value range: 0 to 32768 + /// + public int GetSelfModulation2() => ModuleHandle.GetControllerValue(100, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Self-modulation + /// Value range: 0 to 32768 + /// + public void SetSelfModulation2(int value) => ModuleHandle.SetControllerValue(100, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Self-modulation + /// Value range: 0 to 32768 + /// + public int GetSelfModulation3() => ModuleHandle.GetControllerValue(101, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Self-modulation + /// Value range: 0 to 32768 + /// + public void SetSelfModulation3(int value) => ModuleHandle.SetControllerValue(101, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Self-modulation + /// Value range: 0 to 32768 + /// + public int GetSelfModulation4() => ModuleHandle.GetControllerValue(102, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Self-modulation + /// Value range: 0 to 32768 + /// + public void SetSelfModulation4(int value) => ModuleHandle.SetControllerValue(102, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Self-modulation + /// Value range: 0 to 32768 + /// + public int GetSelfModulation5() => ModuleHandle.GetControllerValue(103, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Self-modulation + /// Value range: 0 to 32768 + /// + public void SetSelfModulation5(int value) => ModuleHandle.SetControllerValue(103, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain1() => (ADSRSustainMode)ModuleHandle.GetControllerValue(49, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain1(ADSRSustainMode value) => ModuleHandle.SetControllerValue(49, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain2() => (ADSRSustainMode)ModuleHandle.GetControllerValue(50, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain2(ADSRSustainMode value) => ModuleHandle.SetControllerValue(50, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain3() => (ADSRSustainMode)ModuleHandle.GetControllerValue(51, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain3(ADSRSustainMode value) => ModuleHandle.SetControllerValue(51, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain4() => (ADSRSustainMode)ModuleHandle.GetControllerValue(52, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain4(ADSRSustainMode value) => ModuleHandle.SetControllerValue(52, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain + /// Possible values: Off, On, Repeat + /// + public ADSRSustainMode GetSustain5() => (ADSRSustainMode)ModuleHandle.GetControllerValue(53, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain + /// Possible values: Off, On, Repeat + /// + public void SetSustain5(ADSRSustainMode value) => ModuleHandle.SetControllerValue(53, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel1() => ModuleHandle.GetControllerValue(24, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel1(int value) => ModuleHandle.SetControllerValue(24, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel2() => ModuleHandle.GetControllerValue(25, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel2(int value) => ModuleHandle.SetControllerValue(25, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel3() => ModuleHandle.GetControllerValue(26, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel3(int value) => ModuleHandle.SetControllerValue(26, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel4() => ModuleHandle.GetControllerValue(27, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel4(int value) => ModuleHandle.SetControllerValue(27, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain level + /// Value range: 0 to 32768 + /// + public int GetSustainLevel5() => ModuleHandle.GetControllerValue(28, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain level + /// Value range: 0 to 32768 + /// + public void SetSustainLevel5(int value) => ModuleHandle.SetControllerValue(28, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal1() => (Toggle)ModuleHandle.GetControllerValue(54, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal1(Toggle value) => ModuleHandle.SetControllerValue(54, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal2() => (Toggle)ModuleHandle.GetControllerValue(55, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal2(Toggle value) => ModuleHandle.SetControllerValue(55, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal3() => (Toggle)ModuleHandle.GetControllerValue(56, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal3(Toggle value) => ModuleHandle.SetControllerValue(56, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal4() => (Toggle)ModuleHandle.GetControllerValue(57, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal4(Toggle value) => ModuleHandle.SetControllerValue(57, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain pedal + /// Possible values: Off, On + /// + public Toggle GetSustainPedal5() => (Toggle)ModuleHandle.GetControllerValue(58, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Sustain pedal + /// Possible values: Off, On + /// + public void SetSustainPedal5(Toggle value) => ModuleHandle.SetControllerValue(58, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Velocity sensitivity + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity1() => ModuleHandle.GetControllerValue(69, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Velocity sensitivity + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity1(int value) => ModuleHandle.SetControllerValue(69, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Velocity sensitivity + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity2() => ModuleHandle.GetControllerValue(70, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Velocity sensitivity + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity2(int value) => ModuleHandle.SetControllerValue(70, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Velocity sensitivity + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity3() => ModuleHandle.GetControllerValue(71, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Velocity sensitivity + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity3(int value) => ModuleHandle.SetControllerValue(71, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Velocity sensitivity + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity4() => ModuleHandle.GetControllerValue(72, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Velocity sensitivity + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity4(int value) => ModuleHandle.SetControllerValue(72, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Velocity sensitivity + /// Value range: -128 to 128 + /// + public int GetVelocitySensitivity5() => ModuleHandle.GetControllerValue(73, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Velocity sensitivity + /// Value range: -128 to 128 + /// + public void SetVelocitySensitivity5(int value) => ModuleHandle.SetControllerValue(73, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 32768 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Volume + /// Value range: 0 to 32768 + /// + public int GetVolume1() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Volume + /// Value range: 0 to 32768 + /// + public void SetVolume1(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Volume + /// Value range: 0 to 32768 + /// + public int GetVolume2() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Volume + /// Value range: 0 to 32768 + /// + public void SetVolume2(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Volume + /// Value range: 0 to 32768 + /// + public int GetVolume3() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Volume + /// Value range: 0 to 32768 + /// + public void SetVolume3(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Volume + /// Value range: 0 to 32768 + /// + public int GetVolume4() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Volume + /// Value range: 0 to 32768 + /// + public void SetVolume4(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Volume + /// Value range: 0 to 32768 + /// + public int GetVolume5() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Volume + /// Value range: 0 to 32768 + /// + public void SetVolume5(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Volume scaling per key + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey1() => ModuleHandle.GetControllerValue(64, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Volume scaling per key + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(64, value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Volume scaling per key + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey2() => ModuleHandle.GetControllerValue(65, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Volume scaling per key + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(65, value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Volume scaling per key + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey3() => ModuleHandle.GetControllerValue(66, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Volume scaling per key + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(66, value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Volume scaling per key + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey4() => ModuleHandle.GetControllerValue(67, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Volume scaling per key + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(67, value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Volume scaling per key + /// Value range: -128 to 128 + /// + public int GetVolumeScalingPerKey5() => ModuleHandle.GetControllerValue(68, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Volume scaling per key + /// Value range: -128 to 128 + /// + public void SetVolumeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(68, value, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform1() => (FMXWaveform)ModuleHandle.GetControllerValue(74, ValueScalingMode.Displayed); + + /// + /// Original name: 1 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform1(FMXWaveform value) => ModuleHandle.SetControllerValue(74, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform2() => (FMXWaveform)ModuleHandle.GetControllerValue(75, ValueScalingMode.Displayed); + + /// + /// Original name: 2 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform2(FMXWaveform value) => ModuleHandle.SetControllerValue(75, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform3() => (FMXWaveform)ModuleHandle.GetControllerValue(76, ValueScalingMode.Displayed); + + /// + /// Original name: 3 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform3(FMXWaveform value) => ModuleHandle.SetControllerValue(76, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform4() => (FMXWaveform)ModuleHandle.GetControllerValue(77, ValueScalingMode.Displayed); + + /// + /// Original name: 4 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform4(FMXWaveform value) => ModuleHandle.SetControllerValue(77, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public FMXWaveform GetWaveform5() => (FMXWaveform)ModuleHandle.GetControllerValue(78, ValueScalingMode.Displayed); + + /// + /// Original name: 5 Waveform + /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 + /// + public void SetWaveform5(FMXWaveform value) => ModuleHandle.SetControllerValue(78, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + + #region curves + + /// + /// Read CustomWaveform containing 256 values. + /// Value range: -1 to 1. + /// Used as a waveform where 'Custom' waveform type was applied. + /// + public void ReadCustomWaveform(float[] buffer) + { + if (buffer.Length < 256) + throw new System.ArgumentException("Buffer must be at least of size 256"); + + ModuleHandle.ReadCurve(0, buffer); + } + + /// + /// Write CustomWaveform containing 256 values. + /// Value range: -1 to 1. + /// Used as a waveform where 'Custom' waveform type was applied. + /// + public void WriteCustomWaveform(float[] buffer) + { + if (buffer.Length < 256) + throw new System.ArgumentException("Buffer must be at least of size 256"); + + ModuleHandle.WriteCurve(0, buffer); + } + + #endregion curves + } + + public struct GeneratorModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public GeneratorModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 1022 + /// + public int GetDutyCycle() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 1022 + /// + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq.modulation by input + /// Value range: 0 to 256 + /// + public int GetFreqModulationByInput() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Freq.modulation by input + /// Value range: 0 to 256 + /// + public void SetFreqModulationByInput(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Stereo, Mono + /// + public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Stereo, Mono + /// + public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 16 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 16 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin + /// + public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin + /// + public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct GlideModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public GlideModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Pitch + /// Value range: -600 to 600 + /// + public int GetPitch() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch + /// Value range: -600 to 600 + /// + public void SetPitch(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch scale + /// Value range: 0 to 200 + /// + public int GetPitchScale() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch scale + /// Value range: 0 to 200 + /// + public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Possible values: Off, On + /// + public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Possible values: Off, On + /// + public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Reset + /// Possible values: Off, On + /// + public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Reset + /// Possible values: Off, On + /// + public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Reset on 1st note + /// Possible values: Off, On + /// + public Toggle GetResetOnFirstNote() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Reset on 1st note + /// Possible values: Off, On + /// + public void SetResetOnFirstNote(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public int GetResponse() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public void SetResponse(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public int GetSampleRate() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct GPIOModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public GPIOModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: In + /// Possible values: Off, On + /// + public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: In + /// Possible values: Off, On + /// + public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: In amplitude + /// Value range: 0 to 100 + /// + public int GetInAmplitude() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: In amplitude + /// Value range: 0 to 100 + /// + public void SetInAmplitude(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: In note + /// Value range: 0 to 128 + /// + public int GetInNote() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: In note + /// Value range: 0 to 128 + /// + public void SetInNote(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: In pin + /// Value range: 0 to 256 + /// + public int GetInPin() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: In pin + /// Value range: 0 to 256 + /// + public void SetInPin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Out + /// Possible values: Off, On + /// + public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Out + /// Possible values: Off, On + /// + public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Out pin + /// Value range: 0 to 256 + /// + public int GetOutPin() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Out pin + /// Value range: 0 to 256 + /// + public void SetOutPin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Out threshold + /// Value range: 0 to 100 + /// + public int GetOutThreshold() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Out threshold + /// Value range: 0 to 100 + /// + public void SetOutThreshold(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct InputModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public InputModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct KickerModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public KickerModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Acceleration + /// Value range: 0 to 1024 + /// + public int GetAcceleration() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Acceleration + /// Value range: 0 to 1024 + /// + public void SetAcceleration(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Boost + /// Value range: 0 to 1024 + /// + public int GetBoost() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Boost + /// Value range: 0 to 1024 + /// + public void SetBoost(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: No click + /// Possible values: Off, On + /// + public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: No click + /// Possible values: Off, On + /// + public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 4 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 4 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Square, Sin + /// + public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Triangle, Square, Sin + /// + public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct LFOModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public LFOModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Amplitude + /// Value range: 0 to 256 + /// + public int GetAmplitude() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Amplitude + /// Value range: 0 to 256 + /// + public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 256 + /// + public int GetDutyCycle() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Duty cycle + /// Value range: 0 to 256 + /// + public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 1 to 256 + /// + public int GetFreq() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 1 to 256 + /// + public void SetFreq(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq scale + /// Value range: 0 to 200 + /// + public int GetFreqScale() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Freq scale + /// Value range: 0 to 200 + /// + public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency unit + /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public LFOFrequencyUnit GetFrequencyUnit() => (LFOFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency unit + /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetFrequencyUnit(LFOFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Generator + /// Possible values: Off, On + /// + public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Generator + /// Possible values: Off, On + /// + public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: Amplitude, Panning + /// + public LFOType GetLfoType() => (LFOType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Type + /// Possible values: Amplitude, Panning + /// + public void SetLfoType(LFOType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Set phase + /// Value range: 0 to 256 + /// + public int GetSetPhase() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Set phase + /// Value range: 0 to 256 + /// + public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sine quality + /// Possible values: Auto, Low, Middle, High + /// + public LFOSineQuality GetSineQuality() => (LFOSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: Sine quality + /// Possible values: Auto, Low, Middle, High + /// + public void SetSineQuality(LFOSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth transitions + /// Possible values: Off, Waveform + /// + public LFOSmoothTransitions GetSmoothTransitions() => (LFOSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth transitions + /// Possible values: Off, Waveform + /// + public void SetSmoothTransitions(LFOSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated + /// + public LFOWaveform GetWaveform() => (LFOWaveform)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Waveform + /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated + /// + public void SetWaveform(LFOWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct LoopModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public LoopModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Length + /// Value range: 0 to 256 + /// + public int GetDelay() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Length + /// Value range: 0 to 256 + /// + public void SetDelay(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Length unit + /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz + /// + public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Length unit + /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz + /// + public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Max buffer size + /// Value range: 1 to 240 + /// Max buffer size in seconds + /// + public int GetMaxBufferSize() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Max buffer size + /// Value range: 1 to 240 + /// Max buffer size in seconds + /// + public void SetMaxBufferSize(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Normal, PingPong + /// + public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: Normal, PingPong + /// + public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteON + /// Possible values: Restart, RestartCurrentIteration + /// + public LoopOnNoteOn GetOnNoteOn() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteON + /// Possible values: Restart, RestartCurrentIteration + /// + public void SetOnNoteOn(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Repeat (128=endless) + /// Value range: 0 to 128 + /// + public int GetRepeats() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Repeat (128=endless) + /// Value range: 0 to 128 + /// + public void SetRepeats(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct MetaModuleModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public MetaModuleModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region module type-specific methods + + /// + public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path); + + /// + public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); + + #endregion module type-specific methods + + #region controllers + + /// + /// Original name: BPM (Beats Per Minute) + /// Value range: 1 to 1000 + /// + public int GetBPM() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: BPM (Beats Per Minute) + /// Value range: 1 to 1000 + /// + public void SetBPM(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Input module + /// Value range: 1 to 256 + /// + public int GetInputModule() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Input module + /// Value range: 1 to 256 + /// + public void SetInputModule(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Play patterns + /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless + /// + public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Play patterns + /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless + /// + public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: TPL (Ticks Per Line) + /// Value range: 1 to 31 + /// + public int GetTPL() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: TPL (Ticks Per Line) + /// Value range: 1 to 31 + /// + public void SetTPL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 1024 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct ModulatorModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public ModulatorModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Modulation type + /// Possible values: Amplitude, Phase, PhaseAbsolute + /// + public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Modulation type + /// Possible values: Amplitude, Phase, PhaseAbsolute + /// + public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct MultiControlModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public MultiControlModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Gain + /// Value range: 0 to 1024 + /// + public int GetGain() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 1024 + /// + public void SetGain(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT offset + /// Value range: -16384 to 16384 + /// + public int GetOUTOffset() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: OUT offset + /// Value range: -16384 to 16384 + /// + public void SetOUTOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Quantization + /// Value range: 0 to 32768 + /// + public int GetQuantization() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Quantization + /// Value range: 0 to 32768 + /// + public void SetQuantization(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Response + /// Value range: 0 to 1000 + /// + public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public int GetSampleRate() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Value + /// Value range: 0 to 32768 + /// + public int GetValue() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Value + /// Value range: 0 to 32768 + /// + public void SetValue(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + + #region curves + + /// + /// Read Curve containing 257 values. + /// Value range: 0 to 1. + /// Modifies applied values. + /// + public void ReadCurve(float[] buffer) + { + if (buffer.Length < 257) + throw new System.ArgumentException("Buffer must be at least of size 257"); + + ModuleHandle.ReadCurve(0, buffer); + } + + /// + /// Write Curve containing 257 values. + /// Value range: 0 to 1. + /// Modifies applied values. + /// + public void WriteCurve(float[] buffer) + { + if (buffer.Length < 257) + throw new System.ArgumentException("Buffer must be at least of size 257"); + + ModuleHandle.WriteCurve(0, buffer); + } + + #endregion curves + } + + public struct MultiSynthModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public MultiSynthModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Curve2 influence + /// Value range: 0 to 256 + /// + public int GetCurve2Influence() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Curve2 influence + /// Value range: 0 to 256 + /// + public void SetCurve2Influence(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Finetune + /// Value range: -256 to 256 + /// + public int GetFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Finetune + /// Value range: -256 to 256 + /// + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Phase + /// Value range: 0 to 32768 + /// + public int GetPhase() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Phase + /// Value range: 0 to 32768 + /// + public void SetPhase(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase + /// Value range: 0 to 32768 + /// + public int GetRandomPhase() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Random phase + /// Value range: 0 to 32768 + /// + public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random pitch + /// Value range: 0 to 4096 + /// + public int GetRandomPitch() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Random pitch + /// Value range: 0 to 4096 + /// + public void SetRandomPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random velocity + /// Value range: 0 to 32768 + /// + public int GetRandomVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Random velocity + /// Value range: 0 to 32768 + /// + public void SetRandomVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public int GetTranspose() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Velocity + /// Value range: 0 to 256 + /// + public int GetVelocity() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Velocity + /// Value range: 0 to 256 + /// + public void SetVelocity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + #endregion controllers + + #region curves + + /// + /// Read NoteVelocityCurve containing 128 values. + /// Value range: 0 to 1. + /// Velocity to apply to arriving note. + /// + public void ReadNoteVelocityCurve(float[] buffer) + { + if (buffer.Length < 128) + throw new System.ArgumentException("Buffer must be at least of size 128"); + + ModuleHandle.ReadCurve(0, buffer); + } + + /// + /// Write NoteVelocityCurve containing 128 values. + /// Value range: 0 to 1. + /// Velocity to apply to arriving note. + /// + public void WriteNoteVelocityCurve(float[] buffer) + { + if (buffer.Length < 128) + throw new System.ArgumentException("Buffer must be at least of size 128"); + + ModuleHandle.WriteCurve(0, buffer); + } + + /// + /// Read VelocityToVelocityCurve containing 257 values. + /// Value range: 0 to 1. + /// Map velocity values. + /// + public void ReadVelocityToVelocityCurve(float[] buffer) + { + if (buffer.Length < 257) + throw new System.ArgumentException("Buffer must be at least of size 257"); + + ModuleHandle.ReadCurve(1, buffer); + } + + /// + /// Write VelocityToVelocityCurve containing 257 values. + /// Value range: 0 to 1. + /// Map velocity values. + /// + public void WriteVelocityToVelocityCurve(float[] buffer) + { + if (buffer.Length < 257) + throw new System.ArgumentException("Buffer must be at least of size 257"); + + ModuleHandle.WriteCurve(1, buffer); + } + + #endregion curves + } + + public struct OutputModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public OutputModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + } + + public struct PitchDetectorModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public PitchDetectorModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Alg1 Sensitivity (absolute threshold) + /// Value range: 0 to 100 + /// + public int GetAlg1Sensitivity() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1 Sensitivity (absolute threshold) + /// Value range: 0 to 100 + /// + public void SetAlg1Sensitivity(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Buffer (ms) + /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 + /// + public PitchDetectorBufferSize GetAlgBufferMs() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Buffer (ms) + /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 + /// + public void SetAlgBufferMs(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Buf overlap + /// Value range: 0 to 100 + /// + public int GetAlgBufOverlap() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Buf overlap + /// Value range: 0 to 100 + /// + public void SetAlgBufOverlap(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Algorithm + /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum + /// + public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Algorithm + /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum + /// + public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Sample rate (Hz) + /// Possible values: Hz12000, Hz24000, Hz44100 + /// + public PitchDetectorAlgSampleRate GetAlgSampleRateHz() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Alg1-2 Sample rate (Hz) + /// Possible values: Hz12000, Hz24000, Hz44100 + /// + public void SetAlgSampleRateHz(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Detector finetune + /// Value range: -256 to 256 + /// + public int GetDetectorFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Detector finetune + /// Value range: -256 to 256 + /// + public void SetDetectorFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 256 + /// + public int GetGain() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 256 + /// + public void SetGain(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: LP filter freq (0 - OFF) + /// Value range: 0 to 4000 + /// + public int GetLPFilterFreq() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: LP filter freq (0 - OFF) + /// Value range: 0 to 4000 + /// + public void SetLPFilterFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: LP filter roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public FilterRollOff GetLPFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: LP filter roll-off + /// Possible values: dB12, dB24, dB36, dB48 + /// + public void SetLPFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Microtones + /// Possible values: Off, On + /// + public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Microtones + /// Possible values: Off, On + /// + public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Record notes + /// Possible values: Off, On + /// + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Record notes + /// Possible values: Off, On + /// + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Threshold + /// Value range: 0 to 10000 + /// + public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Threshold + /// Value range: 0 to 10000 + /// + public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct PitchShifterModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public PitchShifterModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Bypass if pitch=0 + /// Possible values: Off, SlowTransition, FastTransition + /// + public PitchShifterBypassMode GetBypassIfPitchZero() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Bypass if pitch=0 + /// Possible values: Off, SlowTransition, FastTransition + /// + public void SetBypassIfPitchZero(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Grain size + /// Value range: 0 to 256 + /// + public int GetGrainSize() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Grain size + /// Value range: 0 to 256 + /// + public void SetGrainSize(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch + /// Value range: -600 to 600 + /// + public int GetPitch() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch + /// Value range: -600 to 600 + /// + public void SetPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch scale + /// Value range: 0 to 200 + /// + public int GetPitchScale() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Pitch scale + /// Value range: 0 to 200 + /// + public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct PitchToControlModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public PitchToControlModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: First note + /// Value range: 0 to 256 + /// + public int GetFirstNote() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: First note + /// Value range: 0 to 256 + /// + public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: FrequencyHz, Pitch + /// + public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: FrequencyHz, Pitch + /// + public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, PitchDown, PitchUp + /// + public PitchToControlOnNoteOff GetOnNoteOff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, PitchDown, PitchUp + /// + public void SetOnNoteOff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public int GetOUTController() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public void SetOUTController(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public int GetOUTMax() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public void SetOUTMax(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public int GetOUTMin() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public void SetOUTMin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Range (number of semitones) + /// Value range: 0 to 256 + /// + public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Range (number of semitones) + /// Value range: 0 to 256 + /// + public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct ReverbModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public ReverbModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: All-pass filter + /// Possible values: Off, On + /// + public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: All-pass filter + /// Possible values: Off, On + /// + public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Damp + /// Value range: 0 to 256 + /// + public int GetDamp() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Damp + /// Value range: 0 to 256 + /// + public void SetDamp(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Dry + /// Value range: 0 to 256 + /// + public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Feedback + /// Value range: 0 to 256 + /// + public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Freeze + /// Possible values: Off, On + /// + public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Freeze + /// Possible values: Off, On + /// + public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Random seed + /// Value range: 0 to 32768 + /// + public int GetRandomSeed() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Random seed + /// Value range: 0 to 32768 + /// + public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: Room size + /// Value range: 0 to 128 + /// + public int GetRoomSize() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Room size + /// Value range: 0 to 128 + /// + public void SetRoomSize(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Stereo width + /// Value range: 0 to 256 + /// + public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Stereo width + /// Value range: 0 to 256 + /// + public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Wet + /// Value range: 0 to 256 + /// + public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct SamplerModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public SamplerModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region module type-specific methods + + /// + public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot); + + /// + public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot); + + #endregion module type-specific methods + + #region controllers + + /// + /// Original name: Envelope interpolation + /// Possible values: Off, Linear + /// + public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Envelope interpolation + /// Possible values: Off, Linear + /// + public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Rec threshold + /// Value range: 0 to 10000 + /// + public int GetRecThreshold() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Rec threshold + /// Value range: 0 to 10000 + /// + public void SetRecThreshold(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample interpolation + /// Possible values: Off, Linear, Spline + /// + public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Sample interpolation + /// Possible values: Off, Linear, Spline + /// + public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct SoundToControlModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public SoundToControlModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Absolute + /// Possible values: Off, On + /// + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Absolute + /// Possible values: Off, On + /// + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Mono, Stereo + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 1024 + /// + public int GetGain() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Gain + /// Value range: 0 to 1024 + /// + public void SetGain(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: LQ, HQ + /// + public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: LQ, HQ + /// + public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public int GetOUTController() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public void SetOUTController(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public int GetOutMax() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public void SetOutMax(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public int GetOutMin() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public void SetOutMin(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public int GetSampleRate() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Sample rate + /// Value range: 1 to 32768 + /// + public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth + /// Value range: 0 to 256 + /// + public int GetSmooth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Smooth + /// Value range: 0 to 256 + /// + public void SetSmooth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct SpectraVoiceModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public SpectraVoiceModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public int GetAttack() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Attack + /// Value range: 0 to 512 + /// + public void SetAttack(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Harmonic + /// Value range: 0 to 15 + /// + public int GetHarmonic() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Harmonic + /// Value range: 0 to 15 + /// + public void SetHarmonic(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: H.freq + /// Value range: 0 to 22050 + /// + public int GetHarmonicFreq() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: H.freq + /// Value range: 0 to 22050 + /// + public void SetHarmonicFreq(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); + + /// + /// Original name: H.type + /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal + /// + public SpectraVoiceHarmonicType GetHarmonicType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: H.type + /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal + /// + public void SetHarmonicType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: H.volume + /// Value range: 0 to 255 + /// + public int GetHarmonicVolume() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: H.volume + /// Value range: 0 to 255 + /// + public void SetHarmonicVolume(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); + + /// + /// Original name: H.width + /// Value range: 0 to 255 + /// + public int GetHarmonicWidth() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: H.width + /// Value range: 0 to 255 + /// + public void SetHarmonicWidth(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline + /// + public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline + /// + public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Panning + /// Value range: -128 to 128 + /// + public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 32 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public int GetRelease() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Release + /// Value range: 0 to 512 + /// + public void SetRelease(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Spectrum resolution + /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 + /// + public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Spectrum resolution + /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 + /// + public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Sustain + /// Possible values: Off, On + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct VelocityToControlModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public VelocityToControlModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, VelocityDown, VelocityUp + /// + public VelocityToControlOnNoteOff GetOnNoteOff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: On NoteOFF + /// Possible values: DoNothing, VelocityDown, VelocityUp + /// + public void SetOnNoteOff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public int GetOutController() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: OUT controller + /// Value range: 0 to 255 + /// + public void SetOutController(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public int GetOutMax() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: OUT max + /// Value range: 0 to 32768 + /// + public void SetOutMax(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public int GetOutMin() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: OUT min + /// Value range: 0 to 32768 + /// + public void SetOutMin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: OUT offset + /// Value range: -16384 to 16384 + /// + public int GetOutOffset() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: OUT offset + /// Value range: -16384 to 16384 + /// + public void SetOutOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct VibratoModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public VibratoModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Amplitude + /// Value range: 0 to 256 + /// + public int GetAmplitude() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Amplitude + /// Value range: 0 to 256 + /// + public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential amplitude + /// Possible values: Off, On + /// + public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Exponential amplitude + /// Possible values: Off, On + /// + public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 1 to 2048 + /// + public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Freq + /// Value range: 1 to 2048 + /// + public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency unit + /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Frequency unit + /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine + /// + public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Set phase + /// Value range: 0 to 256 + /// + public int GetSetPhase() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Set phase + /// Value range: 0 to 256 + /// + public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 256 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct VocalFilterModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public VocalFilterModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Channels + /// Possible values: Stereo, Mono + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Formants + /// Value range: 1 to 5 + /// + public int GetFormants() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Formants + /// Value range: 1 to 5 + /// + public void SetFormants(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Formant width + /// Value range: 0 to 256 + /// + public int GetFormantWidth() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Formant width + /// Value range: 0 to 256 + /// + public void SetFormantWidth(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Intensity + /// Value range: 0 to 256 + /// + public int GetIntensity() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Intensity + /// Value range: 0 to 256 + /// + public void SetIntensity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random frequency + /// Value range: 0 to 1024 + /// + public int GetRandomFrequency() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + /// Original name: Random frequency + /// Value range: 0 to 1024 + /// + public void SetRandomFrequency(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); + + /// + /// Original name: Random seed + /// Value range: 0 to 32768 + /// + public int GetRandomSeed() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + /// Original name: Random seed + /// Value range: 0 to 32768 + /// + public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); + + /// + /// Original name: Voice type + /// Possible values: Soprano, Alto, Tenor, Bass + /// + public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Voice type + /// Possible values: Soprano, Alto, Tenor, Bass + /// + public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel (a,e,i,o,u) + /// Value range: 0 to 256 + /// + public int GetVowel() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel (a,e,i,o,u) + /// Value range: 0 to 256 + /// + public void SetVowel(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel1 + /// Possible values: A, E, I, O, U + /// + public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel1 + /// Possible values: A, E, I, O, U + /// + public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel2 + /// Possible values: A, E, I, O, U + /// + public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel2 + /// Possible values: A, E, I, O, U + /// + public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel3 + /// Possible values: A, E, I, O, U + /// + public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel3 + /// Possible values: A, E, I, O, U + /// + public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel4 + /// Possible values: A, E, I, O, U + /// + public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel4 + /// Possible values: A, E, I, O, U + /// + public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel5 + /// Possible values: A, E, I, O, U + /// + public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + /// Original name: Vowel5 + /// Possible values: A, E, I, O, U + /// + public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct VorbisPlayerModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public VorbisPlayerModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region module type-specific methods + + /// + public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path); + + /// + public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data); + + #endregion module type-specific methods + + #region controllers + + /// + /// Original name: Finetune + /// Value range: -128 to 128 + /// + public int GetFinetune() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Finetune + /// Value range: -128 to 128 + /// + public void SetFinetune(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Interpolation + /// Possible values: Off, On + /// + public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Interpolation + /// Possible values: Off, On + /// + public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Original speed + /// Possible values: Off, On + /// + public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Original speed + /// Possible values: Off, On + /// + public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 4 + /// + public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: Polyphony + /// Value range: 1 to 4 + /// + public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); + + /// + /// Original name: Repeat + /// Possible values: Off, On + /// + public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + /// Original name: Repeat + /// Possible values: Off, On + /// + public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Transpose + /// Value range: -128 to 128 + /// + public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Volume + /// Value range: 0 to 512 + /// + public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + #endregion controllers + } + + public struct WaveShaperModuleHandle : IModuleHandleWrapper + { + public ModuleHandle ModuleHandle { get; private set; } + + public WaveShaperModuleHandle(ModuleHandle module) + { + ModuleHandle = module; + } + + #region controllers + + /// + /// Original name: DC blocker + /// Possible values: Off, On + /// + public Toggle GetDCBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + /// Original name: DC blocker + /// Possible values: Off, On + /// + public void SetDCBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Input volume + /// Value range: 0 to 512 + /// + public int GetInputVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + /// Original name: Input volume + /// Value range: 0 to 512 + /// + public void SetInputVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 256 + /// + public int GetMix() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + /// Original name: Mix + /// Value range: 0 to 256 + /// + public void SetMix(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + /// Original name: Mode + /// Possible values: HQ, HQMono, LQ, LQMono + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + /// Original name: Output volume + /// Value range: 0 to 512 + /// + public int GetOutputVolume() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + /// Original name: Output volume + /// Value range: 0 to 512 + /// + public void SetOutputVolume(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); + + /// + /// Original name: Symmetric + /// Possible values: Off, On + /// + public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + /// Original name: Symmetric + /// Possible values: Off, On + /// + public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + #endregion controllers + + #region curves + + /// + /// Read Curve containing 256 values. + /// Value range: 0 to 1. + /// Maps input to output. + /// + public void ReadCurve(float[] buffer) + { + if (buffer.Length < 256) + throw new System.ArgumentException("Buffer must be at least of size 256"); + + ModuleHandle.ReadCurve(0, buffer); + } + + /// + /// Write Curve containing 256 values. + /// Value range: 0 to 1. + /// Maps input to output. + /// + public void WriteCurve(float[] buffer) + { + if (buffer.Length < 256) + throw new System.ArgumentException("Buffer must be at least of size 256"); + + ModuleHandle.WriteCurve(0, buffer); + } + + #endregion curves + } +} diff --git a/SunSharp/SunSharp.sln b/SunSharp/SunSharp.sln new file mode 100644 index 0000000..572f199 --- /dev/null +++ b/SunSharp/SunSharp.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp", "SunSharp.csproj", "{B676D468-9617-942E-E2F8-3C6FF5A5D0A8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B676D468-9617-942E-E2F8-3C6FF5A5D0A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B676D468-9617-942E-E2F8-3C6FF5A5D0A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B676D468-9617-942E-E2F8-3C6FF5A5D0A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B676D468-9617-942E-E2F8-3C6FF5A5D0A8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {698900B2-3F6D-4D32-B437-46E1597BCE23} + EndGlobalSection +EndGlobal diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs new file mode 100644 index 0000000..89c378d --- /dev/null +++ b/SunSharp/SunVox.cs @@ -0,0 +1,322 @@ +using System; +using System.Collections.Generic; +using SunSharp.Native; + +namespace SunSharp +{ + /// + /// Allows for object-oriented approach to using the SunVox library. + /// No manual locking should be necessary. + /// + public interface ISunVox : IDisposable + { + ISlots Slots { get; } + bool NeedsUserCallback { get; } + bool SingleThreaded { get; } + OutputType? OutputType { get; } + LibraryVersion Version { get; } + int SampleRate { get; } + AudioChannels Channels { get; } + + /// + /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the Input module creation). Call it from the main thread only, where the SunVox sound stream is not locked. + /// + void UpdateInputDevices(); + + /// + /// Get the next piece of audio. + /// If library was initialized with , the samples will be interlaced, and the buffer size must be a multiple of two. + /// + /// Buffer to write sound data to. + /// Audio latency (in frames). + /// Buffer output time (in system ticks). + bool AudioCallback(float[] outputBuffer, int latency, uint outTime); + + /// + bool AudioCallback(short[] outputBuffer, int latency, uint outTime); + + /// + /// Get the next piece of audio. + /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. + /// Sends equal size buffer of an input device, which will be applied to any Input modules. + /// + /// Buffer to write sound data to. + /// Buffer to read sound data from. + /// Input data channels. + /// Audio latency (in frames). + /// Buffer output time (in system ticks). + bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + + /// + bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + + /// + bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + + /// + bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + + uint GetTicks(); + + uint GetTicksPerSecond(); + } + + /// + public sealed class SunVox : ISunVox + { + /// + /// The underlying library interface. Direct use may break existing abstractions. + /// + public ISunVoxLib Library { get; } + + /// + public Slots Slots { get; } + + /// + ISlots ISunVox.Slots => Slots; + + /// + public bool NeedsUserCallback => OutputType != null; + + /// + public bool SingleThreaded { get; } + + /// + public OutputType? OutputType { get; } + + /// + public LibraryVersion Version { get; } + + /// + public int SampleRate { get; } + + /// + public AudioChannels Channels { get; } + + /// + /// Create an instance of the engine with own audio stream and threading. + /// + /// + /// + /// Leave for the value to be assigned by the engine. + /// Leave for the value to be assigned by the engine. + /// Leave for the value to be assigned by the engine. + /// Leave for the value to be assigned by the engine. + /// Limit information sent to Standard Output. + public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, + string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) + { + var flags = SunVoxInitOptions.None; + if (noDebugOutput) + { + flags |= SunVoxInitOptions.NoDebugOutput; + } + + var configuration = AssembleConfigurationParams(bufferSize, deviceIn, deviceOut, driver); + + Library = library; + Version = Library.Initialize(sampleRate: -1, config: configuration, channels: channels, options: flags); + SampleRate = Library.GetSampleRate(); + SingleThreaded = false; + OutputType = null; + Channels = channels; + Slots = new Slots(this); + } + + /// + /// Create an instance of the engine with the intent of using AudioCallback. + /// + /// + /// + /// + /// + /// Use to promise that audio callback and other methods will be called from one thread. + /// Limit information sent to Standard Output. + /// + public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, + bool singleThreaded = false, bool noDebugOutput = true) + { + var flags = ConstructInitFlags(SunVoxInitOptions.UserAudioCallback, noDebugOutput, outputType, singleThreaded); + + if (sampleRate < 1) + { + throw new ArgumentException($"Invalid value: {sampleRate}", nameof(sampleRate)); + } + + Library = library; + Version = Library.Initialize(sampleRate: sampleRate, channels: channels, options: flags); + SampleRate = Library.GetSampleRate(); + SingleThreaded = false; + Channels = channels; + OutputType = outputType; + Slots = new Slots(this); + } + + private static string? AssembleConfigurationParams(uint? bufferSize, string? deviceIn, string? deviceOut, string? driver) + { + var arguments = new List(); + if (bufferSize != null) + { + arguments.Add($"buffer={bufferSize.Value}"); + } + + if (deviceIn != null) + { + arguments.Add($"audiodevice_in={deviceIn}"); + } + + if (deviceOut != null) + { + arguments.Add($"audiodevice={deviceOut}"); + } + + if (driver != null) + { + arguments.Add($"audiodriver={driver}"); + } + var configuration = arguments.Count != 0 ? string.Join("|", arguments) : null; + return configuration; + } + + private static SunVoxInitOptions ConstructInitFlags(SunVoxInitOptions initial, bool noDebugOutput, OutputType outputType, bool singleThreaded) + { + var flags = initial; + if (noDebugOutput) + { + flags |= SunVoxInitOptions.NoDebugOutput; + } + + flags |= outputType switch + { + SunSharp.OutputType.Float32 => SunVoxInitOptions.AudioFloat32, + SunSharp.OutputType.Int16 => SunVoxInitOptions.AudioInt16, + _ => throw new ArgumentException($"Invalid value: {(int)outputType}", nameof(outputType)) + }; + + if (singleThreaded) + { + flags |= SunVoxInitOptions.OneThread; + } + + return flags; + } + + #region disposable + + private bool _deinitialized; + + private void Dispose(bool disposing) + { + if (!_deinitialized) + { + if (disposing) + { + // dispose managed state (managed objects) + // nothing right now + } + + Library.Deinitialize(); + _deinitialized = true; + } + } + + ~SunVox() + { + Dispose(disposing: false); + } + + /// + /// Use to deinitialize the library and free resources. + /// + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + #endregion disposable + + #region audio I/O + + /// + public void UpdateInputDevices() + { + Library.UpdateInputDevices(); + } + + private void AudioGuard(bool callIsFloat) + { + if (OutputType == null) + { + throw new InvalidOperationException("SunVox was not initialized in user callback mode."); + } + + var outputTypeIsFloat = OutputType == SunSharp.OutputType.Float32; + + if (outputTypeIsFloat == callIsFloat) + { + return; + } + + var expected = callIsFloat ? SunSharp.OutputType.Float32 : SunSharp.OutputType.Int16; + var msg = $"SunVox was initialized with output type \"{OutputType}\", but callback was called expecting output type \"{expected}\""; + throw new InvalidOperationException(msg); + } + + /// + public bool AudioCallback(float[] outputBuffer, int latency, uint outTime) + { + AudioGuard(true); + return Library.AudioCallback(outputBuffer, Channels, latency, outTime); + } + + /// + public bool AudioCallback(short[] outputBuffer, int latency, uint outTime) + { + AudioGuard(false); + return Library.AudioCallback(outputBuffer, Channels, latency, outTime); + } + + /// + public bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + AudioGuard(true); + return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); + } + + /// + public bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + AudioGuard(true); + return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); + } + + /// + public bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + AudioGuard(false); + return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); + } + + /// + public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) + { + AudioGuard(false); + return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); + } + + #endregion audio I/O + + /// + public uint GetTicks() + { + return Library.GetTicks(); + } + + /// + public uint GetTicksPerSecond() + { + return Library.GetTicksPerSecond(); + } + } +} diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 0e2a3aa..0a63693 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -3,12 +3,13 @@ namespace SunSharp { /// - /// This exception signifies that SunVox returned an unexpected value, - /// which may be caused by being in the wrong state when calling methods. - /// In case of issues, please check STDOUT of the process hosting the SunVox library, - /// as more information may be provided there. + /// Represents errors that occur when the SunVox library returns an unexpected value or is called in an invalid + /// state. /// - /// + /// + /// Additional diagnostic information may be available in the standard output of the process + /// hosting the SunVox library. Check STDOUT for details if this exception is thrown. + /// public sealed class SunVoxException : Exception { private readonly uint _code; diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs new file mode 100644 index 0000000..83dff56 --- /dev/null +++ b/SunSharp/Synthesizer.cs @@ -0,0 +1,279 @@ +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using SunSharp.Native; + +namespace SunSharp +{ + public interface ISynthesizer : IEnumerable + { + ISlot Slot { get; } + + int GetUpperModuleCount(); + + bool GetModuleExists(int moduleId); + + ModuleFlags GetModuleFlags(int moduleId); + + bool TryGetModule(int moduleId, [NotNullWhen(true)] out IModuleHandle? moduleHandle); + + bool TryGetModule(string name, [NotNullWhen(true)] out IModuleHandle? moduleHandle); + + IModuleHandle CreateModule(ModuleType type, string name, int x = 0, int y = 0, int z = 0); + + /// + /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// + /// + /// + /// + /// + IModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0); + + /// + /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// + /// + /// + /// + /// + IModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0); + + void RemoveModule(int moduleId); + + void RemoveModule(IModuleHandle moduleHandle); + + void ConnectModule(int sourceId, int destinationId); + + void ConnectModule(IModuleHandle source, IModuleHandle destination); + + void DisconnectModule(int sourceId, int destinationId); + + void DisconnectModule(IModuleHandle source, IModuleHandle destination); + } + + public class Synthesizer : ISynthesizer, IEnumerable + { + private readonly ISunVoxLib _lib; + private readonly int _id; + + public Slot Slot { get; } + + ISlot ISynthesizer.Slot => Slot; + + internal Synthesizer(Slot slot) + { + Slot = slot; + _lib = slot.SunVox.Library; + _id = slot.Id; + } + + /// + public int GetUpperModuleCount() + { + return _lib.GetUpperModuleCount(_id); + } + + /// + public bool GetModuleExists(int moduleId) + { + return _lib.GetModuleExists(_id, moduleId); + } + + /// + public ModuleFlags GetModuleFlags(int moduleId) + { + return _lib.GetModuleFlags(_id, moduleId); + } + + /// + public bool TryGetModule(int moduleId, [NotNullWhen(true)] out ModuleHandle? moduleHandle) + { + if (_lib.GetModuleExists(_id, moduleId)) + { + moduleHandle = new ModuleHandle(this, moduleId); + return true; + } + + moduleHandle = null; + return false; + } + + /// + public bool TryGetModule(string name, [NotNullWhen(true)] out ModuleHandle? moduleHandle) + { + var moduleId = _lib.FindModule(_id, name); + if (moduleId != null) + { + moduleHandle = new ModuleHandle(this, moduleId.Value); + return true; + } + + moduleHandle = null; + return false; + } + + /// + bool ISynthesizer.TryGetModule(int moduleId, [NotNullWhen(true)] out IModuleHandle? moduleHandle) + { + if (TryGetModule(moduleId, out var foundModuleHandle)) + { + moduleHandle = foundModuleHandle; + return true; + } + + moduleHandle = null; + return false; + } + + /// + bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out IModuleHandle? moduleHandle) + { + if (TryGetModule(name, out var foundModuleHandle)) + { + moduleHandle = foundModuleHandle; + return true; + } + + moduleHandle = null; + return false; + } + + /// + public ModuleHandle CreateModule(ModuleType type, string name, int x = 0, int y = 0, int z = 0) + { + using (Slot.AcquireLock()) + { + var moduleId = _lib.CreateModule(_id, ModuleTypeHelper.InternalNameFromType(type), name, x, y, z); + return new ModuleHandle(this, moduleId); + } + } + + /// + IModuleHandle ISynthesizer.CreateModule(ModuleType type, string name, int x, int y, int z) + { + return CreateModule(type, name, x, y, z); + } + + /// + public ModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) + { + using (Slot.AcquireLock()) + { + var moduleId = _lib.LoadModule(_id, data, x, y, z); + return new ModuleHandle(this, moduleId); + } + } + + /// + public ModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) + { + using (Slot.AcquireLock()) + { + var moduleId = _lib.LoadModule(_id, path, x, y, z); + return new ModuleHandle(this, moduleId); + } + } + + /// + IModuleHandle ISynthesizer.LoadModule(byte[] data, int x, int y, int z) + { + return LoadModule(data, x, y, z); + } + + /// + IModuleHandle ISynthesizer.LoadModule(string path, int x, int y, int z) + { + return LoadModule(path, x, y, z); + } + + /// + public void RemoveModule(int moduleId) + { + using (Slot.AcquireLock()) + { + _lib.RemoveModule(_id, moduleId); + } + } + + /// + public void RemoveModule(ModuleHandle moduleHandle) + { + RemoveModule(moduleHandle.Id); + } + + /// + void ISynthesizer.RemoveModule(IModuleHandle moduleHandle) + { + RemoveModule(moduleHandle.Id); + } + + /// + public void ConnectModule(int sourceId, int destinationId) + { + using (Slot.AcquireLock()) + { + _lib.ConnectModule(_id, sourceId, destinationId); + } + } + + /// + public void ConnectModule(ModuleHandle source, ModuleHandle destination) + { + ConnectModule(source.Id, destination.Id); + } + + /// + void ISynthesizer.ConnectModule(IModuleHandle source, IModuleHandle destination) + { + ConnectModule(source.Id, destination.Id); + } + + /// + public void DisconnectModule(int sourceId, int destinationId) + { + using (Slot.AcquireLock()) + { + _lib.DisconnectModule(_id, sourceId, destinationId); + } + } + + /// + public void DisconnectModule(ModuleHandle source, ModuleHandle destination) + { + DisconnectModule(source.Id, destination.Id); + } + + /// + void ISynthesizer.DisconnectModule(IModuleHandle source, IModuleHandle destination) + { + DisconnectModule(source.Id, destination.Id); + } + + public IEnumerator GetEnumerator() + { + for (var i = 0; i < GetUpperModuleCount(); i++) + { + if (TryGetModule(i, out var moduleHandle)) + { + yield return moduleHandle.Value; + } + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var moduleHandle in this) + { + yield return moduleHandle; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} diff --git a/SunSharp/Timeline.cs b/SunSharp/Timeline.cs new file mode 100644 index 0000000..a2d6479 --- /dev/null +++ b/SunSharp/Timeline.cs @@ -0,0 +1,109 @@ +using System.Collections; +using System.Collections.Generic; +using SunSharp.Native; + +namespace SunSharp +{ + public interface ITimeline : IEnumerable + { + ISlot Slot { get; } + + int GetUpperPatternCount(); + + bool GetPatternExists(int patternId); + + bool TryGetPattern(string name, out PatternHandle pattern); + + bool TryGetPattern(int id, out PatternHandle pattern); + + PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null); + + PatternHandle ClonePattern(PatternHandle original, int x, int y); + } + + public sealed class Timeline : ITimeline + { + public Slot Slot { get; } + + ISlot ITimeline.Slot => Slot; + + private readonly ISunVoxLib _lib; + private readonly int _id; + + internal Timeline(Slot slot) + { + Slot = slot; + _lib = slot.SunVox.Library; + _id = slot.Id; + } + + public int GetUpperPatternCount() + { + return _lib.GetUpperPatternCount(_id); + } + + public bool GetPatternExists(int patternId) + { + return _lib.GetPatternExists(_id, patternId); + } + + public bool TryGetPattern(string name, out PatternHandle pattern) + { + var id = _lib.FindPattern(_id, name); + + if (id != null) + { + pattern = new PatternHandle(this, id.Value); + return true; + } + + pattern = default; + return false; + } + + public bool TryGetPattern(int id, out PatternHandle pattern) + { + if (_lib.GetPatternExists(_id, id)) + { + pattern = new PatternHandle(this, id); + return true; + } + else + { + pattern = default; + return false; + } + } + + public PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null) + { + using (Slot.AcquireLock()) + { + var id = _lib.CreatePattern(_id, x, y, tracks, lines, iconSeed, name); + return new PatternHandle(this, id); + } + } + + public PatternHandle ClonePattern(PatternHandle original, int x, int y) + { + using (Slot.AcquireLock()) + { + var id = _lib.ClonePattern(_id, original.Id, x, y); + return new PatternHandle(this, id); + } + } + + public IEnumerator GetEnumerator() + { + for (var i = 0; i < GetUpperPatternCount(); i++) + { + if (TryGetPattern(i, out var p)) + { + yield return p; + } + } + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } +} diff --git a/SunSharp/VirtualPattern.cs b/SunSharp/VirtualPattern.cs new file mode 100644 index 0000000..7994c2a --- /dev/null +++ b/SunSharp/VirtualPattern.cs @@ -0,0 +1,133 @@ +using SunSharp.Native; + +namespace SunSharp +{ + public interface IVirtualPattern + { + ISlot Slot { get; } + + uint GetCurrentTick(); + + uint GetTicksPerSecond(); + + /// + /// Send an event to be processed as fast as possible. + /// This ignores any previously set timing. + /// + void SendEventImmediately(int track, PatternEvent e); + + /// + /// Set the tick timestamp of future events. + /// This will make future events be processed at the specified timestamp. + /// + void SetEventTiming(int timestamp); + + /// + /// Reset the tick timestamp of future events. + /// This will make future events be processed as soon as possible. + /// + void ResetEventTiming(); + + /// + /// Sends the specified pattern event to the given track. + /// The event will be processed according to the last set timing. + /// + void SendEvent(int track, PatternEvent e); + + /// + /// Sends the specified pattern event to the given track. + /// The event will be processed according to the last set timing. + /// + void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); + } + + public sealed class VirtualPattern : IVirtualPattern + { + public Slot Slot { get; } + + public int? LastSetTimestamp { get; private set; } + + ISlot IVirtualPattern.Slot => Slot; + + private readonly ISunVoxLib _lib; + private readonly int _id; + private readonly object _lock; + + internal VirtualPattern(Slot slot) + { + Slot = slot; + _lib = slot.SunVox.Library; + _id = slot.Id; + _lock = new object(); + } + + /// + public uint GetCurrentTick() + { + return _lib.GetTicks(); + } + + /// + public uint GetTicksPerSecond() + { + return _lib.GetTicksPerSecond(); + } + + /// + public void SendEventImmediately(int track, PatternEvent e) + { + lock (_lock) + { + if (LastSetTimestamp != null) + { + var previous = LastSetTimestamp; + _lib.SetSendEventTimestamp(_id, true, 0); + _lib.SendEvent(_id, track, e); + _lib.SetSendEventTimestamp(_id, false, previous.Value); + } + else + { + _lib.SendEvent(_id, track, e); + } + } + } + + /// + public void SetEventTiming(int timestamp) + { + lock (_lock) + { + _lib.SetSendEventTimestamp(_id, false, timestamp); + LastSetTimestamp = timestamp; + } + } + + /// + public void ResetEventTiming() + { + lock (_lock) + { + _lib.SetSendEventTimestamp(_id, true, 0); + LastSetTimestamp = null; + } + } + + /// + public void SendEvent(int track, PatternEvent e) + { + lock (_lock) + { + _lib.SendEvent(_id, track, e); + } + } + + /// + public void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0) + { + lock (_lock) + { + _lib.SendEvent(_id, track, nn, vv, mm, ccee, xxyy); + } + } + } +} diff --git a/SunSharp/license.txt b/SunSharp/license.txt index 8f5b677..06fb014 100644 --- a/SunSharp/license.txt +++ b/SunSharp/license.txt @@ -1,21 +1,348 @@ -SunSharp is distributed under the MIT license: - -Copyright (c) 2023-2025 Sotakebk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +# Copyright (c) 2023-2025 Sotakebk + +## Mozilla Public License Version 2.0 + +### 1. Definitions + +**1.1. "Contributor"** + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +**1.2. "Contributor Version"** + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +**1.3. "Contribution"** + means Covered Software of a particular Contributor. + +**1.4. "Covered Software"** + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +**1.5. "Incompatible With Secondary Licenses"** + means + +* **(a)** that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or +* **(b)** that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +**1.6. "Executable Form"** + means any form of the work other than Source Code Form. + +**1.7. "Larger Work"** + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +**1.8. "License"** + means this document. + +**1.9. "Licensable"** + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +**1.10. "Modifications"** + means any of the following: + +* **(a)** any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or +* **(b)** any new file in Source Code Form that contains any Covered + Software. + +**1.11. "Patent Claims" of a Contributor** + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +**1.12. "Secondary License"** + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +**1.13. "Source Code Form"** + means the form of the work preferred for making modifications. + +**1.14. "You" (or "Your")** + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means **(a)** the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or **(b)** ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +### 2. License Grants and Conditions + +#### 2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +* **(a)** under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and +* **(b)** under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +#### 2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +#### 2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +* **(a)** for any code that a Contributor has removed from Covered Software; + or +* **(b)** for infringements caused by: **(i)** Your and any other third party's + modifications of Covered Software, or **(ii)** the combination of its + Contributions with other software (except as part of its Contributor + Version); or +* **(c)** under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +#### 2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +#### 2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +#### 2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +#### 2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +### 3. Responsibilities + +#### 3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +#### 3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +* **(a)** such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +* **(b)** You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +#### 3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +#### 3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +#### 3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +### 4. Inability to Comply Due to Statute or Regulation + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: **(a)** comply with +the terms of this License to the maximum extent possible; and **(b)** +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +### 5. Termination + +**5.1.** The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated **(a)** provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and **(b)** on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +**5.2.** If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +### 6. Disclaimer of Warranty + +> Covered Software is provided under this License on an "as is" +> basis, without warranty of any kind, either expressed, implied, or +> statutory, including, without limitation, warranties that the +> Covered Software is free of defects, merchantable, fit for a +> particular purpose or non-infringing. The entire risk as to the +> quality and performance of the Covered Software is with You. +> Should any Covered Software prove defective in any respect, You +> (not any Contributor) assume the cost of any necessary servicing, +> repair, or correction. This disclaimer of warranty constitutes an +> essential part of this License. No use of any Covered Software is +> authorized under this License except under this disclaimer. + +### 7. Limitation of Liability + +> Under no circumstances and under no legal theory, whether tort +> (including negligence), contract, or otherwise, shall any +> Contributor, or anyone who distributes Covered Software as +> permitted above, be liable to You for any direct, indirect, +> special, incidental, or consequential damages of any character +> including, without limitation, damages for lost profits, loss of +> goodwill, work stoppage, computer failure or malfunction, or any +> and all other commercial damages or losses, even if such party +> shall have been informed of the possibility of such damages. This +> limitation of liability shall not apply to liability for death or +> personal injury resulting from such party's negligence to the +> extent applicable law prohibits such limitation. Some +> jurisdictions do not allow the exclusion or limitation of +> incidental or consequential damages, so this exclusion and +> limitation may not apply to You. + +### 8. Litigation + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +### 9. Miscellaneous + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +### 10. Versions of the License + +#### 10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +#### 10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +#### 10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +## Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +## Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. From 7e0ab92e6b0cbcc273bae7e5e8b268da537ee36c Mon Sep 17 00:00:00 2001 From: Sotakebk Date: Mon, 12 Jan 2026 17:47:19 +0100 Subject: [PATCH 11/27] more work done --- .../CodeGeneration.Tests.csproj | 9 +- .../GeneratorTests.cs | 6 +- .../Logic/KnownModuleTypesTests.cs | 52 + CodeGeneration.Tests/Logic/ModuleDataTests.cs | 92 + .../CodeGeneration.csproj | 6 +- CodeGeneration/GeneratorDiscovery.cs | 80 + .../GeneratorResult.cs | 27 +- .../Generators/BaseGenerator.cs | 8 +- .../Generators/GeneratorProvider.cs | 6 + .../ModuleHandles/BasicModuleGenerator.cs | 309 + .../ModuleHandles/FmxModuleGenerator.cs | 43 + .../ModuleHandles/MetaModuleGenerator.cs | 43 + .../PerTypeModuleHandleGeneratorProvider.cs | 23 + .../SynthModuleHandleGenerator.cs | 77 + .../Generators}/NativeProxyGenerator.cs | 22 +- .../Generators/OwnData/ModuleDataGenerator.cs | 309 + .../OwnData/ModuleDataSchemaGenerator.cs | 30 + .../SunVoxHeaderInterfaceGenerator.cs | 13 +- .../SunVoxLibWithLoggerGenerator.cs | 118 + .../Generators/SynthModuleTypeGenerator.cs | 124 + .../Logic}/CodeGenerationContext.cs | 8 +- CodeGeneration/Logic/CodeGenerationHelper.cs | 14 + CodeGeneration/Logic/KnownModuleData.cs | 66 + CodeGeneration/Logic/KnownModuleTypes.cs | 198 + CodeGeneration/Logic/ModuleData.g.json | 3516 ++++++++ CodeGeneration/Logic/ModuleData.g.schema.json | 124 + CodeGeneration/Logic/ModuleDataLoader.cs | 109 + .../Logic/SunVoxHeaderParser.cs | 69 +- .../Logic/TypeTranslator.cs | 4 +- .../PathHelper.cs | 16 +- CodeGeneration/Program.cs | 87 + Examples/Examples.csproj | 12 +- Examples/Program.cs | 37 +- LICENSE.md | 369 +- SunSharp.CodeGeneration/GeneratorDiscovery.cs | 69 - SunSharp.CodeGeneration/Program.cs | 78 - SunSharp.IntegrationTests/AssemblyInfo.cs | 2 +- .../BaseIntegrationTests.cs | 2 +- SunSharp.IntegrationTests/GlobalUsings.cs | 2 +- .../SunSharp.IntegrationTests.csproj | 9 +- .../SunVoxLibTests/PatternTests.cs | 2 +- SunSharp.Redistribution/LibraryLoader.cs | 10 +- .../LibraryLoadingException.cs | 2 +- SunSharp.Redistribution/README.md | 2 + .../SunSharp.Redistribution.csproj | 17 +- SunSharp.Redistribution/UnixLibraryHandler.cs | 4 +- .../WindowsLibraryHandler.cs | 10 +- SunSharp.Redistribution/license.txt | 369 +- SunSharp.Tests/AssemblyInfo.cs | 2 +- SunSharp.Tests/Data/DataTests.cs | 2 +- SunSharp.Tests/Data/SongDataReaderTests.cs | 2 +- SunSharp.Tests/EffectExtensionsTests.cs | 2 +- SunSharp.Tests/FineTunePairTests.cs | 4 +- SunSharp.Tests/GlobalUsings.cs | 2 +- SunSharp.Tests/HelperTests.cs | 2 +- SunSharp.Tests/LibraryVersionTests.cs | 2 +- SunSharp.Tests/Mocks/ModuleFlagsHelper.cs | 2 +- SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs | 2 +- SunSharp.Tests/ModuleFlagsTests.cs | 2 +- .../Native/Loader/NativeProxyTests.cs | 2 +- ...unVoxLibNativeWrapperAudioCallbackTests.cs | 2 +- .../SunVoxLibNativeWrapperModulesTests.cs | 4 +- .../SunVoxLibNativeWrapperPatternsTests.cs | 2 +- .../Native/SunVoxLibNativeWrapperTests.cs | 2 +- SunSharp.Tests/NoteTests.cs | 4 +- SunSharp.Tests/PatternEventTests.cs | 14 +- SunSharp.Tests/SunSharp.Tests.csproj | 10 +- SunSharp.Tests/SunVoxExceptionTests.cs | 8 +- SunSharp.sln | 23 +- SunSharp/Data/ControllerData.cs | 2 +- SunSharp/Data/IDeepCopyable.cs | 2 +- SunSharp/Data/ModuleData.cs | 2 +- SunSharp/Data/PatternData.cs | 2 +- SunSharp/Data/SongData.cs | 2 +- SunSharp/Data/SongDataReader.cs | 11 +- SunSharp/Diagnostics/Logger.cs | 29 + SunSharp/Diagnostics/SunVoxLibWithLogger.cs | 39 + SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs | 944 ++ SunSharp/Enums.cs | 2 +- SunSharp/FineTunePair.cs | 32 +- SunSharp/Helper.cs | 4 +- SunSharp/IModuleHandleWrapper.cs | 85 - SunSharp/LibraryVersion.cs | 2 +- SunSharp/ModuleFlags.cs | 2 +- SunSharp/ModuleType.Generated.cs | 157 - SunSharp/Modules/AdsrModuleHandle.g.cs | 300 + SunSharp/Modules/AmplifierModuleHandle.g.cs | 208 + .../Modules/AnalogGeneratorModuleHandle.g.cs | 466 + SunSharp/Modules/CompressorModuleHandle.g.cs | 174 + .../Modules/ControlToNoteModuleHandle.g.cs | 222 + SunSharp/Modules/ControllerSpecificEnums.cs | 966 ++ SunSharp/Modules/DcBlockerModuleHandle.g.cs | 66 + SunSharp/Modules/DelayModuleHandle.g.cs | 242 + SunSharp/Modules/DistortionModuleHandle.g.cs | 156 + SunSharp/Modules/DrumSynthModuleHandle.g.cs | 320 + SunSharp/Modules/EchoModuleHandle.g.cs | 210 + SunSharp/Modules/EqModuleHandle.g.cs | 120 + SunSharp/Modules/FeedbackModuleHandle.g.cs | 84 + SunSharp/Modules/FftModuleHandle.g.cs | 348 + SunSharp/Modules/FilterModuleHandle.g.cs | 308 + SunSharp/Modules/FilterProModuleHandle.g.cs | 344 + SunSharp/Modules/FlangerModuleHandle.g.cs | 226 + SunSharp/Modules/FmModuleHandle.g.cs | 354 + SunSharp/Modules/FmxModuleHandle.g.cs | 316 + SunSharp/Modules/GeneratorModuleHandle.g.cs | 246 + SunSharp/Modules/GlideModuleHandle.g.cs | 170 + SunSharp/Modules/GpioModuleHandle.g.cs | 172 + .../IncorrectSynthHandleTypeException.cs | 24 + SunSharp/Modules/InputModuleHandle.g.cs | 84 + SunSharp/Modules/KickerModuleHandle.g.cs | 208 + SunSharp/Modules/LfoModuleHandle.g.cs | 270 + SunSharp/Modules/LoopModuleHandle.g.cs | 190 + SunSharp/Modules/MetaModuleModuleHandle.cs | 24 + SunSharp/Modules/MetaModuleModuleHandle.g.cs | 138 + SunSharp/Modules/ModulatorModuleHandle.g.cs | 100 + .../Modules/MultiControlModuleHandle.g.cs | 180 + SunSharp/Modules/MultiSynthModuleHandle.g.cs | 260 + SunSharp/Modules/OutputModuleHandle.g.cs | 50 + .../Modules/PitchDetectorModuleHandle.g.cs | 254 + .../Modules/PitchShifterModuleHandle.g.cs | 172 + .../Modules/PitchToControlModuleHandle.g.cs | 172 + SunSharp/Modules/ReverbModuleHandle.g.cs | 224 + SunSharp/Modules/SamplerModuleHandle.cs | 30 + SunSharp/Modules/SamplerModuleHandle.g.cs | 154 + .../Modules/SoundToControlModuleHandle.g.cs | 206 + .../Modules/SpectraVoiceModuleHandle.g.cs | 276 + SunSharp/Modules/TypedModuleHandle.cs | 12 + .../VelocityToControlModuleHandle.g.cs | 138 + SunSharp/Modules/VibratoModuleHandle.g.cs | 170 + SunSharp/Modules/VocalFilterModuleHandle.g.cs | 288 + SunSharp/Modules/VorbisPlayerModuleHandle.cs | 30 + .../Modules/VorbisPlayerModuleHandle.g.cs | 170 + SunSharp/Modules/WaveShaperModuleHandle.g.cs | 174 + SunSharp/Native/ISunVoxLib.Modules.cs | 2 +- SunSharp/Native/ISunVoxLib.Patterns.cs | 2 +- SunSharp/Native/ISunVoxLib.cs | 2 +- SunSharp/Native/ISunVoxLibC.g.cs | 6 + SunSharp/Native/Loader/LibraryHandler.cs | 2 +- SunSharp/Native/Loader/NativeProxy.cs | 2 +- ...roxy.ISunVoxLibC.g.cs => NativeProxy.g.cs} | 5 +- .../Native/SunVoxLibNativeWrapper.Modules.cs | 243 +- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 62 +- SunSharp/Native/SunVoxLibNativeWrapper.cs | 198 +- SunSharp/Note.cs | 11 +- SunSharp/PatternEvent.cs | 19 +- SunSharp/PatternHandle.cs | 7 +- SunSharp/RELEASE-NOTES.txt | 22 +- SunSharp/Slot.cs | 2 +- SunSharp/SlotLock.cs | 6 +- SunSharp/Slots.cs | 19 +- SunSharp/SpecificModules.Generated.cs | 7853 ----------------- SunSharp/SunSharp.csproj | 26 +- SunSharp/SunVox.cs | 5 +- SunSharp/SunVoxConstants.cs | 2 +- SunSharp/SunVoxException.cs | 41 +- .../{ModuleHandle.cs => SynthModuleHandle.cs} | 117 +- SunSharp/SynthModuleHandle.g.cs | 270 + SunSharp/SynthModuleType.cs | 46 + SunSharp/SynthModuleType.g.cs | 185 + SunSharp/Synthesizer.cs | 86 +- SunSharp/Timeline.cs | 111 +- SunSharp/VirtualPattern.cs | 27 +- SunSharp/license.txt | 369 +- 163 files changed, 17934 insertions(+), 9846 deletions(-) rename SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj => CodeGeneration.Tests/CodeGeneration.Tests.csproj (83%) rename {SunSharp.CodeGeneration.Tests => CodeGeneration.Tests}/GeneratorTests.cs (77%) create mode 100644 CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs create mode 100644 CodeGeneration.Tests/Logic/ModuleDataTests.cs rename SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj => CodeGeneration/CodeGeneration.csproj (57%) create mode 100644 CodeGeneration/GeneratorDiscovery.cs rename {SunSharp.CodeGeneration => CodeGeneration}/GeneratorResult.cs (65%) rename {SunSharp.CodeGeneration => CodeGeneration}/Generators/BaseGenerator.cs (79%) create mode 100644 CodeGeneration/Generators/GeneratorProvider.cs create mode 100644 CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs create mode 100644 CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs create mode 100644 CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs create mode 100644 CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs create mode 100644 CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs rename {SunSharp.CodeGeneration/Generators/NativeProxy => CodeGeneration/Generators}/NativeProxyGenerator.cs (89%) create mode 100644 CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs create mode 100644 CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs rename {SunSharp.CodeGeneration/Generators/SunVoxHeader => CodeGeneration/Generators}/SunVoxHeaderInterfaceGenerator.cs (86%) create mode 100644 CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs create mode 100644 CodeGeneration/Generators/SynthModuleTypeGenerator.cs rename {SunSharp.CodeGeneration/Generators => CodeGeneration/Logic}/CodeGenerationContext.cs (88%) create mode 100644 CodeGeneration/Logic/CodeGenerationHelper.cs create mode 100644 CodeGeneration/Logic/KnownModuleData.cs create mode 100644 CodeGeneration/Logic/KnownModuleTypes.cs create mode 100644 CodeGeneration/Logic/ModuleData.g.json create mode 100644 CodeGeneration/Logic/ModuleData.g.schema.json create mode 100644 CodeGeneration/Logic/ModuleDataLoader.cs rename {SunSharp.CodeGeneration => CodeGeneration}/Logic/SunVoxHeaderParser.cs (69%) rename {SunSharp.CodeGeneration => CodeGeneration}/Logic/TypeTranslator.cs (88%) rename {SunSharp.CodeGeneration/Generators => CodeGeneration}/PathHelper.cs (67%) create mode 100644 CodeGeneration/Program.cs delete mode 100644 SunSharp.CodeGeneration/GeneratorDiscovery.cs delete mode 100644 SunSharp.CodeGeneration/Program.cs create mode 100644 SunSharp/Diagnostics/Logger.cs create mode 100644 SunSharp/Diagnostics/SunVoxLibWithLogger.cs create mode 100644 SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs delete mode 100644 SunSharp/IModuleHandleWrapper.cs delete mode 100644 SunSharp/ModuleType.Generated.cs create mode 100644 SunSharp/Modules/AdsrModuleHandle.g.cs create mode 100644 SunSharp/Modules/AmplifierModuleHandle.g.cs create mode 100644 SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs create mode 100644 SunSharp/Modules/CompressorModuleHandle.g.cs create mode 100644 SunSharp/Modules/ControlToNoteModuleHandle.g.cs create mode 100644 SunSharp/Modules/ControllerSpecificEnums.cs create mode 100644 SunSharp/Modules/DcBlockerModuleHandle.g.cs create mode 100644 SunSharp/Modules/DelayModuleHandle.g.cs create mode 100644 SunSharp/Modules/DistortionModuleHandle.g.cs create mode 100644 SunSharp/Modules/DrumSynthModuleHandle.g.cs create mode 100644 SunSharp/Modules/EchoModuleHandle.g.cs create mode 100644 SunSharp/Modules/EqModuleHandle.g.cs create mode 100644 SunSharp/Modules/FeedbackModuleHandle.g.cs create mode 100644 SunSharp/Modules/FftModuleHandle.g.cs create mode 100644 SunSharp/Modules/FilterModuleHandle.g.cs create mode 100644 SunSharp/Modules/FilterProModuleHandle.g.cs create mode 100644 SunSharp/Modules/FlangerModuleHandle.g.cs create mode 100644 SunSharp/Modules/FmModuleHandle.g.cs create mode 100644 SunSharp/Modules/FmxModuleHandle.g.cs create mode 100644 SunSharp/Modules/GeneratorModuleHandle.g.cs create mode 100644 SunSharp/Modules/GlideModuleHandle.g.cs create mode 100644 SunSharp/Modules/GpioModuleHandle.g.cs create mode 100644 SunSharp/Modules/IncorrectSynthHandleTypeException.cs create mode 100644 SunSharp/Modules/InputModuleHandle.g.cs create mode 100644 SunSharp/Modules/KickerModuleHandle.g.cs create mode 100644 SunSharp/Modules/LfoModuleHandle.g.cs create mode 100644 SunSharp/Modules/LoopModuleHandle.g.cs create mode 100644 SunSharp/Modules/MetaModuleModuleHandle.cs create mode 100644 SunSharp/Modules/MetaModuleModuleHandle.g.cs create mode 100644 SunSharp/Modules/ModulatorModuleHandle.g.cs create mode 100644 SunSharp/Modules/MultiControlModuleHandle.g.cs create mode 100644 SunSharp/Modules/MultiSynthModuleHandle.g.cs create mode 100644 SunSharp/Modules/OutputModuleHandle.g.cs create mode 100644 SunSharp/Modules/PitchDetectorModuleHandle.g.cs create mode 100644 SunSharp/Modules/PitchShifterModuleHandle.g.cs create mode 100644 SunSharp/Modules/PitchToControlModuleHandle.g.cs create mode 100644 SunSharp/Modules/ReverbModuleHandle.g.cs create mode 100644 SunSharp/Modules/SamplerModuleHandle.cs create mode 100644 SunSharp/Modules/SamplerModuleHandle.g.cs create mode 100644 SunSharp/Modules/SoundToControlModuleHandle.g.cs create mode 100644 SunSharp/Modules/SpectraVoiceModuleHandle.g.cs create mode 100644 SunSharp/Modules/TypedModuleHandle.cs create mode 100644 SunSharp/Modules/VelocityToControlModuleHandle.g.cs create mode 100644 SunSharp/Modules/VibratoModuleHandle.g.cs create mode 100644 SunSharp/Modules/VocalFilterModuleHandle.g.cs create mode 100644 SunSharp/Modules/VorbisPlayerModuleHandle.cs create mode 100644 SunSharp/Modules/VorbisPlayerModuleHandle.g.cs create mode 100644 SunSharp/Modules/WaveShaperModuleHandle.g.cs rename SunSharp/Native/Loader/{NativeProxy.ISunVoxLibC.g.cs => NativeProxy.g.cs} (99%) delete mode 100644 SunSharp/SpecificModules.Generated.cs rename SunSharp/{ModuleHandle.cs => SynthModuleHandle.cs} (72%) create mode 100644 SunSharp/SynthModuleHandle.g.cs create mode 100644 SunSharp/SynthModuleType.cs create mode 100644 SunSharp/SynthModuleType.g.cs diff --git a/SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj b/CodeGeneration.Tests/CodeGeneration.Tests.csproj similarity index 83% rename from SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj rename to CodeGeneration.Tests/CodeGeneration.Tests.csproj index 783d5c0..96b0733 100644 --- a/SunSharp.CodeGeneration.Tests/SunSharp.CodeGeneration.Tests.csproj +++ b/CodeGeneration.Tests/CodeGeneration.Tests.csproj @@ -1,11 +1,14 @@ - net8.0 - enable + net10.0 0.0.0.0 false true + enable + 9999 + Nullable + Debug;Release;Generation @@ -29,7 +32,7 @@ - + \ No newline at end of file diff --git a/SunSharp.CodeGeneration.Tests/GeneratorTests.cs b/CodeGeneration.Tests/GeneratorTests.cs similarity index 77% rename from SunSharp.CodeGeneration.Tests/GeneratorTests.cs rename to CodeGeneration.Tests/GeneratorTests.cs index c316ff9..239db7d 100644 --- a/SunSharp.CodeGeneration.Tests/GeneratorTests.cs +++ b/CodeGeneration.Tests/GeneratorTests.cs @@ -1,16 +1,16 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; using AwesomeAssertions; using NUnit.Framework; -namespace SunSharp.CodeGeneration.Tests; +namespace CodeGeneration.Tests; internal class GeneratorTests { public static IEnumerable Generators => GeneratorDiscovery.GetGenerators(); [TestCaseSource(nameof(Generators))] - public async Task Test(DiscoveredGenerator generator) + public async Task TestGenerator(DiscoveredGenerator generator) { var result = await generator.GenerateAsync(); diff --git a/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs b/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs new file mode 100644 index 0000000..98a4ed8 --- /dev/null +++ b/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs @@ -0,0 +1,52 @@ +using System.Linq; +using AwesomeAssertions; +using CodeGeneration.Logic; +using NUnit.Framework; + +namespace CodeGeneration.Tests.Logic; + +public class KnownModuleTypesTests +{ + [Test] + public void ModuleTypes_AreUniqueByIndexAndName() + { + KnownModuleTypes.ModuleTypes + .Should() + .OnlyHaveUniqueItems(t => t.Index, "Module types must be unique by index."); + + KnownModuleTypes.ModuleTypes + .Should() + .OnlyHaveUniqueItems(t => t.FriendlyName, "Module types must be unique by friendly name."); + + KnownModuleTypes.ModuleTypes + .Should() + .OnlyHaveUniqueItems(t => t.InternalName, "Module types must be unique by internal name."); + } + + [Test] + public void ModuleTypes_DoesNotContainUnknown() + { + KnownModuleTypes.ModuleTypes + .Should() + .NotContain(t => t.Index == 0, "Module types must not contain an entry for 'Unknown' (index 0)."); + } + + [Test] + public void ModuleTypes_AreContinuousInIndex() + { + var indices = KnownModuleTypes.ModuleTypes + .Select(t => t.Index) + .OrderBy(i => i) + .ToList(); + + indices.Add(0); + + var min = indices.Min(); + var max = indices.Max(); + + for (var i = min; i <= max; i++) + { + indices.Should().Contain(i, $"Module types must be continuous in index from {min} to {max}."); + } + } +} diff --git a/CodeGeneration.Tests/Logic/ModuleDataTests.cs b/CodeGeneration.Tests/Logic/ModuleDataTests.cs new file mode 100644 index 0000000..77cd5d6 --- /dev/null +++ b/CodeGeneration.Tests/Logic/ModuleDataTests.cs @@ -0,0 +1,92 @@ +using System.Linq; +using AwesomeAssertions; +using AwesomeAssertions.Execution; +using CodeGeneration.Logic; +using NUnit.Framework; +using SunSharp; + +namespace CodeGeneration.Tests.Logic; + +public class ModuleDataTests +{ + private readonly string _moduleDataFilePath = PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.json"); + + [Test] + public void ModuleData_AllControllersWithEnum_HaveMatchingEnums() + { + var moduleData = ModuleDataLoader.LoadFromFile(_moduleDataFilePath); + moduleData.Should().NotBeNull(); + + var enums = typeof(SunVox).Assembly + .GetTypes() + .Where(t => t.IsEnum && t.IsPublic) + .Where(t => t.Namespace != null && t.Namespace.StartsWith("SunSharp.Modules")) + .ToDictionary(t => t.Name, t => t); + + void AssertOnController(string moduleName, ControllerDescription controller) + { + using var assertionScope = new AssertionScope(); + var enumName = controller.EnumName ?? throw new(); + + enums.TryGetValue(enumName, out var matchingEnum); + matchingEnum.Should().NotBeNull($"Controller '{controller.InternalName}' in module '{moduleName}' references enum {enumName}, but such enum is not available"); + if (matchingEnum == null) + { + return; + } + + var values = matchingEnum.GetEnumValues(); + var intValues = values.Cast().ToArray(); + + var minEnumValue = intValues.Min(v => v); + var maxEnumValue = intValues.Max(v => v); + minEnumValue.Should().Be(controller.MinValue, $"Controller '{controller.InternalName}' in module '{moduleName}' has a min value of {controller.MinValue}, but enum '{enumName}' has a min value of {minEnumValue}"); + maxEnumValue.Should().Be(controller.MaxValue, $"Controller '{controller.InternalName}' in module '{moduleName}' has a max value of {controller.MaxValue}, but enum '{enumName}' has a max value of {maxEnumValue}"); + } + + using var assertionScope = new AssertionScope(); + foreach (var (moduleName, module) in moduleData.Modules) + { + foreach (var (controllerId, controller) in module.Controllers) + { + if (controller.EnumName != null) + { + AssertOnController(moduleName, controller); + } + } + } + } + + [Test] + public void ModuleData_AllCurves_HaveAllData() + { + var moduleData = ModuleDataLoader.LoadFromFile(_moduleDataFilePath); + moduleData.Should().NotBeNull(); + + using var assertionScope = new AssertionScope(); + foreach (var (moduleName, module) in moduleData.Modules) + { + foreach (var (curveId, curve) in module.Curves) + { + curve.MinValue.Should().NotBeNull($"Curve {curveId} '{curve.FriendlyName}' in module '{moduleName}' is missing MinValue"); + curve.MaxValue.Should().NotBeNull($"Curve {curveId} '{curve.FriendlyName}' in module '{moduleName}' is missing MaxValue"); + curve.FriendlyName.Should().NotMatchRegex("Curve[\\d]+", $"Curve {curveId} '{curve.FriendlyName}' in module '{moduleName}' should have it's name set"); + } + } + } + + [Test] + public void ModuleData_AllModules_HaveCorrespondingKnownModuleType() + { + var moduleData = ModuleDataLoader.LoadFromFile(_moduleDataFilePath); + moduleData.Should().NotBeNull(); + + using var assertionScope = new AssertionScope(); + foreach (var (moduleName, module) in moduleData.Modules) + { + var knownModuleType = KnownModuleTypes.GetKnownModuleType(moduleName); + knownModuleType.Should().NotBeNull($"Module '{moduleName}' does not have corresponding KnownModuleType"); + } + } +} + diff --git a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj b/CodeGeneration/CodeGeneration.csproj similarity index 57% rename from SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj rename to CodeGeneration/CodeGeneration.csproj index 806bc09..e64fe8e 100644 --- a/SunSharp.CodeGeneration/SunSharp.CodeGeneration.csproj +++ b/CodeGeneration/CodeGeneration.csproj @@ -2,12 +2,16 @@ Exe - net8.0 + net10.0 enable enable + 9999 + Nullable + Debug;Release;Generation + diff --git a/CodeGeneration/GeneratorDiscovery.cs b/CodeGeneration/GeneratorDiscovery.cs new file mode 100644 index 0000000..ea01db8 --- /dev/null +++ b/CodeGeneration/GeneratorDiscovery.cs @@ -0,0 +1,80 @@ +using System.Reflection; +using CodeGeneration.Generators; + +namespace CodeGeneration; + +public static class GeneratorDiscovery +{ + public static DiscoveredGenerator[] GetGenerators() + { + var assembly = typeof(GeneratorDiscovery).Assembly; + var providerTypes = assembly.GetTypes() + .Where(t => t.IsAssignableTo(typeof(IGeneratorProvider))) + .Where(t => !t.IsAbstract && !t.IsInterface) + .OrderBy(t => t.Name) + .ToArray(); + + var generators = new List(); + + foreach (var providerType in providerTypes) + { + var method = providerType.GetMethod(nameof(IGeneratorProvider.GetGenerators), + BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); + + if (method != null) + { + var generatorArray = (BaseGenerator[]?)method.Invoke(null, null); + if (generatorArray != null) + { + generators.AddRange(generatorArray.Select(g => new DiscoveredGenerator(g))); + } + } + } + + return [.. generators]; + } +} + +public class DiscoveredGenerator +{ + public string Name => _generatorInstance.Name; + public int Priority => _generatorInstance.Priority; + private readonly BaseGenerator _generatorInstance; + + public DiscoveredGenerator(BaseGenerator generator) + { + _generatorInstance = generator; + } + + public async Task GenerateAsync(CancellationToken cancellationToken = default) + { + try + { + cancellationToken.ThrowIfCancellationRequested(); + + var source = _generatorInstance.Generate(); + var targetPath = _generatorInstance.FilePath; + + string? originalFileContent = null; + if (File.Exists(targetPath)) + { + originalFileContent = await File.ReadAllTextAsync(targetPath, cancellationToken).ConfigureAwait(false); + } + + var sourceCodeIsTheSame = string.Equals(source, originalFileContent, StringComparison.Ordinal); + return sourceCodeIsTheSame + ? GeneratorResult.SuccessNoChanges(Name, targetPath) + : GeneratorResult.SuccessWithChanges(Name, targetPath, source); + } + catch (OperationCanceledException oce) + { + return GeneratorResult.Failure(Name, oce); + } + catch (Exception ex) + { + return GeneratorResult.Failure(Name, ex); + } + } + + public override string ToString() => Name; +} diff --git a/SunSharp.CodeGeneration/GeneratorResult.cs b/CodeGeneration/GeneratorResult.cs similarity index 65% rename from SunSharp.CodeGeneration/GeneratorResult.cs rename to CodeGeneration/GeneratorResult.cs index 85e9774..d78720a 100644 --- a/SunSharp.CodeGeneration/GeneratorResult.cs +++ b/CodeGeneration/GeneratorResult.cs @@ -1,10 +1,11 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; +using System.Text; -namespace SunSharp.CodeGeneration; +namespace CodeGeneration; public sealed class GeneratorResult { - public required Type GeneratorType { get; init; } + public required string GeneratorName { get; init; } public required string TargetPath { get; init; } public required string? SourceCode { get; init; } public required Exception? Exception { get; init; } @@ -15,11 +16,11 @@ public sealed class GeneratorResult [MemberNotNullWhen(true, nameof(Exception))] public required bool Successful { get; init; } - public static GeneratorResult SuccessWithChanges(Type generatorType, string targetPath, string sourceCode) + public static GeneratorResult SuccessWithChanges(string generatorName, string targetPath, string sourceCode) { return new GeneratorResult { - GeneratorType = generatorType, + GeneratorName = generatorName, TargetPath = targetPath, SourceCode = sourceCode, ChangesNecessary = true, @@ -28,11 +29,11 @@ public static GeneratorResult SuccessWithChanges(Type generatorType, string targ }; } - public static GeneratorResult SuccessNoChanges(Type generatorType, string targetPath) + public static GeneratorResult SuccessNoChanges(string generatorName, string targetPath) { return new GeneratorResult { - GeneratorType = generatorType, + GeneratorName = generatorName, TargetPath = targetPath, SourceCode = null, ChangesNecessary = false, @@ -41,11 +42,11 @@ public static GeneratorResult SuccessNoChanges(Type generatorType, string target }; } - public static GeneratorResult Failure(Type generatorType, Exception exception) + public static GeneratorResult Failure(string generatorName, Exception exception) { return new GeneratorResult { - GeneratorType = generatorType, + GeneratorName = generatorName, TargetPath = string.Empty, SourceCode = null, ChangesNecessary = false, @@ -66,10 +67,14 @@ public async Task ApplyAsync(CancellationToken cancellationToken = default) } var directory = Path.GetDirectoryName(TargetPath); - if (!string.IsNullOrEmpty(directory)) Directory.CreateDirectory(directory); + if (!string.IsNullOrEmpty(directory)) + { + Directory.CreateDirectory(directory); + } var tempFile = Path.Combine(Path.GetDirectoryName(TargetPath)!, Path.GetRandomFileName()); - await File.WriteAllTextAsync(tempFile, SourceCode!, cancellationToken).ConfigureAwait(false); + var encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true); + await File.WriteAllTextAsync(tempFile, SourceCode, encoding, cancellationToken).ConfigureAwait(false); File.Copy(tempFile, TargetPath, overwrite: true); File.Delete(tempFile); } diff --git a/SunSharp.CodeGeneration/Generators/BaseGenerator.cs b/CodeGeneration/Generators/BaseGenerator.cs similarity index 79% rename from SunSharp.CodeGeneration/Generators/BaseGenerator.cs rename to CodeGeneration/Generators/BaseGenerator.cs index f452057..6c7cd5d 100644 --- a/SunSharp.CodeGeneration/Generators/BaseGenerator.cs +++ b/CodeGeneration/Generators/BaseGenerator.cs @@ -1,4 +1,6 @@ -namespace SunSharp.CodeGeneration.Generators; +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators; public abstract class BaseGenerator { @@ -6,6 +8,10 @@ public abstract class BaseGenerator public abstract string FilePath { get; } + public abstract string Name { get; } + + public virtual int Priority { get => 0; } + protected virtual void AddIndent(Action action) { Context.AddIndent(action); diff --git a/CodeGeneration/Generators/GeneratorProvider.cs b/CodeGeneration/Generators/GeneratorProvider.cs new file mode 100644 index 0000000..bdb2b2c --- /dev/null +++ b/CodeGeneration/Generators/GeneratorProvider.cs @@ -0,0 +1,6 @@ +namespace CodeGeneration.Generators; + +public interface IGeneratorProvider +{ + static abstract BaseGenerator[] GetGenerators(); +} diff --git a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs new file mode 100644 index 0000000..913517d --- /dev/null +++ b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs @@ -0,0 +1,309 @@ +using CodeGeneration.Logic; +using SunSharp; +using SunSharp.Modules; + +namespace CodeGeneration.Generators.ModuleHandles; + +public class BasicModuleGenerator : BaseGenerator +{ + protected readonly ModuleDescription ModuleDescription; + protected readonly KnownModuleType KnownModuleType; + protected readonly string FriendlyName; + protected readonly string InterfaceName; + protected readonly string StructName; + + public override string FilePath => PathHelper.GetProjectFilePath($"SunSharp/Modules/{FriendlyName}ModuleHandle.g.cs"); + + public override string Name => $"{FriendlyName}ModuleHandle.g.cs"; + + public BasicModuleGenerator(string internalName, KnownModuleData moduleData) + { + ModuleDescription = moduleData.Modules[internalName]; + KnownModuleType = KnownModuleTypes.GetKnownModuleType(internalName) + ?? throw new(); + FriendlyName = KnownModuleType.FriendlyName; + InterfaceName = $"I{KnownModuleType.FriendlyName}ModuleHandle"; + StructName = $"{KnownModuleType.FriendlyName}ModuleHandle"; + } + + protected override string GenerateBody() + { + var moduleData = ModuleDataLoader.LoadFromFile(PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.json")); + + CodeGenerationHelper.AppendHeader(Context); + AppendLine("#if !GENERATION"); + AppendLine("namespace SunSharp.Modules"); + AppendLine("{"); + AddIndent(() => + { + GenerateModuleInterfaceCode(); + AppendLine(); + GenerateModuleStructCode(); + }); + AppendLine("}"); + AppendLine("#endif"); + return Context.GetBuiltString(); + } + + protected virtual void GenerateModuleInterfaceCode() + { + if (KnownModuleType.Description is not null) + { + AppendLine("/// "); + AppendLine($"/// {KnownModuleType.Description}"); + AppendLine("/// "); + } + AppendLine($"public partial interface {InterfaceName} : {nameof(ITypedModuleHandle)}"); + AppendLine("{"); + AddIndent(() => + { + GenerateInterfaceControllerGettersSetters(); + GenerateInterfaceCurveWritesReads(); + }); + AppendLine("}"); + } + + protected virtual void GenerateInterfaceCurveWritesReads() + { + if (ModuleDescription.Curves.Count == 0) + { + return; + } + foreach (var (i, c) in ModuleDescription.Curves) + { + AppendLine(); + GenerateInterfaceCurveWrite(i, c); + AppendLine(); + GenerateInterfaceCurveRead(i, c); + } + } + + protected virtual void GenerateInterfaceCurveRead(int i, CurveDescription c) + { + GenerateInterfaceCurveXmlDoc(i, c, false); + AppendLine($"int ReadCurve{c.FriendlyName}(float[] buffer);"); + } + + protected virtual void GenerateInterfaceCurveWrite(int i, CurveDescription c) + { + GenerateInterfaceCurveXmlDoc(i, c, true); + AppendLine($"int WriteCurve{c.FriendlyName}(float[] buffer);"); + } + + protected virtual void GenerateInterfaceCurveXmlDoc(int i, CurveDescription c, bool write) + { + AppendLine("/// "); + if (c.Description != null) + { + var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); + for (int l = 0; l < descriptionLines.Length; l++) + { + var line = descriptionLines[l]; + AppendLine($"/// {line}"); + if (l == descriptionLines.Length - 1) + { + AppendLine("///
"); + } + } + } + if (write) + { + AppendLine($"///
Write to curve {i} of {FriendlyName}."); + } + else + { + AppendLine($"///
Read from curve {i} of {FriendlyName}."); + } + AppendLine($"///
The curve contains {c.Size} values in range of {c.MinValue} to {c.MaxValue}."); + AppendLine("///
"); + } + + protected virtual void GenerateInterfaceControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + AppendLine(); + GenerateInterfaceGetter(i, c); + AppendLine(); + GenerateInterfaceSetter(i, c); + } + } + + protected virtual void GenerateInterfaceGetter(int i, ControllerDescription c) + { + GenerateGetterSetterXmlDoc(i, c); + if (c.EnumName != null) + { + AppendLine($"{c.EnumName} Get{c.FriendlyName}();"); + } + else + { + AppendLine($"int Get{c.FriendlyName}({nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + } + } + + protected virtual void GenerateInterfaceSetter(int i, ControllerDescription c) + { + GenerateGetterSetterXmlDoc(i, c); + if (c.EnumName != null) + { + AppendLine($"void Set{c.FriendlyName}({c.EnumName} value);"); + } + else + { + AppendLine($"void Set{c.FriendlyName}(int value, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + } + } + + protected virtual void GenerateGetterSetterXmlDoc(int i, ControllerDescription c) + { + AppendLine("/// "); + if (c.Description is not null) + { + var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); + for (int l = 0; l < descriptionLines.Length; l++) + { + var line = descriptionLines[l]; + AppendLine($"/// {line}"); + if (l == descriptionLines.Length - 1) + { + AppendLine("///
"); + } + } + } + if (c.EnumName == null) + { + if (c.MinDisplayedValue is not null) + { + AppendLine($"/// Value range: displayed: {c.MinDisplayedValue}-{c.MaxDisplayedValue}, real: {c.MinValue}-{c.MaxValue}"); + } + else + { + AppendLine($"/// Value range: {c.MinValue}-{c.MaxValue}"); + } + } + AppendLine($"/// Original name: {i} '{c.InternalName}'"); + AppendLine("///
"); + } + + public virtual void GenerateModuleStructCode() + { + AppendLine($"/// "); + AppendLine($"public readonly partial struct {StructName} : {InterfaceName}"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("public SynthModuleHandle ModuleHandle { get; }"); + AppendLine(); + + AppendLine($"public {StructName}({nameof(SynthModuleHandle)} moduleHandle)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("ModuleHandle = moduleHandle;"); + }); + AppendLine("}"); + GenerateOperatorsAndStuff(); + GenerateModuleStructMembers(); + GenerateStructCurveWritesReads(); + }); + AppendLine("}"); + } + + protected virtual void GenerateStructCurveWritesReads() + { + if (ModuleDescription.Curves.Count == 0) + { + return; + } + foreach (var (i, c) in ModuleDescription.Curves) + { + AppendLine(); + AppendLine($"/// ModuleHandle.ReadCurve({i}, buffer);"); + AppendLine(); + AppendLine($"/// ModuleHandle.WriteCurve({i}, buffer);"); + } + } + + protected virtual void GenerateOperatorsAndStuff() + { + AppendLine(""); + AppendLine($"public static implicit operator {nameof(SynthModuleHandle)}({StructName} handle)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("return handle.ModuleHandle;"); + }); + AppendLine("}"); + AppendLine(""); + AppendLine("/// "); + AppendLine($"public bool IsCorrectHandleType()"); + AppendLine("{"); + AddIndent(() => + { + AppendLine($"return ModuleHandle.GetModuleType() == {nameof(SynthModuleType)}.{FriendlyName};"); + }); + AppendLine("}"); + AppendLine(""); + AppendLine("/// "); + AppendLine($"public void AssertCorrectHandleType()"); + AppendLine("{"); + AddIndent(() => + { + AppendLine($"const {nameof(SynthModuleType)} expected = {nameof(SynthModuleType)}.{FriendlyName};"); + AppendLine($"var actual = ModuleHandle.GetModuleType();"); + AppendLine("if(actual != expected)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine($"throw new {nameof(IncorrectSynthHandleTypeException)}(expected, actual);"); + }); + AppendLine("}"); + }); + AppendLine("}"); + } + + protected virtual void GenerateModuleStructMembers() + { + GenerateModuleControllerGettersSetters(); + } + + protected virtual void GenerateModuleControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + AppendLine(); + GenerateStructGetter(i, c); + AppendLine(); + GenerateStructSetter(i, c); + } + } + + protected virtual void GenerateStructGetter(int i, ControllerDescription c) + { + AppendLine($"/// "); + if (c.EnumName != null) + { + AppendLine($"public {c.EnumName} Get{c.FriendlyName}() => ({c.EnumName})ModuleHandle.GetControllerValue({i}, ValueScalingMode.Displayed);"); + } + else + { + AppendLine($"public int Get{c.FriendlyName}({nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed}) => ModuleHandle.GetControllerValue({i}, valueScalingMode);"); + } + } + + protected virtual void GenerateStructSetter(int i, ControllerDescription c) + { + AppendLine($"/// "); + if (c.EnumName != null) + { + AppendLine($"public void Set{c.FriendlyName}({c.EnumName} value) => ModuleHandle.SetControllerValue({i}, (int)value, {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + } + else + { + AppendLine($"public void Set{c.FriendlyName}(int value, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed}) => ModuleHandle.SetControllerValue({i}, value, valueScalingMode);"); + } + } +} diff --git a/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs new file mode 100644 index 0000000..5625ea8 --- /dev/null +++ b/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs @@ -0,0 +1,43 @@ +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators.ModuleHandles; + +public class FmxModuleGenerator : BasicModuleGenerator +{ + public FmxModuleGenerator(string internalName, KnownModuleData moduleData) + : base(internalName, moduleData) + { + } + + protected override void GenerateInterfaceControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + if (i > 8 && i < 114) + { + continue; + } + + AppendLine(); + GenerateInterfaceGetter(i, c); + AppendLine(); + GenerateInterfaceSetter(i, c); + } + } + + protected override void GenerateModuleControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + if (i > 8 && i < 114) + { + continue; + } + + AppendLine(); + GenerateStructGetter(i, c); + AppendLine(); + GenerateStructSetter(i, c); + } + } +} diff --git a/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs new file mode 100644 index 0000000..afc115e --- /dev/null +++ b/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs @@ -0,0 +1,43 @@ +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators.ModuleHandles; + +public class MetaModuleGenerator : BasicModuleGenerator +{ + public MetaModuleGenerator(string internalName, KnownModuleData moduleData) + : base(internalName, moduleData) + { + } + + protected override void GenerateInterfaceControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + if (i > 4) + { + break; + } + + AppendLine(); + GenerateInterfaceGetter(i, c); + AppendLine(); + GenerateInterfaceSetter(i, c); + } + } + + protected override void GenerateModuleControllerGettersSetters() + { + foreach (var (i, c) in ModuleDescription.Controllers) + { + if (i > 4) + { + break; + } + + AppendLine(); + GenerateStructGetter(i, c); + AppendLine(); + GenerateStructSetter(i, c); + } + } +} diff --git a/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs b/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs new file mode 100644 index 0000000..e234835 --- /dev/null +++ b/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs @@ -0,0 +1,23 @@ +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators.ModuleHandles; + +public sealed class PerTypeModuleHandleGeneratorProvider : IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + var moduleData = ModuleDataLoader.LoadFromFile(PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.json")); + if (moduleData == null) + { + return []; + } + + return [.. KnownModuleTypes.ModuleTypes.Select(t => FromKnownModule(t, moduleData))]; + } + + private static BaseGenerator FromKnownModule(KnownModuleType moduleType, KnownModuleData moduleData) + { + return moduleType.GetCustomGenerator?.Invoke(moduleData) + ?? new BasicModuleGenerator(moduleType.InternalName, moduleData); + } +} diff --git a/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs new file mode 100644 index 0000000..0b66168 --- /dev/null +++ b/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs @@ -0,0 +1,77 @@ +using CodeGeneration.Logic; +using SunSharp; + +namespace CodeGeneration.Generators.ModuleHandles; + +public sealed class SynthModuleHandleGenerator : BaseGenerator, IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + return [new SynthModuleHandleGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/SynthModuleHandle.g.cs"); + + public override string Name => $"{nameof(SynthModuleHandle)}.g.cs"; + + protected override string GenerateBody() + { + CodeGenerationHelper.AppendHeader(Context); + AppendLine("#if !GENERATION"); + AppendLine("using SunSharp.Modules;"); + AppendLine(); + AppendLine("namespace SunSharp"); + AppendLine("{"); + AddIndent(() => + { + GenerateInterfacePart(); + AppendLine(); + GenerateStructPart(); + }); + AppendLine("}"); + AppendLine("#endif"); + return Context.GetBuiltString(); + } + + private void GenerateInterfacePart() + { + AppendLine($"public partial interface {nameof(ISynthModuleHandle)}"); + AppendLine("{"); + AddIndent(() => + { + var first = true; + foreach (var module in KnownModuleTypes.ModuleTypes) + { + if (!first) + { + AppendLine(); + } + AppendLine($"I{module.FriendlyName}ModuleHandle As{module.FriendlyName}();"); + first = false; + } + }); + AppendLine("}"); + } + + private void GenerateStructPart() + { + AppendLine($"public readonly partial struct {nameof(SynthModuleHandle)} : {nameof(ISynthModuleHandle)}"); + AppendLine("{"); + AddIndent(() => + { + var first = true; + foreach (var module in KnownModuleTypes.ModuleTypes) + { + if (!first) + { + AppendLine(); + } + AppendLine($"public {module.FriendlyName}ModuleHandle As{module.FriendlyName}() => new {module.FriendlyName}ModuleHandle(this);"); + AppendLine(); + AppendLine($"I{module.FriendlyName}ModuleHandle ISynthModuleHandle.As{module.FriendlyName}() => new {module.FriendlyName}ModuleHandle(this);"); + first = false; + } + }); + AppendLine("}"); + } +} diff --git a/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs b/CodeGeneration/Generators/NativeProxyGenerator.cs similarity index 89% rename from SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs rename to CodeGeneration/Generators/NativeProxyGenerator.cs index 53994f0..5f46b03 100644 --- a/SunSharp.CodeGeneration/Generators/NativeProxy/NativeProxyGenerator.cs +++ b/CodeGeneration/Generators/NativeProxyGenerator.cs @@ -1,11 +1,19 @@ -using SunSharp.CodeGeneration.Logic; +using CodeGeneration.Logic; +using SunSharp.CodeGeneration.Logic; using SunSharp.Native.Loader; -namespace SunSharp.CodeGeneration.Generators.NativeProxy; +namespace CodeGeneration.Generators; -public sealed class NativeInterfaceGenerator : BaseGenerator +public sealed class NativeInterfaceGenerator : BaseGenerator, IGeneratorProvider { - public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs"); + public static BaseGenerator[] GetGenerators() + { + return [new NativeInterfaceGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/Loader/NativeProxy.g.cs"); + + public override string Name => "NativeProxy.g.cs"; private static string GetDelegateNameCode(ParsedFunction function) { @@ -40,16 +48,14 @@ protected override string GenerateBody() .OrderBy(f => f.Name) .ToArray(); - AppendLineNoTab("#pragma warning disable CS0649"); - AppendLineNoTab("#nullable enable"); - AppendLine(); + CodeGenerationHelper.AppendHeader(Context); AppendLine("using System;"); AppendLine(); AppendLine("namespace SunSharp.Native.Loader"); AppendLine("{"); AddIndent(() => { - AppendLine($"public sealed partial class {nameof(Native.Loader.NativeProxy)} : ISunVoxLibC"); + AppendLine($"public sealed partial class {nameof(SunSharp.Native.Loader.NativeProxy)} : ISunVoxLibC"); AppendLine("{"); AddIndent(() => { diff --git a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs new file mode 100644 index 0000000..4bef948 --- /dev/null +++ b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -0,0 +1,309 @@ +using System.Text.Json; +using System.Text.RegularExpressions; +using CodeGeneration.Logic; +using SunSharp; +using SunSharp.Redistribution; + +namespace CodeGeneration.Generators.OwnData; + +public sealed partial class ModuleDataGenerator : BaseGenerator, IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + return [new ModuleDataGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.json"); + + public override int Priority => 10; + + public override string Name => "ModuleData.g.json"; + + private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerOptions.Default) + { + PropertyNameCaseInsensitive = true, + AllowTrailingCommas = true, + WriteIndented = true, + RespectNullableAnnotations = true, + DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull, + }; + + protected override string GenerateBody() + { + var currentData = ModuleDataLoader.LoadFromFile(FilePath); + var readData = ReadModuleDataFromSunVox(); + + var mergedData = MergeData(readData, currentData); + + var result = JsonSerializer.SerializeToNode(mergedData, _jsonOptions) + ?? throw new Exception(); + + result["$schema"] = "./schema.g.json"; + + return result.ToJsonString(_jsonOptions); + } + + private static KnownModuleData ReadModuleDataFromSunVox() + { + bool loaded = false; + try + { + LibraryLoader.Load(); + loaded = true; + + var instance = LibraryLoader.GetLibraryInstance(); + using var sunVox = new SunVox(instance, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); + var slot = sunVox.Slots[0]; + + slot.Open(); + foreach (var module in KnownModuleTypes.ModuleTypes.Where(m => m.Index > 0)) + { + instance.CreateModule(0, module.InternalName, module.InternalName); + } + var modules = CreateModuleDescriptions(slot); + + slot.Close(); + + return new KnownModuleData() + { + Modules = modules + }; + } + finally + { + if (loaded) + { + LibraryLoader.Unload(); + } + } + } + + private static Dictionary CreateModuleDescriptions(Slot slot) + { + var dict = new Dictionary(); + foreach (var module in slot.Synthesizer) + { + var (name, description) = CreateModuleDescription(module); + + dict.Add(name, description); + } + return dict; + } + + private static (string name, ModuleDescription description) CreateModuleDescription(SynthModuleHandle module) + { + var internalTypeName = module.Slot.Library.GetModuleType(module.Slot.Id, module.Id) + ?? throw new Exception($"Module {module} type name is null."); + var friendlyName = KnownModuleTypes.ModuleTypes.First(m => m.InternalName == internalTypeName).FriendlyName; + + var controllers = CreateControllersDescriptions(module); + var curves = CreateCurvesDescriptions(module); + + return (internalTypeName, new ModuleDescription() + { + Controllers = controllers, + Curves = curves, + }); + } + + private static Dictionary CreateCurvesDescriptions(SynthModuleHandle module) + { + var curves = new Dictionary(); + var buffer = new float[65536]; + for (var i = 0; i < 256; i++) + { + try + { + var size = module.ReadCurve(i, buffer); + //var readSize = module.WriteCurve(i, buffer); + if (size == 0) + { + Console.WriteLine($"Curve {i} of module {module} has size 0, stopping curve read."); + break; + } + var min = buffer.Take(size).Min(); + var max = buffer.Take(size).Max(); + curves.Add(i, new CurveDescription() + { + FriendlyName = $"Curve{i}", + Size = size, + MinValue = min, + MaxValue = max, + Description = null + }); + } + catch (SunVoxException exception) + { + Console.WriteLine($"No more curves found for module {module} after {i} curves. ({exception.Message})"); + break; + } + } + + return curves; + } + + private static Dictionary CreateControllersDescriptions(SynthModuleHandle module) + { + var controllerDescriptions = new Dictionary(); + var controllerCount = module.GetControllerCount(); + for (var i = 0; i < controllerCount; i++) + { + var controllerDescription = CreateControllerDescription(module, i); + if (controllerDescription != null) + { + controllerDescriptions.Add(i, controllerDescription); + } + } + + return controllerDescriptions; + } + + private static ControllerDescription? CreateControllerDescription(SynthModuleHandle module, int id) + { + var internalName = module.GetControllerName(id); + if (internalName == null) + { + return null; + } + + var controllerType = module.GetControllerType(id); + + var minValue = module.GetControllerMinValue(id, ValueScalingMode.Real); + var maxValue = module.GetControllerMaxValue(id, ValueScalingMode.Real); + var maxDisplayedValue = module.GetControllerMaxValue(id, ValueScalingMode.Displayed); + var minDisplayedValue = module.GetControllerMinValue(id, ValueScalingMode.Displayed); + var isControllerEnum = controllerType == ControllerType.Enum; + + return new ControllerDescription() + { + InternalName = internalName, + FriendlyName = MakeControllerNameFriendly(internalName), + Description = null, + EnumName = isControllerEnum ? "CHANGEME" : null, + IgnoreActualType = null, + MaxDisplayedValue = maxValue == maxDisplayedValue ? null : maxDisplayedValue, + MaxValue = maxValue, + MinDisplayedValue = minValue == minDisplayedValue ? null : minDisplayedValue, + MinValue = minValue, + }; + } + + private static string MakeControllerNameFriendly(string name) + { + // remove all non-alphanumeric characters and capitalize each word then concatenate them + // together, resulting in PascalCase if the name starts with a number, move the number to + // the end instead + + return ControllerNameRegex().Matches(name) + .Select((w, i) => new { value = w.Value, startsWithDigit = char.IsDigit(w.Value[0]), index = i }) + .OrderBy(w => w.startsWithDigit ? 1 : 0) + .ThenBy(w => w.index) + .Select(w => char.ToUpperInvariant(w.value[0]) + w.value[1..].ToLowerInvariant()) // PascalCase + .Aggregate("", (a, b) => a + b); + } + + private static KnownModuleData MergeData(KnownModuleData sunVoxData, KnownModuleData? currentData) + { + if (currentData == null) + { + return sunVoxData; + } + + ModuleDescription MergeModuleDescription(string name, ModuleDescription sunVoxDescription) + { + currentData.Modules.TryGetValue(name, out var currentDescription); + if (currentDescription == null) + { + Console.WriteLine($"New module found: {name}"); + return sunVoxDescription; + } + + return MergeModuleData(sunVoxDescription, currentDescription); + } + + var newDict = new Dictionary(); + foreach (var (key, value) in sunVoxData.Modules) + { + newDict.Add(key, MergeModuleDescription(key, value)); + } + + return new KnownModuleData() + { + Modules = newDict + }; + } + + private static ModuleDescription MergeModuleData(ModuleDescription sunVoxData, ModuleDescription currentData) + { + var mergedControllers = new Dictionary(); + foreach (var (index, value) in sunVoxData.Controllers) + { + currentData.Controllers.TryGetValue(index, out var match); + if (match == null) + { + Console.WriteLine($"New controller found: {index}.{value.InternalName}"); + mergedControllers.Add(index, value); + } + else + { + mergedControllers.Add(index, MergeControllerData(value, match)); + } + } + + var mergedCurves = new Dictionary(); + foreach (var (index, value) in sunVoxData.Curves) + { + currentData.Curves.TryGetValue(index, out var match); + if (match == null) + { + Console.WriteLine($"New curve found: {index}.{value.FriendlyName}"); + mergedCurves.Add(index, value); + continue; + } + else + { + if (match.MinValue == null || match.MaxValue == null) + { + Console.WriteLine($"Curve {index}.{match.FriendlyName} (l:{value.Size}) is missing min/max value in current data, filling in from SunVox data. New values: {value.MinValue}, {value.MaxValue}"); + } + else if (match.MinValue != value.MinValue || match.MaxValue != value.MaxValue) + { + Console.WriteLine($"Curve {index}.{match.FriendlyName} (l:{value.Size}) has different min/max values in current data vs SunVox data. Current: {match.MinValue}, {match.MaxValue}. SunVox: {value.MinValue}, {value.MaxValue}. Keeping current values."); + } + mergedCurves.Add(index, new CurveDescription() + { + Description = match.Description, + FriendlyName = match.FriendlyName, + MaxValue = match.MaxValue ?? value.MaxValue, + MinValue = match.MinValue ?? value.MinValue, + Size = match.Size + }); + } + } + + return new ModuleDescription() + { + Controllers = mergedControllers, + Curves = mergedCurves + }; + } + + private static ControllerDescription MergeControllerData(ControllerDescription sunVoxController, ControllerDescription matching) + { + return new ControllerDescription() + { + Description = matching.Description, + FriendlyName = matching.FriendlyName, + InternalName = sunVoxController.InternalName, + IgnoreActualType = matching.IgnoreActualType, + MinValue = sunVoxController.MinValue, + MaxValue = sunVoxController.MaxValue, + MinDisplayedValue = sunVoxController.MinDisplayedValue, + MaxDisplayedValue = sunVoxController.MaxDisplayedValue, + EnumName = matching.EnumName ?? (matching.IgnoreActualType == true ? matching.EnumName : sunVoxController.EnumName) + }; + } + + [GeneratedRegex(@"[A-Za-z]+|\d+")] + private static partial Regex ControllerNameRegex(); +} diff --git a/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs b/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs new file mode 100644 index 0000000..5f5058c --- /dev/null +++ b/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs @@ -0,0 +1,30 @@ +using System.Text.Json; +using System.Text.Json.Schema; +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators.OwnData; + +public sealed class ModuleDataSchemaGenerator : BaseGenerator, IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + return [new ModuleDataSchemaGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.schema.json"); + + public override int Priority => 10; + + public override string Name => "ModuleData.g.schema.json"; + + protected override string GenerateBody() + { + var options = new JsonSerializerOptions(JsonSerializerOptions.Default) + { + WriteIndented = true + }; + var schema = options.GetJsonSchemaAsNode(typeof(KnownModuleData)); + + return schema.ToJsonString(options); + } +} diff --git a/SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs b/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs similarity index 86% rename from SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs rename to CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs index bdd69e0..4ce6c77 100644 --- a/SunSharp.CodeGeneration/Generators/SunVoxHeader/SunVoxHeaderInterfaceGenerator.cs +++ b/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs @@ -1,15 +1,24 @@ +using CodeGeneration.Logic; using SunSharp.CodeGeneration.Logic; -namespace SunSharp.CodeGeneration.Generators.SunVoxHeader; +namespace CodeGeneration.Generators; -public sealed class SunVoxHeaderInterfaceGenerator : BaseGenerator +public sealed class SunVoxHeaderInterfaceGenerator : BaseGenerator, IGeneratorProvider { + public static BaseGenerator[] GetGenerators() + { + return [new SunVoxHeaderInterfaceGenerator()]; + } + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Native/ISunVoxLibC.g.cs"); + public override string Name => "ISunVoxLibC.g.cs"; + protected override string GenerateBody() { var parsed = SunVoxHeaderParser.Parse(); + CodeGenerationHelper.AppendHeader(Context); AppendLine("#pragma warning disable CA1707 // Identifiers should not contain underscores"); AppendLine("#pragma warning disable CA1716 // Identifiers should not match keywords"); AppendLine("#pragma warning disable IDE1006 // Naming Styles"); diff --git a/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs b/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs new file mode 100644 index 0000000..3d5e4e8 --- /dev/null +++ b/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs @@ -0,0 +1,118 @@ +using CodeGeneration.Logic; +using SunSharp.CodeGeneration.Logic; + +namespace CodeGeneration.Generators; + +internal class SunVoxLibWithLoggerGenerator : BaseGenerator, IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + return [new SunVoxLibWithLoggerGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs"); + + public override string Name => "SunVoxLibWithLogger.g.cs"; + + private static string GetMethodSignature(ParsedFunction function) + { + var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); + var pars = string.Join(", ", function.Parameters.Select(p => $"{TypeTranslator.TypeToCode(p.CSharpType)} {p.Name}")); + return $"{ret} ISunVoxLibC.{function.Name}({pars})"; + } + + private static string GetParametersString(ParsedFunction function) + { + return string.Join(", ", function.Parameters.Select(p => p.Name)); + } + + private static string GetParametersLogString(ParsedFunction function) + { + if (function.Parameters.Length == 0) + return "null"; + + var parts = function.Parameters.Select(p => + { + if (p.CSharpType == typeof(IntPtr)) + { + return $"{p.Name}=0x{{{p.Name}.ToString(\"X\")}}"; + } + return $"{p.Name}={{{p.Name}}}"; + }); + return "$\"" + string.Join(", ", parts) + "\""; + } + + protected override string GenerateBody() + { + var parsed = SunVoxHeaderParser.Parse(); + var functions = parsed.Functions + .OrderBy(f => f.Name) + .ToArray(); + + CodeGenerationHelper.AppendHeader(Context); + AppendLine("using System;"); + AppendLine("using SunSharp.Native;"); + AppendLine(); + AppendLine("namespace SunSharp.Diagnostics"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("public sealed partial class SunVoxLibWithLogger : ISunVoxLibC"); + AppendLine("{"); + AddIndent(() => + { + var first = true; + foreach (var f in functions) + { + if (!first) + { + AppendLine(); + } + AppendMethod(f); + first = false; + } + }); + AppendLine("}"); + }); + AppendLine("}"); + + return Context.GetBuiltString(); + } + + private void AppendMethod(ParsedFunction function) + { + AppendLine(GetMethodSignature(function)); + AppendLine("{"); + AddIndent(() => + { + var hasReturnValue = function.CSharpReturnType != typeof(void); + var parametersLog = GetParametersLogString(function); + var parametersForwarded = GetParametersString(function); + AppendLine($"FormattableString? parameters = {parametersLog};"); + AppendLine($"Log(\"Starting call.\", parameters, null);"); + + if (hasReturnValue) + { + AppendLine($"var result = _lib.{function.Name}({parametersForwarded});"); + + if (function.CSharpReturnType == typeof(IntPtr)) + { + AppendLine($"Log(\"Finished call.\", parameters, result.ToString(\"X\"));"); + } + else + { + AppendLine($"Log(\"Finished call.\", parameters, result);"); + } + + AppendLine("return result;"); + } + else + { + AppendLine($"_lib.{function.Name}({parametersForwarded});"); + AppendLine($"Log(\"Finished call.\", parameters, null);"); + } + }); + AppendLine("}"); + AppendLine(); + } +} diff --git a/CodeGeneration/Generators/SynthModuleTypeGenerator.cs b/CodeGeneration/Generators/SynthModuleTypeGenerator.cs new file mode 100644 index 0000000..f02ec8e --- /dev/null +++ b/CodeGeneration/Generators/SynthModuleTypeGenerator.cs @@ -0,0 +1,124 @@ +using CodeGeneration.Logic; + +namespace CodeGeneration.Generators; + +internal class SynthModuleTypeGenerator : BaseGenerator, IGeneratorProvider +{ + public static BaseGenerator[] GetGenerators() + { + return [new SynthModuleTypeGenerator()]; + } + + public override string FilePath => PathHelper.GetProjectFilePath("SunSharp/SynthModuleType.g.cs"); + + public override string Name => "SynthModuleType.g.cs"; + + protected override string GenerateBody() + { + CodeGenerationHelper.AppendHeader(Context); + AppendLine("#if !GENERATION"); + AppendLine("namespace SunSharp"); + AppendLine("{"); + AddIndent(() => + { + GenerateEnum(); + AppendLine(); + GenerateHelper(); + }); + AppendLine("}"); + AppendLine("#endif"); + return Context.GetBuiltString(); + } + + private void GenerateEnum() + { + AppendLine("public enum SynthModuleType"); + AppendLine("{"); + AddIndent(() => + { + foreach (var value in KnownModuleTypes.ModuleTypes.OrderBy(t => t.FriendlyName)) + { + AppendLine($"{value.FriendlyName} = {value.Index},"); + } + AppendLine($"Unknown = 0,"); + }); + AppendLine("}"); + } + + private void GenerateHelper() + { + AppendLine("public static class SynthModuleTypeHelper"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("/// "); + AppendLine("/// Gets the internal name for a given SynthModuleType."); + AppendLine("/// "); + AppendLine("/// "); + AppendLine("/// In case of unknown SynthModuleType, returns \"unknown\"."); + AppendLine("/// "); + AppendLine("public static string InternalNameFromType(SynthModuleType type)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("switch (type)"); + AppendLine("{"); + AddIndent(() => + { + foreach (var value in KnownModuleTypes.ModuleTypes.OrderBy(t => t.FriendlyName)) + { + AppendLine($"case SynthModuleType.{value.FriendlyName}: return \"{value.InternalName}\";"); + } + AppendLine($"default: return \"unknown\";"); + }); + AppendLine("}"); + }); + AppendLine("}"); + AppendLine(); + + AppendLine("/// "); + AppendLine("/// Gets the SynthModuleType for a given internal name."); + AppendLine("/// "); + AppendLine("/// "); + AppendLine("/// In case of unknown internal name, returns SynthModuleType.Unknown."); + AppendLine("/// "); + AppendLine("public static SynthModuleType TypeFromInternalName(string internalName)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("switch (internalName)"); + AppendLine("{"); + AddIndent(() => + { + foreach (var value in KnownModuleTypes.ModuleTypes.OrderBy(t => t.FriendlyName)) + AppendLine($"case \"{value.InternalName}\": return SynthModuleType.{value.FriendlyName};"); + AppendLine($"default: return SynthModuleType.Unknown;"); + }); + AppendLine("}"); + }); + AppendLine("}"); + AppendLine(); + AppendLine("/// "); + AppendLine("/// Checks if value of is valid."); + AppendLine("/// "); + AppendLine("public static bool IsValid(SynthModuleType type)"); + AppendLine("{"); + AddIndent(() => + { + var min = KnownModuleTypes.ModuleTypes.Select(i => i.Index).Min(); + var max = KnownModuleTypes.ModuleTypes.Select(i => i.Index).Max(); + AppendLine($"return (int)type >= {min} && (int)type <= {max};"); + }); + AppendLine("}"); + AppendLine(); + AppendLine("public static string ToInternalName(this SynthModuleType type)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine("return InternalNameFromType(type);"); + }); + AppendLine("}"); + }); + AppendLine("}"); + } +} diff --git a/SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs b/CodeGeneration/Logic/CodeGenerationContext.cs similarity index 88% rename from SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs rename to CodeGeneration/Logic/CodeGenerationContext.cs index 5fa30e9..f49aeec 100644 --- a/SunSharp.CodeGeneration/Generators/CodeGenerationContext.cs +++ b/CodeGeneration/Logic/CodeGenerationContext.cs @@ -1,6 +1,6 @@ -using System.Text; +using System.Text; -namespace SunSharp.CodeGeneration.Generators; +namespace CodeGeneration.Logic; public class CodeGenerationContext { @@ -24,9 +24,13 @@ public void AddIndent(Action action) public void AppendLine(string value = "") { if (string.IsNullOrWhiteSpace(value)) + { _sb.AppendLine(); + } else + { _sb.AppendLine(GetTabs() + value); + } } public void AppendLineNoTab(string value = "") diff --git a/CodeGeneration/Logic/CodeGenerationHelper.cs b/CodeGeneration/Logic/CodeGenerationHelper.cs new file mode 100644 index 0000000..97bec3c --- /dev/null +++ b/CodeGeneration/Logic/CodeGenerationHelper.cs @@ -0,0 +1,14 @@ +namespace CodeGeneration.Logic; + +public static class CodeGenerationHelper +{ + public static void AppendHeader(CodeGenerationContext context) + { + context.AppendLine("/*"); + context.AppendLine(" * Do not modify this file manually."); + context.AppendLine("*/"); + context.AppendLine(); + context.AppendLine("#nullable enable"); + context.AppendLine(); + } +} diff --git a/CodeGeneration/Logic/KnownModuleData.cs b/CodeGeneration/Logic/KnownModuleData.cs new file mode 100644 index 0000000..10ff777 --- /dev/null +++ b/CodeGeneration/Logic/KnownModuleData.cs @@ -0,0 +1,66 @@ +using System.ComponentModel; +using System.Text.Json.Serialization; + +namespace CodeGeneration.Logic; + +public class KnownModuleData +{ + [Description("Internal Name, received from SunVox, is used as key.")] + public required Dictionary Modules { get; init; } = []; +} + +public class ModuleDescription +{ + [Description("Id of the controller is used as key.")] + public required Dictionary Controllers { get; init; } = []; + + [Description("Id of the curve is used as key")] + public required Dictionary Curves { get; init; } = []; +} + +public class ControllerDescription +{ + [Description("Friendly Name of the controller. Set by hand or automatically on discovery.")] + public required string FriendlyName { get; init; } + + [Description("Internal Name, received from SunVox, is used in code generation.")] + public required string InternalName { get; init; } + + [Description("A short description of the controller.")] + public string? Description { get; init; } + + public required int MinValue { get; init; } + public required int MaxValue { get; init; } + + [Description("The minimum displayed value of the controller. Available if different to MinValue.")] + public int? MinDisplayedValue { get; init; } + + [Description("The maximum displayed value of the controller. Available if different to MaxValue.")] + public int? MaxDisplayedValue { get; init; } + + [Description("Whether the underlying type of the controller should be ignored. " + + "If true, the data should not be overwritten by the generator code.")] + public bool? IgnoreActualType { get; init; } + + [Description("The name of the enum this controller uses.")] + public string? EnumName { get; init; } +} + +public class CurveDescription +{ + public required string FriendlyName { get; init; } + + [Description("The number of points in the curve, received from SunVox.")] + public required int Size { get; init; } + + [Description("The minimum value of the curve points. Set by hand.")] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public float? MinValue { get; init; } + + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [Description("The maximum value of the curve points. Set by hand.")] + public float? MaxValue { get; init; } + + [Description("A short description of the curve.")] + public string? Description { get; init; } +} diff --git a/CodeGeneration/Logic/KnownModuleTypes.cs b/CodeGeneration/Logic/KnownModuleTypes.cs new file mode 100644 index 0000000..f183d59 --- /dev/null +++ b/CodeGeneration/Logic/KnownModuleTypes.cs @@ -0,0 +1,198 @@ +using CodeGeneration.Generators; +using CodeGeneration.Generators.ModuleHandles; + +namespace CodeGeneration.Logic; + +public record KnownModuleType(int Index, string FriendlyName, string InternalName, string? Description = null, Func? GetCustomGenerator = null) +{ + public KnownModuleType(int Index, string FriendlyName) : this(Index, FriendlyName, FriendlyName) { } +} + +public static class KnownModuleTypes +{ + public static readonly KnownModuleType[] ModuleTypes = [ + new KnownModuleType(-1, "Output") + { + Description = "Audio output module." + }, + // 0 is for unknown + new KnownModuleType(1, "AnalogGenerator", InternalName: "Analog generator") + { + Description = "Generator with 32 double alias-free oscillators, 12/24dB filters, envelopes, and smooth change of parameters. The sound quality of this module is better at a sample rate of 44100Hz." + }, + new KnownModuleType(2, "DrumSynth") + { + Description = "Drum synthesizer with variety of predefined sounds. The sound quality of this module is better at a sample rate of 44100Hz." + }, + new KnownModuleType(3, "Fm", InternalName: "FM") + { + Description = "Frequency Modulation (FM) Synthesizer. Each voice of polyphony includes two operators with ADSR envelopes: 1) C (carrier) - base sine wave generator; 2) M (modulator) - sine wave that changes the frequency of the first operator. The sound quality of this module is better at a sample rate of 44100Hz." + }, + new KnownModuleType(4, "Fmx", InternalName: "FMX") + { + Description = "5-operator Frequency Modulation (FM) Synthesizer.", + GetCustomGenerator = (data) => new FmxModuleGenerator("FMX", data) + }, + new KnownModuleType(5, "Generator") + { + Description = "Basic generator of different types of periodic signal waveforms with the volume envelope. This module can receive the incoming signal and use it for the frequency modulation." + }, + new KnownModuleType(6, "Input") + { + Description = "Audio input from Microphone/Line-in. Compatibility: implemented in the iOS and Android versions only." + }, + new KnownModuleType(7, "Kicker") + { + Description = "Drum kick synthesizer with waveform type, attack, release, boost and envelope acceleration controls." + }, + new KnownModuleType(8, "VorbisPlayer", "Vorbis player") + { + Description = "OGG Vorbis player." + }, + new KnownModuleType(9, "Sampler") + { + Description = "Sampler can play and record audio files. Supported file formats: WAV (PCM, uncompressed), AIFF (PCM, uncompressed), XI, OGG (Vorbis), MP3, FLAC, JPEG, RAW." + }, + new KnownModuleType(10, "SpectraVoice") + { + Description = "SpectraVoice synthesizes sound with a complex spectrum. You can place 16 harmonics on the spectrum graph, specifying the position, amplitude, shape and width for each." + }, + new KnownModuleType(11, "Amplifier") + { + Description = "Signal amplifier with various settings." + }, + new KnownModuleType(12, "Compressor") + { + Description = "Side chain compressor" + }, + new KnownModuleType(13, "DcBlocker", "DC Blocker") + { + Description = "DC blocking filter." + }, + new KnownModuleType(14, "Delay") + { + Description = "This module delays the sound and the incoming events (note, pitch, phase, velocity). Max delay length = 1 min." + }, + new KnownModuleType(15, "Distortion") + { + Description = "This module adds various types of distortion to the sound." + }, + new KnownModuleType(16, "Echo") + { + Description = "Stereo echo. Maximum delay length: 4 seconds." + }, + new KnownModuleType(17, "Eq", InternalName: "EQ") + { + Description = "3Band equalizer." + }, + new KnownModuleType(18, "Fft", InternalName: "FFT") + { + Description = "FFT-based frequency transformator." + }, + new KnownModuleType(19, "Filter") + { + Description = "IIR Filter that can remove some unwanted frequency ranges." + }, + new KnownModuleType(20, "FilterPro", InternalName: "Filter Pro") + { + Description = "High-quality 64-bit IIR Filter that can amplify, pass or attenuate some frequency ranges. This module is faster than Filter on modern CPUs and slower on older CPUs." + }, + new KnownModuleType(21, "Flanger") + { + Description = "Flanger effect." + }, + new KnownModuleType(22, "Lfo", InternalName: "LFO") + { + Description = "LFO - Low Frequency Oscillator. Can work as amplitude/balance modulator or as standalone generator." + }, + new KnownModuleType(23, "Loop") + { + Description = "This module repeats a fragment of the incoming sound a specified number of times." + }, + new KnownModuleType(24, "Modulator") + { + Description = "Amplitude or Phase modulator. First input = Carrier. Other inputs = Modulators (will be mixed into a single signal)." + }, + new KnownModuleType(25, "PitchShifter", InternalName: "Pitch shifter") + { + Description = "Pitch shifter is a module for changing the pitch of any sound in real time. The signal at the output of the module is always slightly delayed." + }, + new KnownModuleType(26, "Reverb") + { + Description = "Reverb is a module that simulates the reverberation effect (echo with numerous reflections to make the sound more natural)." + }, + new KnownModuleType(27, "VocalFilter", InternalName: "Vocal filter") + { + Description = "Formant filter - designed to simulate the human vocal tract." + }, + new KnownModuleType(28, "Vibrato") + { + Description = "Vibrato effect." + }, + new KnownModuleType(29, "WaveShaper") + { + Description = "In simple terms, WaveShaper allows you to change the shape of the input signal. In math terms, WaveShaper is the expression y = f( x ); where y - output; x - input; f - function with graph which you can see in the WaveShaper interface." + }, + new KnownModuleType(30, "Adsr", InternalName: "ADSR") + { + Description = "ADSR envelope generator. The module can be started either by notes at the input (reacts to note ON/OFF), or by setting the 'State' controller to the 'start' value." + }, + new KnownModuleType(31, "ControlToNote", InternalName: "Ctl2Note") + { + Description = "Ctl2Note converts the value of the 'Pitch' controller to a note (Note ON/OFF commands at the output)." + }, + new KnownModuleType(32, "Feedback") + { + Description = "Generally the feedback is not allowed in SunVox: you can't create an endless loop between the modules. But you can do it by placing two Feedback modules inside of the loop." + }, + new KnownModuleType(33, "Glide") + { + Description = "Glide is similar to the MultiSynth (which sends the input events to the connected output modules), but it also adds the commands of smooth transition between the notes." + }, + new KnownModuleType(34, "Gpio", InternalName: "GPIO") + { + Description = "With this module you can use the General-Purpose Input/Output (GPIO) pins of the device board. For example, you can send some signals to the LEDs, or receive the ON/OFF (1/0) messages from the buttons." + }, + new KnownModuleType(35, "MetaModule") + { + Description = "MetaModule is a full-featured copy of SunVox in a single module. So you can include one SunVox-project into another recursively.", + GetCustomGenerator = (data) => new MetaModuleGenerator("MetaModule", data) + }, + new KnownModuleType(36, "MultiControl", InternalName: "MultiCtl") + { + Description = "With this module you can change the values of multiple controllers (in different modules) at once. Maximum number of connected controllers - 16." + }, + new KnownModuleType(37, "MultiSynth") + { + Description = "This module sends the incoming events (notes, pitch change, phase change) to any number of connected modules (receivers)." + }, + new KnownModuleType(38, "PitchToControl", InternalName: "Pitch2Ctl") + { + Description = "This module converts the incoming notes to the controller values (in some another connected module)." + }, + new KnownModuleType(39, "PitchDetector", InternalName: "Pitch Detector") + { + Description = "Pitch Detector tries to detect the pitch of the incoming audio signal. The frequency and note will be displayed. Notes will be sent to the module output." + }, + new KnownModuleType(40, "SoundToControl", InternalName: "Sound2Ctl") + { + Description = "This module converts the audio signal to the numeric value of any selected controller." + }, + new KnownModuleType(41, "VelocityToControl", InternalName: "Velocity2Ctl") + { + Description = "This module converts the velocity parameter of the incoming notes to the controller values (in some another connected module)." + }, + ]; + + public static KnownModuleType? GetKnownModuleType(string internalName) + { + foreach (var knownModuleType in ModuleTypes) + { + if (knownModuleType.InternalName == internalName) + { + return knownModuleType; + } + } + return null; + } +} diff --git a/CodeGeneration/Logic/ModuleData.g.json b/CodeGeneration/Logic/ModuleData.g.json new file mode 100644 index 0000000..e1e74e0 --- /dev/null +++ b/CodeGeneration/Logic/ModuleData.g.json @@ -0,0 +1,3516 @@ +{ + "Modules": { + "Output": { + "Controllers": {}, + "Curves": {} + }, + "Analog generator": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Waveform", + "InternalName": "Waveform", + "MinValue": 0, + "MaxValue": 16, + "EnumName": "AnalogGeneratorWaveform" + }, + "2": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "3": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Sustain", + "InternalName": "Sustain", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "6": { + "FriendlyName": "ExponentialEnvelope", + "InternalName": "Exponential envelope", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "7": { + "FriendlyName": "DutyCycle", + "InternalName": "Duty cycle", + "MinValue": 0, + "MaxValue": 1024 + }, + "8": { + "FriendlyName": "SecondaryOscillatorPitch", + "InternalName": "Osc2", + "Description": "Pitch deviation of the additional oscillator (off in the zero position).\nOne semitone = 64.", + "MinValue": 0, + "MaxValue": 2000, + "MinDisplayedValue": -1000, + "MaxDisplayedValue": 1000 + }, + "9": { + "FriendlyName": "Filter", + "InternalName": "Filter", + "MinValue": 0, + "MaxValue": 8, + "EnumName": "AnalogGeneratorFilterType" + }, + "10": { + "FriendlyName": "FilterFrequency", + "InternalName": "F.freq", + "MinValue": 0, + "MaxValue": 14000 + }, + "11": { + "FriendlyName": "FilterResonance", + "InternalName": "F.resonance", + "MinValue": 0, + "MaxValue": 1530 + }, + "12": { + "FriendlyName": "FilterExponentialFrequency", + "InternalName": "F.exponential freq", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "13": { + "FriendlyName": "FilterAttack", + "InternalName": "F.attack", + "MinValue": 0, + "MaxValue": 256 + }, + "14": { + "FriendlyName": "FilterRelease", + "InternalName": "F.release", + "MinValue": 0, + "MaxValue": 256 + }, + "15": { + "FriendlyName": "FilterEnvelope", + "InternalName": "F.envelope", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AnalogGeneratorEnvelopeMode" + }, + "16": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 32, + "IgnoreActualType": true + }, + "17": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "Description": "Quality mode of the module.", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + }, + "18": { + "FriendlyName": "Noise", + "InternalName": "Noise", + "Description": "Amount of white noise added to the signal.", + "MinValue": 0, + "MaxValue": 256 + }, + "19": { + "FriendlyName": "SecondaryOscillatorVolume", + "InternalName": "Osc2 volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "20": { + "FriendlyName": "SecondaryOscillatorMode", + "InternalName": "Osc2 mode", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "AnalogGeneratorSecondaryOscillatorMode" + }, + "21": { + "FriendlyName": "SecondaryOscillatorPhase", + "InternalName": "Osc2 phase", + "MinValue": 0, + "MaxValue": 32768 + } + }, + "Curves": { + "0": { + "FriendlyName": "Synth", + "Size": 32, + "MinValue": -1, + "MaxValue": 1, + "Description": "Used for \u0027Drawn\u0027, \u0027DrawnSpline\u0027 and \u0027Harmonics\u0027 waveforms." + } + } + }, + "DrumSynth": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "2": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 8, + "IgnoreActualType": true + }, + "3": { + "FriendlyName": "BassVolume", + "InternalName": "Bass volume", + "MinValue": 0, + "MaxValue": 512 + }, + "4": { + "FriendlyName": "BassPower", + "InternalName": "Bass power", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "BassTone", + "InternalName": "Bass tone", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "BassLength", + "InternalName": "Bass length", + "MinValue": 0, + "MaxValue": 256 + }, + "7": { + "FriendlyName": "HihatVolume", + "InternalName": "Hihat volume", + "MinValue": 0, + "MaxValue": 512 + }, + "8": { + "FriendlyName": "HihatLength", + "InternalName": "Hihat length", + "MinValue": 0, + "MaxValue": 256 + }, + "9": { + "FriendlyName": "SnareVolume", + "InternalName": "Snare volume", + "MinValue": 0, + "MaxValue": 512 + }, + "10": { + "FriendlyName": "SnareTone", + "InternalName": "Snare tone", + "MinValue": 0, + "MaxValue": 256 + }, + "11": { + "FriendlyName": "SnareLength", + "InternalName": "Snare length", + "MinValue": 0, + "MaxValue": 256 + }, + "12": { + "FriendlyName": "BassPanning", + "InternalName": "Bass panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "13": { + "FriendlyName": "HihatPanning", + "InternalName": "Hihat panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "14": { + "FriendlyName": "SnarePanning", + "InternalName": "Snare panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + } + }, + "Curves": {} + }, + "FM": { + "Controllers": { + "0": { + "FriendlyName": "CarrierVolume", + "InternalName": "C.Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "ModulatorVolume", + "InternalName": "M.Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "3": { + "FriendlyName": "CarrierFrequencyRatio", + "InternalName": "C.Freq ratio", + "MinValue": 0, + "MaxValue": 16 + }, + "4": { + "FriendlyName": "ModulatorFrequencyRatio", + "InternalName": "M.Freq ratio", + "MinValue": 0, + "MaxValue": 16 + }, + "5": { + "FriendlyName": "ModulatorSelfModulation", + "InternalName": "M.Self-modulation", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "CarrierAttack", + "InternalName": "C.Attack", + "MinValue": 0, + "MaxValue": 512 + }, + "7": { + "FriendlyName": "CarrierDecay", + "InternalName": "C.Decay", + "MinValue": 0, + "MaxValue": 512 + }, + "8": { + "FriendlyName": "CarrierSustain", + "InternalName": "C.Sustain", + "MinValue": 0, + "MaxValue": 256 + }, + "9": { + "FriendlyName": "CarrierRelease", + "InternalName": "C.Release", + "MinValue": 0, + "MaxValue": 512 + }, + "10": { + "FriendlyName": "ModulatorAttack", + "InternalName": "M.Attack", + "MinValue": 0, + "MaxValue": 512 + }, + "11": { + "FriendlyName": "ModulatorDecay", + "InternalName": "M.Decay", + "MinValue": 0, + "MaxValue": 512 + }, + "12": { + "FriendlyName": "ModulatorSustain", + "InternalName": "M.Sustain", + "MinValue": 0, + "MaxValue": 256 + }, + "13": { + "FriendlyName": "ModulatorRelease", + "InternalName": "M.Release", + "MinValue": 0, + "MaxValue": 512 + }, + "14": { + "FriendlyName": "ModulatorScalingPerKey", + "InternalName": "M.Scaling per key", + "MinValue": 0, + "MaxValue": 4 + }, + "15": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 16, + "IgnoreActualType": true + }, + "16": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + } + }, + "Curves": {} + }, + "FMX": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "2": { + "FriendlyName": "SampleRate", + "InternalName": "Sample rate", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "FmxSampleRate" + }, + "3": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 32, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ChannelsInverted" + }, + "5": { + "FriendlyName": "InputOperator", + "InternalName": "Input -\u003E Operator #", + "MinValue": 0, + "MaxValue": 5, + "IgnoreActualType": true + }, + "6": { + "FriendlyName": "InputCustomWaveform", + "InternalName": "Input -\u003E Custom waveform", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "FmxCustomWaveform" + }, + "7": { + "FriendlyName": "AdsrSmoothTransitions", + "InternalName": "ADSR smooth transitions", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "AdsrSmoothTransitions" + }, + "8": { + "FriendlyName": "NoiseFilterOff32768", + "InternalName": "Noise filter (32768 - OFF)", + "MinValue": 0, + "MaxValue": 32768 + }, + "9": { + "FriendlyName": "Volume1", + "InternalName": "1 Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "10": { + "FriendlyName": "Volume2", + "InternalName": "2 Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "11": { + "FriendlyName": "Volume3", + "InternalName": "3 Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "12": { + "FriendlyName": "Volume4", + "InternalName": "4 Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "13": { + "FriendlyName": "Volume5", + "InternalName": "5 Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "14": { + "FriendlyName": "Attack1", + "InternalName": "1 Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "15": { + "FriendlyName": "Attack2", + "InternalName": "2 Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "16": { + "FriendlyName": "Attack3", + "InternalName": "3 Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "17": { + "FriendlyName": "Attack4", + "InternalName": "4 Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "18": { + "FriendlyName": "Attack5", + "InternalName": "5 Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "19": { + "FriendlyName": "Decay1", + "InternalName": "1 Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "20": { + "FriendlyName": "Decay2", + "InternalName": "2 Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "21": { + "FriendlyName": "Decay3", + "InternalName": "3 Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "22": { + "FriendlyName": "Decay4", + "InternalName": "4 Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "23": { + "FriendlyName": "Decay5", + "InternalName": "5 Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "24": { + "FriendlyName": "SustainLevel1", + "InternalName": "1 Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "25": { + "FriendlyName": "SustainLevel2", + "InternalName": "2 Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "26": { + "FriendlyName": "SustainLevel3", + "InternalName": "3 Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "27": { + "FriendlyName": "SustainLevel4", + "InternalName": "4 Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "28": { + "FriendlyName": "SustainLevel5", + "InternalName": "5 Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "29": { + "FriendlyName": "Release1", + "InternalName": "1 Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "30": { + "FriendlyName": "Release2", + "InternalName": "2 Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "31": { + "FriendlyName": "Release3", + "InternalName": "3 Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "32": { + "FriendlyName": "Release4", + "InternalName": "4 Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "33": { + "FriendlyName": "Release5", + "InternalName": "5 Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "34": { + "FriendlyName": "AttackCurve1", + "InternalName": "1 Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "35": { + "FriendlyName": "AttackCurve2", + "InternalName": "2 Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "36": { + "FriendlyName": "AttackCurve3", + "InternalName": "3 Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "37": { + "FriendlyName": "AttackCurve4", + "InternalName": "4 Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "38": { + "FriendlyName": "AttackCurve5", + "InternalName": "5 Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "39": { + "FriendlyName": "DecayCurve1", + "InternalName": "1 Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "40": { + "FriendlyName": "DecayCurve2", + "InternalName": "2 Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "41": { + "FriendlyName": "DecayCurve3", + "InternalName": "3 Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "42": { + "FriendlyName": "DecayCurve4", + "InternalName": "4 Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "43": { + "FriendlyName": "DecayCurve5", + "InternalName": "5 Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "44": { + "FriendlyName": "ReleaseCurve1", + "InternalName": "1 Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "45": { + "FriendlyName": "ReleaseCurve2", + "InternalName": "2 Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "46": { + "FriendlyName": "ReleaseCurve3", + "InternalName": "3 Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "47": { + "FriendlyName": "ReleaseCurve4", + "InternalName": "4 Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "48": { + "FriendlyName": "ReleaseCurve5", + "InternalName": "5 Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "49": { + "FriendlyName": "Sustain1", + "InternalName": "1 Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "50": { + "FriendlyName": "Sustain2", + "InternalName": "2 Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "51": { + "FriendlyName": "Sustain3", + "InternalName": "3 Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "52": { + "FriendlyName": "Sustain4", + "InternalName": "4 Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "53": { + "FriendlyName": "Sustain5", + "InternalName": "5 Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "54": { + "FriendlyName": "SustainPedal1", + "InternalName": "1 Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "55": { + "FriendlyName": "SustainPedal2", + "InternalName": "2 Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "56": { + "FriendlyName": "SustainPedal3", + "InternalName": "3 Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "57": { + "FriendlyName": "SustainPedal4", + "InternalName": "4 Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "58": { + "FriendlyName": "SustainPedal5", + "InternalName": "5 Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "59": { + "FriendlyName": "EnvelopeScalingPerKey1", + "InternalName": "1 Envelope scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "60": { + "FriendlyName": "EnvelopeScalingPerKey2", + "InternalName": "2 Envelope scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "61": { + "FriendlyName": "EnvelopeScalingPerKey3", + "InternalName": "3 Envelope scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "62": { + "FriendlyName": "EnvelopeScalingPerKey4", + "InternalName": "4 Envelope scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "63": { + "FriendlyName": "EnvelopeScalingPerKey5", + "InternalName": "5 Envelope scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "64": { + "FriendlyName": "VolumeScalingPerKey1", + "InternalName": "1 Volume scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "65": { + "FriendlyName": "VolumeScalingPerKey2", + "InternalName": "2 Volume scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "66": { + "FriendlyName": "VolumeScalingPerKey3", + "InternalName": "3 Volume scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "67": { + "FriendlyName": "VolumeScalingPerKey4", + "InternalName": "4 Volume scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "68": { + "FriendlyName": "VolumeScalingPerKey5", + "InternalName": "5 Volume scaling per key", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "69": { + "FriendlyName": "VelocitySensitivity1", + "InternalName": "1 Velocity sensitivity", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "70": { + "FriendlyName": "VelocitySensitivity2", + "InternalName": "2 Velocity sensitivity", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "71": { + "FriendlyName": "VelocitySensitivity3", + "InternalName": "3 Velocity sensitivity", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "72": { + "FriendlyName": "VelocitySensitivity4", + "InternalName": "4 Velocity sensitivity", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "73": { + "FriendlyName": "VelocitySensitivity5", + "InternalName": "5 Velocity sensitivity", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "74": { + "FriendlyName": "Waveform1", + "InternalName": "1 Waveform", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxWaveform" + }, + "75": { + "FriendlyName": "Waveform2", + "InternalName": "2 Waveform", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxWaveform" + }, + "76": { + "FriendlyName": "Waveform3", + "InternalName": "3 Waveform", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxWaveform" + }, + "77": { + "FriendlyName": "Waveform4", + "InternalName": "4 Waveform", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxWaveform" + }, + "78": { + "FriendlyName": "Waveform5", + "InternalName": "5 Waveform", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxWaveform" + }, + "79": { + "FriendlyName": "Noise1", + "InternalName": "1 Noise", + "MinValue": 0, + "MaxValue": 32768 + }, + "80": { + "FriendlyName": "Noise2", + "InternalName": "2 Noise", + "MinValue": 0, + "MaxValue": 32768 + }, + "81": { + "FriendlyName": "Noise3", + "InternalName": "3 Noise", + "MinValue": 0, + "MaxValue": 32768 + }, + "82": { + "FriendlyName": "Noise4", + "InternalName": "4 Noise", + "MinValue": 0, + "MaxValue": 32768 + }, + "83": { + "FriendlyName": "Noise5", + "InternalName": "5 Noise", + "MinValue": 0, + "MaxValue": 32768 + }, + "84": { + "FriendlyName": "Phase1", + "InternalName": "1 Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "85": { + "FriendlyName": "Phase2", + "InternalName": "2 Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "86": { + "FriendlyName": "Phase3", + "InternalName": "3 Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "87": { + "FriendlyName": "Phase4", + "InternalName": "4 Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "88": { + "FriendlyName": "Phase5", + "InternalName": "5 Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "89": { + "FriendlyName": "FreqMultiply1", + "InternalName": "1 Freq multiply", + "MinValue": 0, + "MaxValue": 32000 + }, + "90": { + "FriendlyName": "FreqMultiply2", + "InternalName": "2 Freq multiply", + "MinValue": 0, + "MaxValue": 32000 + }, + "91": { + "FriendlyName": "FreqMultiply3", + "InternalName": "3 Freq multiply", + "MinValue": 0, + "MaxValue": 32000 + }, + "92": { + "FriendlyName": "FreqMultiply4", + "InternalName": "4 Freq multiply", + "MinValue": 0, + "MaxValue": 32000 + }, + "93": { + "FriendlyName": "FreqMultiply5", + "InternalName": "5 Freq multiply", + "MinValue": 0, + "MaxValue": 32000 + }, + "94": { + "FriendlyName": "ConstantPitch1", + "InternalName": "1 Constant pitch", + "MinValue": 0, + "MaxValue": 16384, + "MinDisplayedValue": -8192, + "MaxDisplayedValue": 8192 + }, + "95": { + "FriendlyName": "ConstantPitch2", + "InternalName": "2 Constant pitch", + "MinValue": 0, + "MaxValue": 16384, + "MinDisplayedValue": -8192, + "MaxDisplayedValue": 8192 + }, + "96": { + "FriendlyName": "ConstantPitch3", + "InternalName": "3 Constant pitch", + "MinValue": 0, + "MaxValue": 16384, + "MinDisplayedValue": -8192, + "MaxDisplayedValue": 8192 + }, + "97": { + "FriendlyName": "ConstantPitch4", + "InternalName": "4 Constant pitch", + "MinValue": 0, + "MaxValue": 16384, + "MinDisplayedValue": -8192, + "MaxDisplayedValue": 8192 + }, + "98": { + "FriendlyName": "ConstantPitch5", + "InternalName": "5 Constant pitch", + "MinValue": 0, + "MaxValue": 16384, + "MinDisplayedValue": -8192, + "MaxDisplayedValue": 8192 + }, + "99": { + "FriendlyName": "SelfModulation1", + "InternalName": "1 Self-modulation", + "MinValue": 0, + "MaxValue": 32768 + }, + "100": { + "FriendlyName": "SelfModulation2", + "InternalName": "2 Self-modulation", + "MinValue": 0, + "MaxValue": 32768 + }, + "101": { + "FriendlyName": "SelfModulation3", + "InternalName": "3 Self-modulation", + "MinValue": 0, + "MaxValue": 32768 + }, + "102": { + "FriendlyName": "SelfModulation4", + "InternalName": "4 Self-modulation", + "MinValue": 0, + "MaxValue": 32768 + }, + "103": { + "FriendlyName": "SelfModulation5", + "InternalName": "5 Self-modulation", + "MinValue": 0, + "MaxValue": 32768 + }, + "104": { + "FriendlyName": "Feedback1", + "InternalName": "1 Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "105": { + "FriendlyName": "Feedback2", + "InternalName": "2 Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "106": { + "FriendlyName": "Feedback3", + "InternalName": "3 Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "107": { + "FriendlyName": "Feedback4", + "InternalName": "4 Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "108": { + "FriendlyName": "Feedback5", + "InternalName": "5 Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "109": { + "FriendlyName": "ModulationType1", + "InternalName": "1 Modulation type", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxModulationType" + }, + "110": { + "FriendlyName": "ModulationType2", + "InternalName": "2 Modulation type", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxModulationType" + }, + "111": { + "FriendlyName": "ModulationType3", + "InternalName": "3 Modulation type", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxModulationType" + }, + "112": { + "FriendlyName": "ModulationType4", + "InternalName": "4 Modulation type", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxModulationType" + }, + "113": { + "FriendlyName": "ModulationType5", + "InternalName": "5 Modulation type", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FmxModulationType" + }, + "114": { + "FriendlyName": "OutputMode1", + "InternalName": "1 Output mode", + "MinValue": 0, + "MaxValue": 31, + "IgnoreActualType": true + }, + "115": { + "FriendlyName": "OutputMode2", + "InternalName": "2 Output mode", + "MinValue": 0, + "MaxValue": 15, + "IgnoreActualType": true + }, + "116": { + "FriendlyName": "OutputMode3", + "InternalName": "3 Output mode", + "MinValue": 0, + "MaxValue": 7, + "IgnoreActualType": true + }, + "117": { + "FriendlyName": "OutputMode4", + "InternalName": "4 Output mode", + "MinValue": 0, + "MaxValue": 3, + "IgnoreActualType": true + }, + "118": { + "FriendlyName": "EnvelopeGain", + "InternalName": "Envelope gain", + "MinValue": 0, + "MaxValue": 8000 + } + }, + "Curves": { + "0": { + "FriendlyName": "CustomWaveform", + "Size": 256, + "MinValue": -1, + "MaxValue": 1, + "Description": "Used as a waveform where \u0027Custom\u0027 waveform type was applied." + } + } + }, + "Generator": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Waveform", + "InternalName": "Waveform", + "MinValue": 0, + "MaxValue": 8, + "EnumName": "GeneratorWaveform" + }, + "2": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "3": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 512 + }, + "4": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 512 + }, + "5": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 16, + "IgnoreActualType": true + }, + "6": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + }, + "7": { + "FriendlyName": "Sustain", + "InternalName": "Sustain", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "8": { + "FriendlyName": "FreqModulationByInput", + "InternalName": "Freq.modulation by input", + "MinValue": 0, + "MaxValue": 256 + }, + "9": { + "FriendlyName": "DutyCycle", + "InternalName": "Duty cycle", + "MinValue": 0, + "MaxValue": 1022 + } + }, + "Curves": { + "0": { + "FriendlyName": "Synth", + "Size": 32, + "MinValue": -1, + "MaxValue": 1, + "Description": "Used for \u0027Drawn\u0027, \u0027DrawnSpline\u0027 and \u0027Harmonics\u0027 waveforms." + } + } + }, + "Input": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 1024 + }, + "1": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ChannelsInverted" + } + }, + "Curves": {} + }, + "Kicker": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Waveform", + "InternalName": "Waveform", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "KickerWaveform" + }, + "2": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "3": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 512 + }, + "4": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 512 + }, + "5": { + "FriendlyName": "Boost", + "InternalName": "Boost", + "MinValue": 0, + "MaxValue": 1024 + }, + "6": { + "FriendlyName": "Acceleration", + "InternalName": "Acceleration", + "MinValue": 0, + "MaxValue": 1024 + }, + "7": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 4, + "IgnoreActualType": true + }, + "8": { + "FriendlyName": "NoClick", + "InternalName": "No click", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "Vorbis player": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "OriginalSpeed", + "InternalName": "Original speed", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "2": { + "FriendlyName": "Finetune", + "InternalName": "Finetune", + "MinValue": -128, + "MaxValue": 128 + }, + "3": { + "FriendlyName": "Transpose", + "InternalName": "Transpose", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "Interpolation", + "InternalName": "Interpolation", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "5": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 4, + "IgnoreActualType": true + }, + "6": { + "FriendlyName": "Repeat", + "InternalName": "Repeat", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "Sampler": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "2": { + "FriendlyName": "SampleInterpolation", + "InternalName": "Sample interpolation", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "SamplerInterpolation" + }, + "3": { + "FriendlyName": "EnvelopeInterpolation", + "InternalName": "Envelope interpolation", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "SamplerEnvelopeInterpolation" + }, + "4": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 32, + "IgnoreActualType": true + }, + "5": { + "FriendlyName": "RecThreshold", + "InternalName": "Rec threshold", + "MinValue": 0, + "MaxValue": 10000 + } + }, + "Curves": {} + }, + "SpectraVoice": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Panning", + "InternalName": "Panning", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "2": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 512 + }, + "3": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 512 + }, + "4": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 1, + "MaxValue": 32, + "IgnoreActualType": true + }, + "5": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "SpectraVoiceMode" + }, + "6": { + "FriendlyName": "Sustain", + "InternalName": "Sustain", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "7": { + "FriendlyName": "SpectrumResolution", + "InternalName": "Spectrum resolution", + "MinValue": 0, + "MaxValue": 5, + "EnumName": "SpectraVoiceResolution" + }, + "8": { + "FriendlyName": "Harmonic", + "InternalName": "Harmonic", + "MinValue": 0, + "MaxValue": 15, + "IgnoreActualType": true + }, + "9": { + "FriendlyName": "HFreq", + "InternalName": "H.freq", + "MinValue": 0, + "MaxValue": 22050, + "IgnoreActualType": true + }, + "10": { + "FriendlyName": "HVolume", + "InternalName": "H.volume", + "MinValue": 0, + "MaxValue": 255, + "IgnoreActualType": true + }, + "11": { + "FriendlyName": "HWidth", + "InternalName": "H.width", + "MinValue": 0, + "MaxValue": 255, + "IgnoreActualType": true + }, + "12": { + "FriendlyName": "HType", + "InternalName": "H.type", + "MinValue": 0, + "MaxValue": 18, + "EnumName": "SpectraVoiceHarmonicType" + } + }, + "Curves": {} + }, + "Amplifier": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 1024 + }, + "1": { + "FriendlyName": "Balance", + "InternalName": "Balance", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "2": { + "FriendlyName": "DcOffset", + "InternalName": "DC Offset", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128 + }, + "3": { + "FriendlyName": "Inverse", + "InternalName": "Inverse", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "4": { + "FriendlyName": "StereoWidth", + "InternalName": "Stereo width", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Absolute", + "InternalName": "Absolute", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "6": { + "FriendlyName": "FineVolume", + "InternalName": "Fine volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "7": { + "FriendlyName": "Gain", + "InternalName": "Gain", + "MinValue": 0, + "MaxValue": 5000 + }, + "8": { + "FriendlyName": "BipolarDcOffset", + "InternalName": "Bipolar DC Offset", + "MinValue": 0, + "MaxValue": 32768, + "MinDisplayedValue": -16384, + "MaxDisplayedValue": 16384 + } + }, + "Curves": {} + }, + "Compressor": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Threshold", + "InternalName": "Threshold", + "MinValue": 0, + "MaxValue": 512 + }, + "2": { + "FriendlyName": "Slope", + "InternalName": "Slope", + "MinValue": 0, + "MaxValue": 200 + }, + "3": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 500 + }, + "4": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 1, + "MaxValue": 1000 + }, + "5": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "CompressorMode" + }, + "6": { + "FriendlyName": "SideChainInput", + "InternalName": "Side-chain input", + "MinValue": 0, + "MaxValue": 32, + "IgnoreActualType": true + } + }, + "Curves": {} + }, + "DC Blocker": { + "Controllers": { + "0": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + } + }, + "Curves": {} + }, + "Delay": { + "Controllers": { + "0": { + "FriendlyName": "Dry", + "InternalName": "Dry", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Wet", + "InternalName": "Wet", + "MinValue": 0, + "MaxValue": 512 + }, + "2": { + "FriendlyName": "DelayL", + "InternalName": "Delay L", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "DelayR", + "InternalName": "Delay R", + "MinValue": 0, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "VolumeL", + "InternalName": "Volume L", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "VolumeR", + "InternalName": "Volume R", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + }, + "7": { + "FriendlyName": "Inverse", + "InternalName": "Inverse", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "8": { + "FriendlyName": "DelayUnit", + "InternalName": "Delay unit", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "DelayUnit" + }, + "9": { + "FriendlyName": "DelayMultiplier", + "InternalName": "Delay multiplier", + "MinValue": 1, + "MaxValue": 15, + "IgnoreActualType": true + }, + "10": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 32768 + } + }, + "Curves": {} + }, + "Distortion": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "DistortionType", + "InternalName": "Type", + "MinValue": 0, + "MaxValue": 10, + "EnumName": "DistortionType" + }, + "2": { + "FriendlyName": "Power", + "InternalName": "Power", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "BitDepth", + "InternalName": "Bit depth", + "MinValue": 1, + "MaxValue": 16, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "Freq", + "InternalName": "Freq", + "MinValue": 0, + "MaxValue": 44100 + }, + "5": { + "FriendlyName": "Noise", + "InternalName": "Noise", + "MinValue": 0, + "MaxValue": 256 + } + }, + "Curves": {} + }, + "Echo": { + "Controllers": { + "0": { + "FriendlyName": "Dry", + "InternalName": "Dry", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Wet", + "InternalName": "Wet", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Delay", + "InternalName": "Delay", + "MinValue": 0, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "RightChannelOffset", + "InternalName": "Right channel offset", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "5": { + "FriendlyName": "DelayUnit", + "InternalName": "Delay unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "EchoDelayUnit" + }, + "6": { + "FriendlyName": "RightChannelOffsetDelay", + "InternalName": "Right channel offset", + "Description": "Expressed as Delay/32768.", + "MinValue": 0, + "MaxValue": 32768 + }, + "7": { + "FriendlyName": "Filter", + "InternalName": "Filter", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "EchoFilter" + }, + "8": { + "FriendlyName": "FFreq", + "InternalName": "F.freq", + "MinValue": 0, + "MaxValue": 22000 + } + }, + "Curves": {} + }, + "EQ": { + "Controllers": { + "0": { + "FriendlyName": "Low", + "InternalName": "Low", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Middle", + "InternalName": "Middle", + "MinValue": 0, + "MaxValue": 512 + }, + "2": { + "FriendlyName": "High", + "InternalName": "High", + "MinValue": 0, + "MaxValue": 512 + }, + "3": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + } + }, + "Curves": {} + }, + "FFT": { + "Controllers": { + "0": { + "FriendlyName": "SampleRate", + "InternalName": "Sample rate", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "FftSampleRate" + }, + "1": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ChannelsInverted" + }, + "2": { + "FriendlyName": "BufferSamples", + "InternalName": "Buffer (samples)", + "MinValue": 0, + "MaxValue": 7, + "EnumName": "FftBufferSize" + }, + "3": { + "FriendlyName": "BufOverlap", + "InternalName": "Buf overlap", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "FftBufferOverlap" + }, + "4": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 32768 + }, + "5": { + "FriendlyName": "NoiseReduction", + "InternalName": "Noise reduction", + "MinValue": 0, + "MaxValue": 32768 + }, + "6": { + "FriendlyName": "PhaseGainNorm16384", + "InternalName": "Phase gain (norm=16384)", + "MinValue": 0, + "MaxValue": 32768, + "IgnoreActualType": true + }, + "7": { + "FriendlyName": "AllPassFilter", + "InternalName": "All-pass filter", + "MinValue": 0, + "MaxValue": 32768 + }, + "8": { + "FriendlyName": "FrequencySpread", + "InternalName": "Frequency spread", + "MinValue": 0, + "MaxValue": 32768 + }, + "9": { + "FriendlyName": "RandomPhase", + "InternalName": "Random phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "10": { + "FriendlyName": "RandomPhaseLite", + "InternalName": "Random phase (lite)", + "MinValue": 0, + "MaxValue": 32768 + }, + "11": { + "FriendlyName": "FreqShift", + "InternalName": "Freq shift", + "MinValue": 0, + "MaxValue": 8192, + "MinDisplayedValue": -4096, + "MaxDisplayedValue": 4096 + }, + "12": { + "FriendlyName": "Deform1", + "InternalName": "Deform1", + "MinValue": 0, + "MaxValue": 32768 + }, + "13": { + "FriendlyName": "Deform2", + "InternalName": "Deform2", + "MinValue": 0, + "MaxValue": 32768 + }, + "14": { + "FriendlyName": "HpCutoff", + "InternalName": "HP cutoff", + "MinValue": 0, + "MaxValue": 32768 + }, + "15": { + "FriendlyName": "LpCutoff", + "InternalName": "LP cutoff", + "MinValue": 0, + "MaxValue": 32768 + }, + "16": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 32768 + } + }, + "Curves": {} + }, + "Filter": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Freq", + "InternalName": "Freq", + "MinValue": 0, + "MaxValue": 14000 + }, + "2": { + "FriendlyName": "Resonance", + "InternalName": "Resonance", + "MinValue": 0, + "MaxValue": 1530 + }, + "3": { + "FriendlyName": "FilterType", + "InternalName": "Type", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "FilterType" + }, + "4": { + "FriendlyName": "Response", + "InternalName": "Response", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + }, + "6": { + "FriendlyName": "Impulse", + "InternalName": "Impulse", + "MinValue": 0, + "MaxValue": 14000 + }, + "7": { + "FriendlyName": "Mix", + "InternalName": "Mix", + "MinValue": 0, + "MaxValue": 256 + }, + "8": { + "FriendlyName": "LfoFreq", + "InternalName": "LFO freq", + "MinValue": 0, + "MaxValue": 1024 + }, + "9": { + "FriendlyName": "LfoAmp", + "InternalName": "LFO amp", + "MinValue": 0, + "MaxValue": 256 + }, + "10": { + "FriendlyName": "SetLfoPhase", + "InternalName": "Set LFO phase", + "MinValue": 0, + "MaxValue": 256 + }, + "11": { + "FriendlyName": "ExponentialFreq", + "InternalName": "Exponential freq", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "12": { + "FriendlyName": "RollOff", + "InternalName": "Roll-off", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "FilterRollOff" + }, + "13": { + "FriendlyName": "LfoFreqUnit", + "InternalName": "LFO freq unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "FilterLfoFrequencyUnit" + }, + "14": { + "FriendlyName": "LfoWaveform", + "InternalName": "LFO waveform", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "FilterLfoWaveform" + } + }, + "Curves": {} + }, + "Filter Pro": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "FilterType", + "InternalName": "Type", + "MinValue": 0, + "MaxValue": 10, + "EnumName": "FilterProType" + }, + "2": { + "FriendlyName": "Freq", + "InternalName": "Freq", + "MinValue": 0, + "MaxValue": 22000 + }, + "3": { + "FriendlyName": "FreqFinetune", + "InternalName": "Freq finetune", + "MinValue": 0, + "MaxValue": 2000, + "MinDisplayedValue": -1000, + "MaxDisplayedValue": 1000 + }, + "4": { + "FriendlyName": "FreqScale", + "InternalName": "Freq scale", + "MinValue": 0, + "MaxValue": 200 + }, + "5": { + "FriendlyName": "ExponentialFreq", + "InternalName": "Exponential freq", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "6": { + "FriendlyName": "Q", + "InternalName": "Q", + "MinValue": 0, + "MaxValue": 32768 + }, + "7": { + "FriendlyName": "Gain", + "InternalName": "Gain", + "MinValue": 0, + "MaxValue": 32768, + "MinDisplayedValue": -16384, + "MaxDisplayedValue": 16384 + }, + "8": { + "FriendlyName": "RollOff", + "InternalName": "Roll-off", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "FilterProRollOff" + }, + "9": { + "FriendlyName": "Response", + "InternalName": "Response", + "MinValue": 0, + "MaxValue": 1000 + }, + "10": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "FilterProMode" + }, + "11": { + "FriendlyName": "Mix", + "InternalName": "Mix", + "MinValue": 0, + "MaxValue": 32768 + }, + "12": { + "FriendlyName": "LfoFreq", + "InternalName": "LFO freq", + "MinValue": 0, + "MaxValue": 1024 + }, + "13": { + "FriendlyName": "LfoAmp", + "InternalName": "LFO amp", + "MinValue": 0, + "MaxValue": 32768 + }, + "14": { + "FriendlyName": "LfoWaveform", + "InternalName": "LFO waveform", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "FilterLfoWaveform" + }, + "15": { + "FriendlyName": "SetLfoPhase", + "InternalName": "Set LFO phase", + "MinValue": 0, + "MaxValue": 256 + }, + "16": { + "FriendlyName": "LfoFreqUnit", + "InternalName": "LFO freq unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "FilterLfoFrequencyUnit" + } + }, + "Curves": {} + }, + "Flanger": { + "Controllers": { + "0": { + "FriendlyName": "Dry", + "InternalName": "Dry", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Wet", + "InternalName": "Wet", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Delay", + "InternalName": "Delay", + "MinValue": 8, + "MaxValue": 1000 + }, + "4": { + "FriendlyName": "Response", + "InternalName": "Response", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "LfoFreq", + "InternalName": "LFO freq", + "MinValue": 0, + "MaxValue": 512 + }, + "6": { + "FriendlyName": "LfoAmp", + "InternalName": "LFO amp", + "MinValue": 0, + "MaxValue": 256 + }, + "7": { + "FriendlyName": "LfoWaveform", + "InternalName": "LFO waveform", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "FlangerLfoWaveform" + }, + "8": { + "FriendlyName": "SetLfoPhase", + "InternalName": "Set LFO phase", + "MinValue": 0, + "MaxValue": 256 + }, + "9": { + "FriendlyName": "LfoFreqUnit", + "InternalName": "LFO freq unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "FlangerLfoFrequencyUnit" + } + }, + "Curves": {} + }, + "LFO": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "FilterType", + "InternalName": "Type", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "LfoType" + }, + "2": { + "FriendlyName": "Amplitude", + "InternalName": "Amplitude", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Freq", + "InternalName": "Freq", + "MinValue": 1, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "Waveform", + "InternalName": "Waveform", + "MinValue": 0, + "MaxValue": 7, + "EnumName": "LfoWaveform" + }, + "5": { + "FriendlyName": "SetPhase", + "InternalName": "Set phase", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + }, + "7": { + "FriendlyName": "FrequencyUnit", + "InternalName": "Frequency unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "LfoFrequencyUnit" + }, + "8": { + "FriendlyName": "DutyCycle", + "InternalName": "Duty cycle", + "MinValue": 0, + "MaxValue": 256 + }, + "9": { + "FriendlyName": "Generator", + "InternalName": "Generator", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "10": { + "FriendlyName": "FreqScale", + "InternalName": "Freq scale", + "MinValue": 0, + "MaxValue": 200 + }, + "11": { + "FriendlyName": "SmoothTransitions", + "InternalName": "Smooth transitions", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "LfoSmoothTransitions" + }, + "12": { + "FriendlyName": "SineQuality", + "InternalName": "Sine quality", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "LfoSineQuality" + } + }, + "Curves": {} + }, + "Loop": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Length", + "InternalName": "Length", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ChannelsInverted" + }, + "3": { + "FriendlyName": "RepeatEndless128", + "InternalName": "Repeat (128=endless)", + "MinValue": 0, + "MaxValue": 128, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "LoopMode" + }, + "5": { + "FriendlyName": "LengthUnit", + "InternalName": "Length unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "LoopTimeUnit" + }, + "6": { + "FriendlyName": "MaxBufferSize", + "InternalName": "Max buffer size", + "Description": "Max buffer size in seconds", + "MinValue": 1, + "MaxValue": 240, + "IgnoreActualType": true + }, + "7": { + "FriendlyName": "OnNoteon", + "InternalName": "On NoteON", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "LoopOnNoteOn" + } + }, + "Curves": {} + }, + "Modulator": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "ModulationType", + "InternalName": "Modulation type", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "ModulationType" + }, + "2": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + } + }, + "Curves": {} + }, + "Pitch shifter": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Pitch", + "InternalName": "Pitch", + "MinValue": 0, + "MaxValue": 1200, + "MinDisplayedValue": -600, + "MaxDisplayedValue": 600 + }, + "2": { + "FriendlyName": "PitchScale", + "InternalName": "Pitch scale", + "MinValue": 0, + "MaxValue": 200 + }, + "3": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "GrainSize", + "InternalName": "Grain size", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + }, + "6": { + "FriendlyName": "BypassIfPitch0", + "InternalName": "Bypass if pitch=0", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "PitchShifterBypassMode" + } + }, + "Curves": {} + }, + "Reverb": { + "Controllers": { + "0": { + "FriendlyName": "Dry", + "InternalName": "Dry", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Wet", + "InternalName": "Wet", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Feedback", + "InternalName": "Feedback", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Damp", + "InternalName": "Damp", + "MinValue": 0, + "MaxValue": 256 + }, + "4": { + "FriendlyName": "StereoWidth", + "InternalName": "Stereo width", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Freeze", + "InternalName": "Freeze", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "6": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + }, + "7": { + "FriendlyName": "AllPassFilter", + "InternalName": "All-pass filter", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "8": { + "FriendlyName": "RoomSize", + "InternalName": "Room size", + "MinValue": 0, + "MaxValue": 128 + }, + "9": { + "FriendlyName": "RandomSeed", + "InternalName": "Random seed", + "MinValue": 0, + "MaxValue": 32768, + "IgnoreActualType": true + } + }, + "Curves": {} + }, + "Vocal filter": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "FormantWidth", + "InternalName": "Formant width", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Intensity", + "InternalName": "Intensity", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Formants", + "InternalName": "Formants", + "MinValue": 1, + "MaxValue": 5, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "VowelAEIOU", + "InternalName": "Vowel (a,e,i,o,u)", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "VoiceType", + "InternalName": "Voice type", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "VocalFilterVoiceType" + }, + "6": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + }, + "7": { + "FriendlyName": "RandomFrequency", + "InternalName": "Random frequency", + "MinValue": 0, + "MaxValue": 1024 + }, + "8": { + "FriendlyName": "RandomSeed", + "InternalName": "Random seed", + "MinValue": 0, + "MaxValue": 32768 + }, + "9": { + "FriendlyName": "Vowel1", + "InternalName": "Vowel1", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "VocalFilterVowel" + }, + "10": { + "FriendlyName": "Vowel2", + "InternalName": "Vowel2", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "VocalFilterVowel" + }, + "11": { + "FriendlyName": "Vowel3", + "InternalName": "Vowel3", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "VocalFilterVowel" + }, + "12": { + "FriendlyName": "Vowel4", + "InternalName": "Vowel4", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "VocalFilterVowel" + }, + "13": { + "FriendlyName": "Vowel5", + "InternalName": "Vowel5", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "VocalFilterVowel" + } + }, + "Curves": {} + }, + "Vibrato": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 256 + }, + "1": { + "FriendlyName": "Amplitude", + "InternalName": "Amplitude", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "Freq", + "InternalName": "Freq", + "MinValue": 1, + "MaxValue": 2048 + }, + "3": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + }, + "4": { + "FriendlyName": "SetPhase", + "InternalName": "Set phase", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "FrequencyUnit", + "InternalName": "Frequency unit", + "MinValue": 0, + "MaxValue": 6, + "EnumName": "VibratoFrequencyUnit" + }, + "6": { + "FriendlyName": "ExponentialAmplitude", + "InternalName": "Exponential amplitude", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "WaveShaper": { + "Controllers": { + "0": { + "FriendlyName": "InputVolume", + "InternalName": "Input volume", + "MinValue": 0, + "MaxValue": 512 + }, + "1": { + "FriendlyName": "Mix", + "InternalName": "Mix", + "MinValue": 0, + "MaxValue": 256 + }, + "2": { + "FriendlyName": "OutputVolume", + "InternalName": "Output volume", + "MinValue": 0, + "MaxValue": 512 + }, + "3": { + "FriendlyName": "Symmetric", + "InternalName": "Symmetric", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "4": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "Quality" + }, + "5": { + "FriendlyName": "DcBlocker", + "InternalName": "DC blocker", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": { + "0": { + "FriendlyName": "ValueMap", + "Size": 256, + "MinValue": 0, + "MaxValue": 1, + "Description": "Maps input to output." + } + } + }, + "ADSR": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 10000 + }, + "2": { + "FriendlyName": "Decay", + "InternalName": "Decay", + "MinValue": 0, + "MaxValue": 10000 + }, + "3": { + "FriendlyName": "SustainLevel", + "InternalName": "Sustain level", + "MinValue": 0, + "MaxValue": 32768 + }, + "4": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 10000 + }, + "5": { + "FriendlyName": "AttackCurve", + "InternalName": "Attack curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "6": { + "FriendlyName": "DecayCurve", + "InternalName": "Decay curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "7": { + "FriendlyName": "ReleaseCurve", + "InternalName": "Release curve", + "MinValue": 0, + "MaxValue": 11, + "EnumName": "AdsrCurveType" + }, + "8": { + "FriendlyName": "Sustain", + "InternalName": "Sustain", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrSustainMode" + }, + "9": { + "FriendlyName": "SustainPedal", + "InternalName": "Sustain pedal", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "10": { + "FriendlyName": "State", + "InternalName": "State", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "11": { + "FriendlyName": "OnNoteon", + "InternalName": "On NoteON", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrOnNoteOnBehaviour" + }, + "12": { + "FriendlyName": "OnNoteoff", + "InternalName": "On NoteOFF", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrOnNoteOffBehaviour" + }, + "13": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "AdsrMode" + }, + "14": { + "FriendlyName": "SmoothTransitions", + "InternalName": "Smooth transitions", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "AdsrSmoothTransitions" + } + }, + "Curves": {} + }, + "Ctl2Note": { + "Controllers": { + "0": { + "FriendlyName": "Pitch", + "InternalName": "Pitch", + "MinValue": 0, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "FirstNote", + "InternalName": "First note", + "MinValue": 0, + "MaxValue": 120, + "IgnoreActualType": true + }, + "2": { + "FriendlyName": "RangeNumberOfSemitones", + "InternalName": "Range (number of semitones)", + "MinValue": 0, + "MaxValue": 120, + "IgnoreActualType": true + }, + "3": { + "FriendlyName": "Transpose", + "InternalName": "Transpose", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "Finetune", + "InternalName": "Finetune", + "MinValue": 0, + "MaxValue": 512, + "MinDisplayedValue": -256, + "MaxDisplayedValue": 256 + }, + "5": { + "FriendlyName": "Velocity", + "InternalName": "Velocity", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "State", + "InternalName": "State", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "7": { + "FriendlyName": "Noteon", + "InternalName": "NoteON", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ControlToNoteOnBehaviour" + }, + "8": { + "FriendlyName": "Noteoff", + "InternalName": "NoteOFF", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "ControlToNoteOffBehaviour" + }, + "9": { + "FriendlyName": "RecordNotes", + "InternalName": "Record notes", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "Feedback": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 10000 + }, + "1": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Channels" + } + }, + "Curves": {} + }, + "Glide": { + "Controllers": { + "0": { + "FriendlyName": "Response", + "InternalName": "Response", + "MinValue": 0, + "MaxValue": 1000 + }, + "1": { + "FriendlyName": "SampleRate", + "InternalName": "Sample rate", + "MinValue": 1, + "MaxValue": 32768 + }, + "2": { + "FriendlyName": "ResetOnStNote1", + "InternalName": "Reset on 1st note", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "3": { + "FriendlyName": "Polyphony", + "InternalName": "Polyphony", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "4": { + "FriendlyName": "Pitch", + "InternalName": "Pitch", + "MinValue": 0, + "MaxValue": 1200, + "MinDisplayedValue": -600, + "MaxDisplayedValue": 600 + }, + "5": { + "FriendlyName": "PitchScale", + "InternalName": "Pitch scale", + "MinValue": 0, + "MaxValue": 200 + }, + "6": { + "FriendlyName": "Reset", + "InternalName": "Reset", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "GPIO": { + "Controllers": { + "0": { + "FriendlyName": "Out", + "InternalName": "Out", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "1": { + "FriendlyName": "OutPin", + "InternalName": "Out pin", + "MinValue": 0, + "MaxValue": 256, + "IgnoreActualType": true + }, + "2": { + "FriendlyName": "OutThreshold", + "InternalName": "Out threshold", + "MinValue": 0, + "MaxValue": 100 + }, + "3": { + "FriendlyName": "In", + "InternalName": "In", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "4": { + "FriendlyName": "InPin", + "InternalName": "In pin", + "MinValue": 0, + "MaxValue": 256, + "IgnoreActualType": true + }, + "5": { + "FriendlyName": "InNote", + "InternalName": "In note", + "MinValue": 0, + "MaxValue": 128, + "IgnoreActualType": true + }, + "6": { + "FriendlyName": "InAmplitude", + "InternalName": "In amplitude", + "MinValue": 0, + "MaxValue": 100 + } + }, + "Curves": {} + }, + "MetaModule": { + "Controllers": { + "0": { + "FriendlyName": "Volume", + "InternalName": "Volume", + "MinValue": 0, + "MaxValue": 1024 + }, + "1": { + "FriendlyName": "InputModule", + "InternalName": "Input module", + "MinValue": 1, + "MaxValue": 256, + "IgnoreActualType": true + }, + "2": { + "FriendlyName": "PlayPatterns", + "InternalName": "Play patterns", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "MetaModulePatternMode" + }, + "3": { + "FriendlyName": "BeatsPerMinute", + "InternalName": "BPM (Beats Per Minute)", + "MinValue": 1, + "MaxValue": 1000, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "TicksPerLine", + "InternalName": "TPL (Ticks Per Line)", + "MinValue": 1, + "MaxValue": 31, + "IgnoreActualType": true + }, + "5": { + "FriendlyName": "", + "InternalName": "...", + "MinValue": 0, + "MaxValue": 256 + }, + "6": { + "FriendlyName": "", + "InternalName": "...", + "MinValue": 0, + "MaxValue": 256 + }, + "7": { + "FriendlyName": "", + "InternalName": "...", + "MinValue": 0, + "MaxValue": 256 + } + }, + "Curves": {} + }, + "MultiCtl": { + "Controllers": { + "0": { + "FriendlyName": "Value", + "InternalName": "Value", + "MinValue": 0, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "Gain", + "InternalName": "Gain", + "MinValue": 0, + "MaxValue": 1024 + }, + "2": { + "FriendlyName": "Quantization", + "InternalName": "Quantization", + "MinValue": 0, + "MaxValue": 32768 + }, + "3": { + "FriendlyName": "OutOffset", + "InternalName": "OUT offset", + "MinValue": 0, + "MaxValue": 32768, + "MinDisplayedValue": -16384, + "MaxDisplayedValue": 16384 + }, + "4": { + "FriendlyName": "Response", + "InternalName": "Response", + "MinValue": 0, + "MaxValue": 1000 + }, + "5": { + "FriendlyName": "SampleRate", + "InternalName": "Sample rate", + "MinValue": 1, + "MaxValue": 32768 + } + }, + "Curves": { + "0": { + "FriendlyName": "ValueMap", + "Size": 257, + "MinValue": 0, + "MaxValue": 1, + "Description": "Modifies values." + } + } + }, + "MultiSynth": { + "Controllers": { + "0": { + "FriendlyName": "Transpose", + "InternalName": "Transpose", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128, + "IgnoreActualType": true + }, + "1": { + "FriendlyName": "RandomPitch", + "InternalName": "Random pitch", + "MinValue": 0, + "MaxValue": 4096 + }, + "2": { + "FriendlyName": "Velocity", + "InternalName": "Velocity", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Finetune", + "InternalName": "Finetune", + "MinValue": 0, + "MaxValue": 512, + "MinDisplayedValue": -256, + "MaxDisplayedValue": 256 + }, + "4": { + "FriendlyName": "RandomPhase", + "InternalName": "Random phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "5": { + "FriendlyName": "RandomVelocity", + "InternalName": "Random velocity", + "MinValue": 0, + "MaxValue": 32768 + }, + "6": { + "FriendlyName": "Phase", + "InternalName": "Phase", + "MinValue": 0, + "MaxValue": 32768 + }, + "7": { + "FriendlyName": "Curve2Influence", + "InternalName": "Curve2 influence", + "MinValue": 0, + "MaxValue": 256 + } + }, + "Curves": { + "0": { + "FriendlyName": "NoteToVelocity", + "Size": 128, + "MinValue": 0, + "MaxValue": 1, + "Description": "Velocity to apply to arriving note." + }, + "1": { + "FriendlyName": "VelocityToVelocity", + "Size": 257, + "MinValue": 0, + "MaxValue": 1, + "Description": "Map velocity values." + }, + "2": { + "FriendlyName": "NoteToPitch", + "Size": 128, + "MinValue": 0.2500038, + "MaxValue": 0.74610513, + "Description": "Map incoming note to a pitch value." + } + } + }, + "Pitch2Ctl": { + "Controllers": { + "0": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "PitchToControlMode" + }, + "1": { + "FriendlyName": "OnNoteoff", + "InternalName": "On NoteOFF", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "PitchToControlOnNoteOff" + }, + "2": { + "FriendlyName": "FirstNote", + "InternalName": "First note", + "MinValue": 0, + "MaxValue": 256, + "IgnoreActualType": true + }, + "3": { + "FriendlyName": "Range", + "InternalName": "Range (number of semitones)", + "MinValue": 0, + "MaxValue": 256, + "IgnoreActualType": true + }, + "4": { + "FriendlyName": "OutMin", + "InternalName": "OUT min", + "MinValue": 0, + "MaxValue": 32768 + }, + "5": { + "FriendlyName": "OutMax", + "InternalName": "OUT max", + "MinValue": 0, + "MaxValue": 32768 + }, + "6": { + "FriendlyName": "OutController", + "InternalName": "OUT controller", + "MinValue": 0, + "MaxValue": 255, + "IgnoreActualType": true + } + }, + "Curves": {} + }, + "Pitch Detector": { + "Controllers": { + "0": { + "FriendlyName": "Algorithm", + "InternalName": "Algorithm", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "PitchDetectorAlgorithm" + }, + "1": { + "FriendlyName": "Threshold", + "InternalName": "Threshold", + "MinValue": 0, + "MaxValue": 10000 + }, + "2": { + "FriendlyName": "Gain", + "InternalName": "Gain", + "MinValue": 0, + "MaxValue": 256 + }, + "3": { + "FriendlyName": "Microtones", + "InternalName": "Microtones", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "4": { + "FriendlyName": "DetectorFinetune", + "InternalName": "Detector finetune", + "MinValue": 0, + "MaxValue": 512, + "MinDisplayedValue": -256, + "MaxDisplayedValue": 256 + }, + "5": { + "FriendlyName": "LpFilterFreqOff0", + "InternalName": "LP filter freq (0 - OFF)", + "MinValue": 0, + "MaxValue": 4000 + }, + "6": { + "FriendlyName": "LpFilterRollOff", + "InternalName": "LP filter roll-off", + "MinValue": 0, + "MaxValue": 3, + "EnumName": "FilterRollOff" + }, + "7": { + "FriendlyName": "AlgSampleRateHz12", + "InternalName": "Alg1-2 Sample rate (Hz)", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "PitchDetectorAlgSampleRate" + }, + "8": { + "FriendlyName": "AlgBufferMs12", + "InternalName": "Alg1-2 Buffer (ms)", + "MinValue": 0, + "MaxValue": 4, + "EnumName": "PitchDetectorBufferSize" + }, + "9": { + "FriendlyName": "AlgBufOverlap12", + "InternalName": "Alg1-2 Buf overlap", + "MinValue": 0, + "MaxValue": 100 + }, + "10": { + "FriendlyName": "AlgSensitivityAbsoluteThreshold1", + "InternalName": "Alg1 Sensitivity (absolute threshold)", + "MinValue": 0, + "MaxValue": 100 + }, + "11": { + "FriendlyName": "RecordNotes", + "InternalName": "Record notes", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + } + }, + "Curves": {} + }, + "Sound2Ctl": { + "Controllers": { + "0": { + "FriendlyName": "SampleRate", + "InternalName": "Sample rate", + "MinValue": 1, + "MaxValue": 32768 + }, + "1": { + "FriendlyName": "Channels", + "InternalName": "Channels", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "ChannelsInverted" + }, + "2": { + "FriendlyName": "Absolute", + "InternalName": "Absolute", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "3": { + "FriendlyName": "Gain", + "InternalName": "Gain", + "MinValue": 0, + "MaxValue": 1024 + }, + "4": { + "FriendlyName": "Smooth", + "InternalName": "Smooth", + "MinValue": 0, + "MaxValue": 256 + }, + "5": { + "FriendlyName": "Mode", + "InternalName": "Mode", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "SoundToControlMode" + }, + "6": { + "FriendlyName": "OutMin", + "InternalName": "OUT min", + "MinValue": 0, + "MaxValue": 32768 + }, + "7": { + "FriendlyName": "OutMax", + "InternalName": "OUT max", + "MinValue": 0, + "MaxValue": 32768 + }, + "8": { + "FriendlyName": "OutController", + "InternalName": "OUT controller", + "MinValue": 0, + "MaxValue": 255, + "IgnoreActualType": true + } + }, + "Curves": {} + }, + "Velocity2Ctl": { + "Controllers": { + "0": { + "FriendlyName": "OnNoteoff", + "InternalName": "On NoteOFF", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "VelocityToControlOnNoteOff" + }, + "1": { + "FriendlyName": "OutMin", + "InternalName": "OUT min", + "MinValue": 0, + "MaxValue": 32768 + }, + "2": { + "FriendlyName": "OutMax", + "InternalName": "OUT max", + "MinValue": 0, + "MaxValue": 32768 + }, + "3": { + "FriendlyName": "OutOffset", + "InternalName": "OUT offset", + "MinValue": 0, + "MaxValue": 32768, + "MinDisplayedValue": -16384, + "MaxDisplayedValue": 16384 + }, + "4": { + "FriendlyName": "OutController", + "InternalName": "OUT controller", + "MinValue": 0, + "MaxValue": 255, + "IgnoreActualType": true + } + }, + "Curves": {} + } + }, + "$schema": "./schema.g.json" +} \ No newline at end of file diff --git a/CodeGeneration/Logic/ModuleData.g.schema.json b/CodeGeneration/Logic/ModuleData.g.schema.json new file mode 100644 index 0000000..4c34a25 --- /dev/null +++ b/CodeGeneration/Logic/ModuleData.g.schema.json @@ -0,0 +1,124 @@ +{ + "type": [ + "object", + "null" + ], + "properties": { + "Modules": { + "type": "object", + "additionalProperties": { + "type": [ + "object", + "null" + ], + "properties": { + "Controllers": { + "type": "object", + "additionalProperties": { + "type": [ + "object", + "null" + ], + "properties": { + "FriendlyName": { + "type": "string" + }, + "InternalName": { + "type": "string" + }, + "Description": { + "type": [ + "string", + "null" + ] + }, + "MinValue": { + "type": "integer" + }, + "MaxValue": { + "type": "integer" + }, + "MinDisplayedValue": { + "type": [ + "integer", + "null" + ] + }, + "MaxDisplayedValue": { + "type": [ + "integer", + "null" + ] + }, + "IgnoreActualType": { + "type": [ + "boolean", + "null" + ] + }, + "EnumName": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "FriendlyName", + "InternalName", + "MinValue", + "MaxValue" + ] + } + }, + "Curves": { + "type": "object", + "additionalProperties": { + "type": [ + "object", + "null" + ], + "properties": { + "FriendlyName": { + "type": "string" + }, + "Size": { + "type": "integer" + }, + "MinValue": { + "type": [ + "number", + "null" + ] + }, + "MaxValue": { + "type": [ + "number", + "null" + ] + }, + "Description": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "FriendlyName", + "Size" + ] + } + } + }, + "required": [ + "Controllers", + "Curves" + ] + } + } + }, + "required": [ + "Modules" + ] +} \ No newline at end of file diff --git a/CodeGeneration/Logic/ModuleDataLoader.cs b/CodeGeneration/Logic/ModuleDataLoader.cs new file mode 100644 index 0000000..c0d3ff6 --- /dev/null +++ b/CodeGeneration/Logic/ModuleDataLoader.cs @@ -0,0 +1,109 @@ +using System.Text.Json; + +namespace CodeGeneration.Logic; + +public static class ModuleDataLoader +{ + public static KnownModuleData? LoadFromFile(string path) + { + if (!File.Exists(path)) + { + Console.WriteLine($"File not found: {path}"); + return null; + } + + string json; + try + { + json = File.ReadAllText(path); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to read file: {ex.Message}"); + return null; + } + + using var document = System.Text.Json.JsonDocument.Parse(json); + + if (!document.RootElement.TryGetProperty("Modules", out var modulesDictionary)) + { + Console.WriteLine("No 'Modules' property found in JSON"); + return null; + } + + var options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + }; + + var modules = new Dictionary(); + + foreach (var moduleElement in modulesDictionary.EnumerateObject()) + { + var internalName = moduleElement.Name; + try + { + var controllers = LoadDictionary( + moduleElement.Value, "Controllers", internalName, options); + + var curves = LoadDictionary( + moduleElement.Value, "Curves", internalName, options); + + modules[internalName] = new ModuleDescription + { + Controllers = controllers, + Curves = curves + }; + } + catch (Exception ex) + { + Console.WriteLine($"Failed to deserialize module '{internalName}': {ex.Message}"); + } + } + + return new KnownModuleData + { + Modules = modules, + }; + } + + private static Dictionary LoadDictionary( + JsonElement moduleElement, + string propertyName, + string moduleName, + JsonSerializerOptions options) + { + var result = new Dictionary(); + + if (!moduleElement.TryGetProperty(propertyName, out var objectElement)) + { + return result; + } + + foreach (var element in objectElement.EnumerateObject()) + { + try + { + if (!int.TryParse(element.Name, out int id)) + { + Console.WriteLine($"{propertyName} in module '{moduleName}' has invalid Id key '{element.Name}', skipping"); + continue; + } + + var item = System.Text.Json.JsonSerializer.Deserialize( + element.Value.GetRawText(), options); + + if (item != null) + { + result[id] = item; + } + } + catch (Exception ex) + { + Console.WriteLine($"Failed to deserialize {propertyName.TrimEnd('s').ToLower()} '{element.Name}' in module '{moduleName}': {ex.Message}"); + } + } + + return result; + } +} diff --git a/SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs b/CodeGeneration/Logic/SunVoxHeaderParser.cs similarity index 69% rename from SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs rename to CodeGeneration/Logic/SunVoxHeaderParser.cs index bd90f6d..f5aaa27 100644 --- a/SunSharp.CodeGeneration/Logic/SunVoxHeaderParser.cs +++ b/CodeGeneration/Logic/SunVoxHeaderParser.cs @@ -1,6 +1,6 @@ using System.Collections.Immutable; using System.Text.RegularExpressions; -using SunSharp.CodeGeneration.Generators; +using CodeGeneration; namespace SunSharp.CodeGeneration.Logic; @@ -10,12 +10,15 @@ public sealed record ParsedParameter(string CType, string Name, Type CSharpType) public sealed record ParsedHeader(ParsedFunction[] Functions); -public static class SunVoxHeaderParser +public static partial class SunVoxHeaderParser { public static ParsedHeader Parse() { var headerPath = PathHelper.GetProjectFilePath("SunSharp/Native/sunvox.h"); - if (!File.Exists(headerPath)) throw new FileNotFoundException("Could not locate sunvox.h", headerPath); + if (!File.Exists(headerPath)) + { + throw new FileNotFoundException("Could not locate sunvox.h", headerPath); + } var lines = File.ReadAllLines(headerPath); var functions = ParseFunctions(lines); return new ParsedHeader(functions); @@ -25,7 +28,7 @@ private static ParsedFunction[] ParseFunctions(string[] lines) { var functions = new List(); var (start, end) = FindStaticSection(lines); - var rx = new Regex(@"^\s*(?(?:const\s+)?[a-zA-Z_][a-zA-Z0-9_]*\s*(?:\*)?)\s+(?sv_[a-z0-9_]+)\s*\((?[^)]*)\)\s*(?:SUNVOX_FN_ATTR)?\s*;", RegexOptions.Compiled); + var rx = FunctionParsingRegex(); for (var i = start; i < end; i++) { @@ -56,51 +59,50 @@ private static ParsedFunction[] ParseFunctions(string[] lines) functions.Add(new ParsedFunction(ret, name, parameters.ToArray(), original, MapCTypeToCSharp(ret))); } - return functions.ToArray(); + if (functions.Any(f => f.CSharpReturnType == null)) + { + throw new InvalidOperationException("One or more functions could not have their return type mapped to C#."); + } + + if (functions.Count == 0) + { + throw new Exception("No functions were parsed from the SUNVOX_STATIC_LIB section of the header."); + } + + return [.. functions]; } private static (int start, int end) FindStaticSection(string[] lines) { - var regionStartIndex = -1; - for (var i = 0; i < lines.Length; i++) + int start = -1, end = -1; + for (int i = 0; i < lines.Length; i++) { - if (!lines[i].Trim().StartsWith("#ifdef SUNVOX_STATIC_LIB")) + if (lines[i].StartsWith("#ifdef SUNVOX_STATIC_LIB")) { - continue; + start = i + 1; } - - regionStartIndex = i; - break; } - if (regionStartIndex == -1) + if (start == -1) { - throw new InvalidOperationException("Could not find the beginning of SUNVOX_STATIC_LIB section in header."); + throw new Exception("Could not find start of SUNVOX_STATIC_LIB section in sunvox.h."); } - var depth = 0; - for (var i = regionStartIndex + 1; i < lines.Length; i++) + for (int i = start; i < lines.Length; i++) { - var line = lines[i].Trim(); - if (line.StartsWith("#ifdef") || line.StartsWith("#if")) + if (lines[i].Contains("/* ... SUNVOX_STATIC_LIB */")) { - depth++; - } - else if (line.StartsWith("#endif")) - { - depth--; - if (depth == 0) - { - return (regionStartIndex, i); - } - } - else if (line.StartsWith("#else") && depth == 0) - { - return (regionStartIndex, i); + end = i; + break; } } - throw new InvalidOperationException("Could not find the end of SUNVOX_STATIC_LIB section in header."); + if (end == -1) + { + throw new Exception("Could not find end of SUNVOX_STATIC_LIB section in sunvox.h."); + } + + return (start, end); } private static (string CType, string Name) ParseParameter(string param) @@ -140,4 +142,7 @@ private static Type MapCTypeToCSharp(string cType) throw new ArgumentException($"Unexpected C-lang type: '{cType}'.", nameof(cType)); } + + [GeneratedRegex(@"^\s*(?(?:const\s+)?[a-zA-Z_][a-zA-Z0-9_]*\s*(?:\*)?)\s+(?sv_[a-z0-9_]+)\s*\((?[^)]*)\)\s*(?:SUNVOX_FN_ATTR)?\s*;", RegexOptions.Compiled)] + private static partial Regex FunctionParsingRegex(); } diff --git a/SunSharp.CodeGeneration/Logic/TypeTranslator.cs b/CodeGeneration/Logic/TypeTranslator.cs similarity index 88% rename from SunSharp.CodeGeneration/Logic/TypeTranslator.cs rename to CodeGeneration/Logic/TypeTranslator.cs index 9bc5a73..d1c607e 100644 --- a/SunSharp.CodeGeneration/Logic/TypeTranslator.cs +++ b/CodeGeneration/Logic/TypeTranslator.cs @@ -1,6 +1,6 @@ -using System.Collections.Frozen; +using System.Collections.Frozen; -namespace SunSharp.CodeGeneration.Logic; +namespace CodeGeneration.Logic; public static class TypeTranslator { diff --git a/SunSharp.CodeGeneration/Generators/PathHelper.cs b/CodeGeneration/PathHelper.cs similarity index 67% rename from SunSharp.CodeGeneration/Generators/PathHelper.cs rename to CodeGeneration/PathHelper.cs index 22b710b..7c43ab9 100644 --- a/SunSharp.CodeGeneration/Generators/PathHelper.cs +++ b/CodeGeneration/PathHelper.cs @@ -1,6 +1,6 @@ -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; -namespace SunSharp.CodeGeneration.Generators; +namespace CodeGeneration; public static class PathHelper { @@ -8,8 +8,10 @@ public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] st { var expectedFolders = new[] { + "CodeGeneration", + "CodeGeneration.Tests", + "Examples", "SunSharp", - "SunSharp.CodeGeneration", "SunSharp.IntegrationTests", "SunSharp.Redistribution", "SunSharp.Tests" @@ -24,18 +26,12 @@ public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] st var directories = directoryInfo.GetDirectories(); if (expectedFolders.All(f => directories.Any(d => d.Name == f))) { - break; + return Path.Join(directoryInfo.FullName, pathFromRoot); } directoryInfo = directoryInfo.Parent; } - // is current directoryInfo the folder we expected? - if (directoryInfo != null && expectedFolders.All(f => directoryInfo.GetDirectories().Any(d => d.Name == f))) - { - return Path.Join(directoryInfo.FullName, pathFromRoot); - } - throw new Exception("Could not trace back to the project folder."); } } diff --git a/CodeGeneration/Program.cs b/CodeGeneration/Program.cs new file mode 100644 index 0000000..c541259 --- /dev/null +++ b/CodeGeneration/Program.cs @@ -0,0 +1,87 @@ +namespace CodeGeneration; + +internal sealed class Program +{ + private static readonly CancellationTokenSource Cts = new(); + + private static async Task Main() + { + Console.WriteLine("Starting code generation..."); + + Console.CancelKeyPress += (_, eventArgs) => + { + Console.WriteLine("Cancel event triggered"); + Cts.Cancel(); + eventArgs.Cancel = true; + }; + + var generators = GeneratorDiscovery.GetGenerators(); + if (generators.Length == 0) + { + Console.WriteLine("No generator types were found."); + return 0; + } + + Console.WriteLine($"Discovered {generators.Length} generator(s)."); + var groups = generators.GroupBy(g => g.Priority).OrderByDescending(g => g.Key).ToArray(); + var allResults = new List(); + var totalChanged = 0; + var totalUnchanged = 0; + + foreach (var group in groups) + { + Console.WriteLine($"Processing priority group {group.Key}..."); + + var resultTasks = group.Select(g => g.GenerateAsync(Cts.Token)); + var groupResults = await Task.WhenAll(resultTasks); + allResults.AddRange(groupResults); + + var groupFailures = groupResults.Where(r => !r.Successful).ToList(); + if (groupFailures.Count != 0) + { + Console.WriteLine($"One or more generators failed in priority group {group.Key}:"); + foreach (var f in groupFailures) + { + Console.WriteLine($"[FAIL] {f.GeneratorName}"); + if (f.Exception is not null) PrintException(f.Exception); + } + return -1; + } + + var withChanges = groupResults.Where(r => r.ChangesNecessary).ToList(); + var unchanged = groupResults.Length - withChanges.Count; + totalChanged += withChanges.Count; + totalUnchanged += unchanged; + + Console.WriteLine($"Priority group {group.Key} completed. Changed: {withChanges.Count}, Unchanged: {unchanged}."); + + if (withChanges.Count > 0) + { + await Parallel.ForEachAsync( + withChanges, + Cts.Token, + async (result, token) => + { + Console.WriteLine($"Applying changes to '{result.TargetPath}'..."); + await result.ApplyAsync(token); + }); + } + } + + Console.WriteLine($"All generators completed. Total Changed: {totalChanged}, Total Unchanged: {totalUnchanged}."); + Console.WriteLine("All done!"); + return 0; + } + + private static void PrintException(Exception ex) + { + var depth = 0; + for (var current = ex; current is not null; current = current.InnerException) + { + var prefix = depth == 0 ? " " : new string(' ', (depth + 1) * 3); + Console.WriteLine($"{prefix}{current.GetType().Name}: {current.Message}"); + if (current.StackTrace is not null) Console.WriteLine($"{prefix}{current.StackTrace}"); + depth++; + } + } +} diff --git a/Examples/Examples.csproj b/Examples/Examples.csproj index f432dbe..c6efe06 100644 --- a/Examples/Examples.csproj +++ b/Examples/Examples.csproj @@ -1,9 +1,17 @@ - + Exe - net8.0 + net10.0 enable + 9999 + Nullable + Debug;Release;Generation + + + + + diff --git a/Examples/Program.cs b/Examples/Program.cs index fb569f4..91d0ffe 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -1,8 +1,43 @@ -namespace Examples; +using System; +using System.Threading; +using SunSharp; +using SunSharp.Redistribution; + +namespace Examples; internal sealed class Program { private static void Main() { + LibraryLoader.Load(); + var libraryInstance = LibraryLoader.GetLibraryInstance(); + + using var sunVox = new SunVox(libraryInstance, noDebugOutput: false); + + if (!sunVox.Slots.TryOpenNewSlot(out var slot)) + { + Console.WriteLine("Failed to open a new slot."); + return; + } + + var generator = slot.Synthesizer + .CreateModule(SynthModuleType.AnalogGenerator, "My Generator Module") + .AsAnalogGenerator(); + + if (!slot.Synthesizer.TryGetModule(0, out var outputModule)) + { + Console.WriteLine("Failed to get the output module."); + return; + } + + slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); + + slot.VirtualPattern.SendEvent(0, new PatternEvent(new Note(NoteName.A, 4), 0x88, (ushort)(generator.ModuleHandle.Id + 1), 0, 0)); + + Thread.Sleep(TimeSpan.FromSeconds(1)); + + slot.VirtualPattern.SendEvent(0, new PatternEvent(Note.Off)); + + slot.Save("file.sunvox"); } } diff --git a/LICENSE.md b/LICENSE.md index 06fb014..330a9c9 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,348 +1,21 @@ -# Copyright (c) 2023-2025 Sotakebk - -## Mozilla Public License Version 2.0 - -### 1. Definitions - -**1.1. "Contributor"** - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -**1.2. "Contributor Version"** - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -**1.3. "Contribution"** - means Covered Software of a particular Contributor. - -**1.4. "Covered Software"** - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -**1.5. "Incompatible With Secondary Licenses"** - means - -* **(a)** that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or -* **(b)** that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -**1.6. "Executable Form"** - means any form of the work other than Source Code Form. - -**1.7. "Larger Work"** - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -**1.8. "License"** - means this document. - -**1.9. "Licensable"** - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -**1.10. "Modifications"** - means any of the following: - -* **(a)** any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or -* **(b)** any new file in Source Code Form that contains any Covered - Software. - -**1.11. "Patent Claims" of a Contributor** - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -**1.12. "Secondary License"** - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -**1.13. "Source Code Form"** - means the form of the work preferred for making modifications. - -**1.14. "You" (or "Your")** - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means **(a)** the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or **(b)** ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -### 2. License Grants and Conditions - -#### 2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -* **(a)** under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and -* **(b)** under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -#### 2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -#### 2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -* **(a)** for any code that a Contributor has removed from Covered Software; - or -* **(b)** for infringements caused by: **(i)** Your and any other third party's - modifications of Covered Software, or **(ii)** the combination of its - Contributions with other software (except as part of its Contributor - Version); or -* **(c)** under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -#### 2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -#### 2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -#### 2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -#### 2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -### 3. Responsibilities - -#### 3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -#### 3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -* **(a)** such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -* **(b)** You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -#### 3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -#### 3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -#### 3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -### 4. Inability to Comply Due to Statute or Regulation - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: **(a)** comply with -the terms of this License to the maximum extent possible; and **(b)** -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -### 5. Termination - -**5.1.** The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated **(a)** provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and **(b)** on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -**5.2.** If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -### 6. Disclaimer of Warranty - -> Covered Software is provided under this License on an "as is" -> basis, without warranty of any kind, either expressed, implied, or -> statutory, including, without limitation, warranties that the -> Covered Software is free of defects, merchantable, fit for a -> particular purpose or non-infringing. The entire risk as to the -> quality and performance of the Covered Software is with You. -> Should any Covered Software prove defective in any respect, You -> (not any Contributor) assume the cost of any necessary servicing, -> repair, or correction. This disclaimer of warranty constitutes an -> essential part of this License. No use of any Covered Software is -> authorized under this License except under this disclaimer. - -### 7. Limitation of Liability - -> Under no circumstances and under no legal theory, whether tort -> (including negligence), contract, or otherwise, shall any -> Contributor, or anyone who distributes Covered Software as -> permitted above, be liable to You for any direct, indirect, -> special, incidental, or consequential damages of any character -> including, without limitation, damages for lost profits, loss of -> goodwill, work stoppage, computer failure or malfunction, or any -> and all other commercial damages or losses, even if such party -> shall have been informed of the possibility of such damages. This -> limitation of liability shall not apply to liability for death or -> personal injury resulting from such party's negligence to the -> extent applicable law prohibits such limitation. Some -> jurisdictions do not allow the exclusion or limitation of -> incidental or consequential damages, so this exclusion and -> limitation may not apply to You. - -### 8. Litigation - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -### 9. Miscellaneous - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -### 10. Versions of the License - -#### 10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -#### 10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -#### 10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -## Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -## Exhibit B - "Incompatible With Secondary Licenses" Notice - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. +SunSharp is distributed under the MIT license: + +Copyright (c) 2023-2026 Sotakebk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SunSharp.CodeGeneration/GeneratorDiscovery.cs b/SunSharp.CodeGeneration/GeneratorDiscovery.cs deleted file mode 100644 index 11bdf0a..0000000 --- a/SunSharp.CodeGeneration/GeneratorDiscovery.cs +++ /dev/null @@ -1,69 +0,0 @@ -using SunSharp.CodeGeneration.Generators; - -namespace SunSharp.CodeGeneration; - -public static class GeneratorDiscovery -{ - public static IReadOnlyList GetGenerators(string? nameFilter = null) - { - var assembly = typeof(GeneratorDiscovery).Assembly; - var query = assembly.GetTypes() - .Where(t => t.IsAssignableTo(typeof(BaseGenerator))) - .Where(t => !t.IsAbstract); - - if (!string.IsNullOrWhiteSpace(nameFilter)) - { - query = query.Where(t => t.Name.Contains(nameFilter, StringComparison.OrdinalIgnoreCase)); - } - - return query - .OrderBy(t => t.Name) - .Select(t => new DiscoveredGenerator(t)) - .ToArray(); - } -} - -public sealed class DiscoveredGenerator -{ - public Type GeneratorType { get; } - public string Name => GeneratorType.Name; - - internal DiscoveredGenerator(Type generatorType) - { - GeneratorType = generatorType; - } - - public async Task GenerateAsync(CancellationToken cancellationToken = default) - { - try - { - cancellationToken.ThrowIfCancellationRequested(); - var instance = (BaseGenerator?)Activator.CreateInstance(GeneratorType) - ?? throw new InvalidOperationException($"Could not create instance of '{GeneratorType}'."); - - var source = instance.Generate(); - var targetPath = instance.FilePath; - - string? originalFileContent = null; - if (File.Exists(targetPath)) - { - originalFileContent = await File.ReadAllTextAsync(targetPath, cancellationToken).ConfigureAwait(false); - } - - var sourceCodeIsTheSame = string.Equals(source, originalFileContent, StringComparison.Ordinal); - return sourceCodeIsTheSame - ? GeneratorResult.SuccessNoChanges(GeneratorType, targetPath) - : GeneratorResult.SuccessWithChanges(GeneratorType, targetPath, source); - } - catch (OperationCanceledException oce) - { - return GeneratorResult.Failure(GeneratorType, oce); - } - catch (Exception ex) - { - return GeneratorResult.Failure(GeneratorType, ex); - } - } - - public override string ToString() => Name; -} diff --git a/SunSharp.CodeGeneration/Program.cs b/SunSharp.CodeGeneration/Program.cs deleted file mode 100644 index 2d4d106..0000000 --- a/SunSharp.CodeGeneration/Program.cs +++ /dev/null @@ -1,78 +0,0 @@ -namespace SunSharp.CodeGeneration; - -internal sealed class Program -{ - private static readonly CancellationTokenSource Cts = new(); - - private static async Task Main() - { - Console.WriteLine("Starting code generation..."); - - Console.CancelKeyPress += (_, eventArgs) => - { - Console.WriteLine("Cancel event triggered"); - Cts.Cancel(); - eventArgs.Cancel = true; - }; - - var generators = GeneratorDiscovery.GetGenerators(); - if (generators.Count == 0) - { - Console.WriteLine("No generator types were found."); - return 0; - } - - Console.WriteLine($"Discovered {generators.Count} generator(s)."); - - // Run all generators - var resultTasks = generators.Select(g => g.GenerateAsync(Cts.Token)); - var results = await Task.WhenAll(resultTasks); - - var failures = results.Where(r => !r.Successful).ToList(); - if (failures.Count != 0) - { - Console.WriteLine("One or more generators failed:"); - foreach (var f in failures) - { - Console.WriteLine($"[FAIL] {f.GeneratorType.Name}"); - if (f.Exception is not null) PrintException(f.Exception); - } - return -1; - } - - var withChanges = results.Where(r => r.ChangesNecessary).ToList(); - var unchanged = results.Length - withChanges.Count; - - Console.WriteLine($"Generators completed. Changed: {withChanges.Count}, Unchanged: {unchanged}."); - - if (withChanges.Count == 0) - { - Console.WriteLine("No changes are necessary."); - return 0; - } - - await Parallel.ForEachAsync( - withChanges, - Cts.Token, - async (result, token) => - { - Console.WriteLine($"Applying changes to '{result.TargetPath}'..."); - await result.ApplyAsync(token); - }); - - Console.WriteLine("All done!"); - return 0; - } - - private static void PrintException(Exception ex) - { - var depth = 0; - for (var current = ex; current is not null; current = current.InnerException) - { - var prefix = depth == 0 ? " " : new string(' ', (depth + 1) * 3); - Console.WriteLine($"{prefix}{current.GetType().Name}: {current.Message}"); - if (current.StackTrace is not null) Console.WriteLine($"{prefix}{current.StackTrace}"); - depth++; - } - } -} diff --git a/SunSharp.IntegrationTests/AssemblyInfo.cs b/SunSharp.IntegrationTests/AssemblyInfo.cs index 3b8beb8..0f1c99d 100644 --- a/SunSharp.IntegrationTests/AssemblyInfo.cs +++ b/SunSharp.IntegrationTests/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; [assembly: Parallelizable(ParallelScope.None)] [assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs index 4e3d423..f1bcf56 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -1,4 +1,4 @@ -using SunSharp.Native; +using SunSharp.Native; using SunSharp.Redistribution; namespace SunSharp.IntegrationTests; diff --git a/SunSharp.IntegrationTests/GlobalUsings.cs b/SunSharp.IntegrationTests/GlobalUsings.cs index 2871e49..9f897f8 100644 --- a/SunSharp.IntegrationTests/GlobalUsings.cs +++ b/SunSharp.IntegrationTests/GlobalUsings.cs @@ -1,3 +1,3 @@ -global using System; +global using System; global using AwesomeAssertions; global using NUnit.Framework; diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index bb0b320..0b78743 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -1,11 +1,14 @@ - + - net8.0 - enable + net10.0 0.0.0.0 false true + enable + 9999 + Nullable + Debug;Release;Generation diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs index 747b5e6..a7383e4 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using SunSharp.Data; namespace SunSharp.IntegrationTests.SunVoxLibTests; diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index 571ef2e..af6e030 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -1,6 +1,7 @@ -using System; +using System; using System.IO; using System.Runtime.InteropServices; +using SunSharp.Diagnostics; using SunSharp.Native; using SunSharp.Native.Loader; @@ -95,9 +96,11 @@ public static ISunVoxLib GetLibraryInstance() lock (Lock) { if (!IsLoaded || _proxy == null) + { throw new InvalidOperationException("The library was not loaded yet."); + } - return _lib ??= new SunVoxLibNativeWrapper(_proxy); + return _lib ??= new SunVoxLibNativeWrapper(new SunVoxLibWithLogger(_proxy, new ConsoleLogger())); } } @@ -106,7 +109,10 @@ public static void Unload() lock (Lock) { if (!IsLoaded) + { throw new InvalidOperationException("The library was not loaded yet."); + } + _proxy?.Unload(); } } diff --git a/SunSharp.Redistribution/LibraryLoadingException.cs b/SunSharp.Redistribution/LibraryLoadingException.cs index bb5d24b..990dfd6 100644 --- a/SunSharp.Redistribution/LibraryLoadingException.cs +++ b/SunSharp.Redistribution/LibraryLoadingException.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SunSharp.Redistribution { diff --git a/SunSharp.Redistribution/README.md b/SunSharp.Redistribution/README.md index f0e640b..142b3d9 100644 --- a/SunSharp.Redistribution/README.md +++ b/SunSharp.Redistribution/README.md @@ -1,8 +1,10 @@ # SunSharp.Redistribution + *[SunVox](https://warmplace.ru/soft/sunvox/)* is a small, fast and powerful modular synthesizer with pattern-based sequencer (tracker). *SunVox Library* is the main part of the *SunVox* engine without a graphical interface. *SunSharp* is a wrapper and helper library for *SunVox Library*, written in C#. The library contains a thin wrapper, allowing for comfortably making calls with C#-style methods and objects, as well as an intuitive object-oriented wrapper, managing a few more things for the user. Additionally, additional abstractions and mechanisms are provided to help implement dynamic music in games and other software. Target SunVox version: 2.1b. This is an additional package, containing *SunVox* binaries. Supported platforms are: + * Windows x86, x86_64; * Linux x86, x86_64, arm64; * macOS x86_64, arm64. diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/SunSharp.Redistribution/SunSharp.Redistribution.csproj index b0bbfed..80d0ba5 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 @@ -21,6 +21,9 @@ True snupkg enable + 9999 + Nullable + Debug;Release;Generation @@ -32,18 +35,6 @@ - - 9999 - - $(WarningsAsErrors);NU1605;Nullable - - - - 9999 - - $(WarningsAsErrors);NU1605;Nullable - - diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/SunSharp.Redistribution/UnixLibraryHandler.cs index f155872..6d9f1b7 100644 --- a/SunSharp.Redistribution/UnixLibraryHandler.cs +++ b/SunSharp.Redistribution/UnixLibraryHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using SunSharp.Native.Loader; @@ -60,7 +60,9 @@ public void UnloadLibrary() public Delegate GetFunctionByName(string name, Type delegateType) { if (delegateType.IsAssignableFrom(typeof(Delegate))) + { throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); + } lock (_lock) { diff --git a/SunSharp.Redistribution/WindowsLibraryHandler.cs b/SunSharp.Redistribution/WindowsLibraryHandler.cs index 4e00d76..03c1c20 100644 --- a/SunSharp.Redistribution/WindowsLibraryHandler.cs +++ b/SunSharp.Redistribution/WindowsLibraryHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; using SunSharp.Native.Loader; @@ -22,7 +22,9 @@ public void LoadLibrary() lock (_lock) { if (IsLibraryLoaded) + { throw new LibraryLoadingException("SunVoxLib is already loaded."); + } var ptr = LoadLibrary(_path); if (ptr == IntPtr.Zero) @@ -41,7 +43,9 @@ public void UnloadLibrary() lock (_lock) { if (!IsLibraryLoaded) + { throw new LibraryLoadingException("SunVoxLib is not loaded."); + } var ptr = _ptr; _ptr = IntPtr.Zero; @@ -59,12 +63,16 @@ public void UnloadLibrary() public Delegate GetFunctionByName(string name, Type delegateType) { if (delegateType.IsAssignableFrom(typeof(Delegate))) + { throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); + } lock (_lock) { if (!IsLibraryLoaded) + { throw new LibraryLoadingException("SunVoxLib is not loaded."); + } var ptr = GetProcAddress(_ptr, name); if (ptr != IntPtr.Zero) diff --git a/SunSharp.Redistribution/license.txt b/SunSharp.Redistribution/license.txt index 06fb014..330a9c9 100644 --- a/SunSharp.Redistribution/license.txt +++ b/SunSharp.Redistribution/license.txt @@ -1,348 +1,21 @@ -# Copyright (c) 2023-2025 Sotakebk - -## Mozilla Public License Version 2.0 - -### 1. Definitions - -**1.1. "Contributor"** - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -**1.2. "Contributor Version"** - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -**1.3. "Contribution"** - means Covered Software of a particular Contributor. - -**1.4. "Covered Software"** - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -**1.5. "Incompatible With Secondary Licenses"** - means - -* **(a)** that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or -* **(b)** that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -**1.6. "Executable Form"** - means any form of the work other than Source Code Form. - -**1.7. "Larger Work"** - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -**1.8. "License"** - means this document. - -**1.9. "Licensable"** - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -**1.10. "Modifications"** - means any of the following: - -* **(a)** any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or -* **(b)** any new file in Source Code Form that contains any Covered - Software. - -**1.11. "Patent Claims" of a Contributor** - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -**1.12. "Secondary License"** - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -**1.13. "Source Code Form"** - means the form of the work preferred for making modifications. - -**1.14. "You" (or "Your")** - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means **(a)** the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or **(b)** ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -### 2. License Grants and Conditions - -#### 2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -* **(a)** under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and -* **(b)** under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -#### 2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -#### 2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -* **(a)** for any code that a Contributor has removed from Covered Software; - or -* **(b)** for infringements caused by: **(i)** Your and any other third party's - modifications of Covered Software, or **(ii)** the combination of its - Contributions with other software (except as part of its Contributor - Version); or -* **(c)** under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -#### 2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -#### 2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -#### 2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -#### 2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -### 3. Responsibilities - -#### 3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -#### 3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -* **(a)** such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -* **(b)** You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -#### 3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -#### 3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -#### 3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -### 4. Inability to Comply Due to Statute or Regulation - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: **(a)** comply with -the terms of this License to the maximum extent possible; and **(b)** -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -### 5. Termination - -**5.1.** The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated **(a)** provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and **(b)** on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -**5.2.** If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -### 6. Disclaimer of Warranty - -> Covered Software is provided under this License on an "as is" -> basis, without warranty of any kind, either expressed, implied, or -> statutory, including, without limitation, warranties that the -> Covered Software is free of defects, merchantable, fit for a -> particular purpose or non-infringing. The entire risk as to the -> quality and performance of the Covered Software is with You. -> Should any Covered Software prove defective in any respect, You -> (not any Contributor) assume the cost of any necessary servicing, -> repair, or correction. This disclaimer of warranty constitutes an -> essential part of this License. No use of any Covered Software is -> authorized under this License except under this disclaimer. - -### 7. Limitation of Liability - -> Under no circumstances and under no legal theory, whether tort -> (including negligence), contract, or otherwise, shall any -> Contributor, or anyone who distributes Covered Software as -> permitted above, be liable to You for any direct, indirect, -> special, incidental, or consequential damages of any character -> including, without limitation, damages for lost profits, loss of -> goodwill, work stoppage, computer failure or malfunction, or any -> and all other commercial damages or losses, even if such party -> shall have been informed of the possibility of such damages. This -> limitation of liability shall not apply to liability for death or -> personal injury resulting from such party's negligence to the -> extent applicable law prohibits such limitation. Some -> jurisdictions do not allow the exclusion or limitation of -> incidental or consequential damages, so this exclusion and -> limitation may not apply to You. - -### 8. Litigation - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -### 9. Miscellaneous - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -### 10. Versions of the License - -#### 10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -#### 10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -#### 10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -## Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -## Exhibit B - "Incompatible With Secondary Licenses" Notice - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. +SunSharp is distributed under the MIT license: + +Copyright (c) 2023-2026 Sotakebk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SunSharp.Tests/AssemblyInfo.cs b/SunSharp.Tests/AssemblyInfo.cs index b6f25e6..53bfe39 100644 --- a/SunSharp.Tests/AssemblyInfo.cs +++ b/SunSharp.Tests/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; [assembly: Parallelizable(ParallelScope.All)] [assembly: ExcludeFromCodeCoverage(Justification = "Test code assembly.")] diff --git a/SunSharp.Tests/Data/DataTests.cs b/SunSharp.Tests/Data/DataTests.cs index b801c61..1c38df6 100644 --- a/SunSharp.Tests/Data/DataTests.cs +++ b/SunSharp.Tests/Data/DataTests.cs @@ -1,4 +1,4 @@ -using SunSharp.Data; +using SunSharp.Data; namespace SunSharp.Tests.Data; diff --git a/SunSharp.Tests/Data/SongDataReaderTests.cs b/SunSharp.Tests/Data/SongDataReaderTests.cs index 4061f93..78feed3 100644 --- a/SunSharp.Tests/Data/SongDataReaderTests.cs +++ b/SunSharp.Tests/Data/SongDataReaderTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using SunSharp.Data; using SunSharp.Tests.Mocks; diff --git a/SunSharp.Tests/EffectExtensionsTests.cs b/SunSharp.Tests/EffectExtensionsTests.cs index 62b9e61..90fb2b3 100644 --- a/SunSharp.Tests/EffectExtensionsTests.cs +++ b/SunSharp.Tests/EffectExtensionsTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; namespace SunSharp.Tests; diff --git a/SunSharp.Tests/FineTunePairTests.cs b/SunSharp.Tests/FineTunePairTests.cs index 24afe1b..8c5b178 100644 --- a/SunSharp.Tests/FineTunePairTests.cs +++ b/SunSharp.Tests/FineTunePairTests.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class FineTunePairTests { @@ -7,7 +7,7 @@ public void FineTunePairFromPackedValueHasExpectedValues(short fineTuneValue, sh { var packedValue = Helper.PackTwoSignedShorts(fineTuneValue, relativeNoteValue); var fineTune = new FineTunePair(packedValue); - fineTune.Value.Should().Be(packedValue); + fineTune.RawValue.Should().Be(packedValue); fineTune.FineTune.Should().Be(fineTuneValue); fineTune.RelativeNote.Should().Be(relativeNoteValue); } diff --git a/SunSharp.Tests/GlobalUsings.cs b/SunSharp.Tests/GlobalUsings.cs index e813d38..223f1e9 100644 --- a/SunSharp.Tests/GlobalUsings.cs +++ b/SunSharp.Tests/GlobalUsings.cs @@ -1,4 +1,4 @@ -global using AutoFixture; +global using AutoFixture; global using AutoFixture.NUnit4; global using AwesomeAssertions; diff --git a/SunSharp.Tests/HelperTests.cs b/SunSharp.Tests/HelperTests.cs index a5b0a43..5aee251 100644 --- a/SunSharp.Tests/HelperTests.cs +++ b/SunSharp.Tests/HelperTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; namespace SunSharp.Tests; diff --git a/SunSharp.Tests/LibraryVersionTests.cs b/SunSharp.Tests/LibraryVersionTests.cs index 77f0b55..309c4b8 100644 --- a/SunSharp.Tests/LibraryVersionTests.cs +++ b/SunSharp.Tests/LibraryVersionTests.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class LibraryVersionTests { diff --git a/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs b/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs index ad0ae7a..f1fec54 100644 --- a/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs +++ b/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Tests.Mocks; +namespace SunSharp.Tests.Mocks; public static class ModuleFlagsHelper { diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs index c78c26d..f8e6999 100644 --- a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs +++ b/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using SunSharp.Data; using SunSharp.Native; diff --git a/SunSharp.Tests/ModuleFlagsTests.cs b/SunSharp.Tests/ModuleFlagsTests.cs index b280a52..29f7cea 100644 --- a/SunSharp.Tests/ModuleFlagsTests.cs +++ b/SunSharp.Tests/ModuleFlagsTests.cs @@ -1,4 +1,4 @@ -using static SunSharp.Tests.Mocks.ModuleFlagsHelper; +using static SunSharp.Tests.Mocks.ModuleFlagsHelper; namespace SunSharp.Tests; diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs index 9df1d2c..d9afe1e 100644 --- a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NSubstitute.ExceptionExtensions; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs index a7f18cc..313e06b 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; using SunSharp.Native; namespace SunSharp.Tests.Native; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index 5b283c9..e62afa5 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; using SunSharp.Native; namespace SunSharp.Tests.Native; @@ -381,7 +381,7 @@ public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue(FineTunePair { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_module_finetune(Arg.Any(), Arg.Any()).Returns(moduleFineTune.Value); + library.sv_get_module_finetune(Arg.Any(), Arg.Any()).Returns(moduleFineTune.RawValue); // when var receivedFineTune = wrapper.GetModuleFineTune(slotId, moduleId); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs index 9b78cbe..020f2c9 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; using SunSharp.Native; namespace SunSharp.Tests.Native; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index 024c784..c58f6de 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; using SunSharp.Native; diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs index 7beba5b..8867e28 100644 --- a/SunSharp.Tests/NoteTests.cs +++ b/SunSharp.Tests/NoteTests.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class NoteTests { @@ -12,7 +12,7 @@ public class NoteTests new(Note.Play, "P!"), new(Note.SetPitch, "SP"), new(Note.Stop, "S!"), - new(Note.Silence, "__"), + new(Note.Silence, " "), new(Note.CleanSynths, "CS"), new(Note.CleanModule, "CM"), new(new Note(255), "??") diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index c216b40..3efde74 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -1,16 +1,16 @@ -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class PatternEventTests { public static TestCaseData[] TestCases => [ - new(new PatternEvent(), "____________"), - new(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001______"), - new(new PatternEvent(0, 1), "__________0001"), - new(new PatternEvent(Effect.Arpeggio, 0x0704), "________080704"), + new(new PatternEvent(), " "), + new(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001 "), + new(new PatternEvent(0, 1), " 0001"), + new(new PatternEvent(Effect.Arpeggio, 0x0704), " 080704"), new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), - new(new PatternEvent(Note.Off), "--__________"), - new(new PatternEvent(Note.AllNotesOff), "-!__________") + new(new PatternEvent(Note.Off), "-- "), + new(new PatternEvent(Note.AllNotesOff), "-! ") ]; private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte velocity = 0, ushort module = 0, diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/SunSharp.Tests/SunSharp.Tests.csproj index 59b0958..1bd73c1 100644 --- a/SunSharp.Tests/SunSharp.Tests.csproj +++ b/SunSharp.Tests/SunSharp.Tests.csproj @@ -1,11 +1,13 @@ - + - net8.0 - enable - 0.0.0.0 + net10.0 false true + enable + 9999 + Nullable + Debug;Release;Generation diff --git a/SunSharp.Tests/SunVoxExceptionTests.cs b/SunSharp.Tests/SunVoxExceptionTests.cs index 2bd8129..06162cd 100644 --- a/SunSharp.Tests/SunVoxExceptionTests.cs +++ b/SunSharp.Tests/SunVoxExceptionTests.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Tests; +namespace SunSharp.Tests; public class SunVoxExceptionTests { @@ -11,8 +11,8 @@ public void ShouldHaveExpectedMessage() var exceptionFromUint = new SunVoxException(code, methodName); var exceptionWithNoMethod = new SunVoxException(-1); - exception.Message.Should().Be($"Error code: {code:X}, method: '{methodName}'."); - exceptionFromUint.Message.Should().Be($"Error code: {code:X}, method: '{methodName}'."); - exceptionWithNoMethod.Message.Should().Be($"Error code: {code:X}, method: 'unknown'."); + exception.Message.Should().Be($"Received error code {code:X} from method: {methodName}."); + exceptionFromUint.Message.Should().Be($"Received error code {code:X} from method: {methodName}."); + exceptionWithNoMethod.Message.Should().Be($"Received error code {code:X} from method: unknown."); } } diff --git a/SunSharp.sln b/SunSharp.sln index 0d80453..cbff481 100644 --- a/SunSharp.sln +++ b/SunSharp.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.3.32811.315 +# Visual Studio Version 18 +VisualStudioVersion = 18.1.11312.151 d18.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp", "SunSharp\SunSharp.csproj", "{E493B5CE-53F6-48F1-948B-B4A37686126F}" EndProject @@ -9,46 +9,61 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Redistribution", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.IntegrationTests", "SunSharp.IntegrationTests\SunSharp.IntegrationTests.csproj", "{5FB5B619-BA45-440D-BE64-EFB06C58C985}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration", "SunSharp.CodeGeneration\SunSharp.CodeGeneration.csproj", "{4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeGeneration", "CodeGeneration\CodeGeneration.csproj", "{4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Tests", "SunSharp.Tests\SunSharp.Tests.csproj", "{5074D4E5-D349-4061-8A5B-A8C1E1624AD8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunSharp.CodeGeneration.Tests", "SunSharp.CodeGeneration.Tests\SunSharp.CodeGeneration.Tests.csproj", "{141E1647-DA19-4B10-BED6-9CA8DA570D64}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeGeneration.Tests", "CodeGeneration.Tests\CodeGeneration.Tests.csproj", "{141E1647-DA19-4B10-BED6-9CA8DA570D64}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{19B23551-D241-425A-B92B-385F5222FC77}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Generation|Any CPU = Generation|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E493B5CE-53F6-48F1-948B-B4A37686126F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E493B5CE-53F6-48F1-948B-B4A37686126F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E493B5CE-53F6-48F1-948B-B4A37686126F}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {E493B5CE-53F6-48F1-948B-B4A37686126F}.Generation|Any CPU.Build.0 = Generation|Any CPU {E493B5CE-53F6-48F1-948B-B4A37686126F}.Release|Any CPU.ActiveCfg = Release|Any CPU {E493B5CE-53F6-48F1-948B-B4A37686126F}.Release|Any CPU.Build.0 = Release|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Generation|Any CPU.Build.0 = Generation|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {81E20175-47B1-4FFD-BC12-F85BBFF86E0C}.Release|Any CPU.Build.0 = Release|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Generation|Any CPU.Build.0 = Generation|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Release|Any CPU.ActiveCfg = Release|Any CPU {5FB5B619-BA45-440D-BE64-EFB06C58C985}.Release|Any CPU.Build.0 = Release|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Generation|Any CPU.Build.0 = Generation|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4CB4EA0B-C235-4F2B-8F90-A4A7C28F851D}.Release|Any CPU.Build.0 = Release|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Generation|Any CPU.Build.0 = Generation|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {5074D4E5-D349-4061-8A5B-A8C1E1624AD8}.Release|Any CPU.Build.0 = Release|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Generation|Any CPU.Build.0 = Generation|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.ActiveCfg = Release|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.Build.0 = Release|Any CPU {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Generation|Any CPU.ActiveCfg = Generation|Any CPU + {19B23551-D241-425A-B92B-385F5222FC77}.Generation|Any CPU.Build.0 = Generation|Any CPU {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.ActiveCfg = Release|Any CPU {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection diff --git a/SunSharp/Data/ControllerData.cs b/SunSharp/Data/ControllerData.cs index ee57482..643c05b 100644 --- a/SunSharp/Data/ControllerData.cs +++ b/SunSharp/Data/ControllerData.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Data +namespace SunSharp.Data { public class ControllerData : IDeepCopyable { diff --git a/SunSharp/Data/IDeepCopyable.cs b/SunSharp/Data/IDeepCopyable.cs index dec5eb8..e82df76 100644 --- a/SunSharp/Data/IDeepCopyable.cs +++ b/SunSharp/Data/IDeepCopyable.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Data +namespace SunSharp.Data { public interface IDeepCopyable { diff --git a/SunSharp/Data/ModuleData.cs b/SunSharp/Data/ModuleData.cs index 2bd4f61..b131f0d 100644 --- a/SunSharp/Data/ModuleData.cs +++ b/SunSharp/Data/ModuleData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; diff --git a/SunSharp/Data/PatternData.cs b/SunSharp/Data/PatternData.cs index 0522b15..af4bd78 100644 --- a/SunSharp/Data/PatternData.cs +++ b/SunSharp/Data/PatternData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; diff --git a/SunSharp/Data/SongData.cs b/SunSharp/Data/SongData.cs index 6efbcc1..094e233 100644 --- a/SunSharp/Data/SongData.cs +++ b/SunSharp/Data/SongData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; diff --git a/SunSharp/Data/SongDataReader.cs b/SunSharp/Data/SongDataReader.cs index 24be38a..09dc14b 100644 --- a/SunSharp/Data/SongDataReader.cs +++ b/SunSharp/Data/SongDataReader.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using SunSharp.Native; @@ -152,11 +152,12 @@ internal static PatternData ReadPattern(ISunVoxLib lib, int slotId, int patternI var isLinear = true; var hasDynamicTempo = false; - foreach (var patternEvent in data) + for (var i = 0; i < data.Length; i++) { - isDestructive = isDestructive || patternEvent.Effect.IsDestructive(); - isLinear = isLinear && !patternEvent.Effect.IsNonLinear(); - hasDynamicTempo = hasDynamicTempo || patternEvent.Effect.ChangesTempo(); + var e = data[i]; + isDestructive = isDestructive || e.Effect.IsDestructive(); + isLinear = isLinear && !e.Effect.IsNonLinear(); + hasDynamicTempo = hasDynamicTempo || e.Effect.ChangesTempo(); } return new PatternData diff --git a/SunSharp/Diagnostics/Logger.cs b/SunSharp/Diagnostics/Logger.cs new file mode 100644 index 0000000..47a2b84 --- /dev/null +++ b/SunSharp/Diagnostics/Logger.cs @@ -0,0 +1,29 @@ +using System; + +namespace SunSharp.Diagnostics +{ + /// + /// To be used for logging method calls and their parameters/results. Potentially useful for debugging interop issues. + /// Used in tandem with . + /// + public interface ILogger + { + void Log(string message, string methodName, string? parameters, string? result); + } + + /// + public class ConsoleLogger : ILogger + { + public void Log(string message, string methodName, string? parameters, string? result) + { + if (result == null) + { + Console.WriteLine($"[{DateTime.Now}] {message} | Method: {methodName} | Parameters: {parameters ?? ""}"); + } + else + { + Console.WriteLine($"[{DateTime.Now}] {message} | Method: {methodName} | Parameters: {parameters ?? ""} | Result: {result}"); + } + } + } +} diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.cs b/SunSharp/Diagnostics/SunVoxLibWithLogger.cs new file mode 100644 index 0000000..acd7914 --- /dev/null +++ b/SunSharp/Diagnostics/SunVoxLibWithLogger.cs @@ -0,0 +1,39 @@ +/* + * Do not modify this file manually. +*/ + +using System; +using System.Globalization; +using System.Runtime.CompilerServices; +using SunSharp.Native; + +namespace SunSharp.Diagnostics +{ + /// + /// Provides a wrapper for SunVox library operations that includes logging capabilities. + /// + /// + /// This class combines SunVox library functionality with an injected logger to record + /// operations and errors. Use this type when you need to track SunVox API usage or diagnose + /// issues through logging. All SunVox interactions performed via this wrapper will be logged + /// using the provided logger instance. + /// + public sealed partial class SunVoxLibWithLogger + { + private readonly ISunVoxLibC _lib; + private readonly ILogger _logger; + + public SunVoxLibWithLogger(ISunVoxLibC library, ILogger logger) + { + _lib = library ?? throw new ArgumentNullException(nameof(library)); + _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + } + + private void Log(string message, FormattableString? parameters, object? result, [CallerMemberName] string memberCallerName = "") + { + var p = parameters is null ? null : FormattableString.Invariant(parameters); + var r = result is null ? null : Convert.ToString(result, CultureInfo.InvariantCulture); + _logger.Log(message, memberCallerName, p, r); + } + } +} diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs b/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs new file mode 100644 index 0000000..d16bc11 --- /dev/null +++ b/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs @@ -0,0 +1,944 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +using System; +using SunSharp.Native; + +namespace SunSharp.Diagnostics +{ + public sealed partial class SunVoxLibWithLogger : ISunVoxLibC + { + int ISunVoxLibC.sv_audio_callback(IntPtr buf, int frames, int latency, uint out_time) + { + FormattableString? parameters = $"buf=0x{buf.ToString("X")}, frames={frames}, latency={latency}, out_time={out_time}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_audio_callback(buf, frames, latency, out_time); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_audio_callback2(IntPtr buf, int frames, int latency, uint out_time, int in_type, int in_channels, IntPtr in_buf) + { + FormattableString? parameters = $"buf=0x{buf.ToString("X")}, frames={frames}, latency={latency}, out_time={out_time}, in_type={in_type}, in_channels={in_channels}, in_buf=0x{in_buf.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_audio_callback2(buf, frames, latency, out_time, in_type, in_channels, in_buf); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_close_slot(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_close_slot(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_connect_module(int slot, int source, int destination) + { + FormattableString? parameters = $"slot={slot}, source={source}, destination={destination}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_connect_module(slot, source, destination); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_deinit() + { + FormattableString? parameters = null; + Log("Starting call.", parameters, null); + var result = _lib.sv_deinit(); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_disconnect_module(int slot, int source, int destination) + { + FormattableString? parameters = $"slot={slot}, source={source}, destination={destination}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_disconnect_module(slot, source, destination); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_end_of_song(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_end_of_song(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_find_module(int slot, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_find_module(slot, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_find_pattern(int slot, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_find_pattern(slot, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_autostop(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_autostop(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_current_line(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_current_line(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_current_line2(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_current_line2(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_current_signal_level(int slot, int channel) + { + FormattableString? parameters = $"slot={slot}, channel={channel}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_current_signal_level(slot, channel); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_log(int size) + { + FormattableString? parameters = $"size={size}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_log(size); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + int ISunVoxLibC.sv_get_module_color(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_color(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_group(int slot, int mod_num, int ctl_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_group(slot, mod_num, ctl_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_max(int slot, int mod_num, int ctl_num, int scaled) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}, scaled={scaled}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_max(slot, mod_num, ctl_num, scaled); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_min(int slot, int mod_num, int ctl_num, int scaled) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}, scaled={scaled}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_min(slot, mod_num, ctl_num, scaled); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_module_ctl_name(int slot, int mod_num, int ctl_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_name(slot, mod_num, ctl_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_offset(int slot, int mod_num, int ctl_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_offset(slot, mod_num, ctl_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_type(int slot, int mod_num, int ctl_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_type(slot, mod_num, ctl_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_module_ctl_value(int slot, int mod_num, int ctl_num, int scaled) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}, scaled={scaled}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_ctl_value(slot, mod_num, ctl_num, scaled); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_module_finetune(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_finetune(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_module_flags(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_flags(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_module_inputs(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_inputs(slot, mod_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_module_name(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_name(slot, mod_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_module_outputs(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_outputs(slot, mod_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + uint ISunVoxLibC.sv_get_module_scope2(int slot, int mod_num, int channel, IntPtr dest_buf, uint samples_to_read) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, channel={channel}, dest_buf=0x{dest_buf.ToString("X")}, samples_to_read={samples_to_read}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_scope2(slot, mod_num, channel, dest_buf, samples_to_read); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_module_type(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_type(slot, mod_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + uint ISunVoxLibC.sv_get_module_xy(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_module_xy(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_number_of_module_ctls(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_number_of_module_ctls(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_number_of_modules(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_number_of_modules(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_number_of_patterns(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_number_of_patterns(slot); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_pattern_data(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_data(slot, pat_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + int ISunVoxLibC.sv_get_pattern_event(int slot, int pat_num, int track, int line, int column) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, track={track}, line={line}, column={column}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_event(slot, pat_num, track, line, column); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_pattern_lines(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_lines(slot, pat_num); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_pattern_name(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_name(slot, pat_num); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + int ISunVoxLibC.sv_get_pattern_tracks(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_tracks(slot, pat_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_pattern_x(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_x(slot, pat_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_pattern_y(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_pattern_y(slot, pat_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_sample_rate() + { + FormattableString? parameters = null; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_sample_rate(); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_song_bpm(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_song_bpm(slot); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_song_length_frames(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_song_length_frames(slot); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_song_length_lines(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_song_length_lines(slot); + Log("Finished call.", parameters, result); + return result; + } + + + IntPtr ISunVoxLibC.sv_get_song_name(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_song_name(slot); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + + int ISunVoxLibC.sv_get_song_tpl(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_song_tpl(slot); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_ticks() + { + FormattableString? parameters = null; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_ticks(); + Log("Finished call.", parameters, result); + return result; + } + + + uint ISunVoxLibC.sv_get_ticks_per_second() + { + FormattableString? parameters = null; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_ticks_per_second(); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_get_time_map(int slot, int start_line, int len, IntPtr dest, int flags) + { + FormattableString? parameters = $"slot={slot}, start_line={start_line}, len={len}, dest=0x{dest.ToString("X")}, flags={flags}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_time_map(slot, start_line, len, dest, flags); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_init(IntPtr config, int freq, int channels, uint flags) + { + FormattableString? parameters = $"config=0x{config.ToString("X")}, freq={freq}, channels={channels}, flags={flags}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_init(config, freq, channels, flags); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_load(int slot, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_load(slot, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_load_from_memory(int slot, IntPtr data, uint data_size) + { + FormattableString? parameters = $"slot={slot}, data=0x{data.ToString("X")}, data_size={data_size}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_load_from_memory(slot, data, data_size); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_load_module(int slot, IntPtr file_name, int x, int y, int z) + { + FormattableString? parameters = $"slot={slot}, file_name=0x{file_name.ToString("X")}, x={x}, y={y}, z={z}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_load_module(slot, file_name, x, y, z); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_load_module_from_memory(int slot, IntPtr data, uint data_size, int x, int y, int z) + { + FormattableString? parameters = $"slot={slot}, data=0x{data.ToString("X")}, data_size={data_size}, x={x}, y={y}, z={z}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_load_module_from_memory(slot, data, data_size, x, y, z); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_lock_slot(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_lock_slot(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_metamodule_load(int slot, int mod_num, IntPtr file_name) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, file_name=0x{file_name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_metamodule_load(slot, mod_num, file_name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_metamodule_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, data=0x{data.ToString("X")}, data_size={data_size}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_metamodule_load_from_memory(slot, mod_num, data, data_size); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_module_curve(int slot, int mod_num, int curve_num, IntPtr data, int len, int w) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, curve_num={curve_num}, data=0x{data.ToString("X")}, len={len}, w={w}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_module_curve(slot, mod_num, curve_num, data, len, w); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_new_module(int slot, IntPtr type, IntPtr name, int x, int y, int z) + { + FormattableString? parameters = $"slot={slot}, type=0x{type.ToString("X")}, name=0x{name.ToString("X")}, x={x}, y={y}, z={z}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_new_module(slot, type, name, x, y, z); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_new_pattern(int slot, int clone, int x, int y, int tracks, int lines, int icon_seed, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, clone={clone}, x={x}, y={y}, tracks={tracks}, lines={lines}, icon_seed={icon_seed}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_new_pattern(slot, clone, x, y, tracks, lines, icon_seed, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_open_slot(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_open_slot(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_pattern_mute(int slot, int pat_num, int mute) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, mute={mute}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_pattern_mute(slot, pat_num, mute); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_pause(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_pause(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_play(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_play(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_play_from_beginning(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_play_from_beginning(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_remove_module(int slot, int mod_num) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_remove_module(slot, mod_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_remove_pattern(int slot, int pat_num) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_remove_pattern(slot, pat_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_resume(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_resume(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_rewind(int slot, int line_num) + { + FormattableString? parameters = $"slot={slot}, line_num={line_num}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_rewind(slot, line_num); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_sampler_load(int slot, int mod_num, IntPtr file_name, int sample_slot) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, file_name=0x{file_name.ToString("X")}, sample_slot={sample_slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_sampler_load(slot, mod_num, file_name, sample_slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size, int sample_slot) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, data=0x{data.ToString("X")}, data_size={data_size}, sample_slot={sample_slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_sampler_load_from_memory(slot, mod_num, data, data_size, sample_slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_save(int slot, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_save(slot, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) + { + FormattableString? parameters = $"slot={slot}, track_num={track_num}, note={note}, vel={vel}, module={module}, ctl={ctl}, ctl_val={ctl_val}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_send_event(slot, track_num, note, vel, module, ctl, ctl_val); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_autostop(int slot, int autostop) + { + FormattableString? parameters = $"slot={slot}, autostop={autostop}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_autostop(slot, autostop); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_event_t(int slot, int set, int t) + { + FormattableString? parameters = $"slot={slot}, set={set}, t={t}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_event_t(slot, set, t); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_color(int slot, int mod_num, int color) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, color={color}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_color(slot, mod_num, color); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_ctl_value(int slot, int mod_num, int ctl_num, int val, int scaled) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, ctl_num={ctl_num}, val={val}, scaled={scaled}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_ctl_value(slot, mod_num, ctl_num, val, scaled); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_finetune(int slot, int mod_num, int finetune) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, finetune={finetune}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_finetune(slot, mod_num, finetune); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_name(int slot, int mod_num, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_name(slot, mod_num, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_relnote(int slot, int mod_num, int relative_note) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, relative_note={relative_note}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_relnote(slot, mod_num, relative_note); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_module_xy(int slot, int mod_num, int x, int y) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, x={x}, y={y}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_module_xy(slot, mod_num, x, y); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_pattern_event(int slot, int pat_num, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, track={track}, line={line}, nn={nn}, vv={vv}, mm={mm}, ccee={ccee}, xxyy={xxyy}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_pattern_event(slot, pat_num, track, line, nn, vv, mm, ccee, xxyy); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_pattern_name(int slot, int pat_num, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_pattern_name(slot, pat_num, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_pattern_size(int slot, int pat_num, int tracks, int lines) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, tracks={tracks}, lines={lines}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_pattern_size(slot, pat_num, tracks, lines); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_pattern_xy(int slot, int pat_num, int x, int y) + { + FormattableString? parameters = $"slot={slot}, pat_num={pat_num}, x={x}, y={y}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_pattern_xy(slot, pat_num, x, y); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_set_song_name(int slot, IntPtr name) + { + FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_set_song_name(slot, name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_stop(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_stop(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_sync_resume(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_sync_resume(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_unlock_slot(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_unlock_slot(slot); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_update_input() + { + FormattableString? parameters = null; + Log("Starting call.", parameters, null); + var result = _lib.sv_update_input(); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_volume(int slot, int vol) + { + FormattableString? parameters = $"slot={slot}, vol={vol}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_volume(slot, vol); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_vplayer_load(int slot, int mod_num, IntPtr file_name) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, file_name=0x{file_name.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_vplayer_load(slot, mod_num, file_name); + Log("Finished call.", parameters, result); + return result; + } + + + int ISunVoxLibC.sv_vplayer_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, data=0x{data.ToString("X")}, data_size={data_size}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_vplayer_load_from_memory(slot, mod_num, data, data_size); + Log("Finished call.", parameters, result); + return result; + } + + } +} diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 743f2ed..681b1ff 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics.CodeAnalysis; namespace SunSharp diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTunePair.cs index f899dd9..39a24b5 100644 --- a/SunSharp/FineTunePair.cs +++ b/SunSharp/FineTunePair.cs @@ -1,32 +1,30 @@ -using System; +using System; +using System.Runtime.InteropServices; namespace SunSharp { [Serializable] + [StructLayout(LayoutKind.Explicit, Size = 4)] public struct FineTunePair : IEquatable { - public short FineTune { get; set; } - public short RelativeNote { get; set; } + [field: FieldOffset(0)] public uint RawValue { get; set; } + [field: FieldOffset(0)] public short FineTune { get; set; } + [field: FieldOffset(2)] public short RelativeNote { get; set; } - public readonly uint Value => Helper.PackTwoSignedShorts(FineTune, RelativeNote); - - public FineTunePair(short fineTune, short relativeNote) + public FineTunePair(uint rawValue) : this() { - FineTune = fineTune; - RelativeNote = relativeNote; + RawValue = rawValue; } - public FineTunePair(uint value) + public FineTunePair(short fineTune, short relativeNote) : this() { - (FineTune, RelativeNote) = Helper.UnpackTwoSignedShorts(value); + FineTune = fineTune; + RelativeNote = relativeNote; } - public readonly override bool Equals(object? obj) + public override readonly bool Equals(object? obj) { - if (obj is FineTunePair other) - return Equals(other); - - return false; + return obj is FineTunePair other && Equals(other); } public readonly bool Equals(FineTunePair other) @@ -34,12 +32,12 @@ public readonly bool Equals(FineTunePair other) return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public readonly override int GetHashCode() + public override readonly int GetHashCode() { return HashCode.Combine(FineTune, RelativeNote); } - public readonly override string ToString() + public override readonly string ToString() { return $"Fine-tune: {FineTune}, relative note: {RelativeNote}."; } diff --git a/SunSharp/Helper.cs b/SunSharp/Helper.cs index 04338d8..bedf28b 100644 --- a/SunSharp/Helper.cs +++ b/SunSharp/Helper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp @@ -8,7 +8,9 @@ public static class Helper public static short ToShortBitwise(uint value) { if ((value & 0x8000) == 0) + { return (short)value; + } var val = (int)value; return (short)(val - 0x10000); diff --git a/SunSharp/IModuleHandleWrapper.cs b/SunSharp/IModuleHandleWrapper.cs deleted file mode 100644 index 17cec2f..0000000 --- a/SunSharp/IModuleHandleWrapper.cs +++ /dev/null @@ -1,85 +0,0 @@ -namespace SunSharp -{ - public interface IModuleHandleWrapper - { - ModuleHandle ModuleHandle { get; } - } - - public static class ModuleHandleWrapperExtensions - { - /// - public static ModuleFlags GetFlags(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFlags(); - - /// - public static ModuleType GetModuleType(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetModuleType(); - - /// - public static bool GetExists(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetExists(); - - /// - public static FineTunePair GetFineTune(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetFineTune(); - - /// - public static void SetFinetune(this IModuleHandleWrapper wrapper, FineTunePair fineTune) => wrapper.ModuleHandle.SetFineTune(fineTune); - - /// - public static int ReadScope(this IModuleHandleWrapper wrapper, AudioChannel channel, short[] buffer) => wrapper.ModuleHandle.ReadScope(channel, buffer); - - /// - public static string? GetName(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetName(); - - /// - public static void SetName(this IModuleHandleWrapper wrapper, string name) => wrapper.ModuleHandle.SetName(name); - - /// - public static (int x, int y) GetPosition(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetPosition(); - - /// - public static void SetPosition(this IModuleHandleWrapper wrapper, int x, int y) => wrapper.ModuleHandle.SetPosition(x, y); - - /// - public static (byte R, byte G, byte B) GetColor(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetColor(); - - /// - public static void SetColor(this IModuleHandleWrapper wrapper, byte R, byte G, byte B) => wrapper.ModuleHandle.SetColor(R, G, B); - - /// - public static int[] GetInputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputs(); - - /// - public static ModuleHandle[] GetInputModules(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetInputModules(); - - /// - public static int[] GetOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetOutputs(); - - /// - public static ModuleHandle[] GetModuleOutputs(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetModuleOutputs(); - - /// - public static int GetControllerCount(this IModuleHandleWrapper wrapper) => wrapper.ModuleHandle.GetControllerCount(); - - /// - public static string? GetControllerName(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerName(controllerId); - - /// - public static int GetControllerValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed) => wrapper.ModuleHandle.GetControllerValue(controllerId, scaling); - - /// - public static void SetControllerValue(this IModuleHandleWrapper wrapper, int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed) => wrapper.ModuleHandle.SetControllerValue(controller, value, scaling); - - /// - public static int GetControllerMinValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling) => wrapper.ModuleHandle.GetControllerMinValue(controllerId, scaling); - - /// - public static int GetControllerMaxValue(this IModuleHandleWrapper wrapper, int controllerId, ValueScalingMode scaling) => wrapper.ModuleHandle.GetControllerMaxValue(controllerId, scaling); - - /// - public static int GetControllerOffset(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerOffset(controllerId); - - /// - public static ControllerType GetModuleControllerType(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerType(controllerId); - - /// - public static int GetModuleControllerGroup(this IModuleHandleWrapper wrapper, int controllerId) => wrapper.ModuleHandle.GetControllerGroup(controllerId); - } -} diff --git a/SunSharp/LibraryVersion.cs b/SunSharp/LibraryVersion.cs index c073df2..c1baf2c 100644 --- a/SunSharp/LibraryVersion.cs +++ b/SunSharp/LibraryVersion.cs @@ -1,4 +1,4 @@ -namespace SunSharp +namespace SunSharp { public readonly struct LibraryVersion { diff --git a/SunSharp/ModuleFlags.cs b/SunSharp/ModuleFlags.cs index 782db71..a127969 100644 --- a/SunSharp/ModuleFlags.cs +++ b/SunSharp/ModuleFlags.cs @@ -1,4 +1,4 @@ -namespace SunSharp +namespace SunSharp { public readonly struct ModuleFlags { diff --git a/SunSharp/ModuleType.Generated.cs b/SunSharp/ModuleType.Generated.cs deleted file mode 100644 index 46dcc76..0000000 --- a/SunSharp/ModuleType.Generated.cs +++ /dev/null @@ -1,157 +0,0 @@ -/* - * IMPORTANT! - * Do not modify this file manually. It was generated automatically by the CodeGeneration project. -*/ - -namespace SunSharp -{ - public enum ModuleType - { - ADSR = 128, - Amplifier = 64, - AnalogGenerator = 1, - Compressor = 65, - ControlToNote = 129, - DcBlocker = 66, - Delay = 67, - Distortion = 68, - DrumSynth = 2, - Echo = 69, - EQ = 70, - Feedback = 130, - FFT = 71, - Filter = 72, - FilterPro = 73, - Flanger = 74, - FM = 3, - FMX = 4, - Generator = 5, - Glide = 131, - GPIO = 132, - Input = 6, - Kicker = 7, - LFO = 75, - Loop = 76, - MetaModule = 133, - Modulator = 77, - MultiControl = 134, - MultiSynth = 135, - Output = -1, - PitchDetector = 137, - PitchShifter = 78, - PitchToControl = 136, - Reverb = 79, - Sampler = 9, - SoundToControl = 138, - SpectraVoice = 10, - VelocityToControl = 139, - Vibrato = 81, - VocalFilter = 80, - VorbisPlayer = 8, - WaveShaper = 82, - Unknown = 0, - } - - public static class ModuleTypeHelper - { - public static string InternalNameFromType(ModuleType type) - { - switch (type) - { - case ModuleType.ADSR: return "ADSR"; - case ModuleType.Amplifier: return "Amplifier"; - case ModuleType.AnalogGenerator: return "Analog generator"; - case ModuleType.Compressor: return "Compressor"; - case ModuleType.ControlToNote: return "Ctl2Note"; - case ModuleType.DcBlocker: return "DC Blocker"; - case ModuleType.Delay: return "Delay"; - case ModuleType.Distortion: return "Distortion"; - case ModuleType.DrumSynth: return "DrumSynth"; - case ModuleType.Echo: return "Echo"; - case ModuleType.EQ: return "EQ"; - case ModuleType.Feedback: return "Feedback"; - case ModuleType.FFT: return "FFT"; - case ModuleType.Filter: return "Filter"; - case ModuleType.FilterPro: return "Filter Pro"; - case ModuleType.Flanger: return "Flanger"; - case ModuleType.FM: return "FM"; - case ModuleType.FMX: return "FMX"; - case ModuleType.Generator: return "Generator"; - case ModuleType.Glide: return "Glide"; - case ModuleType.GPIO: return "GPIO"; - case ModuleType.Input: return "Input"; - case ModuleType.Kicker: return "Kicker"; - case ModuleType.LFO: return "LFO"; - case ModuleType.Loop: return "Loop"; - case ModuleType.MetaModule: return "MetaModule"; - case ModuleType.Modulator: return "Modulator"; - case ModuleType.MultiControl: return "MultiCtl"; - case ModuleType.MultiSynth: return "MultiSynth"; - case ModuleType.Output: return "Output"; - case ModuleType.PitchDetector: return "Pitch Detector"; - case ModuleType.PitchShifter: return "Pitch shifter"; - case ModuleType.PitchToControl: return "Pitch2Ctl"; - case ModuleType.Reverb: return "Reverb"; - case ModuleType.Sampler: return "Sampler"; - case ModuleType.SoundToControl: return "Sound2Ctl"; - case ModuleType.SpectraVoice: return "SpectraVoice"; - case ModuleType.VelocityToControl: return "Velocity2Ctl"; - case ModuleType.Vibrato: return "Vibrato"; - case ModuleType.VocalFilter: return "Vocal filter"; - case ModuleType.VorbisPlayer: return "Vorbis player"; - case ModuleType.WaveShaper: return "WaveShaper"; - default: return "unknown"; - } - } - - public static ModuleType TypeFromInternalName(string internalName) - { - switch (internalName) - { - case "ADSR": return ModuleType.ADSR; - case "Amplifier": return ModuleType.Amplifier; - case "Analog generator": return ModuleType.AnalogGenerator; - case "Compressor": return ModuleType.Compressor; - case "Ctl2Note": return ModuleType.ControlToNote; - case "DC Blocker": return ModuleType.DcBlocker; - case "Delay": return ModuleType.Delay; - case "Distortion": return ModuleType.Distortion; - case "DrumSynth": return ModuleType.DrumSynth; - case "Echo": return ModuleType.Echo; - case "EQ": return ModuleType.EQ; - case "Feedback": return ModuleType.Feedback; - case "FFT": return ModuleType.FFT; - case "Filter": return ModuleType.Filter; - case "Filter Pro": return ModuleType.FilterPro; - case "Flanger": return ModuleType.Flanger; - case "FM": return ModuleType.FM; - case "FMX": return ModuleType.FMX; - case "Generator": return ModuleType.Generator; - case "Glide": return ModuleType.Glide; - case "GPIO": return ModuleType.GPIO; - case "Input": return ModuleType.Input; - case "Kicker": return ModuleType.Kicker; - case "LFO": return ModuleType.LFO; - case "Loop": return ModuleType.Loop; - case "MetaModule": return ModuleType.MetaModule; - case "Modulator": return ModuleType.Modulator; - case "MultiCtl": return ModuleType.MultiControl; - case "MultiSynth": return ModuleType.MultiSynth; - case "Output": return ModuleType.Output; - case "Pitch Detector": return ModuleType.PitchDetector; - case "Pitch shifter": return ModuleType.PitchShifter; - case "Pitch2Ctl": return ModuleType.PitchToControl; - case "Reverb": return ModuleType.Reverb; - case "Sampler": return ModuleType.Sampler; - case "Sound2Ctl": return ModuleType.SoundToControl; - case "SpectraVoice": return ModuleType.SpectraVoice; - case "Velocity2Ctl": return ModuleType.VelocityToControl; - case "Vibrato": return ModuleType.Vibrato; - case "Vocal filter": return ModuleType.VocalFilter; - case "Vorbis player": return ModuleType.VorbisPlayer; - case "WaveShaper": return ModuleType.WaveShaper; - default: return ModuleType.Unknown; - } - } - } -} diff --git a/SunSharp/Modules/AdsrModuleHandle.g.cs b/SunSharp/Modules/AdsrModuleHandle.g.cs new file mode 100644 index 0000000..fff9371 --- /dev/null +++ b/SunSharp/Modules/AdsrModuleHandle.g.cs @@ -0,0 +1,300 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// ADSR envelope generator. The module can be started either by notes at the input (reacts to note ON/OFF), or by setting the 'State' controller to the 'start' value. + /// + public partial interface IAdsrModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 1 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 1 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 2 'Decay' + /// + int GetDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 2 'Decay' + /// + void SetDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 3 'Sustain level' + /// + int GetSustainLevel(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 3 'Sustain level' + /// + void SetSustainLevel(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 4 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 4 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Attack curve' + /// + AdsrCurveType GetAttackCurve(); + + /// + /// Original name: 5 'Attack curve' + /// + void SetAttackCurve(AdsrCurveType value); + + /// + /// Original name: 6 'Decay curve' + /// + AdsrCurveType GetDecayCurve(); + + /// + /// Original name: 6 'Decay curve' + /// + void SetDecayCurve(AdsrCurveType value); + + /// + /// Original name: 7 'Release curve' + /// + AdsrCurveType GetReleaseCurve(); + + /// + /// Original name: 7 'Release curve' + /// + void SetReleaseCurve(AdsrCurveType value); + + /// + /// Original name: 8 'Sustain' + /// + AdsrSustainMode GetSustain(); + + /// + /// Original name: 8 'Sustain' + /// + void SetSustain(AdsrSustainMode value); + + /// + /// Original name: 9 'Sustain pedal' + /// + Toggle GetSustainPedal(); + + /// + /// Original name: 9 'Sustain pedal' + /// + void SetSustainPedal(Toggle value); + + /// + /// Original name: 10 'State' + /// + Toggle GetState(); + + /// + /// Original name: 10 'State' + /// + void SetState(Toggle value); + + /// + /// Original name: 11 'On NoteON' + /// + AdsrOnNoteOnBehaviour GetOnNoteon(); + + /// + /// Original name: 11 'On NoteON' + /// + void SetOnNoteon(AdsrOnNoteOnBehaviour value); + + /// + /// Original name: 12 'On NoteOFF' + /// + AdsrOnNoteOffBehaviour GetOnNoteoff(); + + /// + /// Original name: 12 'On NoteOFF' + /// + void SetOnNoteoff(AdsrOnNoteOffBehaviour value); + + /// + /// Original name: 13 'Mode' + /// + AdsrMode GetMode(); + + /// + /// Original name: 13 'Mode' + /// + void SetMode(AdsrMode value); + + /// + /// Original name: 14 'Smooth transitions' + /// + AdsrSmoothTransitions GetSmoothTransitions(); + + /// + /// Original name: 14 'Smooth transitions' + /// + void SetSmoothTransitions(AdsrSmoothTransitions value); + } + + /// + public readonly partial struct AdsrModuleHandle : IAdsrModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public AdsrModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(AdsrModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Adsr; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Adsr; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetSustainLevel(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetSustainLevel(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public AdsrCurveType GetAttackCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetAttackCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrCurveType GetDecayCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetDecayCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrCurveType GetReleaseCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetReleaseCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrSustainMode GetSustain() => (AdsrSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetSustain(AdsrSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrOnNoteOnBehaviour GetOnNoteon() => (AdsrOnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetOnNoteon(AdsrOnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrOnNoteOffBehaviour GetOnNoteoff() => (AdsrOnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetOnNoteoff(AdsrOnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrMode GetMode() => (AdsrMode)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + public void SetMode(AdsrMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrSmoothTransitions GetSmoothTransitions() => (AdsrSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + public void SetSmoothTransitions(AdsrSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/AmplifierModuleHandle.g.cs b/SunSharp/Modules/AmplifierModuleHandle.g.cs new file mode 100644 index 0000000..2ef3084 --- /dev/null +++ b/SunSharp/Modules/AmplifierModuleHandle.g.cs @@ -0,0 +1,208 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Signal amplifier with various settings. + /// + public partial interface IAmplifierModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Balance' + /// + int GetBalance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Balance' + /// + void SetBalance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'DC Offset' + /// + int GetDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'DC Offset' + /// + void SetDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Inverse' + /// + Toggle GetInverse(); + + /// + /// Original name: 3 'Inverse' + /// + void SetInverse(Toggle value); + + /// + /// Value range: 0-256 + /// Original name: 4 'Stereo width' + /// + int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Stereo width' + /// + void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Absolute' + /// + Toggle GetAbsolute(); + + /// + /// Original name: 5 'Absolute' + /// + void SetAbsolute(Toggle value); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Fine volume' + /// + int GetFineVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Fine volume' + /// + void SetFineVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-5000 + /// Original name: 7 'Gain' + /// + int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-5000 + /// Original name: 7 'Gain' + /// + void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 8 'Bipolar DC Offset' + /// + int GetBipolarDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 8 'Bipolar DC Offset' + /// + void SetBipolarDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct AmplifierModuleHandle : IAmplifierModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public AmplifierModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(AmplifierModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Amplifier; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Amplifier; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetBalance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetBalance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFineVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetFineVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetBipolarDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetBipolarDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs b/SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs new file mode 100644 index 0000000..5c27a49 --- /dev/null +++ b/SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs @@ -0,0 +1,466 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Generator with 32 double alias-free oscillators, 12/24dB filters, envelopes, and smooth change of parameters. The sound quality of this module is better at a sample rate of 44100Hz. + /// + public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Waveform' + /// + AnalogGeneratorWaveform GetWaveform(); + + /// + /// Original name: 1 'Waveform' + /// + void SetWaveform(AnalogGeneratorWaveform value); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Sustain' + /// + Toggle GetSustain(); + + /// + /// Original name: 5 'Sustain' + /// + void SetSustain(Toggle value); + + /// + /// Original name: 6 'Exponential envelope' + /// + Toggle GetExponentialEnvelope(); + + /// + /// Original name: 6 'Exponential envelope' + /// + void SetExponentialEnvelope(Toggle value); + + /// + /// Value range: 0-1024 + /// Original name: 7 'Duty cycle' + /// + int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 7 'Duty cycle' + /// + void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Pitch deviation of the additional oscillator (off in the zero position). + /// One semitone = 64. + ///
+ /// Value range: displayed: -1000-1000, real: 0-2000 + /// Original name: 8 'Osc2' + ///
+ int GetSecondaryOscillatorPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Pitch deviation of the additional oscillator (off in the zero position). + /// One semitone = 64. + ///
+ /// Value range: displayed: -1000-1000, real: 0-2000 + /// Original name: 8 'Osc2' + ///
+ void SetSecondaryOscillatorPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 9 'Filter' + /// + AnalogGeneratorFilterType GetFilter(); + + /// + /// Original name: 9 'Filter' + /// + void SetFilter(AnalogGeneratorFilterType value); + + /// + /// Value range: 0-14000 + /// Original name: 10 'F.freq' + /// + int GetFilterFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-14000 + /// Original name: 10 'F.freq' + /// + void SetFilterFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1530 + /// Original name: 11 'F.resonance' + /// + int GetFilterResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1530 + /// Original name: 11 'F.resonance' + /// + void SetFilterResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 12 'F.exponential freq' + /// + Toggle GetFilterExponentialFrequency(); + + /// + /// Original name: 12 'F.exponential freq' + /// + void SetFilterExponentialFrequency(Toggle value); + + /// + /// Value range: 0-256 + /// Original name: 13 'F.attack' + /// + int GetFilterAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 13 'F.attack' + /// + void SetFilterAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 14 'F.release' + /// + int GetFilterRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 14 'F.release' + /// + void SetFilterRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 15 'F.envelope' + /// + AnalogGeneratorEnvelopeMode GetFilterEnvelope(); + + /// + /// Original name: 15 'F.envelope' + /// + void SetFilterEnvelope(AnalogGeneratorEnvelopeMode value); + + /// + /// Value range: 1-32 + /// Original name: 16 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32 + /// Original name: 16 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Quality mode of the module. + ///
+ /// Original name: 17 'Mode' + ///
+ Quality GetMode(); + + /// + /// Quality mode of the module. + ///
+ /// Original name: 17 'Mode' + ///
+ void SetMode(Quality value); + + /// + /// Amount of white noise added to the signal. + ///
+ /// Value range: 0-256 + /// Original name: 18 'Noise' + ///
+ int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Amount of white noise added to the signal. + ///
+ /// Value range: 0-256 + /// Original name: 18 'Noise' + ///
+ void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 19 'Osc2 volume' + /// + int GetSecondaryOscillatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 19 'Osc2 volume' + /// + void SetSecondaryOscillatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 20 'Osc2 mode' + /// + AnalogGeneratorSecondaryOscillatorMode GetSecondaryOscillatorMode(); + + /// + /// Original name: 20 'Osc2 mode' + /// + void SetSecondaryOscillatorMode(AnalogGeneratorSecondaryOscillatorMode value); + + /// + /// Value range: 0-32768 + /// Original name: 21 'Osc2 phase' + /// + int GetSecondaryOscillatorPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 21 'Osc2 phase' + /// + void SetSecondaryOscillatorPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. + ///
+ ///
Write to curve 0 of AnalogGenerator. + ///
The curve contains 32 values in range of -1 to 1. + ///
+ int WriteCurveSynth(float[] buffer); + + /// + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. + ///
+ ///
Read from curve 0 of AnalogGenerator. + ///
The curve contains 32 values in range of -1 to 1. + ///
+ int ReadCurveSynth(float[] buffer); + } + + /// + public readonly partial struct AnalogGeneratorModuleHandle : IAnalogGeneratorModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public AnalogGeneratorModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(AnalogGeneratorModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.AnalogGenerator; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.AnalogGenerator; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetSecondaryOscillatorPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetSecondaryOscillatorPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFilterFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetFilterFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public int GetFilterResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetFilterResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public Toggle GetFilterExponentialFrequency() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetFilterExponentialFrequency(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFilterAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetFilterAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public int GetFilterRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetFilterRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + + /// + public AnalogGeneratorEnvelopeMode GetFilterEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); + + /// + public void SetFilterEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(16, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(16, value, valueScalingMode); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingMode.Displayed); + + /// + public int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(18, valueScalingMode); + + /// + public void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(18, value, valueScalingMode); + + /// + public int GetSecondaryOscillatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(19, valueScalingMode); + + /// + public void SetSecondaryOscillatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(19, value, valueScalingMode); + + /// + public AnalogGeneratorSecondaryOscillatorMode GetSecondaryOscillatorMode() => (AnalogGeneratorSecondaryOscillatorMode)ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); + + /// + public void SetSecondaryOscillatorMode(AnalogGeneratorSecondaryOscillatorMode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSecondaryOscillatorPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(21, valueScalingMode); + + /// + public void SetSecondaryOscillatorPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(21, value, valueScalingMode); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + } +} +#endif diff --git a/SunSharp/Modules/CompressorModuleHandle.g.cs b/SunSharp/Modules/CompressorModuleHandle.g.cs new file mode 100644 index 0000000..e8a1bba --- /dev/null +++ b/SunSharp/Modules/CompressorModuleHandle.g.cs @@ -0,0 +1,174 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Side chain compressor + /// + public partial interface ICompressorModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Threshold' + /// + int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Threshold' + /// + void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 2 'Slope' + /// + int GetSlope(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 2 'Slope' + /// + void SetSlope(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-500 + /// Original name: 3 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-500 + /// Original name: 3 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-1000 + /// Original name: 4 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-1000 + /// Original name: 4 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Mode' + /// + CompressorMode GetMode(); + + /// + /// Original name: 5 'Mode' + /// + void SetMode(CompressorMode value); + + /// + /// Value range: 0-32 + /// Original name: 6 'Side-chain input' + /// + int GetSideChainInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32 + /// Original name: 6 'Side-chain input' + /// + void SetSideChainInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct CompressorModuleHandle : ICompressorModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public CompressorModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(CompressorModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Compressor; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Compressor; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetSlope(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetSlope(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSideChainInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetSideChainInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/ControlToNoteModuleHandle.g.cs b/SunSharp/Modules/ControlToNoteModuleHandle.g.cs new file mode 100644 index 0000000..6ea3962 --- /dev/null +++ b/SunSharp/Modules/ControlToNoteModuleHandle.g.cs @@ -0,0 +1,222 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Ctl2Note converts the value of the 'Pitch' controller to a note (Note ON/OFF commands at the output). + /// + public partial interface IControlToNoteModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-32768 + /// Original name: 0 'Pitch' + /// + int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 0 'Pitch' + /// + void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-120 + /// Original name: 1 'First note' + /// + int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-120 + /// Original name: 1 'First note' + /// + void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-120 + /// Original name: 2 'Range (number of semitones)' + /// + int GetRangeNumberOfSemitones(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-120 + /// Original name: 2 'Range (number of semitones)' + /// + void SetRangeNumberOfSemitones(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 3 'Transpose' + /// + int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 3 'Transpose' + /// + void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 4 'Finetune' + /// + int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 4 'Finetune' + /// + void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Velocity' + /// + int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Velocity' + /// + void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'State' + /// + Toggle GetState(); + + /// + /// Original name: 6 'State' + /// + void SetState(Toggle value); + + /// + /// Original name: 7 'NoteON' + /// + ControlToNoteOnBehaviour GetNoteon(); + + /// + /// Original name: 7 'NoteON' + /// + void SetNoteon(ControlToNoteOnBehaviour value); + + /// + /// Original name: 8 'NoteOFF' + /// + ControlToNoteOffBehaviour GetNoteoff(); + + /// + /// Original name: 8 'NoteOFF' + /// + void SetNoteoff(ControlToNoteOffBehaviour value); + + /// + /// Original name: 9 'Record notes' + /// + Toggle GetRecordNotes(); + + /// + /// Original name: 9 'Record notes' + /// + void SetRecordNotes(Toggle value); + } + + /// + public readonly partial struct ControlToNoteModuleHandle : IControlToNoteModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public ControlToNoteModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(ControlToNoteModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.ControlToNote; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.ControlToNote; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetRangeNumberOfSemitones(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetRangeNumberOfSemitones(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public ControlToNoteOnBehaviour GetNoteon() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetNoteon(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public ControlToNoteOffBehaviour GetNoteoff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetNoteoff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/ControllerSpecificEnums.cs b/SunSharp/Modules/ControllerSpecificEnums.cs new file mode 100644 index 0000000..b155d9a --- /dev/null +++ b/SunSharp/Modules/ControllerSpecificEnums.cs @@ -0,0 +1,966 @@ +namespace SunSharp.Modules +{ + /// + /// ADSR envelope curve types. + /// + public enum AdsrCurveType + { + Linear = 0, + Exp1 = 1, + Exp2 = 2, + Nexp1 = 3, + Nexp2 = 4, + Sin = 5, + Rect = 6, + SmoothRect = 7, + Bit2 = 8, + Bit3 = 9, + Bit4 = 10, + Bit5 = 11, + } + + /// + /// ADSR operation modes. + /// + public enum AdsrMode + { + /// + /// The envelope curve appears at the output of the module as an audio signal. Use Sound2Ctl + /// to convert this signal into control commands (controllers automation). + /// + Generator = 0, + + /// + /// The module works as a modulator: the amplitudes of the input signal and the envelope are + /// multiplied (mono). + /// + AmplitudeModulatorMono = 1, + + /// + /// The module works as a modulator: the amplitudes of the input signal and the envelope are + /// multiplied (stereo). + /// + AmplitudeModulatorStereo = 2, + } + + public enum AdsrOnNoteOffBehaviour + { + DoNothing = 0, + StopOnLastNote = 1, + Stop = 2, + } + + public enum AdsrOnNoteOnBehaviour + { + DoNothing = 0, + StartOnFirstNote = 1, + Start = 2, + } + + /// + /// ADSR smooth transition modes. + /// + public enum AdsrSmoothTransitions + { + Off = 0, + + /// + /// Soft (no clicks) restart of the envelope, smooth volume transitions. + /// + RestartAndVolumeChange = 1, + + /// + /// Same as RestartAndVolumeChange, but the envelope restart is even smoother. + /// + RestartAndVolumeChangeSmooth = 2, + + /// + /// The volume will change smoothly, but the envelope start is not smoothed. + /// + VolumeChange = 3, + } + + /// + /// ADSR sustain modes. + /// + public enum AdsrSustainMode + { + Off = 0, + + /// + /// Suspension point (until the Note OFF) on the envelope. + /// + On = 1, + + /// + /// Repeat the envelope until the module is stopped. + /// + Repeat = 2, + } + + public enum AnalogGeneratorEnvelopeMode + { + Off = 0, + SustainOff = 1, + SustainOn = 2, + } + + /// + /// Analog Generator filter types. + /// + public enum AnalogGeneratorFilterType + { + Off = 0, + LowPass12dB = 1, + HighPass12dB = 2, + BandPass12dB = 3, + BandRejection12dB = 4, + LowPass24dB = 5, + HighPass24dB = 6, + BandPass24dB = 7, + Bandrejection24dB = 8, + } + + /// + /// Analog Generator secondary oscillator mixing modes. + /// + public enum AnalogGeneratorSecondaryOscillatorMode + { + Add = 0, + Sub = 1, + Mul = 2, + Min = 3, + Max = 4, + + /// + /// Samples will be converted to 16-bit integers for bitwise operations. + /// + BitwiseAnd = 5, + + /// + /// Samples will be converted to 16-bit integers for bitwise operations. + /// + BitwiseXor = 6, + } + + public enum AnalogGeneratorWaveform + { + Triangle = 0, + Saw = 1, + Square = 2, + NoiseSampler = 3, + Drawn = 4, + Sin = 5, + Hsin = 6, + Asin = 7, + DrawnSpline = 8, + NoiseSamplerSpline = 9, + WhiteNoise = 10, + PinkNoise = 11, + RedNoise = 12, + BlueNoise = 13, + VioletNoise = 14, + GreyNoise = 15, + + /// + /// Hand-drawn harmonic distribution. Remember, if you turn on all 32 harmonics, then the + /// module's performance will slow down 32 times compared to a pure sine generator. + /// + Harmonics = 16, + } + + public enum Channels + { + Stereo = 0, + Mono = 1, + } + + public enum ChannelsInverted + { + Mono = 0, + Stereo = 1, + } + + /// + /// Compressor operation modes. + /// + public enum CompressorMode + { + Peak = 0, + + /// + /// Root Mean Square sensing mode. + /// + Rms = 1, + + /// + /// Peak sensing with zero latency for compression/limiting without delay. + /// + PeakZeroLatency = 2, + } + + public enum ControlToNoteOffBehaviour + { + Nothing = 0, + OnMinPitch = 1, + OnMaxPitch = 2, + } + + public enum ControlToNoteOnBehaviour + { + Nothing = 0, + OnPitchChange = 1, + } + + /// + /// Time unit for Delay module. + /// + public enum DelayUnit + { + /// + /// Seconds divided by 16384. + /// + SecondDividedBy16384 = 0, + + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + + /// + /// Seconds divided by 44100. + /// + SecondDividedBy44100 = 7, + + /// + /// Seconds divided by 48000. + /// + SecondDividedBy48000 = 8, + + /// + /// Delay length will depend on the sampling rate. + /// + Sample = 9, + } + + public enum DistortionType + { + Clipping = 0, + Foldback = 1, + Foldback2 = 2, + Foldback3 = 3, + Overflow = 4, + Overflow2 = 5, + SaturationFoldback = 6, + SaturationFoldbackSin = 7, + Saturation3 = 8, + Saturation4 = 9, + Saturation5 = 10, + } + + /// + /// Time unit for Echo module delay. + /// + public enum EchoDelayUnit + { + /// + /// Seconds divided by 256. + /// + SecondDividedBy256 = 0, + + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + /// + /// Echo filter types. + /// + public enum EchoFilter + { + Off = 0, + LowPass6dB = 1, + HighPass6dB = 2, + } + + /// + /// FFT buffer overlap settings. Less overlap = less CPU load; the more overlap, the softer the sound. + /// + public enum FftBufferOverlap + { + None = 0, + X2 = 1, + X4 = 2, + } + + /// + /// FFT buffer size. The larger the buffer, the more precisely the module works and the higher + /// the delay. + /// + public enum FftBufferSize + { + X64 = 0, + X128 = 1, + X256 = 2, + X512 = 3, + X1024 = 4, + X2048 = 5, + X4096 = 6, + X8192 = 7, + } + + /// + /// FFT sample rate. This value can be reduced if the CPU load is too high. + /// + public enum FftSampleRate + { + Hz8000 = 0, + Hz11025 = 1, + Hz16000 = 2, + Hz22050 = 3, + Hz32000 = 4, + Hz44100 = 5, + Hz48000 = 6, + Hz88200 = 7, + Hz96000 = 8, + Hz192000 = 9, + } + + public enum FilterLfoFrequencyUnit + { + /// + /// Hz divided by 20. (Hz * 0.02). + /// + HzDividedBy50 = 0, + + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum FilterLfoWaveform + { + Sin = 0, + Saw = 1, + Saw2 = 2, + Square = 3, + Random = 4, + } + + public enum FilterProMode + { + Stereo = 0, + Mono = 1, + + /// + /// Stereo processing with additional parameter smoothing. + /// + StereoSmoothing = 2, + + /// + /// Mono processing with additional parameter smoothing. + /// + MonoSmoothing = 3, + } + + /// + /// Filter Pro roll-off (dB per octave). Affects all types except peaking and low/high shelf. + /// + public enum FilterProRollOff + { + dB12 = 0, + dB24 = 1, + dB36 = 2, + dB48 = 3, + } + + /// + /// Filter Pro filter types. + /// + public enum FilterProType + { + LowPass = 0, + HighPass = 1, + BandPassConstantSkirtGain = 2, + BandPassConstantPeakGain = 3, + Notch = 4, + AllPass = 5, + + /// + /// Use the Gain controller to amplify or attenuate the peak at the specified frequency. + /// + Peaking = 6, + + /// + /// Use the Gain controller to amplify or attenuate the frequencies below the specified frequency. + /// + LowShelf = 7, + + /// + /// Use the Gain controller to amplify or attenuate the frequencies above the specified frequency. + /// + HighShelf = 8, + + LowPass6dB = 9, + HighPass6dB = 10, + } + + public enum FilterRollOff + { + dB12 = 0, + dB24 = 1, + dB36 = 2, + dB48 = 3, + } + + public enum FilterType + { + LowPass = 0, + HighPass = 1, + BandPass = 2, + Notch = 3, + } + + public enum FlangerLfoFrequencyUnit + { + /// + /// Hz divided by 20 (Hz * 0.05). + /// + HzDividedBy20 = 0, + + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + public enum FlangerLfoWaveform + { + Hsin = 0, + Sin = 1, + } + + public enum FmxCustomWaveform + { + Off = 0, + + /// + /// Store 20ms of the input signal in the custom waveform once. + /// + SingleCycle = 1, + + /// + /// Continuously store every 20ms of the incoming signal in the custom waveform. + /// + Continuous = 2, + } + + /// + /// FMX modulation types between operators. + /// + public enum FmxModulationType + { + Phase = 0, + Frequency = 1, + + /// + /// Multiplication. + /// + Amplitude = 2, + + Add = 3, + Sub = 4, + Min = 5, + Max = 6, + + /// + /// Samples will be converted to 16-bit integers for bitwise operations. + /// + And = 7, + + /// + /// Samples will be converted to 16-bit integers for bitwise operations. + /// + Xor = 8, + + /// + /// Phase modulation with envelope applied to self-modulation and feedback. + /// + PhasePlus = 9, + } + + /// + /// FMX sample rate. This value can be reduced if the CPU load is too high. + /// + public enum FmxSampleRate + { + Hz8000 = 0, + Hz11025 = 1, + Hz16000 = 2, + Hz22050 = 3, + Hz32000 = 4, + Hz44100 = 5, + + /// + /// Native sample rate from SunVox settings. + /// + Native = 6, + } + + public enum FmxWaveform + { + Custom = 0, + Triangle = 1, + Triangle3 = 2, + Saw = 3, + Saw3 = 4, + Square = 5, + Sin = 6, + Hsin = 7, + Asin = 8, + Sin3 = 9, + } + + public enum GeneratorWaveform + { + Triangle = 0, + Saw = 1, + Square = 2, + NoiseSampler = 3, + Drawn = 4, + Sin = 5, + Hsin = 6, + Asin = 7, + + /// + /// Pulse-sine with duty cycle. + /// + Rsin = 8, + } + + public enum KickerWaveform + { + Triangle = 0, + Square = 1, + Sin = 2, + } + + public enum LfoFrequencyUnit + { + /// + /// Hz divided by 64. + /// + HzDividedBy64 = 0, + + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + /// + /// LFO sine waveform quality settings. + /// + public enum LfoSineQuality + { + Auto = 0, + + /// + /// Wave table without interpolation. + /// + Low = 1, + + /// + /// Wave table with interpolation. + /// + Middle = 2, + + /// + /// Perfect sine. + /// + High = 3, + } + + public enum LfoSmoothTransitions + { + /// + /// Disable smooth transitions to get hard transitions inside the waveform. + /// + Off = 0, + + Waveform = 1, + } + + /// + /// LFO operation types. + /// + public enum LfoType + { + /// + /// Amplitude modulation (tremolo). + /// + Amplitude = 0, + + /// + /// Stereo balance modulation. + /// + Panning = 1, + } + + public enum LfoWaveform + { + Sin = 0, + Square = 1, + Sin2 = 2, + Saw = 3, + Saw2 = 4, + Random = 5, + Triangle = 6, + RandomInterpolated = 7, + } + + public enum LoopMode + { + Normal = 0, + PingPong = 1, + } + + public enum LoopOnNoteOn + { + /// + /// Restart with transition to zero iteration (record). + /// + Restart = 0, + + RestartCurrentIteration = 1, + } + + public enum LoopTimeUnit + { + /// + /// Line divided by 128. + /// + LineDivBy128 = 0, + + Line = 1, + HalfLine = 2, + OneThirdLine = 3, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 4, + + Millisecond = 5, + Hz = 6, + } + + /// + /// MetaModule pattern playback modes. + /// + public enum MetaModulePatternMode + { + Off = 0, + + /// + /// After receiving the first note, the MetaModule will start playing its internal project + /// in a loop; after receiving the last release of the note, the MetaModule will stop playing. + /// + OnRepeat = 1, + + /// + /// Same as OnRepeat mode, but the project is played only once. + /// + OnNoRepeat = 2, + + /// + /// Same as OnRepeat, but playback never stops. + /// + OnRepeatEndless = 3, + + /// + /// Same as OnNoRepeat, but playback never stops. + /// + OnNoRepeatEndless = 4, + } + + /// + /// Modulator modulation types. + /// + public enum ModulationType + { + Amplitude = 0, + + /// Default signal delay (when modulating inputs are silent) = 20ms; delay range: + /// 40ms (mod.amp >= 1) ... 20ms (mod.amp = 0) ... 0ms (mod.amp <= -1). + Phase = 1, + + /// Absolute amplitude values will be used. Default signal delay (when modulating + /// inputs are silent) = 0ms; delay range: 40ms (mod.amp >= 1) ... 0ms (mod.amp = 0) ... + /// 40ms (mod.amp <= -1). + PhaseAbsolute = 2, + } + + /// + /// Pitch Detector algorithm types. + /// + public enum PitchDetectorAlgorithm + { + /// + /// For basic periodic waveforms (sine, triangle, saw, square); the fastest with the lowest latency. + /// + FastZeroCrossing = 0, + + /// + /// For sounds with a complex spectrum. + /// + Autocorrelation = 1, + + /// + /// For sounds with a complex spectrum; compared to autocorrelation, it performs worse at + /// low frequencies and better at high frequencies. + /// + Cepstrum = 2, + } + + /// + /// Pitch Detector sampling rate for algorithms 1 and 2. A lower value will reduce the CPU load, + /// but also reduce the quality of detection. + /// + public enum PitchDetectorAlgSampleRate + { + Hz12000 = 0, + Hz24000 = 1, + Hz44100 = 2, + } + + /// + /// Pitch Detector buffer size for algorithms 1 and 2. Less buffer size = less latency; larger + /// buffer size = better detection quality. + /// + public enum PitchDetectorBufferSize + { + Ms5 = 0, + Ms10 = 1, + Ms21 = 2, + Ms42 = 3, + Ms85 = 4, + } + + /// + /// Pitch Shifter bypass modes when pitch is zero. + /// + public enum PitchShifterBypassMode + { + Off = 0, + SlowTransition = 1, + FastTransition = 2, + } + + /// + /// Pitch2Ctl conversion modes. + /// + public enum PitchToControlMode + { + /// + /// Use frequency (in Hz) of the incoming notes. + /// + FrequencyHz = 0, + + /// + /// Use linear pitch (first note ... first note + number of semitones) of the incoming notes. + /// + Pitch = 1, + } + + public enum PitchToControlOnNoteOff + { + DoNothing = 0, + + /// + /// Pitch down to the OUT min. + /// + PitchDown = 1, + + /// + /// Pitch up to the OUT max. + /// + PitchUp = 2, + } + + /// + /// Quality modes for various modules. + /// + public enum Quality + { + HighStereo = 0, + HighMono = 1, + LowStereo = 2, + LowMono = 3, + } + + public enum SamplerEnvelopeInterpolation + { + Off = 0, + Linear = 1, + } + + public enum SamplerInterpolation + { + Off = 0, + Linear = 1, + Spline = 2, + } + + public enum SoundToControlMode + { + LowQuality = 0, + HighQuality = 1, + } + + public enum SpectraVoiceHarmonicType + { + Hsin = 0, + Rect = 1, + Org1 = 2, + Org2 = 3, + Org3 = 4, + Org4 = 5, + Sin = 6, + Random = 7, + Triangle1 = 8, + Triangle2 = 9, + Overtones1 = 10, + Overtones2 = 11, + Overtones3 = 12, + Overtones4 = 13, + Overtones1Plus = 14, + Overtones2Plus = 15, + Overtones3Plus = 16, + Overtones4Plus = 17, + + /// + /// Random seed is set by H.width. + /// + Metal = 18, + } + + public enum SpectraVoiceMode + { + HighQuality = 0, + HighQualityMono = 1, + LowQuality = 2, + LowQualityMono = 3, + HighQualitySpline = 4, + } + + /// + /// SpectraVoice spectrum resolution (number of samples). + /// + public enum SpectraVoiceResolution + { + Size4096 = 0, + Size8192 = 1, + Size16384 = 2, + Size32768 = 3, + Size65536 = 4, + Size131072 = 5, + } + + public enum Toggle + { + Off = 0, + On = 1, + } + + public enum ToggleInverse + { + On = 0, + Off = 1, + } + + public enum VelocityToControlOnNoteOff + { + DoNothing = 0, + VelocityDown = 1, + VelocityUp = 2, + } + + public enum VibratoFrequencyUnit + { + /// + /// Hz divided by 64. + /// + HzDividedBy64 = 0, + Millisecond = 1, + Hz = 2, + + /// + /// Smallest time interval in SunVox. + /// + Tick = 3, + Line = 4, + HalfLine = 5, + OneThirdLine = 6, + } + + /// + /// Vocal Filter voice types representing different vocal tract characteristics. + /// + public enum VocalFilterVoiceType + { + Soprano = 0, + Alto = 1, + Tenor = 2, + Bass = 3, + } + + /// + /// Vocal Filter vowel types for formant simulation. + /// + public enum VocalFilterVowel + { + A = 0, + E = 1, + I = 2, + O = 3, + U = 4, + } +} diff --git a/SunSharp/Modules/DcBlockerModuleHandle.g.cs b/SunSharp/Modules/DcBlockerModuleHandle.g.cs new file mode 100644 index 0000000..92e8a22 --- /dev/null +++ b/SunSharp/Modules/DcBlockerModuleHandle.g.cs @@ -0,0 +1,66 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// DC blocking filter. + /// + public partial interface IDcBlockerModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 0 'Channels' + /// + void SetChannels(Channels value); + } + + /// + public readonly partial struct DcBlockerModuleHandle : IDcBlockerModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public DcBlockerModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(DcBlockerModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.DcBlocker; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.DcBlocker; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/DelayModuleHandle.g.cs b/SunSharp/Modules/DelayModuleHandle.g.cs new file mode 100644 index 0000000..cf3eaf3 --- /dev/null +++ b/SunSharp/Modules/DelayModuleHandle.g.cs @@ -0,0 +1,242 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module delays the sound and the incoming events (note, pitch, phase, velocity). Max delay length = 1 min. + /// + public partial interface IDelayModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Dry' + /// + int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Dry' + /// + void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Wet' + /// + int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Wet' + /// + void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Delay L' + /// + int GetDelayL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Delay L' + /// + void SetDelayL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Delay R' + /// + int GetDelayR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Delay R' + /// + void SetDelayR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Volume L' + /// + int GetVolumeL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Volume L' + /// + void SetVolumeL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Volume R' + /// + int GetVolumeR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Volume R' + /// + void SetVolumeR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 6 'Channels' + /// + void SetChannels(Channels value); + + /// + /// Original name: 7 'Inverse' + /// + Toggle GetInverse(); + + /// + /// Original name: 7 'Inverse' + /// + void SetInverse(Toggle value); + + /// + /// Original name: 8 'Delay unit' + /// + DelayUnit GetDelayUnit(); + + /// + /// Original name: 8 'Delay unit' + /// + void SetDelayUnit(DelayUnit value); + + /// + /// Value range: 1-15 + /// Original name: 9 'Delay multiplier' + /// + int GetDelayMultiplier(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-15 + /// Original name: 9 'Delay multiplier' + /// + void SetDelayMultiplier(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct DelayModuleHandle : IDelayModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public DelayModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(DelayModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Delay; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Delay; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetDelayL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetDelayL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetDelayR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetDelayR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetVolumeL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetVolumeL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetVolumeR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetVolumeR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public int GetDelayMultiplier(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetDelayMultiplier(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/DistortionModuleHandle.g.cs b/SunSharp/Modules/DistortionModuleHandle.g.cs new file mode 100644 index 0000000..5f47bca --- /dev/null +++ b/SunSharp/Modules/DistortionModuleHandle.g.cs @@ -0,0 +1,156 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module adds various types of distortion to the sound. + /// + public partial interface IDistortionModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Type' + /// + DistortionType GetDistortionType(); + + /// + /// Original name: 1 'Type' + /// + void SetDistortionType(DistortionType value); + + /// + /// Value range: 0-256 + /// Original name: 2 'Power' + /// + int GetPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Power' + /// + void SetPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 3 'Bit depth' + /// + int GetBitDepth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 3 'Bit depth' + /// + void SetBitDepth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-44100 + /// Original name: 4 'Freq' + /// + int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-44100 + /// Original name: 4 'Freq' + /// + void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Noise' + /// + int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Noise' + /// + void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct DistortionModuleHandle : IDistortionModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public DistortionModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(DistortionModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Distortion; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Distortion; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetBitDepth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetBitDepth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/DrumSynthModuleHandle.g.cs b/SunSharp/Modules/DrumSynthModuleHandle.g.cs new file mode 100644 index 0000000..a945368 --- /dev/null +++ b/SunSharp/Modules/DrumSynthModuleHandle.g.cs @@ -0,0 +1,320 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Drum synthesizer with variety of predefined sounds. The sound quality of this module is better at a sample rate of 44100Hz. + /// + public partial interface IDrumSynthModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-8 + /// Original name: 2 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-8 + /// Original name: 2 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Bass volume' + /// + int GetBassVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Bass volume' + /// + void SetBassVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Bass power' + /// + int GetBassPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Bass power' + /// + void SetBassPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Bass tone' + /// + int GetBassTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Bass tone' + /// + void SetBassTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 6 'Bass length' + /// + int GetBassLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 6 'Bass length' + /// + void SetBassLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 7 'Hihat volume' + /// + int GetHihatVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 7 'Hihat volume' + /// + void SetHihatVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'Hihat length' + /// + int GetHihatLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'Hihat length' + /// + void SetHihatLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 9 'Snare volume' + /// + int GetSnareVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 9 'Snare volume' + /// + void SetSnareVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 10 'Snare tone' + /// + int GetSnareTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 10 'Snare tone' + /// + void SetSnareTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 11 'Snare length' + /// + int GetSnareLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 11 'Snare length' + /// + void SetSnareLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 12 'Bass panning' + /// + int GetBassPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 12 'Bass panning' + /// + void SetBassPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 13 'Hihat panning' + /// + int GetHihatPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 13 'Hihat panning' + /// + void SetHihatPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 14 'Snare panning' + /// + int GetSnarePanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 14 'Snare panning' + /// + void SetSnarePanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct DrumSynthModuleHandle : IDrumSynthModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public DrumSynthModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(DrumSynthModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.DrumSynth; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.DrumSynth; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetBassVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetBassVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetBassPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetBassPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetBassTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetBassTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetBassLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetBassLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetHihatVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetHihatVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetHihatLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetHihatLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetSnareVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetSnareVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetSnareTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetSnareTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public int GetSnareLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetSnareLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public int GetBassPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); + + /// + public void SetBassPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + + /// + public int GetHihatPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetHihatPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public int GetSnarePanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetSnarePanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/EchoModuleHandle.g.cs b/SunSharp/Modules/EchoModuleHandle.g.cs new file mode 100644 index 0000000..19a6c38 --- /dev/null +++ b/SunSharp/Modules/EchoModuleHandle.g.cs @@ -0,0 +1,210 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Stereo echo. Maximum delay length: 4 seconds. + /// + public partial interface IEchoModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Delay' + /// + int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Delay' + /// + void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 4 'Right channel offset' + /// + Toggle GetRightChannelOffset(); + + /// + /// Original name: 4 'Right channel offset' + /// + void SetRightChannelOffset(Toggle value); + + /// + /// Original name: 5 'Delay unit' + /// + EchoDelayUnit GetDelayUnit(); + + /// + /// Original name: 5 'Delay unit' + /// + void SetDelayUnit(EchoDelayUnit value); + + /// + /// Expressed as Delay/32768. + ///
+ /// Value range: 0-32768 + /// Original name: 6 'Right channel offset' + ///
+ int GetRightChannelOffsetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Expressed as Delay/32768. + ///
+ /// Value range: 0-32768 + /// Original name: 6 'Right channel offset' + ///
+ void SetRightChannelOffsetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 7 'Filter' + /// + EchoFilter GetFilter(); + + /// + /// Original name: 7 'Filter' + /// + void SetFilter(EchoFilter value); + + /// + /// Value range: 0-22000 + /// Original name: 8 'F.freq' + /// + int GetFFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-22000 + /// Original name: 8 'F.freq' + /// + void SetFFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct EchoModuleHandle : IEchoModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public EchoModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(EchoModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Echo; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Echo; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetRightChannelOffsetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetRightChannelOffsetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetFFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/EqModuleHandle.g.cs b/SunSharp/Modules/EqModuleHandle.g.cs new file mode 100644 index 0000000..23749be --- /dev/null +++ b/SunSharp/Modules/EqModuleHandle.g.cs @@ -0,0 +1,120 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// 3Band equalizer. + /// + public partial interface IEqModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Low' + /// + int GetLow(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Low' + /// + void SetLow(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Middle' + /// + int GetMiddle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 1 'Middle' + /// + void SetMiddle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'High' + /// + int GetHigh(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'High' + /// + void SetHigh(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 3 'Channels' + /// + void SetChannels(Channels value); + } + + /// + public readonly partial struct EqModuleHandle : IEqModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public EqModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(EqModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Eq; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Eq; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetLow(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetLow(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetMiddle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetMiddle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetHigh(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetHigh(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FeedbackModuleHandle.g.cs b/SunSharp/Modules/FeedbackModuleHandle.g.cs new file mode 100644 index 0000000..19637f5 --- /dev/null +++ b/SunSharp/Modules/FeedbackModuleHandle.g.cs @@ -0,0 +1,84 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Generally the feedback is not allowed in SunVox: you can't create an endless loop between the modules. But you can do it by placing two Feedback modules inside of the loop. + /// + public partial interface IFeedbackModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-10000 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 1 'Channels' + /// + void SetChannels(Channels value); + } + + /// + public readonly partial struct FeedbackModuleHandle : IFeedbackModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FeedbackModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FeedbackModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Feedback; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Feedback; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FftModuleHandle.g.cs b/SunSharp/Modules/FftModuleHandle.g.cs new file mode 100644 index 0000000..f55e813 --- /dev/null +++ b/SunSharp/Modules/FftModuleHandle.g.cs @@ -0,0 +1,348 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// FFT-based frequency transformator. + /// + public partial interface IFftModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'Sample rate' + /// + FftSampleRate GetSampleRate(); + + /// + /// Original name: 0 'Sample rate' + /// + void SetSampleRate(FftSampleRate value); + + /// + /// Original name: 1 'Channels' + /// + ChannelsInverted GetChannels(); + + /// + /// Original name: 1 'Channels' + /// + void SetChannels(ChannelsInverted value); + + /// + /// Original name: 2 'Buffer (samples)' + /// + FftBufferSize GetBufferSamples(); + + /// + /// Original name: 2 'Buffer (samples)' + /// + void SetBufferSamples(FftBufferSize value); + + /// + /// Original name: 3 'Buf overlap' + /// + FftBufferOverlap GetBufOverlap(); + + /// + /// Original name: 3 'Buf overlap' + /// + void SetBufOverlap(FftBufferOverlap value); + + /// + /// Value range: 0-32768 + /// Original name: 4 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 4 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'Noise reduction' + /// + int GetNoiseReduction(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'Noise reduction' + /// + void SetNoiseReduction(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Phase gain (norm=16384)' + /// + int GetPhaseGainNorm16384(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Phase gain (norm=16384)' + /// + void SetPhaseGainNorm16384(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 7 'All-pass filter' + /// + int GetAllPassFilter(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 7 'All-pass filter' + /// + void SetAllPassFilter(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Frequency spread' + /// + int GetFrequencySpread(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Frequency spread' + /// + void SetFrequencySpread(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Random phase' + /// + int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Random phase' + /// + void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Random phase (lite)' + /// + int GetRandomPhaseLite(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Random phase (lite)' + /// + void SetRandomPhaseLite(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -4096-4096, real: 0-8192 + /// Original name: 11 'Freq shift' + /// + int GetFreqShift(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -4096-4096, real: 0-8192 + /// Original name: 11 'Freq shift' + /// + void SetFreqShift(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 12 'Deform1' + /// + int GetDeform1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 12 'Deform1' + /// + void SetDeform1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 13 'Deform2' + /// + int GetDeform2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 13 'Deform2' + /// + void SetDeform2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 14 'HP cutoff' + /// + int GetHpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 14 'HP cutoff' + /// + void SetHpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 15 'LP cutoff' + /// + int GetLpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 15 'LP cutoff' + /// + void SetLpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 16 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 16 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct FftModuleHandle : IFftModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FftModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FftModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Fft; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Fft; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public FftSampleRate GetSampleRate() => (FftSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetSampleRate(FftSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public FftBufferSize GetBufferSamples() => (FftBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetBufferSamples(FftBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public FftBufferOverlap GetBufOverlap() => (FftBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetBufOverlap(FftBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetNoiseReduction(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetNoiseReduction(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetPhaseGainNorm16384(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetPhaseGainNorm16384(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetAllPassFilter(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetAllPassFilter(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetFrequencySpread(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetFrequencySpread(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetRandomPhaseLite(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetRandomPhaseLite(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public int GetFreqShift(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetFreqShift(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public int GetDeform1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); + + /// + public void SetDeform1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + + /// + public int GetDeform2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetDeform2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public int GetHpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetHpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + + /// + public int GetLpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); + + /// + public void SetLpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(16, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(16, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/FilterModuleHandle.g.cs b/SunSharp/Modules/FilterModuleHandle.g.cs new file mode 100644 index 0000000..91c9cfb --- /dev/null +++ b/SunSharp/Modules/FilterModuleHandle.g.cs @@ -0,0 +1,308 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// IIR Filter that can remove some unwanted frequency ranges. + /// + public partial interface IFilterModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-14000 + /// Original name: 1 'Freq' + /// + int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-14000 + /// Original name: 1 'Freq' + /// + void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1530 + /// Original name: 2 'Resonance' + /// + int GetResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1530 + /// Original name: 2 'Resonance' + /// + void SetResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Type' + /// + FilterType GetFilterType(); + + /// + /// Original name: 3 'Type' + /// + void SetFilterType(FilterType value); + + /// + /// Value range: 0-256 + /// Original name: 4 'Response' + /// + int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Response' + /// + void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Mode' + /// + Quality GetMode(); + + /// + /// Original name: 5 'Mode' + /// + void SetMode(Quality value); + + /// + /// Value range: 0-14000 + /// Original name: 6 'Impulse' + /// + int GetImpulse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-14000 + /// Original name: 6 'Impulse' + /// + void SetImpulse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 7 'Mix' + /// + int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 7 'Mix' + /// + void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 8 'LFO freq' + /// + int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 8 'LFO freq' + /// + void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 9 'LFO amp' + /// + int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 9 'LFO amp' + /// + void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 10 'Set LFO phase' + /// + int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 10 'Set LFO phase' + /// + void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 11 'Exponential freq' + /// + Toggle GetExponentialFreq(); + + /// + /// Original name: 11 'Exponential freq' + /// + void SetExponentialFreq(Toggle value); + + /// + /// Original name: 12 'Roll-off' + /// + FilterRollOff GetRollOff(); + + /// + /// Original name: 12 'Roll-off' + /// + void SetRollOff(FilterRollOff value); + + /// + /// Original name: 13 'LFO freq unit' + /// + FilterLfoFrequencyUnit GetLfoFreqUnit(); + + /// + /// Original name: 13 'LFO freq unit' + /// + void SetLfoFreqUnit(FilterLfoFrequencyUnit value); + + /// + /// Original name: 14 'LFO waveform' + /// + FilterLfoWaveform GetLfoWaveform(); + + /// + /// Original name: 14 'LFO waveform' + /// + void SetLfoWaveform(FilterLfoWaveform value); + } + + /// + public readonly partial struct FilterModuleHandle : IFilterModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FilterModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FilterModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Filter; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Filter; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetImpulse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetImpulse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public FilterLfoFrequencyUnit GetLfoFreqUnit() => (FilterLfoFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + public void SetLfoFreqUnit(FilterLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + /// + public FilterLfoWaveform GetLfoWaveform() => (FilterLfoWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + public void SetLfoWaveform(FilterLfoWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FilterProModuleHandle.g.cs b/SunSharp/Modules/FilterProModuleHandle.g.cs new file mode 100644 index 0000000..a5ca57b --- /dev/null +++ b/SunSharp/Modules/FilterProModuleHandle.g.cs @@ -0,0 +1,344 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// High-quality 64-bit IIR Filter that can amplify, pass or attenuate some frequency ranges. This module is faster than Filter on modern CPUs and slower on older CPUs. + /// + public partial interface IFilterProModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Type' + /// + FilterProType GetFilterType(); + + /// + /// Original name: 1 'Type' + /// + void SetFilterType(FilterProType value); + + /// + /// Value range: 0-22000 + /// Original name: 2 'Freq' + /// + int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-22000 + /// Original name: 2 'Freq' + /// + void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -1000-1000, real: 0-2000 + /// Original name: 3 'Freq finetune' + /// + int GetFreqFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -1000-1000, real: 0-2000 + /// Original name: 3 'Freq finetune' + /// + void SetFreqFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 4 'Freq scale' + /// + int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 4 'Freq scale' + /// + void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Exponential freq' + /// + Toggle GetExponentialFreq(); + + /// + /// Original name: 5 'Exponential freq' + /// + void SetExponentialFreq(Toggle value); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Q' + /// + int GetQ(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Q' + /// + void SetQ(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 7 'Gain' + /// + int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 7 'Gain' + /// + void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 8 'Roll-off' + /// + FilterProRollOff GetRollOff(); + + /// + /// Original name: 8 'Roll-off' + /// + void SetRollOff(FilterProRollOff value); + + /// + /// Value range: 0-1000 + /// Original name: 9 'Response' + /// + int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1000 + /// Original name: 9 'Response' + /// + void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 10 'Mode' + /// + FilterProMode GetMode(); + + /// + /// Original name: 10 'Mode' + /// + void SetMode(FilterProMode value); + + /// + /// Value range: 0-32768 + /// Original name: 11 'Mix' + /// + int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 11 'Mix' + /// + void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 12 'LFO freq' + /// + int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 12 'LFO freq' + /// + void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 13 'LFO amp' + /// + int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 13 'LFO amp' + /// + void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 14 'LFO waveform' + /// + FilterLfoWaveform GetLfoWaveform(); + + /// + /// Original name: 14 'LFO waveform' + /// + void SetLfoWaveform(FilterLfoWaveform value); + + /// + /// Value range: 0-256 + /// Original name: 15 'Set LFO phase' + /// + int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 15 'Set LFO phase' + /// + void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 16 'LFO freq unit' + /// + FilterLfoFrequencyUnit GetLfoFreqUnit(); + + /// + /// Original name: 16 'LFO freq unit' + /// + void SetLfoFreqUnit(FilterLfoFrequencyUnit value); + } + + /// + public readonly partial struct FilterProModuleHandle : IFilterProModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FilterProModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FilterProModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.FilterPro; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.FilterPro; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetFreqFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetFreqFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetQ(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetQ(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); + + /// + public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + + /// + public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public FilterLfoWaveform GetLfoWaveform() => (FilterLfoWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); + + /// + public void SetLfoWaveform(FilterLfoWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); + + /// + public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + + /// + public FilterLfoFrequencyUnit GetLfoFreqUnit() => (FilterLfoFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + public void SetLfoFreqUnit(FilterLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FlangerModuleHandle.g.cs b/SunSharp/Modules/FlangerModuleHandle.g.cs new file mode 100644 index 0000000..be22d64 --- /dev/null +++ b/SunSharp/Modules/FlangerModuleHandle.g.cs @@ -0,0 +1,226 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Flanger effect. + /// + public partial interface IFlangerModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 8-1000 + /// Original name: 3 'Delay' + /// + int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 8-1000 + /// Original name: 3 'Delay' + /// + void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Response' + /// + int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Response' + /// + void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 5 'LFO freq' + /// + int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 5 'LFO freq' + /// + void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 6 'LFO amp' + /// + int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 6 'LFO amp' + /// + void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 7 'LFO waveform' + /// + FlangerLfoWaveform GetLfoWaveform(); + + /// + /// Original name: 7 'LFO waveform' + /// + void SetLfoWaveform(FlangerLfoWaveform value); + + /// + /// Value range: 0-256 + /// Original name: 8 'Set LFO phase' + /// + int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'Set LFO phase' + /// + void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 9 'LFO freq unit' + /// + FlangerLfoFrequencyUnit GetLfoFreqUnit(); + + /// + /// Original name: 9 'LFO freq unit' + /// + void SetLfoFreqUnit(FlangerLfoFrequencyUnit value); + } + + /// + public readonly partial struct FlangerModuleHandle : IFlangerModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FlangerModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FlangerModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Flanger; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Flanger; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public FlangerLfoWaveform GetLfoWaveform() => (FlangerLfoWaveform)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetLfoWaveform(FlangerLfoWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public FlangerLfoFrequencyUnit GetLfoFreqUnit() => (FlangerLfoFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetLfoFreqUnit(FlangerLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FmModuleHandle.g.cs b/SunSharp/Modules/FmModuleHandle.g.cs new file mode 100644 index 0000000..62ad434 --- /dev/null +++ b/SunSharp/Modules/FmModuleHandle.g.cs @@ -0,0 +1,354 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Frequency Modulation (FM) Synthesizer. Each voice of polyphony includes two operators with ADSR envelopes: 1) C (carrier) - base sine wave generator; 2) M (modulator) - sine wave that changes the frequency of the first operator. The sound quality of this module is better at a sample rate of 44100Hz. + /// + public partial interface IFmModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'C.Volume' + /// + int GetCarrierVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'C.Volume' + /// + void SetCarrierVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'M.Volume' + /// + int GetModulatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'M.Volume' + /// + void SetModulatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-16 + /// Original name: 3 'C.Freq ratio' + /// + int GetCarrierFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-16 + /// Original name: 3 'C.Freq ratio' + /// + void SetCarrierFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-16 + /// Original name: 4 'M.Freq ratio' + /// + int GetModulatorFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-16 + /// Original name: 4 'M.Freq ratio' + /// + void SetModulatorFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'M.Self-modulation' + /// + int GetModulatorSelfModulation(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'M.Self-modulation' + /// + void SetModulatorSelfModulation(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 6 'C.Attack' + /// + int GetCarrierAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 6 'C.Attack' + /// + void SetCarrierAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 7 'C.Decay' + /// + int GetCarrierDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 7 'C.Decay' + /// + void SetCarrierDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'C.Sustain' + /// + int GetCarrierSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'C.Sustain' + /// + void SetCarrierSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 9 'C.Release' + /// + int GetCarrierRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 9 'C.Release' + /// + void SetCarrierRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 10 'M.Attack' + /// + int GetModulatorAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 10 'M.Attack' + /// + void SetModulatorAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 11 'M.Decay' + /// + int GetModulatorDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 11 'M.Decay' + /// + void SetModulatorDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 12 'M.Sustain' + /// + int GetModulatorSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 12 'M.Sustain' + /// + void SetModulatorSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 13 'M.Release' + /// + int GetModulatorRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 13 'M.Release' + /// + void SetModulatorRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4 + /// Original name: 14 'M.Scaling per key' + /// + int GetModulatorScalingPerKey(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4 + /// Original name: 14 'M.Scaling per key' + /// + void SetModulatorScalingPerKey(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 15 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 15 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 16 'Mode' + /// + Quality GetMode(); + + /// + /// Original name: 16 'Mode' + /// + void SetMode(Quality value); + } + + /// + public readonly partial struct FmModuleHandle : IFmModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FmModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FmModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Fm; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Fm; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetCarrierVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetCarrierVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetModulatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetModulatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetCarrierFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetCarrierFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetModulatorFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetModulatorFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetModulatorSelfModulation(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetModulatorSelfModulation(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetCarrierAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetCarrierAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetCarrierDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetCarrierDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetCarrierSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetCarrierSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetCarrierRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetCarrierRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetModulatorAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetModulatorAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public int GetModulatorDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetModulatorDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public int GetModulatorSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); + + /// + public void SetModulatorSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + + /// + public int GetModulatorRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetModulatorRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public int GetModulatorScalingPerKey(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetModulatorScalingPerKey(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/FmxModuleHandle.g.cs b/SunSharp/Modules/FmxModuleHandle.g.cs new file mode 100644 index 0000000..0622139 --- /dev/null +++ b/SunSharp/Modules/FmxModuleHandle.g.cs @@ -0,0 +1,316 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// 5-operator Frequency Modulation (FM) Synthesizer. + /// + public partial interface IFmxModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 2 'Sample rate' + /// + FmxSampleRate GetSampleRate(); + + /// + /// Original name: 2 'Sample rate' + /// + void SetSampleRate(FmxSampleRate value); + + /// + /// Value range: 1-32 + /// Original name: 3 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32 + /// Original name: 3 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 4 'Channels' + /// + ChannelsInverted GetChannels(); + + /// + /// Original name: 4 'Channels' + /// + void SetChannels(ChannelsInverted value); + + /// + /// Value range: 0-5 + /// Original name: 5 'Input -> Operator #' + /// + int GetInputOperator(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-5 + /// Original name: 5 'Input -> Operator #' + /// + void SetInputOperator(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Input -> Custom waveform' + /// + FmxCustomWaveform GetInputCustomWaveform(); + + /// + /// Original name: 6 'Input -> Custom waveform' + /// + void SetInputCustomWaveform(FmxCustomWaveform value); + + /// + /// Original name: 7 'ADSR smooth transitions' + /// + AdsrSmoothTransitions GetAdsrSmoothTransitions(); + + /// + /// Original name: 7 'ADSR smooth transitions' + /// + void SetAdsrSmoothTransitions(AdsrSmoothTransitions value); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Noise filter (32768 - OFF)' + /// + int GetNoiseFilterOff32768(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Noise filter (32768 - OFF)' + /// + void SetNoiseFilterOff32768(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-31 + /// Original name: 114 '1 Output mode' + /// + int GetOutputMode1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-31 + /// Original name: 114 '1 Output mode' + /// + void SetOutputMode1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-15 + /// Original name: 115 '2 Output mode' + /// + int GetOutputMode2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-15 + /// Original name: 115 '2 Output mode' + /// + void SetOutputMode2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-7 + /// Original name: 116 '3 Output mode' + /// + int GetOutputMode3(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-7 + /// Original name: 116 '3 Output mode' + /// + void SetOutputMode3(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-3 + /// Original name: 117 '4 Output mode' + /// + int GetOutputMode4(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-3 + /// Original name: 117 '4 Output mode' + /// + void SetOutputMode4(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-8000 + /// Original name: 118 'Envelope gain' + /// + int GetEnvelopeGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-8000 + /// Original name: 118 'Envelope gain' + /// + void SetEnvelopeGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Used as a waveform where 'Custom' waveform type was applied. + ///
+ ///
Write to curve 0 of Fmx. + ///
The curve contains 256 values in range of -1 to 1. + ///
+ int WriteCurveCustomWaveform(float[] buffer); + + /// + /// Used as a waveform where 'Custom' waveform type was applied. + ///
+ ///
Read from curve 0 of Fmx. + ///
The curve contains 256 values in range of -1 to 1. + ///
+ int ReadCurveCustomWaveform(float[] buffer); + } + + /// + public readonly partial struct FmxModuleHandle : IFmxModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FmxModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FmxModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Fmx; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Fmx; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public FmxSampleRate GetSampleRate() => (FmxSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetSampleRate(FmxSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public int GetInputOperator(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetInputOperator(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public FmxCustomWaveform GetInputCustomWaveform() => (FmxCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetInputCustomWaveform(FmxCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public AdsrSmoothTransitions GetAdsrSmoothTransitions() => (AdsrSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetAdsrSmoothTransitions(AdsrSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetNoiseFilterOff32768(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetNoiseFilterOff32768(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetOutputMode1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(114, valueScalingMode); + + /// + public void SetOutputMode1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(114, value, valueScalingMode); + + /// + public int GetOutputMode2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(115, valueScalingMode); + + /// + public void SetOutputMode2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(115, value, valueScalingMode); + + /// + public int GetOutputMode3(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(116, valueScalingMode); + + /// + public void SetOutputMode3(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(116, value, valueScalingMode); + + /// + public int GetOutputMode4(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(117, valueScalingMode); + + /// + public void SetOutputMode4(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(117, value, valueScalingMode); + + /// + public int GetEnvelopeGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(118, valueScalingMode); + + /// + public void SetEnvelopeGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(118, value, valueScalingMode); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + } +} +#endif diff --git a/SunSharp/Modules/GeneratorModuleHandle.g.cs b/SunSharp/Modules/GeneratorModuleHandle.g.cs new file mode 100644 index 0000000..d1ecf9e --- /dev/null +++ b/SunSharp/Modules/GeneratorModuleHandle.g.cs @@ -0,0 +1,246 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Basic generator of different types of periodic signal waveforms with the volume envelope. This module can receive the incoming signal and use it for the frequency modulation. + /// + public partial interface IGeneratorModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Waveform' + /// + GeneratorWaveform GetWaveform(); + + /// + /// Original name: 1 'Waveform' + /// + void SetWaveform(GeneratorWaveform value); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 4 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 4 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 5 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-16 + /// Original name: 5 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Mode' + /// + Channels GetMode(); + + /// + /// Original name: 6 'Mode' + /// + void SetMode(Channels value); + + /// + /// Original name: 7 'Sustain' + /// + Toggle GetSustain(); + + /// + /// Original name: 7 'Sustain' + /// + void SetSustain(Toggle value); + + /// + /// Value range: 0-256 + /// Original name: 8 'Freq.modulation by input' + /// + int GetFreqModulationByInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'Freq.modulation by input' + /// + void SetFreqModulationByInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1022 + /// Original name: 9 'Duty cycle' + /// + int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1022 + /// Original name: 9 'Duty cycle' + /// + void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. + ///
+ ///
Write to curve 0 of Generator. + ///
The curve contains 32 values in range of -1 to 1. + ///
+ int WriteCurveSynth(float[] buffer); + + /// + /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. + ///
+ ///
Read from curve 0 of Generator. + ///
The curve contains 32 values in range of -1 to 1. + ///
+ int ReadCurveSynth(float[] buffer); + } + + /// + public readonly partial struct GeneratorModuleHandle : IGeneratorModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public GeneratorModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(GeneratorModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Generator; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Generator; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFreqModulationByInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetFreqModulationByInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + } +} +#endif diff --git a/SunSharp/Modules/GlideModuleHandle.g.cs b/SunSharp/Modules/GlideModuleHandle.g.cs new file mode 100644 index 0000000..a08cc1d --- /dev/null +++ b/SunSharp/Modules/GlideModuleHandle.g.cs @@ -0,0 +1,170 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Glide is similar to the MultiSynth (which sends the input events to the connected output modules), but it also adds the commands of smooth transition between the notes. + /// + public partial interface IGlideModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-1000 + /// Original name: 0 'Response' + /// + int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1000 + /// Original name: 0 'Response' + /// + void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32768 + /// Original name: 1 'Sample rate' + /// + int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32768 + /// Original name: 1 'Sample rate' + /// + void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 2 'Reset on 1st note' + /// + Toggle GetResetOnStNote1(); + + /// + /// Original name: 2 'Reset on 1st note' + /// + void SetResetOnStNote1(Toggle value); + + /// + /// Original name: 3 'Polyphony' + /// + Toggle GetPolyphony(); + + /// + /// Original name: 3 'Polyphony' + /// + void SetPolyphony(Toggle value); + + /// + /// Value range: displayed: -600-600, real: 0-1200 + /// Original name: 4 'Pitch' + /// + int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -600-600, real: 0-1200 + /// Original name: 4 'Pitch' + /// + void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 5 'Pitch scale' + /// + int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 5 'Pitch scale' + /// + void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Reset' + /// + Toggle GetReset(); + + /// + /// Original name: 6 'Reset' + /// + void SetReset(Toggle value); + } + + /// + public readonly partial struct GlideModuleHandle : IGlideModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public GlideModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(GlideModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Glide; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Glide; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public Toggle GetResetOnStNote1() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetResetOnStNote1(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/GpioModuleHandle.g.cs b/SunSharp/Modules/GpioModuleHandle.g.cs new file mode 100644 index 0000000..5146073 --- /dev/null +++ b/SunSharp/Modules/GpioModuleHandle.g.cs @@ -0,0 +1,172 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// With this module you can use the General-Purpose Input/Output (GPIO) pins of the device board. For example, you can send some signals to the LEDs, or receive the ON/OFF (1/0) messages from the buttons. + /// + public partial interface IGpioModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'Out' + /// + Toggle GetOut(); + + /// + /// Original name: 0 'Out' + /// + void SetOut(Toggle value); + + /// + /// Value range: 0-256 + /// Original name: 1 'Out pin' + /// + int GetOutPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Out pin' + /// + void SetOutPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 2 'Out threshold' + /// + int GetOutThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 2 'Out threshold' + /// + void SetOutThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'In' + /// + Toggle GetIn(); + + /// + /// Original name: 3 'In' + /// + void SetIn(Toggle value); + + /// + /// Value range: 0-256 + /// Original name: 4 'In pin' + /// + int GetInPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'In pin' + /// + void SetInPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-128 + /// Original name: 5 'In note' + /// + int GetInNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-128 + /// Original name: 5 'In note' + /// + void SetInNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 6 'In amplitude' + /// + int GetInAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 6 'In amplitude' + /// + void SetInAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct GpioModuleHandle : IGpioModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public GpioModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(GpioModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Gpio; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Gpio; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public int GetOutPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetOutPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetOutThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetOutThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetInPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetInPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetInNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetInNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetInAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetInAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/IncorrectSynthHandleTypeException.cs b/SunSharp/Modules/IncorrectSynthHandleTypeException.cs new file mode 100644 index 0000000..065bb2e --- /dev/null +++ b/SunSharp/Modules/IncorrectSynthHandleTypeException.cs @@ -0,0 +1,24 @@ +using System; + +namespace SunSharp.Modules +{ + public class IncorrectSynthHandleTypeException : Exception + { + public IncorrectSynthHandleTypeException() : base() + { + } + + public IncorrectSynthHandleTypeException(string message) : base(message) + { + } + + public IncorrectSynthHandleTypeException(string message, Exception innerException) : base(message, innerException) + { + } + + public IncorrectSynthHandleTypeException(SynthModuleType expected, SynthModuleType? actual) + : base($"Expected underlying module type to be {expected}, but was {actual?.ToString() ?? "null"}.") + { + } + } +} diff --git a/SunSharp/Modules/InputModuleHandle.g.cs b/SunSharp/Modules/InputModuleHandle.g.cs new file mode 100644 index 0000000..d1b8bbc --- /dev/null +++ b/SunSharp/Modules/InputModuleHandle.g.cs @@ -0,0 +1,84 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Audio input from Microphone/Line-in. Compatibility: implemented in the iOS and Android versions only. + /// + public partial interface IInputModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Channels' + /// + ChannelsInverted GetChannels(); + + /// + /// Original name: 1 'Channels' + /// + void SetChannels(ChannelsInverted value); + } + + /// + public readonly partial struct InputModuleHandle : IInputModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public InputModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(InputModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Input; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Input; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/KickerModuleHandle.g.cs b/SunSharp/Modules/KickerModuleHandle.g.cs new file mode 100644 index 0000000..9562546 --- /dev/null +++ b/SunSharp/Modules/KickerModuleHandle.g.cs @@ -0,0 +1,208 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Drum kick synthesizer with waveform type, attack, release, boost and envelope acceleration controls. + /// + public partial interface IKickerModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Waveform' + /// + KickerWaveform GetWaveform(); + + /// + /// Original name: 1 'Waveform' + /// + void SetWaveform(KickerWaveform value); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 2 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 4 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 4 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 5 'Boost' + /// + int GetBoost(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 5 'Boost' + /// + void SetBoost(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 6 'Acceleration' + /// + int GetAcceleration(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 6 'Acceleration' + /// + void SetAcceleration(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-4 + /// Original name: 7 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-4 + /// Original name: 7 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 8 'No click' + /// + Toggle GetNoClick(); + + /// + /// Original name: 8 'No click' + /// + void SetNoClick(Toggle value); + } + + /// + public readonly partial struct KickerModuleHandle : IKickerModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public KickerModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(KickerModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Kicker; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Kicker; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetBoost(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetBoost(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetAcceleration(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetAcceleration(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/LfoModuleHandle.g.cs b/SunSharp/Modules/LfoModuleHandle.g.cs new file mode 100644 index 0000000..7696b0f --- /dev/null +++ b/SunSharp/Modules/LfoModuleHandle.g.cs @@ -0,0 +1,270 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// LFO - Low Frequency Oscillator. Can work as amplitude/balance modulator or as standalone generator. + /// + public partial interface ILfoModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Type' + /// + LfoType GetFilterType(); + + /// + /// Original name: 1 'Type' + /// + void SetFilterType(LfoType value); + + /// + /// Value range: 0-256 + /// Original name: 2 'Amplitude' + /// + int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Amplitude' + /// + void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 3 'Freq' + /// + int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 3 'Freq' + /// + void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 4 'Waveform' + /// + LfoWaveform GetWaveform(); + + /// + /// Original name: 4 'Waveform' + /// + void SetWaveform(LfoWaveform value); + + /// + /// Value range: 0-256 + /// Original name: 5 'Set phase' + /// + int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 5 'Set phase' + /// + void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 6 'Channels' + /// + void SetChannels(Channels value); + + /// + /// Original name: 7 'Frequency unit' + /// + LfoFrequencyUnit GetFrequencyUnit(); + + /// + /// Original name: 7 'Frequency unit' + /// + void SetFrequencyUnit(LfoFrequencyUnit value); + + /// + /// Value range: 0-256 + /// Original name: 8 'Duty cycle' + /// + int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 8 'Duty cycle' + /// + void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 9 'Generator' + /// + Toggle GetGenerator(); + + /// + /// Original name: 9 'Generator' + /// + void SetGenerator(Toggle value); + + /// + /// Value range: 0-200 + /// Original name: 10 'Freq scale' + /// + int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 10 'Freq scale' + /// + void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 11 'Smooth transitions' + /// + LfoSmoothTransitions GetSmoothTransitions(); + + /// + /// Original name: 11 'Smooth transitions' + /// + void SetSmoothTransitions(LfoSmoothTransitions value); + + /// + /// Original name: 12 'Sine quality' + /// + LfoSineQuality GetSineQuality(); + + /// + /// Original name: 12 'Sine quality' + /// + void SetSineQuality(LfoSineQuality value); + } + + /// + public readonly partial struct LfoModuleHandle : ILfoModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public LfoModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(LfoModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Lfo; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Lfo; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public LfoType GetFilterType() => (LfoType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetFilterType(LfoType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public LfoWaveform GetWaveform() => (LfoWaveform)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetWaveform(LfoWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public LfoFrequencyUnit GetFrequencyUnit() => (LfoFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetFrequencyUnit(LfoFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public LfoSmoothTransitions GetSmoothTransitions() => (LfoSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetSmoothTransitions(LfoSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public LfoSineQuality GetSineQuality() => (LfoSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetSineQuality(LfoSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/LoopModuleHandle.g.cs b/SunSharp/Modules/LoopModuleHandle.g.cs new file mode 100644 index 0000000..78ff612 --- /dev/null +++ b/SunSharp/Modules/LoopModuleHandle.g.cs @@ -0,0 +1,190 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module repeats a fragment of the incoming sound a specified number of times. + /// + public partial interface ILoopModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Length' + /// + int GetLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Length' + /// + void SetLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 2 'Channels' + /// + ChannelsInverted GetChannels(); + + /// + /// Original name: 2 'Channels' + /// + void SetChannels(ChannelsInverted value); + + /// + /// Value range: 0-128 + /// Original name: 3 'Repeat (128=endless)' + /// + int GetRepeatEndless128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-128 + /// Original name: 3 'Repeat (128=endless)' + /// + void SetRepeatEndless128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 4 'Mode' + /// + LoopMode GetMode(); + + /// + /// Original name: 4 'Mode' + /// + void SetMode(LoopMode value); + + /// + /// Original name: 5 'Length unit' + /// + LoopTimeUnit GetLengthUnit(); + + /// + /// Original name: 5 'Length unit' + /// + void SetLengthUnit(LoopTimeUnit value); + + /// + /// Max buffer size in seconds + ///
+ /// Value range: 1-240 + /// Original name: 6 'Max buffer size' + ///
+ int GetMaxBufferSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Max buffer size in seconds + ///
+ /// Value range: 1-240 + /// Original name: 6 'Max buffer size' + ///
+ void SetMaxBufferSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 7 'On NoteON' + /// + LoopOnNoteOn GetOnNoteon(); + + /// + /// Original name: 7 'On NoteON' + /// + void SetOnNoteon(LoopOnNoteOn value); + } + + /// + public readonly partial struct LoopModuleHandle : ILoopModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public LoopModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(LoopModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Loop; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Loop; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public int GetRepeatEndless128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetRepeatEndless128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetMaxBufferSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetMaxBufferSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public LoopOnNoteOn GetOnNoteon() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetOnNoteon(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/MetaModuleModuleHandle.cs b/SunSharp/Modules/MetaModuleModuleHandle.cs new file mode 100644 index 0000000..e94b7ed --- /dev/null +++ b/SunSharp/Modules/MetaModuleModuleHandle.cs @@ -0,0 +1,24 @@ +#if !GENERATION + +namespace SunSharp.Modules +{ + public partial interface IMetaModuleModuleHandle + { + /// + void LoadFile(string path); + + /// + void LoadFile(byte[] data); + } + + public partial struct MetaModuleModuleHandle : IMetaModuleModuleHandle + { + /// + public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path); + + /// + public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); + } +} + +#endif diff --git a/SunSharp/Modules/MetaModuleModuleHandle.g.cs b/SunSharp/Modules/MetaModuleModuleHandle.g.cs new file mode 100644 index 0000000..e3bcaca --- /dev/null +++ b/SunSharp/Modules/MetaModuleModuleHandle.g.cs @@ -0,0 +1,138 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// MetaModule is a full-featured copy of SunVox in a single module. So you can include one SunVox-project into another recursively. + /// + public partial interface IMetaModuleModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 1 'Input module' + /// + int GetInputModule(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 1 'Input module' + /// + void SetInputModule(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 2 'Play patterns' + /// + MetaModulePatternMode GetPlayPatterns(); + + /// + /// Original name: 2 'Play patterns' + /// + void SetPlayPatterns(MetaModulePatternMode value); + + /// + /// Value range: 1-1000 + /// Original name: 3 'BPM (Beats Per Minute)' + /// + int GetBeatsPerMinute(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-1000 + /// Original name: 3 'BPM (Beats Per Minute)' + /// + void SetBeatsPerMinute(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-31 + /// Original name: 4 'TPL (Ticks Per Line)' + /// + int GetTicksPerLine(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-31 + /// Original name: 4 'TPL (Ticks Per Line)' + /// + void SetTicksPerLine(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct MetaModuleModuleHandle : IMetaModuleModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public MetaModuleModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(MetaModuleModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.MetaModule; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.MetaModule; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetInputModule(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetInputModule(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public int GetBeatsPerMinute(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetBeatsPerMinute(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetTicksPerLine(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetTicksPerLine(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/ModulatorModuleHandle.g.cs b/SunSharp/Modules/ModulatorModuleHandle.g.cs new file mode 100644 index 0000000..a3f0694 --- /dev/null +++ b/SunSharp/Modules/ModulatorModuleHandle.g.cs @@ -0,0 +1,100 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Amplitude or Phase modulator. First input = Carrier. Other inputs = Modulators (will be mixed into a single signal). + /// + public partial interface IModulatorModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Modulation type' + /// + ModulationType GetModulationType(); + + /// + /// Original name: 1 'Modulation type' + /// + void SetModulationType(ModulationType value); + + /// + /// Original name: 2 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 2 'Channels' + /// + void SetChannels(Channels value); + } + + /// + public readonly partial struct ModulatorModuleHandle : IModulatorModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public ModulatorModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(ModulatorModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Modulator; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Modulator; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/MultiControlModuleHandle.g.cs b/SunSharp/Modules/MultiControlModuleHandle.g.cs new file mode 100644 index 0000000..be2a39e --- /dev/null +++ b/SunSharp/Modules/MultiControlModuleHandle.g.cs @@ -0,0 +1,180 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// With this module you can change the values of multiple controllers (in different modules) at once. Maximum number of connected controllers - 16. + /// + public partial interface IMultiControlModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-32768 + /// Original name: 0 'Value' + /// + int GetValue(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 0 'Value' + /// + void SetValue(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 1 'Gain' + /// + int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 1 'Gain' + /// + void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 2 'Quantization' + /// + int GetQuantization(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 2 'Quantization' + /// + void SetQuantization(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 3 'OUT offset' + /// + int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 3 'OUT offset' + /// + void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1000 + /// Original name: 4 'Response' + /// + int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1000 + /// Original name: 4 'Response' + /// + void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32768 + /// Original name: 5 'Sample rate' + /// + int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32768 + /// Original name: 5 'Sample rate' + /// + void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Modifies values. + ///
+ ///
Write to curve 0 of MultiControl. + ///
The curve contains 257 values in range of 0 to 1. + ///
+ int WriteCurveValueMap(float[] buffer); + + /// + /// Modifies values. + ///
+ ///
Read from curve 0 of MultiControl. + ///
The curve contains 257 values in range of 0 to 1. + ///
+ int ReadCurveValueMap(float[] buffer); + } + + /// + public readonly partial struct MultiControlModuleHandle : IMultiControlModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public MultiControlModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(MultiControlModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.MultiControl; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.MultiControl; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetValue(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetValue(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetQuantization(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetQuantization(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + } +} +#endif diff --git a/SunSharp/Modules/MultiSynthModuleHandle.g.cs b/SunSharp/Modules/MultiSynthModuleHandle.g.cs new file mode 100644 index 0000000..dcd924a --- /dev/null +++ b/SunSharp/Modules/MultiSynthModuleHandle.g.cs @@ -0,0 +1,260 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module sends the incoming events (notes, pitch change, phase change) to any number of connected modules (receivers). + /// + public partial interface IMultiSynthModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 0 'Transpose' + /// + int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 0 'Transpose' + /// + void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4096 + /// Original name: 1 'Random pitch' + /// + int GetRandomPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4096 + /// Original name: 1 'Random pitch' + /// + void SetRandomPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Velocity' + /// + int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Velocity' + /// + void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 3 'Finetune' + /// + int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 3 'Finetune' + /// + void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 4 'Random phase' + /// + int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 4 'Random phase' + /// + void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'Random velocity' + /// + int GetRandomVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'Random velocity' + /// + void SetRandomVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Phase' + /// + int GetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'Phase' + /// + void SetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 7 'Curve2 influence' + /// + int GetCurve2Influence(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 7 'Curve2 influence' + /// + void SetCurve2Influence(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Velocity to apply to arriving note. + ///
+ ///
Write to curve 0 of MultiSynth. + ///
The curve contains 128 values in range of 0 to 1. + ///
+ int WriteCurveNoteToVelocity(float[] buffer); + + /// + /// Velocity to apply to arriving note. + ///
+ ///
Read from curve 0 of MultiSynth. + ///
The curve contains 128 values in range of 0 to 1. + ///
+ int ReadCurveNoteToVelocity(float[] buffer); + + /// + /// Map velocity values. + ///
+ ///
Write to curve 1 of MultiSynth. + ///
The curve contains 257 values in range of 0 to 1. + ///
+ int WriteCurveVelocityToVelocity(float[] buffer); + + /// + /// Map velocity values. + ///
+ ///
Read from curve 1 of MultiSynth. + ///
The curve contains 257 values in range of 0 to 1. + ///
+ int ReadCurveVelocityToVelocity(float[] buffer); + + /// + /// Map incoming note to a pitch value. + ///
+ ///
Write to curve 2 of MultiSynth. + ///
The curve contains 128 values in range of 0.2500038 to 0.74610513. + ///
+ int WriteCurveNoteToPitch(float[] buffer); + + /// + /// Map incoming note to a pitch value. + ///
+ ///
Read from curve 2 of MultiSynth. + ///
The curve contains 128 values in range of 0.2500038 to 0.74610513. + ///
+ int ReadCurveNoteToPitch(float[] buffer); + } + + /// + public readonly partial struct MultiSynthModuleHandle : IMultiSynthModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public MultiSynthModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(MultiSynthModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.MultiSynth; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.MultiSynth; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetRandomPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetRandomPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetRandomVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetRandomVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetCurve2Influence(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetCurve2Influence(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + + /// ModuleHandle.ReadCurve(1, buffer); + + /// ModuleHandle.WriteCurve(1, buffer); + + /// ModuleHandle.ReadCurve(2, buffer); + + /// ModuleHandle.WriteCurve(2, buffer); + } +} +#endif diff --git a/SunSharp/Modules/OutputModuleHandle.g.cs b/SunSharp/Modules/OutputModuleHandle.g.cs new file mode 100644 index 0000000..78ed258 --- /dev/null +++ b/SunSharp/Modules/OutputModuleHandle.g.cs @@ -0,0 +1,50 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Audio output module. + /// + public partial interface IOutputModuleHandle : ITypedModuleHandle + { + } + + /// + public readonly partial struct OutputModuleHandle : IOutputModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public OutputModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(OutputModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Output; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Output; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + } +} +#endif diff --git a/SunSharp/Modules/PitchDetectorModuleHandle.g.cs b/SunSharp/Modules/PitchDetectorModuleHandle.g.cs new file mode 100644 index 0000000..b5837d5 --- /dev/null +++ b/SunSharp/Modules/PitchDetectorModuleHandle.g.cs @@ -0,0 +1,254 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Pitch Detector tries to detect the pitch of the incoming audio signal. The frequency and note will be displayed. Notes will be sent to the module output. + /// + public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'Algorithm' + /// + PitchDetectorAlgorithm GetAlgorithm(); + + /// + /// Original name: 0 'Algorithm' + /// + void SetAlgorithm(PitchDetectorAlgorithm value); + + /// + /// Value range: 0-10000 + /// Original name: 1 'Threshold' + /// + int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 1 'Threshold' + /// + void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Gain' + /// + int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Gain' + /// + void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Microtones' + /// + Toggle GetMicrotones(); + + /// + /// Original name: 3 'Microtones' + /// + void SetMicrotones(Toggle value); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 4 'Detector finetune' + /// + int GetDetectorFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 4 'Detector finetune' + /// + void SetDetectorFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4000 + /// Original name: 5 'LP filter freq (0 - OFF)' + /// + int GetLpFilterFreqOff0(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-4000 + /// Original name: 5 'LP filter freq (0 - OFF)' + /// + void SetLpFilterFreqOff0(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'LP filter roll-off' + /// + FilterRollOff GetLpFilterRollOff(); + + /// + /// Original name: 6 'LP filter roll-off' + /// + void SetLpFilterRollOff(FilterRollOff value); + + /// + /// Original name: 7 'Alg1-2 Sample rate (Hz)' + /// + PitchDetectorAlgSampleRate GetAlgSampleRateHz12(); + + /// + /// Original name: 7 'Alg1-2 Sample rate (Hz)' + /// + void SetAlgSampleRateHz12(PitchDetectorAlgSampleRate value); + + /// + /// Original name: 8 'Alg1-2 Buffer (ms)' + /// + PitchDetectorBufferSize GetAlgBufferMs12(); + + /// + /// Original name: 8 'Alg1-2 Buffer (ms)' + /// + void SetAlgBufferMs12(PitchDetectorBufferSize value); + + /// + /// Value range: 0-100 + /// Original name: 9 'Alg1-2 Buf overlap' + /// + int GetAlgBufOverlap12(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 9 'Alg1-2 Buf overlap' + /// + void SetAlgBufOverlap12(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 10 'Alg1 Sensitivity (absolute threshold)' + /// + int GetAlgSensitivityAbsoluteThreshold1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-100 + /// Original name: 10 'Alg1 Sensitivity (absolute threshold)' + /// + void SetAlgSensitivityAbsoluteThreshold1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 11 'Record notes' + /// + Toggle GetRecordNotes(); + + /// + /// Original name: 11 'Record notes' + /// + void SetRecordNotes(Toggle value); + } + + /// + public readonly partial struct PitchDetectorModuleHandle : IPitchDetectorModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public PitchDetectorModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(PitchDetectorModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.PitchDetector; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.PitchDetector; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetDetectorFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetDetectorFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetLpFilterFreqOff0(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetLpFilterFreqOff0(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public FilterRollOff GetLpFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetLpFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public PitchDetectorAlgSampleRate GetAlgSampleRateHz12() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetAlgSampleRateHz12(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public PitchDetectorBufferSize GetAlgBufferMs12() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetAlgBufferMs12(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public int GetAlgBufOverlap12(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetAlgBufOverlap12(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetAlgSensitivityAbsoluteThreshold1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetAlgSensitivityAbsoluteThreshold1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/PitchShifterModuleHandle.g.cs b/SunSharp/Modules/PitchShifterModuleHandle.g.cs new file mode 100644 index 0000000..d2aa3ab --- /dev/null +++ b/SunSharp/Modules/PitchShifterModuleHandle.g.cs @@ -0,0 +1,172 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Pitch shifter is a module for changing the pitch of any sound in real time. The signal at the output of the module is always slightly delayed. + /// + public partial interface IPitchShifterModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -600-600, real: 0-1200 + /// Original name: 1 'Pitch' + /// + int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -600-600, real: 0-1200 + /// Original name: 1 'Pitch' + /// + void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 2 'Pitch scale' + /// + int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-200 + /// Original name: 2 'Pitch scale' + /// + void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Grain size' + /// + int GetGrainSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Grain size' + /// + void SetGrainSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Mode' + /// + Quality GetMode(); + + /// + /// Original name: 5 'Mode' + /// + void SetMode(Quality value); + + /// + /// Original name: 6 'Bypass if pitch=0' + /// + PitchShifterBypassMode GetBypassIfPitch0(); + + /// + /// Original name: 6 'Bypass if pitch=0' + /// + void SetBypassIfPitch0(PitchShifterBypassMode value); + } + + /// + public readonly partial struct PitchShifterModuleHandle : IPitchShifterModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public PitchShifterModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(PitchShifterModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.PitchShifter; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.PitchShifter; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetGrainSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetGrainSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public PitchShifterBypassMode GetBypassIfPitch0() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetBypassIfPitch0(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/PitchToControlModuleHandle.g.cs b/SunSharp/Modules/PitchToControlModuleHandle.g.cs new file mode 100644 index 0000000..320e69b --- /dev/null +++ b/SunSharp/Modules/PitchToControlModuleHandle.g.cs @@ -0,0 +1,172 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module converts the incoming notes to the controller values (in some another connected module). + /// + public partial interface IPitchToControlModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'Mode' + /// + PitchToControlMode GetMode(); + + /// + /// Original name: 0 'Mode' + /// + void SetMode(PitchToControlMode value); + + /// + /// Original name: 1 'On NoteOFF' + /// + PitchToControlOnNoteOff GetOnNoteoff(); + + /// + /// Original name: 1 'On NoteOFF' + /// + void SetOnNoteoff(PitchToControlOnNoteOff value); + + /// + /// Value range: 0-256 + /// Original name: 2 'First note' + /// + int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'First note' + /// + void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Range (number of semitones)' + /// + int GetRange(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Range (number of semitones)' + /// + void SetRange(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 4 'OUT min' + /// + int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 4 'OUT min' + /// + void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'OUT max' + /// + int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 5 'OUT max' + /// + void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 6 'OUT controller' + /// + int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 6 'OUT controller' + /// + void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct PitchToControlModuleHandle : IPitchToControlModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public PitchToControlModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(PitchToControlModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.PitchToControl; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.PitchToControl; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public PitchToControlOnNoteOff GetOnNoteoff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetOnNoteoff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetRange(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetRange(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/ReverbModuleHandle.g.cs b/SunSharp/Modules/ReverbModuleHandle.g.cs new file mode 100644 index 0000000..b60e3a6 --- /dev/null +++ b/SunSharp/Modules/ReverbModuleHandle.g.cs @@ -0,0 +1,224 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Reverb is a module that simulates the reverberation effect (echo with numerous reflections to make the sound more natural). + /// + public partial interface IReverbModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Dry' + /// + void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Wet' + /// + void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Feedback' + /// + void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Damp' + /// + int GetDamp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 3 'Damp' + /// + void SetDamp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Stereo width' + /// + int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Stereo width' + /// + void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Freeze' + /// + Toggle GetFreeze(); + + /// + /// Original name: 5 'Freeze' + /// + void SetFreeze(Toggle value); + + /// + /// Original name: 6 'Mode' + /// + Quality GetMode(); + + /// + /// Original name: 6 'Mode' + /// + void SetMode(Quality value); + + /// + /// Original name: 7 'All-pass filter' + /// + Toggle GetAllPassFilter(); + + /// + /// Original name: 7 'All-pass filter' + /// + void SetAllPassFilter(Toggle value); + + /// + /// Value range: 0-128 + /// Original name: 8 'Room size' + /// + int GetRoomSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-128 + /// Original name: 8 'Room size' + /// + void SetRoomSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Random seed' + /// + int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Random seed' + /// + void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct ReverbModuleHandle : IReverbModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public ReverbModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(ReverbModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Reverb; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Reverb; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetDamp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetDamp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetRoomSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetRoomSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/SamplerModuleHandle.cs b/SunSharp/Modules/SamplerModuleHandle.cs new file mode 100644 index 0000000..70565b9 --- /dev/null +++ b/SunSharp/Modules/SamplerModuleHandle.cs @@ -0,0 +1,30 @@ +#if !GENERATION + +namespace SunSharp.Modules +{ + public partial interface ISamplerModuleHandle + { + /// + void LoadSample(byte[] data, int? sampleSlot = null); + + /// + void LoadSample(string path, int? sampleSlot = null); + } + + public partial struct SamplerModuleHandle : ISamplerModuleHandle + { + /// + public void LoadSample(byte[] data, int? sampleSlot = null) + { + ModuleHandle.LoadSamplerSample(data, sampleSlot); + } + + /// + public void LoadSample(string path, int? sampleSlot = null) + { + ModuleHandle.LoadSamplerSample(path, sampleSlot); + } + } +} + +#endif diff --git a/SunSharp/Modules/SamplerModuleHandle.g.cs b/SunSharp/Modules/SamplerModuleHandle.g.cs new file mode 100644 index 0000000..47f8946 --- /dev/null +++ b/SunSharp/Modules/SamplerModuleHandle.g.cs @@ -0,0 +1,154 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Sampler can play and record audio files. Supported file formats: WAV (PCM, uncompressed), AIFF (PCM, uncompressed), XI, OGG (Vorbis), MP3, FLAC, JPEG, RAW. + /// + public partial interface ISamplerModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 2 'Sample interpolation' + /// + SamplerInterpolation GetSampleInterpolation(); + + /// + /// Original name: 2 'Sample interpolation' + /// + void SetSampleInterpolation(SamplerInterpolation value); + + /// + /// Original name: 3 'Envelope interpolation' + /// + SamplerEnvelopeInterpolation GetEnvelopeInterpolation(); + + /// + /// Original name: 3 'Envelope interpolation' + /// + void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value); + + /// + /// Value range: 1-32 + /// Original name: 4 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32 + /// Original name: 4 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 5 'Rec threshold' + /// + int GetRecThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-10000 + /// Original name: 5 'Rec threshold' + /// + void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct SamplerModuleHandle : ISamplerModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public SamplerModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(SamplerModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Sampler; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Sampler; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public int GetRecThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/SoundToControlModuleHandle.g.cs b/SunSharp/Modules/SoundToControlModuleHandle.g.cs new file mode 100644 index 0000000..8234ebd --- /dev/null +++ b/SunSharp/Modules/SoundToControlModuleHandle.g.cs @@ -0,0 +1,206 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module converts the audio signal to the numeric value of any selected controller. + /// + public partial interface ISoundToControlModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 1-32768 + /// Original name: 0 'Sample rate' + /// + int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32768 + /// Original name: 0 'Sample rate' + /// + void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Channels' + /// + ChannelsInverted GetChannels(); + + /// + /// Original name: 1 'Channels' + /// + void SetChannels(ChannelsInverted value); + + /// + /// Original name: 2 'Absolute' + /// + Toggle GetAbsolute(); + + /// + /// Original name: 2 'Absolute' + /// + void SetAbsolute(Toggle value); + + /// + /// Value range: 0-1024 + /// Original name: 3 'Gain' + /// + int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 3 'Gain' + /// + void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Smooth' + /// + int GetSmooth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Smooth' + /// + void SetSmooth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Mode' + /// + SoundToControlMode GetMode(); + + /// + /// Original name: 5 'Mode' + /// + void SetMode(SoundToControlMode value); + + /// + /// Value range: 0-32768 + /// Original name: 6 'OUT min' + /// + int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 6 'OUT min' + /// + void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 7 'OUT max' + /// + int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 7 'OUT max' + /// + void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 8 'OUT controller' + /// + int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 8 'OUT controller' + /// + void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct SoundToControlModuleHandle : ISoundToControlModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public SoundToControlModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(SoundToControlModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.SoundToControl; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.SoundToControl; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); + + /// + public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetSmooth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetSmooth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/SpectraVoiceModuleHandle.g.cs b/SunSharp/Modules/SpectraVoiceModuleHandle.g.cs new file mode 100644 index 0000000..3604004 --- /dev/null +++ b/SunSharp/Modules/SpectraVoiceModuleHandle.g.cs @@ -0,0 +1,276 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// SpectraVoice synthesizes sound with a complex spectrum. You can place 16 harmonics on the spectrum graph, specifying the position, amplitude, shape and width for each. + /// + public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 1 'Panning' + /// + void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 3 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32 + /// Original name: 4 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-32 + /// Original name: 4 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Mode' + /// + SpectraVoiceMode GetMode(); + + /// + /// Original name: 5 'Mode' + /// + void SetMode(SpectraVoiceMode value); + + /// + /// Original name: 6 'Sustain' + /// + Toggle GetSustain(); + + /// + /// Original name: 6 'Sustain' + /// + void SetSustain(Toggle value); + + /// + /// Original name: 7 'Spectrum resolution' + /// + SpectraVoiceResolution GetSpectrumResolution(); + + /// + /// Original name: 7 'Spectrum resolution' + /// + void SetSpectrumResolution(SpectraVoiceResolution value); + + /// + /// Value range: 0-15 + /// Original name: 8 'Harmonic' + /// + int GetHarmonic(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-15 + /// Original name: 8 'Harmonic' + /// + void SetHarmonic(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-22050 + /// Original name: 9 'H.freq' + /// + int GetHFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-22050 + /// Original name: 9 'H.freq' + /// + void SetHFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 10 'H.volume' + /// + int GetHVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 10 'H.volume' + /// + void SetHVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 11 'H.width' + /// + int GetHWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 11 'H.width' + /// + void SetHWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 12 'H.type' + /// + SpectraVoiceHarmonicType GetHType(); + + /// + /// Original name: 12 'H.type' + /// + void SetHType(SpectraVoiceHarmonicType value); + } + + /// + public readonly partial struct SpectraVoiceModuleHandle : ISpectraVoiceModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public SpectraVoiceModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(SpectraVoiceModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.SpectraVoice; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.SpectraVoice; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public int GetHarmonic(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetHarmonic(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetHFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetHFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetHVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetHVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public int GetHWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); + + /// + public void SetHWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + + /// + public SpectraVoiceHarmonicType GetHType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetHType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/TypedModuleHandle.cs b/SunSharp/Modules/TypedModuleHandle.cs new file mode 100644 index 0000000..6e2965a --- /dev/null +++ b/SunSharp/Modules/TypedModuleHandle.cs @@ -0,0 +1,12 @@ +namespace SunSharp.Modules +{ + public interface ITypedModuleHandle + { + /// + /// Determines whether the underlying module is of the correct type. + /// + bool IsCorrectHandleType(); + + void AssertCorrectHandleType(); + } +} diff --git a/SunSharp/Modules/VelocityToControlModuleHandle.g.cs b/SunSharp/Modules/VelocityToControlModuleHandle.g.cs new file mode 100644 index 0000000..0593ab8 --- /dev/null +++ b/SunSharp/Modules/VelocityToControlModuleHandle.g.cs @@ -0,0 +1,138 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// This module converts the velocity parameter of the incoming notes to the controller values (in some another connected module). + /// + public partial interface IVelocityToControlModuleHandle : ITypedModuleHandle + { + + /// + /// Original name: 0 'On NoteOFF' + /// + VelocityToControlOnNoteOff GetOnNoteoff(); + + /// + /// Original name: 0 'On NoteOFF' + /// + void SetOnNoteoff(VelocityToControlOnNoteOff value); + + /// + /// Value range: 0-32768 + /// Original name: 1 'OUT min' + /// + int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 1 'OUT min' + /// + void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 2 'OUT max' + /// + int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 2 'OUT max' + /// + void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 3 'OUT offset' + /// + int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -16384-16384, real: 0-32768 + /// Original name: 3 'OUT offset' + /// + void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 4 'OUT controller' + /// + int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-255 + /// Original name: 4 'OUT controller' + /// + void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + } + + /// + public readonly partial struct VelocityToControlModuleHandle : IVelocityToControlModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public VelocityToControlModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(VelocityToControlModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.VelocityToControl; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.VelocityToControl; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public VelocityToControlOnNoteOff GetOnNoteoff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); + + /// + public void SetOnNoteoff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + } +} +#endif diff --git a/SunSharp/Modules/VibratoModuleHandle.g.cs b/SunSharp/Modules/VibratoModuleHandle.g.cs new file mode 100644 index 0000000..5e5ceaa --- /dev/null +++ b/SunSharp/Modules/VibratoModuleHandle.g.cs @@ -0,0 +1,170 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Vibrato effect. + /// + public partial interface IVibratoModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Amplitude' + /// + int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Amplitude' + /// + void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-2048 + /// Original name: 2 'Freq' + /// + int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-2048 + /// Original name: 2 'Freq' + /// + void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 3 'Channels' + /// + void SetChannels(Channels value); + + /// + /// Value range: 0-256 + /// Original name: 4 'Set phase' + /// + int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Set phase' + /// + void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Frequency unit' + /// + VibratoFrequencyUnit GetFrequencyUnit(); + + /// + /// Original name: 5 'Frequency unit' + /// + void SetFrequencyUnit(VibratoFrequencyUnit value); + + /// + /// Original name: 6 'Exponential amplitude' + /// + Toggle GetExponentialAmplitude(); + + /// + /// Original name: 6 'Exponential amplitude' + /// + void SetExponentialAmplitude(Toggle value); + } + + /// + public readonly partial struct VibratoModuleHandle : IVibratoModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public VibratoModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(VibratoModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Vibrato; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Vibrato; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/VocalFilterModuleHandle.g.cs b/SunSharp/Modules/VocalFilterModuleHandle.g.cs new file mode 100644 index 0000000..4f65865 --- /dev/null +++ b/SunSharp/Modules/VocalFilterModuleHandle.g.cs @@ -0,0 +1,288 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// Formant filter - designed to simulate the human vocal tract. + /// + public partial interface IVocalFilterModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Formant width' + /// + int GetFormantWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Formant width' + /// + void SetFormantWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Intensity' + /// + int GetIntensity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 2 'Intensity' + /// + void SetIntensity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-5 + /// Original name: 3 'Formants' + /// + int GetFormants(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-5 + /// Original name: 3 'Formants' + /// + void SetFormants(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Vowel (a,e,i,o,u)' + /// + int GetVowelAEIOU(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 4 'Vowel (a,e,i,o,u)' + /// + void SetVowelAEIOU(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 5 'Voice type' + /// + VocalFilterVoiceType GetVoiceType(); + + /// + /// Original name: 5 'Voice type' + /// + void SetVoiceType(VocalFilterVoiceType value); + + /// + /// Original name: 6 'Channels' + /// + Channels GetChannels(); + + /// + /// Original name: 6 'Channels' + /// + void SetChannels(Channels value); + + /// + /// Value range: 0-1024 + /// Original name: 7 'Random frequency' + /// + int GetRandomFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-1024 + /// Original name: 7 'Random frequency' + /// + void SetRandomFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Random seed' + /// + int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 8 'Random seed' + /// + void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 9 'Vowel1' + /// + VocalFilterVowel GetVowel1(); + + /// + /// Original name: 9 'Vowel1' + /// + void SetVowel1(VocalFilterVowel value); + + /// + /// Original name: 10 'Vowel2' + /// + VocalFilterVowel GetVowel2(); + + /// + /// Original name: 10 'Vowel2' + /// + void SetVowel2(VocalFilterVowel value); + + /// + /// Original name: 11 'Vowel3' + /// + VocalFilterVowel GetVowel3(); + + /// + /// Original name: 11 'Vowel3' + /// + void SetVowel3(VocalFilterVowel value); + + /// + /// Original name: 12 'Vowel4' + /// + VocalFilterVowel GetVowel4(); + + /// + /// Original name: 12 'Vowel4' + /// + void SetVowel4(VocalFilterVowel value); + + /// + /// Original name: 13 'Vowel5' + /// + VocalFilterVowel GetVowel5(); + + /// + /// Original name: 13 'Vowel5' + /// + void SetVowel5(VocalFilterVowel value); + } + + /// + public readonly partial struct VocalFilterModuleHandle : IVocalFilterModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public VocalFilterModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(VocalFilterModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.VocalFilter; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.VocalFilter; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetFormantWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetFormantWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetIntensity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetIntensity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetFormants(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetFormants(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public int GetVowelAEIOU(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetVowelAEIOU(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// + public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public int GetRandomFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetRandomFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); + + /// + public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); + + /// + public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + + /// + public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); + + /// + public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.cs b/SunSharp/Modules/VorbisPlayerModuleHandle.cs new file mode 100644 index 0000000..e1e1df1 --- /dev/null +++ b/SunSharp/Modules/VorbisPlayerModuleHandle.cs @@ -0,0 +1,30 @@ +#if !GENERATION + +namespace SunSharp.Modules +{ + public partial interface IVorbisPlayerModuleHandle + { + /// + void LoadVorbis(string path); + + /// + void LoadIntoVorbisPLayer(byte[] data); + } + + public partial struct VorbisPlayerModuleHandle : IVorbisPlayerModuleHandle + { + /// + public void LoadVorbis(string path) + { + ModuleHandle.LoadIntoVorbisPLayer(path); + } + + /// + public void LoadIntoVorbisPLayer(byte[] data) + { + ModuleHandle.LoadIntoVorbisPLayer(data); + } + } +} + +#endif diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs b/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs new file mode 100644 index 0000000..23eb560 --- /dev/null +++ b/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs @@ -0,0 +1,170 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// OGG Vorbis player. + /// + public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Volume' + /// + void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 1 'Original speed' + /// + Toggle GetOriginalSpeed(); + + /// + /// Original name: 1 'Original speed' + /// + void SetOriginalSpeed(Toggle value); + + /// + /// Value range: -128-128 + /// Original name: 2 'Finetune' + /// + int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: -128-128 + /// Original name: 2 'Finetune' + /// + void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 3 'Transpose' + /// + int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 3 'Transpose' + /// + void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 4 'Interpolation' + /// + Toggle GetInterpolation(); + + /// + /// Original name: 4 'Interpolation' + /// + void SetInterpolation(Toggle value); + + /// + /// Value range: 1-4 + /// Original name: 5 'Polyphony' + /// + int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-4 + /// Original name: 5 'Polyphony' + /// + void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 6 'Repeat' + /// + Toggle GetRepeat(); + + /// + /// Original name: 6 'Repeat' + /// + void SetRepeat(Toggle value); + } + + /// + public readonly partial struct VorbisPlayerModuleHandle : IVorbisPlayerModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public VorbisPlayerModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(VorbisPlayerModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.VorbisPlayer; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.VorbisPlayer; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); + + /// + public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + + /// + public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); + + /// + public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + } +} +#endif diff --git a/SunSharp/Modules/WaveShaperModuleHandle.g.cs b/SunSharp/Modules/WaveShaperModuleHandle.g.cs new file mode 100644 index 0000000..c1804dc --- /dev/null +++ b/SunSharp/Modules/WaveShaperModuleHandle.g.cs @@ -0,0 +1,174 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp.Modules +{ + /// + /// In simple terms, WaveShaper allows you to change the shape of the input signal. In math terms, WaveShaper is the expression y = f( x ); where y - output; x - input; f - function with graph which you can see in the WaveShaper interface. + /// + public partial interface IWaveShaperModuleHandle : ITypedModuleHandle + { + + /// + /// Value range: 0-512 + /// Original name: 0 'Input volume' + /// + int GetInputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 0 'Input volume' + /// + void SetInputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Mix' + /// + int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-256 + /// Original name: 1 'Mix' + /// + void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'Output volume' + /// + int GetOutputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-512 + /// Original name: 2 'Output volume' + /// + void SetOutputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 3 'Symmetric' + /// + Toggle GetSymmetric(); + + /// + /// Original name: 3 'Symmetric' + /// + void SetSymmetric(Toggle value); + + /// + /// Original name: 4 'Mode' + /// + Quality GetMode(); + + /// + /// Original name: 4 'Mode' + /// + void SetMode(Quality value); + + /// + /// Original name: 5 'DC blocker' + /// + Toggle GetDcBlocker(); + + /// + /// Original name: 5 'DC blocker' + /// + void SetDcBlocker(Toggle value); + + /// + /// Maps input to output. + ///
+ ///
Write to curve 0 of WaveShaper. + ///
The curve contains 256 values in range of 0 to 1. + ///
+ int WriteCurveValueMap(float[] buffer); + + /// + /// Maps input to output. + ///
+ ///
Read from curve 0 of WaveShaper. + ///
The curve contains 256 values in range of 0 to 1. + ///
+ int ReadCurveValueMap(float[] buffer); + } + + /// + public readonly partial struct WaveShaperModuleHandle : IWaveShaperModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public WaveShaperModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(WaveShaperModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.WaveShaper; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.WaveShaper; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + /// + public int GetInputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); + + /// + public void SetInputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + + /// + public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); + + /// + public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + + /// + public int GetOutputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + + /// + public void SetOutputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + + /// + public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetDcBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); + + /// + public void SetDcBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + + /// ModuleHandle.ReadCurve(0, buffer); + + /// ModuleHandle.WriteCurve(0, buffer); + } +} +#endif diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs index 87b9482..06f8514 100644 --- a/SunSharp/Native/ISunVoxLib.Modules.cs +++ b/SunSharp/Native/ISunVoxLib.Modules.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Native +namespace SunSharp.Native { public partial interface ISunVoxLib { diff --git a/SunSharp/Native/ISunVoxLib.Patterns.cs b/SunSharp/Native/ISunVoxLib.Patterns.cs index 0cc1d3e..74267c8 100644 --- a/SunSharp/Native/ISunVoxLib.Patterns.cs +++ b/SunSharp/Native/ISunVoxLib.Patterns.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Native +namespace SunSharp.Native { public partial interface ISunVoxLib { diff --git a/SunSharp/Native/ISunVoxLib.cs b/SunSharp/Native/ISunVoxLib.cs index b2b77a5..46554f9 100644 --- a/SunSharp/Native/ISunVoxLib.cs +++ b/SunSharp/Native/ISunVoxLib.cs @@ -1,4 +1,4 @@ -namespace SunSharp.Native +namespace SunSharp.Native { public partial interface ISunVoxLib { diff --git a/SunSharp/Native/ISunVoxLibC.g.cs b/SunSharp/Native/ISunVoxLibC.g.cs index 8e8fa00..7fb2768 100644 --- a/SunSharp/Native/ISunVoxLibC.g.cs +++ b/SunSharp/Native/ISunVoxLibC.g.cs @@ -1,3 +1,9 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + #pragma warning disable CA1707 // Identifiers should not contain underscores #pragma warning disable CA1716 // Identifiers should not match keywords #pragma warning disable IDE1006 // Naming Styles diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs index 0828d55..469115f 100644 --- a/SunSharp/Native/Loader/LibraryHandler.cs +++ b/SunSharp/Native/Loader/LibraryHandler.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SunSharp.Native.Loader { diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 6eecded..109a07b 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SunSharp.Native.Loader { diff --git a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs b/SunSharp/Native/Loader/NativeProxy.g.cs similarity index 99% rename from SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs rename to SunSharp/Native/Loader/NativeProxy.g.cs index 8c65c5e..879f144 100644 --- a/SunSharp/Native/Loader/NativeProxy.ISunVoxLibC.g.cs +++ b/SunSharp/Native/Loader/NativeProxy.g.cs @@ -1,4 +1,7 @@ -#pragma warning disable CS0649 +/* + * Do not modify this file manually. +*/ + #nullable enable using System; diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index e1194c5..44a2e9c 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -1,24 +1,27 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp.Native { public partial class SunVoxLibNativeWrapper { - /// + /// public void ConnectModule(int slotId, int source, int destination) { var ret = _lib.sv_connect_module(slotId, source, destination); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_connect_module)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(source)}: {source}, {nameof(destination)}: {destination}."; + throw new SunVoxException(ret, nameof(_lib.sv_connect_module), details); + } } - /// + /// public int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, int z = 0) { - var typePtr = Marshal.StringToHGlobalAnsi(type); - var namePtr = Marshal.StringToHGlobalAnsi(name); + var typePtr = Marshal.StringToCoTaskMemUTF8(type); + var namePtr = Marshal.StringToCoTaskMemUTF8(name); int ret; try { @@ -26,27 +29,33 @@ public int CreateModule(int slotId, string type, string name, int x = 0, int y = } finally { - Marshal.FreeHGlobal(typePtr); - Marshal.FreeHGlobal(namePtr); + Marshal.ZeroFreeCoTaskMemUTF8(typePtr); + Marshal.ZeroFreeCoTaskMemUTF8(namePtr); } if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_new_module)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(type)}: '{type ?? ""}', {nameof(name)}: '{name ?? ""}', {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(z)}: {z}."; + throw new SunVoxException(ret, nameof(_lib.sv_new_module), details); + } return ret; } - /// + /// public void DisconnectModule(int slotId, int source, int destination) { var ret = _lib.sv_disconnect_module(slotId, source, destination); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_disconnect_module)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(source)}: {source}, {nameof(destination)}: {destination}."; + throw new SunVoxException(ret, nameof(_lib.sv_disconnect_module), details); + } } - /// + /// public int? FindModule(int slotId, string name) { - var ptr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToCoTaskMemUTF8(name); int ret; try { @@ -54,18 +63,21 @@ public void DisconnectModule(int slotId, int source, int destination) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret < -1) - throw new SunVoxException(ret, nameof(_lib.sv_find_module)); + { + throw new SunVoxException(ret, nameof(_lib.sv_find_module), + $"{nameof(slotId)}: {slotId}, {nameof(name)}: '{name ?? ""}'."); + } if (ret != -1) return ret; return null; } - /// + /// public (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId) { var ret = _lib.sv_get_module_color(slotId, moduleId); @@ -75,104 +87,112 @@ public void DisconnectModule(int slotId, int source, int destination) return (red, green, blue); } - /// + /// public int GetModuleControllerCount(int slotId, int moduleId) { var ret = _lib.sv_get_number_of_module_ctls(slotId, moduleId); if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_module_ctls)); + { + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_module_ctls), + $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}."); + } return ret; } - /// + /// public int GetModuleControllerGroup(int slotId, int moduleId, int controllerId) { return _lib.sv_get_module_ctl_group(slotId, moduleId, controllerId); } - /// + /// public int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) { // memory managed by SunVox var ptr = _lib.sv_get_module_ctl_name(slotId, moduleId, controllerId); - return Marshal.PtrToStringAnsi(ptr); + return Marshal.PtrToStringUTF8(ptr); } - /// + /// public int GetModuleControllerOffset(int slotId, int moduleId, int controllerId) { return _lib.sv_get_module_ctl_offset(slotId, moduleId, controllerId); } - /// + /// public ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId) { var ret = _lib.sv_get_module_ctl_type(slotId, moduleId, controllerId); if (ret < 0 || ret > 1) - throw new SunVoxException(ret, nameof(_lib.sv_get_module_ctl_type)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(controllerId)}: {controllerId}."; + throw new SunVoxException(ret, nameof(_lib.sv_get_module_ctl_type), details); + } return (ControllerType)ret; } - /// + /// public int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// public bool GetModuleExists(int slotId, int moduleId) { return GetModuleFlags(slotId, moduleId).Exists; } - /// + /// public FineTunePair GetModuleFineTune(int slotId, int moduleId) { var (fineTune, relativeNote) = Helper.UnpackTwoSignedShorts(_lib.sv_get_module_finetune(slotId, moduleId)); return new FineTunePair(fineTune, relativeNote); } - /// + /// public ModuleFlags GetModuleFlags(int slotId, int moduleId) { return _lib.sv_get_module_flags(slotId, moduleId); } - /// + /// public int[] GetModuleInputs(int slotId, int moduleId) { var moduleFlags = GetModuleFlags(slotId, moduleId); var inputCount = moduleFlags.InputUpperCount; if (!moduleFlags.Exists || inputCount == 0) + { return Array.Empty(); + } // memory managed by SunVox var ptr = _lib.sv_get_module_inputs(slotId, moduleId); return Helper.CopyIntArraySkipNegativeOnes(ptr, inputCount); } - /// + /// public string? GetModuleName(int slotId, int moduleId) { // memory managed by SunVox var ptr = _lib.sv_get_module_name(slotId, moduleId); - return Marshal.PtrToStringAnsi(ptr); + return Marshal.PtrToStringUTF8(ptr); } - /// + /// public int[] GetModuleOutputs(int slotId, int moduleId) { var moduleFlags = GetModuleFlags(slotId, moduleId); @@ -185,32 +205,34 @@ public int[] GetModuleOutputs(int slotId, int moduleId) return Helper.CopyIntArraySkipNegativeOnes(ptr, outputCount); } - /// + /// public (int x, int y) GetModulePosition(int slotId, int moduleId) { return Helper.UnpackTwoSignedShorts(_lib.sv_get_module_xy(slotId, moduleId)); } - /// + /// public string? GetModuleType(int slotId, int moduleId) { var ptr = _lib.sv_get_module_type(slotId, moduleId); - return Marshal.PtrToStringAnsi(ptr); + return Marshal.PtrToStringUTF8(ptr); } - /// + /// public int GetUpperModuleCount(int slotId) { var ret = _lib.sv_get_number_of_modules(slotId); if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_modules)); + { + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_modules), $"{nameof(slotId)}: {slotId}."); + } return ret; } - /// + /// public void LoadIntoMetaModule(int slotId, int moduleId, string path) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -218,22 +240,24 @@ public void LoadIntoMetaModule(int slotId, int moduleId, string path) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(path)}: '{path ?? ""}'."; + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load), details); + } } - /// + /// public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; try { - ret = _lib.sv_metamodule_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), - (uint)data.Length); + ret = _lib.sv_metamodule_load_from_memory(slotId, moduleId, handle.AddrOfPinnedObject(), (uint)data.Length); } finally { @@ -241,13 +265,16 @@ public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load_from_memory)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, data length: {data.Length}."; + throw new SunVoxException(ret, nameof(_lib.sv_metamodule_load_from_memory), details); + } } - /// + /// public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -255,14 +282,17 @@ public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(path)}: '{path ?? ""}'."; + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load), details); + } } - /// + /// public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -278,13 +308,16 @@ public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load_from_memory)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, data length: {data.Length}."; + throw new SunVoxException(ret, nameof(_lib.sv_vplayer_load_from_memory), details); + } } - /// + /// public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -292,15 +325,18 @@ public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_load_module)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(path)}: '{path ?? ""}', {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(z)}: {z}."; + throw new SunVoxException(ret, nameof(_lib.sv_load_module), details); + } return ret; } - /// + /// public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -315,14 +351,17 @@ public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) } if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_load_module_from_memory)); + { + var details = $"{nameof(slotId)}: {slotId}, data length: {data.Length}, {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(z)}: {z}."; + throw new SunVoxException(ret, nameof(_lib.sv_load_module_from_memory), details); + } return ret; } - /// + /// public void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -330,14 +369,17 @@ public void LoadSamplerSample(int slotId, int moduleId, string path, int? sample } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_sampler_load)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(path)}: '{path ?? ""}', {nameof(sampleSlot)}: {sampleSlot}."; + throw new SunVoxException(ret, nameof(_lib.sv_sampler_load), details); + } } - /// + /// public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -353,19 +395,25 @@ public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sample } if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_sampler_load_from_memory)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, data length: {data.Length}, {nameof(sampleSlot)}: {sampleSlot}."; + throw new SunVoxException(ret, nameof(_lib.sv_sampler_load_from_memory), details); + } } - /// + /// public int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data) { var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, false); if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curve)}: {curve}, data length: {data.Length}."; + throw new SunVoxException(ret, nameof(_lib.sv_module_curve), details); + } return ret; } - /// + /// public int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer) { var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); @@ -380,78 +428,101 @@ public int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short } } - /// + /// public void RemoveModule(int slotId, int moduleId) { var ret = _lib.sv_remove_module(slotId, moduleId); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_remove_module)); + { + throw new SunVoxException(ret, nameof(_lib.sv_remove_module), $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}."); + } } - /// + /// public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) { var color = r | (g << 8) | (b << 16); var ret = _lib.sv_set_module_color(slotId, moduleId, color); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_color)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(r)}: {r}, {nameof(g)}: {g}, {nameof(b)}: {b}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_color), details); + } } - /// + /// public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode) { var ret = _lib.sv_set_module_ctl_value(slotId, moduleId, controllerId, value, (int)scalingMode); if (ret != 0) - throw new SunVoxException(0, nameof(_lib.sv_set_module_ctl_value)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(controllerId)}: {controllerId}, {nameof(value)}: {value}, {nameof(scalingMode)}: {scalingMode}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_ctl_value), details); + } } - /// + /// public void SetModuleFineTune(int slotId, int moduleId, int fineTune) { var ret = _lib.sv_set_module_finetune(slotId, moduleId, fineTune); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_finetune)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(fineTune)}: {fineTune}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_finetune), details); + } } - /// + /// public void SetModuleName(int slotId, int moduleId, string name) { - var ptr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToCoTaskMemUTF8(name); try { var ret = _lib.sv_set_module_name(slotId, moduleId, ptr); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_name)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(name)}: '{name ?? ""}'."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_name), details); + } } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } } - /// + /// public void SetModulePosition(int slotId, int moduleId, int x, int y) { var ret = _lib.sv_set_module_xy(slotId, moduleId, x, y); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_xy)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(x)}: {x}, {nameof(y)}: {y}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_xy), details); + } } - /// + /// public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) { var ret = _lib.sv_set_module_relnote(slotId, moduleId, relativeNote); if (ret != 0) - throw new SunVoxException(ret, nameof(_lib.sv_set_module_relnote)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(relativeNote)}: {relativeNote}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_module_relnote), details); + } } - /// + /// public int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data) { var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, true); if (ret < 0) - throw new SunVoxException(ret, nameof(_lib.sv_module_curve)); + { + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curve)}: {curve}, data length: {data.Length}."; + throw new SunVoxException(ret, nameof(_lib.sv_module_curve), details); + } return ret; } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index 1f7a0bf..0c77177 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -1,25 +1,28 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp.Native { public partial class SunVoxLibNativeWrapper { + /// public int ClonePattern(int slotId, int originalPatternId, int x, int y) { var ret = _lib.sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(originalPatternId)}: {originalPatternId}, {nameof(x)}: {x}, {nameof(y)}: {y}."; + throw new SunVoxException(ret, nameof(_lib.sv_new_pattern), details); } return ret; } + /// public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null) { - var ptr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToCoTaskMemUTF8(name); int ret; try { @@ -27,12 +30,13 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_new_pattern)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(tracks)}: {tracks}, {nameof(lines)}: {lines}, {nameof(iconSeed)}: {iconSeed}, {nameof(name)}: '{name ?? ""}'."; + throw new SunVoxException(ret, nameof(_lib.sv_new_pattern), details); } return ret; @@ -41,7 +45,7 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic /// public int? FindPattern(int slotId, string name) { - var ptr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToCoTaskMemUTF8(name); int ret; try { @@ -49,12 +53,13 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret < -1) { - throw new SunVoxException(ret, nameof(_lib.sv_find_pattern)); + throw new SunVoxException(ret, nameof(_lib.sv_find_pattern), + $"{nameof(slotId)}: {slotId}, {nameof(name)}: '{name ?? ""}'."); } if (ret != -1) @@ -98,7 +103,8 @@ public int GetPatternEventValue(int slotId, int patternId, int track, int line, var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(track)}: {track}, {nameof(line)}: {line}, {nameof(column)}: {column}."; + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_event), details); } return ret; @@ -116,7 +122,8 @@ public int GetPatternLines(int slotId, int patternId) var ret = _lib.sv_get_pattern_lines(slotId, patternId); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines)); + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_lines), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}."); } return ret; @@ -128,7 +135,8 @@ public bool GetPatternMuted(int slotId, int patternId) var ret = _lib.sv_pattern_mute(slotId, patternId, -1); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}."); } return ret == 1; @@ -138,7 +146,7 @@ public bool GetPatternMuted(int slotId, int patternId) public string? GetPatternName(int slotId, int patternId) { var ptr = _lib.sv_get_pattern_name(slotId, patternId); - return Marshal.PtrToStringAnsi(ptr); + return Marshal.PtrToStringUTF8(ptr); } /// @@ -155,7 +163,8 @@ public int GetPatternTracks(int slotId, int patternId) var ret = _lib.sv_get_pattern_tracks(slotId, patternId); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks)); + throw new SunVoxException(ret, nameof(_lib.sv_get_pattern_tracks), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}."); } return ret; @@ -179,7 +188,7 @@ public int GetUpperPatternCount(int slotId) var ret = _lib.sv_get_number_of_patterns(slotId); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns)); + throw new SunVoxException(ret, nameof(_lib.sv_get_number_of_patterns), $"{nameof(slotId)}: {slotId}."); } return ret; @@ -191,7 +200,8 @@ public void RemovePattern(int slotId, int patternId) var ret = _lib.sv_remove_pattern(slotId, patternId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern)); + throw new SunVoxException(ret, nameof(_lib.sv_remove_pattern), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}."); } } @@ -389,7 +399,8 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, int var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, nn, vv, mm, ccee, xxyy); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(track)}: {track}, {nameof(line)}: {line}, {nameof(nn)}: {nn}, {nameof(vv)}: {vv}, {nameof(mm)}: {mm}, {nameof(ccee)}: {ccee}, {nameof(xxyy)}: {xxyy}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event), details); } } @@ -399,7 +410,8 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, Patt var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(track)}: {track}, {nameof(line)}: {line}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_event), details); } } @@ -409,25 +421,27 @@ public void SetPatternMuted(int slotId, int patternId, bool muted) var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute)); + throw new SunVoxException(ret, nameof(_lib.sv_pattern_mute), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(muted)}: {muted}."); } } /// public void SetPatternName(int slotId, int patternId, string name) { - var ptr = Marshal.StringToHGlobalAnsi(name); + var ptr = Marshal.StringToCoTaskMemUTF8(name); try { var ret = _lib.sv_set_pattern_name(slotId, patternId, ptr); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name)); + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_name), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(name)}: '{name ?? ""}'."); } } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } } @@ -437,7 +451,8 @@ public void SetPatternPosition(int slotId, int patternId, int x, int y) var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(x)}: {x}, {nameof(y)}: {y}."; + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_xy), details); } } @@ -447,7 +462,8 @@ public void SetPatternSize(int slotId, int patternId, int? tracks = null, int? l var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size)); + throw new SunVoxException(ret, nameof(_lib.sv_set_pattern_size), + $"{nameof(slotId)}: {slotId}, {nameof(patternId)}: {patternId}, {nameof(tracks)}: {tracks}, {nameof(lines)}: {lines}."); } } } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs index 9506011..9604f65 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -1,9 +1,9 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp.Native { - public partial class SunVoxLibNativeWrapper : ISunVoxLib + public sealed partial class SunVoxLibNativeWrapper : ISunVoxLib { private readonly ISunVoxLibC _lib; @@ -12,57 +12,57 @@ public SunVoxLibNativeWrapper(ISunVoxLibC nativeLibrary) _lib = nativeLibrary; } - /// + /// public bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// + /// public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// + /// public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// + /// public void CloseSlot(int slotId) { var ret = _lib.sv_close_slot(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_close_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_close_slot), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void Deinitialize() { var retCode = _lib.sv_deinit(); @@ -72,48 +72,52 @@ public void Deinitialize() } } - /// + /// public bool GetAutomaticStop(int slotId) { var ret = _lib.sv_get_autostop(slotId); if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(_lib.sv_get_autostop)); + { + throw new SunVoxException(ret, nameof(_lib.sv_get_autostop), $"{nameof(slotId)}: {slotId}."); + } return ret == 1; } - /// + /// public int GetCurrentLine(int slotId) { return _lib.sv_get_current_line(slotId); } - /// + /// public int GetCurrentLineWithTenthPart(int slotId) { return _lib.sv_get_current_line2(slotId); } - /// + /// public int GetCurrentSignalLevel(int slotId, int channel) { - return _lib.sv_get_current_signal_level(slotId, channel); + var ret = _lib.sv_get_current_signal_level(slotId, channel); + + if (ret < 0 || ret > 255) + { + throw new SunVoxException(ret, nameof(_lib.sv_get_current_signal_level), + $"{nameof(slotId)}: {slotId}, {nameof(channel)}: {channel}."); + } + + return ret; } - /// + /// public string? GetLog(int size) { + // memory managed by SunVox var ptr = _lib.sv_get_log(size); - try - { - return Marshal.PtrToStringAnsi(ptr); - } - finally - { - Marshal.FreeHGlobal(ptr); - } + return Marshal.PtrToStringUTF8(ptr); } - /// + /// public int GetSampleRate() { var ret = _lib.sv_get_sample_rate(); @@ -125,65 +129,63 @@ public int GetSampleRate() return ret; } - /// + /// public int GetSongBpm(int slotId) { var ret = _lib.sv_get_song_bpm(slotId); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_song_bpm)); + throw new SunVoxException(ret, nameof(_lib.sv_get_song_bpm), $"{nameof(slotId)}: {slotId}."); } return ret; } - /// + /// public uint GetSongLengthInFrames(int slotId) { - var ret = _lib.sv_get_song_length_frames(slotId); - return ret; + return _lib.sv_get_song_length_frames(slotId); } - /// + /// public uint GetSongLengthInLines(int slotId) { - var ret = _lib.sv_get_song_length_lines(slotId); - return ret; + return _lib.sv_get_song_length_lines(slotId); } - /// + /// public string? GetSongName(int slotId) { // memory managed by SunVox var ptr = _lib.sv_get_song_name(slotId); - return Marshal.PtrToStringAnsi(ptr); + return Marshal.PtrToStringUTF8(ptr); } - /// + /// public int GetSongTpl(int slotId) { var ret = _lib.sv_get_song_tpl(slotId); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_song_tpl)); + throw new SunVoxException(ret, nameof(_lib.sv_get_song_tpl), $"{nameof(slotId)}: {slotId}."); } return ret; } - /// + /// public uint GetTicks() { return _lib.sv_get_ticks(); } - /// + /// public uint GetTicksPerSecond() { return _lib.sv_get_ticks_per_second(); } - /// + /// public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) { var arr = new uint[length]; @@ -200,49 +202,51 @@ public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_get_time_map)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(startLine)}: {startLine}, {nameof(length)}: {length}, {nameof(type)}: {type}."; + throw new SunVoxException(ret, nameof(_lib.sv_get_time_map), details); } return arr; } - /// + /// public LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None) { - var ptr = Marshal.StringToHGlobalAnsi(config); + var ptr = Marshal.StringToCoTaskMemUTF8(config); try { var ret = _lib.sv_init(ptr, sampleRate, (int)channels, (uint)options); if (ret < 0) { - throw new SunVoxException(ret, nameof(_lib.sv_init)); + var details = $"{nameof(sampleRate)}: {sampleRate}, {nameof(channels)}: {channels}, {nameof(options)}: {options}."; + throw new SunVoxException(ret, nameof(_lib.sv_init), details); } return new LibraryVersion(ret); } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } } - /// + /// public bool IsPlaying(int slotId) { var ret = _lib.sv_end_of_song(slotId); if (ret != 0 && ret != 1) { - throw new SunVoxException(ret, nameof(_lib.sv_end_of_song)); + throw new SunVoxException(ret, nameof(_lib.sv_end_of_song), $"{nameof(slotId)}: {slotId}."); } return ret == 0; } - /// + /// public void Load(int slotId, string path) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -250,16 +254,17 @@ public void Load(int slotId, string path) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_load)); + throw new SunVoxException(ret, nameof(_lib.sv_load), + $"{nameof(slotId)}: {slotId}, {nameof(path)}: '{path ?? ""}'."); } } - /// + /// public void Load(int slotId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -275,47 +280,48 @@ public void Load(int slotId, byte[] data) if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_load)); + throw new SunVoxException(ret, nameof(_lib.sv_load_from_memory), + $"{nameof(slotId)}: {slotId}, data length: {data.Length}."); } } - /// + /// public void LockSlot(int slotId) { var ret = _lib.sv_lock_slot(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_lock_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_lock_slot), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void OpenSlot(int slotId) { var ret = _lib.sv_open_slot(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_open_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_open_slot), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void PauseAudioStream(int slotId) { var ret = _lib.sv_pause(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_pause)); + throw new SunVoxException(ret, nameof(_lib.sv_pause), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void ResumeAudioStream(int slotId) { var ret = _lib.sv_resume(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_resume)); + throw new SunVoxException(ret, nameof(_lib.sv_resume), $"{nameof(slotId)}: {slotId}."); } } @@ -324,24 +330,24 @@ public void ResumeStreamOnSyncEffect(int slotId) var ret = _lib.sv_sync_resume(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_sync_resume)); + throw new SunVoxException(ret, nameof(_lib.sv_sync_resume), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void Rewind(int slotId, int line) { var ret = _lib.sv_rewind(slotId, line); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_rewind)); + throw new SunVoxException(ret, nameof(_lib.sv_rewind), $"{nameof(slotId)}: {slotId}, {nameof(line)}: {line}."); } } - /// + /// public void Save(int slotId, string path) { - var ptr = Marshal.StringToHGlobalAnsi(path); + var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; try { @@ -349,12 +355,13 @@ public void Save(int slotId, string path) } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_save)); + throw new SunVoxException(ret, nameof(_lib.sv_save), + $"{nameof(slotId)}: {slotId}, {nameof(path)}: '{path ?? ""}'."); } } @@ -369,7 +376,8 @@ public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, var ret = _lib.sv_send_event(slotId, track, nn, vv, mm, ccee, xxyy); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_send_event)); + var details = $"{nameof(slotId)}: {slotId}, {nameof(track)}: {track}, {nameof(nn)}: {nn}, {nameof(vv)}: {vv}, {nameof(mm)}: {mm}, {nameof(ccee)}: {ccee}, {nameof(xxyy)}: {xxyy}."; + throw new SunVoxException(ret, nameof(_lib.sv_send_event), details); } } @@ -378,7 +386,8 @@ public void SetAutomaticStop(int slotId, bool autoStop) var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_autostop)); + throw new SunVoxException(ret, nameof(_lib.sv_set_autostop), + $"{nameof(slotId)}: {slotId}, {nameof(autoStop)}: {autoStop}."); } } @@ -387,69 +396,71 @@ public void SetSendEventTimestamp(int slotId, bool reset, int t) var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_set_event_t)); + throw new SunVoxException(ret, nameof(_lib.sv_set_event_t), + $"{nameof(slotId)}: {slotId}, {nameof(reset)}: {reset}, {nameof(t)}: {t}."); } } - /// + /// public void SetSongName(int slotId, string newName) { - var ptr = Marshal.StringToHGlobalAnsi(newName); + var ptr = Marshal.StringToCoTaskMemUTF8(newName); try { var ret = _lib.sv_set_song_name(slotId, ptr); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_init)); + throw new SunVoxException(ret, nameof(_lib.sv_set_song_name), + $"{nameof(slotId)}: {slotId}, {nameof(newName)}: '{newName ?? ""}'."); } } finally { - Marshal.FreeHGlobal(ptr); + Marshal.ZeroFreeCoTaskMemUTF8(ptr); } } - /// + /// public void StartPlayback(int slotId) { var ret = _lib.sv_play(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_play)); + throw new SunVoxException(ret, nameof(_lib.sv_play), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void StartPlaybackFromBeginning(int slotId) { var ret = _lib.sv_play_from_beginning(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_play_from_beginning)); + throw new SunVoxException(ret, nameof(_lib.sv_play_from_beginning), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void StopPlayback(int slotId) { var ret = _lib.sv_stop(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_stop)); + throw new SunVoxException(ret, nameof(_lib.sv_stop), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void UnlockSlot(int slotId) { var ret = _lib.sv_unlock_slot(slotId); if (ret != 0) { - throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot)); + throw new SunVoxException(ret, nameof(_lib.sv_unlock_slot), $"{nameof(slotId)}: {slotId}."); } } - /// + /// public void UpdateInputDevices() { var ret = _lib.sv_update_input(); @@ -459,13 +470,14 @@ public void UpdateInputDevices() } } - /// + /// public int Volume(int slotId, int volume) { var ret = _lib.sv_volume(slotId, volume); if (ret < 0 || ret > 256) { - throw new SunVoxException(ret, nameof(_lib.sv_volume)); + throw new SunVoxException(ret, nameof(_lib.sv_volume), + $"{nameof(slotId)}: {slotId}, {nameof(volume)}: {volume}."); } return ret; @@ -497,7 +509,10 @@ private bool AudioCallbackInternal(T[] outputBuffer, AudioChannels channels, } if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(_lib.sv_audio_callback)); + { + var details = $"{nameof(frames)}: {frames}, {nameof(latency)}: {latency}, {nameof(outTime)}: {outTime}."; + throw new SunVoxException(ret, nameof(_lib.sv_audio_callback), details); + } return ret == 1; } @@ -550,7 +565,10 @@ private bool AudioCallbackInternal(TOut[] outputBuffer, AudioChannels } if (ret != 0 && ret != 1) - throw new SunVoxException(ret, nameof(_lib.sv_audio_callback2)); + { + var details = $"{nameof(outputFrames)}: {outputFrames}, {nameof(latency)}: {latency}, {nameof(outTime)}: {outTime}, {nameof(inputType)}: {inputType}, {nameof(inputChannels)}: {inputChannels}."; + throw new SunVoxException(ret, nameof(_lib.sv_audio_callback2), details); + } return ret == 1; } diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 23a2738..86cc728 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp @@ -27,7 +27,9 @@ public static char GetNoteCharacter(this NoteName noteName) const string notes = "CcDdEFfGgAaB"; var i = (int)noteName; if (i < 0 || i > 11) + { return '?'; + } return notes[i]; } } @@ -91,7 +93,10 @@ public NoteName Name { get { - if (IsNormal) return (NoteName)((Value - 1) % 12); + if (IsNormal) + { + return (NoteName)((Value - 1) % 12); + } return NoteName.Other; } @@ -184,7 +189,7 @@ public override string ToString() { return Value switch { - 0 => "__", + 0 => " ", NOTECMD_NOTE_OFF => "--", NOTECMD_ALL_NOTES_OFF => "-!", NOTECMD_CLEAN_SYNTHS => "CS", diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index f9acee8..c9f0b58 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -1,8 +1,9 @@ -using System; +using System; using System.Runtime.InteropServices; namespace SunSharp { + [Serializable] [StructLayout(LayoutKind.Explicit, Size = 8)] public struct PatternEvent : IEquatable { @@ -98,14 +99,14 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } - public readonly override string ToString() + public override readonly string ToString() { return $"{(Note)NN}" + - $"{(VV != 0 ? $"{VV:X2}" : "__")}" + - $"{(MM != 0 ? $"{MM:X4}" : "__")}" + - $"{(CC != 0 ? $"{CC:X2}" : "__")}" + - $"{(EE != 0 ? $"{EE:X2}" : "__")}" + - $"{(XXYY != 0 ? $"{XXYY:X4}" : "__")}"; + $"{(VV != 0 ? $"{VV:X2}" : " ")}" + + $"{(MM != 0 ? $"{MM:X4}" : " ")}" + + $"{(CC != 0 ? $"{CC:X2}" : " ")}" + + $"{(EE != 0 ? $"{EE:X2}" : " ")}" + + $"{(XXYY != 0 ? $"{XXYY:X4}" : " ")}"; } public static bool operator ==(PatternEvent a, PatternEvent b) @@ -118,7 +119,7 @@ public readonly override string ToString() return a.Data != b.Data; } - public readonly override bool Equals(object? obj) + public override readonly bool Equals(object? obj) { return obj is PatternEvent e && this == e; } @@ -128,7 +129,7 @@ public readonly bool Equals(PatternEvent other) return this == other; } - public readonly override int GetHashCode() + public override readonly int GetHashCode() { return Data.GetHashCode(); } diff --git a/SunSharp/PatternHandle.cs b/SunSharp/PatternHandle.cs index c03db5e..191f6b9 100644 --- a/SunSharp/PatternHandle.cs +++ b/SunSharp/PatternHandle.cs @@ -1,4 +1,4 @@ -using SunSharp.Native; +using SunSharp.Native; namespace SunSharp { @@ -198,10 +198,7 @@ public int GetEventValue(int track, int line, Column column) var lib = _lib; var slotId = Id; var id = Id; - using (_slot.AcquireLock()) - { - return lib.GetPatternEventValue(slotId, id, track, line, column); - } + return lib.GetPatternEventValue(slotId, id, track, line, column); } } } diff --git a/SunSharp/RELEASE-NOTES.txt b/SunSharp/RELEASE-NOTES.txt index e290f25..b47131e 100644 --- a/SunSharp/RELEASE-NOTES.txt +++ b/SunSharp/RELEASE-NOTES.txt @@ -1,21 +1 @@ -SunSharp is distributed under the MIT license: - -Copyright (c) 2023 Sotakebk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +1.0.0 - Initial release diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index a32f544..cb39c00 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -1,4 +1,4 @@ -using System; +using System; using SunSharp.Native; namespace SunSharp diff --git a/SunSharp/SlotLock.cs b/SunSharp/SlotLock.cs index 1cbeae7..edbb5f8 100644 --- a/SunSharp/SlotLock.cs +++ b/SunSharp/SlotLock.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SunSharp { @@ -23,13 +23,15 @@ private void ReleaseUnmanagedResources() private void Dispose(bool disposing) { if (_disposed) + { return; + } ReleaseUnmanagedResources(); if (disposing) { - _instance.Dispose(); + // release managed resources } _disposed = true; diff --git a/SunSharp/Slots.cs b/SunSharp/Slots.cs index 211a611..fc941ee 100644 --- a/SunSharp/Slots.cs +++ b/SunSharp/Slots.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; @@ -11,14 +11,14 @@ public interface ISlots : IEnumerable /// /// Get a reference to a slot. There are 16 slots, so index must be in range 0-15. /// - /// - Slot this[int i] { get; } + /// + ISlot this[int i] { get; } /// /// Try to get and open a new slot. /// - /// if failed to find an unused slot. - bool TryOpenNewSlot([NotNullWhen(true)] out Slot? slot); + /// if failed to find an unused slot. + bool TryOpenNewSlot([NotNullWhen(true)] out ISlot? slot); } public readonly struct Slots : ISlots @@ -52,6 +52,8 @@ public Slot this[int i] } } + ISlot ISlots.this[int i] => this[i]; + /// public bool TryOpenNewSlot([NotNullWhen(true)] out Slot? slot) { @@ -63,6 +65,13 @@ public bool TryOpenNewSlot([NotNullWhen(true)] out Slot? slot) } } + bool ISlots.TryOpenNewSlot([NotNullWhen(true)] out ISlot? slot) + { + var result = TryOpenNewSlot(out Slot? typedSlot); + slot = typedSlot; + return result; + } + public IEnumerator GetEnumerator() => ((IEnumerable)_slots).GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => _slots.GetEnumerator(); diff --git a/SunSharp/SpecificModules.Generated.cs b/SunSharp/SpecificModules.Generated.cs deleted file mode 100644 index 0fde00d..0000000 --- a/SunSharp/SpecificModules.Generated.cs +++ /dev/null @@ -1,7853 +0,0 @@ -/* - * IMPORTANT! - * Do not modify this file manually. It was generated automatically by the CodeGeneration project. -*/ - -using SunSharp; - -namespace SunSharp.Modules -{ - #region enums - - public enum ADSRCurveType : ushort - { - Linear = 0, - Exp1 = 1, - Exp2 = 2, - Nexp1 = 3, - Nexp2 = 4, - Sin = 5, - Rect = 6, - SmoothRect = 7, - Bit2 = 8, - Bit3 = 9, - Bit4 = 10, - Bit5 = 11, - } - - public enum ADSRMode : ushort - { - Generator = 0, - AmplitudeModulatorMono = 1, - AmplitudeModulatorStereo = 2, - } - - public enum ADSROnNoteOffBehaviour : ushort - { - DoNothing = 0, - StopOnLastNote = 1, - Stop = 2, - } - - public enum ADSROnNoteOnBehaviour : ushort - { - DoNothing = 0, - StartOnFirstNote = 1, - Start = 2, - } - - public enum ADSRSmoothTransitions : ushort - { - Off = 0, - RestartAndVolumeChange = 1, - RestartAndVolumeChangeSmooth = 2, - VolumeChange = 3, - } - - public enum ADSRSustainMode : ushort - { - Off = 0, - On = 1, - Repeat = 2, - } - - public enum AnalogGeneratorEnvelopeMode : ushort - { - Off = 0, - SustainOff = 1, - SustainOn = 2, - } - - public enum AnalogGeneratorFilterType : ushort - { - Off = 0, - LP12dB = 1, - HP12dB = 2, - BP12dB = 3, - BR12dB = 4, - LP24dB = 5, - HP24dB = 6, - BP24dB = 7, - BR24dB = 8, - } - - public enum AnalogGeneratorOsc2Mode : ushort - { - Add = 0, - Sub = 1, - Mul = 2, - Min = 3, - Max = 4, - BitwiseAnd = 5, - BitwiseXor = 6, - } - - public enum AnalogGeneratorWaveform : ushort - { - Triangle = 0, - Saw = 1, - Square = 2, - NoiseSampler = 3, - Drawn = 4, - Sin = 5, - Hsin = 6, - Asin = 7, - DrawnSpline = 8, - NoiseSamplerSpline = 9, - WhiteNoise = 10, - PinkNoise = 11, - RedNoise = 12, - BlueNosie = 13, - VioletNoise = 14, - GreyNoise = 15, - Harmonics = 16, - } - - public enum Channels : ushort - { - Stereo = 0, - Mono = 1, - } - - public enum ChannelsInverted : ushort - { - Mono = 0, - Stereo = 1, - } - - public enum CompressorMode : ushort - { - Peak = 0, - RMS = 1, - PeakZeroLatency = 2, - } - - public enum ControlToNoteOffBehaviour : ushort - { - Nothing = 0, - OnMinPitch = 1, - OnMaxPitch = 2, - } - - public enum ControlToNoteOnBehaviour : ushort - { - Nothing = 0, - OnPitchChange = 1, - } - - public enum DelayUnit : ushort - { - SecondDivBy16384 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - SecondDivBy44100 = 7, - SecondDivBy48000 = 8, - Sample = 9, - } - - public enum DistortionType : ushort - { - Clipping = 0, - Foldback = 1, - Foldback2 = 2, - Foldback3 = 3, - Overflow = 4, - Overflow2 = 5, - SaturationFoldback = 6, - SaturationFoldbackSin = 7, - Saturation3 = 8, - Saturation4 = 9, - Saturation5 = 10, - } - - public enum EchoDelayUnit : ushort - { - SecondDivBy256 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum EchoFilter : ushort - { - Off = 0, - LP6dB = 1, - HP6dB = 2, - } - - public enum FFTBufferOverlap : ushort - { - None = 0, - x2 = 1, - x4 = 2, - } - - public enum FFTBufferSize : ushort - { - x64 = 0, - x128 = 1, - x256 = 2, - x512 = 3, - x1024 = 4, - x2048 = 5, - x4096 = 6, - x8192 = 7, - } - - public enum FFTSampleRate : ushort - { - Hz8000 = 0, - Hz11025 = 1, - Hz16000 = 2, - Hz22050 = 3, - Hz32000 = 4, - Hz44100 = 5, - Hz48000 = 6, - Hz88200 = 7, - Hz96000 = 8, - Hz192000 = 9, - } - - public enum FilterLFOFrequencyUnit : ushort - { - FiveHundredthHz = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum FilterLFOWaveform : ushort - { - Sin = 0, - Saw = 1, - Saw2 = 2, - Square = 3, - Random = 4, - } - - public enum FilterProMode : ushort - { - Stereo = 0, - Mono = 1, - StereoSmoothing = 2, - MonoSmoothing = 3, - } - - public enum FilterProRollOff : ushort - { - dB12 = 0, - dB24 = 1, - dB36 = 2, - dB48 = 3, - } - - public enum FilterProType : ushort - { - LP = 0, - HP = 1, - BPConstSkirtGain = 2, - BPConstPeakGain = 3, - Notch = 4, - AllPass = 5, - Peaking = 6, - LowShelf = 7, - HighShelf = 8, - LP6dB = 9, - HP6dB = 10, - } - - public enum FilterRollOff : ushort - { - dB12 = 0, - dB24 = 1, - dB36 = 2, - dB48 = 3, - } - - public enum FilterType : ushort - { - LP = 0, - HP = 1, - BP = 2, - Notch = 3, - } - - public enum FlangerLFOFrequencyUnit : ushort - { - FiveHundredthHz = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum FlangerLFOWaveform : ushort - { - Hsin = 0, - Sin = 1, - } - - public enum FMXCustomWaveform : ushort - { - Off = 0, - SingleCycle = 1, - Continuous = 2, - } - - public enum FMXModulationType : ushort - { - Phase = 0, - Frequency = 1, - Amplitude = 2, - Add = 3, - Sub = 4, - Min = 5, - Max = 6, - And = 7, - Xor = 8, - PhasePlus = 9, - } - - public enum FMXSampleRate : ushort - { - Hz8000 = 0, - Hz11025 = 1, - Hz16000 = 2, - Hz22050 = 3, - Hz32000 = 4, - Hz44100 = 5, - Native = 6, - } - - public enum FMXWaveform : ushort - { - Custom = 0, - Triangle = 1, - Triangle3 = 2, - Saw = 3, - Saw3 = 4, - Square = 5, - Sin = 6, - Hsin = 7, - Asin = 8, - Sin3 = 9, - } - - public enum GeneratorWaveform : ushort - { - Triangle = 0, - Saw = 1, - Square = 2, - NoiseSampler = 3, - Drawn = 4, - Sin = 5, - Hsin = 6, - Asin = 7, - Rsin = 8, - } - - public enum KickerWaveform : ushort - { - Triangle = 0, - Square = 1, - Sin = 2, - } - - public enum LFOFrequencyUnit : ushort - { - HzDividedBy64 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum LFOSineQuality : ushort - { - Auto = 0, - Low = 1, - Middle = 2, - High = 3, - } - - public enum LFOSmoothTransitions : ushort - { - Off = 0, - Waveform = 1, - } - - public enum LFOType : ushort - { - Amplitude = 0, - Panning = 1, - } - - public enum LFOWaveform : ushort - { - Sin = 0, - Square = 1, - Sin2 = 2, - Saw = 3, - Saw2 = 4, - Random = 5, - Triangle = 6, - RandomInterpolated = 7, - } - - public enum LoopMode : ushort - { - Normal = 0, - PingPong = 1, - } - - public enum LoopOnNoteOn : ushort - { - Restart = 0, - RestartCurrentIteration = 1, - } - - public enum LoopTimeUnit : ushort - { - LineDivBy128 = 0, - Line = 1, - HalfLine = 2, - OneThirdLine = 3, - Tick = 4, - Millisecond = 5, - Hz = 6, - } - - public enum MetaModulePatternMode : ushort - { - Off = 0, - OnRepeat = 1, - OnNoRepeat = 2, - OnRepeatEndless = 3, - OnNoRepeatEndless = 4, - } - - public enum ModulationType : ushort - { - Amplitude = 0, - Phase = 1, - PhaseAbsolute = 2, - } - - public enum PitchDetectorAlgorithm : ushort - { - FastZeroCrossing = 0, - Autocorrelation = 1, - Cepstrum = 2, - } - - public enum PitchDetectorAlgSampleRate : ushort - { - Hz12000 = 0, - Hz24000 = 1, - Hz44100 = 2, - } - - public enum PitchDetectorBufferSize : ushort - { - Ms5 = 0, - Ms10 = 1, - Ms21 = 2, - Ms42 = 3, - Ms85 = 4, - } - - public enum PitchShifterBypassMode : ushort - { - Off = 0, - SlowTransition = 1, - FastTransition = 2, - } - - public enum PitchToControlMode : ushort - { - FrequencyHz = 0, - Pitch = 1, - } - - public enum PitchToControlOnNoteOff : ushort - { - DoNothing = 0, - PitchDown = 1, - PitchUp = 2, - } - - public enum Quality : ushort - { - HQ = 0, - HQMono = 1, - LQ = 2, - LQMono = 3, - } - - public enum SamplerEnvelopeInterpolation : ushort - { - Off = 0, - Linear = 1, - } - - public enum SamplerInterpolation : ushort - { - Off = 0, - Linear = 1, - Spline = 2, - } - - public enum SoundToControlMode : ushort - { - LQ = 0, - HQ = 1, - } - - public enum SpectraVoiceHarmonicType : ushort - { - Hsin = 0, - Rect = 1, - Org1 = 2, - Org2 = 3, - Org3 = 4, - Org4 = 5, - Sin = 6, - Random = 7, - Triangle1 = 8, - Triangle2 = 9, - Overtones1 = 10, - Overtones2 = 11, - Overtones3 = 12, - Overtones4 = 13, - Overtones1Plus = 14, - Overtones2Plus = 15, - Overtones3Plus = 16, - Overtones4Plus = 17, - Metal = 18, - } - - public enum SpectraVoiceMode : ushort - { - HQ = 0, - HQMono = 1, - LQ = 2, - LQMono = 3, - HQSpline = 4, - } - - public enum SpectraVoiceResolution : ushort - { - Size4096 = 0, - Size8192 = 1, - Size16384 = 2, - Size32768 = 3, - Size65536 = 4, - Size131072 = 5, - } - - public enum Toggle : ushort - { - Off = 0, - On = 1, - } - - public enum ToggleInverse : ushort - { - On = 0, - Off = 1, - } - - public enum VelocityToControlOnNoteOff : ushort - { - DoNothing = 0, - VelocityDown = 1, - VelocityUp = 2, - } - - public enum VibratoFrequencyUnit : ushort - { - HzDividedBy64 = 0, - Millisecond = 1, - Hz = 2, - Tick = 3, - Line = 4, - HalfLine = 5, - OneThirdLine = 6, - } - - public enum VocalFilterVoiceType : ushort - { - Soprano = 0, - Alto = 1, - Tenor = 2, - Bass = 3, - } - - public enum VocalFilterVowel : ushort - { - A = 0, - E = 1, - I = 2, - O = 3, - U = 4, - } - - #endregion enums - - public static class ModuleExtensions - { - public static ADSRModuleHandle AsADSR(this ModuleHandle module) => new ADSRModuleHandle(module); - - public static AmplifierModuleHandle AsAmplifier(this ModuleHandle module) => new AmplifierModuleHandle(module); - - public static AnalogGeneratorModuleHandle AsAnalogGenerator(this ModuleHandle module) => new AnalogGeneratorModuleHandle(module); - - public static CompressorModuleHandle AsCompressor(this ModuleHandle module) => new CompressorModuleHandle(module); - - public static ControlToNoteModuleHandle AsControlToNote(this ModuleHandle module) => new ControlToNoteModuleHandle(module); - - public static DcBlockerModuleHandle AsDcBlocker(this ModuleHandle module) => new DcBlockerModuleHandle(module); - - public static DelayModuleHandle AsDelay(this ModuleHandle module) => new DelayModuleHandle(module); - - public static DistortionModuleHandle AsDistortion(this ModuleHandle module) => new DistortionModuleHandle(module); - - public static DrumSynthModuleHandle AsDrumSynth(this ModuleHandle module) => new DrumSynthModuleHandle(module); - - public static EchoModuleHandle AsEcho(this ModuleHandle module) => new EchoModuleHandle(module); - - public static EQModuleHandle AsEQ(this ModuleHandle module) => new EQModuleHandle(module); - - public static FeedbackModuleHandle AsFeedback(this ModuleHandle module) => new FeedbackModuleHandle(module); - - public static FFTModuleHandle AsFFT(this ModuleHandle module) => new FFTModuleHandle(module); - - public static FilterModuleHandle AsFilter(this ModuleHandle module) => new FilterModuleHandle(module); - - public static FilterProModuleHandle AsFilterPro(this ModuleHandle module) => new FilterProModuleHandle(module); - - public static FlangerModuleHandle AsFlanger(this ModuleHandle module) => new FlangerModuleHandle(module); - - public static FMModuleHandle AsFM(this ModuleHandle module) => new FMModuleHandle(module); - - public static FMXModuleHandle AsFMX(this ModuleHandle module) => new FMXModuleHandle(module); - - public static GeneratorModuleHandle AsGenerator(this ModuleHandle module) => new GeneratorModuleHandle(module); - - public static GlideModuleHandle AsGlide(this ModuleHandle module) => new GlideModuleHandle(module); - - public static GPIOModuleHandle AsGPIO(this ModuleHandle module) => new GPIOModuleHandle(module); - - public static InputModuleHandle AsInput(this ModuleHandle module) => new InputModuleHandle(module); - - public static KickerModuleHandle AsKicker(this ModuleHandle module) => new KickerModuleHandle(module); - - public static LFOModuleHandle AsLFO(this ModuleHandle module) => new LFOModuleHandle(module); - - public static LoopModuleHandle AsLoop(this ModuleHandle module) => new LoopModuleHandle(module); - - public static MetaModuleModuleHandle AsMetaModule(this ModuleHandle module) => new MetaModuleModuleHandle(module); - - public static ModulatorModuleHandle AsModulator(this ModuleHandle module) => new ModulatorModuleHandle(module); - - public static MultiControlModuleHandle AsMultiControl(this ModuleHandle module) => new MultiControlModuleHandle(module); - - public static MultiSynthModuleHandle AsMultiSynth(this ModuleHandle module) => new MultiSynthModuleHandle(module); - - public static OutputModuleHandle AsOutput(this ModuleHandle module) => new OutputModuleHandle(module); - - public static PitchDetectorModuleHandle AsPitchDetector(this ModuleHandle module) => new PitchDetectorModuleHandle(module); - - public static PitchShifterModuleHandle AsPitchShifter(this ModuleHandle module) => new PitchShifterModuleHandle(module); - - public static PitchToControlModuleHandle AsPitchToControl(this ModuleHandle module) => new PitchToControlModuleHandle(module); - - public static ReverbModuleHandle AsReverb(this ModuleHandle module) => new ReverbModuleHandle(module); - - public static SamplerModuleHandle AsSampler(this ModuleHandle module) => new SamplerModuleHandle(module); - - public static SoundToControlModuleHandle AsSoundToControl(this ModuleHandle module) => new SoundToControlModuleHandle(module); - - public static SpectraVoiceModuleHandle AsSpectraVoice(this ModuleHandle module) => new SpectraVoiceModuleHandle(module); - - public static VelocityToControlModuleHandle AsVelocityToControl(this ModuleHandle module) => new VelocityToControlModuleHandle(module); - - public static VibratoModuleHandle AsVibrato(this ModuleHandle module) => new VibratoModuleHandle(module); - - public static VocalFilterModuleHandle AsVocalFilter(this ModuleHandle module) => new VocalFilterModuleHandle(module); - - public static VorbisPlayerModuleHandle AsVorbisPlayer(this ModuleHandle module) => new VorbisPlayerModuleHandle(module); - - public static WaveShaperModuleHandle AsWaveShaper(this ModuleHandle module) => new WaveShaperModuleHandle(module); - } - - public struct ADSRModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ADSRModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 10000 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 10000 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Decay - /// Value range: 0 to 10000 - /// - public int GetDecay() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Decay - /// Value range: 0 to 10000 - /// - public void SetDecay(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo - /// - public ADSRMode GetMode() => (ADSRMode)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Generator, AmplitudeModulatorMono, AmplitudeModulatorStereo - /// - public void SetMode(ADSRMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, StopOnLastNote, Stop - /// - public ADSROnNoteOffBehaviour GetOnNoteOff() => (ADSROnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, StopOnLastNote, Stop - /// - public void SetOnNoteOff(ADSROnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: DoNothing, StartOnFirstNote, Start - /// - public ADSROnNoteOnBehaviour GetOnNoteOn() => (ADSROnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: DoNothing, StartOnFirstNote, Start - /// - public void SetOnNoteOn(ADSROnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 10000 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 10000 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve() => (ADSRCurveType)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve(ADSRCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public ADSRSmoothTransitions GetSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public void SetSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain() => (ADSRSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain(ADSRSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct AmplifierModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public AmplifierModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Balance - /// Value range: -128 to 128 - /// - public int GetBalance() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Balance - /// Value range: -128 to 128 - /// - public void SetBalance(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Bipolar DC Offset - /// Value range: -16384 to 16384 - /// - public int GetBipolarDCOffset() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Bipolar DC Offset - /// Value range: -16384 to 16384 - /// - public void SetBipolarDCOffset(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: DC Offset - /// Value range: -128 to 128 - /// - public int GetDCOffset() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: DC Offset - /// Value range: -128 to 128 - /// - public void SetDCOffset(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Fine volume - /// Value range: 0 to 32768 - /// - public int GetFineVolume() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Fine volume - /// Value range: 0 to 32768 - /// - public void SetFineVolume(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 5000 - /// - public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 5000 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct AnalogGeneratorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public AnalogGeneratorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 256 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 256 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1024 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1024 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential envelope - /// Possible values: Off, On - /// - public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential envelope - /// Possible values: Off, On - /// - public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: F.attack - /// Value range: 0 to 256 - /// - public int GetFAttack() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: F.attack - /// Value range: 0 to 256 - /// - public void SetFAttack(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: F.envelope - /// Possible values: Off, SustainOff, SustainOn - /// - public AnalogGeneratorEnvelopeMode GetFEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); - - /// - /// Original name: F.envelope - /// Possible values: Off, SustainOff, SustainOn - /// - public void SetFEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: F.exponential freq - /// Possible values: Off, On - /// - public Toggle GetFExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: F.exponential freq - /// Possible values: Off, On - /// - public void SetFExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 14000 - /// - public int GetFFreq() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 14000 - /// - public void SetFFreq(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB - /// - public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP12dB, HP12dB, BP12dB, BR12dB, LP24dB, HP24dB, BP24dB, BR24dB - /// - public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: F.release - /// Value range: 0 to 256 - /// - public int GetFRelease() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: F.release - /// Value range: 0 to 256 - /// - public void SetFRelease(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); - - /// - /// Original name: F.resonance - /// Value range: 0 to 1530 - /// - public int GetFResonance() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: F.resonance - /// Value range: 0 to 1530 - /// - public void SetFResonance(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public int GetNoise() => ModuleHandle.GetControllerValue(18, ValueScalingMode.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public void SetNoise(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 - /// Value range: -1000 to 1000 - /// - public int GetOsc2() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 - /// Value range: -1000 to 1000 - /// - public void SetOsc2(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 mode - /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor - /// - public AnalogGeneratorOsc2Mode GetOsc2Mode() => (AnalogGeneratorOsc2Mode)ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 mode - /// Possible values: Add, Sub, Mul, Min, Max, BitwiseAnd, BitwiseXor - /// - public void SetOsc2Mode(AnalogGeneratorOsc2Mode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 phase - /// Value range: 0 to 32768 - /// - public int GetOsc2Phase() => ModuleHandle.GetControllerValue(21, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 phase - /// Value range: 0 to 32768 - /// - public void SetOsc2Phase(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 volume - /// Value range: 0 to 32768 - /// - public int GetOsc2Volume() => ModuleHandle.GetControllerValue(19, ValueScalingMode.Displayed); - - /// - /// Original name: Osc2 volume - /// Value range: 0 to 32768 - /// - public void SetOsc2Volume(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 256 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 256 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics - /// - public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, DrawnSpline, NoiseSamplerSpline, WhiteNoise, PinkNoise, RedNoise, BlueNosie, VioletNoise, GreyNoise, Harmonics - /// - public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read DrawnValues containing 32 values. - /// Value range: -1 to 1. - /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. - /// - public void ReadDrawnValues(float[] buffer) - { - if (buffer.Length < 32) - throw new System.ArgumentException("Buffer must be at least of size 32"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write DrawnValues containing 32 values. - /// Value range: -1 to 1. - /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics'. - /// - public void WriteDrawnValues(float[] buffer) - { - if (buffer.Length < 32) - throw new System.ArgumentException("Buffer must be at least of size 32"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } - - public struct CompressorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public CompressorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 500 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 500 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Peak, RMS, PeakZeroLatency - /// - public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Peak, RMS, PeakZeroLatency - /// - public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 1 to 1000 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 1 to 1000 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Side-chain input - /// Value range: 0 to 32 - /// - public int GetSideChainInput() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Side-chain input - /// Value range: 0 to 32 - /// - public void SetSideChainInput(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Slope - /// Value range: 0 to 200 - /// - public int GetSlope() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Slope - /// Value range: 0 to 200 - /// - public void SetSlope(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 512 - /// - public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 512 - /// - public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct ControlToNoteModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ControlToNoteModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 120 - /// - public int GetFirstNote() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 120 - /// - public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: NoteOFF - /// Possible values: Nothing, OnMinPitch, OnMaxPitch - /// - public ControlToNoteOffBehaviour GetNoteOff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: NoteOFF - /// Possible values: Nothing, OnMinPitch, OnMaxPitch - /// - public void SetNoteOff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: NoteON - /// Possible values: Nothing, OnPitchChange - /// - public ControlToNoteOnBehaviour GetNoteOn() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: NoteON - /// Possible values: Nothing, OnPitchChange - /// - public void SetNoteOn(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch - /// Value range: 0 to 32768 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch - /// Value range: 0 to 32768 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 120 - /// - public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 120 - /// - public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: State - /// Possible values: Off, On - /// - public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public int GetVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public void SetVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct DcBlockerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DcBlockerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct DelayModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DelayModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Delay L - /// Value range: 0 to 256 - /// - public int GetDelayL() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Delay L - /// Value range: 0 to 256 - /// - public void SetDelayL(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Delay multiplier - /// Value range: 1 to 15 - /// - public int GetDelayMultiplier() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Delay multiplier - /// Value range: 1 to 15 - /// - public void SetDelayMultiplier(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Delay R - /// Value range: 0 to 256 - /// - public int GetDelayR() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Delay R - /// Value range: 0 to 256 - /// - public void SetDelayR(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample - /// - public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy16384, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine, SecondDivBy44100, SecondDivBy48000, Sample - /// - public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 512 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 512 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Inverse - /// Possible values: Off, On - /// - public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume L - /// Value range: 0 to 256 - /// - public int GetVolumeL() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Volume L - /// Value range: 0 to 256 - /// - public void SetVolumeL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume R - /// Value range: 0 to 256 - /// - public int GetVolumeR() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Volume R - /// Value range: 0 to 256 - /// - public void SetVolumeR(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 512 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 512 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct DistortionModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DistortionModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Bit depth - /// Value range: 1 to 16 - /// - public int GetBitDepth() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Bit depth - /// Value range: 1 to 16 - /// - public void SetBitDepth(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 - /// - public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: Clipping, Foldback, Foldback2, Foldback3, Overflow, Overflow2, SaturationFoldback, SaturationFoldbackSin, Saturation3, Saturation4, Saturation5 - /// - public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 44100 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 44100 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public int GetNoise() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Noise - /// Value range: 0 to 256 - /// - public void SetNoise(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Power - /// Value range: 0 to 256 - /// - public int GetPower() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Power - /// Value range: 0 to 256 - /// - public void SetPower(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct DrumSynthModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public DrumSynthModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Bass length - /// Value range: 0 to 256 - /// - public int GetBassLength() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Bass length - /// Value range: 0 to 256 - /// - public void SetBassLength(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Bass panning - /// Value range: -128 to 128 - /// - public int GetBassPanning() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: Bass panning - /// Value range: -128 to 128 - /// - public void SetBassPanning(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); - - /// - /// Original name: Bass power - /// Value range: 0 to 256 - /// - public int GetBassPower() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Bass power - /// Value range: 0 to 256 - /// - public void SetBassPower(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Bass tone - /// Value range: 0 to 256 - /// - public int GetBassTone() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Bass tone - /// Value range: 0 to 256 - /// - public void SetBassTone(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Bass volume - /// Value range: 0 to 512 - /// - public int GetBassVolume() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Bass volume - /// Value range: 0 to 512 - /// - public void SetBassVolume(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat length - /// Value range: 0 to 256 - /// - public int GetHihatLength() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat length - /// Value range: 0 to 256 - /// - public void SetHihatLength(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat panning - /// Value range: -128 to 128 - /// - public int GetHihatPanning() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat panning - /// Value range: -128 to 128 - /// - public void SetHihatPanning(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat volume - /// Value range: 0 to 512 - /// - public int GetHihatVolume() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Hihat volume - /// Value range: 0 to 512 - /// - public void SetHihatVolume(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 8 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 8 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Snare length - /// Value range: 0 to 256 - /// - public int GetSnareLength() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Snare length - /// Value range: 0 to 256 - /// - public void SetSnareLength(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: Snare panning - /// Value range: -128 to 128 - /// - public int GetSnarePanning() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: Snare panning - /// Value range: -128 to 128 - /// - public void SetSnarePanning(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); - - /// - /// Original name: Snare tone - /// Value range: 0 to 256 - /// - public int GetSnareTone() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Snare tone - /// Value range: 0 to 256 - /// - public void SetSnareTone(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Snare volume - /// Value range: 0 to 512 - /// - public int GetSnareVolume() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Snare volume - /// Value range: 0 to 512 - /// - public void SetSnareVolume(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct EchoModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public EchoModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Delay - /// Value range: 0 to 256 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Delay - /// Value range: 0 to 256 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Delay unit - /// Possible values: SecondDivBy256, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 22000 - /// - public int GetFFreq() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: F.freq - /// Value range: 0 to 22000 - /// - public void SetFFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP6dB, HP6dB - /// - public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Filter - /// Possible values: Off, LP6dB, HP6dB - /// - public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Right channel offset - /// Possible values: Off, On - /// - public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Right channel offset - /// Possible values: Off, On - /// - public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Right channel offset - /// Value range: 0 to 32768 - /// Delay/32768 - /// - public int GetRightChannelOffsetDelay() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Right channel offset - /// Value range: 0 to 32768 - /// Delay/32768 - /// - public void SetRightChannelOffsetDelay(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct EQModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public EQModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: High - /// Value range: 0 to 512 - /// - public int GetHigh() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: High - /// Value range: 0 to 512 - /// - public void SetHigh(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Low - /// Value range: 0 to 512 - /// - public int GetLow() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Low - /// Value range: 0 to 512 - /// - public void SetLow(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Middle - /// Value range: 0 to 512 - /// - public int GetMiddle() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Middle - /// Value range: 0 to 512 - /// - public void SetMiddle(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FeedbackModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FeedbackModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 10000 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 10000 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FFTModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FFTModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: All-pass filter - /// Value range: 0 to 32768 - /// - public int GetAllPassFilter() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: All-pass filter - /// Value range: 0 to 32768 - /// - public void SetAllPassFilter(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Buffer (samples) - /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 - /// - public FFTBufferSize GetBufferSamples() => (FFTBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Buffer (samples) - /// Possible values: x64, x128, x256, x512, x1024, x2048, x4096, x8192 - /// - public void SetBufferSamples(FFTBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Buf overlap - /// Possible values: None, x2, x4 - /// - public FFTBufferOverlap GetBufOverlap() => (FFTBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Buf overlap - /// Possible values: None, x2, x4 - /// - public void SetBufOverlap(FFTBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Deform1 - /// Value range: 0 to 32768 - /// - public int GetDeform1() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: Deform1 - /// Value range: 0 to 32768 - /// - public void SetDeform1(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); - - /// - /// Original name: Deform2 - /// Value range: 0 to 32768 - /// - public int GetDeform2() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: Deform2 - /// Value range: 0 to 32768 - /// - public void SetDeform2(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq shift - /// Value range: -4096 to 4096 - /// - public int GetFreqShift() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Freq shift - /// Value range: -4096 to 4096 - /// - public void SetFreqShift(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency spread - /// Value range: 0 to 32768 - /// - public int GetFrequencySpread() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency spread - /// Value range: 0 to 32768 - /// - public void SetFrequencySpread(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: HP cutoff - /// Value range: 0 to 32768 - /// - public int GetHPCutoff() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: HP cutoff - /// Value range: 0 to 32768 - /// - public void SetHPCutoff(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); - - /// - /// Original name: LP cutoff - /// Value range: 0 to 32768 - /// - public int GetLPCutoff() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); - - /// - /// Original name: LP cutoff - /// Value range: 0 to 32768 - /// - public void SetLPCutoff(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); - - /// - /// Original name: Noise reduction - /// Value range: 0 to 32768 - /// - public int GetNoiseReduction() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Noise reduction - /// Value range: 0 to 32768 - /// - public void SetNoiseReduction(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Phase gain (norm=16384) - /// Value range: 0 to 32768 - /// - public int GetPhaseGainNorm16384() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Phase gain (norm=16384) - /// Value range: 0 to 32768 - /// - public void SetPhaseGainNorm16384(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public int GetRandomPhase() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase (lite) - /// Value range: 0 to 32768 - /// - public int GetRandomPhaseLite() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase (lite) - /// Value range: 0 to 32768 - /// - public void SetRandomPhaseLite(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 - /// - public FFTSampleRate GetSampleRate() => (FFTSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Hz48000, Hz88200, Hz96000, Hz192000 - /// - public void SetSampleRate(FFTSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FilterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FilterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BP, Notch - /// - public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BP, Notch - /// - public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 14000 - /// - public int GetFrequency() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 14000 - /// - public void SetFrequency(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Impulse - /// Value range: 0 to 14000 - /// - public int GetImpulse() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Impulse - /// Value range: 0 to 14000 - /// - public void SetImpulse(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public int GetMix() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Resonance - /// Value range: 0 to 1530 - /// - public int GetResonance() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Resonance - /// Value range: 0 to 1530 - /// - public void SetResonance(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FilterProModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FilterProModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential freq - /// Possible values: Off, On - /// - public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB - /// - public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: LP, HP, BPConstSkirtGain, BPConstPeakGain, Notch, AllPass, Peaking, LowShelf, HighShelf, LP6dB, HP6dB - /// - public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 22000 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 0 to 22000 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq finetune - /// Value range: -1000 to 1000 - /// - public int GetFreqFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Freq finetune - /// Value range: -1000 to 1000 - /// - public void SetFreqFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public int GetFreqScale() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: -16384 to 16384 - /// - public int GetGain() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: -16384 to 16384 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 32768 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 32768 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 1024 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FilterLFOFrequencyUnit GetLFOFreqUnit() => (FilterLFOFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FilterLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public FilterLFOWaveform GetLFOWaveform() => (FilterLFOWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Sin, Saw, Saw2, Square, Random - /// - public void SetLFOWaveform(FilterLFOWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 32768 - /// - public int GetMix() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 32768 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing - /// - public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono, StereoSmoothing, MonoSmoothing - /// - public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Q - /// Value range: 0 to 32768 - /// - public int GetQ() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Q - /// Value range: 0 to 32768 - /// - public void SetQ(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FlangerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FlangerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Delay - /// Value range: 8 to 1000 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Delay - /// Value range: 8 to 1000 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public int GetLFOAmp() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: LFO amp - /// Value range: 0 to 256 - /// - public void SetLFOAmp(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 512 - /// - public int GetLFOFreq() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq - /// Value range: 0 to 512 - /// - public void SetLFOFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public FlangerLFOFrequencyUnit GetLFOFreqUnit() => (FlangerLFOFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: LFO freq unit - /// Possible values: FiveHundredthHz, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetLFOFreqUnit(FlangerLFOFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Hsin, Sin - /// - public FlangerLFOWaveform GetLFOWaveform() => (FlangerLFOWaveform)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: LFO waveform - /// Possible values: Hsin, Sin - /// - public void SetLFOWaveform(FlangerLFOWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 256 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public int GetSetLFOPhase() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Set LFO phase - /// Value range: 0 to 256 - /// - public void SetSetLFOPhase(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FMModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FMModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: C.Attack - /// Value range: 0 to 512 - /// - public int GetCAttack() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: C.Attack - /// Value range: 0 to 512 - /// - public void SetCAttack(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: C.Decay - /// Value range: 0 to 512 - /// - public int GetCDecay() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: C.Decay - /// Value range: 0 to 512 - /// - public void SetCDecay(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: C.Freq ratio - /// Value range: 0 to 16 - /// - public int GetCFreqRatio() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: C.Freq ratio - /// Value range: 0 to 16 - /// - public void SetCFreqRatio(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: C.Release - /// Value range: 0 to 512 - /// - public int GetCRelease() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: C.Release - /// Value range: 0 to 512 - /// - public void SetCRelease(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: C.Sustain - /// Value range: 0 to 256 - /// - public int GetCSustain() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: C.Sustain - /// Value range: 0 to 256 - /// - public void SetCSustain(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: C.Volume - /// Value range: 0 to 256 - /// - public int GetCVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: C.Volume - /// Value range: 0 to 256 - /// - public void SetCVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Attack - /// Value range: 0 to 512 - /// - public int GetMAttack() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: M.Attack - /// Value range: 0 to 512 - /// - public void SetMAttack(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Decay - /// Value range: 0 to 512 - /// - public int GetMDecay() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: M.Decay - /// Value range: 0 to 512 - /// - public void SetMDecay(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Freq ratio - /// Value range: 0 to 16 - /// - public int GetMFreqRatio() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: M.Freq ratio - /// Value range: 0 to 16 - /// - public void SetMFreqRatio(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Release - /// Value range: 0 to 512 - /// - public int GetMRelease() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: M.Release - /// Value range: 0 to 512 - /// - public void SetMRelease(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Scaling per key - /// Value range: 0 to 4 - /// - public int GetMScalingPerKey() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: M.Scaling per key - /// Value range: 0 to 4 - /// - public void SetMScalingPerKey(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Self-modulation - /// Value range: 0 to 256 - /// - public int GetMSelfModulation() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: M.Self-modulation - /// Value range: 0 to 256 - /// - public void SetMSelfModulation(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Sustain - /// Value range: 0 to 256 - /// - public int GetMSustain() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: M.Sustain - /// Value range: 0 to 256 - /// - public void SetMSustain(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); - - /// - /// Original name: M.Volume - /// Value range: 0 to 256 - /// - public int GetMVolume() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: M.Volume - /// Value range: 0 to 256 - /// - public void SetMVolume(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct FMXModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public FMXModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region module type-specific methods - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetVolume(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(9 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetVolume(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(9 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetAttack(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(14 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetAttack(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(14 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetDecay(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(19 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetDecay(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(19 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSustainLevel(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSustainLevel(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public int GetRelease(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(29 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 10000 - /// - public void SetRelease(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(29 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(34 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(34 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(39 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(39 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (ADSRCurveType)ModuleHandle.GetControllerValue(44 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve(int index, ADSRCurveType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(44 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSustain(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(24 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSustain(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(24 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Off, On - /// - public Toggle GetSustainPedal(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (Toggle)ModuleHandle.GetControllerValue(54 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Off, On - /// - public void SetSustainPedal(int index, Toggle value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(54 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(59 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(59 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(64 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(64 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(69 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(69 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (FMXWaveform)ModuleHandle.GetControllerValue(74 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform(int index, FMXWaveform value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(74 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetNoise(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(79 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetNoise(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(79 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetPhase(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(84 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetPhase(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(84 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(89 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(89 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(94 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(94 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetSelfModulation(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(99 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetSelfModulation(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(99 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public int GetFeedback(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return ModuleHandle.GetControllerValue(104 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Value range: 0 to 32768 - /// - public void SetFeedback(int index, int value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(104 + index - 1, value, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType(int index) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - return (FMXModulationType)ModuleHandle.GetControllerValue(109 + index - 1, ValueScalingMode.Displayed); - } - - /// - /// index range: 1 to 5 - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType(int index, FMXModulationType value) - { - if (index < 1 || index > 5) - throw new System.ArgumentOutOfRangeException(nameof(index)); - - ModuleHandle.SetControllerValue(109 + index - 1, (int)value, ValueScalingMode.Displayed); - } - - #endregion module type-specific methods - - #region controllers - - /// - /// Original name: ADSR smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public ADSRSmoothTransitions GetADSRSmoothTransitions() => (ADSRSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: ADSR smooth transitions - /// Possible values: Off, RestartAndVolumeChange, RestartAndVolumeChangeSmooth, VolumeChange - /// - public void SetADSRSmoothTransitions(ADSRSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack1() => ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack1(int value) => ModuleHandle.SetControllerValue(14, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack2() => ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack2(int value) => ModuleHandle.SetControllerValue(15, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack3() => ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack3(int value) => ModuleHandle.SetControllerValue(16, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack4() => ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack4(int value) => ModuleHandle.SetControllerValue(17, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Attack - /// Value range: 0 to 10000 - /// - public int GetAttack5() => ModuleHandle.GetControllerValue(18, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Attack - /// Value range: 0 to 10000 - /// - public void SetAttack5(int value) => ModuleHandle.SetControllerValue(18, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(34, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(34, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(35, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(35, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(36, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(36, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(37, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(37, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetAttackCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(38, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Attack curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetAttackCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(38, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch1() => ModuleHandle.GetControllerValue(94, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch1(int value) => ModuleHandle.SetControllerValue(94, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch2() => ModuleHandle.GetControllerValue(95, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch2(int value) => ModuleHandle.SetControllerValue(95, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch3() => ModuleHandle.GetControllerValue(96, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch3(int value) => ModuleHandle.SetControllerValue(96, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch4() => ModuleHandle.GetControllerValue(97, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch4(int value) => ModuleHandle.SetControllerValue(97, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Constant pitch - /// Value range: -8192 to 8192 - /// - public int GetConstantPitch5() => ModuleHandle.GetControllerValue(98, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Constant pitch - /// Value range: -8192 to 8192 - /// - public void SetConstantPitch5(int value) => ModuleHandle.SetControllerValue(98, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay1() => ModuleHandle.GetControllerValue(19, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay1(int value) => ModuleHandle.SetControllerValue(19, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay2() => ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay2(int value) => ModuleHandle.SetControllerValue(20, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay3() => ModuleHandle.GetControllerValue(21, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay3(int value) => ModuleHandle.SetControllerValue(21, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay4() => ModuleHandle.GetControllerValue(22, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay4(int value) => ModuleHandle.SetControllerValue(22, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Decay - /// Value range: 0 to 10000 - /// - public int GetDecay5() => ModuleHandle.GetControllerValue(23, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Decay - /// Value range: 0 to 10000 - /// - public void SetDecay5(int value) => ModuleHandle.SetControllerValue(23, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(39, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(39, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(40, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(40, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(41, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(41, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(42, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(42, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetDecayCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(43, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Decay curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetDecayCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(43, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Envelope gain - /// Value range: 0 to 8000 - /// - public int GetEnvelopeGain() => ModuleHandle.GetControllerValue(118, ValueScalingMode.Displayed); - - /// - /// Original name: Envelope gain - /// Value range: 0 to 8000 - /// - public void SetEnvelopeGain(int value) => ModuleHandle.SetControllerValue(118, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey1() => ModuleHandle.GetControllerValue(59, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(59, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey2() => ModuleHandle.GetControllerValue(60, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(60, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey3() => ModuleHandle.GetControllerValue(61, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(61, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey4() => ModuleHandle.GetControllerValue(62, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(62, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Envelope scaling per key - /// Value range: -128 to 128 - /// - public int GetEnvelopeScalingPerKey5() => ModuleHandle.GetControllerValue(63, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Envelope scaling per key - /// Value range: -128 to 128 - /// - public void SetEnvelopeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(63, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback1() => ModuleHandle.GetControllerValue(104, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback1(int value) => ModuleHandle.SetControllerValue(104, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback2() => ModuleHandle.GetControllerValue(105, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback2(int value) => ModuleHandle.SetControllerValue(105, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback3() => ModuleHandle.GetControllerValue(106, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback3(int value) => ModuleHandle.SetControllerValue(106, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback4() => ModuleHandle.GetControllerValue(107, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback4(int value) => ModuleHandle.SetControllerValue(107, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Feedback - /// Value range: 0 to 32768 - /// - public int GetFeedback5() => ModuleHandle.GetControllerValue(108, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Feedback - /// Value range: 0 to 32768 - /// - public void SetFeedback5(int value) => ModuleHandle.SetControllerValue(108, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply1() => ModuleHandle.GetControllerValue(89, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply1(int value) => ModuleHandle.SetControllerValue(89, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply2() => ModuleHandle.GetControllerValue(90, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply2(int value) => ModuleHandle.SetControllerValue(90, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply3() => ModuleHandle.GetControllerValue(91, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply3(int value) => ModuleHandle.SetControllerValue(91, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply4() => ModuleHandle.GetControllerValue(92, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply4(int value) => ModuleHandle.SetControllerValue(92, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Freq multiply - /// Value range: 0 to 32000 - /// - public int GetFreqMultiply5() => ModuleHandle.GetControllerValue(93, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Freq multiply - /// Value range: 0 to 32000 - /// - public void SetFreqMultiply5(int value) => ModuleHandle.SetControllerValue(93, value, ValueScalingMode.Displayed); - - /// - /// Original name: Input -> Custom waveform - /// Possible values: Off, SingleCycle, Continuous - /// - public FMXCustomWaveform GetInputCustomWaveform() => (FMXCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Input -> Custom waveform - /// Possible values: Off, SingleCycle, Continuous - /// - public void SetInputCustomWaveform(FMXCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Input -> Operator # - /// Value range: 0 to 5 - /// - public int GetInputOperatorNum() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Input -> Operator # - /// Value range: 0 to 5 - /// - public void SetInputOperatorNum(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType1() => (FMXModulationType)ModuleHandle.GetControllerValue(109, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType1(FMXModulationType value) => ModuleHandle.SetControllerValue(109, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType2() => (FMXModulationType)ModuleHandle.GetControllerValue(110, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType2(FMXModulationType value) => ModuleHandle.SetControllerValue(110, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType3() => (FMXModulationType)ModuleHandle.GetControllerValue(111, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType3(FMXModulationType value) => ModuleHandle.SetControllerValue(111, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType4() => (FMXModulationType)ModuleHandle.GetControllerValue(112, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType4(FMXModulationType value) => ModuleHandle.SetControllerValue(112, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public FMXModulationType GetModulationType5() => (FMXModulationType)ModuleHandle.GetControllerValue(113, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Modulation type - /// Possible values: Phase, Frequency, Amplitude, Add, Sub, Min, Max, And, Xor, PhasePlus - /// - public void SetModulationType5(FMXModulationType value) => ModuleHandle.SetControllerValue(113, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise1() => ModuleHandle.GetControllerValue(79, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise1(int value) => ModuleHandle.SetControllerValue(79, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise2() => ModuleHandle.GetControllerValue(80, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise2(int value) => ModuleHandle.SetControllerValue(80, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise3() => ModuleHandle.GetControllerValue(81, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise3(int value) => ModuleHandle.SetControllerValue(81, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise4() => ModuleHandle.GetControllerValue(82, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise4(int value) => ModuleHandle.SetControllerValue(82, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Noise - /// Value range: 0 to 32768 - /// - public int GetNoise5() => ModuleHandle.GetControllerValue(83, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Noise - /// Value range: 0 to 32768 - /// - public void SetNoise5(int value) => ModuleHandle.SetControllerValue(83, value, ValueScalingMode.Displayed); - - /// - /// Original name: Noise filter (32768 - OFF) - /// Value range: 0 to 32768 - /// - public int GetNoiseFilter() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Noise filter (32768 - OFF) - /// Value range: 0 to 32768 - /// - public void SetNoiseFilter(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Output mode - /// Value range: 0 to 31 - /// - public int GetOutputMode1() => ModuleHandle.GetControllerValue(114, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Output mode - /// Value range: 0 to 31 - /// - public void SetOutputMode1(int value) => ModuleHandle.SetControllerValue(114, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Output mode - /// Value range: 0 to 15 - /// - public int GetOutputMode2() => ModuleHandle.GetControllerValue(115, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Output mode - /// Value range: 0 to 15 - /// - public void SetOutputMode2(int value) => ModuleHandle.SetControllerValue(115, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Output mode - /// Value range: 0 to 7 - /// - public int GetOutputMode3() => ModuleHandle.GetControllerValue(116, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Output mode - /// Value range: 0 to 7 - /// - public void SetOutputMode3(int value) => ModuleHandle.SetControllerValue(116, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Output mode - /// Value range: 0 to 3 - /// - public int GetOutputMode4() => ModuleHandle.GetControllerValue(117, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Output mode - /// Value range: 0 to 3 - /// - public void SetOutputMode4(int value) => ModuleHandle.SetControllerValue(117, value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase1() => ModuleHandle.GetControllerValue(84, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase1(int value) => ModuleHandle.SetControllerValue(84, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase2() => ModuleHandle.GetControllerValue(85, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase2(int value) => ModuleHandle.SetControllerValue(85, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase3() => ModuleHandle.GetControllerValue(86, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase3(int value) => ModuleHandle.SetControllerValue(86, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase4() => ModuleHandle.GetControllerValue(87, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase4(int value) => ModuleHandle.SetControllerValue(87, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Phase - /// Value range: 0 to 32768 - /// - public int GetPhase5() => ModuleHandle.GetControllerValue(88, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Phase - /// Value range: 0 to 32768 - /// - public void SetPhase5(int value) => ModuleHandle.SetControllerValue(88, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Release - /// Value range: 0 to 10000 - /// - public int GetRelease1() => ModuleHandle.GetControllerValue(29, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Release - /// Value range: 0 to 10000 - /// - public void SetRelease1(int value) => ModuleHandle.SetControllerValue(29, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Release - /// Value range: 0 to 10000 - /// - public int GetRelease2() => ModuleHandle.GetControllerValue(30, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Release - /// Value range: 0 to 10000 - /// - public void SetRelease2(int value) => ModuleHandle.SetControllerValue(30, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Release - /// Value range: 0 to 10000 - /// - public int GetRelease3() => ModuleHandle.GetControllerValue(31, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Release - /// Value range: 0 to 10000 - /// - public void SetRelease3(int value) => ModuleHandle.SetControllerValue(31, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Release - /// Value range: 0 to 10000 - /// - public int GetRelease4() => ModuleHandle.GetControllerValue(32, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Release - /// Value range: 0 to 10000 - /// - public void SetRelease4(int value) => ModuleHandle.SetControllerValue(32, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Release - /// Value range: 0 to 10000 - /// - public int GetRelease5() => ModuleHandle.GetControllerValue(33, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Release - /// Value range: 0 to 10000 - /// - public void SetRelease5(int value) => ModuleHandle.SetControllerValue(33, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve1() => (ADSRCurveType)ModuleHandle.GetControllerValue(44, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve1(ADSRCurveType value) => ModuleHandle.SetControllerValue(44, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve2() => (ADSRCurveType)ModuleHandle.GetControllerValue(45, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve2(ADSRCurveType value) => ModuleHandle.SetControllerValue(45, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve3() => (ADSRCurveType)ModuleHandle.GetControllerValue(46, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve3(ADSRCurveType value) => ModuleHandle.SetControllerValue(46, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve4() => (ADSRCurveType)ModuleHandle.GetControllerValue(47, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve4(ADSRCurveType value) => ModuleHandle.SetControllerValue(47, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public ADSRCurveType GetReleaseCurve5() => (ADSRCurveType)ModuleHandle.GetControllerValue(48, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Release curve - /// Possible values: Linear, Exp1, Exp2, Nexp1, Nexp2, Sin, Rect, SmoothRect, Bit2, Bit3, Bit4, Bit5 - /// - public void SetReleaseCurve5(ADSRCurveType value) => ModuleHandle.SetControllerValue(48, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native - /// - public FMXSampleRate GetSampleRate() => (FMXSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Possible values: Hz8000, Hz11025, Hz16000, Hz22050, Hz32000, Hz44100, Native - /// - public void SetSampleRate(FMXSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation1() => ModuleHandle.GetControllerValue(99, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation1(int value) => ModuleHandle.SetControllerValue(99, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation2() => ModuleHandle.GetControllerValue(100, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation2(int value) => ModuleHandle.SetControllerValue(100, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation3() => ModuleHandle.GetControllerValue(101, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation3(int value) => ModuleHandle.SetControllerValue(101, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation4() => ModuleHandle.GetControllerValue(102, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation4(int value) => ModuleHandle.SetControllerValue(102, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Self-modulation - /// Value range: 0 to 32768 - /// - public int GetSelfModulation5() => ModuleHandle.GetControllerValue(103, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Self-modulation - /// Value range: 0 to 32768 - /// - public void SetSelfModulation5(int value) => ModuleHandle.SetControllerValue(103, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain1() => (ADSRSustainMode)ModuleHandle.GetControllerValue(49, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain1(ADSRSustainMode value) => ModuleHandle.SetControllerValue(49, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain2() => (ADSRSustainMode)ModuleHandle.GetControllerValue(50, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain2(ADSRSustainMode value) => ModuleHandle.SetControllerValue(50, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain3() => (ADSRSustainMode)ModuleHandle.GetControllerValue(51, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain3(ADSRSustainMode value) => ModuleHandle.SetControllerValue(51, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain4() => (ADSRSustainMode)ModuleHandle.GetControllerValue(52, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain4(ADSRSustainMode value) => ModuleHandle.SetControllerValue(52, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain - /// Possible values: Off, On, Repeat - /// - public ADSRSustainMode GetSustain5() => (ADSRSustainMode)ModuleHandle.GetControllerValue(53, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain - /// Possible values: Off, On, Repeat - /// - public void SetSustain5(ADSRSustainMode value) => ModuleHandle.SetControllerValue(53, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel1() => ModuleHandle.GetControllerValue(24, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel1(int value) => ModuleHandle.SetControllerValue(24, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel2() => ModuleHandle.GetControllerValue(25, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel2(int value) => ModuleHandle.SetControllerValue(25, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel3() => ModuleHandle.GetControllerValue(26, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel3(int value) => ModuleHandle.SetControllerValue(26, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel4() => ModuleHandle.GetControllerValue(27, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel4(int value) => ModuleHandle.SetControllerValue(27, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain level - /// Value range: 0 to 32768 - /// - public int GetSustainLevel5() => ModuleHandle.GetControllerValue(28, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain level - /// Value range: 0 to 32768 - /// - public void SetSustainLevel5(int value) => ModuleHandle.SetControllerValue(28, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal1() => (Toggle)ModuleHandle.GetControllerValue(54, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal1(Toggle value) => ModuleHandle.SetControllerValue(54, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal2() => (Toggle)ModuleHandle.GetControllerValue(55, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal2(Toggle value) => ModuleHandle.SetControllerValue(55, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal3() => (Toggle)ModuleHandle.GetControllerValue(56, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal3(Toggle value) => ModuleHandle.SetControllerValue(56, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal4() => (Toggle)ModuleHandle.GetControllerValue(57, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal4(Toggle value) => ModuleHandle.SetControllerValue(57, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain pedal - /// Possible values: Off, On - /// - public Toggle GetSustainPedal5() => (Toggle)ModuleHandle.GetControllerValue(58, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Sustain pedal - /// Possible values: Off, On - /// - public void SetSustainPedal5(Toggle value) => ModuleHandle.SetControllerValue(58, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity1() => ModuleHandle.GetControllerValue(69, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity1(int value) => ModuleHandle.SetControllerValue(69, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity2() => ModuleHandle.GetControllerValue(70, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity2(int value) => ModuleHandle.SetControllerValue(70, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity3() => ModuleHandle.GetControllerValue(71, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity3(int value) => ModuleHandle.SetControllerValue(71, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity4() => ModuleHandle.GetControllerValue(72, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity4(int value) => ModuleHandle.SetControllerValue(72, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Velocity sensitivity - /// Value range: -128 to 128 - /// - public int GetVelocitySensitivity5() => ModuleHandle.GetControllerValue(73, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Velocity sensitivity - /// Value range: -128 to 128 - /// - public void SetVelocitySensitivity5(int value) => ModuleHandle.SetControllerValue(73, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 32768 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume1() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume1(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume2() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume2(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume3() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume3(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume4() => ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume4(int value) => ModuleHandle.SetControllerValue(12, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Volume - /// Value range: 0 to 32768 - /// - public int GetVolume5() => ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Volume - /// Value range: 0 to 32768 - /// - public void SetVolume5(int value) => ModuleHandle.SetControllerValue(13, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey1() => ModuleHandle.GetControllerValue(64, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey1(int value) => ModuleHandle.SetControllerValue(64, value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey2() => ModuleHandle.GetControllerValue(65, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey2(int value) => ModuleHandle.SetControllerValue(65, value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey3() => ModuleHandle.GetControllerValue(66, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey3(int value) => ModuleHandle.SetControllerValue(66, value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey4() => ModuleHandle.GetControllerValue(67, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey4(int value) => ModuleHandle.SetControllerValue(67, value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Volume scaling per key - /// Value range: -128 to 128 - /// - public int GetVolumeScalingPerKey5() => ModuleHandle.GetControllerValue(68, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Volume scaling per key - /// Value range: -128 to 128 - /// - public void SetVolumeScalingPerKey5(int value) => ModuleHandle.SetControllerValue(68, value, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform1() => (FMXWaveform)ModuleHandle.GetControllerValue(74, ValueScalingMode.Displayed); - - /// - /// Original name: 1 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform1(FMXWaveform value) => ModuleHandle.SetControllerValue(74, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform2() => (FMXWaveform)ModuleHandle.GetControllerValue(75, ValueScalingMode.Displayed); - - /// - /// Original name: 2 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform2(FMXWaveform value) => ModuleHandle.SetControllerValue(75, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform3() => (FMXWaveform)ModuleHandle.GetControllerValue(76, ValueScalingMode.Displayed); - - /// - /// Original name: 3 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform3(FMXWaveform value) => ModuleHandle.SetControllerValue(76, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform4() => (FMXWaveform)ModuleHandle.GetControllerValue(77, ValueScalingMode.Displayed); - - /// - /// Original name: 4 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform4(FMXWaveform value) => ModuleHandle.SetControllerValue(77, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public FMXWaveform GetWaveform5() => (FMXWaveform)ModuleHandle.GetControllerValue(78, ValueScalingMode.Displayed); - - /// - /// Original name: 5 Waveform - /// Possible values: Custom, Triangle, Triangle3, Saw, Saw3, Square, Sin, Hsin, Asin, Sin3 - /// - public void SetWaveform5(FMXWaveform value) => ModuleHandle.SetControllerValue(78, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read CustomWaveform containing 256 values. - /// Value range: -1 to 1. - /// Used as a waveform where 'Custom' waveform type was applied. - /// - public void ReadCustomWaveform(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write CustomWaveform containing 256 values. - /// Value range: -1 to 1. - /// Used as a waveform where 'Custom' waveform type was applied. - /// - public void WriteCustomWaveform(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } - - public struct GeneratorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GeneratorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1022 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 1022 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq.modulation by input - /// Value range: 0 to 256 - /// - public int GetFreqModulationByInput() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Freq.modulation by input - /// Value range: 0 to 256 - /// - public void SetFreqModulationByInput(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono - /// - public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Stereo, Mono - /// - public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 16 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin - /// - public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Saw, Square, NoiseSampler, Drawn, Sin, Hsin, Asin, Rsin - /// - public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct GlideModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GlideModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public int GetPitchScale() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Possible values: Off, On - /// - public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Possible values: Off, On - /// - public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Reset - /// Possible values: Off, On - /// - public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Reset - /// Possible values: Off, On - /// - public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Reset on 1st note - /// Possible values: Off, On - /// - public Toggle GetResetOnFirstNote() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Reset on 1st note - /// Possible values: Off, On - /// - public void SetResetOnFirstNote(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct GPIOModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public GPIOModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: In - /// Possible values: Off, On - /// - public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: In - /// Possible values: Off, On - /// - public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: In amplitude - /// Value range: 0 to 100 - /// - public int GetInAmplitude() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: In amplitude - /// Value range: 0 to 100 - /// - public void SetInAmplitude(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: In note - /// Value range: 0 to 128 - /// - public int GetInNote() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: In note - /// Value range: 0 to 128 - /// - public void SetInNote(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: In pin - /// Value range: 0 to 256 - /// - public int GetInPin() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: In pin - /// Value range: 0 to 256 - /// - public void SetInPin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Out - /// Possible values: Off, On - /// - public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Out - /// Possible values: Off, On - /// - public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Out pin - /// Value range: 0 to 256 - /// - public int GetOutPin() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Out pin - /// Value range: 0 to 256 - /// - public void SetOutPin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Out threshold - /// Value range: 0 to 100 - /// - public int GetOutThreshold() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Out threshold - /// Value range: 0 to 100 - /// - public void SetOutThreshold(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct InputModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public InputModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct KickerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public KickerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Acceleration - /// Value range: 0 to 1024 - /// - public int GetAcceleration() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Acceleration - /// Value range: 0 to 1024 - /// - public void SetAcceleration(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Boost - /// Value range: 0 to 1024 - /// - public int GetBoost() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Boost - /// Value range: 0 to 1024 - /// - public void SetBoost(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: No click - /// Possible values: Off, On - /// - public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: No click - /// Possible values: Off, On - /// - public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Square, Sin - /// - public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Triangle, Square, Sin - /// - public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct LFOModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public LFOModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public int GetAmplitude() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 256 - /// - public int GetDutyCycle() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Duty cycle - /// Value range: 0 to 256 - /// - public void SetDutyCycle(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 256 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 256 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public int GetFreqScale() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Freq scale - /// Value range: 0 to 200 - /// - public void SetFreqScale(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public LFOFrequencyUnit GetFrequencyUnit() => (LFOFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetFrequencyUnit(LFOFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Generator - /// Possible values: Off, On - /// - public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Generator - /// Possible values: Off, On - /// - public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: Amplitude, Panning - /// - public LFOType GetLfoType() => (LFOType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Type - /// Possible values: Amplitude, Panning - /// - public void SetLfoType(LFOType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public int GetSetPhase() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sine quality - /// Possible values: Auto, Low, Middle, High - /// - public LFOSineQuality GetSineQuality() => (LFOSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: Sine quality - /// Possible values: Auto, Low, Middle, High - /// - public void SetSineQuality(LFOSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, Waveform - /// - public LFOSmoothTransitions GetSmoothTransitions() => (LFOSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth transitions - /// Possible values: Off, Waveform - /// - public void SetSmoothTransitions(LFOSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated - /// - public LFOWaveform GetWaveform() => (LFOWaveform)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Waveform - /// Possible values: Sin, Square, Sin2, Saw, Saw2, Random, Triangle, RandomInterpolated - /// - public void SetWaveform(LFOWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct LoopModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public LoopModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Length - /// Value range: 0 to 256 - /// - public int GetDelay() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Length - /// Value range: 0 to 256 - /// - public void SetDelay(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Length unit - /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz - /// - public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Length unit - /// Possible values: LineDivBy128, Line, HalfLine, OneThirdLine, Tick, Millisecond, Hz - /// - public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Max buffer size - /// Value range: 1 to 240 - /// Max buffer size in seconds - /// - public int GetMaxBufferSize() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Max buffer size - /// Value range: 1 to 240 - /// Max buffer size in seconds - /// - public void SetMaxBufferSize(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Normal, PingPong - /// - public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: Normal, PingPong - /// - public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: Restart, RestartCurrentIteration - /// - public LoopOnNoteOn GetOnNoteOn() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteON - /// Possible values: Restart, RestartCurrentIteration - /// - public void SetOnNoteOn(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Repeat (128=endless) - /// Value range: 0 to 128 - /// - public int GetRepeats() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Repeat (128=endless) - /// Value range: 0 to 128 - /// - public void SetRepeats(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct MetaModuleModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MetaModuleModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region module type-specific methods - - /// - public void LoadFile(string path) => ModuleHandle.LoadIntoMetaModule(path); - - /// - public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); - - #endregion module type-specific methods - - #region controllers - - /// - /// Original name: BPM (Beats Per Minute) - /// Value range: 1 to 1000 - /// - public int GetBPM() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: BPM (Beats Per Minute) - /// Value range: 1 to 1000 - /// - public void SetBPM(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Input module - /// Value range: 1 to 256 - /// - public int GetInputModule() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Input module - /// Value range: 1 to 256 - /// - public void SetInputModule(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Play patterns - /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless - /// - public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Play patterns - /// Possible values: Off, OnRepeat, OnNoRepeat, OnRepeatEndless, OnNoRepeatEndless - /// - public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: TPL (Ticks Per Line) - /// Value range: 1 to 31 - /// - public int GetTPL() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: TPL (Ticks Per Line) - /// Value range: 1 to 31 - /// - public void SetTPL(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 1024 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct ModulatorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ModulatorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Modulation type - /// Possible values: Amplitude, Phase, PhaseAbsolute - /// - public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Modulation type - /// Possible values: Amplitude, Phase, PhaseAbsolute - /// - public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct MultiControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MultiControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public int GetGain() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public int GetOUTOffset() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public void SetOUTOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Quantization - /// Value range: 0 to 32768 - /// - public int GetQuantization() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Quantization - /// Value range: 0 to 32768 - /// - public void SetQuantization(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public int GetResponse() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Response - /// Value range: 0 to 1000 - /// - public void SetResponse(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Value - /// Value range: 0 to 32768 - /// - public int GetValue() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Value - /// Value range: 0 to 32768 - /// - public void SetValue(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read Curve containing 257 values. - /// Value range: 0 to 1. - /// Modifies applied values. - /// - public void ReadCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write Curve containing 257 values. - /// Value range: 0 to 1. - /// Modifies applied values. - /// - public void WriteCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } - - public struct MultiSynthModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public MultiSynthModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Curve2 influence - /// Value range: 0 to 256 - /// - public int GetCurve2Influence() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Curve2 influence - /// Value range: 0 to 256 - /// - public void SetCurve2Influence(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Finetune - /// Value range: -256 to 256 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Phase - /// Value range: 0 to 32768 - /// - public int GetPhase() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Phase - /// Value range: 0 to 32768 - /// - public void SetPhase(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public int GetRandomPhase() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Random phase - /// Value range: 0 to 32768 - /// - public void SetRandomPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random pitch - /// Value range: 0 to 4096 - /// - public int GetRandomPitch() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Random pitch - /// Value range: 0 to 4096 - /// - public void SetRandomPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random velocity - /// Value range: 0 to 32768 - /// - public int GetRandomVelocity() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Random velocity - /// Value range: 0 to 32768 - /// - public void SetRandomVelocity(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public int GetVelocity() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Velocity - /// Value range: 0 to 256 - /// - public void SetVelocity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read NoteVelocityCurve containing 128 values. - /// Value range: 0 to 1. - /// Velocity to apply to arriving note. - /// - public void ReadNoteVelocityCurve(float[] buffer) - { - if (buffer.Length < 128) - throw new System.ArgumentException("Buffer must be at least of size 128"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write NoteVelocityCurve containing 128 values. - /// Value range: 0 to 1. - /// Velocity to apply to arriving note. - /// - public void WriteNoteVelocityCurve(float[] buffer) - { - if (buffer.Length < 128) - throw new System.ArgumentException("Buffer must be at least of size 128"); - - ModuleHandle.WriteCurve(0, buffer); - } - - /// - /// Read VelocityToVelocityCurve containing 257 values. - /// Value range: 0 to 1. - /// Map velocity values. - /// - public void ReadVelocityToVelocityCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.ReadCurve(1, buffer); - } - - /// - /// Write VelocityToVelocityCurve containing 257 values. - /// Value range: 0 to 1. - /// Map velocity values. - /// - public void WriteVelocityToVelocityCurve(float[] buffer) - { - if (buffer.Length < 257) - throw new System.ArgumentException("Buffer must be at least of size 257"); - - ModuleHandle.WriteCurve(1, buffer); - } - - #endregion curves - } - - public struct OutputModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public OutputModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - } - - public struct PitchDetectorModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchDetectorModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Alg1 Sensitivity (absolute threshold) - /// Value range: 0 to 100 - /// - public int GetAlg1Sensitivity() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1 Sensitivity (absolute threshold) - /// Value range: 0 to 100 - /// - public void SetAlg1Sensitivity(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Buffer (ms) - /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 - /// - public PitchDetectorBufferSize GetAlgBufferMs() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Buffer (ms) - /// Possible values: Ms5, Ms10, Ms21, Ms42, Ms85 - /// - public void SetAlgBufferMs(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Buf overlap - /// Value range: 0 to 100 - /// - public int GetAlgBufOverlap() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Buf overlap - /// Value range: 0 to 100 - /// - public void SetAlgBufOverlap(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Algorithm - /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum - /// - public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Algorithm - /// Possible values: FastZeroCrossing, Autocorrelation, Cepstrum - /// - public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Sample rate (Hz) - /// Possible values: Hz12000, Hz24000, Hz44100 - /// - public PitchDetectorAlgSampleRate GetAlgSampleRateHz() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Alg1-2 Sample rate (Hz) - /// Possible values: Hz12000, Hz24000, Hz44100 - /// - public void SetAlgSampleRateHz(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Detector finetune - /// Value range: -256 to 256 - /// - public int GetDetectorFinetune() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Detector finetune - /// Value range: -256 to 256 - /// - public void SetDetectorFinetune(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 256 - /// - public int GetGain() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 256 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: LP filter freq (0 - OFF) - /// Value range: 0 to 4000 - /// - public int GetLPFilterFreq() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: LP filter freq (0 - OFF) - /// Value range: 0 to 4000 - /// - public void SetLPFilterFreq(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: LP filter roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public FilterRollOff GetLPFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: LP filter roll-off - /// Possible values: dB12, dB24, dB36, dB48 - /// - public void SetLPFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Microtones - /// Possible values: Off, On - /// - public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Microtones - /// Possible values: Off, On - /// - public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Record notes - /// Possible values: Off, On - /// - public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 10000 - /// - public int GetThreshold() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Threshold - /// Value range: 0 to 10000 - /// - public void SetThreshold(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct PitchShifterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchShifterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Bypass if pitch=0 - /// Possible values: Off, SlowTransition, FastTransition - /// - public PitchShifterBypassMode GetBypassIfPitchZero() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Bypass if pitch=0 - /// Possible values: Off, SlowTransition, FastTransition - /// - public void SetBypassIfPitchZero(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Grain size - /// Value range: 0 to 256 - /// - public int GetGrainSize() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Grain size - /// Value range: 0 to 256 - /// - public void SetGrainSize(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public int GetPitch() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch - /// Value range: -600 to 600 - /// - public void SetPitch(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public int GetPitchScale() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Pitch scale - /// Value range: 0 to 200 - /// - public void SetPitchScale(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct PitchToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public PitchToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: First note - /// Value range: 0 to 256 - /// - public int GetFirstNote() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: First note - /// Value range: 0 to 256 - /// - public void SetFirstNote(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: FrequencyHz, Pitch - /// - public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: FrequencyHz, Pitch - /// - public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, PitchDown, PitchUp - /// - public PitchToControlOnNoteOff GetOnNoteOff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, PitchDown, PitchUp - /// - public void SetOnNoteOff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOUTController() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOUTController(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOUTMax() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOUTMax(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOUTMin() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOUTMin(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 256 - /// - public int GetRangeNumberOfSemitones() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Range (number of semitones) - /// Value range: 0 to 256 - /// - public void SetRangeNumberOfSemitones(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct ReverbModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public ReverbModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: All-pass filter - /// Possible values: Off, On - /// - public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: All-pass filter - /// Possible values: Off, On - /// - public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Damp - /// Value range: 0 to 256 - /// - public int GetDamp() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Damp - /// Value range: 0 to 256 - /// - public void SetDamp(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public int GetDry() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Dry - /// Value range: 0 to 256 - /// - public void SetDry(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public int GetFeedback() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Feedback - /// Value range: 0 to 256 - /// - public void SetFeedback(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Freeze - /// Possible values: Off, On - /// - public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Freeze - /// Possible values: Off, On - /// - public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public int GetRandomSeed() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: Room size - /// Value range: 0 to 128 - /// - public int GetRoomSize() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Room size - /// Value range: 0 to 128 - /// - public void SetRoomSize(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public int GetStereoWidth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Stereo width - /// Value range: 0 to 256 - /// - public void SetStereoWidth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public int GetWet() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Wet - /// Value range: 0 to 256 - /// - public void SetWet(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct SamplerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SamplerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region module type-specific methods - - /// - public void LoadSample(byte[] data, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(data, sampleSlot); - - /// - public void LoadSample(string path, int sampleSlot = -1) => ModuleHandle.LoadSamplerSample(path, sampleSlot); - - #endregion module type-specific methods - - #region controllers - - /// - /// Original name: Envelope interpolation - /// Possible values: Off, Linear - /// - public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Envelope interpolation - /// Possible values: Off, Linear - /// - public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Rec threshold - /// Value range: 0 to 10000 - /// - public int GetRecThreshold() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Rec threshold - /// Value range: 0 to 10000 - /// - public void SetRecThreshold(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample interpolation - /// Possible values: Off, Linear, Spline - /// - public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Sample interpolation - /// Possible values: Off, Linear, Spline - /// - public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct SoundToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SoundToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Absolute - /// Possible values: Off, On - /// - public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Mono, Stereo - /// - public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public int GetGain() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Gain - /// Value range: 0 to 1024 - /// - public void SetGain(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: LQ, HQ - /// - public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: LQ, HQ - /// - public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOUTController() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOUTController(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOutMax() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOutMax(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOutMin() => ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOutMin(int value) => ModuleHandle.SetControllerValue(6, value, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public int GetSampleRate() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Sample rate - /// Value range: 1 to 32768 - /// - public void SetSampleRate(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth - /// Value range: 0 to 256 - /// - public int GetSmooth() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Smooth - /// Value range: 0 to 256 - /// - public void SetSmooth(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct SpectraVoiceModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public SpectraVoiceModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public int GetAttack() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Attack - /// Value range: 0 to 512 - /// - public void SetAttack(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Harmonic - /// Value range: 0 to 15 - /// - public int GetHarmonic() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Harmonic - /// Value range: 0 to 15 - /// - public void SetHarmonic(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: H.freq - /// Value range: 0 to 22050 - /// - public int GetHarmonicFreq() => ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: H.freq - /// Value range: 0 to 22050 - /// - public void SetHarmonicFreq(int value) => ModuleHandle.SetControllerValue(9, value, ValueScalingMode.Displayed); - - /// - /// Original name: H.type - /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal - /// - public SpectraVoiceHarmonicType GetHarmonicType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: H.type - /// Possible values: Hsin, Rect, Org1, Org2, Org3, Org4, Sin, Random, Triangle1, Triangle2, Overtones1, Overtones2, Overtones3, Overtones4, Overtones1Plus, Overtones2Plus, Overtones3Plus, Overtones4Plus, Metal - /// - public void SetHarmonicType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: H.volume - /// Value range: 0 to 255 - /// - public int GetHarmonicVolume() => ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: H.volume - /// Value range: 0 to 255 - /// - public void SetHarmonicVolume(int value) => ModuleHandle.SetControllerValue(10, value, ValueScalingMode.Displayed); - - /// - /// Original name: H.width - /// Value range: 0 to 255 - /// - public int GetHarmonicWidth() => ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: H.width - /// Value range: 0 to 255 - /// - public void SetHarmonicWidth(int value) => ModuleHandle.SetControllerValue(11, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline - /// - public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono, HQSpline - /// - public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public int GetPanning() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Panning - /// Value range: -128 to 128 - /// - public void SetPanning(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 32 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public int GetRelease() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Release - /// Value range: 0 to 512 - /// - public void SetRelease(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Spectrum resolution - /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 - /// - public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Spectrum resolution - /// Possible values: Size4096, Size8192, Size16384, Size32768, Size65536, Size131072 - /// - public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Sustain - /// Possible values: Off, On - /// - public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct VelocityToControlModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VelocityToControlModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, VelocityDown, VelocityUp - /// - public VelocityToControlOnNoteOff GetOnNoteOff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: On NoteOFF - /// Possible values: DoNothing, VelocityDown, VelocityUp - /// - public void SetOnNoteOff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public int GetOutController() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: OUT controller - /// Value range: 0 to 255 - /// - public void SetOutController(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public int GetOutMax() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: OUT max - /// Value range: 0 to 32768 - /// - public void SetOutMax(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public int GetOutMin() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: OUT min - /// Value range: 0 to 32768 - /// - public void SetOutMin(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public int GetOutOffset() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: OUT offset - /// Value range: -16384 to 16384 - /// - public void SetOutOffset(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct VibratoModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VibratoModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public int GetAmplitude() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Amplitude - /// Value range: 0 to 256 - /// - public void SetAmplitude(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential amplitude - /// Possible values: Off, On - /// - public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Exponential amplitude - /// Possible values: Off, On - /// - public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 2048 - /// - public int GetFreq() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Freq - /// Value range: 1 to 2048 - /// - public void SetFreq(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Frequency unit - /// Possible values: HzDividedBy64, Millisecond, Hz, Tick, Line, HalfLine, OneThirdLine - /// - public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public int GetSetPhase() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Set phase - /// Value range: 0 to 256 - /// - public void SetSetPhase(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 256 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct VocalFilterModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VocalFilterModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Channels - /// Possible values: Stereo, Mono - /// - public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Formants - /// Value range: 1 to 5 - /// - public int GetFormants() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Formants - /// Value range: 1 to 5 - /// - public void SetFormants(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Formant width - /// Value range: 0 to 256 - /// - public int GetFormantWidth() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Formant width - /// Value range: 0 to 256 - /// - public void SetFormantWidth(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Intensity - /// Value range: 0 to 256 - /// - public int GetIntensity() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Intensity - /// Value range: 0 to 256 - /// - public void SetIntensity(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random frequency - /// Value range: 0 to 1024 - /// - public int GetRandomFrequency() => ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); - - /// - /// Original name: Random frequency - /// Value range: 0 to 1024 - /// - public void SetRandomFrequency(int value) => ModuleHandle.SetControllerValue(7, value, ValueScalingMode.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public int GetRandomSeed() => ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); - - /// - /// Original name: Random seed - /// Value range: 0 to 32768 - /// - public void SetRandomSeed(int value) => ModuleHandle.SetControllerValue(8, value, ValueScalingMode.Displayed); - - /// - /// Original name: Voice type - /// Possible values: Soprano, Alto, Tenor, Bass - /// - public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Voice type - /// Possible values: Soprano, Alto, Tenor, Bass - /// - public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel (a,e,i,o,u) - /// Value range: 0 to 256 - /// - public int GetVowel() => ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel (a,e,i,o,u) - /// Value range: 0 to 256 - /// - public void SetVowel(int value) => ModuleHandle.SetControllerValue(4, value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel1 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel1 - /// Possible values: A, E, I, O, U - /// - public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel2 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel2 - /// Possible values: A, E, I, O, U - /// - public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel3 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel3 - /// Possible values: A, E, I, O, U - /// - public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel4 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel4 - /// Possible values: A, E, I, O, U - /// - public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel5 - /// Possible values: A, E, I, O, U - /// - public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); - - /// - /// Original name: Vowel5 - /// Possible values: A, E, I, O, U - /// - public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct VorbisPlayerModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public VorbisPlayerModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region module type-specific methods - - /// - public void LoadVorbis(string path) => ModuleHandle.LoadIntoVorbisPLayer(path); - - /// - public void LoadIntoVorbisPLayer(byte[] data) => ModuleHandle.LoadIntoVorbisPLayer(data); - - #endregion module type-specific methods - - #region controllers - - /// - /// Original name: Finetune - /// Value range: -128 to 128 - /// - public int GetFinetune() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Finetune - /// Value range: -128 to 128 - /// - public void SetFinetune(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Interpolation - /// Possible values: Off, On - /// - public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Interpolation - /// Possible values: Off, On - /// - public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Original speed - /// Possible values: Off, On - /// - public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Original speed - /// Possible values: Off, On - /// - public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public int GetPolyphony() => ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: Polyphony - /// Value range: 1 to 4 - /// - public void SetPolyphony(int value) => ModuleHandle.SetControllerValue(5, value, ValueScalingMode.Displayed); - - /// - /// Original name: Repeat - /// Possible values: Off, On - /// - public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); - - /// - /// Original name: Repeat - /// Possible values: Off, On - /// - public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public int GetTranspose() => ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Transpose - /// Value range: -128 to 128 - /// - public void SetTranspose(int value) => ModuleHandle.SetControllerValue(3, value, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public int GetVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Volume - /// Value range: 0 to 512 - /// - public void SetVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - #endregion controllers - } - - public struct WaveShaperModuleHandle : IModuleHandleWrapper - { - public ModuleHandle ModuleHandle { get; private set; } - - public WaveShaperModuleHandle(ModuleHandle module) - { - ModuleHandle = module; - } - - #region controllers - - /// - /// Original name: DC blocker - /// Possible values: Off, On - /// - public Toggle GetDCBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); - - /// - /// Original name: DC blocker - /// Possible values: Off, On - /// - public void SetDCBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Input volume - /// Value range: 0 to 512 - /// - public int GetInputVolume() => ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); - - /// - /// Original name: Input volume - /// Value range: 0 to 512 - /// - public void SetInputVolume(int value) => ModuleHandle.SetControllerValue(0, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public int GetMix() => ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); - - /// - /// Original name: Mix - /// Value range: 0 to 256 - /// - public void SetMix(int value) => ModuleHandle.SetControllerValue(1, value, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); - - /// - /// Original name: Mode - /// Possible values: HQ, HQMono, LQ, LQMono - /// - public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - - /// - /// Original name: Output volume - /// Value range: 0 to 512 - /// - public int GetOutputVolume() => ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); - - /// - /// Original name: Output volume - /// Value range: 0 to 512 - /// - public void SetOutputVolume(int value) => ModuleHandle.SetControllerValue(2, value, ValueScalingMode.Displayed); - - /// - /// Original name: Symmetric - /// Possible values: Off, On - /// - public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); - - /// - /// Original name: Symmetric - /// Possible values: Off, On - /// - public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - - #endregion controllers - - #region curves - - /// - /// Read Curve containing 256 values. - /// Value range: 0 to 1. - /// Maps input to output. - /// - public void ReadCurve(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.ReadCurve(0, buffer); - } - - /// - /// Write Curve containing 256 values. - /// Value range: 0 to 1. - /// Maps input to output. - /// - public void WriteCurve(float[] buffer) - { - if (buffer.Length < 256) - throw new System.ArgumentException("Buffer must be at least of size 256"); - - ModuleHandle.WriteCurve(0, buffer); - } - - #endregion curves - } -} diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index d15af06..0114722 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 @@ -26,8 +26,15 @@ ./license.txt snupkg enable + 9999 + Nullable + Debug;Release;Generation - + + + GENERATION + + @@ -42,20 +49,7 @@ <_Parameter1>SunSharp.Tests
- - - - 9999 - - $(WarningsAsErrors);NU1605;Nullable - - - - 9999 - - $(WarningsAsErrors);NU1605;Nullable - - + all diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs index 89c378d..1f9e85f 100644 --- a/SunSharp/SunVox.cs +++ b/SunSharp/SunVox.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using SunSharp.Native; @@ -174,8 +174,7 @@ public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioCh { arguments.Add($"audiodriver={driver}"); } - var configuration = arguments.Count != 0 ? string.Join("|", arguments) : null; - return configuration; + return arguments.Count != 0 ? string.Join("|", arguments) : null; } private static SunVoxInitOptions ConstructInitFlags(SunVoxInitOptions initial, bool noDebugOutput, OutputType outputType, bool singleThreaded) diff --git a/SunSharp/SunVoxConstants.cs b/SunSharp/SunVoxConstants.cs index 6a54f31..ba0707f 100644 --- a/SunSharp/SunVoxConstants.cs +++ b/SunSharp/SunVoxConstants.cs @@ -1,4 +1,4 @@ -#pragma warning disable CA1707 // keep same naming as in official sunvox documentation +#pragma warning disable CA1707 // keep same naming as in official sunvox documentation namespace SunSharp { diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 0a63693..31074fe 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SunSharp { @@ -12,31 +12,54 @@ namespace SunSharp /// public sealed class SunVoxException : Exception { - private readonly uint _code; - private readonly string? _method; + public uint? Code { get; } + public string? Method { get; } public SunVoxException() { } - public SunVoxException(string message) : base(message) + public SunVoxException(string message) + : base(message) { } - public SunVoxException(string message, Exception innerException) : base(message, innerException) + public SunVoxException(string message, Exception innerException) + : base(message, innerException) { } public SunVoxException(uint code, string? method = null) + : base(ConstructMessage(code, method, null)) { - _code = code; - _method = method; + Code = code; + Method = method; } - public SunVoxException(int code, string? method = null) : this((uint)code, method) + public SunVoxException(int code, string? method = null) + : base(ConstructMessage(unchecked((uint)code), method, null)) { + Code = unchecked((uint)code); + Method = method; } - public override string Message => $"Error code: {_code:X}, method: '{_method ?? "unknown"}'."; + public SunVoxException(int code, string method, string message) + : base(ConstructMessage(unchecked((uint)code), method, message)) + { + Code = unchecked((uint)code); + Method = method; + } + + private static string ConstructMessage(uint code, string? method, string? details) + { + if (details == null) + { + return $"Received error code {code:X} from method: {method ?? "unknown"}."; + } + else + { + return $"Received error code {code:X} from method: {method ?? "unknown"}. {details}"; + } + } } } diff --git a/SunSharp/ModuleHandle.cs b/SunSharp/SynthModuleHandle.cs similarity index 72% rename from SunSharp/ModuleHandle.cs rename to SunSharp/SynthModuleHandle.cs index f459160..49cd4d8 100644 --- a/SunSharp/ModuleHandle.cs +++ b/SunSharp/SynthModuleHandle.cs @@ -1,18 +1,31 @@ -using System.Linq; using SunSharp.Native; namespace SunSharp { /// - /// Represents a handle to a module. The handle may be invalid if the pattern does not exist. + /// Represents a handle to a generic synthesizer module, providing access to module properties + /// and operations regardless of the underlying module type. /// - public interface IModuleHandle + public interface IGenericSynthModuleHandle { + /// + /// Gets the ID of the synthessizer module. + /// int Id { get; } + /// + /// Gets the slot associated with this instance. + /// + ISlot Slot { get; } + ModuleFlags GetFlags(); - ModuleType GetModuleType(); + /// + /// Returns the module type. If the module does not exist, returns . + /// If the module type is unknown (due to library mismatch or otherwise), returns . + /// + /// + SynthModuleType? GetModuleType(); bool GetExists(); @@ -23,7 +36,7 @@ public interface IModuleHandle /// /// Read module scope view, and write it to a buffer. /// - /// Number of samples successfully read. + /// Number of samples successfully read. int ReadScope(AudioChannel channel, short[] buffer); string? GetName(); @@ -40,25 +53,29 @@ public interface IModuleHandle int[] GetInputs(); - ModuleHandle[] GetInputModules(); + ISynthModuleHandle[] GetInputModules(); int[] GetOutputs(); - ModuleHandle[] GetModuleOutputs(); + ISynthModuleHandle[] GetOutputModules(); + } + public partial interface ISynthModuleHandle : IGenericSynthModuleHandle + { /// /// Load a sample (xi, wav, aiff) to a Sampler module from file. /// /// - /// Set to to apply the sample to all sample slots. + /// Set to to apply the sample to all + /// sample slots. /// void LoadSamplerSample(string path, int? sampleSlot = null); /// - /// Load a sample (xi, wav, aiff) to a Sampler module from memory. - /// Set to -1 to apply the sample to all sample slots. + /// Load a sample (xi, wav, aiff) to a Sampler module from memory. Set to -1 to apply the sample to all sample slots. /// - void LoadSamplerSample(byte[] data, int sampleSlot = -1); + void LoadSamplerSample(byte[] data, int? sampleSlot = null); /// /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. @@ -103,21 +120,24 @@ public interface IModuleHandle int GetControllerGroup(int controllerId); } - /// - public readonly struct ModuleHandle : IModuleHandle + /// + public readonly partial struct SynthModuleHandle : ISynthModuleHandle { private readonly ISunVoxLib _lib; - private readonly Slot _slot; private readonly int _slotId; /// public int Id { get; } - public ModuleHandle(Synthesizer synthesizer, int id) + public Slot Slot { get; } + + ISlot IGenericSynthModuleHandle.Slot => Slot; + + public SynthModuleHandle(Slot slot, int id) { - _slot = synthesizer.Slot; - _slotId = _slot.Id; - _lib = synthesizer.Slot.Library; + Slot = slot; + _lib = slot.Library; + _slotId = Slot.Id; Id = id; } @@ -130,9 +150,14 @@ public ModuleFlags GetFlags() } /// - public ModuleType GetModuleType() + public SynthModuleType? GetModuleType() { - return ModuleTypeHelper.TypeFromInternalName(_lib.GetModuleType(_slotId, Id)); + var moduleType = _lib.GetModuleType(_slotId, Id); + if (moduleType == null) + { + return null; + } + return SynthModuleTypeHelper.TypeFromInternalName(moduleType); } /// @@ -210,11 +235,15 @@ public int[] GetInputs() return _lib.GetModuleInputs(_slotId, Id); } - /// - public ModuleHandle[] GetInputModules() + /// + public SynthModuleHandle[] GetInputModules() + { + return ToHandles(GetInputs()); + } + + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() { - var synthesizer = _slot.Synthesizer; - return _lib.GetModuleInputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + return ToInterfaceHandles(GetInputs()); } /// @@ -224,10 +253,34 @@ public int[] GetOutputs() } /// - public ModuleHandle[] GetModuleOutputs() + public SynthModuleHandle[] GetModuleOutputs() + { + return ToHandles(GetOutputs()); + } + + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() + { + return ToInterfaceHandles(GetOutputs()); + } + + private SynthModuleHandle[] ToHandles(int[] connections) { - var synthesizer = _slot.Synthesizer; - return _lib.GetModuleOutputs(_slotId, Id).Select(i => new ModuleHandle(synthesizer, i)).ToArray(); + var handles = new SynthModuleHandle[connections.Length]; + for (var i = 0; i < connections.Length; i++) + { + handles[i] = new SynthModuleHandle(Slot, connections[i]); + } + return handles; + } + + private ISynthModuleHandle[] ToInterfaceHandles(int[] connections) + { + var handles = new ISynthModuleHandle[connections.Length]; + for (var i = 0; i < connections.Length; i++) + { + handles[i] = new SynthModuleHandle(Slot, connections[i]); + } + return handles; } #endregion connections @@ -240,19 +293,19 @@ public void LoadSamplerSample(string path, int? sampleSlot = null) var lib = _lib; var slotId = _slotId; var id = Id; - using (_slot.AcquireLock()) + using (Slot.AcquireLock()) { lib.LoadSamplerSample(slotId, id, path, sampleSlot); } } /// - public void LoadSamplerSample(byte[] data, int sampleSlot = -1) + public void LoadSamplerSample(byte[] data, int? sampleSlot = null) { var lib = _lib; var slotId = _slotId; var id = Id; - using (_slot.AcquireLock()) + using (Slot.AcquireLock()) { lib.LoadSamplerSample(slotId, id, data, sampleSlot); } @@ -288,7 +341,7 @@ public int WriteCurve(int curveId, float[] buffer) var lib = _lib; var slotId = _slotId; var id = Id; - using (_slot.AcquireLock()) + using (Slot.AcquireLock()) { return lib.WriteModuleCurve(slotId, id, curveId, buffer); } @@ -300,7 +353,7 @@ public int ReadCurve(int curveId, float[] buffer) var lib = _lib; var slotId = _slotId; var id = Id; - using (_slot.AcquireLock()) + using (Slot.AcquireLock()) { return lib.ReadModuleCurve(slotId, id, curveId, buffer); } diff --git a/SunSharp/SynthModuleHandle.g.cs b/SunSharp/SynthModuleHandle.g.cs new file mode 100644 index 0000000..f4c9772 --- /dev/null +++ b/SunSharp/SynthModuleHandle.g.cs @@ -0,0 +1,270 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +using SunSharp.Modules; + +namespace SunSharp +{ + public partial interface ISynthModuleHandle + { + IOutputModuleHandle AsOutput(); + + IAnalogGeneratorModuleHandle AsAnalogGenerator(); + + IDrumSynthModuleHandle AsDrumSynth(); + + IFmModuleHandle AsFm(); + + IFmxModuleHandle AsFmx(); + + IGeneratorModuleHandle AsGenerator(); + + IInputModuleHandle AsInput(); + + IKickerModuleHandle AsKicker(); + + IVorbisPlayerModuleHandle AsVorbisPlayer(); + + ISamplerModuleHandle AsSampler(); + + ISpectraVoiceModuleHandle AsSpectraVoice(); + + IAmplifierModuleHandle AsAmplifier(); + + ICompressorModuleHandle AsCompressor(); + + IDcBlockerModuleHandle AsDcBlocker(); + + IDelayModuleHandle AsDelay(); + + IDistortionModuleHandle AsDistortion(); + + IEchoModuleHandle AsEcho(); + + IEqModuleHandle AsEq(); + + IFftModuleHandle AsFft(); + + IFilterModuleHandle AsFilter(); + + IFilterProModuleHandle AsFilterPro(); + + IFlangerModuleHandle AsFlanger(); + + ILfoModuleHandle AsLfo(); + + ILoopModuleHandle AsLoop(); + + IModulatorModuleHandle AsModulator(); + + IPitchShifterModuleHandle AsPitchShifter(); + + IReverbModuleHandle AsReverb(); + + IVocalFilterModuleHandle AsVocalFilter(); + + IVibratoModuleHandle AsVibrato(); + + IWaveShaperModuleHandle AsWaveShaper(); + + IAdsrModuleHandle AsAdsr(); + + IControlToNoteModuleHandle AsControlToNote(); + + IFeedbackModuleHandle AsFeedback(); + + IGlideModuleHandle AsGlide(); + + IGpioModuleHandle AsGpio(); + + IMetaModuleModuleHandle AsMetaModule(); + + IMultiControlModuleHandle AsMultiControl(); + + IMultiSynthModuleHandle AsMultiSynth(); + + IPitchToControlModuleHandle AsPitchToControl(); + + IPitchDetectorModuleHandle AsPitchDetector(); + + ISoundToControlModuleHandle AsSoundToControl(); + + IVelocityToControlModuleHandle AsVelocityToControl(); + } + + public readonly partial struct SynthModuleHandle : ISynthModuleHandle + { + public OutputModuleHandle AsOutput() => new OutputModuleHandle(this); + + IOutputModuleHandle ISynthModuleHandle.AsOutput() => new OutputModuleHandle(this); + + public AnalogGeneratorModuleHandle AsAnalogGenerator() => new AnalogGeneratorModuleHandle(this); + + IAnalogGeneratorModuleHandle ISynthModuleHandle.AsAnalogGenerator() => new AnalogGeneratorModuleHandle(this); + + public DrumSynthModuleHandle AsDrumSynth() => new DrumSynthModuleHandle(this); + + IDrumSynthModuleHandle ISynthModuleHandle.AsDrumSynth() => new DrumSynthModuleHandle(this); + + public FmModuleHandle AsFm() => new FmModuleHandle(this); + + IFmModuleHandle ISynthModuleHandle.AsFm() => new FmModuleHandle(this); + + public FmxModuleHandle AsFmx() => new FmxModuleHandle(this); + + IFmxModuleHandle ISynthModuleHandle.AsFmx() => new FmxModuleHandle(this); + + public GeneratorModuleHandle AsGenerator() => new GeneratorModuleHandle(this); + + IGeneratorModuleHandle ISynthModuleHandle.AsGenerator() => new GeneratorModuleHandle(this); + + public InputModuleHandle AsInput() => new InputModuleHandle(this); + + IInputModuleHandle ISynthModuleHandle.AsInput() => new InputModuleHandle(this); + + public KickerModuleHandle AsKicker() => new KickerModuleHandle(this); + + IKickerModuleHandle ISynthModuleHandle.AsKicker() => new KickerModuleHandle(this); + + public VorbisPlayerModuleHandle AsVorbisPlayer() => new VorbisPlayerModuleHandle(this); + + IVorbisPlayerModuleHandle ISynthModuleHandle.AsVorbisPlayer() => new VorbisPlayerModuleHandle(this); + + public SamplerModuleHandle AsSampler() => new SamplerModuleHandle(this); + + ISamplerModuleHandle ISynthModuleHandle.AsSampler() => new SamplerModuleHandle(this); + + public SpectraVoiceModuleHandle AsSpectraVoice() => new SpectraVoiceModuleHandle(this); + + ISpectraVoiceModuleHandle ISynthModuleHandle.AsSpectraVoice() => new SpectraVoiceModuleHandle(this); + + public AmplifierModuleHandle AsAmplifier() => new AmplifierModuleHandle(this); + + IAmplifierModuleHandle ISynthModuleHandle.AsAmplifier() => new AmplifierModuleHandle(this); + + public CompressorModuleHandle AsCompressor() => new CompressorModuleHandle(this); + + ICompressorModuleHandle ISynthModuleHandle.AsCompressor() => new CompressorModuleHandle(this); + + public DcBlockerModuleHandle AsDcBlocker() => new DcBlockerModuleHandle(this); + + IDcBlockerModuleHandle ISynthModuleHandle.AsDcBlocker() => new DcBlockerModuleHandle(this); + + public DelayModuleHandle AsDelay() => new DelayModuleHandle(this); + + IDelayModuleHandle ISynthModuleHandle.AsDelay() => new DelayModuleHandle(this); + + public DistortionModuleHandle AsDistortion() => new DistortionModuleHandle(this); + + IDistortionModuleHandle ISynthModuleHandle.AsDistortion() => new DistortionModuleHandle(this); + + public EchoModuleHandle AsEcho() => new EchoModuleHandle(this); + + IEchoModuleHandle ISynthModuleHandle.AsEcho() => new EchoModuleHandle(this); + + public EqModuleHandle AsEq() => new EqModuleHandle(this); + + IEqModuleHandle ISynthModuleHandle.AsEq() => new EqModuleHandle(this); + + public FftModuleHandle AsFft() => new FftModuleHandle(this); + + IFftModuleHandle ISynthModuleHandle.AsFft() => new FftModuleHandle(this); + + public FilterModuleHandle AsFilter() => new FilterModuleHandle(this); + + IFilterModuleHandle ISynthModuleHandle.AsFilter() => new FilterModuleHandle(this); + + public FilterProModuleHandle AsFilterPro() => new FilterProModuleHandle(this); + + IFilterProModuleHandle ISynthModuleHandle.AsFilterPro() => new FilterProModuleHandle(this); + + public FlangerModuleHandle AsFlanger() => new FlangerModuleHandle(this); + + IFlangerModuleHandle ISynthModuleHandle.AsFlanger() => new FlangerModuleHandle(this); + + public LfoModuleHandle AsLfo() => new LfoModuleHandle(this); + + ILfoModuleHandle ISynthModuleHandle.AsLfo() => new LfoModuleHandle(this); + + public LoopModuleHandle AsLoop() => new LoopModuleHandle(this); + + ILoopModuleHandle ISynthModuleHandle.AsLoop() => new LoopModuleHandle(this); + + public ModulatorModuleHandle AsModulator() => new ModulatorModuleHandle(this); + + IModulatorModuleHandle ISynthModuleHandle.AsModulator() => new ModulatorModuleHandle(this); + + public PitchShifterModuleHandle AsPitchShifter() => new PitchShifterModuleHandle(this); + + IPitchShifterModuleHandle ISynthModuleHandle.AsPitchShifter() => new PitchShifterModuleHandle(this); + + public ReverbModuleHandle AsReverb() => new ReverbModuleHandle(this); + + IReverbModuleHandle ISynthModuleHandle.AsReverb() => new ReverbModuleHandle(this); + + public VocalFilterModuleHandle AsVocalFilter() => new VocalFilterModuleHandle(this); + + IVocalFilterModuleHandle ISynthModuleHandle.AsVocalFilter() => new VocalFilterModuleHandle(this); + + public VibratoModuleHandle AsVibrato() => new VibratoModuleHandle(this); + + IVibratoModuleHandle ISynthModuleHandle.AsVibrato() => new VibratoModuleHandle(this); + + public WaveShaperModuleHandle AsWaveShaper() => new WaveShaperModuleHandle(this); + + IWaveShaperModuleHandle ISynthModuleHandle.AsWaveShaper() => new WaveShaperModuleHandle(this); + + public AdsrModuleHandle AsAdsr() => new AdsrModuleHandle(this); + + IAdsrModuleHandle ISynthModuleHandle.AsAdsr() => new AdsrModuleHandle(this); + + public ControlToNoteModuleHandle AsControlToNote() => new ControlToNoteModuleHandle(this); + + IControlToNoteModuleHandle ISynthModuleHandle.AsControlToNote() => new ControlToNoteModuleHandle(this); + + public FeedbackModuleHandle AsFeedback() => new FeedbackModuleHandle(this); + + IFeedbackModuleHandle ISynthModuleHandle.AsFeedback() => new FeedbackModuleHandle(this); + + public GlideModuleHandle AsGlide() => new GlideModuleHandle(this); + + IGlideModuleHandle ISynthModuleHandle.AsGlide() => new GlideModuleHandle(this); + + public GpioModuleHandle AsGpio() => new GpioModuleHandle(this); + + IGpioModuleHandle ISynthModuleHandle.AsGpio() => new GpioModuleHandle(this); + + public MetaModuleModuleHandle AsMetaModule() => new MetaModuleModuleHandle(this); + + IMetaModuleModuleHandle ISynthModuleHandle.AsMetaModule() => new MetaModuleModuleHandle(this); + + public MultiControlModuleHandle AsMultiControl() => new MultiControlModuleHandle(this); + + IMultiControlModuleHandle ISynthModuleHandle.AsMultiControl() => new MultiControlModuleHandle(this); + + public MultiSynthModuleHandle AsMultiSynth() => new MultiSynthModuleHandle(this); + + IMultiSynthModuleHandle ISynthModuleHandle.AsMultiSynth() => new MultiSynthModuleHandle(this); + + public PitchToControlModuleHandle AsPitchToControl() => new PitchToControlModuleHandle(this); + + IPitchToControlModuleHandle ISynthModuleHandle.AsPitchToControl() => new PitchToControlModuleHandle(this); + + public PitchDetectorModuleHandle AsPitchDetector() => new PitchDetectorModuleHandle(this); + + IPitchDetectorModuleHandle ISynthModuleHandle.AsPitchDetector() => new PitchDetectorModuleHandle(this); + + public SoundToControlModuleHandle AsSoundToControl() => new SoundToControlModuleHandle(this); + + ISoundToControlModuleHandle ISynthModuleHandle.AsSoundToControl() => new SoundToControlModuleHandle(this); + + public VelocityToControlModuleHandle AsVelocityToControl() => new VelocityToControlModuleHandle(this); + + IVelocityToControlModuleHandle ISynthModuleHandle.AsVelocityToControl() => new VelocityToControlModuleHandle(this); + } +} +#endif diff --git a/SunSharp/SynthModuleType.cs b/SunSharp/SynthModuleType.cs new file mode 100644 index 0000000..b1eb23f --- /dev/null +++ b/SunSharp/SynthModuleType.cs @@ -0,0 +1,46 @@ +#if GENERATION + +namespace SunSharp +{ + public enum SynthModuleType + { + Unknown = 0, + } + + public static class SynthModuleTypeHelper + { + /// + /// Gets the internal name for a given SynthModuleType. + /// + /// + /// In case of unknown SynthModuleType, returns "unknown". + /// + public static string InternalNameFromType(SynthModuleType type) + { + switch (type) + { + default: return "unknown"; + } + } + + public static SynthModuleType TypeFromInternalName(string internalName) + { + switch (internalName) + { + default: return SynthModuleType.Unknown; + } + } + + public static bool IsValid(SynthModuleType type) + { + return (int)type >= -1 && (int)type <= 41; + } + + public static string ToInternalName(this SynthModuleType type) + { + return InternalNameFromType(type); + } + } +} + +#endif diff --git a/SunSharp/SynthModuleType.g.cs b/SunSharp/SynthModuleType.g.cs new file mode 100644 index 0000000..379d7d6 --- /dev/null +++ b/SunSharp/SynthModuleType.g.cs @@ -0,0 +1,185 @@ +/* + * Do not modify this file manually. +*/ + +#nullable enable + +#if !GENERATION +namespace SunSharp +{ + public enum SynthModuleType + { + Adsr = 30, + Amplifier = 11, + AnalogGenerator = 1, + Compressor = 12, + ControlToNote = 31, + DcBlocker = 13, + Delay = 14, + Distortion = 15, + DrumSynth = 2, + Echo = 16, + Eq = 17, + Feedback = 32, + Fft = 18, + Filter = 19, + FilterPro = 20, + Flanger = 21, + Fm = 3, + Fmx = 4, + Generator = 5, + Glide = 33, + Gpio = 34, + Input = 6, + Kicker = 7, + Lfo = 22, + Loop = 23, + MetaModule = 35, + Modulator = 24, + MultiControl = 36, + MultiSynth = 37, + Output = -1, + PitchDetector = 39, + PitchShifter = 25, + PitchToControl = 38, + Reverb = 26, + Sampler = 9, + SoundToControl = 40, + SpectraVoice = 10, + VelocityToControl = 41, + Vibrato = 28, + VocalFilter = 27, + VorbisPlayer = 8, + WaveShaper = 29, + Unknown = 0, + } + + public static class SynthModuleTypeHelper + { + /// + /// Gets the internal name for a given SynthModuleType. + /// + /// + /// In case of unknown SynthModuleType, returns "unknown". + /// + public static string InternalNameFromType(SynthModuleType type) + { + switch (type) + { + case SynthModuleType.Adsr: return "ADSR"; + case SynthModuleType.Amplifier: return "Amplifier"; + case SynthModuleType.AnalogGenerator: return "Analog generator"; + case SynthModuleType.Compressor: return "Compressor"; + case SynthModuleType.ControlToNote: return "Ctl2Note"; + case SynthModuleType.DcBlocker: return "DC Blocker"; + case SynthModuleType.Delay: return "Delay"; + case SynthModuleType.Distortion: return "Distortion"; + case SynthModuleType.DrumSynth: return "DrumSynth"; + case SynthModuleType.Echo: return "Echo"; + case SynthModuleType.Eq: return "EQ"; + case SynthModuleType.Feedback: return "Feedback"; + case SynthModuleType.Fft: return "FFT"; + case SynthModuleType.Filter: return "Filter"; + case SynthModuleType.FilterPro: return "Filter Pro"; + case SynthModuleType.Flanger: return "Flanger"; + case SynthModuleType.Fm: return "FM"; + case SynthModuleType.Fmx: return "FMX"; + case SynthModuleType.Generator: return "Generator"; + case SynthModuleType.Glide: return "Glide"; + case SynthModuleType.Gpio: return "GPIO"; + case SynthModuleType.Input: return "Input"; + case SynthModuleType.Kicker: return "Kicker"; + case SynthModuleType.Lfo: return "LFO"; + case SynthModuleType.Loop: return "Loop"; + case SynthModuleType.MetaModule: return "MetaModule"; + case SynthModuleType.Modulator: return "Modulator"; + case SynthModuleType.MultiControl: return "MultiCtl"; + case SynthModuleType.MultiSynth: return "MultiSynth"; + case SynthModuleType.Output: return "Output"; + case SynthModuleType.PitchDetector: return "Pitch Detector"; + case SynthModuleType.PitchShifter: return "Pitch shifter"; + case SynthModuleType.PitchToControl: return "Pitch2Ctl"; + case SynthModuleType.Reverb: return "Reverb"; + case SynthModuleType.Sampler: return "Sampler"; + case SynthModuleType.SoundToControl: return "Sound2Ctl"; + case SynthModuleType.SpectraVoice: return "SpectraVoice"; + case SynthModuleType.VelocityToControl: return "Velocity2Ctl"; + case SynthModuleType.Vibrato: return "Vibrato"; + case SynthModuleType.VocalFilter: return "Vocal filter"; + case SynthModuleType.VorbisPlayer: return "Vorbis player"; + case SynthModuleType.WaveShaper: return "WaveShaper"; + default: return "unknown"; + } + } + + /// + /// Gets the SynthModuleType for a given internal name. + /// + /// + /// In case of unknown internal name, returns SynthModuleType.Unknown. + /// + public static SynthModuleType TypeFromInternalName(string internalName) + { + switch (internalName) + { + case "ADSR": return SynthModuleType.Adsr; + case "Amplifier": return SynthModuleType.Amplifier; + case "Analog generator": return SynthModuleType.AnalogGenerator; + case "Compressor": return SynthModuleType.Compressor; + case "Ctl2Note": return SynthModuleType.ControlToNote; + case "DC Blocker": return SynthModuleType.DcBlocker; + case "Delay": return SynthModuleType.Delay; + case "Distortion": return SynthModuleType.Distortion; + case "DrumSynth": return SynthModuleType.DrumSynth; + case "Echo": return SynthModuleType.Echo; + case "EQ": return SynthModuleType.Eq; + case "Feedback": return SynthModuleType.Feedback; + case "FFT": return SynthModuleType.Fft; + case "Filter": return SynthModuleType.Filter; + case "Filter Pro": return SynthModuleType.FilterPro; + case "Flanger": return SynthModuleType.Flanger; + case "FM": return SynthModuleType.Fm; + case "FMX": return SynthModuleType.Fmx; + case "Generator": return SynthModuleType.Generator; + case "Glide": return SynthModuleType.Glide; + case "GPIO": return SynthModuleType.Gpio; + case "Input": return SynthModuleType.Input; + case "Kicker": return SynthModuleType.Kicker; + case "LFO": return SynthModuleType.Lfo; + case "Loop": return SynthModuleType.Loop; + case "MetaModule": return SynthModuleType.MetaModule; + case "Modulator": return SynthModuleType.Modulator; + case "MultiCtl": return SynthModuleType.MultiControl; + case "MultiSynth": return SynthModuleType.MultiSynth; + case "Output": return SynthModuleType.Output; + case "Pitch Detector": return SynthModuleType.PitchDetector; + case "Pitch shifter": return SynthModuleType.PitchShifter; + case "Pitch2Ctl": return SynthModuleType.PitchToControl; + case "Reverb": return SynthModuleType.Reverb; + case "Sampler": return SynthModuleType.Sampler; + case "Sound2Ctl": return SynthModuleType.SoundToControl; + case "SpectraVoice": return SynthModuleType.SpectraVoice; + case "Velocity2Ctl": return SynthModuleType.VelocityToControl; + case "Vibrato": return SynthModuleType.Vibrato; + case "Vocal filter": return SynthModuleType.VocalFilter; + case "Vorbis player": return SynthModuleType.VorbisPlayer; + case "WaveShaper": return SynthModuleType.WaveShaper; + default: return SynthModuleType.Unknown; + } + } + + /// + /// Checks if value of is valid. + /// + public static bool IsValid(SynthModuleType type) + { + return (int)type >= -1 && (int)type <= 41; + } + + public static string ToInternalName(this SynthModuleType type) + { + return InternalNameFromType(type); + } + } +} +#endif diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index 83dff56..a6d435e 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -1,11 +1,12 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using SunSharp.Native; namespace SunSharp { - public interface ISynthesizer : IEnumerable + public interface ISynthesizer : IEnumerable { ISlot Slot { get; } @@ -15,11 +16,11 @@ public interface ISynthesizer : IEnumerable ModuleFlags GetModuleFlags(int moduleId); - bool TryGetModule(int moduleId, [NotNullWhen(true)] out IModuleHandle? moduleHandle); + bool TryGetModule(int moduleId, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle); - bool TryGetModule(string name, [NotNullWhen(true)] out IModuleHandle? moduleHandle); + bool TryGetModule(string name, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle); - IModuleHandle CreateModule(ModuleType type, string name, int x = 0, int y = 0, int z = 0); + ISynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0); /// /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. @@ -29,7 +30,7 @@ public interface ISynthesizer : IEnumerable /// /// /// - IModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0); + ISynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0); /// /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. @@ -39,22 +40,22 @@ public interface ISynthesizer : IEnumerable /// /// /// - IModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0); + ISynthModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0); void RemoveModule(int moduleId); - void RemoveModule(IModuleHandle moduleHandle); + void RemoveModule(ISynthModuleHandle moduleHandle); void ConnectModule(int sourceId, int destinationId); - void ConnectModule(IModuleHandle source, IModuleHandle destination); + void ConnectModule(ISynthModuleHandle source, ISynthModuleHandle destination); void DisconnectModule(int sourceId, int destinationId); - void DisconnectModule(IModuleHandle source, IModuleHandle destination); + void DisconnectModule(ISynthModuleHandle source, ISynthModuleHandle destination); } - public class Synthesizer : ISynthesizer, IEnumerable + public class Synthesizer : ISynthesizer, IEnumerable { private readonly ISunVoxLib _lib; private readonly int _id; @@ -88,12 +89,12 @@ public ModuleFlags GetModuleFlags(int moduleId) return _lib.GetModuleFlags(_id, moduleId); } - /// - public bool TryGetModule(int moduleId, [NotNullWhen(true)] out ModuleHandle? moduleHandle) + /// + public bool TryGetModule(int moduleId, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { if (_lib.GetModuleExists(_id, moduleId)) { - moduleHandle = new ModuleHandle(this, moduleId); + moduleHandle = new SynthModuleHandle(Slot, moduleId); return true; } @@ -101,13 +102,13 @@ public bool TryGetModule(int moduleId, [NotNullWhen(true)] out ModuleHandle? mod return false; } - /// - public bool TryGetModule(string name, [NotNullWhen(true)] out ModuleHandle? moduleHandle) + /// + public bool TryGetModule(string name, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { var moduleId = _lib.FindModule(_id, name); if (moduleId != null) { - moduleHandle = new ModuleHandle(this, moduleId.Value); + moduleHandle = new SynthModuleHandle(Slot, moduleId.Value); return true; } @@ -116,7 +117,7 @@ public bool TryGetModule(string name, [NotNullWhen(true)] out ModuleHandle? modu } /// - bool ISynthesizer.TryGetModule(int moduleId, [NotNullWhen(true)] out IModuleHandle? moduleHandle) + bool ISynthesizer.TryGetModule(int moduleId, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle) { if (TryGetModule(moduleId, out var foundModuleHandle)) { @@ -129,7 +130,7 @@ bool ISynthesizer.TryGetModule(int moduleId, [NotNullWhen(true)] out IModuleHand } /// - bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out IModuleHandle? moduleHandle) + bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle) { if (TryGetModule(name, out var foundModuleHandle)) { @@ -142,49 +143,54 @@ bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out IModuleHandl } /// - public ModuleHandle CreateModule(ModuleType type, string name, int x = 0, int y = 0, int z = 0) + public SynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0) { + if (!Enum.IsDefined(typeof(SynthModuleType), type)) + { + throw new ArgumentOutOfRangeException(nameof(type), "The specified ModuleType is not defined."); + } + using (Slot.AcquireLock()) { - var moduleId = _lib.CreateModule(_id, ModuleTypeHelper.InternalNameFromType(type), name, x, y, z); - return new ModuleHandle(this, moduleId); + var moduleId = _lib.CreateModule(_id, SynthModuleTypeHelper.InternalNameFromType(type), name, x, y, z); + return new SynthModuleHandle(Slot, moduleId); } } /// - IModuleHandle ISynthesizer.CreateModule(ModuleType type, string name, int x, int y, int z) + ISynthModuleHandle ISynthesizer.CreateModule(SynthModuleType type, string name, int x, int y, int z) { return CreateModule(type, name, x, y, z); } /// - public ModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) + public SynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) { using (Slot.AcquireLock()) { var moduleId = _lib.LoadModule(_id, data, x, y, z); - return new ModuleHandle(this, moduleId); + return new SynthModuleHandle(Slot, moduleId); } } /// - public ModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) + public SynthModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) { using (Slot.AcquireLock()) { var moduleId = _lib.LoadModule(_id, path, x, y, z); - return new ModuleHandle(this, moduleId); + return new SynthModuleHandle(Slot, moduleId); } } /// - IModuleHandle ISynthesizer.LoadModule(byte[] data, int x, int y, int z) + ISynthModuleHandle ISynthesizer.LoadModule(byte[] data, int x, int y, int z) { return LoadModule(data, x, y, z); } /// - IModuleHandle ISynthesizer.LoadModule(string path, int x, int y, int z) + ISynthModuleHandle ISynthesizer.LoadModule(string path, int x, int y, int z) { return LoadModule(path, x, y, z); } @@ -198,14 +204,14 @@ public void RemoveModule(int moduleId) } } - /// - public void RemoveModule(ModuleHandle moduleHandle) + /// + public void RemoveModule(SynthModuleHandle moduleHandle) { RemoveModule(moduleHandle.Id); } /// - void ISynthesizer.RemoveModule(IModuleHandle moduleHandle) + void ISynthesizer.RemoveModule(ISynthModuleHandle moduleHandle) { RemoveModule(moduleHandle.Id); } @@ -219,14 +225,14 @@ public void ConnectModule(int sourceId, int destinationId) } } - /// - public void ConnectModule(ModuleHandle source, ModuleHandle destination) + /// + public void ConnectModule(SynthModuleHandle source, SynthModuleHandle destination) { ConnectModule(source.Id, destination.Id); } /// - void ISynthesizer.ConnectModule(IModuleHandle source, IModuleHandle destination) + void ISynthesizer.ConnectModule(ISynthModuleHandle source, ISynthModuleHandle destination) { ConnectModule(source.Id, destination.Id); } @@ -240,19 +246,19 @@ public void DisconnectModule(int sourceId, int destinationId) } } - /// - public void DisconnectModule(ModuleHandle source, ModuleHandle destination) + /// + public void DisconnectModule(SynthModuleHandle source, SynthModuleHandle destination) { DisconnectModule(source.Id, destination.Id); } /// - void ISynthesizer.DisconnectModule(IModuleHandle source, IModuleHandle destination) + void ISynthesizer.DisconnectModule(ISynthModuleHandle source, ISynthModuleHandle destination) { DisconnectModule(source.Id, destination.Id); } - public IEnumerator GetEnumerator() + public IEnumerator GetEnumerator() { for (var i = 0; i < GetUpperModuleCount(); i++) { @@ -263,7 +269,7 @@ public IEnumerator GetEnumerator() } } - IEnumerator IEnumerable.GetEnumerator() + IEnumerator IEnumerable.GetEnumerator() { foreach (var moduleHandle in this) { diff --git a/SunSharp/Timeline.cs b/SunSharp/Timeline.cs index a2d6479..460ed5c 100644 --- a/SunSharp/Timeline.cs +++ b/SunSharp/Timeline.cs @@ -1,10 +1,11 @@ -using System.Collections; +using System.Collections; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using SunSharp.Native; namespace SunSharp { - public interface ITimeline : IEnumerable + public interface ITimeline : IEnumerable { ISlot Slot { get; } @@ -12,44 +13,51 @@ public interface ITimeline : IEnumerable bool GetPatternExists(int patternId); - bool TryGetPattern(string name, out PatternHandle pattern); + bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern); - bool TryGetPattern(int id, out PatternHandle pattern); + bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? pattern); - PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null); + IPatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null); - PatternHandle ClonePattern(PatternHandle original, int x, int y); + int ClonePattern(int id, int x, int y); + + IPatternHandle ClonePattern(IPatternHandle original, int x, int y); } - public sealed class Timeline : ITimeline + public sealed class Timeline : ITimeline, IEnumerable { + /// public Slot Slot { get; } + /// ISlot ITimeline.Slot => Slot; private readonly ISunVoxLib _lib; - private readonly int _id; + private readonly int _slotId; internal Timeline(Slot slot) { Slot = slot; _lib = slot.SunVox.Library; - _id = slot.Id; + _slotId = slot.Id; } + /// public int GetUpperPatternCount() { - return _lib.GetUpperPatternCount(_id); + return _lib.GetUpperPatternCount(_slotId); } + /// public bool GetPatternExists(int patternId) { - return _lib.GetPatternExists(_id, patternId); + return _lib.GetPatternExists(_slotId, patternId); } - public bool TryGetPattern(string name, out PatternHandle pattern) + /// + public bool TryGetPattern(string name, [NotNullWhen(true)] out PatternHandle? pattern) { - var id = _lib.FindPattern(_id, name); + var id = _lib.FindPattern(_slotId, name); if (id != null) { @@ -61,9 +69,10 @@ public bool TryGetPattern(string name, out PatternHandle pattern) return false; } - public bool TryGetPattern(int id, out PatternHandle pattern) + /// + public bool TryGetPattern(int id, [NotNullWhen(true)] out PatternHandle? pattern) { - if (_lib.GetPatternExists(_id, id)) + if (_lib.GetPatternExists(_slotId, id)) { pattern = new PatternHandle(this, id); return true; @@ -75,35 +84,93 @@ public bool TryGetPattern(int id, out PatternHandle pattern) } } + public bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern) + { + if (TryGetPattern(name, out PatternHandle? p)) + { + pattern = p; + return true; + } + else + { + pattern = default; + return false; + } + } + + public bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? pattern) + { + if (TryGetPattern(id, out PatternHandle? p)) + { + pattern = p; + return true; + } + else + { + pattern = default; + return false; + } + } + + /// public PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null) { using (Slot.AcquireLock()) { - var id = _lib.CreatePattern(_id, x, y, tracks, lines, iconSeed, name); + var id = _lib.CreatePattern(_slotId, x, y, tracks, lines, iconSeed, name); return new PatternHandle(this, id); } } - public PatternHandle ClonePattern(PatternHandle original, int x, int y) + IPatternHandle ITimeline.CreatePattern(int lines, int tracks, int x, int y, int iconSeed, string? name) + { + return CreatePattern(lines, tracks, x, y, iconSeed, name); + } + + public int ClonePattern(int id, int x, int y) { using (Slot.AcquireLock()) { - var id = _lib.ClonePattern(_id, original.Id, x, y); - return new PatternHandle(this, id); + return _lib.ClonePattern(_slotId, id, x, y); } } + public PatternHandle ClonePattern(PatternHandle original, int x, int y) + { + return new PatternHandle(this, ClonePattern(original.Id, x, y)); + } + + IPatternHandle ITimeline.ClonePattern(IPatternHandle original, int x, int y) + { + return new PatternHandle(this, ClonePattern(original.Id, x, y)); + } + public IEnumerator GetEnumerator() { for (var i = 0; i < GetUpperPatternCount(); i++) { - if (TryGetPattern(i, out var p)) + if (TryGetPattern(i, out PatternHandle? p)) { - yield return p; + if (p is null) + { + continue; + } + yield return p.Value; } } } - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var pattern in this) + { + yield return pattern; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } } } diff --git a/SunSharp/VirtualPattern.cs b/SunSharp/VirtualPattern.cs index 7994c2a..111e613 100644 --- a/SunSharp/VirtualPattern.cs +++ b/SunSharp/VirtualPattern.cs @@ -1,4 +1,4 @@ -using SunSharp.Native; +using SunSharp.Native; namespace SunSharp { @@ -11,44 +11,45 @@ public interface IVirtualPattern uint GetTicksPerSecond(); /// - /// Send an event to be processed as fast as possible. - /// This ignores any previously set timing. + /// Send an event to be processed as fast as possible. This ignores any previously set timing. /// void SendEventImmediately(int track, PatternEvent e); /// - /// Set the tick timestamp of future events. - /// This will make future events be processed at the specified timestamp. + /// Set the tick timestamp of future events. This will make future events be processed at + /// the specified timestamp. /// void SetEventTiming(int timestamp); /// - /// Reset the tick timestamp of future events. - /// This will make future events be processed as soon as possible. + /// Reset the tick timestamp of future events. This will make future events be processed as + /// soon as possible. /// void ResetEventTiming(); /// - /// Sends the specified pattern event to the given track. - /// The event will be processed according to the last set timing. + /// Sends the specified pattern event to the given track. The event will be processed + /// according to the last set timing. /// void SendEvent(int track, PatternEvent e); /// - /// Sends the specified pattern event to the given track. - /// The event will be processed according to the last set timing. + /// Sends the specified pattern event to the given track. The event will be processed + /// according to the last set timing. /// void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); } public sealed class VirtualPattern : IVirtualPattern { + /// public Slot Slot { get; } - public int? LastSetTimestamp { get; private set; } - + /// ISlot IVirtualPattern.Slot => Slot; + public int? LastSetTimestamp { get; private set; } + private readonly ISunVoxLib _lib; private readonly int _id; private readonly object _lock; diff --git a/SunSharp/license.txt b/SunSharp/license.txt index 06fb014..330a9c9 100644 --- a/SunSharp/license.txt +++ b/SunSharp/license.txt @@ -1,348 +1,21 @@ -# Copyright (c) 2023-2025 Sotakebk - -## Mozilla Public License Version 2.0 - -### 1. Definitions - -**1.1. "Contributor"** - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -**1.2. "Contributor Version"** - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -**1.3. "Contribution"** - means Covered Software of a particular Contributor. - -**1.4. "Covered Software"** - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -**1.5. "Incompatible With Secondary Licenses"** - means - -* **(a)** that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or -* **(b)** that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -**1.6. "Executable Form"** - means any form of the work other than Source Code Form. - -**1.7. "Larger Work"** - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -**1.8. "License"** - means this document. - -**1.9. "Licensable"** - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -**1.10. "Modifications"** - means any of the following: - -* **(a)** any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or -* **(b)** any new file in Source Code Form that contains any Covered - Software. - -**1.11. "Patent Claims" of a Contributor** - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -**1.12. "Secondary License"** - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -**1.13. "Source Code Form"** - means the form of the work preferred for making modifications. - -**1.14. "You" (or "Your")** - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means **(a)** the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or **(b)** ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -### 2. License Grants and Conditions - -#### 2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -* **(a)** under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and -* **(b)** under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -#### 2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -#### 2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -* **(a)** for any code that a Contributor has removed from Covered Software; - or -* **(b)** for infringements caused by: **(i)** Your and any other third party's - modifications of Covered Software, or **(ii)** the combination of its - Contributions with other software (except as part of its Contributor - Version); or -* **(c)** under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -#### 2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -#### 2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -#### 2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -#### 2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -### 3. Responsibilities - -#### 3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -#### 3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -* **(a)** such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -* **(b)** You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -#### 3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -#### 3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -#### 3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -### 4. Inability to Comply Due to Statute or Regulation - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: **(a)** comply with -the terms of this License to the maximum extent possible; and **(b)** -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -### 5. Termination - -**5.1.** The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated **(a)** provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and **(b)** on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -**5.2.** If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -**5.3.** In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -### 6. Disclaimer of Warranty - -> Covered Software is provided under this License on an "as is" -> basis, without warranty of any kind, either expressed, implied, or -> statutory, including, without limitation, warranties that the -> Covered Software is free of defects, merchantable, fit for a -> particular purpose or non-infringing. The entire risk as to the -> quality and performance of the Covered Software is with You. -> Should any Covered Software prove defective in any respect, You -> (not any Contributor) assume the cost of any necessary servicing, -> repair, or correction. This disclaimer of warranty constitutes an -> essential part of this License. No use of any Covered Software is -> authorized under this License except under this disclaimer. - -### 7. Limitation of Liability - -> Under no circumstances and under no legal theory, whether tort -> (including negligence), contract, or otherwise, shall any -> Contributor, or anyone who distributes Covered Software as -> permitted above, be liable to You for any direct, indirect, -> special, incidental, or consequential damages of any character -> including, without limitation, damages for lost profits, loss of -> goodwill, work stoppage, computer failure or malfunction, or any -> and all other commercial damages or losses, even if such party -> shall have been informed of the possibility of such damages. This -> limitation of liability shall not apply to liability for death or -> personal injury resulting from such party's negligence to the -> extent applicable law prohibits such limitation. Some -> jurisdictions do not allow the exclusion or limitation of -> incidental or consequential damages, so this exclusion and -> limitation may not apply to You. - -### 8. Litigation - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -### 9. Miscellaneous - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -### 10. Versions of the License - -#### 10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -#### 10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -#### 10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -#### 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -## Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -## Exhibit B - "Incompatible With Secondary Licenses" Notice - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. +SunSharp is distributed under the MIT license: + +Copyright (c) 2023-2026 Sotakebk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 73dbed98b94aeccdb2c214149d5606c35182a5ad Mon Sep 17 00:00:00 2001 From: Sotakebk Date: Sun, 18 Jan 2026 11:50:04 +0100 Subject: [PATCH 12/27] update packages; more xml documentation; simpler code; more improvements; partial sunvox version upgrade --- CodeGeneration.Tests/AssemblyInfo.cs | 4 + .../CodeGeneration.Tests.csproj | 10 +- CodeGeneration.Tests/GeneratorTests.cs | 2 - CodeGeneration.Tests/GlobalUsings.cs | 3 + .../Logic/KnownModuleTypesTests.cs | 2 - CodeGeneration.Tests/Logic/ModuleDataTests.cs | 3 +- CodeGeneration/AssemblyInfo.cs | 3 + CodeGeneration/CodeGeneration.csproj | 2 +- CodeGeneration/Logic/ModuleData.g.json | 131 ++++- CodeGeneration/Logic/SunVoxHeaderParser.cs | 3 +- Examples/AssemblyInfo.cs | 3 + Examples/Program.cs | 5 +- .../BaseIntegrationTests.cs | 15 +- .../SunSharp.IntegrationTests.csproj | 14 +- .../SunVoxLibTests/NoteTests.cs | 59 +++ .../SunVoxLibTests/OtherTests.cs | 19 + .../SunVoxLibTests/PatternTests.cs | 4 +- .../SunVoxLibTests/all_notes.sunvox | Bin 0 -> 2694 bytes .../runtimes/linux-x86-64/native/sunvox.so | Bin 904496 -> 1208736 bytes .../runtimes/linux-x86/native/sunvox.so | Bin 945820 -> 1151196 bytes .../runtimes/win-x64/native/sunvox.dll | Bin 872960 -> 1205248 bytes .../runtimes/win-x86-64/native/sunvox.dll | Bin 835072 -> 1156608 bytes SunSharp.Tests/Data/DataTests.cs | 6 +- SunSharp.Tests/Data/SongDataReaderTests.cs | 12 +- SunSharp.Tests/EffectExtensionsTests.cs | 75 ++- SunSharp.Tests/FineTunePairTests.cs | 10 +- SunSharp.Tests/GlobalUsings.cs | 4 +- SunSharp.Tests/HelperTests.cs | 104 ---- SunSharp.Tests/LibraryVersionTests.cs | 13 +- SunSharp.Tests/MicrotonesTests.cs | 59 +++ SunSharp.Tests/Mocks/ModuleFlagsHelper.cs | 17 - ...ockProvider.cs => SunVoxLibMockBuilder.cs} | 12 +- SunSharp.Tests/ModuleFlagsTests.cs | 35 +- .../Native/Loader/NativeProxyTests.cs | 42 +- ...unVoxLibNativeWrapperAudioCallbackTests.cs | 46 +- .../SunVoxLibNativeWrapperModulesTests.cs | 146 +++--- .../SunVoxLibNativeWrapperPatternsTests.cs | 106 ++-- .../Native/SunVoxLibNativeWrapperTests.cs | 140 ++--- SunSharp.Tests/NoteTests.cs | 114 +++-- SunSharp.Tests/PatternEventTests.cs | 221 ++++++-- SunSharp.Tests/SunSharp.Tests.csproj | 10 +- SunSharp.Tests/SunVoxExceptionTests.cs | 4 +- SunSharp.Tests/UtilityHelperTests.cs | 82 +++ SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs | 30 ++ SunSharp/Effects.cs | 481 ++++++++++++++++++ SunSharp/Enums.cs | 111 +--- SunSharp/FineTunePair.cs | 36 +- SunSharp/LibraryVersion.cs | 55 +- SunSharp/Microtones.cs | 98 ++++ SunSharp/ModuleFlags.cs | 24 +- SunSharp/Modules/ControllerSpecificEnums.cs | 99 ++++ SunSharp/Modules/DelayModuleHandle.g.cs | 32 ++ SunSharp/Modules/GlideModuleHandle.g.cs | 54 ++ SunSharp/Modules/LfoModuleHandle.g.cs | 36 ++ SunSharp/Modules/ModulatorModuleHandle.g.cs | 32 ++ SunSharp/Modules/ReverbModuleHandle.g.cs | 8 +- SunSharp/Modules/SamplerModuleHandle.g.cs | 86 ++++ .../Modules/VorbisPlayerModuleHandle.g.cs | 16 + SunSharp/Native/ISunVoxLibC.g.cs | 15 + SunSharp/Native/Loader/NativeProxy.g.cs | 22 + .../Native/SunVoxLibNativeWrapper.Modules.cs | 8 +- SunSharp/Native/sunvox.h | 44 +- SunSharp/Note.cs | 329 +++++++++--- SunSharp/NoteName.cs | 178 +++++++ SunSharp/PatternEvent.cs | 355 +++++++++++-- SunSharp/Slot.cs | 4 +- SunSharp/SunSharp.csproj | 4 +- SunSharp/SunVoxConstants.cs | 16 - SunSharp/{Helper.cs => UtilityHelper.cs} | 32 +- 69 files changed, 2930 insertions(+), 815 deletions(-) create mode 100644 CodeGeneration.Tests/AssemblyInfo.cs create mode 100644 CodeGeneration.Tests/GlobalUsings.cs create mode 100644 CodeGeneration/AssemblyInfo.cs create mode 100644 Examples/AssemblyInfo.cs create mode 100644 SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs create mode 100644 SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs create mode 100644 SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox delete mode 100644 SunSharp.Tests/HelperTests.cs create mode 100644 SunSharp.Tests/MicrotonesTests.cs delete mode 100644 SunSharp.Tests/Mocks/ModuleFlagsHelper.cs rename SunSharp.Tests/Mocks/{SunVoxLibMockProvider.cs => SunVoxLibMockBuilder.cs} (90%) create mode 100644 SunSharp.Tests/UtilityHelperTests.cs create mode 100644 SunSharp/Effects.cs create mode 100644 SunSharp/Microtones.cs create mode 100644 SunSharp/NoteName.cs delete mode 100644 SunSharp/SunVoxConstants.cs rename SunSharp/{Helper.cs => UtilityHelper.cs} (61%) diff --git a/CodeGeneration.Tests/AssemblyInfo.cs b/CodeGeneration.Tests/AssemblyInfo.cs new file mode 100644 index 0000000..fba92f7 --- /dev/null +++ b/CodeGeneration.Tests/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Diagnostics.CodeAnalysis; + +[assembly: Parallelizable(ParallelScope.All)] +[assembly: ExcludeFromCodeCoverage(Justification = "This is a project that contains tests for code that generates code for the main project.")] diff --git a/CodeGeneration.Tests/CodeGeneration.Tests.csproj b/CodeGeneration.Tests/CodeGeneration.Tests.csproj index 96b0733..b88abca 100644 --- a/CodeGeneration.Tests/CodeGeneration.Tests.csproj +++ b/CodeGeneration.Tests/CodeGeneration.Tests.csproj @@ -13,15 +13,15 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/CodeGeneration.Tests/GeneratorTests.cs b/CodeGeneration.Tests/GeneratorTests.cs index 239db7d..5d403c1 100644 --- a/CodeGeneration.Tests/GeneratorTests.cs +++ b/CodeGeneration.Tests/GeneratorTests.cs @@ -1,7 +1,5 @@ using System.Collections.Generic; using System.Threading.Tasks; -using AwesomeAssertions; -using NUnit.Framework; namespace CodeGeneration.Tests; diff --git a/CodeGeneration.Tests/GlobalUsings.cs b/CodeGeneration.Tests/GlobalUsings.cs new file mode 100644 index 0000000..43078ae --- /dev/null +++ b/CodeGeneration.Tests/GlobalUsings.cs @@ -0,0 +1,3 @@ +global using AwesomeAssertions; + +global using NUnit.Framework; diff --git a/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs b/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs index 98a4ed8..73a0719 100644 --- a/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs +++ b/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs @@ -1,7 +1,5 @@ using System.Linq; -using AwesomeAssertions; using CodeGeneration.Logic; -using NUnit.Framework; namespace CodeGeneration.Tests.Logic; diff --git a/CodeGeneration.Tests/Logic/ModuleDataTests.cs b/CodeGeneration.Tests/Logic/ModuleDataTests.cs index 77cd5d6..83e6f05 100644 --- a/CodeGeneration.Tests/Logic/ModuleDataTests.cs +++ b/CodeGeneration.Tests/Logic/ModuleDataTests.cs @@ -1,8 +1,6 @@ using System.Linq; -using AwesomeAssertions; using AwesomeAssertions.Execution; using CodeGeneration.Logic; -using NUnit.Framework; using SunSharp; namespace CodeGeneration.Tests.Logic; @@ -36,6 +34,7 @@ void AssertOnController(string moduleName, ControllerDescription controller) } var values = matchingEnum.GetEnumValues(); + values.Length.Should().BeGreaterThan(0, $"Controller '{controller.InternalName}' in module '{moduleName}' references enum {enumName}, but enum does not have any values."); var intValues = values.Cast().ToArray(); var minEnumValue = intValues.Min(v => v); diff --git a/CodeGeneration/AssemblyInfo.cs b/CodeGeneration/AssemblyInfo.cs new file mode 100644 index 0000000..1c70d75 --- /dev/null +++ b/CodeGeneration/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Diagnostics.CodeAnalysis; + +[assembly: ExcludeFromCodeCoverage(Justification = "This project contains code used to generate project code.")] diff --git a/CodeGeneration/CodeGeneration.csproj b/CodeGeneration/CodeGeneration.csproj index e64fe8e..e9b0309 100644 --- a/CodeGeneration/CodeGeneration.csproj +++ b/CodeGeneration/CodeGeneration.csproj @@ -16,7 +16,7 @@ - + \ No newline at end of file diff --git a/CodeGeneration/Logic/ModuleData.g.json b/CodeGeneration/Logic/ModuleData.g.json index e1e74e0..d7a9042 100644 --- a/CodeGeneration/Logic/ModuleData.g.json +++ b/CodeGeneration/Logic/ModuleData.g.json @@ -145,7 +145,7 @@ "FriendlyName": "SecondaryOscillatorMode", "InternalName": "Osc2 mode", "MinValue": 0, - "MaxValue": 6, + "MaxValue": 8, "EnumName": "AnalogGeneratorSecondaryOscillatorMode" }, "21": { @@ -1118,35 +1118,35 @@ "FriendlyName": "ModulationType1", "InternalName": "1 Modulation type", "MinValue": 0, - "MaxValue": 9, + "MaxValue": 11, "EnumName": "FmxModulationType" }, "110": { "FriendlyName": "ModulationType2", "InternalName": "2 Modulation type", "MinValue": 0, - "MaxValue": 9, + "MaxValue": 11, "EnumName": "FmxModulationType" }, "111": { "FriendlyName": "ModulationType3", "InternalName": "3 Modulation type", "MinValue": 0, - "MaxValue": 9, + "MaxValue": 11, "EnumName": "FmxModulationType" }, "112": { "FriendlyName": "ModulationType4", "InternalName": "4 Modulation type", "MinValue": 0, - "MaxValue": 9, + "MaxValue": 11, "EnumName": "FmxModulationType" }, "113": { "FriendlyName": "ModulationType5", "InternalName": "5 Modulation type", "MinValue": 0, - "MaxValue": 9, + "MaxValue": 11, "EnumName": "FmxModulationType" }, "114": { @@ -1405,6 +1405,13 @@ "MinValue": 0, "MaxValue": 1, "EnumName": "Toggle" + }, + "7": { + "FriendlyName": "IgnoreNoteOff", + "InternalName": "Ignore Note OFF", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" } }, "Curves": {} @@ -1451,6 +1458,38 @@ "InternalName": "Rec threshold", "MinValue": 0, "MaxValue": 10000 + }, + "6": { + "FriendlyName": "TickLengthNorm128", + "InternalName": "Tick length (norm=128)", + "MinValue": 0, + "MaxValue": 2048 + }, + "7": { + "FriendlyName": "Record", + "InternalName": "Record", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "SamplerRecordState" + }, + "8": { + "FriendlyName": "Reverse", + "InternalName": "Reverse", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "9": { + "FriendlyName": "Attack", + "InternalName": "Attack", + "MinValue": 0, + "MaxValue": 32768 + }, + "10": { + "FriendlyName": "Release", + "InternalName": "Release", + "MinValue": 0, + "MaxValue": 32768 } }, "Curves": {} @@ -1748,6 +1787,20 @@ "InternalName": "Feedback", "MinValue": 0, "MaxValue": 32768 + }, + "11": { + "FriendlyName": "NegativeFeedback", + "InternalName": "Negative feedback", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" + }, + "12": { + "FriendlyName": "AllPassFilter", + "InternalName": "All-pass filter", + "MinValue": 0, + "MaxValue": 1, + "EnumName": "Toggle" } }, "Curves": {} @@ -2163,7 +2216,7 @@ "FriendlyName": "RollOff", "InternalName": "Roll-off", "MinValue": 0, - "MaxValue": 3, + "MaxValue": 7, "EnumName": "FilterProRollOff" }, "9": { @@ -2338,7 +2391,7 @@ "FriendlyName": "FrequencyUnit", "InternalName": "Frequency unit", "MinValue": 0, - "MaxValue": 6, + "MaxValue": 8, "EnumName": "LfoFrequencyUnit" }, "8": { @@ -2373,6 +2426,23 @@ "MinValue": 0, "MaxValue": 3, "EnumName": "LfoSineQuality" + }, + "13": { + "FriendlyName": "Transpose", + "InternalName": "Transpose", + "MinValue": 0, + "MaxValue": 256, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128, + "IgnoreActualType": true + }, + "14": { + "FriendlyName": "Finetune", + "InternalName": "Finetune", + "MinValue": 0, + "MaxValue": 512, + "MinDisplayedValue": -256, + "MaxDisplayedValue": 256 } }, "Curves": {} @@ -2449,7 +2519,7 @@ "FriendlyName": "ModulationType", "InternalName": "Modulation type", "MinValue": 0, - "MaxValue": 2, + "MaxValue": 10, "EnumName": "ModulationType" }, "2": { @@ -2458,6 +2528,20 @@ "MinValue": 0, "MaxValue": 1, "EnumName": "Channels" + }, + "3": { + "FriendlyName": "MaxPhaseModulationDelay", + "InternalName": "Max PM delay", + "MinValue": 0, + "MaxValue": 9, + "EnumName": "ModulatorMaxPhaseModulationDelay" + }, + "4": { + "FriendlyName": "PhaseModulationInterpolation", + "InternalName": "PM interpolation", + "MinValue": 0, + "MaxValue": 2, + "EnumName": "ModulatorPhaseModulationInterpolation" } }, "Curves": {} @@ -2563,8 +2647,8 @@ "FriendlyName": "AllPassFilter", "InternalName": "All-pass filter", "MinValue": 0, - "MaxValue": 1, - "EnumName": "Toggle" + "MaxValue": 2, + "EnumName": "ReverbAllPassFilter" }, "8": { "FriendlyName": "RoomSize", @@ -3028,6 +3112,29 @@ "MinValue": 0, "MaxValue": 1, "EnumName": "Toggle" + }, + "7": { + "FriendlyName": "Octave", + "InternalName": "Octave", + "MinValue": 0, + "MaxValue": 20, + "MinDisplayedValue": -10, + "MaxDisplayedValue": 10, + "IgnoreActualType": true + }, + "8": { + "FriendlyName": "FreqMultiply", + "InternalName": "Freq multiply", + "MinValue": 1, + "MaxValue": 256, + "IgnoreActualType": true + }, + "9": { + "FriendlyName": "FreqDivide", + "InternalName": "Freq divide", + "MinValue": 1, + "MaxValue": 256, + "IgnoreActualType": true } }, "Curves": {} @@ -3330,7 +3437,7 @@ "FriendlyName": "Algorithm", "InternalName": "Algorithm", "MinValue": 0, - "MaxValue": 2, + "MaxValue": 3, "EnumName": "PitchDetectorAlgorithm" }, "1": { diff --git a/CodeGeneration/Logic/SunVoxHeaderParser.cs b/CodeGeneration/Logic/SunVoxHeaderParser.cs index f5aaa27..361a397 100644 --- a/CodeGeneration/Logic/SunVoxHeaderParser.cs +++ b/CodeGeneration/Logic/SunVoxHeaderParser.cs @@ -133,7 +133,8 @@ private static string NormalizeType(string t) { "float*", typeof(IntPtr) }, { "int*", typeof(IntPtr) }, { "uint32_t*", typeof(IntPtr) }, - { "void", typeof(void) } + { "void", typeof(void) }, + { "size_t*", typeof(IntPtr) } }.ToImmutableDictionary(); private static Type MapCTypeToCSharp(string cType) diff --git a/Examples/AssemblyInfo.cs b/Examples/AssemblyInfo.cs new file mode 100644 index 0000000..94cc67a --- /dev/null +++ b/Examples/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Diagnostics.CodeAnalysis; + +[assembly: ExcludeFromCodeCoverage(Justification = "This is a project with example code.")] diff --git a/Examples/Program.cs b/Examples/Program.cs index 91d0ffe..20f2f0b 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -32,11 +32,12 @@ private static void Main() slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); - slot.VirtualPattern.SendEvent(0, new PatternEvent(new Note(NoteName.A, 4), 0x88, (ushort)(generator.ModuleHandle.Id + 1), 0, 0)); + slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.A(4), generator.ModuleHandle.Id)); Thread.Sleep(TimeSpan.FromSeconds(1)); - slot.VirtualPattern.SendEvent(0, new PatternEvent(Note.Off)); + slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); + slot.Save("file.sunvox"); } diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs index f1bcf56..3edbae8 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -1,3 +1,4 @@ +using System.Runtime.CompilerServices; using SunSharp.Native; using SunSharp.Redistribution; @@ -13,20 +14,20 @@ protected ISunVoxLib GetLoadedLibrary() } [OneTimeSetUp] - protected void OneTimeSetUp() + protected virtual void OneTimeSetUp() { LibraryLoader.Load(); _lib = LibraryLoader.GetLibraryInstance(); } [OneTimeTearDown] - protected void OneTimeTearDown() + protected virtual void OneTimeTearDown() { LibraryLoader.Unload(); } [SetUp] - protected void SetUp() + protected virtual void SetUp() { try { @@ -36,11 +37,12 @@ protected void SetUp() catch (Exception e) { TestContext.Out.WriteLine(e); + throw; } } [TearDown] - protected void TearDown() + protected virtual void TearDown() { try { @@ -53,4 +55,9 @@ protected void TearDown() _lib = null; } } + + protected string GetTestPath([CallerFilePath] string path = "") + { + return System.IO.Path.GetDirectoryName(path) ?? string.Empty; + } } diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 0b78743..c42e98b 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -13,15 +13,15 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -36,4 +36,8 @@ + + + + \ No newline at end of file diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs new file mode 100644 index 0000000..26d11b7 --- /dev/null +++ b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs @@ -0,0 +1,59 @@ +using System.IO; + +namespace SunSharp.IntegrationTests.SunVoxLibTests; + +internal class NoteTests : BaseIntegrationTests +{ + private string TestFilePath => Path.Join(base.GetTestPath(), "all_notes.sunvox"); + + [Test] + public void AllNotes_ShouldBeReadAsExpected() + { + const int slotId = 0; + var lib = GetLoadedLibrary(); + lib.OpenSlot(slotId); + lib.Load(slotId, TestFilePath); + lib.LockSlot(slotId); + + var result = lib.GetPatternData(slotId, 0); + result.Should().NotBeNull(); + + var (data, tracks, lines) = result.Value; + tracks.Should().Be(1); + lines.Should().Be(256); + data.Should().HaveCount(tracks * lines); + + for (var i = 0; i < lines; i++) + { + data[i].Note.Should().Be((byte)i); + } + + // compares what is shown in sunvox vs what is set up in library + data[0].Note.Should().Be(Note.Nothing); + for (var o = 0; o < 10; o++) + { + data[o * 12 + 1].Note.Should().Be(Note.C(o)); + data[o * 12 + 2].Note.Should().Be(Note.Cs(o)); + data[o * 12 + 3].Note.Should().Be(Note.D(o)); + data[o * 12 + 4].Note.Should().Be(Note.Ds(o)); + data[o * 12 + 5].Note.Should().Be(Note.E(o)); + data[o * 12 + 6].Note.Should().Be(Note.F(o)); + data[o * 12 + 7].Note.Should().Be(Note.Fs(o)); + data[o * 12 + 8].Note.Should().Be(Note.G(o)); + data[o * 12 + 9].Note.Should().Be(Note.Gs(o)); + data[o * 12 + 10].Note.Should().Be(Note.A(o)); + data[o * 12 + 11].Note.Should().Be(Note.As(o)); + data[o * 12 + 12].Note.Should().Be(Note.B(o)); + } + data[121].Note.Should().Be(Note.C(0xA)); + data[122].Note.Should().Be(Note.Cs(0xA)); + data[123].Note.Should().Be(Note.D(0xA)); + data[124].Note.Should().Be(Note.Ds(0xA)); + data[125].Note.Should().Be(Note.E(0xA)); + data[126].Note.Should().Be(Note.F(0xA)); + data[127].Note.Should().Be(Note.Fs(0xA)); + data[128].Note.Should().Be(Note.Off); + data[133].Note.Should().Be(Note.SetPitch); + } +} + diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs new file mode 100644 index 0000000..f37c0d7 --- /dev/null +++ b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs @@ -0,0 +1,19 @@ +namespace SunSharp.IntegrationTests.SunVoxLibTests; + +internal class OtherTests : BaseIntegrationTests +{ + protected override void SetUp() + { + } + + [Test] + public void Initialize_ShouldReturnExpectedVersion() + { + var lib = GetLoadedLibrary(); + var version = lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + + version.Major.Should().Be(2); + version.Minor.Should().Be(1); + version.Minor2.Should().Be(4); + } +} diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs index a7383e4..8c87be9 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs @@ -6,7 +6,7 @@ namespace SunSharp.IntegrationTests.SunVoxLibTests; internal class PatternTests : BaseIntegrationTests { [Test] - public void EmptyProjectStartsWithOneEmptyPattern() + public void OpenSlot_ProjectStartsWithOneEmptyPattern() { // Should be reported as a possible bug @@ -27,7 +27,7 @@ public void EmptyProjectStartsWithOneEmptyPattern() } [Test] - public void PatternCreationCloningThenReadingPropertiesWorksAsExpected() + public void PatternCreation_CloningThenReadingPropertiesWorksAsExpected() { const int slotId = 0; diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox b/SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox new file mode 100644 index 0000000000000000000000000000000000000000..0d46d974e3f7d7aafb3715ec4fa351fb3a432438 GIT binary patch literal 2694 zcmZ|Rd2|z16vy#NTTv7#DDDc8MHa23L5oWTo5|AHNoL5TAqgO&f{G%Dtthx5D5!M< z72MfntsA>5vM4TqD7Xu_i!Brv#I?RV^G)F&?m2TlzxVRq%)FeFoNK4dw5BQ*O4tR; z`~pv2Kn)~oDu<1TGcQ9s?B?bw2dtP^*4!fVRwyXBnYxmZgp*~Qj0F9nT#=M%h?ctI zWwB6erQhc-De@H;6_vJEoSS^BF&>|v8-vz1}CS@u#?p=mf4?;m|c;Z*DDk5 zUbV&!8BH&3L_%>{)2PZSOFCH%HIh zr(%2TfE}?Do`#*V3wFhBcsibeMR+E5M;{iWAA8_gcs7<`Pdo?D#q;odEX5137xu;r zu?z#KV-Q0a#t4>U6feRGG%$v7G*NyiQhi*s1lpLyN=#v2bbi$;XBcO(ANI!qcrgyd zOK=cgikIQ#I2ecE6?i3Hg+uXbyatEiwKyC{;B`0>ug5B^#v5=H-iSBhXdHt#qx^wM z-Rh#Cd4@ezC!r{Gk43?IiQ z@JW0MpT=i!8cxR+v0Y7vID8aRY9|P51$B#t-o$+=5&2WBdd^ z#n13_`~ttkuW%b~#~t`JeuLlQclbU2fIs3-xD$WII;_WCxEmXA5B`F`;&1pn?!`ZF zAO4Ad;otZV{)_)%BU*a7(<^w?*fOGS-=GFo#?BU~Ij_vC?nttf71d3zvb1zor}||p z2lT9~t{psQXWyZzVM}X@C$Eo>9JQ-rb3>sOj_CQaL2U`RQ96@w*y(WcWICNrH{CUp z$w-#V3dMs8)rPrib;+ui@+!^hsu9&yDjcNjFegx-+lkQrPAT^+^!3;^gqe0=79hJ literal 0 HcmV?d00001 diff --git a/SunSharp.Redistribution/runtimes/linux-x86-64/native/sunvox.so b/SunSharp.Redistribution/runtimes/linux-x86-64/native/sunvox.so index 27690ff7b73f040ea01315632c3ee1d49832d060..0c555cc3aec1a79a8916d59bf55076fa71e73c27 100644 GIT binary patch literal 1208736 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π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 z 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%0AEjYYR})lh|}5%Mmd0h63=)1 z{KhK$=_=aeFJ;_fpNN1DcD6_JG}n zZ{M1j%Q(%OZ#O?=rr>|7?G)oQQ;_!_Pqgi=na6KI?H#ml{YK|)$wxtxGtO#!Xp6NE ze5^HW#VC;7;=4;si_P6nrugiMww{_1w3Am8cOV{EdzalAE1S?r*#bHLGNr!_hz9L&p-*8BH9}f21MZ z=op<~%$6R{!Ne5?WXB7Ndd=HcHI}4)eE5jx23C46wAcQu-gzGPXH7LVKP#?XV6T0V zxtkMxdkpz&uW^@F_$md>z-1L4GH|uEq2{+oFlr&(F(K6am5V+M-;N}Hve=;Sg^vx` z>Ywek8h=ECKkKQ<`&pjV@C$wS@r{d%f7AB>-?;9OlenJ^))bU>y{H|@&sf1F^W!gT zt#IkwRoOhUw{C1&92&xxKR)j3h64QCY=A$kH2`l&&Y*Jfsh@Efdkf#-M-&x(+e&sZ zGz2wh2r>7up9J1pcsS$o*oPkc=OL=Jy?5b&%gY?_Ks z>kGxc@YCHo0g*L3hpcU;KI_@@Q31F|lL@rjiCK90 zF|efMI}FT5K~Ad?(oXVdwq+dX#-|N(J~is~;W@0W&fo-N=f`gKYE-!12-x`GDF`%o z7nQbf1jWB+8_L|V=%|`{Wy38w&QNp_@ZO@4do3o!xP*halS7Cqphk5e!dkA2~$T^x}& zTWba|`L<7&c5t~vLv^Zy!EX^D4B>SmA5j26iUOvY>(3U9nzcD;V0?@_B3W{4>QnC^ zuPsI5!8R`Z-Skk*g7CT9!py4!Z@T7{1@$=7a)_}i?;uZuA_{<+}KcCQ3b@ny#tP!Ghe zssZQ5)e_1QHs8&MhnXNF|8E3g3n$_?eT3QVQZ9l|^2Ra8*4U9&qu|Rgrm)pJySbEM zNO0vMgIy1K0|S_~hV6ERF<#~Ou0ClrM4OATxvlP0%!3JvEZjdv5wELshr(}<;rB>8 zKm8p_*~ZV2E&TLvBMxg+6~}VIbdpZfWZJGeb}JbeX-APJ1?c%w6N7K@gN<$)7DbXm zy$K~d?F>_!b_RtIWj)6ijBI@r`nP!y{sDqs!;n`fPV}6Zrt`)#6zPi;9@I7FV zp*Lh>_48Me&<2g={61(E)a6 zh4$J|<+eb4))=7w#ld*~MdiNNsoh(SE56=cK`k+%X5BPzh!;NMJC-}U$KGkb*83JdBsn80_nkzs ztb{LKeMW?3gKHlP(vFX#=q=jwSs?-k;)UTr^MPUU!kb9Roh{h&?47-D*}Xyggca%! z`rh)q0{i8!eT?_Ch_-kcI2|4*hTzTKX;ro=~I$W!XR!vV7H4ElBk z+3ObjHrYpeU$;V=g1+6PVs9Ssv`>xa-yJWU!5(meuOoMMpS?v{Iy@(}N%Cy&eJd8q z2VNSqLferDXwgIPg!w$-IVLf|3LRD4P7fnyt79hdm>Ml9H+=*{9p(1!0OtGlph@iw zdNyVE{}^GM<$fyQ`4BA=lZCyrP~>^b!_y(DK||rKFyK2@&MmfYU%A~8=-o}_TgY1O zX~DJP?LnZ(pAs*e;yai-n+rjzz8>h~07Zal4ZW?M*zA&9mAZrTEyzHHi?cP?N8{ zoG0sJ!K?eqZd| zCfGm~s>VEqD366YfWBcBsK~QhMIt?Pf`RmALTGr!3vXb+MG{sB%2tK~yVZ9%i&Wcn zK2b#5BnLd3Q0NV^sn54tdUxYh)U%d>%#%|RMvhaAq!c0r9UiFcerwuJdzXKkHN7Rs zDb2L@Aig%DzXW4u8%W%uLbKuV?_P9n=^_7Mnf0yp(e=6X1Rit*=6htrv4HjGn~#O8 zKW{o_-8%fnJH5Q2@RjDousczjf52pWM+s9*!fkN9y0W8OQJeOD%J7(S1N$YUSBO5qixi(e&1M7T-Dhhs_xfH zw{B~vDj4&TCaRk5R@FsSP+_{NWn?wA=L@PmbZ%|pvo2JBWzwiPpXyb}x~+*S^H_#> z*3Hx$ut%3D$jsLt{6f&y6>6*8W^nisFIAeL;^Am;95q$7_0Y1 z_YOvzyn*Lg(de#Rvm7zP-T9IL+KK7Wha>M9c_b0EJIdo>35Zpa)%uS~mfMXWZ6xP_ z)peAJJ#sb5@iNlFQNHe@rg^Gq`zB#t5ZVr}*mcCcf(k1^1ldr~4yf2@+*$*u!@?U75!?&E5T#QW6Q zd3%Z4eq8lSbnbswiAKnNTh-qx`FY_7!esy3O4`NO-~l5F_wZTuhEmMdK@E3x^Rq{B z-DznZKRaMY<@(i08Z5WA3%k|&sye_=mnzt!ukLsGsea$dM=?RNU2)s@sZBO1K&xa^ z7?G6R+Im#I#}DUvLEg!Z#nsJiYobqj{H{7T*LC@e_&_o|8}z6RBP)jGuu@Z(T` zf($;Hm2X}XKlhoQDZy+opaW26HW@!Ra^rDrmhI+$%suF1<)D!Ad7nm)3)ZcE!Yb!KwkdOOX)tHF_*6l~&joPPB z@-=1K4A@mI3bymrrJp@5+RGG*QoGeF7=x*X!P!J`d$Y>5t5!3xW^h0;I8a9XAA<<( zimOz(Ut7^G4b>h6yUl$6ScNnq?!u62R7?k*Y6Zk#hk-}KE3`7EWY@NrzMHL4x=gFu z7r`1{Vdn3CWih*|V`i{LDr`tWmsrFe1-nnF7~I9d*IPuvCKzLbDrbY_?0gu*4ANbE zI~%!fcowt7ng@>WBb!*)_IB-y{?geOHM8X~8x-~(N+Np;`;TI0(-N}kFx}YRNvylg zAqGddASAsp3R`v9o`UoAR*D#WXKhC;*!e(7p0m68D_DD|68SvhT6W;MYmBTru$d~2 zT|W?v1=tMS+Nb*$Zq&E|?0voQM34;lTi6gr_zod9<)NDG>+tPtJQ1nfRDrnd+gTnT zePz(zRpEKHqVkpAUFD5kn2*H0M%q&j$>*beJ1aaJr%Mh)(X$g7OG4>bB=IZgYY9@M zQMTcjt%)?MpemWd6hy30yKiTpdG9bJbG9t4Q*vv@^h7+b0%oML)xd}thWmvLwACDK zMFDqhz~5`FdK~#{MrF+yFWV>kSlI4C9&J2PQQ4913YtH(>f2=cVj9|n1WKr#+S;0o?t@6gL zC~b$W@G&z)M3>XLueIFQfejL!w!)|pv{ra_AZ3>VVnyX{4b)ZvG(J+lPzqAD&}`VOR8)wD_GljY6n3Zza`QMV~00q14p^3Twq5vlW3r$p+z$SIN9RD^Ip z&$I#9>mR-tyTItXsU||B5<{9OcA9YH?qVZkyRAvoe&I%^XT!+lG-yQaVu{*(-CZ(T zlJPVnYwPPKBWC}pK6!r%)su=89BT!~E^cECgj*7!QM-n~@eF2kDVaPihF{}0A0^Q= zsm3IQqZhw!Qr7jqbH8WWqVRg*6~n7^rz2-{dK~qUIco^F+~9QdVkgDybdocT7+(g% zM(aLD)C4i zEze-xEtnAKGqU}xlx)An$o59$hFvFHWWRuyGRMv%Ro5Q`Yi-AS^Ke8G=q(rFl!8}qT@sbG@ z_Wp41Zdl~@2-|ZsVF#^-txVfU<-^zoD$C+8rjr=rD;IWc2h$lb7K}T`K53p8{w`rT<1^L7m zSyS8iEUNIg1g)vP5q~R@qphh&D!6Bux(7LlEsEFQQuFoLgDifnY@KY~BZYnHvFxu~ zL%lqG%OOE>81cL>hl4es?EY7WK2zc35>nZZEt9Xk`r2LK((L!hT6zMNxzv42;~~gc z=R6_Y;FMY4T@OFCTdnW%P$9am51!CK*4$^5Rc;1hhWxdkwN~~M6!2mVe>vMFc9Po7 z?)IHo4zZ6X1x{X+np)lxjEP4^{H%)$r$y*TF>`$QC&`7*{THh^pDq~gRT+?^DNcU& zy!l+hYK9bJo0r44z~KJcYW!P(FxRZg%NCYH2dg0g>FF$sS7tcSvZA}vjFA%Eq6{q} zA%CP~5{&xt^~PqWtbvl!$4S>c%2WeYh8VH2&*>i6oRFz0cKJ?=`D&wV(LLyQ-0haE zx!zz2Ceixv=m;yO+^LKAO5rG*)2FbPGwV$3{p30adxx)cn9_6Fo6D$79CG+O#5%2u zN8OUmqYOQqPCf#|7|O3&t(BM4pH!1^ssJc+HsK7|m2Q)drc&Va$!$gslpb}uOV&zV z)vF$&w!+6zoe>FKBTyOsPKLiF@ot6FfzJt4ot%*8wx;C2rt3>H1;Y=pdN|j~dEQ9= z8s~>D7YN(l5^HQT_o=cDG4%0Hg*PYpAR+Lfp=6xRP~ug-;Jh{x<(+fvv@Kz{E%E^`j$dWJIR31Au@teg~bvm3A~n&HGuZ!ggpdrTFd&Wm|VD*S6r z$XnvD==^eP>QQ(!fA%>{Iu9m&Lnsy~mN?hD2f?xre}7t*8uK(TC#e7N%hCHwG3N%M z3BR^ZRIhY0qeW1Xq}2FhxG1w4b0e!;tev7)o?== zGhS=0{K#R(W+wjoj5BHI<{1tR{g4zL6sMSRIbPLyJ;2XqW??v_{g&8EBe`J4Uvl^H z1;cAp%;k6#!B`>1j|;N+vB1jkW7LVnqRPFpq%i)=Sp^D0=CUFB8pOoJ*kFnrr1zS| zMViH9VaS2YTMb7pZ$MGtZ=9@HT~hl<0urdP$zXYKIWmijTB!HD5x{?+gh;&xeG9{9qOU0IpzlsnggS>C<6a%UD1^-+-gH*%c<8~c8Sm4{ z6+`(kY?3i^`LSvAqtKa+{y5|`+MP-fKi&=l%Hr!zJuW|%fGmETUm|w=FBHqL`>MW12R?HxA!4Z)D+H>Uq&O)fIL(TpU+ zY(~=Xr`I%I<$9;k?ij`N^q$k!2y_7_nsT=Q4{rT34smxXC z-s<8#mcM#jWc7fZ|FrR3;on(%2vw;v)BirYDfqA~2@Ry-D_Al$yF7(~Zxr3d^RTU44f>+}=;W-S4f|**mW9JY&HK39a`lZkr;HQ~=(G~v zSN%W%=UqC>b94mOBY)y}xCMglsNGR^qLrKYe};s4=zITwZ>POQP*0AyXu}Jy-SrjqD^LC;Z+Bq(lfLt}+2r^IS<20SNx$2hvk=>y?w z)9@eCP@Nrq1Nq$rwAsHd1MrsGcN~EG;63)y=)M7N6gvd)X9VaAgDI3f42t^KTD%gVry~B#0pBn1v+;e$+3+nigEE?6|EdcM ztDmz;;hZyCw*}*Z-x&{1!<~M+iptJ=UIrz9i_~0Vs3|u&PNQ2v~q984!$HM43sQI~rn#+KC2x{*Ay{Ji7Gz2A1 ztIcV=q{he4F&md5bo(#36FDoMVvz~QQ|tpmb~wm{KCureB205>ocP>16MBR=moNOz zzolDI#J_>THy_W?Rr7I)WGf||APKt6@Yfpn>kWak@z+Ea{~N+zpE?_V?TgLs331^l z28;ScinsQ;%+}$tE`!~&R{V8!R{cZx>qQQKg$E)(t?q-Vu2y}9slvnzOFW+DW5;TD zJN$aW|0X|8{5SY1=cua(1QbvJ&nTE`8jzi}`xq8yK463wty@l%&?)w=xD@U0p;mcLp{ zgy#e*AU(GC>CF0&ny+vEFZ0t;X9E0t`01N}ke@F2!~E3nk12gw3}m4g$RlE?T#_5j zyM2}97(oem0`KxK* zY`k>{Lw)D$3{_KL!T?t-&J<`t!WcKlVWciUNR7{|Kfq7t9nZqYlpZ=P&6B~6d~j>* zFikxjBbd!fESVC72j(rhxk`z&PGBb?lkGvJ^mizr!7gp=RPVYA4! z)n%h1*R*<-A=w@w2rRMo#A+rSclc+10RCz2tk90rM0JT;^3(6UL%S%O*o{`}rj=IfYvgdK9h-`th`*)w+s;sa#Q=2-cX0z;Ce4UXep7Abs0DoogZ81IXaBf4lM=mePO%IBIuO6XqZd&M zsBLiTw|j~`XA~~k$@4zU5JT%pc~CaWX1?8ID9}}6(-b>6 zDlfT_beF!ZRWB1r;ZKgB{~-S6iMk~}r0{o}B4#x4V=#F`J6{XI*+#Ik7Oc2PB=(WL zR_jh;g-x!v@xy0`)J5Kz(ouS5IOuF}&}kVMadWqCAk5nm@xntwCq8!Y#WVU}_06eh zfe5!?FXt8oeVis2B!cmYOUpf-5b%O&ZnkpYu4(a!|D+NaLI!Q`KbPaIC+KgrR{a7l z7|gx9Aa8m+_*Xe7avEyKfNmHS1Oxd08ULcn@fEa#7lZXp)+)TPTlltn*$o_FH}D>NE6J_i+5FrwyFf@} zp*r6%82@W2IeMhZNDvKG_S5^mNId@|!33W$um$bH=k<7GuN8j-<~1YsSY949GsS+) zx*o)H-*p`(gUik)r!*H#>tkgNp6m=zDT>h98zrfZpK%@2EbO+ph%2-O!ZIJzu6;rFQUkl*qofaXd6tY18P6ttInOK+zjFi>}^xV-I0?w#lGYGykwGC@gr-M zjC@l4d53SeKPXA2cMI)9_`?+dKLwF1-JM57-?t?o*G*PyD_z>0A!@7j6#{8-LX_H8 z`+_=Ib1yAnYQ&_+Lu9_`-i%mbC-3tZYSMu8O^e-;*ApL)(ebu`uX`H3EsxLk1pLPy zA2%hJ0pk+-lL0h0gTB}7$1djOk)Fpt$!09CU`8yMm*;8nwb*km&P$!RujTF~`3%gQ zhX%S=mYz=j9ZZ#|-LPHGRFirOE6dx6@MHMxe?dyT83MnxHwWe-x3*jb)14El^nMeK zIZyj(mNIv|C13s+EC%CW8H^6*@~k^$gRz^B$7c1tz|7=()<6Kk@;Iut;b6SPh)#^A z?`=;4-Bb@({d1l^t{i<+x!?D4lQ-Qi$GqE-->CMW8S zq+xy*Qi@GSh2!gp$0q~NJ8)MIprmcs0a$OOD>+j+bvVxKH(Vvi1%0$RA7$=@RA23b zK~Lwnz&m*R3LKvvyL)9{suYR=<(}<q$5sFZ{;1 zIV;%0r275p8U40aeE=22ZXV$DqG`2|<>tlhWNl9-bAx(p&Og?YKR)fFFF`F!trbrY zyCuP}_A#|qt2t!514-Viz)cJOI>*Q^+j=na{e0Zi+#B8KPam4+=EzB1W$ zI{hh}0oa@=q`*GlLgKDV_OaXXHTh+ooXFrkxo)<+Qg^?=1;d*n>Zar&h^Vvk>{ESHb2+QorBDHxJz3(qHb`WJ_yX~J2ZIowzkBH~1TpjEeg>sq zFfuwlxzLvZyzmhZF|jeo`2`k z_Y6+USRvDNl&t4Uv2<&9JH+z|iJeW!xsXy;XHxR#126>#6o?jkUe#LCTx&LN)1236+y)JcF1!uayLM$NdCyk2)K7_V|TdL^?dL|;N2 z;G)J5Fl?QU^&wvwZl2bPtAvx!h>tgY3;AAW1{8&TbmSmX*^C*LF!cx>9d~_uszlhn zJ`wS}9`PXt=LfEdXR%0D195k@q9dO2RjqAwk$L*(z!RQ`|F+VuQ~w@ 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

&PeAt6!gWhY=8 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 diff --git a/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so b/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so index 29c656ef3ac31f887050a520032a4b48d63c1370..201cb53485429ab5045b5823c09e104a0f9670f5 100644 GIT binary patch literal 1151196 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
|%O442 z@ro%rYWiTJ;Q?LsF;au(i-N1c&syT{(+>2&WN!^_Mhit|8kWFr_I}5){hWXzV1@^+ zd`2PeirI>hW1Fzb?~fHcEJBL(!o=;;|ABM<7ya)U{Pq2Ra`a#5f5%xe{*?aD`Ic{+0f3m;MjrCCC3i_P+=F7hi|}PmcU6;~y&HPwD@Ep8pf{f5*x9k1!Mw zuHMA$(*J?8HL6)3Na=hex;^*M&f0GQ<%$2!f~Ah4Bw~kwr=%fIG>JYDPI(Igf7c=K z8*ktjOSnHpv*re-%|pW;^G7}dnF~O|J?#(@kqFu_2ja~=CfqvBX$YZ*#O zxK&Z6VDd_pDh**s!7_75WPRO)ir`tj?cUtC-Qd+`Mq3&e0sv{0$nVg?&F7`1d8Yi? zkq0OMv!4Zqv4HZAq*Oaa=>?lma(C4>~Z9FZQpkl@HRo(Q0iGkd8eo;c6x4)zfmQ%iE`r%(Gkh6w$$ z{l0Bq#3AlHGeqF$$fsQEcg<#h9$1d5=4zeFfTY0Q~hh!P*Gy zB_5D22KVpcdUo+`Ykv6w_j~v5?=hCk)Pob`7G~cTxa$8#=Ye*^r9Qu`-J{8LMve_uSw=nAnZ=@6;8Ix#9`~3UfGgvlwW_jR*LO z%|fbQ^ghMEMxP&h7dJ*TADQr`0M2|k5(-P&vB1LcLOod2ZUdR<^TQ)r5WmA0zrl;C zT|M}#hu^|qkO2Z{G`iL3Pf;EC*I-49-u(x`Qja<84SrYz-$5GsaRV>;#ETgyAZo_< z><5AA;a{RRf`SQgK#`C8m4~`DJ^Ucv3i{AG&mE4|tc&RbnF8+>VSSbWjMlJk?%`wF zPxFNL59*Phk+i`7_@XPi7s}Fls$gAe7Qb}i@b74ikiAMUTN~d2VmJPBLAbXr>)oN#H@YW%VLS(wZ6;JheynDMLO zA0v-!bc~fwf!-USIc?u}>1R zaGjM>_P`nzyVnW5c86!B1ChMwXC@wyNg&s#{xa!FjjDlVXx z`DzW2$x`Yeyk!edqXk6_dp7Jqp`s0YkOdKhr7~_@iM+@U#&Sx zYt!h+CNMl=3*A&V5ZA@S+fbUqko95wBa@;w2bWwocn!_h^XLvpdv@+e=g3RW`uJCZ z-t}-5hoq*HZBVdkX1Oz^(_lidW}%{Rp7pMcmQqo%QiVCl&`P+w|HA^{%Zs;U!)YQA z0lgq5*{T93@h!W}ZK{!4)T#icBkK)Maor>$3QhZ9)|O!kN|x)PYk*_qdd0wouZw0! z**TEyg$IlSZPP>9fbJk#$D-mxyyPVuSj+57`09R-OE&6C3~x79SzV+I@)-<6s0QM4 zygRinu1izv0q5x@46eo{wU{JCRJhW0%Rn+4u4B zXUxr7ioqJ$DltPVQ%Gi9FUeS|xul$u)|#0LT@9fVx}DHQXIxu42L#vL<*3-P0pfT^OWaD||6FLi&zqqz7j8wj z9e*ZTV&=fMG%~GKLQn^WiZk@cw|I$7wM8PDdg{(V8YrAz!=ZlzyA41<&yS#`+tNTz ziomUIH0X>VGzn8;O+g#Iu=9~--GfK1@Z-`7JyRzoR+yRZc%`-gVv z({AUp`dt6|;ropkaRWekSSa7D_vzsu@a?s3uF<&r2WOct>XF45oCa-;vr!(8arG3g z_@8S7ys&5@V9b6JkM!`ltahu`)>!Is%9i2EDa-Gpml?AIc%+BF#8Y_9+8TG9;gn6_ z$|;+HvK7YckMRg@Tq&E~))+q1DLVsKPFaQkR2s9J@yI^ibZbsqWByR5Y$2|kvI9`I z%9ve%N5RSFt)8~VH_md(y@M;K+(4A8HfFcuQSb-mt+{QDwRujtdR#f>GEr`vF*}Gy z!Sl^)^A;0Dh!>dcITz@ilZU_9;Dr;+h~?rMRz@*sx^(#a{;jTgBnwyb4E!BDJBGiI zs{!FpNIOgm{fXq+LPPW6C%>n?qcCR9+lL+^2kX8MXM1xe)gN>&;v*;;FyV#hOrjY; z>OED=Yd#52YwpmFoVs~u**#{CgI0x0nHv$avatjtf2HA{N)Sl(fzAsV2Eg) zX2ggVs{@`hx81^#v`_xVkKQi>;C~wjMC^_ z-;;Q+&u3w`7lPB+xwMLNkbt7&9F2F z6c>m^V?Lzm;m?^^LA7~ZbJ!#H%MV;=o4o{2Sw?D7f({mh$~1Njxc}nDF38rYfmsPj8HHyq*FFfGBQW*Z843cz5H@%vXs~rcU@9v*_C#=`L!l!7;Q zJ1&jpiTDcwDm1GKxE#10AVm)1CU{F9>N7mPL~y_A^pC8f01kC$gVu=YXoahJmPV)r z0!41<-mEClBh$c#cdk!hphk>y&!(5TIV7y?ZS#4E-Fg7;Nf9!A*ne)OK(Nt+q~MTW ziRZAeEXHF!{8K6zsHqf>fgU~;9N^40rj_?S9~7I{&=V@vX$>w=Co$$KiOj#rcSIlTXC?>$E^ixp6xn}|L8 zONH3cqzxN$3abdcD$I;t=`s`oIFjaB*@ESI@cISNWup*-EPRLsUJp<=eWZw}u#{?U z;*vmyYc$D{u}KUVtRp@}F>?$N>Q?WSW*~X>+~l>|IQo|_1mxh~&vDYFym$X_VF1Q~ z^}XbM9iM(D|2Ew&IP2M*y#{Ij=`{r@3 zG^;gvpYwOXGr#wq_>BHj2C}*4BOA}#LF6{s5~HCm_%DFX19)u2$RX5&WDjd62BGL@ zBGcDLJ_b6>2w!noP{soj4ZZ*w=NBL%HfE-UiXoh4!L&6avUqxh)Kn7L%&JQ%T!8X2 z5Prqv3rm)6!_&#;<=HCC(eaG3sOIVmHLBx zgodyeiuTGdC55mJ3OY^&{N*^89nizyP_0m9CvFxk7QCj7U2r=!)PiGY2YAyK=u|&P z`D2v5R2bD>kxQf|txT^X(?rARo2fb}4BpyK=BfLgfDJCESn;JuT#UQpUnG^4qY{DDk`9)f1fBhN&7nw!Z+dgLY0oS0)YkYM{$^gz(kISIFf zC9xaO7ZfzsVr;x5#r|gAJ)Q>?SbrelQmzQZoLiu^!B^qc!vjE2hR_7jZBvU-4yU08 zif&mwhsQ0c3eY1l4PE1qielH886m~tMWGp?5@WumuzWwN6aJP50YilzhDzp~7AFM} z`G2%%7ZWMxN#EaP84#W=e$9I{G+J%6PW`kSP|R^b-9Lp3W3L`@W6XB~lxI){R5ois z4uCcGUC_w)*b&kr-@_YFO8EOI8R`Z^0|;8Tj{HN@m&>zUz3D?-tot0Jn}}~3?#vt^ zf=!(lgpC^z>*~%pI|;=-poB?g_9L!Ntexl8a>&ik@NcXUe?f1UNMI;PRAQ29qXn7B zXaRv54Q{0384n}2s-qD8HKlDstK1L@ZxG-}16ttp7>}_n9D5os5@IHfXrW0rYCFr_ zz1xKR7CUo*iDgBK0j$UGqZm;9WW9ivWZtnd#;m*Gg>_+$tSOG3k*6Uz5z?%GPfB0F zw?Jg}!Md{`uOXT$#q;C__yx4cZ}K9jK=r9~oIQ(QCDbfdgCk@XGt~qJ02>G)avCj2 zHQ`;{D#AqT3-+0zeN+sbG_aZP88v^fJDdUkQr7o+`o-v z5jtye9Wx@Fcr;r`fbpw(R#wstTUF0@v1bOasEM{`nFEfjF(Qy+SGSTc1d2AS(o} zCh0YG8>POUv0l>47|yEDOF)G0o$bW2tBY2T*LaBo)SJpVA7xEE2=;4Ek}*vt4A7g8 z5N&iW%;e~itsEV70)j$=A26!wxTw##F#7R^_9{m-hK6Y~YnQyOhptz(Q@Q$An`KO^ ztU}ChPZRfxtS4}(=8xc+QC8QdpNBba8yy7PfW)k;4Hg&!>BG2D3!Wb>cSk*M#X!Wg z*l@ZSrn<_~m*a5x04{rZWQMSX3Bh2m;t(vbl)Z<# zyn53M=$hK$2gEhCN%hjg4d;iXfJ>jw&$bG39RUS=D-&~r@1^n)udtoTd#r5M7GOyE zV1otFQnqy1CW{Tet@|kvSLKH7af8|X2C!l-T#diRTUp(~E6sopq@htkW1h(-Voa`w zwrQqyL`~8wMlx-wFq%gOGEqLz!BZT-2Cs1yP{PcTJaJ93e1b~4mekPX!I-UA@SO>n zk5(~qdldUEkOO;Ae~)bt1R7VLPx(Q9kq>-sWXKGsq=n8{!0MX zLJ-rN9hb0PAF*MSeMKIF-v3G~2RcT~6G8~(qcw5{$c#3M!yRwGE0na@`V}-kjiCKvZrw)5XhyW(UrBK6WRKrYWq;SGq?05+iRLkcc_DQU+s zQbIQ%!x(Q@dncyY{;-n=8Umat3PAQ90}MbAON%iG%J{k}$Ba~QJXd+tGQhYhH$%WW zUBEIT2>^@c#~F_icy^dc9<1>dM6WH3K1QN4HYfHWMGO(ZbE#$qS;N{vxL#2vfgaf` zTHLo-R1MwHN(~CED*~~&COKrDo zU!qBk68lWZ?6!22#JY&m0nO6X6XBL*>~1WwY#?l1?65+S&GNT#Mr@wCN8{+;hXhta zz)Z7#f^$YVQa};~e#+Q;;%YbtjM23uIhqV(Yq4VySx?@^nFF5v5pN_IX1r-;)15O{ zc}%FKvM7*jUG;a{Z*nt8{Z43D>KlME2Yp407*|>w>U0^?DH*_b1?Ch@pT3X4O;@$|FMPCNM+LWh@1tA| zEdee@-3jWJfg)_+GUL%ODGPN8el%&}!No8`p&XgzNj{0-I@MtTk5s9G95(xnw9wbs zd>yTUsm;U|W(vpsfl@?J&0r5q3A8+_T^-e?MzuKJ)I!kJA_^}YiLt_5C&3-85bTq_ z+i|YlN2pa}=1^E1diZBH=BRca5x_B{M3W8Tx^|JStE^^{ft)sDKGV@;k>uK^1+CEJ z4OaqQXroTHD*Ov5%gB0gIAGCe?7}_#;V+T-xK??X2wB9{)T>@xg1(B;N#XFrui>uI zoHVU)L(f8>_@ND*h!Sk+I8F3X$=Zho2TJzo;SLZ751W;AJMT;BXai&_XZ%gB6NwHOSwm2Mnzl(5nGE^UHi~u>EJG4xuRsX(SCM> zVpI=(L4u9Ytv*6YHlPk6QGEJX1D`%di1o-CDW`lMVLXQ^fhRQSbbb0+IaId^trQyD?*e!O?%MPn@WL2=3#wu`V{eOxca^jo@9O3IEG~#`DTIx@c*YFh z4m5uHlfIAfQ_>1e$9qHF-P$!yP>x_?dyZ*TZyl__tz}j?Q9uf}dIHXSVt&Bx1uGS!@mF z6`&R234V&zPpSHO2S&ageu2f-!-j)o-b}N9mT#N-*`a>w!327^iNyfh0D#dzHeTXu zR6k+$lZS~2jwf6L0g#s~-zR-O^^>oDT98#WcqL)V1TZUcho9Bz=MD8UJ{v{O6*Vyt zmjGsx`l(evZp<&G24<)VGhC49*{KxXU`!_+OE=RV>lpE}AXg8?l|TrX+C1oDw*fkM z;GO+FC3 zr?wg)(0U@W@F-=PILL5&^Z(9wMVOc2Q14-^)Xt!?GTK1Yp^pH}{%52aD9JSI8JuG6 zna(zhudMfA+(ZC}SgVoEM5~xIIE=c+cuXV!{Cm*t7a{!^M73syCQ&;H+RSp%2$Ssv z^;u|3x>1S>10PSdEQ<+a--ZNFK^%nT;V7iYKKPqyiSW<_l&mXZJS;Z&baAxI=MX~O zSgpK5i78?n=K(?d(usIfBfmiMG;0_-jxkcS2{oMkeMFwg9sYo@j}YiS5kD4>_JA&o zPU}4=U)5$?8Yl@e-&&91njsnua_Xi4>bTY(G>%+wf|9n)- zT%Z0u!r$u#IEQy*d~Ik0R|=6yr_F;JA)!rRuXM`T>La#__=vt9?&4^ql#VtvaTIi; z=t_K`5C(r;k$G(ppVOqD7oOt`Pu%b{!8O4tp8T;j6a`($2OBImYs$iq3&t*52z6}d zfxhird|W&0STMV3_}Y}#-?A3-smwSv<@3B7U4%7L4V2RZ^u`o3ubZ|YvbF9zuxg8= zo-{N2AI56zZDzGcJqQV2*JXGXtm`zie>m&VH&L+6`YGGGw)P4AndL55i&^u9W@dkZ zc8j2r3h|-7k6e&Mjhwx$xCr9{e9L>}z~fz3oVv?cowXqYI>UGmRVxVra?TYQ2y_S9 zEA+W*T^I8$94OVk%CqrGpWE(A!lF+b36ikx!XI%*=uNBG0~Bp!J-$U*sE23Z{!ZMJ z8zuaFqB)Ny${{&FYWRZ}nDb`fKGc1eUnpAfrccBHj=cWv}##P|ZBxUm-^gl69LTE>;NY*bpD zdR&XzR5p0;ru{wEB=Qb7^5B?4c`RmMVQ+Y(;ZcFHFY&uABGkh>DJ9{oL?P=8*l4zA z! z+(9c9=5Hx=;7Ai06v9sT^huaWO!m06y8mQ9WKBWwUWf?mS@hm7{Gka3mOlTqF$jOi zu_ochf3R0o-G!u&XeN-Ns@7xnpsHjL#gLe=v;wm3DOAf&D-0oNliO7QMydy~AgId5 zWto}%xGP~U*(bie(!XPtCYG0UPu}Ag_=0@!2n_M*G|FX#pY4VyZ_x=k&Vs7-nFFlfVH3PdwXF#vA917^upHoPh5KwKmm)3X52Npw;QAGbsB`h-o2 zW?o1DjSp#-Wbo#!bodWC%C#5Qr+nHE*Aw0lTssb)o49yvFy4h14)N?H2&~V-zGh%R zk6eJ!IcWhj5% zyMMhpW(MBQF@`Jx{%sA#Fy!o<2}br1#@DDYWJdlD0YtKzy3yczWuJ`B?Xa5K{s=azX>LRw~7L3-qA<%xGKa z1&V|ycdY?X6OwX0%`F?Mtp}xvik&NXG{;^9ku9ibQ8U?@YMio;LxR$C_<0ijfN!D zoN?~325?3)^a)Z#q#Kp#*r#+O()>%;ayV-9;3lPv;Uxs|WA-JilmEb_j1Hz1UPgb* z-Aa{+0*9KN_Ulff{n^R(>yqvN7?*A3wE!I!4336P-zHba3*2O0$}K`;I+qwKK^Ac2 z`aHBM+d$lP70@>I7>m^BrW=Dp6da7sAEuVqe#PeN#hwmu-N%S z9OH+F9PpE?e)80hSN-_-qen6bF*5_~!maT+@c3z`fq?xQm*8<9@EAX|ik$?rBxW7E zdfK5?fFUjDp1>yzs{h0l%s>tgk>`Rg)NYzwH4)36{(vwH9cb{_IgSP#}!&mUd`Ux@C|Ko}4hfY-gCw6@W`5tBjum(cO zwF=0DFXEl>KVXV{;pX zb0*39L0lQ7zQh##VnMgE!0421@7C!gy0qwTx8P?XT?5kgG&Iw<;a^b_7x)sF+6`TT z-;P(<~iC}Dvu z@aArF2*3G$o=#nH%cm5rJpW$Ez1J)~ zycf8}v>?ako@k6`E(eUqAL>z#>(TdR(#%GF&y)|Up#C|F^Y{SP`W%W0+nM%Gi@b~V zJ703Ps?_&<2@a6}A!iyme{uxUoiK1ES&j20IC`SamzY&>)CNyunN6xpTR=%I7L8F1 znN|5lGsPDQ=9wljJz{Y16jmvMvlh*^1w=TRb9lN`PG3OWM>e5K8~$+=XiGvy=D3!L zG^30M<;N%~+5$>?1(fs(DCxxm!+fWtmn}pBUiHw&pOpMRyK!rL^|e~yP%FEF^x_0E z)sM0wD82B6>i$zouXIk4Y&~$;1j}fq_%bv52rz6|f-GX@Y))ax?0ig7@O&9@Xur!k z6{wN->Iq_-Hmmb3=In`5z5wOx+RfRMMk_+a z-#2{DmM@qeNEq75ZevuQ5+{m-Zom?^28$wCrlBJb-k*>7Vw4zeeP;$wk#xyTPh&3}0KNc) z==YVB?Fi!$LFwc@S&7MX@}4{;*XSiJxUjDmq+^bw4>@)9qrhP<3E_aO$V-e{2mwfQ zKQ9O?E9i3!rQk&v&AMj=dKrmz1xZEeA@FEg99n0+Ap?`3DRLXUDkih$CmTg(LldPY5$i;h<1SR^27$547l1PFD0$B9jbZ2R9)H zPFXd=QI7!a7y<|ETQY`Vo0OZnp=zZ8Ppmg&zvytm6{Aw{FV2Cu>S7yKo%H=(F za4HyS`szOLTN>h0r+U$^`KS+nZL#I_==2wG+b^8(a12jfv2;7t1MMHLS+1F}qfpq0CCyY;)oo%Q#1a$`>y2h=Rcb?Ob>8zF3GaET z#12?e+mPE~mSDeeVDL=kCk?IiDDixoJ>TlgCmu5<5+DJdC#Y6dT#|&xDDov{!TZ9c zpO`!;@Lg`lFb^uJ$k)T~0xosL<$R1#2`$AnsV&%#viqY6IhZxQ585#Y4lxH;Wz-8~?V;{4wjj!NONMyvF#LyVfl7rUtHpUFo zMy!R%0@7A0q|Fu||2#R0lY+ohOo1L945iwMaMOY25_i(qQ?7MHNi@LU%{bFFb;X{o z$@!#Zt@0;=9Ew4x0ibeL3xmm*yW921zj26SU+dwsc`Y`0@IpLe28zPIr4Mtwa8z(Q z_VBt~8!#IqHZa&XUlmx)nd89)MvT#$(U~59AaWRX!q>Xy&g?gE-1Ze^*RqZirC<2M>V7>{Kw0r5Kd_zR*@gP=UT_PXB;8b zD4)Yi!RHPy^B3!%QW_p$Gi8s=g=vNL&wJ2Eun@#lQL}ZinuiLmg?`R!Y_f4JbPKQ5 zq9zStux0Ru;7N4xHk`qaKG(p%GxPA5mH~+zj$$=C%`t3IaE^wpZACJ$Jhm<^wX%wM%p&jbin zy$GK}gsU@NeW%o(!+I|cM=zB5?XiR8F`sg%+n6IWBLau>vk@H1b5oE|gFCL`IlR55~kNG}szK(9>e8o2Ro3Edx%-3I1 z=Ii&o#yo+VM)X;`mT@jFS*G~lZkFQu6```YwAZlK8MwCfqCMqgng9!5NAa`=2)i$mCJkAP-5Z!ZVmqSn#Vb zu}Y8un>nzb?erhwnNV>LU|`kbS}fvF5?>GWC9cD@9BY$=A;U98*ABgjHkR#`n7W%Q zO>Dg}oFVZofo3_fq~eGKjSzecd5Mp9h%px*5eHF(>S4~SE!8LwywRNL?fN{Cl69wG z&F~CZn+#=!N`Wx+Hx8B1E0r!P*7U9T=@Nmt%?#l~RLSOV?^~)xm3kU%F6pA+qC#$e zl<|V0ZpZO&_}hXvG81Iv63ALS%!BNCk%}5@5_y!*00Q<)BO|fg5M*GRkt4^kUa`5< zU~!&_gPppPxKVN)=0Z~^g&uk{nvSZgJfkU1kTRQ4=VM$G2{9ppQzjS;Z9+5O>w$shWI;W8`@Xu#Y{vYgm z|BoqF8j@Ji1L&P(iigHr49L@zXc zYQ4ha>U||difo)12wqJD(K9k`S}v=G=)o{~dXE2!daJ4!+(mZP$DOK>Q#jlalWCk; zAiYLoLcFjq>_)sce!gMP#gAFJT*Gd@JBO4S<9q{;4inXh4-whOR42Y@cw{5zoW42; zRo7|&l`nq_$aeFgkKQOgo4z%HhkU(OwQ2330%AeUICk<=SiL6@i?h z@8%GM$R4bUn@M&^m-J0DM#m3y+E8;2oj!Q0Qzg>OcKk1PZY4c3jG)RIiDtp+ysOIN zrJI)(z5yg(Ay3E?ptfhd^*Nw$+6g}*3vrxZgi!_C4+LL504Nzi_x{M)s5_at2_}*O zLWh|wauOK~zqNY!LI8(5IAoFkT3xG*CyE2cw92R>528QFhUR3qT+etHl|1}W@vF3s zj7OeiZTQHIrl*{Cnx4Vcp`Gzv=}~RHvCh>pe3c$~fv1)ppTjaubMY4&t$Bk147N8r zapq|ueS(KRto;_-k9v&w&U8)${^c1^v)}uRt?PiEO(;&d-^MRX^ZmgWAvf0;kFaG& z0|4;1v6bfFtDJIq0Bv{lswF=D2Zva9Iwn;ujpU8k^lX48qQ#u4>M&04b{6V#OWtdX zif*h8NFIxM?ylPBEdjjxwErMYKd24IjoHKnD{HWr0j`74C@>$P`vfya7uF_pk#DRr z-s;GK9W>h2jff{Ns305lxY%Z56j=gkiMRh-fZht^`P7kqnxd$#M=nRxBEK=mNZHOY z+Av=JIvjWnzM6r0)77wS(OwNQY8Npw`@No>4pH0ucCBaxJ#r3@di8Qa8(A2qR+a-R zd^$(Y$?U;lWl}5@AA%1AM5+oAsXgoME?2_1mM&+6s_bBJGt@$0C;7$;a*3Uk6ecE} zAuYl0$vf;6^EllZ`c=zODrkmg5w*wFxLIoGk-u|vy)cKAEhM z6lMy4g!zVW)wrW)fT1@283tS!U-eY4SAly?vq%6!&w1v|C2RvcMR{)?g~S4@7MnAf z5*p7+P4iz`E6`9+CWM1Nox3dr#sGOtz}kZ(%HYG$ zUQUl!!r6k%V$=oAAYJhQUp?s8o2Ey8KxqvpM;NdwRnrT`7Pv9d7{i%6QN+5JM|nt~ z$a|$unV$JKh<}_QaqcsDANI`xu{w_q{1uJBP<$Qdsu>FC7o`&KD=bMiKbyjh0FmuSSRj$h+Mlo*Dy z6t`fx|5qZQhpPNf2LMfP2ZSf8(dCjhJYkki%VkG@aXR`AJL=OG`fBg^jY5PTz6oss zqQoGS!wC1|R?HD=J*HV*4W?-5(*(T_f5y~D)=LRJ@=Fx4o<&`!+27gC{$mcNJ*r*= zp&4hPk4JFp=ue1WJl$yhg3l0_h3RwBL=I($k6QG|$s4e}WQs$PAt0U5N;m!0TaUqgHc(v~3ZM4n+go)--2R zsKB~2O^*^j1=a#!*nu0?X7%%F(bC6=b_ktGAj&+mSu6!AtLhR^bP2GLZ&Fg^p(%Q; zQjO;3zbk6rh^Q(8^>vM88)YS|Uyy7CAdW|Cj*0pbY!nXd5!K3QG&5eoF=7r!2}pA8 zqqRz3yB9d2G3`_ypg@RRg27^94kqKf#JysBzhvbECTL|Bu}V-DQMZtH%Cvl*moP19 zwE+*ZR8^+sOuQLg@}@rR2w2)WizcYD1cq5IpZRJmpnq6;l$Di=O!`9k<#A%{Z;a?8K>>(QA*>y2{E98m zuEh*@EJ;GN9%UeM$1}2obZ&HpT3q_HG9@1pe@bcMdz@L!^8hvl+3%pv3~}r4>(tPt z&nx2FMxc79;3p|ven{p~U9P002h@eCONd=Pyn=j)E?48%?y`Zih3!;ysgzUH#(JM= zUOZRz{O{~Jl$TmK%qi+q_+h*7rBb+>`b+dFT5j%F_@{PZw-n|%^WMTU`V}s+3vXpS zRmhuKIM%Olrd{|27VgEC|0PV&5+93mj^=?8BI=aAKDv$gN<#q)~ayx{n9H~BO z;e@Aye1#3Tu)!J6xNU2Hg6Gy%=n7FcF+H4xGsPgr#QCu4Cd8~Rczr<@${`9<-zozq zg47$JR4*Yf=HO3%?iz15zMVxrh0L~OK&@mQy@q!utmglem7{rFz1YBS<&)@Pl z>{esq-R5Ym@BF`DbGqyUVSSpRD2mn$@`9OZLUFhm0U4o(o>l<`I6kOWJWg>6f(*kA zf3`lI+E)6&GYloP*AYK|;-)(Y`!y7RDD!2^^)>QxY+A`CeHw$$z@YijQ7)VT$3_jR zC%p4O0C;GOhKXRb1X^f~4nYbvNOghsU-w}7&-0@$TJ*YPyzkPSk3;uX>U#p4iRr?5>tm-5{d z@6Jt#Y%x$IbA#H`u-?b}3wkg#J^U5^au#8A3$K6t1mSbEc#QFeRL*-x^pV_h8KXnL8y>)4)Y58-SG3e>9#d97_I9HR^ERRf`M23 zg-4=ebxtZO+rAKQt((b@u>%hMf!HrOYcwT+z^u9t(T?*{S(#|51c%vSN2q74lIR)pn0C~p zw;Ai!S)s!Xb&bt2NwgOzFo(3ILq7|hy@53cx`4SjKz2+qzlm|mts%Y`?y%05H}kj| zEk0k%KxKQtcAj0qab%B5x2uPTVjgY#U5rxy9vHrn3_MMmrpnG_=sC0a0tO<~9!@J( z#zYP&7jNvRX=;#>=_v2u8|-L*gig^7_G|wN@i%qF$Yp)@Ycub^0LKPqgqm&Ff>R#> z8Nd3o%>Nd(K0$j-YVN#`B1xmN=JqApUtq!DHWS<5_?^QFf{>2a?cx(+Xzx|fH|WXe z_y~46?zbTJ0W->U=bl@T&@goell#ku;mw)4B8mhl&UpdsSZ3ZoT;QE^9K5OU1O%Qs z(7M{~Cp_q{MD_nFw@g7qvX!ccUBPp;z*F}`N1M9;)iXA{3+(fxHP}e00SgPiWdzT? z|8m4*){QkbqkLj3Y)TB?Z@;bE2~yuos1kpFUfx_{qo<|g8z>L{3l1Rb4G~z-u56t2 z;tQw5I#M}a&UbzWqMW+oKbK@68|4ymOxX7he-Olp9}tBXPuh8j(_mmRA5YwBdeh(m zQkHMXv-NH|$&SK$a*9JrKli)+Jz2|RRO&pchTjI27SjJ?&g1eH+)-#QlpTh~Y~C}9$L<0RT>2;)Se5c1I2(LE zLk;j|?kh7>>P%UntPc*1nzF9jQ#T0U7MsuIqD7D}laLgfjocZat=R&h0ex9m(yd3H z1o{~3HVeP{i=XQ+CgOWCqN4+VqaL;RRl*vSMIIyHQ^W!=fC$lNcnJ&u`XaoUqu!L_ z&0JifZedniT@DI+QOd`AV7tg322OkMYi$*%th_I`n}w1*Ya%_+SXhha-0s9qfrq6b z=D}`!A{t_sXftTi*hCu2LL8q839$FiK%D zIZlgezrji{H(J@W8|8WIAP>7>Y$R({%=EMFzVC9pUEjq}v)XaO`$~{Y@WRNR;Hjul zih%0Qvr+Rte)vg7TC&e*9|~8^sc`#U6S6#^BRzGmU|Cav>8Lab5TQ{p*kOK%E*6NG zVz?7_Ul0X&Bx8w!k+W-j zfyrECkH@CTY54Wxjj!a3p-1#-^cRl~wRlQ))x8X8xgIV8KwJ^>vj9AOJrOl(QG*F^ zCzTvFHV;iq9tAj_0!C0J7h9jb^KK_|c+!~?X0zllWSVFB!n_0}(<| z_m%tih&+OsR*Kz9ktL*BJH+{AMVdP6d zq0=6x=$N{aVoOdW+mgHhxyxB3kR!^219hOg2hge&;6nbSLeEfFsk(k`2aq|q zl(J|HL9hJCR~f=x^ZZ+fuO9jySZ%}5BMpPtaj2yyv|f%E7@I)Uc_o{N9x^`AukD10 zsWJ}f*LLB8AO7SSuWECQr~v~XV1NODAy(m6>$%BIRWJ;Ef;XJsM6qp*U5aNWzUHvi zkTYpA_Xr*_#JW~XuG`i56v&m)TIeuSKNWMK`aC4ADJOT##@!ekz~Ih*AgfakpT>8T z%aUT8?h=MTBD@xK2kUpCWU*+Jj21PL!2&24+*Ps}GlegJK<*Ujp@Yg%Q6a&Pl_jl1 z*Xh#=VK$)MKJthOz3fp%ZP`f!@iHhA+Ne)!=veW}#mF%R0YyoBHgM)|(Vscwave0j za2?jC{T1b0@rBR*?QefWLZS_!o!#p?qS{%*fWPB9E{COLj@59Ce3X0{gA?*29#{j>*4+T1d;RgvD7HrnAuE$# zxtzX&T8&fT`b6pQ|Te8LcwR!k)8*epLHC1~m>a)&Rco8I?_Lz}j$nO;a}H z(L_X~L*7p^Ynn7$FW6eb+IASgqn(mns7Dnd%I;y>|IxDN$xq{?F*aP?q}dJDni?An z3e5oT)*0{(i+zkig7Qd{W@CbsNjb0yb5W7iriZ7{r9x$s6jXbMZqh^bpxLOc@0C5o zREHvUVXP!5+E5DzTW#z@cA+0^WcKZ;2v4aoM8d7N=RgsJs0`~MP^aXX{^F|mj%;i& zsW0x*0f3yF~tad%@#gI|Do`lXkp{^E4cib!b z!??#;wDgng!8TApOXOlatTm0C`m(fbvj_D^fA*Ng)=$J9@?nM2K1_lo89ua1%>Q#% zsjzYZAn;DeMEU@_6uj5Y`g*+UVL6Y}7x$F*j)m!9-kMIIhSCU?ki(7a2U7%lF3d|X zGir&QU~K^Yo#{oC0t_7*%EAk3ws9&8g4TK!Bm^>*7f2_;N6+Gs9QB30@>&im%J7jT z$|?qH!u=j$9hAi7f7qA8=GLT?#+an0EuH;Jqd(*;l2a;>-vW@T=C$Bjb;b0f$rVay zcO`l+L#?VrG0&Q|zVjkZd%=Q2s}h`GKKn1-wGKxBXyCGF5Kkcj5g#*qID7n**IYrGyN^!GSB#=YTEG z+i^Vz#gM3i8+Pi7k6*w-wbPCD>5S0IZO7-6H$!tTqaFfviX$!W_jLE83;Vnr8u9@Q zY~Zt;0q%eADNtdb_tBXJcn68#Gqq`fgQ52CrKRN<+OO;8Cu>#9u3N{m_FFyt5eW*7 z_o-ZgT3BH=I!2Q4|8e~|DvKX} z)m7C7j0O=E6}8cz$rwVyCJ-P?cLGR&NW!LQXp#=JCh5@KVG~V4KxqRK+;z~wWfUDo z5ET&+31M@@F#$(WQE?e<3_1{&uq3Jf@4i>n-Pus*eE;u!-#J6^QdO_sa^HP-d-vU{ zUL&*8&3iCE%sWAV2Az8?LG39=D*<4O@5dPS`5vW7#})-DP?>DX-R9%>{(TGRW>-0H z%^--%jliZ>chq1&^3P@ZcVqJL{wF#|IB`XOw-T0_@MENo_6L>EY%MtXoJLJ7czZ^SGc70JW| zCZ+NnLqpdgc>kx5ct5ThGDVc1oH72@B7fV6zJCzA-DY7c%3ZN(J?bf#|%k9Vo?71j$nI- zmh<-b4~H5cqCHR`wTRE6`3rfACbWn>izErt&0n0ryB$erlICG3^2iLOiTI7~ZUc7% z{1)AT-&($}(1^7H;@=UXz@;}{t;A=*BOZJQlmZ&--wo`tnWl8v--urQ*F1nXN4a?1 zt*j?Pb=e&HhQ{Rn_an#Z3-fR~5k z7qxr}={2z-aV-RZpdq}9O9$}NGQRsDwtw;akE=O;x&t?J9LqKnD(GuU+aeZ`ok5TX zVf_bDjY1z$@h`tOaCu@L^&dkOp>cOBgkW+Yblf;H%pC8W0v+5O47{)TVV$qv47zoX~^w>R)_#_MZC$Mm* zX!LuI01hn+-zm)bN*z8!9V!0f7`8z0CJvvNc&}|aTtkrhUk3G}Y>(jcHuL==^q0VAoB5szvO-Oc&bIF(#c*>CE+7rpL9S*qJ<dWUZt-i$WRC=->kHt$y3h1+ zb8g)l;MSMXpw6vcuqy4u0INmwk8AHkHfVLL4Ds29zGJX=R93z1B|+cu!C9KvVwNJQ zy&CW&(IvnP5O$k+xHhC;4JN4$TD= z2oh;`s&#vky6X;Tu^E6-V23UWKX*a$9ge6&l?K^7LHvTfl59L7sXB>Dr z%v@jkx8cLgj^XIu4jhI6YYop{EcD8%r|Iy7@*fFVLv)cL#8vDs?$$$W314tk`z8dO zz*8GNJ6CVyckmw(i9d?NxMiil*?=Go-Cj|;7g7Nq4P8QSC(SkcD*0PVpeo;{~S3D-{?|rbpfiifYvF?s| zd{Mtou;%hDdh-ZQG|M5@x6oAj{08aW17oBEdLIP%sFC*Z*K$301kRVT>e4^+^$vf3 zov#OA|RbCLEJOSf<^>6cd5a7anVBFb5;^tzLC&*nq;7b4K`!-4#MBrdwp zgLGV6g285xp6-f^EV|&H2D-T1Uk!R~e}TvC6#sr&OygUXJL`Ouq2nV+PdPA7I-sYh zBA|-qt8P`B`8fhp7vq0M&`xs2TVj4rdGq{s^ax!}CYPaF`~|uSBjUjq_LHsyZbog# z>{p#uxr4P0AASfW+<`o(bhT!dw(=mI!*}Ru0bhI&zKQ-Svg%sF_mQp|4B|HIn;=~$ zbPNysZFq=i{TpF-mQ|tGt{ zqXNlsh3Rk51-LOPlxu_M9L!7yc#bNBH8~UWA6V}P?Xx3~^Z9>D;5XFXsVJqjz9DkC z#1GP45TA7zLkIn?EBNjC&FB3yz5f>L7bTLU8}XR`iJ7fi(#2}q`MslKcq}?R?Z^c~ z{I}tcz1XvX{C~0?{3KC8M{qIKLQVzo^C9N01N>Cxw;okH^w0Z0^hDeKBi>2!wg8}g zIX=4M{=58+{`Wr0$KPK68A6$Nnm{yq=(H=?j7Kx^zOF! z;Qsd!ywfiq0}_r5g{L$l0z;e(Ps7xR2fxI~v4DPVJJyqrZKJQ@G!ffE(=4mte!FgE zq`&yyF+N74|DGk*=hFz_VNjLj|CX_e-X5`NhhDL~Ny1V*rUIYY_Tt;WK`(fiHv`@r z;RFF+#`v4DSX}%I*fgfNhrSQI!SQI+Xdwj~;)WN@&{ES-u?;PaCK_Ee> zd%O})xVwW|TZh)Dt-6}vevU5ZxZV%?OJg2s}7UvxqoGs4a z?{xG>dv6)=7Y#*sll^|I%gd@4Jj#6(v^AFn6+V*tjjn;L*8N8C0?|@E0Xcz9Fk(6C z-v?(9we&EYmI>vL!4a&-jUclkojaUtpH{p<#uz}3jMy-1HqMracSg~cKOX`HN-7%8 z+a5qZy*Ndm{F#O`g;z|)xeMQ43HLt@4-L6J?!S&aQ^Ld}0LUK2+mAwJM4}LWFNB8Z z#daeNnZ`uhpj=KYtKh!b@OKexw4C5T9K$1pFWLXa3^-2) zwUWO)FdJA?{9i(ewzkW3f7UA0+)9HyJRN_;guvhEgq=}V-Gt9w=<&GZZ=4gbVzE1p zLFp*>UZ;;2Ab|k5&HXgg8!e3}jJQ(Yj_kI6@xGEz^f3jQZ#aNkR=&K=n9MY${_WaT z7xF6PNN*!AYVr)bYN0`8{QFDh0fHhR zWU7A+JYw+wJPiEc-8}&1g%p^{*HC34vh!^&JO6?lAAU(0%OMWQS|~ikhA(;$`Lrd* z1za~Y)Wwj7w6P}QTu^~FVJQ%nxMVJGAQr?6QMer+>H;wM9R>o8;2;=w6)2?x0R2F}{6Vjz((@kN z2_24H+AyG67DTI-V)pTn-d81=y#QyD*>iF3;;(~WhCqyXm?9ofERKW37v`e#5UE{= z!sr?8G5&cuSo(;~m z7wQfUeG2i{hl1&vsZU!jpSC$LlYkTKuRP9YUTD^*agE0m`{LCp!5c~mH2p<-JNdkw z5ukt1svypk4##^F<|B7kO9cEKn|13cTDB`F{Cp806lD>y~aO85BSl%5MmI& zq<|lb=EU$doGOAC=(Dqe7y>GsQ(_1)*ijhc@_zs#ZBrY-Nn2PZA^!@;C1Y>}h)+|1qhai3M!x-fw(Mv@X5j7bU^RZb2!)r0U z1O>T->L^T(lc_j&sZiD<2v=|u$xR_8s6CPrlYJoTDOdr49@-j0SRNSbN522_9^dw% zO`ywR59l@}?aJur*7z&OLyo_e{<-wUgug=%a{LATb9_J7pr;->J*^6$(1tN8{z`iY z3h{$CIzdHq`?+`lNT~=75#h)v!*TmteR@j z&)T;1Q;vu2jUUvH@juXN{BL8Z#=1o4*8Qyp|LC-k!H?vF7X;M9AB8PW5Ks>ypqAU< zq?U<*Msobs2=ThxJ3mBawILUdGJhn@EI}?qz&o5=+G4D|_4wbw^a53F?CYXC40>7H zmR>UPupNB$0CSX8uUp&-U%!i9ra|rnSZ*fgITAo;U=qL*YfCSDAsj##rykJDCa}vN zrI(k%>}~0#==Sr_OC}z+H+~Q|#=of5_(SMLmp85HB?s~=F!+%n0;h-nG}QI)p%>cU zTud*9x1<+Z-i8O_MQp@V0^z_k6`BjRGc!9No40O6uZF)j=*RMazdPWYL6d1wRrdxh7zvPN z-W#mFyf!uz!UM{a!f>E2TT7B_d|TumyFoc=ZQMDSAC~Q z+bfb4aZXWu)%eXoJ#KDS`Hx}vsmUupDF3#(yy}9*r|`}+7AC1*ukI3I`*3wB0#H8) zJGDcibC**)lIU!yNLf(v2)W{Eu<)u?eb@c2PBoqOh{a6m)AP(Q&lK%p}(o!HR6hs|=T)uGl zuI?DVLs`EMzNfH?E31yt;hPY|-~1r{ZfXyIT?sPvAc3fdXjLvNr{zE0(ld_KHgb`} zokPY&tGFc{uTky5ZAgGt`1K!z(Fp#(U*I-52zy?@P9lvL1p!6^E|R3mM#z1FuFa-x zaNQB)%gxZ+9mt1LAp+amw>7|Ry+1=B_@g+?TkaDuj|p%n_Gu07^vr0>nFu`hc8z#v zA$Q(9vKLsd`mRf-no#Np_)miTbq;#B1OD1JzBL}WeDh%)S5|!ufv5jI0ho;B+vp&6 zi-MHlXpb`Jy{RZ)B?pyOK$Qe81On&f5cwCRW3mrApoi{&^L+9TJL`~t3xe?K@;Eby z*||Z?7PP|bsT6p-CP!>oxDOykYEus{TX_? z1N=_At*!imypHDZzISgBUUJv~UxeckK^*5-tmCqJY?#N6kKRIh?ZH>b`I$?v^gLfB zL0NUS%aTfhx*hxm>G(KQX$Sb-n9(tQTk#vG-ja{}KA-SRNnoPD)0__^c3; zBRD3JViUF)I!w6`C znPS)xLHd0ZO1cC5P97)VY-b<0jeH<|7RKRSIZxpCzlS$V55Q^{-tVDYJAilf*z>_V zl^kgh@WQ_~6|%If`siG4kCNLh7fZ#-+@Bf`MIXB6^IoXCoacwR@y-VDO7GIPaCpK0 zd8^_(O*GE`?BRsIpBv+Ndk;c6=+6Q<;{E-3zHTFu2JbAc`sx5cDLQ;K;J4D{ORM$yKv)`r31}g1 z_;=VC#7Vr_!o@}Q;0N#@l~vz4hvZ8j9)41g>KEviFQ(RtWhIyQZG|3FH zHnS3z5OkjOic;DkT-I&WvTiGuDU}Gq8H~@vi2cAe@FsK&F9W=W%r^`Unt$xrWB!ZV zg?C1P4k8vUAzTGuzOTZg=wK879p$VyQ-^t43z)lAVtF&BBBdMl_G6?9=AA+pCU1%u zM2LP5>K_l3cn5eNbZc-N6}NVm_SC(jZ`bBkmd=l4#j7iB539H}JQ~|m5z(JN-EgMv z31hsi_Q(BuvD1$D7cb3PShSf!`at~M zD^~E?bYrE|ho0Px&$e*H&>ufxCt}g%^k5^+>R|i=Lqs|MT@Ttrr{81HXL(FKOnAHsF2&mVmnUG#`pTeEB-2}vH9S9LlXBcX%w%}i^-&uzvBJqUiYAq_zd!#^@E*abCiAy_%`+zM7H{g90dye@2-T!TPdz~NN92f%~ z;5jM;UhzI`f5^Ec9?*a-55FIAZ-{>?0UDu&msOH7c~i zB6}LJ1oRg=CWq=|lxxSK${nr3@d~*amqL~;7G7(qv9NA%3K`>rY_HKZwJy7vH=l7HVQ3;F5f;50b{{6g%&SG<2ADP+7c60v9-ZUqJ-%4y?U$6|OH*`BnKX^5yl1yKrz zgR}=f_y;+FA7aEdR0}DZS82pSzOnd&k`Hv|55_=VjKM4`&uGJ6pAK)uUm@d%vhHa7 zs3qhDy%8!%s1<(!OuXNYWno$Mk(pwCLf_{}sO0oBzM_=V4`1t~(w8dXefS&Ie!1-$(AjVOuvNWIxY~ zH`wW&WB$9JZ}AO13Q)QVIxS%<;S=A1q;Lqfggz3PJ~$%`H~UIT_%fi)mUn=@UPT2%?**01>(I>0%BQ!Xuh~OEUkgZn zVwu5z2f>H8f-UfW3MkPtLKnImo*%I1QBLf!3QdR7ZCm3`Z9iY?m(ZgzN;g?kp&HLT-YWW@X@F-M&2lOx*@O4D5kSAAiaQ^NH z$P>~MB_ZqdRUxx_6ZCJJ4UJcz2wO>tP(8f2js5Z?Dl99X-DVzNAJR%r1gHK@UZq_< zJQuZuoCxaS^Wi@VGhJ4_CHME@zon9XD|CN3D90`hz}H4z92nd&{)N0CVPt`QNk3`} ze<613%c^?-K3HP(t-2U4-QOiX3rhDdaGUTD@gx5>W<)u~Y*akL1zop?pxNhEq;wff zuM3ucNJZy&izwerMN;syf)Q(XqunU!^fF~Tm?LiSzPT6BFBHWs2?Hqo7oVCN7O?>z zHC-}U0_6-^{3VKL>Pe_h^^)>@MP|;}U2xY8HH0Mrh6?4U zVBFK!(7?K1F(mG3^&pO~w%;q+h|j6vrM!*!YMfU0G)=K?Pqf6}NNn|&RUe$*3V&rZ z_#pmXAfyEG=eaEuceViTo;PsEl`C)u#~a6=vCF}sNWhm!9||J{Oh(;f}pDBhk@huu`(@Q1*#rEo+Y57YLa;#_=DM}DAjD4ax(pj(cEvNg*(Dvo zz@wy!E)k2KBa{Lm_?YDdzS{C{8+?dz=;o`rLwu(S?-#UT{W?mq?}@!C zw$TB3cy;B*jOrFY%1-<_6A&|UDR-(0kN#*`&h#lzWsDEY-GB9! zCo=w2{4eM*%;)#j)0h7m4)B_=OvNikVAINo_o~Z}Ugz6YJaBNG`-1pi1`myNf5@X? z>voW0T&xve$c0|~zJ}vIeCHSE2H!69%zIn4(L$Iw<~tjGbpQ9hs{KFvj&=HC|4+U; zT-U)O2=^VU=oY#E-}I={zkFZ#@UkW{_xpA>{4{vKJE8(XhsXB+G&o z_)~{R=#vM258^KdxUvCfNkC9I#~*AB;56O$DNu7s!vV_Yh~wz_)b|bW*{R`k;1Njt z#`mFbCk7KS_@ACTeDw{-@MY9r>MpGGRSj@#b$hUiUD! zGtf(yO%_zbFNs$94ggcNWH;^iciK&lAR@Z?8i1_teYN}lLzIY8`}hCoJL~(Lu)p8$ zJJac??^htP8|63TqQp*LEl_DL?lO3nC;VpkQSs^GZfJLB^siTb2&~}+YkFRa_{zawd&a>33xWbQ zoDERYY=*A8;kUQ9g=BI+WyE`@%NwpM9y$1^8=7M9SMIMlHPwBluit&2gMtGXJMOE( z8w5u&JG;y84a=vczz}fBy25 zgr5Tu3u}m`nj^|7ih+MJKoB3tqwh>8CxSu%>ptLzaD|@g9y9QHSm5X90DevbKXC4V z4wL|%4sbjjChEh}!=Sow;A}Urc@+0&eTO?80BsSb_7k4yNec=K2Za&tcl+w2&tCZ< z(HGw6L6?X3{|r>u_`Wd4364J&edfyTzCDL;1`-(rVVM6(?6H?s-+Tu&)Q+$_Ab|h( z?|&Hh9|r!1f&XFPe;D{52L6YE|6$;N82BFs+QYzP+lXxIxUp%YMr4m1Hzt+!iOq2p z<~e8dVST&>MSWPmA$?e1q8>1&nw8i0eyWB%8y*!=Soat07&zbMY z<|VVe4v&}h^7QHDVOCesJZIqyl(TqUymYLmxG>i>Bb$wP6u4%KXPw!Y*wL|UOwZ9h zS%2%uv8;budKMc07LZ>2+e9V*vwo_cP*+yf{#8RZgi{u}b>{DFQ?*T0q0^*U7U%z5g0^>W!b+lzCZ zu0FF1b7SY&XFHgn4!E63~b_V#$)4ts%7 z#+mEXFEJ;xU2|L96u5GW^8>vE>bP>5v%o&X(dTaJL0lFU8do!%d2F^b*Wv18pY7DI z3X1x-fMmY2h%q_tsCJ~!QLPav5-CPM55+khX)01a(gLKVNGp-nAZgImAX4 z=DC1AcEOiNwI99!Z6G~{l#jIc^P?I)3;rv8pRt-`#!go;mSJV=b}K90V`bZ<9qcGe zW$dhtt$I9_&0MpS9sN3$4cdfs;Rv?+%H3@4BO?&NiTc}6KYTl5x1#=CsQ-5>OS%Lu zK@;kqu(6R3rLv9h>}1=1O=U@cO=X%qf*r8zX8n!&t5Lr@>f2D?j`S$%_uRpXP=D1C z8#{VmD)VpO$qqH9vLz3vvM0`@vF4k0v+5Ok|4*TQBJ*oU?YYO5m^bBOBY60GxfllkL4Yjjd|7 zu^;}K#>~TZm*y--eYTCUX{eut`q8LI@PD1cwmE=5ls)u5`o9tQ|79n8t7{rddeFv> zY)fOGTX&ZxKdjf!K>eAh-xGDGAyuOOoE^-9x!bl5^LI%qi)#S>F2nejrm*YZOk>M# z-CcTOsa`)0^%tQ2Rj7L>QkN72gzjKTCvA+aLK|qu#&)sE-P2g#uLH$Qi|3cIy8uVAOq$hW z8R|cW`U>ifM9SUHrme#GG54iuz~K@bdn$Yv+lczBm+fTv3)0wEIlI}P9zgw4^nWOc zvDZ-lYzkw;Q2*uatn^jD|D}y3U4b@6+gNy)U2G-l*Sx)xW#pu>tpQGYP*E3ItDWq|)m(4V@CHTF$o2fe#l=aLbts!9?ke0*P`@7H;WAKvIq zysJDvG4j%!#4`V+#Qs-~P8_gxXyVY<`VL#YS{*+5g*%7$IQ8`K%l=b6Jmc;o!{;vT zl=zR&u1>u7cuXSj&~Bo(sZDB&b?}ecrZ%aq_KTDzE_F;E{_KyV5?`OOd3bdC^;C{0 zx~4pOMr8yX?YBa?l1Wy~VVy5hRPzO4oi4nHF$+s#)A3{xdy9R+BBgxkHR&qT64TEn z#`2W6)Rsrz3tAqHM-J}YvS#Jd1^H9chsN{>U-&{*ZA_2!rJeMDTbsZB_5Qn_eYRlO z-#_XYs{j7UC9*iW$l{PpEe|H0|B$qvYFE{ywrNL}_;LQ)OuAmONJbl?h9qBNYI$@q zwLF-qn^!ddw{Y~6`^q<%ZZKUci6h<=XOd0Vn|exJ(K?W#ecK$bUaDTN zTGXCOPo*mk6AlA!Eg`K$;^>F=`bvGJ8}LBUa++^w{;sL3TGe!ka!H_#K%L*f zd0F$U=1j$=j8}Rox5>B3m*L1ztcohDa(|_tGC|6cQl$Y>iX15?o03i4a1gLbG)6g2 zjyJ`dF2y0n*OQM=(K4GaZLV!H#@2c~#yA5owwi;5%>xvBGeMLQfXS-#S5&~0BB#g` zOsS?Uz?CW4BtRt-Oi8lBA&QqT1yr(pJ*a^W!ndrw*gU;CxjCL=y=QZ4ymvUyI=-u# zGvxvD8_hO(yxa>o5;)0_E;C(bvf}8ELzR={6jP+BA8?Z_b>p)WhXJbEj;0%$wl_ZC zxT5jDnIEb7Skt#nUUh`(P$#M$^%gZ(t!)~px)rx_6OJ^sNWDP0K)De|mYS(fQ>G~c zRGT_W7RMZEwlqU3mL^Gg(ge)p74j8wjxt?IZn{mmOo?x@%Xay49A+FD!0>pfmt>Xt zOW!uuHUhIcR^#LpDN^buB}p{fp|q@O$D3Yk%50LGsv6ffcIEVJIUf(Vn(I00Y;}e@ zNzGGfj8ZcnrQ%U;!I6t2OHIY72B>aX95>10NK?|3A{@mS)fJ{IOta(*Dx~CcCMZlp$Siy4-Y`Yz1Xs(nR#!A0whMa@sNV1;^fCiU-ef zZUyZqng_hKzv+=CPg8tT&!(~@TfD3Mbkr#*x2 zi1H%Aoyn$tI_)VWb3lJ)ZD+%PQ~giAcw+jA}%E31;c^dh@Y{Tg~4#j560Y+^pWLzJcRv9P7*%nw{pC z%rBaUm>)M!F~6X`p#BNRiN=17?nX^%R+^Mwl}6P>x2E6yG@{V07Pt(5;QZ!&E%eJ0;0|6uyTv{WvTzc+nv`ZJDq<=5n6(sfbpg=Um9k5 z$Fxt{C-s(UrF(JgG)*-CA}rpNEb<~rH7;)Qo6K3x<|T0dP?$1 z+oaLb%hKJ_lhP9DuhQ+(6VijyTxkv@!Sm`>YSpRE>Kms9tIwZWaq1B@S}i+Ot`1UX zowA?0?bHfog>og1O0|=^NFAx(q$ZzQs4P^XaFpR#B|RX`lpd2Fl@?2rLBB$>c%>1N zLz*bvBIQbHl1Fu`vy@rN6*wl4d{T4NfhuwGboEAXb9Y%BrAnz1hQp5IavUVP%sAdS z(Vpy2Q6eG#lOgX1K<>AY`CJFJ)UjsGaqeGdJ~`e0^ji)68oodE=&8(8T~F1YtUbB? z0{F`rms!sOz%tYOGixqG<^k1Un|u~TS40&NoSF?5q(kUE2n~s|N(!2v8>>45YjX!4MBv1C7c+u1Q{^4a*aJTYR) z^og`ls*qllo{@IJV%-mlt&w(uE}sS+hD+ zsXV5PQXW+XE6Jx9E0aN!ok81`(j&@jWrh;1Tq$2EuTVNEiFO;Kj zl;I!>9Kq?&0m)4ICKodKCN7I7KpG!AmBVH6K$)cRbooZ;$>&dH%F`q>*CPWUp~suX zn|k564F}l*8PF`k9uSs5H^|~-Qxa^o8zhp)@e*klvI!P7o@&@}^27-bBy!I`E|a-U zP}_7CHs2dfr_~0vL_MXtR81DgNi|zNp`1|0;Yh?0f#bOPQd1vU9LE@Kg*@-o9Y{XRcagSl!HoD!xQRcejH6-s6<^lk^X1rSzFpuN+m5$;agDaHx&SxvaDM&v?$}Q9|!{tND#mc{wJMk&M1pHwWfKHr0Mbod8j;J-fr4%ijnV-d&t}5x8%|C%ktfFf+@jNc6z<(X44xclDJo! zt~RZcFO;8x2O}%xn?(H@l80=%oEH-ki{gI>6pUh_#8;`V(AJc`DFabo+oeQa`=*y z0~F~bNnlzF+y)!`0x3rt$kzeWC8B?_yM;X-l*!%5j#3n*FSo*P2&@aZEgrJ=k+tgP z^5&H0>zn0fP0^HpH9F2sI2(E9vD4j7d$^>2M0)!=9LMAc zxvJ?=Sgn^f9hKHM{mNx4q$+F)vK$V|AIU%Kw!>ceu>73-1+0Y+DXcJ4lvQ>;4c-1q9IYJoZ&^!jJ@H8ocKR=rmJmwKnVTV0@j zqHa_x)HTv(NaAJEA=AaC8puqtCpLk9evrPC#;C8Vf9e09G%Ox*{`Y{=!Es*uZ1 z2PCuotRb1Vt1*ztByTT*>@{TWZD-z8lg~V_j#fr1FGG4ism@d5&vfE4c!{z^X(5A2 z{whx8RvaX|FO*2SR!YyGo~yhVB8#t5NDj{lNaB}ZVUR2~WH4C~E#)uS5M|sF?yjt8 zAgMb`DQmbzzD4%XS_ZPWR0@;G{w0f;WH8yoLFs!rWHMR5HZFt3O6>Vld<`b|mop?) z5>i*JQ9H8fEm#kp-@{S*{uQY`w{7x1wC!Y{54Vlm8&0TWbE>Z1@p#q# z+t*a>f4jO$+w*1Be|#sZK58&;SI%6zU9?-8i26yWpM?5JsGp4b$*7-<`pKxDjQYu_ zpN#s+sGp4bDX5>)J+)`bHwR)<%H9~7lE3%Xl(d_sr1;;TkuvGA*(vtgg(+w=rJ&y< zDes3rlfu{wDG!CemQo$RKIID6rj+LD?J4LlrF8xNls}C=n6mK94=I-Seo0yR_^Fhq z7HTP9CM#CJV!dzLMb=@>msn^1^>XWh30GU45fRJ`#PK6=Sew-Fb&~_rht`+O-brT|eAyon$GpuFfg84t;$- ze0!zVqBRSxj;V{SpGGXPZrb&bHLPrz^_}6B)@|A&R*c>He#KMPzfSzKb!X&r)+!bIqy|!($0%z7~ zukW(%dG!OUdG%iFrLTT${dvtk>ykJBW&QV-16JVE`p?h4wq_ju)>_i^gLPszzja^l zI_oc^ezm?Z^OzO5wtoEg2J6sI&RY97HCd-T#%xn=Hrbx8mTi~asoF3Pwylqb*?x@c zY)k$4LfdDB7ui-uMA$0d=wf>-tE&xjWGj8{GTV)*SJ;jp>2CY!@vGod?O_{Qca80t zC$F<%{%oqMC`ghbOOk3fOAv|tn!(u@4nJR~&KF*EaYWZk+oM6Vs;VMgAYX`0qYEy$ zfSJu^IV?Vrlj4pm1LBU}(mk%devLfzCH{qlg>~-S8O>aL@x@)ccJ1E1`?c3z8x<9WYbuKe z7#0fQqDz-9-MV!{i5@+AL`FuMjDJ^Mbrr!L_$Qha?ctflV)@gb{-n3ps!(XZC>IkG zgBZ!h6b8!SBG4~j z6`)@fNQ$2Ln<&_uSiig|@xH5ViJ#QO5C81VI}@k&SdeJD zX6^9J%Od%H3GJ)Ueh2M~&^`+7x6qyn?Y+=m2<@5BUJLEX(7p@p&(J;z?WfRw4DH)6 zHo?mG1D9hTwCE%3mHLxe>A$Tk?DQD{;WO#}fxV zbx~sJj!}sTXXhpkNw_R=)Q$%epZjKFV&T;55^tP$F!9%?hbIo(7L&Mg=!;2^uZe5d zjvn4nW=i~|qI2SV$F5BLEH^K)c-Sk6ADbhSFs?zY33$><-p4ie${2+t#M!4aX0;dI zTQ33+pw%n58@H_aHi<0P#KUd5CnFUyS%3`&>Q4QtWY1`~&5VMG!)s+Yz`&tCr;S z^l?^8>iF^F#*0F6@qPRCA29HiL4%W1thUrNw*BH`+7_fE5y!Mfr0_1sw1YU`&?~O* zTq7}Dn>NGq#rpVM?qq5^el}RMYF2whqatvklipA@@dp=()7j^Gf}G70!+5 z`;dN5*Ayd_jUW(*H!3>TLeUG^6gL69@emKjpWAbDv+X$)-V+r)#3HUxK*VN=l8(8K zoMNvdo61v5tqQeix^;Q#+2ZlK+z9!xxMn-tdHJq6Iuu4(x8sksZInMx+xe~>JHpBG z?Fh?o6lPDzWQDHmoP5^|Is=3mplAG}{qsH0n)AsvN@E$-MC;l13pXU-oP@Nkdv9CT zxt^VpW;ndgJmAaiiPB@&fFH!D4Y4>29p3ChudB$CXGbheZqLpvzV9uuaX8}9cN|Mj z&rG(A8k;d8izC2YTqv?qGe%{kTB3ki#KIL9M(eqmS>x#eI_DJy!yyQTkT(z1?kYeK zkEjx3L7Y#K-R;o323`?P*Ks{hv8M=;NbOe>Ac_#KT*qu@jw9Py7<$Xwr4dsnxsE)0 zalTj2vy7Z%v56du+wRrLjNnJy9-fWY^8miRz=7()M;Q*c)0Jxp5@+j2)FEhA&(54= zNuCWnTMC?otsi94BzR|n>Swz0Nkjyzad9xjB9Q3<5-dFW4HAq7iV=xX3ETnZ7Ui9V zPOsCRPhm$h?e5$;gm7RTBk?-iAZ~YYj#my zuU>(GFC7gn;G?#6taAW5Dw8wQURdbJM|@aup%>UO0Pd*#^y0ic8laFH=O0@DA37%W zHZk`pEn3M9kU#)Wn9@wI-R*5Xb;gvp7^^|>V)~qgn1MVyW)O%X#b6An-MTr5UGzFE z9t=O1cV;JMWo%q#rZM3s2uL&|2&i-0GVOQP2j%<3dc26K z%;DF$o+37L&Jf5F{x>G%0_22vS?CtRWdJ}|q1Wxow{RMc>Xi$*9prf(Q;5XnWdg+N zL|_`C){MfT?Rg4wvva)p*+n@8*@cd|-fUw)hWu&OX0CIF(+iDn;J-z~ciVIB$%drN zhNzMUM^0SNFE@G=}2>kr%06;vU&Sw^Ta}hNuGAO(e3UP+h1Cj~JDlTj%lg8k6 zVVuw)h~3PY7gB+q>ABf%=ocLn-hLruf+#8k9U95@I*q)1yT_Z&AB1G`t^!4PE0iU8 zFQi)ps?P9)+*2V;bRnV>fl&Pk0$H6y zq1aO>Y(%{lxC&i@?qDJ2c`c&~*?8xSnf!uhj4Sr)IdsKGScv%9Jaiqrap6&b9(i^M z)ftx0TrS52%_bKWaZ07QS+FhHy>pz1frZL0r08=hWzh+qixYi3nS^Jz1u@hXkHb+Q zB4!c84xyq~rP87gF?N#Uy4)w!K|;q`#z6TL6c^w+7;Ou73DzSfGMK_5h7x=}W|VD| zo@vRk7xHnSe_}8g*v>piK|>yj$nHR7Z;>O%ndd~IKD<&;1roCo&}JdPrUS1(whYc_1| z9QM;s$F!kHF-QxLmLjc0T7$F&X)n@2q^U^xNa;wK>4o<&!3UYeg%e$KEz_|+y2mog zW+8>;Avx6XV_{%;@Wx0suNDQf1dDI5O$dS+By_I+943juw|26#AYsUK2B(T{xxI4U z@_bJj%P@jEHiCHCQHc}V_}&YsWz51Vm$q^^<`s|@xIfDiR04Qm`p4F z+&*p`8#8%a8XGeOf6~Wfj%L;gvrcA-@2rJ7- zp+Bi(Z2%WfGXWdR%$kycTeO!sJ~f?XQjJWik$L;=w`0J7Idfvhc$R6!5HiP%8byCl zc+4m({YjxeXdr#;X#6R}U?wJ~Gb@BI19-R{Id%;G*s|~kUE&X#;t-^dy$A2G0Bf09 zW3nK@$Jp3t$Gqt-teN5iSA7Fl{Q_7016Kp+T^wijJ=4M6GXvLsLvQ+p-t-T>84!9C ztQ@%N7r5#lxEg>t?~Sz5Qm=Whs@JAoS+6a)rd~U7b-lJ0_mmc0Tdys>qF(C}lD7l- zl=qM8>$PW*rXp?XS+Bj>^^YYt`cf{d*Di{x*WSOWUb`0QRa{TML8Q@<^;&PFWyniH zqOzfB6`s+(AN^DM2=yp^rso@F_w=gQ{)9yL8*i-FmLt*iMEz`(`)|(|qMg`i;0-V) z;C!}KyLQ0yc2d1oj1+@(cVfNvZol@^C2{pyd+C$G_1ZYp=|8Yu+dHIQJBa(0gX*<> z+*4YE6f*$lTY`DHxTd^L@%389sCw;Eq%ttDu zf+82oa>J%08vr`Ul?y$`%`|S1@kfkbj&Z=*mrCo5A(r%cZfB0}3~2LkjNN??z1K#n zK)e*ky&{(DdwH(s_9kBz!iwX@8_aI3*|2DY2?h@w7JEH=lFk}e#FsvnD8n>&<~zOf zgmn%Fki|BW#-;ms+LWOeRo#3! z0;e>5O8UCIO*w(dvCzAEiFW!MMaVBM03I!&1>3Y`Ep}KkVCw+g9Ft`2ht5GJ78HE` zfVx-<=`!y9ZPQK`EEP+pb4H<^Y(~O!AN)z6wlD!MJfyp^+{sURykB29P>O)rS;b^r zx@pR2I3b+~V-rg+VF8en5~Bf$R_tb|Srj^aRpEq(Y?Ik*$Pu@s*qkmT88u(`abuCNN?brh;-ufdhI!+a-?^WuJ~uY zCLz^*RImLDX)V$-dxOb^`yoh)dfq|(d=}@MkiQgX<>PwoUbI2i?WH_C`wpoZX*JTL zNaJcSexw_aE<*YVZG_g{kNfA4M(S-+zw}&2pUaUSvaqAKdATgm*S|xs*mm7bZ?JOF zI>(MhH(xbj^$#C7Nj|WzzABgv1~&f3z)fnwA_nUb;!NTf2i4JEh{c=4Q63Tu+*A(~ zg3lCOI^FHM$59x~ogs$%(3|hEz(I#?8Sek%OD7bV5PZXzu{B?VHjwE2|CN;fL%kM` zbmV)`BGO)@P}sKMekGC@DHkanX(&<*QV%4f>?hwr2O~{Iia`oT8j5t}TjYOJul*Ba zwjPFUgLDwr=S$b3%!R+B+(|!Z4XIaLzg){)>}2-OwagPImO3UQYl?+g)A0(rB}x~u zw5Egp(`BSCY_rM9DmHktU3uC0*zbb#7E+dP&te(Irp289b?@d$v6v#@BEn!R!LW zCP11}GkjER%sAVG^i+Jl!c%OgZ9{i97|f&37t71@GB~JVn_xZ$eRW(*L+X#z8|g-* z>yWx59X$AdKPBq@T!M3F{aVJ^kG^&13HkkDPdT!^6w_fCN<-it#cbLO=UI5Z*d8Pj z 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¥MFt_+BQUg^YO|zNMV#jwEpw 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%0A|*5#?RNPa=saFgXp^7kwTJ#iJ(0DBta=~n<-80e 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%0A2rtIVp{w`R+?)XX91pNX@X~ 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%0AgGiBWU1c6UpIB#qA8#b0vAM<;->BkOP`u`p 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

;bZJzjnqA9Rhc`~&PS1+_n`aZS;wD%ey= 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 #JG=k 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 diff --git a/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll b/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll index e64d83c17ab84a3f0f13c301e2f7606b309157ff..943fbc298463985d8a4e26e6418b0f0b8c2373e7 100644 GIT binary patch literal 1205248 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¹Fnw%%E@ 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⋙dydQAKj5N>CeRQkYmk5%$B5 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�Ep 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�lBM_@$epXSa28CSk>6<=TB4 z{hh>L(tK9*2UF@!`c5au^Cd+uNP{&(-?Wd_T(84_yWLxdk3c!;b@&)k&6ljhnH;38 zX^QSoT%R-EXXedEqjn-yxJ&rs$zR$LdZ~LO_8Td_p$7@mi25n*_|yE;Pv%DM6`Buw zoQq>QcNi&Ye)1pq=u;XM_3<*{o^v(#)XSU4K2fbqg`|a_>2@iGrdWi>&xD28FDlku z$`d^q9MPzGl4Qjd-7$Jzc*6P7W0|sfq5A?((iHwW7TycopQsF_T3-4Qtq$7`8(sU@ z^9&Q`eY-n3hcLHx2V>+VcvN!Lc|>5G*Nea2ic;l`Bsem}^l#?>X8x~bt|4vasYK5r zF;67C2{;nY>!O_Y)$GQ&*-Tu0+)9iH@YMJHIT^!WClcXMBe;{_k)Cf>% z)S!_)`7ED+E%vp#5>FhJLy#5j?P5dC`-E#n;3R)&(dTjTVOKWTsCfqJaOd(z`Kw1< z_Ex#k}(fA~%F^dI=UD0-w z1L_>Ub*!bI2@r*z*yvjEYx3n->!&FGa-v1Mt*l{=(xu1C2H{C)u-e4hgt20caiGO2 z=jcayveX*|@<0Jjbr6Mlq~OA)__s@IS}VJnyZ~P-FUVN&;ee;E+aONtp4=bvtNB{A zs3NENfhl!P^KkS8jb){@MltXI_>KWpcoq^`MIeX3ZA>D5O@LJ}2WGePHV*mDc#r2} zc=L$(*%I%r;!qOX?q4d!1#Zr16k^5sYJQ~OXBaE(^4@2Nq&4e2&|t(Y3W%n(-6IXr zL_sowW{VDQs9MD<4KFHq9BoGhxABoUR7uXb+#OC~IXBhiQ!hNk$AZMb>XJgvkkB~J znw!H2ri&S|psJDq0r*+~88I;#3ZZ~cbnh=6yAV&NUPnuQLcBo5bw_W|8kz{5JSW}1 znc=qnwR?Z!?321?o%sHQbFmcuZwAd%-^f@MZ*ce1c8|tW@4;}cg>NjO<>C#TaaLXH zJ_Z4C9v`0y9V;HB=(u=8J0eafDjSJ0(eQk$$W><@{Ye9PgRCqIVjh_zmz`(v-j-$@VNyjzI>NX7Nw&DDeVBL?q0MK|92 zANC_w2X2X9;@7=HHXg)AYG*SjYV{ViVL{IAQu_(&+QdzL&lAKPn^5 zNQlAaZFG}YWx#v9d*uLBgstbk$WJ?No49gN!n`DQtgA6z-D;t4^6} zNcotQze&o+N9Q=Nn_YZIx?q8IrXs_oatB{Z-sn8RB`AD>$SF-23k65s)sZJ{vMbr6 zl=5l2oJHZ%wKI=CLCnrC00p0CDxmws$bzgGoX@~i_K$$? zCGMXkB{6!ubJ6G7KKC`o7yYn>=@eFs(`DXY6lE_k$V!9?^4ThEm3Q;z@K9fY8CzYz z@g;m+Z7oBj<;w{~p)>bU^kG;LdS^6kD~n#Y+MUlV_+UFIG4lSVt|u9JFBH@hH|5ZUPN-Og#HpLZow>ClARZi z^R7)spR_;4=5I`iwREoPWyYdBoZId@h9yC-dqLejv`o_Lc3P%3h{lRx_)Bepa?9z1 zvFMlq7w1vH*}vwmf7UaqicZasr|3i7M{j<}DLAL?+PP>B*?`|PjGfGDwVXD~rs6G? zm_3d}S6Su`3!02=B{r9*nu{4$ld;W@IayR@ERt8=bye=^1Z80^b*jH7*9)TsmNUx> zjdyM(c;)xxLO8b#?>|q4@t51tBGi zBJx|x8G`(3?FvUYUOeB&ByxU?Vo$quUDh6;x{@3!$h^RAYQPF$`aZZat9z zQw8c(0`)f?LRI(Gh2PND%fAY08n4pUo&t5OK(#uAsxGQ~P~Fn6z(6~wFTf6z;NX1x z1FTtr3=OPt_7X|af)cQCJrF8T_tmq=0(l4>KuR24b0#OmAZX%Ojx!X3CGOk+c+TtZ z6W9w$5ZHEyu+>%d{|dHWnvSB}=UgJ-f9ZiAkOEJ;p=56)^HU@Fb(*e#KJp0Q|5w0o z|GtL|%Icf?9?*gmPzG|=oCT|V0s`RSKUPh!Sq=f@Y_alU<&@%L4~y3xnIL>ngs0ANfFpL&CWc*ZL{=wTaP=N47%JD3a%-vI=e&^+LKBO+v>T!_l-49gSky`* z6;ZNtwZ?hsU^N$w_@)a4b!(ZdBc=$pq`EE9^Z;#I^%i(Bli5xd` zC3kYjczJHmP<&?ZqECrVEo#D=oIz^|*{z1P8eIiub*AU6hBMHm4@-Mbp>W%JAKM?~ z%I)l%xo$rvWPkjvF_m_ciMcphXS=Mov7)T6oKb3OfL5Reu`|M}T9A{dFmLA7n~6G1 z8Bruhnv$R9U=gQov|fgNqyNqxwe@`EvwYkioMMmdi3NvTKlCeyz~T8m>K_ZHxDcecIEg`2meF7JiSvu}}LLHDd`h zKc=1fcSEa%G_bP-X`mIQk&^ROLjVn4k}Ww??6RKj49e8SuNFhT>!qVpn0;5pyT#mI zv19&O$#%--}!aIH+3T=DNCLsMHHN>s}MX2^)t$HUW2PPB?z7#NhU83tyBODImyj$vv88tiP-fH^_xI?tA}M-zMZYPPO%Kb% zO)~j0!&d#fZ4G`2ZYQ&LC;dwaRnr%D5h0J8>>P)L=7<({#ju{r*S>NEE6vEyEOn)+y%MAI?T;}EXI$#keaG8a){42Q3ypBM)S4yEo_R&iqxw}vg3bqES z0Z_vOCT|5R%B2eugyJrY%7pCa2IoRbY80L&7>@TV5XC$H-{U`5*+Xy%1~(|DA=^yo za7;N-bWInkg+mr%B{-v24W3^O2x>%lfy_`Nl7#e)@1R~Cu$wDK zSSIyGVZ*o*8BET-tVbl&6jYPjgoZA}1QLcOz3E2<7j;q1t;&(G^i@8n*Z;-_geNdd zWB`|J;YdGP0SVeI#k=se6~c{*EZLFdzD^vonMDV~xE%`{)|&E)dUZp2LA0VC3-6L9 zTJef$ls6hd-h!L3ooOfeMwz`COay~SFY4*#T7 zNXIJ2EryKkV9W0$9u&HOX;_=M5Tq&N9iZ>^9?tlN9xOT}?mSGxT91nc`W(!)t%_I0?b@eQ z_z!##ALn<69&kd38SPj2RioWkjW(+Ies-kft*R%~C|^Z&?M8VSM5spjQHEOvc&ZXO zqh|#yTpk_bU1o-Oiy{TacQXM!zTA#Iq=)w%{Nr%nyQdKx$PM*1xF6=qchKUlzJ)XG z_oOzIMSDKSn5yIrqei^z7rkL066eDxsqjn}@gHQE<_8vyNfk4M2KYKGMUj{CFrU}&G%6jR%QYL#L~<1q z`J1~Ok_t19{WzT#rhM+17qG&3qwpDGTE~sZ=%uvhD;k5X)r8G-8tV&qm>!Gvjd_3Obles#I<@R<^}qykB=Lq(vsH@vNBte(g)ecPJ(~(OxN7~pCAM4u)Ka!RcbV-D%XydG*>NmPo*j~pIb!Y z_;RkjgU>0h-IqaPRx6f`&>VnM=XQl>4?X2XUcFavYX2*?kJ)^v8!(08ARJdWV)hINfb!$x}Py6 zxU;xiE!23n6;AF>6E+&$DbmLVm9T(Zgs~<%2fjjJtNRWCyV31NCGAcSzB&@`6mzoC zgc|qBy;#eS$#1)V8QeH+bCi*GqWy0ngDm>zCI(*g&%61>=C`Kcpbp$sAQB8I_Y?#P z*#AhoqD47<%yXF*$(q9+{HA=~*)kS=gKWwd?Rhtea@u=qtL=P78|3PHYUn}ZvGp)l zEXk1ZaRp3aL`XRiF0(Q@O1dv0dt+m1Uvl}j?cs7>qlA1%w>Fl_eUR41(%uSAf7I99 zjH>S!JCbv_gt%>oHW;f)O@H23qUg1hJ4zAtjhX zN>C#Og|?uvy+S+1kGu}bJ)qjcTomgEntv*ewnR&c!r--`Cq&B&TqRfh`u~yz%zo1|3+eK+3W5x zmfTH7oZ8h>knQd=+3voJ3zQT0yBtOAm;G`L*ZXyi%`Zs%U)&DD+-=aXK6l{$$oH>j z_mLz;zB_k!ODW_lxe(ds3OwG-#>k?8Fn98smC zx%Z(K>OT%mdV;X?hjJMk&krn@FVgR$Jxx(II~JMbS1C~W9puFeKVh7R=Q}js>AwU$ z;bj8vTHvj^oNwYt^okU4t~$%j4vxs%9!t{{Dxk%+L0S))f-i{z-&YOPB$m;*OVAHj z*{(9EaUSOVVbq9wqty7QSL1dfsqSdkqEx9A?gH0#r8=R_baj-IY6|7ER3~xgDyjo= zTp(Xhg7js6N061$U5b7MWUmGdx#cbpHC*cWwgB(xHM@UDz?JS@N^9WbnQZB1OP$he zNt9+kgIwu61aO6=$FTwfOQiXn-(SU0_X3Rb!pJt%z)Q6@{gfK&X2WZ( zP;|Prf-OOdBuZ<0^Xt?AQ=x^mQP9E$i}#_g1T7n+qTgNNp#|p}9@7*$&8K|oJmt{| zUqfLo+}-J$s!MlTKd*LJ-v8YwpG!KfD^odt$=9yy$zR|AR~_2fF8x#b7-tc6dFz5) zhNB}|d7-S>GPoK02m5YWFAxg2Cy?8o>%;50kb+UJn6<$B)dF#J>p7}K%FhocqL>_& z2JQW}tItF|4lR0zdXNmu_l`v$R-Bb%(QSJ<6&03S+*It4O@c6Vd7fbGK;#1+CEGh* z?7V{A-{IHz4o}3%pw8|*MI;KmL#&pCNVe1Kx9w)tI@)CRuP2+gFwNTO<*53XX0gS) z;N|_@=}0l{dLLrYIf9q>8OF&rN3(Bvp8@XO?tKPNTe(G!aAkcE7M{d`jmN@QrPt$7 zeA?tABTx(1JOSqPYAna40$PQJj>P#G)w-4>?f7`-BeREmO7M~cNMHA4=>mTyp^sG zQEv>K?_gVC8sE8ib~bWc-uGf(KmZRRY3Xj5M_=!8m;G+Ls~XSExkQXix1$sJe)GNXqSR()Vq zY%!Ie0V@%BokHpwnNpQ2uAT_QEPKqr#!|)PSF-T6ZmaLFM3zwe(an%MhNg%E&BLL8 zll7Y?kj|QaUSmu?$-nk5`{vlC{v*3!i>zwM4*Zi z0RmU~bS@Fu1Ofv2eLm;8 zvjlMY{$8)&A3t6%GVgotxo2OVd+s^UgOw{!BeL#9d|IzTJv8q|kp3RqAnw`yDiGy` zgG_GzcQ*&y@8^^5tbJN9`=TC2udoqk+@69n+E#T3OZ)RO|E|1*u^|LX)%qvu{)c)8 z7JZCZS=@trOwhFlL%RPCJLGD=a>s)D%XkLIk@ro|?pcQ|tM~SVd$C-I{jVv$3KeUAWQW3<=6jZpdXJ&0 zwPnkF6OP!y>rKLy6A5_%3Ben>)0Ci4;jgLsdT_t^6wKC z_znNQ(C(Dbo}|QKR&7O1_6EO!jT>l^Td_Pkq<8i0PPzll5a}xERgI9@u zSw-JzA54aHz5%t6(;iK3Gh#uL!vXOJp#))93)Bo=d()D#Z^OX^?Gra@$g*AQmDA(V zR#iDYroKP>MxFyumGV8-l5LABRB`VC!+YRuUiI?4#-F*H;aH`Z&l&G4Kh#5k;!Zoa ze^nqQu>n?wrse}IhSc8K>#{4*zc|cdXGtutEPu3THCQ%g6x#b;U33ub)T@RFn$ZZh zH}kpy&1lhefgv!kQ`E)gVFrpiNE5-B%N&@My&y8+Mw$sKySs7xNV9=AE(v&tl=1gt zc=D51Cg7&aG@gFpWu|FG+Az-ePoijc~=K07p6&s~Ez^hVJ zqZErRZj|C>Tn6y|v~`c&S6P_cue;{`1Y>?|#KQXVttmXKc%1r5)$0Xzhnf8c1=Gve zi5qc&#bIPVh?LLU@cHY@=c-H3E}zxO2{@ELh4HEJdUXrr!^p=q_ECO`pFpA#sAZHG zIyQdRaNrXLh8gociH+HuJJJyb_T^y&z`+7LjtE{qoS&X5H1E?W2>sp5aUTkZ@Pt)O z;J7vG!ob`{#7$+nII#-9L#tiT5bMWV>;9bXy3Nqa z*C-?HBfI0kK8-47HRxHN>A^W%K*y&~epIyEw(Hu^HNjyRpgsd_r7k!}Wj4#gS!r2^ zELgVNZM$atdkGeQX6VPU@-(cw4eLy^pR)&Nq~eetZRJcvk)rC%Bx|>vz#;Yrpn4CV z_9y2CdtlI$1oCY7y}AA>ZhI?q`}gMt3llmw{Df(tsJsDdQ=MJ5?_nkr3CAep=%Mwh zDm3g`FOEq?I0?{Wr&h|@GBBbq2K>B(N`L!gnGZM>(2=V(I40ENAjB(2f7{N&R{|q? zbFRQp&IXS%T#28+i0dZ6r4nclJYS6;wQ@fVGi>(fkyq=6PI1jx^>5vV1x9|+jWu8$ zsvy&*?1{Y~yYOjUz6fvT2ycG5#>=ufz(ds*5}^ioSH~8S=o?;e`@exk>j$u!I60S= zTu^pYWH!;bSiSIa>uh(V^Z&X&5*sArG82!H{`vp)`iW5i4WzQppI31hC#XNqo8go_4iU(_E#HcNz>ILDv?tG5>@;oE8opGwU3J+nWSFd1VR z0A!MTJ^eBEmOqC3GU_fsUe1~SBIE0A@D^*HKPmr<^sz^6t2kTwprjUltwVI=eVOws zzMdKU1dX*PikjIKloVRIc{Kb~hF!DoTA6{zOp&tT;sqjQMnudoR&%+=avl*=D}52c zn&N9l(dIbuHEbztNxAjW{~}hNaG469RgNBrD8V?2&k;<6X9$LBxjhoM?U>wIp=K3Q zajNebG$*6qcdGrl@s$rx<>Dz+ml6x04;_Q7hmy|Jh@^9T3uXs<*GhS<#6an@;=RQd z5RvBqG~uF7d|AknDe_Eh6BBntpg=e0kRx@;8eD~^viG}#FRM4Nh7=5W7TZ3p{CT{Y zM5|2gFFEfko7=yKZ)@$^M=R!i{oM@2pufYv#$EDe=Aj51X^CgIL8B4hF5+%t1G6Us zBE`fME&bn=+{hilZ1`qpFx*&xF@^O1>!Znd6m@RA58=ff9AwwuMfX7)+5%lKY9@`2 z|LPUkS6g_29)J~s+DEVzZKLk5gb?B~muq)GFAB`3Oxed>7;Bt=s^|>yG%)Ns|02q5 zfgE(+XIMREuN?w^%~rsF{^G3t*W5zJ^=~e2bN!nOUTXcD+bsd}GIIo;$Q&l{Z01;i zf3w@a2FilZGGFQrOi<=aJ1O&}*PX^0f!L|rV$>d9<+vYOMTeDTi4H5v5*=2SB|5Au zOLRD&&*-qk%#@zJ#0)tb5{KH(hV@Yk)LV$1tkS-CwZl~27oQxs3^h7)7(YdO)>^R! z^~@=#Es0wrO+di7j;@iK*BJ>`3=gNLVQCAaUqbj=glTSHT_3&*7b;k^RKyVp4w1yx z%v1sxFv4d9YFfi@2Cu^}BVc#HlYxrlKKqWYK#tNJrMUvbdar^s2DMQfkJKP)P*btU zfh&`7%iv40Tw~Wu){kvre@sm!ISJuQk1CC>PD*vu_kp$N3*aHV5k^~-7wn3 z%P8<~S8YCAe0NK1Rk$vbUNA0Dud^#3FU1hA)UFqZh7e}1KEtcAcuT$)(cx3nfO$v= z`UD1+ClEhQXm8^OAKxxSfpZy|lY@it>GNc6{%7#PNy6WlYr&VM3QSQx_B-egaYHzp zh$CgKG2)3EI4GCCqMoOsRJ=jZp-ee=c15=Q;}a8|pECWmfIld) zl%*2P^Fv^L3FhvZ0n0(uq~>eGy&#LmA}=Tp&HEUtn+70!TsC$G0xVO#+dy1a}4{Gfz zwTnX7Gl2yT{h%8=0Y3Df#EuL9CooX43?U=B8r!FZPWZND)>s>b?= z<~@i(-Rvit_bYXQzQUE^rdnewu2COqY1McNlcw|!ci`X6N_+;2UzPZ6BNBW~vx;NI z{U5v?vHaKoxUzE$B{(GL?t=A#$vZh=G@#}3tp3-?Q0jM$Xg|RoE#K!02v!z8nV?PC zmO(`(@V*6q%=1{mJIm$ zVI%)+gP+MY$^5&8fA85KPij+Ym8Y!}v>(>NeL_8afBsq2-Rikwv|01>n}c;7<&>gnuv3dJlXOWpQJJ& zGtLzCWNUdc`4^w$s;>EDntJjhw($=hX>;BuJ)xG-LW(`uo@u4MFYSYyMYo0a#)sIE zxR3>_x$3ZGm@gBt2Ra%B@EvWxm|tv1F)!Q%;f?c=G7W^0=q-*{)X#!lWZ1SC)pvou z(E_n>cS_k4`z{nZ5R0W{|EyTEv58~5=9tzfM- zYKv;sb<|UoK71F4N2d*K`!P&7*tUJAPNDC~%pJC|bol!Z$d_faDigHnS=O%DjQAfrbTIBdg;e02{zKIkSf<*Y zh_pa^-#FDJZ^5IG@Ml$^E2@NTz^VZDEo$v@T2N9&HEH~W2gkO-LNQo zG0OZ67}A66Y}yA!7~hn(4<7xumIZINu-S~|E{+d!Rku>Zx~ZosGPG;ue^5R~sP3bh z5lV;s(w>}bT!DKN77Pj8R@Ixe+zyv!EyEg;Glfl|5VI!r=(&GqrF9Xt2lThNgW`hC ztn8ZeSn$Jkl?#x>WR9mUTTRgc{|S^6ObTKr!JBw9aIh`FdW3=Pu_xw*GiY$nqccc3^5FS5}pnrtWKh*rmK2llqjd2KF%$2`EUx_IS-tkGY}wMoI@xd>7)}9~|1Gq?x-8Ll^tJ%w2Fo(FKP$QTUt&Rg|CR`oJ$| z7UNDtx^ZJW@C&$h2X9Vv!u%A6<6LY`rV+}OV5)9}`D<@xvXWT1KN(Nd^1>3z#raq? z8zp8T#%lQIf%7J(=G=f`A<=dGb97S3*(n#ggFV!WUao&9?m)NqJhiC=>se3?>$Gg) z#|h-;O$5OXB&Q^)F%OIXys=%~K&JwK4Mujbt>p=2BuWV-P^nd$2RyHoEbxb8Z2i*Zn{8RvElQxPuTTrmgBICKbfKYP4zWy?YM#8CSaXY4o;PHhNKQE9h*IYuTD?4X5H+7jaJ;c0Ed; zu(!eV$oaw}B0l89DkUd6Jt#-aFy72!!~k*eJ=GC3Upq>SA4b>9&#o?~R2SO^8=U4{ zfy#s4{YcG01RnxJSS)n}1FR2+=Gqt) zl^krerkrJcTulvS5^6F=3w{hhpfX_M#1-b1l#WQ2mLH$e3YrtJryk}xAXjyDq>YI?d`TIt^7&^ z;?O=wj1~-XvIc9%da%rVy!zZnI~w0Xnxbyyd?^1&ak4vCATo}*TSSc9g-eXNuUlov zegT)d{}j|#@Xe!`SE28eJb86PTXfk2pJOa_g}#PZ8H#jHm*r!TFfsnzq^(HF#!IT| zkCZJ_bO?)aA$>)rBGGr_4nSP$VAraB*@NQ>`Tlw{?t zu^p;MT>0)vK{s}5P%=*%sT>_!1Ceis68WUh!^$O2{nW!qA|!=PPP0UqjtZoM?UaM| zwFU-ljtZUCsDSH9 zy)(im7m3NQIZtz3sp6952Y4WIvKAxwv`iELm#O&?*T9QN@K#Is)_bk^ZK0gPH{k*w z=^#bhi*JN5wLq;Y54D6x=%<>nqUU_-C+c89asO7ma1IdfO->quTH|SKDr!&~;r`C7 zm>O5GMK1hEE3A+QlO|$Zf;A@WTLpZ)<~LR|T`Llw}h0nUOg+)(EV z-UI^;DQTWP*24Clj5Ds_+%Ut1EtX3}p3FGod4WF9IFtBEfy)yOeghw!!n^+>1!LR9 zcc4amb71K<|K=i(G&c(#r_M1JLs^{D@*_gV0~s^~aHG8yj;q4X zB7EYZoCMAH1LrwRf8PB{UOFjJp|lpY5 z#FP_me3EnQA(ww$ct6k;oR_3NhP(--qo#YG?<@&{q#M6%qtf#f5`iUp)B;)rbgUhN zs@X=oCqJD;cMQ{00dADgEm$#%)$yTlc@m;!g;p>dsPrz4(02vJN*(wM`70;f7Q{yr z@oOX_lk#4GBi*XiJOCGC9fT~5aBQ*(TGghpY(`s&YE> z_WIy$m%>sg+IQFwXC$J~I>CQeXKZgO`LP7Pi*}-fMR%ApU=OG(pnD77H^_2^7lb@WBgoN;J ze8@7(BfR(^>l^J*eG;0B3^;>@JYXJat5i{fLUab@b41v_0&5)Dhs}c)aF>=9{;lbH zv2w-Xbe8jaZ{}S5B!ts&7mcs;x9q_u;QX?3)(4zwf(4GHxEO}?;G-EVa>3yrbbwW^ zuGLVfh&Z&xm91;BPkBxFKG;w|hZ=<@fh5NgS&JuN6e|;+!!IpwsqAZC&6d>M8wMMA zEBgUI;TiD8eBkYmi8Avs0j^FQ6=&FR)s}lRsqRJYmd!a1eutZ;1J?Rd#+S3IBmSb}MVjZ4rP}g29=PE(vSNZZ7XQcL|KtjMew}kK z9>q@~f6C?~i7F%73TJ2MpK5x9d%M{GsJaa2gHdJfz)ecW=%Mgm`=MVk(-UY2Q}Z66 za1HY$So!Iwl5-qM#U3Wzzu&(DwzKX2Pu}US5>}6vB-!L%W3KpMheeO@h-EAg1h{_C zt{hGcyrZoc*4YNVXSFjbBiZpcU_+1Hzn@YiV{-U6Yh@`&IX?J#ry>>je%*t%H7o}k zQZa4zz*3jyy$d%2ZE(JFzqWjhle)wBf;~(|y57;rXE!Pz-%Z2GkGDb*9ttP?fX;R` zp2c?_cD@Dskw}hxhcM$BO^|vgz`hzjAsZerttL~2We~(M!3?js2 z_3l?}>W4A>7GgU&`+nc~_ABFgY^1zmV*h4_{;rlTe%iL&O4-YtGz>^)p4!=j@ z`SjC&K`HWpUi3~FkMT}1?gWzVuSb4v!hHnzKJHW{-3Ax-m#~JQ14%A=NQH-09A3gt zLnCKwDCx%{7c+=K9P#IL7a2kh^+hA~*R%I=bdgpUZosT=x^iqWUAMuN9?w6ptl%@j z4r}%_A6UYOATo|{xUfWr7B$vHh87uD));S~TB1GJ9N12TM=@;G@{5lmJqhcJ+4~cW zmS}g75>QP38>pO;Ccv5|pkdN)w2Q(>LZplO#^4EK1^&k9{)4Lo9#?L z6(MQfx8Pfd@0$hHOn!#0Ll%og2_K(?YX>p&RVwp5 zA*F7F-%+mXlxsO$*OyWl!oYJ(e~;z2zF1wa#}oxu=)Kw8hJ}0(=0|ZZ84s|&951p{ z9}17bXnq}aT?&0yL60usjR>a@( zuMxjHzmYpbJL6&4ol>dW%w+jL!#FhkV#<5r1OLDvw1#y#0_lLsB5b)-yM}4-`H?qp zvpzf|+%f^SMD2fQ@`N+`kJ0829y495ysHvOEJP$6n=(g zea*M9Q%Dv!J`VvrSk(cCWGgPWwg zW8lvWKk@rkc;$i<#(+$&fx(W+wpkrf6Sw^Vr&&^A{{^`yK52qp+&{Bd(G}S>gNkST z!O~0fv3+8@gu}mGHkcVNBROhb+zK~VU5&92PU{^^Et<+6doaL;+Hi$>4?;D}$|y?? z4&m1*t|(Y^8>(y+f`u{KjWX%2?%@HA~%{+!(!e@9)%oUn9gaqP*unKyS3i_%E zu+Pp%wQ>qS&4RbXewsH$1&a|`>-z>3oz!Y{5gUTWLi);uKaD`WPhxWyo%=ruDAAWV{`;fSilk2 zA9j^gsX-wB^M)(r{epI=E-OBHMd8I|X*iRiO38(dFS$b9NPOS7h$*da}%(*-PhJ z*C;;hKcFoy%$N~X}bceM9aGkhAYQrZzRWbDE4a2?z^?%-@icfQ?~bAvS$_jSZ; zxu+tn;bOCW%W0I3cBm-#Lfmh%+j?Vt#CB?SJA&B2OHZFT|Du49Yp$ z6R77@ST(M&C$BHuZV&$1g2!gvfrfnBh4^$9Y5`xG_YFLTKIYKuCzu^$0j||N8yFB8 zgRhewF6Uf@h-neo&JJEF14RF-grdVns_JfV$0k3R$i4td-UGLG&pw7Fn2S-<9i2hz zqn;U|v?iFqMDVu5v-e{R{}%eV4X^5N{*#nPVayaoSqm-bcp9G8Hq@K>cLb-mkg)%Y zyT%B_he43ZHL&`CE{_Uq*m<_p^XsoYh6T2Nk?E-&&~+}@jk!8t#S151|8ZO^1BU3D zE0oBth&|B`GUpe&_(b~+>>r7NfgPLsHuYUQoxv`N>m$7qlkDv{>W*HhdDkIkr)R+C zbv#a|D#IB_s>YR?z@JxlrzPVS+c%}^-WV@18^43RH#zYt&$l*+2B}YL=sdX2;B|QY zQivDG!#HPtPMWV`TAnk|;eLi1wC3P{r86)Y^WU*Toq~t|Bd&8D3S-M5#GRx&m#Nr` z90+w7LJdzB_knO%q8R2~tkFmGiz5Ih0|=&GNzZQa+(7~pAw~{kXxI{t$wK=6Yo>zLh6QN01iShzH(8gcnTq85pjNC$TWsJbZ|882!X_d0{_4Y*y+ARpK9Y`y;B2;A)!GlvexU(7=~Tawq{iDH?#@K|KT+va?SLlN zX>WZgqYL&d`L+!fJoCdGp7(kw9Nuo)TmL8Sge$M%>l4k}JmYn3$fSBB`n6LrpZ?H`GoNsquEmH=E?r|=cSX-jIs=ln^d@I%AvNr%7TH3Y3S z9mChJ!1K1_Q!c<-YCpAR6uwqPPbcY@`#_8HJTPGaEWDpU zLJw1xd&)2??sJ*|p_Rrn<%9ttjk|W5KaW(yRvv zxmZ`X=%L+7dRAyq(3;FA;Js)st#%*w*NUEfERxlp-FKM^+B47bZ{?nByUT;FSU5nb zKtFFcjP}2q{x1D59VhEiLOG)liI-_k;84fwNDdkPFn6%S%dOFWgZ50sg%518Z1^{L z_Glr)O8MhLy(}H8_qo`zRP?RB9#O#Vd_TON#brAVRl7rOTjRg7-0t-3v)IdqH`&W> zhBf=TN4{dNZjxNx_|v&U2}UzEiSI3VDorvrj2SDA<_njRd_{ia?ZN+vU&6F>i|3^F z=nW7QsM{!I8=nr3zn;~v6z)dskZyZFp?DY8&{uh$+-icg3W=o`KT&O4;*we!bR-p$akBn9QFE%E~L_h znv`^{PFElEEX*3KJK~Ij)G$zK*lE-reQ@*cDjlypUrNRxhet`TmKx;O;NXo<+|5 zLofzDk}d_`bL~49yC4I;9Edrz#nXY?!y3;XZ}4gN6iq4HK5}Ys$@ZoM$a;&mtj6eX*OO#(>rC6Mvl`N`+ z!v5|+8B0a?G+GL$;%^Jg>ylJRj+m$YPb4#ku$gPype?F6zCF%<4?ZIRq zQ73qH*?`x8i~ov>!Ma9aI>hVGYOPquz`A(2_*2g22c=5P5F+D|cS~U*hNGI5EfCfE zK^J4A+Cxe6Q}9h1o64&v_y=`@p(%VEP71)SYEas}C_|_chWgFBur1(D9OcYQnuc59 zAsuNNE-iHmE-Jm2ewt6W@)a4nBWsJGS1^5?mFnlx8DzTNUQN1Q28j0`y|d~+ zj(!6(XMUqwD(rr}GvdMC2x|%T#pJEQ_BW(wH1{`ARcX48T@KYndzF{~(=#X5Ku~Gw zb|K{3|9k%NRRnv1d^OXPkJsxeA-O*_pT-Tou@c1zXns$xxNpLQ389mhJ420EWYq@S z7hASu)nTqi(k-4)Z@tWg6@PTrTAV@0C&b{u7MQ<#(t|(b@NeK`?#QZiVLs1_iw5ll z^L_%xcpi)4^sSdUo5}`S;PH{Yc1kR_--^x6Eo8hPZ?nEdPbao(>&NRM>lC9j zZPl}G#V|2zfd200O`A3~3myF&=MO0#@hrassxq+w1cwhRdgo&ERhbUmrr|3+CtJ_1 z_g5o@IH)h8zdVQKmh59our2IzJd7t@`L*c5EC^@lGSv@|Zil<%xAPlKgwWRqTYtHo{G{s<169)l)EgT|U-{$0UAE!HRYWTgHz z4bLn%zFldmG5Vb|QcH*Bc&EPUh5z0&D#Bb~E^TWW6k$S4V`L0dgLp@P)!48vg6LMqhJ;^lARr8OZyhC^+xlZ^?@;c!o z8FR0 z!biyCgvb8@JVLma4t5D=kp~E0NzN9&oZLx2`@+$xJ_PqK}@E_|H)qVU2S!Hb3eM)nK8K%Oc5ck;t=e#Q$wN%uVA#pGOJ z6{ap6pnD(Tx#TS2Ipi+Fv&iYfkCBt&_yl*$29u`IeZO!KdAIPB5DbiM!cUNEgcl9~ zuNM9b`7Pmx`h%AWKSo|+`X>j41LP9nv3#~jIFDQ)d@Fg3@E^&;g@=(H!ntId@NMLt zaokmSDBU{<-%M^T>>{6rrcmU4F!@j%?-kCWd%f`Q$(x1ylS9Hck(UYE$*&3zAU_x9 zXQA+oboa%%(?&AVFo^DxgjIgW34i+-+(!ui=m)!mKYAQIK=`EqI9vF}GH^HHG2~9d z_mOF@1#vyda4f>l`@lz`9R}`O$%gP9bHO`=Un18De@R{^oCt}|SS37|{JL;}Ow~0A zvlr7w)#2a(*)QB`9(bnkmE?zohmyye{>gd5Uy^f$HwMAF@Nse<;cLsmS;7yIy9hr+ zP8a@^oFv?DKKKOm?;&kd$@_&97l3yQ-$33b{3E$W_{P70R}24_{Fd;09+(9^>azbn2vEpLA0eDab_tIn4-i&q&W>~M7U$kcSmiNQSf$4ztl~P#P5i+ml{O=ecL*#0 zb;2r~b;2tBtArOaJ+BMTC%-7{CodNEkp03XMCO<4Zn>=247CA4@Jy-Z8y6eI# z$$f;^kh6rpBzF-$LQWU{ft)1Vq7V24l;k1r?a2FuFDCC6ZcpA8$2Gzi(S3EC|F?uM zq5D$d-;kFGcP9shv&kjG{mDhb*O3c^e@7l8d<}WH@Kt1o@MUD1u!^gva1Xk76;{u7 zi1X80_)7XY4Ra{Sdl&K{VU_;9!Wne0kMpxxxC7lo!l~qC!fnW}3b!RcC)|p>FwVa( z&d+q=3+ZQ)uqyv?!o8IIBfLh3AD6I&^6dcOmgH>VHso%?SCTsk-#|_k9!jPk{djZ{F7fxn6Ulcw~UMzfy>=)LU zhMB^@AwMjfMIJAF4LMI(r9W4A2;Ftz`^kNTJ>)Fm=gD1!*O1eNza=LL|42Ro6?RC! zlDGE@UqzXDxA0K%HsLAc8sSp%YT>WQZwa?zIV=^vmb^sx4suXm53;%}f5Wbdd6TX|=Q`krDDm;(eL3l?8!v7#IjC1$J@pR!g=x37f8uB>d)NbGr!uzfPyM%A- z0UjWHD>+;E2Kwn{x|2Hz|B0L`{219{`scGpp#TqUz(zKN`;m7DtGMdoc%875epU$& zBEK$t6Zu8qHq6Un;dW%d@NdX7g$Ixy79L6-FZ?HRp0KKyTwzsry0EIdKEhAZf0nQ+ z|1QGs(mh?clAI)5MLq%5d&v98RX8?b^=wb!@$}zS_#Scx(|;zoweTb4 z(@=zmygy1lBs`V8S9m(PUU&w1v+!(kNVu51OxQzyRrpErbHZ!L3x(^+zBry9$CHGw z<+wCXIEOq!SdDuw;XCL)K)ByHaJFz?t{rs~{(LOBlki~rPZhqEY!SYjeAH0o@C?}y zzK~x8c*uM+;2>xZukpCP{}+>+~fi-j*G`-Oi;o+&(p{IKwB@_6BA z$a%sm$hpFwlXc;XM}zwa4FwPj!JO2|q&~CtO7yA>2TA32R($93VW1oGm<++)a29 zxs&i~`B7!6oAJGe?T4~ zJc{fR9!nk|d>=Vm_)&5<;Q+(zBs`a#D!hPf5q_F{^ea^kFOd!5_sBbh*OKdmH;~r} ze|RZ)mGDOL>%vv!7lo_Ii-k9l{lazRnZg^$56AI%VKr{&34bykesYC>B zONH+zFA<(W4hkE)s4a7YMh?2agfHl001a_hg6g4P={ee{xUZ8_8XT2a-Do z4_I0kThc z(Qm=ig|F%bo+P}H^20dc9pn+hO2%*rAENt!IL;P6LicXMEk=Pm38#=#g)bsogfqxT zcd2qvYzSXL_Z`COyJwwnKf13IZq4~?m2fBW>%v*&7lm&iFBVpFqF?xKy3Z6IOMY1R z5%PFpFF8+m9ywR|E3z(pg4{-61K2>mI_$=1RxDEpn>sq&smJ|ui0d9QFga($fp<~aW$;Y;af znQ#XARpH-|pA&wJyij-r*(ZD}zY|Rt-ro^CN%$CfoN&ud;1R;fWS4L|@&Mt^4 z9LIj)&UBwC+=2YC@CD@YaqfA-m(e{}IFqak_agTZ{w+C6_!@E-;qK&g;cnz4;VZ}| zzEFA3BJUUOP2MehoOAa!;cGZw*9Z?LuNKZHza?BsUMl<=d5Q1=a!~lnKY~kyQ||>A z34hieTp+xUHr-zp{vY|dIR6WU*V5f5{NUZ->B6s&Ckg+LJWjZR zJVJO9=SP?DO!5F>FF9M-L+&PgE$8k|!nx#B;hV`8;XLxu&r~^#A{)XB$vcE!BG(C5 zk=F^|#kf`p=aXL-oX=j7qS2gnZLw(KJ|;rqxvg%^>#3SZ9t)j@a& zxwY_Y^6Bj=?+xTb!oQ(xxmVaht{1+8yjl1wa!6RonahNyP_}$kxQhIo@ZkHv3x$W0 zeZti(!PDb-lJKW=A1C}Zd4%wHWS8(E@&MtZ0{I=N2RNnR&Bl)OrK6!~@Gd&n;eKSW+ETtxN@7m{ZR&mli7{1@_g;c{}G zu%DbOyqK&DKTGZ-{0uoucnP_S@FH@$uzEHrj!%4|^8Q!)*)RMOdAIOZ@;2c*a*c2; zdA0DTms}FZMZ!DjULgDld5o|Mf4HzpgG2ZW`mqVCxOxiL z)4gk)dxtpxt%X$@PH$6rS7|#WypPZB6+S?&7yh2SSvX7%#knsNZlL?C!Up-dIQNCZ z`|0izR^dz+{+jNSgm;t239CGg5LWqe#rYW!=Of*;R0A8m^p{DjYK=cxHFUiDSQDU*Ig@vB7PunvbfeaKCp#VCZOF*&wtB zrjCU5Ivi7hdrpGVgQa=vagD=BUdGq&t~71Vt$Z;5j(hEayT=X;S}*B0*g3nM4(<1v zF9Wx1gWX#2V)_XT?(Pmw?T&r$n)gc{5TS-3oL)NyML2z-2o7eup!9MRopIDIE9~?%CTnw* zwvYJJqbOWCpF$;*EpVEJMhw!Z9PoRGZB1c+rI+$?XcP`2Oi^t8xWm>k>q;JkvA3`~ zf|FtPB%NeCGAmVFq4*Xq$v7IE?1ZTcm2vazSgjmViqpJcp6^5574CYpHH@5orq0`V z!bz%#aTe^+>V~kZV3Vr5V2|W}BSvdp7PEiE=wmI@iX1REQ?6$_4optDn$GJIZ7=>OiR0X2oRSiPF=6cv4HY>n88;{0C@IF%*X*pYYftF)z0I(E%=}m~OFRoOb z8C^g++joM|0%-Q{vw!0H>-o-OHP_!!^4)fXNBdj7)$e-|Yg^ukwXJ!|{1pswJ&`#X zUI5Q#77M(bN%dQBc`fq=0cg+{crUX8;D%b(-Y9yWI>(8pX_vqbGY;OcGF^$oa8_Jw z3Ah7)&hYfTQY-C>8v!UgNgcb4hfCTobXqnv?V&PMhElS!JC5`!3e zfjfG@sHW~O#d&-<47U0!Lwk~8GO)0N_D01!mwvZ#F?94-Iz!=}@aM0D7x;dX>Nn-N z3eZYK3w2Fq8Neu54jf>jDN+V73N}_;B4q%hV8!ARDTA~~86X%b1BAmefD%s@aWfq! zP-B-i!E>@DEGR1*#&0Xt{cyd|87L1kF>fqfi-&w$U|tlXwX!a%A(v}$52O1qvL#U5o&6nS&s40tsrx zaDgeuG(3jPs1x1z4PTQ2i)I6GCp-?}uDTDzvy->sA`%|Xx+^o~@e!$z{q>PxRUEG1 zU?>-`XZD3__cyPXNcbCG-sES&gsw~vO6fK=Ej z-PbZ~Rqq7|dsPMQv2aE=kLc$LhrvY(r{g)1sCxgfH6nQm{=(Mg;i7O3zxgv6h!4AS zENtW}S~!m|>=46#rCJIHqmo(hfBm&#XGFt}7Cd@j_#%c~$*|q$g#G(p8#c5!p4BQ7 zkpA#H$q1W6NBCgX+3DW-#;+`s?&lBtE`*Kq&`%=ZRnR=8YV>h47FjeC;K8-&&Qd`x5ij|lSG4;S$ zcqX%of3zXq9vqpRsJl50*ApOGWZ)MQdUtrIQ%86Y?P|q4SKyL!)B-p)4eMx7!#gIu zuK&WM*A5&QmZmMwxd@r9g%7=~^ke)OKOBdA6;KIN$*)qW#~qdD{$^q$b04$oj>#mv z9L+z?%R!s_H-yUITsZ8!O7a)UR3tNT`8_K?6Q~oH`TU8D=?L5z5Dm$J!DI1`p@u6T<)#&|H zd1%2O_<)#avNS@IGOdS0503Jr1Smal$8}T?Fh2o4AuG?X!*5X!rjF8^Gyh4p0-PF$ z1bDfxVR+~SPhMY@wE+Sf1i`meoKJF?g7ntM5g6RVUl-a9S+0UjcFQVLmaB7y_VrYE zbpQPK_)x4}>4EudZ&1J?dW2zGig}^+6qN*s>&W5D@WOxgz!Qp<{i@1;a~ym-^A+6i ze;6m!FEA}5z%!F*&#KEhEJokO=DV$08yfOg1#>KlVDQ~u}U_J$&krah2Sp$(CTY@~V--4_{* zZVvuZ@!ePWg_Zys8ZEsC-n11t7fuL;le85T1r6qMQtQ({K-x^hAZ08dZAYq% zxgcnAW}}0)_H9USq@(*kQ+f%*tBs^{-0Htdigxcn&S+FO1AtmS7-6yF&B$!nPSiU` z0Lww!Am@xrJWWspdI@evI*eKZpq4}=?rQb(P7}OmRTgX+c_~V94zG|&S7oRXBjFnr zzKY-ix@oRjSS@rERL~nLLk||y83t!6FnrT9`g&HQt;(V0hAfTxDvBmh1~q`c4zw5D zQfs$V=>hd3qNIEkD&v9ql=7VjRxcQwHVh&REMiz{qtVi~J)*Xq)HOE;(f9D2BT!nw z*aLU4v&5x^q19^Tx0|80Jju}N>`>7l>4jCx3aF_{*5T1^tJIk=8S2sbWdOO@*W5F* z#vqqp!e|GlAvmVUp4Hsf*+DWa|G_24-;-YMf07N}|B2^B%c&3JW#yt*pltw3XsmOT zG64jffs7R1j*)|1#McxY+)8s*d5pwRV`6AmYpRZbiiIaXX0Ek2)EKV45z-S?OY_(H zwxIlj16yg%YP-K;N$5mkXm{)5CotN-fG2EX2TUs;hH`;fISvQ9|1+cgDK_$<8PEdr zh1oe77oH2u=PZFR%oykH(#ypI^4!c%1Sd-s=TKW#;`=^WGFvp+Ze zosg3ku9q>d_d6)-H0V{*cA>V284qyPKo30B*|!Cw@?`1Nj=+7r(XU}4^8pkU29Ot! zQ|*m)(9GD>%A(C(*infv$6z?>AQZy%`RCHMoGv-cpvcPmqboseE-h%*Fn3T})1eGr z;C-G73I@*()L1GIVIdT9BYbw$m7I*S!dO|TgU1TYJ9$u1L!&=EVAM9RviU#&Gk*^- zG4OVE^`lliRgI~LwP=U=X=lEqhJkFbBZ5=7fn*FwLNeU>b+&ripJRla4WGhI?OAW; z=lJC?xcmu)+Tseg1^QQR%beD=)(KI8?Hr4nEy}!^^*}YR(_IPO(21kN7@)g~3Zdv) z0WaELE8z&cjX&T5F|oyH&sDUpM9;$wT6*NvTlPfeXSjpqEgvR;1hwek)ZCSraU1E5 zC&T!~@}?}aQZ=_Xa~GW4{!ij&W9nN*JuKie$R8WHGce;|cj!Prh{?;UIgylNy264K zLMQ_|d|zv29aSTk-Cjzy36jg<;NUZ;pL?~rH{%{XdDGjfGVHSKrM7&nll5+v*IXJ} z^vuY-7qi@YWB}cX6{^}giWq$;)Yv+-OIvb$M&{&#imsj5ZJO|4`7HW=KLPT;zPgF= zWPJ#YVdY;kiTR&6^Vg$D{s@DRPonMy_Q#(;=HSmgc8umJ%F^e12mrG?QpV}_Zmi94 zuJz4D08rjM5o%9op#|<|gZr8WB&Ol=($n~X<)b%hK-RlF0c4|~>zNPW2S zD`7M=XJ{~GKC+OeGb3rkbNF|h-4Pg?qD+{1A434z{C}V#p#BKwS2q#77R@{|O4f`w4PY@}3%|&am9)?ocK}W$2)4 zQ6~gcUol2=%*yQRu$Ic68hHJy;^u=!{ll=_~LN zUw81SI#aUQnF^bArbFmJ=jlv;f$a9{IumwZq5I$+PkOeu%)1vaj*!L#)a5%0>CZpGG=;0;eDF#9lt}EnWE7emu4Z7kQib?03!j z=Q`U~ZT_Dz^cdq&vZ_AVe_r7#vXmTpQ5b`e9y+bD;olB#KU;RNaa44rBk)iPjU9Q{ za!TblH1A9nC5J{UT8<-ozu6h_C55jFYV7jaaS(l|)8aM@xl z&zUXu)U##*%Rq#&=dGNN7oB>1RCE)oa@sSGR(W)mX^p&~>@oGLnvV9T z=(j+03Y0y%jnphU66XKtd~@FZ6RjamHXj&IBN?%;j7kW?@Pct$N(80hUl%Emx$yf- z1)}+=MJrlA4Var^x$KDmROTYz$7A*LX{_lmVc#evJPR;P&7Y1SjJ9|Z^@UmO1xzax zg*C4QJqi;T9cZ>G2U3JG|Eg-A`h2ijL&+CjkD*2=Yf^;dia|AgIolQUH<$ub-eT61 zHpku635YN1{IdT(o%8%V@ z?6!k{zG2Yy{IfegTe1H16Ry$zi)3%af6V*Hu9g>8{TB`?D3H;cwKM}i`*33;bJP$W z!r%?U0p~weWjRq%RV(jsEWX{ZG6lc$wR^m*MBBZx(+W-2Sx_~}c3*<$V(tD$Ojxwq zW;XnqSi{$`od#x7<6C}wmKPu^X#Z(gDn&~jxdshU?Syed0qfUhFECrazY%TUQYn36 z7-}Y~%IpR9vw8vZf}J|56R`4BkKmiPuFYx#K>;r=Eu=@ZMlfgh2uRcmS(tcHABjiP z6O6A^8F~>CbBWh5>^RWMH^Y^q!Y;US88eJuyvSnH)wE4NHW~j>51DUmTKU?;@r{KY z;+DnIA^NxoY%ozFQ?;5S=WRM{59kJ`kU|KY^wP+tfu_v2ztIQOJ#8cf&Cv#2&?eBF z*Wvy?Xm#MYyO9!3nkY4nWGs`NRE0= zC7he1hPWI>#&@3#&k@-fS%N@<4vw^;+mBR&pc0}#!7cV+B~p+69+`yH zEjd9ZMjCixq{)C*CF+ke`5K$g84Dutv`RdOdwgDf7Sc9%)iJh`Y&qWtohdzMdIbxdFDEonj#~q>UjZD#rMum7#~fc zH?LU+!x)^6VR#k>=YUGAEPqwCc6>zetw&yClkUp+oUF(c z*=h4avy~!PyrCoPa|deXPfH7<3}l4GI2@Iq&Nu!>WheNfa0~hAPR1S`&ts_?*eq2n z_Wn!|GTZZpNXnwcu9A1Y{u3#Gh;)$ORWi}(e_%2r{ij*qLGXt-EF6JfC9$h3cE4Zj zKheA~U!}$ztj11Q5X;XaypB$X%+CW0BtL!bBXB%uo}c&;F4kYzo*F5lB0oqdN4mU? zaFg*389U$D#%H2Kn|g}%ge@S2NzY_VNJdoBgwTN0QJp9Z87pAC2$-%>w#{ zBfw7Rslm$iM6P0YLAdz%#+762P~C;MRm|U9B8K$41y|fZrDje@z147yNW2lbGS^ZM zfuL2q@cRrNGsRuEn0P-n$TVVrQg|9sPWt>;^OZ2U9T>g02RqGU>; zG&szHMd+Z?=aaw1Q_({1K_XWx$I1^@xPm!&l6z+D$yUB5*jrnTo^aBFQ*dHmFL{?= z1ridl*6-DkX7w?PU$QI}eBYGMdH7a#_7^fYzmToOgGLVoqXoC(iwD2darf8He_K;e zR`AK^@r)L{$$V0M8vLnmd_yDO_>7C=KCPe)9+OXy_>6EE4XaN|5FbEBe@pSho;fXU z(uu=J`K$6O#$P4RSW8%9CDc}KTQmDBqxE;c5D43PnpHio-V!2@hK&!Y3I}3OGTyX| z*KsZ+sGq`@0|$)fCE-`6Y*j1g!(FNjK^_m#8YER zdJ#!dUY(4~Ah2Q?hL7Qq4;Y?2_FFy{P@nnmF=e2pKHXa7-i17&{nN!0?LTJz;!0(| zab%xL&W7_RhdTIlf35lwYN;^Z#mlT`Un1WRO0WKsk;)E;zz6&w1@mM0j(|N6&ioDh z6kkxo%@EGeiL0{e@J;1y}k6Ay<=bJ4|eXr$C1Yb>XI6fWMnL83fsFF7-Rhgmp ztA*w^{Ja|7qHr9iIpTIO;N!AttPPt?#}@HlXpw~~_&_h0Wq zp0xD$G7sVxTdKY4+Z`IjSloB{>vDOxV%o(p{(!H_)999%qc)*Va|gy|=pNgZQ?Jqk z7JN;A5620k-_lvW7}W1&{c7GNSejS>yM)~9tm4BSWya_BH)6V!D6wCeNou}dnf6&Q z889um{)5VRa=86JBHM$XexBQd3t==qyT+jg0h7T%9-H{&dp+h|URU2x#m(9HH z&V?CVXYeLeQRRjRb2(8VNnJF-~olgJXAe zI~4_g!>@gbC~hb1`P(_^HbYL1gpBl0#BolBT#QGeA%p4IosRgG#QzZ?M@tC?>WiDO zb6>?daw*E{X7~+1h&We`1TkCV;t~+cRth6WVMM}Wm-Cet!o-{yjtf;aL>RC=g5jTU@9ni!y1RfzFJE zl_pkg&q+Tk29Dj$-wZ^O5FUwGunTq}qu2!pM&XS_fnE_S`HV>LztmXmzU zHZOWB#HBa0*bGF+*uQ{G6GVKT%kuE&&0I@YdaWhkA02lofFotah)?d_R6bQk$ndE; zCLiZW6Y5Fy7`!|V}Oapq+{ zfTzP9KTU*LM6U`)|A65c$?9u@9SMkzhrUBtLDwM?!1|9?{mH+=kBsob7WImKZ$tQs~-q-+8Tv#=H zlxY)WcvnVM4aZNjOhrjp(Kiv&LfkNB4Z zW1wlwRSx!#ajy{Far;@`r`e=@x8mD33t<`)%~EtG-ju`5GVJTvO_MoU4_Gs`HwK3T zQ@;z`{X^g(NC(UBIHfHgy31c_4-7sS+IP975*x4UPO3(IH3DRt_7)_oD)iZqZ-?)g zR{lGH9dD0JRheur%C68q;MZuk|K-dV;LMjyMvN`Mui*!Myu&}nw8iVdSM9-l{sxBp z%sd;V_%mTa@QHK_W>yY|c>UoE^9KKC{(4+j=3%_kILL-2H&(gPSEx~ZnbmOC~viHA>>m0lu z(I%LVO%UG4u+Z&4k|@aIyVo`I{c@YL_KShp7k-u zT&(QnZ7_!8maLmb$00{xIL^5qWtrL3(9;TQ=R}M+Ff;~?3^d1ZwG#f66Z;#spCB*d>b(UsaT^?RN1ZlQR)fCo4Cb^P+bvZs6=O-$NTsfnH`s*BYQziII|wXUa~^0-0z{S!i;H2Y5m}{Del7D`Ck%mcbt7L$2m{MxgF<26-~#LsDH&4jnhU*g$ z23Kj!Y;G>5&-k#)_H#Alv%==+b+mm+o4$c|6q(yI$ze0x?rcKd!_rHcQjDAM~l=EnRj&AQ65Fw zeZoXkzjnt;B5d083BzRz{a5A^I9yBdKM8Q1W|usI^;3^E7k3~^zgGN_%fHkhYY}xE zI|hGbW_I^?;fW5vV+N`F8zovF^22?KTC|$PL1PbhIa+fGN;}G^krBuknaP8uO#I|U zxh~M2SS{HUmvqaHcxr`n|C7ZW#6~AvJv-WD;_xPv*x* zsX~5Z{R&k%cixmq@@_H&omo;QPG=VDyhzIX(z$Gv2sQp~GI9Am)#+>{8oM@1Ysz%W zELwP2D|^{^JHG$)pm)D|0o}N> zWLwcNPBTfBTFUG;Ds$TChGWfTs*TD%vTi|yblOAiv3$y=dFLAR8j3$KWGrz9p-P^njoNUoRdVWzL(!xcVn{c~uT#GK1mXD!HVSp%!WLZZy@`23% zjr>e+bQU!&vU*7jS$z~74+I!bUL>BxAawVV3u?YpQrK3am0{NLX#jzy#QUKWp+HHd zcp@vv^}j-S!UIdZo6+Q^BgoWU3w~hxFxcfa7e1|OwqQ;khzq{hJFCw7KFzTo!OpIx z3?HGIw2>MS^dTWqAXcW@s-@I!q*AAmu0PgXsv4>EBkNfPP0#)W;(*Z2Q{8|-twPKI zj}l=mrrg;LuZ|deC^E(=%?(oC=XVS!wI1WDqH*a62ZkGQdw$Ou3fKHt$`p zc(0gur^OmPi$ED49@>-JjZGXw%foaVMQ+{>b|};|(QZ!@dpOtjRqkZfF-z}v$sXau zt9Nu*3n+koD-!OSYuPi>{O3Hz(;5Q#6j6S31L?om?GofS2n5`F+rw1NigBC@8_-gu z#E+IDC45-N5pwh@PVcM@C50k*^wL=YBka3fT}q;+k$+c}04KwebqVCP_o@u%P0W7Z z1*P(;_6baQs%G0G@m%U7SDqp6_-w29a%emG!eFki*|`q;A)8r*q_S;fQmf8$g@L-MY6MlxqMbyHtPX$H#FR!E^N-$ zjn~8r$&|oVx_?2)csUTMl^dbG`rPhC;1^0?lyRsm!(09J{5_p#DgGTfnq8fZ+Wg%5 z=y?Sskvm{@<6z=@=@1x}r5A3RzZ$YZr&Biwg^#=zJ~-zxKJOC8lPH z9$S#B$DR{yYwz{;>AD!oM-jQgRizmSN|EO55XS`)xBllAS&S}P; z6O{w|zmwuhqFB8D8o=h%EUba*UPUWpnu5Vq=JWh&D}FvqDDX=mP|!G{S1F|IPR@!t z6o02*(0e50-BV&tMS6NYuVp*O{DN(TN3f%)8hy>S$nYJ)(=6fn0^Zx_Xr zU``uY%*(RAa(C^B3 ze`1>Y{#MO?D+BC%=H`~tEGa=?ke&1Rh%wf^O8HVNAHuQU$s`nxJucwF#``H8R>=u2 z+7~9#w(Db8T$Nq_TbbC72{_#-JrFAVS52!kPil2?MQsX9-PB}$TNJJ;Q*&dBJvWvJ z2zzCu7w)e?zv=8}gv`M?lEGhI70e-rni0<=bttmgUtaiL&0EflX!)g}28W`8mxB`M zXmyvvP^~$_Rm&WDv_Oyj%y-0f{-TFo%z~(PpFu?i2RDw`r}Dr0hkmKA`eXfAfZjDj zt;s}MR}XpQ^gUTM*9!Hjwn%V| z1d$ke=5b-Pb7VWA_d_8|H+~o5ut;(0-nfcayE(-V(WIgx6HUkhZcLtk`U* z%aZ*VZNF?SUEXq!2<4;h@v)>jj#5U}PXYmxu36d*JSW*{4*pBadMN=8~Bb{ zm0&YZk3~cRk?^e=9c0_IRlr95yp#sjZIy zm!gqaj{ltGMfi!@jX|H^D^`82ENm;WupUx`-hX_Fj*H9u4OAic^QCyij&eBUxWjpP34ff|>->7e->7DmBxla|)nxe_><}83iXJB9N3&8x>D` zRCciqdY(M~4bTp1D4K-}6sfL?EF!Ig*a|y$Ee|82KqX;Zph!hNo7{cXu)YV-!#1D> z1xP_n0_t7E%?gmRo>n#7cU5F{511!xFpnxQ3Z?^wDx`rB24yt5gOOIbIR%cu?I?__ zA*)R)fkoO*u^k+JCVgFtPV%X!cO+`oFi$AbgmcGFtMBC9Kl)7TpDg30zps`U4;+7(3l5EUo&q}M?3MlImM{ZWASw7xW2X8RXkcB|A zG$2ZzS_%_=%^cl(0L>z?TJ#BDtQHugDtZFsi})cFt?afhBQzD)_Rb@N+!lObBTo&p4CA;Vi|r z*SyE7CbI7sK0yj!XOG;0m)9QPgl+ZJQt%qE6+N9ozvKN!p)yhr;_#1g(&?+@{3_;+C_-`5|!CO5>d=GVGesJqRnezys) zSJbMej(%f=-8qD|(rM;U z;0W;Fvfwm5RzjdfyLTvQQ0}3{J}i^Qedpq{Kw8@W2JR`OU(no;Q)}Mi(VE+tVh=m( zamJG7AEVkFqG;1U)uwO4fL|Lj;eh6!cYvnBmRv;?9gtq}vfV4hKvKHJJt%1?GjBU* z=Bq2D3rnYv*-fwwdmFLjjZBOM>r}7E)}BQCQCG@Ruls&s zOIg-~D94ics#&|oKWNSB6K4zy{Wn*KV0%1 zz`8O7i%lg%e4tm^@`L8D=tF#9v}UHXZ6CtJ(z|Hqy|&!2WMYrZ0H>|_9a$AW&k+`1 zJ&o6+ipvU*U!3IeT68%}2&aw0$bl#GZ6pw_?ivxDpK!(rr5^6ApWTpb=kYx-Mv_pG zv>Td`~r zIepL<@hnrAmPK{sJW&sUTZnd~GyKoWXsz7tN@pUy^iW!)v!9=ebf)>g08Pf`j3X2$ zV>Rt6C7U?{M_5hDGhRg+>PtS8Ii7rC-T{nC1U1PoBAJta20`+EiAdHb1}Dg3peGpg zC6D!ufe2uNL8<`eV~qVf0n8B(dvG~MZA1o3D^%i_BVdZ41TOD^OJ5?GgG)y$H3}ml zbvgOJMC$r73`F2^AlO2Z!r)|~%a*yo`~(b6lCgHkV9Qbia4N{2AYWJs^Lb+kppQt7zfEvH2hL}(T;sV$Y7#)Zy0Q!N{-F1; zp|rKuNX98Tm_>Z`n8jJbC*MRV@x7@TWsIFh{>3H8utnb=B>RP@J4~Ea~q}I(4N^Jv|C~!CK`Bc041vUw{5|8E3 z&3nmAc=|<`tM8-f4x?Dts54C4wXAKZWKhh6#S~5(PQoF@1=>)Y_zWqol%GZXL{?KY zTi=t4__=8&KW42R^UFthN(zyq*n(uSe_a_mgd-Bhd@8473 z&3Xu+lGLRpxnCCMlB&y2r6e2K`}im$1Tp0%TqddN=I;HLUic5~c8bN^~dMTwK_RFAr;w)9H1#!2Pj38U)98PFn> zbx-jse|?FSTHP9snpqFc7K5gcEa(!A)Raix+#i^`RQuL`T-_B%x>hHBU z-By#Zmmz9#T0KJmISbQqr?fC-9g?~#J-cUBYA;ApVriA?h@!nBy_nVgi7V18se!%Z z!fsaX1mT^9C~7Bh1meoW99irqPC!Pcs~RL1pKY?f7LNx;Jir1jx|!u3b;@g!_2)&b zJXuo8I@*-ql*OkO{RJsy0osOzo-9zAt>n~Xr7r@{O|$Odvq+M^pKVWM8+p=*?V3Ms z{T3Cn%!P~^kF}rGN#w&?HOVMrxP57fM{Z$PL@`{WIM@0uQ|E~(7WbrxNcXY!$RvIO zm>W_ONl&yI`bczHN+RjhR!JX;PD@E78{LqSNI17OvyYy1 zSxO?A1gv3wBswi6(Hcp#tq+_MGkQo+FNv1+k!Vv&qB)XiY#)gpNlBzjBCC(u-JOys zR}wwaN1|ydi83V7R1&Gxu=O$Ojr{iHx>6m5RvIuLs<0uxpNV%ylq*Z$Rg3G#Ip(Zb z>M9H7iaBx5-iRX~`(@-S0HS8$aCDt0xB$_zbgy+g*%h2B0w=JrIy#2Cj8%otX0Es8cUiyM`wN%I zE!nC10ZvwF{tr&5pI$X@ux`py*3lPmc;v5CSGF4t5<7^ns|xB_&C1#~9aj+pmM(>n z?`4rusAnvl8i>TxdbG1eC5108{WbYhbOz|UPSzQO3$YQM%Bn)v8|a1$x@Bz=l}e&F ziKiL5Y+DF8ZB>|Wosajl5yc-?rgHYe1wg(YK$s#4aqoh1JVHEhnW~5<`zr(T56O;= zD5hkj2~!_>tDFW>5{#m2H?m4Ef{A~L%HZWTUBj|>C5rwy6Trug2Ijrq>1}<10AD0T zmhBwhYKOkNnO2m(P1f(S{&oq>Y}3fMA$TljH|MZIu5zEFE?Bjd_uhm?IkWg791G-c zZE(tyQe?kK3ef!M2BycwvB%24D_Aq|)mFJhT-vBY)F#o=Z}o!7CegN~e^HI64avDe zQA6Z)Vmg&_BFrwGIum2lZpiHrCDQB@$CuIN3EC10`>wEFJnrg$(wyC=Am)QBu9If` z4f|ozylPjfh)QTH{y}ox-)$L$}YyIA!r=^y>nHya*__gk+LE4p#%ipfrxBQ&HLK%kuO zFn|k?GI{(93695N`*E%PxR;X^L|$h<8tupZ_T#wy*ls_@;h2h)8jtd-m+4}wQd%H2 zsQ5k|tAwWXv+dL3(<57akdqFqRBocOD??l5zm6ZJWS6cju_edYb*R~7E#664YA1)O z%NCe>=C6e6tewzVDM$AaP!n0*UqEdl8`Mz4-q1!Wmj32T2ed6AGftao-n0Hho}STc zy^LAEY+`L?`eg6NTKJwbrz%co4M)VXr`SI*w@boCrW8pyTHuH_#ZLIopvSTyW!Jz~Lm6fxLZI3~ zuqM2n;%4AF+rV{^Hl#Xdrn*^8UA!o!p@&n9TXpkJxm0c8JawVkU%4kfd7+v;uNu4A zD@bfO8>I=WF2hRv?z;Z&RcJuQ&~=g6e{Na_8lKM1p7n`+d6`eU??bo>7ew@{85}9k z^}75ezp-noEc)BGvZd4Iplhjn z0IUGGGM_QU`5mrzEGVyvhn*9oBr6#qJ0xN6PC3a@w;5+%VuF$`2k!aG2mwDzP3vSjJ2?^bnGf0qe;ZTOj?5HNp_X> z?3xmv?WqOIvPUpfO9;HRNY$zEu+}R{wW}<*!S-!e*$d_+zzi99N04rn-wxJ;&h+)f z7|tzihlZslUu7>N40Qsacx$;>mCGUwR zenq8*Nu~B7ai3TzWrQi|vFN)SLJN&%@hStcm-7XQ6qusIN>mEWD~L&~1g0`@6oi+# z1*9UZY$i#1$_O8Q7~l%^d;wlXRso*l0$2V8x@>AB?LAMG8jk?Hr9_=1knU=Ur(C;V z(bMj%q^F5TXEmNN(S%`)$8gbM81t{`&+Fl{AFU6p(*3_9mZ>;8m~`634!n+5S;P)LxRqD<=WM) zOTXTEPwI&6VKvVDrQDm!ibv**>M0E9yD*iRzNs_e@U6X^r?L*QxK!&U)G+oi|CT$< z+qAkvU~Bo0$$1mSNADUwz+;Ug68~`jjsb+^e%fCEwl@Q4w2EO>E+3;6q<)H*MQ2l4 zMYmbxl3M@n26hS6S&0fj51o zscQNBEF!UIX{&i#rqo}Juuac)X;F)r5d*fj3n-s>VOS5^beX}#u2^4B=HI4fexatt zdYs%Ts5MFZ++h8jmi;&Q^|V&s2^yrO_*V|TDa|c=NA>Vz%@(pjBaJ-$#m-%%@2SoU zTmW=pbs8;rWw%XKOV0kLX4qA;!%DDPO>yee>-C1>S@%X z=`u>YrQ4Xi@qSR5G`PJ&RCVAofKhH&nU+}bdXsw0!yK&+G#W^velKi ze-;p?K1Mf-xGrOv6cH|L)b3qNynT9}D_6^njxh4Ta|@5!WrV#m$4oS5{0qJHp6Xd) zbCLtUc!Xf}q5?Sy_*<*Xbh8-PQwt`?eA(f`rUia6y40ewkEG`{g^X9Y7huWvIcBP- zPs*;IrAqoRag8d80>bH4W5PxirBOAhQQg;}8p!1DNkqp$t;30PM!|G8(&1fsBV=q2 z<-J(gx`=BHt|qn0D=2qfsK$H9ySejmk)nIp)&-||%#6f`#EO^0u_aDYnH;jYwze=l(380RAN{zDhU5;s zaA6=ZKQn9;7g*h(9pW5WEv+Q;N#X#DNm+I>ITvT!B#zvZ?Ws9Ol84QzG1ez!vH7v; zK-P<2$Y?Ac)A=X2O9rkBOmk#HENaKU_k+`$0OVEW& z*;`nIuO{92u={o1|3pvDb$jxrq`YY7m-%a*{PapBeB@BNxB5LZq6@Z0B%4R)Yi`}- z$pN(WM>9Ri6IXiVquli(NhW@agAwUUoJv03u{zhlT%z#D4KgZEk~YRmy79W437cJe zrKkGV{B~!aGhP+_S?#zpJvE={b%&~#)P9qyPEKgiM<^wKPYNGW^8?4iYR8@HsX^B= z_*~t)TaQiPY*>8$x#3s|_u?E08(R}gs|Ak(Ze=&o|0twLsCR4|SYwoIG>42`HQbDx znu>W;k4^C=R!RO?CE#`?p5wqNsim4vC`Up^sA1w9Qgl9yB!x-Q59w`5k_mleEM_0_ zdTWO2k$6V;u*!L-v2Lvf_|a39We-Uz}ifov%OI}>e4z`sdhoa_irjj3;e9t-DWcMmJP z^E8jPHkdPtnija}Qof(%d>@_qJ!Qg4`q=C%&gC~#0hrAQOH6&?cy}b>U37=hr08Nh zjN$~p8mXO^r1YDVAXkDs8P~ZouPip$DDiF;kCW|-&I@WAvd$=pO=t^5x-#$DgURG2 zoc(%164tffy;tSow$JwD9G zFyD>zF3E4c#roq03@z2U5xzG37#_c1k@Wgk-Gm8~6bu!P^5(bqgk!|ls4&2y1l?3CGN zY>BBU#%PLkTpjr%yBhP@`2L}piO9aIiO6h|pDuI!@2?%`$?OUkfnyXu zzs~Jnp@`)TVBYKSFkz^WU;GAivq!x&x4dxIg16&G`cnvKq(!zhMp|nF_17E^)CX)$ zqdg8og$Ea`HC|7qOpkXD1_KgDUhar&BTJw=P=EIqlGQq@Ce&IefZPFpNR<9a2B+{= zEjk}Q!R$%2^*^LLp}(C-|A9&R>jw87R34)Zpuc{+)34}Xk2`l+3^y$(G}EE=6+*~J z*U}~Lk5?7EI$XGI!39P$^&??g{CIys`K8AC3Ef5Y^N*8pev1qXP5`8mC^_GZ@5bZC z(n3`53*LZhMw-&&#|KAV>LBwM3aSI~{i}f(d8t-_THmLN$@zNsg5McijAr`4GmX-Y z9T`CJLB1mGnUCYgX-NXz{2y{!a&N^zj<9EB9yp(7ZQ~`g%b0M?8Uaw7nqBwwP_wLu znmdJ>YCO7~cM8N~Yn7R0sP;^H2v%xri#FC=)Hx$rzu5)^l#|JALLMR3c#=jNs|%xz zckf$MR9%X4q}aPAyQW0EKq)eAO1r3$&J)OFxTtW@BJkLZmh>lZ$r^oXtR+ zeTgSmkc~~C>aAKNKrypP-<>XPL@43OQI)gysV-eae@4bh-1Wnr78oimprWmxo!p;$ zwa1ys_E4))yG=qyD{XRq=XEYW@rGg*zJP%!y=_5J$Y`_M;~P$UOs4YE9M@Ab>Pr3X z*2rw@$u?gun~Tcu!zqw@B%5PRM)kDR`9rnKuX<)E+UE_oeR|r4f&!UMhAM(`FOrs` zm8|Q9UJ7rwP2&4{ngo8<(;}Ho(jIPR8(V95GXHu!hIkU^a@C5#0{Qo5PcdXKtfxZRjmgZxJ+>KX+nt#-ScrUm;nlKXB8=MtV(CHd&du+7nsl z_9shAL?YzRoqv+jaJJEAyv)EVF<#7U#p&MCg^XhiQ#>_PSWQ0P3e4Dqe95+twzhr! z7y)8F(N=-EQ=)W{)Jq9nj%-OS6Hk5jD4O!li&NSoHR$vQTm?kBhI2UTnXL5sY5j-R zj!XB{B=nZjT)~qSP|a18Iq%sb-n6wW-!A4G+!Y^brKhi}GfYLmRa-0zp->>JOr>L7xyP&@PR)1V&3DL@FnF^*HUBz*!8jX(ora zi=|zPT8b4^M2XW|iY2|oNXs`DU+Zlyu7Knsejul$;&Y4(-`v7G|6=!h!Lyb4XFavD z)*s!9S~k4xS@B6nXv(&6-s+L#(rTjGhN)SJDG&CCbed5-THVzu^Kg8xW=tAu-AZRy z#9tOq(2?aX+aGZ=xv&T1jwKq<9f9r(zcmBis`zL(g zC-1=hzC4Ar*roP+I7jL}Y8xJ1+Kp>+XbaWFcn*ea(l+YcCk|;yelw~q|7kxUi#Vo1 zC5IoHc}*SIS_Vd<56MjFGeTcrhH?)SG%ZQ=g%R6Z9u6eOp6Sct~x> zugbP^kvGJWFC5ExRiPOhH&jQ@3J;efhwn~|&B#8W$Epjuv`2zDU)4F6!1H2u?tS>* zq#;7aju293?7JMKct5ngGsKbu%h-vr(QgWfP~Iov_cdcmZ0yzHyiX;2FZ^|t{I_7XU3=6ysc;R(|9&s<6aAO$!~E+xbPn}JHohg95FdI`0rBpaN!H6 zZ}M1F9Q9U@pAs9HDGHFhH=xak^4N@VI4r!Q#3P>P1_`vi0vEgECFK&gB>m7P?9BAY zJI6!bUFESG*^nElm*>5pt^FDWRF-IK&tl>Q1tX8C*sFV6b?-|k6t%iHm<$-61+H!& zaC6|69{qrmn3UDK)&8H{4+=fXW7ClPW8>0OC?ewzKi`+}e-^ce0v~z<^*=z4y%CA> z<(hXo|19@?WN39PX6&u+-$(#jPj)+iG~j*bQHJ=W$_N=B>xEw|k(T)?Ei-`luyI_P z1HEqieV^`aKB0U_f9F8?5&HYVz(1QEL!2Zv%L&6Fp#%I(@FRWW&x8^P9j!i3Lb>H~ zHfOIdh&D+<2Y$~5!TNSw z3VcCBZxj|M$_OobnzV3i+~0^G$v!>rh+g>mlFX7Q*S;N;RI%&94(IXreO*$DNAYot zzyExXk2L*|&$K&b8AJ11H2=J9XYgF@Pdn{o5fPIqJYd+|FgqTrVa+A&&lD@P6wT!;Fe>m|9bNp@745Bz}v)-6X1r*jmrSx$%!krTZ| z0N_F%Qk-h8fM2q?1)fqi|JWQ=U?5wvj*$|ZTS4$2Se;>yQWqyLOP2k}ik=O}5mQ!H|o=_eSiE(_83Y=O#p@ufv%8ku9t~yVz+RoMWVn`fH zugK8N`Pn*t`08bRFbB^OQ-zC^sX`X+gp#HTBF{w@`871~9B8olml*xo_+l+2KCEn% zxxc_h86Q^J3NOElvfoA7@1pE?Q3ldHJF$&2p09)=Cr(xH*?{tV(HXH%Tbq;h#DpUD zPD?AO0&CglbHv+ocUq>m`MxMI-j@5Ma`JcAjCHKOlwiu{g0V~Ec86Dp&|?qSKKHN# z>5z9;1#_^Kf0wZQ5p3fjx^ANav8Z_kafye3d=EX z;&SZ=a=MU-VpCZRwTaaY%N5MpaYd)ycR*W5uKe45Ymibu!;b|W{7{nSOv_)@ngc0YQJOO~tuQ}^!$J3&=avOrRLQUF3 z3I@fX?I)JA?~js)`r7y}&Y2U;JD9gS_7{bV<}a%T^(l+A(5K7>-2Tnc%gyoQ8HF!t zQ!rk=aceME>iv|+ZTN0>d`Y4=nG%n->*f?app_gDBO_di)E(krcB2-0E5F?)Pl=6g z?b2zU>i*4T(=fh}xnvG{fEz}eW!dJGoDzs{dn=6~%d{ova)ZizpR$3PGX_PHH?V`5 zX@4UT;hbC)HG`DX63{4{rxInO1QNfQ4OB7lN=v#2t<+hr(_n4wGV#q1FX%J$HHF^d!jty3|495soR(5SPy>R!uwK^qQRFP5{kES5$Uk711zsRcdj4klc) z!mog7&lC+e)S0mQ$OH268d0muAZH6!PyF@ObdU8-qPX2>?S)tzT*TCxc=K~n{i;nZ z@#g=(d`SG{Mz$eir~Q_&C}iu7VGY3he3on00Xw{1!s-fx^*$+T7tykl$?f#aC5hXL z+{;=%E)*PSce=Km8Jv|F6Wa0&>kF88Oq0KQs)zl#X(62L`x zj0+BgmuK5#?-Su(eBefb85fuheZU+mFw^)7%>Vi_m>HxIB6xg2>Mt;x1m?ItU<&bE zm~Wr=Wq7(UYk~Ba8eod@E0JKKx_%QOA?zMrTtXxXJI*cP6bK8xp2T$me6xhi6nHLS zi(GIJ;p?Y_u#60^z(nr#B(4yIw>SuoN+}?TaL_H`6cFw&ARnt1M$uB1!%L6+>h-2+ zKZ|>}CjNC?=Apy7QKlz;9z1DAykP`(8G(Bl_bp|W0)c68%E*?o3MYIX8RrC;v_-CK zDVr(LOr74w=H*d>USqiu5S^K{%$-TgWF}o+OA0IJUouf4d&!)9=E)dL9noAo4XyL3 z&C9R-Gr8|!mX0kEHRGg1Ox3o?P}dzRS^rE?`5*9vxN&pafvw)W&h4eAk( zO&pM3T8T|nXxq=ZtuVef^Yg>T^_5l{fG|%+(M9Kq`84Gywh7T10lt>3!U3$UAfVPS zf%SeL?*$l)2h>QkE+J@69xI#IYpJv&>6ja&Sa4wuUi5QHI!u9-FF^{8Ny^f(FyTd{ zAs%5Fv0-kz+`tzn6#eidiX_Wv`Pj+&FW%vk5o=P1xO4Jb% zsn@C}@SKPY?%F41xx*SKWyM3q=7}xGJd}zL=X5Ai^tAx8f>2-df{5*-D;Eb5t!qh) zV!u|N$g^vBsQbCU1qTEju2y`FtAQRPI{#w?>`_Pcs;F8U1#uJ4D&VxAj1(8}PurK{ zaBLPJ>qs4rjjQ8?s8lpSbv{Dt5N9Zbe28U%x#ec?lLC9O!2y>m zC&dOAs6|Khqlhqdhn5bv1|xP#KN7t%_wH&dANSFXu+sM#+O%doC@=U59+dZz9EXpB z)EN+2AvK>s5~*`|3D&cmDKY-xAQzP@B9iou9Ou;9cOi4o*r)klX8VIP;Bw|fPJv^6 ziCPSEV;pO-!YIOnR$I--q{Ocp_sa$jZDu%r1#m&5Bd<-)L~sl61FCl#9N2zY;Do*H zp;#7nuS?Pd$QfyCP=~(HQYg}KJm8I&S8=exXRypgixHlc@^5rHr1yiFoIS@ zvrplKAe>Y@MXAttQ1M@B(M&EUAD4lKj)QAQIY-n2p*X1F%M_J96@w0KO`Ch`+RQ?{@mm65o%f#IovvPVG6A zKYbheK)A*hJej2h(b6mm8tvG^;a`>hYx@*`OR$V#wo%6hoAH z8~<(lrS8?CWFJ&RqJDBLD+XO;fDG{&!PrDj5AXWXh4L}T@#3a5`4Al9E8MZ&M*o(7JVAnKGW3`|Ikg}AnID5EI9z4N@3c69rvY$+7(&{jSME1);{eiqQCH8MP3 z8P4$Bm*38z0O4IvFnS%1Boiz56u~0x$$*>DJhj3={w$I8u+o6h?(oLw$1I#vN}b(+ ze(W*OV$l8*ilM!eF?%G%DI%`%QZh8)TtP^u#_t5>0q^5On;5kZ0NB{A#&MgmD^K~q zyHwb^OfAWwi#4fukr1bM3|-s1-HqhLyIsKBT3*%2*j?Uh?2hBB@U0TVvc7``L24-o zi;T1KJU#}DoysqqtC>;$;oc81n&t8j8GKgP;a=l^RV8q&zbe2oV}8tDxtcoP&BNv3 zD9dRng8QVgo+Y>2diMV4gS5@0Soo@54kl}bcN;rN0WH6xXh}uR$r&a`L0;i*dT1&~ z>)IJWj=M>Y*`<)y?%(hdA2*-)$Kruf#_vJKZ?m`q9O834QEsc*qX=zmr=LW>%Al2E z^Tf0gKa}EsQb->5iZ@35Ww0B<2yK#=A@&G`{-?#VK#QwYv@^VcLyhcwq5#7WWfRs} z%Hs#4Fy{frWM1l+Jm2j_zwd&8O)@4MdbP(Y;(Iz&pf56wCeql|muHid`u9|Jd(9`R zvh=a)s|~r~-tSw%=^1-;l5Q1av+#u_7plw9eaWFYz#f`%L%Po%ngcRi>@7~~TSL`` zT@mcVzEP|s${l(4at>OFboz_~KXfNQ>p9h_nC9B8@2O!fIcN*F zGkr|Yde=^!C+CPqbuwkjbD#BQN`G|a2?UW6<5g?5`V^FbYfrM)8FW_m37AM813VJy zs*tdj9C10&p3;3BJ|jHiC;SX%m`&%{|8(4I;dq$##0G*3=57A6bf@(&{ok%@FlV91 zt}wF7rj$AtSzPC6OCZrGPJ+*2qI^=_U1@i>`Q3<#hLvpV*4+u$ca{YoZ#jVy>MG$rV$4AfgD?h6E z5p#~xxCBt%Bno#decig0tSHbIN~NvqXkHOmciTtNE}kr|DU+{dIzCceaZWUx=FKxi z$%#A*ww}b9Urk5juC3g}d0F_=qr|cFdXa~>OD&h~7oh;FiMj?-Ses;7;mCh>DWX6~ z{JGpMRK2#B_49NZC(&0%0QGbHVo;Nht?xh)))vw~rbqOgnW(a0@h@ANa^@OoC4CjcahKFh_UvJX)hg3VXv}4I<=d~W#u$d@+*F5 zpIWxrp;aQRUFIrllB^^F$))D@edLnseL3iCNA}|iS?$S)l-&8NlXqlK*#FCbJ-YjU zYQN4tP0UT>z4q&ncW|oyLv^J1617iPFy!QYx(qGajVe85(22deyIsfLnv~XiZ>_;T zU%V$NA1~XG3kQ^qG;R5301KF9*ioMmFv`N}07>Ul4j-&t8uZj$5;CWZ5mWX-VSH9` zOyRU*&h?m6Fir1?J3N7VwwlX=-X7S2ma-xUgtcXv?mVZdXLH$1?_CeUni|(3dLow| zIC;Y^Wzi~Iavh`t%j}fZYp=~Zh66iw%DDr4N)S%0J&J7$SSJ2Nz{*KoA1LL#SvFIz znlcOEq9$Q0u8gg?478Y6m4&rc-K@Ydfhn6=AI*7^@8T~0K?V>=p`PAfTQ3I!s7yYUBcEbm7iOD@_PdXO;7N@lm9mD$pg&j17c+vEG?fE z)oI?5*x&&H<6p*G%MQys@zkdg_-f$Fp*LA;3d$j~Y>b4TBJ41vNWw>i@FW-*3Mq&G zF#SmzFue$2^5S`)#_pBPIxWPlU>VpTPl*SN##oV81*7djt%Rd1NM8Xh)QA>iu?xNn zA@FLnLfWeJEHy;~b(U1TBtVArX8$+V)iI90i zCEQc!$#qru`K;w0IB#QYwT;%!_|Xi?Y~(ZhJd5$-5AIS=?Nmi325P$a!ESn*QyouDeLLs~`H(bSjZ5Soh%rI$%>&V%- zMf_KHo=1N#$+Lp2al6ha+*zW9Ulc2qVBwqE$_CP2iiXkfpw2WH&PuX~Y<>%dge_RkSg(1?wz~jaFW&;a^3Nf06Jpo{PmGw;2G^ zsRG7A@iMbwFG6v$x3GU1=UtDDzj?55THkWr+tuBH1N44}GuiC>A0?g_asT%ocgGO@ zh{`dng9M42zKJb}bhCjfvfmELHIH02{{+s=LB!nbz)@Nnt0MUw&S&4(v@4O9!xoAG zqKPNZVb;W6qk<_^b`RMew095B0hDNq}%HfvKwh+6-XE z1?J#BU?%Tr0_K7*gUQ&pVFEmHufS{)nCs3?ZFU>a)XSRA`!bl>E=*~ruM5mg0&`X$ zFq79af#-`EebilOO`UUjC_LpovHK=qZkCY05184cclU}G_65^{m4vD2d7r?P&GW?b zUrBDgv?QM7#qIw%b+9Rs5-F@4YHFlnG7arfh*~V3?(vgJ$CJ3;sf8D*8E znd!BDs+8)rf(h0PV#p9MZkQFQFPmd6boA}()HX&oZ#F+!H;=@YpLeGI9JOyS7sjKl z%HUV_4ZhFQ-8c9Eu{uRuwf7CcY?}2CzQ~*qcvkx2e-ghiWbGw)v03ndlE?ZI!2Tkj zg@69JAAE1Npul<+p(YDiQD)S7N_4k^czu*tXFKTg!?7E_(4OR$&1Y_y6G$(c#_hK_ zscC0Rh}|F->-KigL8z2^SV!O+2gEQ%K=YAXDbY=fJfW@pItbvHWuB3+RrI? zyb#pFGh}8Jh5SFXmAe7QrxPRw|7ZUXg$74rIN(YQV^@h9W$+5##R0`jN{W!UO5chT zWC^DfR1qwd;`=hVTO`g($zC(r3nu!r z3~cKkCnvIncv)4siPn(FRT6xFM^DH%MaVa0)~PE9)S&%?WQI+9n(gJE*GdA#V~ z3$>L-*ye*XBi7wvvmr5(xlc?IzkNROv03Oo1uq2Jj>6>8T(3%fK zKPQw9V~WZHA2C`~9I1rNYw(c&VYz*%-XJ8(1dx>&7mq>L^x;; zG_TE#96m#fUU3s_qR1aKw&rc;G+3NPu;y(G7Pij!1!95j(A+jDNfabA<$#Fyb)&2x zXxuW+TFqM2oj(*(NxHoSF9@2Y(2d=YACN3)>d-P^qD=5pz6wFN+vv-m*!0q@Gjk;|&~rWb72%C>3GY+b`z zbzP-m%u+Va6%L6)bf$5?6vj=?)jZ7mKqOdwW9qV7!AIo4y*mx%X4V%8aT@GZ@w!)D_$pU! zGGL4|MJ}0HyUrO=n^CB`sOe^{3<?ZS}u!Q1?0d%qQCgVPx*V#y+7n(~3BQOcD zy6);>JG#VKlu~~x=3TQ!!`cs8}J}7PXLoBTHGhcg|LNtLY?ry4&%;#Z%HCD7f2=yU&a~)1MhR}u+v*~1<9%-cGi)vwLU|j5u?igHGxz_VR3THRhonj2ZG4qK zJ#MArpm)K@N#-~VZk|^kINe!|jX5?m_PZSTzfI-$HLA9{QHn$$QBY_k?Ex{I4&k}s zfyRtht?o*N60IKD_jX{}l6lllYpzutAYfcSx@MSJE0hlyrSlL^gt!D3;RFann2^+l z{ZXjNF&mjgtGVx_Qxr_~7>i5o!z>3i}G zB0RxE{^V07pHlmN1Igq&WlAeSUqKUHmvrW!xkm608dl(Iljp_QilR|ManVb*q5P~p z?2YW~hKT3mJf-AorHcZwdP#z2vNe9#(OuSdNg~ouZp&|knS?}VD&jn+-{~zA1`i@4I>x zGwr(pZNuoR;e3m)_7-a!d|xf9e?CVXyA>1lRj<6s&Wc^?LTuRM?_~sxSI{wvomP8b zyZGciZ6H+%8Xp9n7o}++?-*KRYT_rOw!sF6;P_GegA5+Wyoq?1CZlt4m94U zZx6DvlT56`4smnqkf9{s?Cp}|7;dpLI+)S|thebjLM;Ynb$?kejjatt_GZX2xDbZ|{2?LGGw)yqm-3$6t^Gk&{ti(|`!_ z9KjW*g*59oN6Roky&W(oV`zt|*eqm=!WF9Fv{fbupyGa%2h_j&5;c&diH+90E{r{o zN=FhqsZVGJ;6}Cy5jIJ8k_Pd1<+U2yKgS1AX+gl4Jg%;N$xsyc^2%uRdax}pO2-Av z(gMb(fMp+|&{o0MV5X<7np+^;vX(D!7!af{1P;a7E_;L+2qbynZYx(w0t(D)71(x> z|Gu~-1#l)+i!Sfsp9^4WBDKh+S5XUr6o_n9RVgthj}~}&cpREMPN4T)2?t^z9bf>Q zt@?NFMNa>|f(fUmf1f3tHc8e0g4qTOA5#=xnvTpbwUpjoC#D1`oqH(Q(X;8+#oF4% zx1|+p8-2IUrYlO1rq|Qu1KP&XOHuADUYaH!dOG)~R|o}PQQcbl^fz7`=%IW6n{K_) z$x63Ap-*p&s?t=4wnl-UnpJh-)3JwSf=KPdz2uKb_Hn)6^R!b-t!xv>pE&+aC@yDD zF5Z;P4I8Nx{(7+WQ0sNc9mm`3O5WtmaEylnhbBGd;&nFx-{E9B z6dcYW!{~*?s!bn`Zq0xL2Amld{w`*UY*3dwPqJ6_hwO+@yOF4D3j>`(0>f{pRHX4t@D~nnl&9PHFnxLcdN zJ7Bz_&$R>*wI`%k?FoCoKqvX%ZxL0ZJ@eSv(#2<&TvatvixlIhy*M@_2j$idE%Jvj z)v4N3ZVuk1R%XB8z1+-{%x{oc#SI|`lfd-T0CoSr6vz#?a+-O=r=B-l1Ra3>)3?BWZ#7JN<)s`+|A9^L7XG+QV~q3BvJxY1s6g7cj2X zsc4BgVKl*Tpk+cOEv`*y37&U5spuZqLXAe%<)1i16mj^G6}{KQSz2^I7|VwVGiQ_S zc2BK*m@r45yItVJ*;#lAi35?=^I1ey4i&cF2&Wf!2*dSQaQNa9a=P!5$z?{#&m2dp%=0mDix7;g82(Lbr z=B?HuOL9EbnfZqT#$O~pJXbCF6nc@4&jL^^vTf*umS}(2yZXZpvwzFIjqY1Zus>gcdh7{x2wGGy*&)LcxqO~*E&d3K zH0uOK#*@FqS6@ZA<;=4rTgAV2-^lUO>7P(TN<4UYI)~YM4BTBUJL;7*(VsH!suC$g zuDQi?G9`jm;`LX6hafNTzP9kias=9SqXA; zi51WMm|JUfb0W((D_xeYZ>o1&-LPH4kt@NZg^*GNTt5c=NvfG?gDhQb^+}{FoAo~n ztHOab7F#olFU@UKl=mJmD_HixYvj7f$i6R(3YtLmH9DA9*PmFibc2fqjfy+0Lzu0( zdL6iD?MAf-(dxblBEm=&|J+U@TR$=7l=Tz8l01%nLTM(1IXev42%b6CT1*1fQIf?> zP-Ti5L=|&>%525@x@Z1S`j26fSm2}Uaui;HSO@`E{NU^iz-JFp(nFzaVDGxHUWSGi?PNoNd26(x-h;^W2Qv(PbYw5oepy*%*?KB%WBnUs zaAwO`IFkh=4f+I0+!<4D+=%>=h>$sWtMdN1QUS{(q4mtLJ!_^17=#cP!EXX1jzMVa zfFuqFb&=K#=snsRETCC;h}^qcdS!}kp`ugTqDQw-q~2}a!dMAML~ApOkk|;!48@8@ zhhp_g97*c0O+VePdZctYf5>bQ?naM;hhP|}dYe9>rO2n|X(guMnzrTz>n=776!xxq zXpxVSW)kaYp}4O|C9(Ca>__*gT0g|kgmw9e00h%)$-hc;IDRXOu*+T)uSxs`b*oyY zujnUhsXN!njtb8lEAeCP_@KlG?f7XDKh2Jxr45-`t(FsTu;5iQ z{aWNQAP0^2b)yC2o(z5Np+zLsy$22zWzapd_?q9&J}pc{H!HIf*)B$tg$J7V3-J`! z7{Pk1x%MNP3v0cBk-gsfdU>JG55zD9Q9Z3%W8O*&)~iG+KC;(WJ%~u36REA8IIzC{ zeFb9T;QIOx?9l1;^$8o)gba21Fi_AM&`MkD?e5RmfaPn^hd`Wxh4#3=c3(k>BGiN| zYJaVe36qsO+4#DZ1=0Mrvu0~^xhwWg4&%>n=jGNHh4 zP`m>9=P|c0Ntd6g8B#F+Sn}Mu+d)t8oVRCk62BhYZWYAALw!|;d2z*6IZN~r#y z{xquu7s|LfN`B=%U9u!2f`wZboM%q^aaJIv`(_&t=n7~|?4UCZ|KG|XGf8#VqkrPW#_LLT;K4a z6Fj}Xq0qD5~)D1P9hOtsyfM}GILr(Rxma_jRPymM|vl8{MbkzR=A@**FzX@^do2Eqo|;e;UL^G7@IR zdWfy1j4&$MEV3oa#*2J(bU@Aa)N&SlLrB=pU7X1ckR5sNAW`kr* zEa>vF6pxEitp?#wM9KzgfKz-nxW2wc^u`Ahf0~D3xN-1V4+Dp7y(@@L9JxbGTMi~B z+#wDs6O*=K0{hwl1TyiP!2&_~&3H(3<@NUk__fya5j(iYHV^bz8ivk^bx*q{Z`I-? zBhW-)vGEglB))T|ZS_|7{yQqu7n{hm+YS#Qf%TGvWp>qL^-oDXzJ|Mhsl>R;q!rbN z)fs%yV^0;y!yH6&WF&lT)THpUn*FvMXs%R5*zgntj;*W}K==MwQm>pN;n!ZKQeMH^ z>^G`}TiHYl24SDY8jvR0HCG; zs&^qpwWOqI(v2a+S1BM?>XU#Jk}C;#W=kQ7=>V5wBC3K!NY=nQq>=8#%~C7$J)T50 z<*q-6uNcfHZgY^3#2}&E+Nai1Rm(v@(zpnqRdx`dQVIciCU#y-X`K8Y=}j$&$3U6WNqj~x3m&INRqiEp5FleuC;97tDbFY$eM%9ZP)TXKw|SAa6FU4~`eF7-MW`N9 zK@sW}g~WXh;2r{gvhh?KF6SiRo?2-08MipDzY# z;YA7}q^+92wfHU)`bqx|EmQhE4nOlfu@#1=ZNk38^ZxK1Rw7|NS zlRA?Y{iq!kExL>Q2dy|i4JnHAxwHq0^O!Fa-MPM6 zOwqD_FTb;XFXtotoDAi6@p7NN5p?qfC{Pfs_aEZ_d}e41_7m)&Ft1Y9>IwJo8xs)E(a zeJZ2%8#1`*ud~x9@i@o9V`Eksn+d_PG}+6tF|h8YL(wSo8~$XU$Jsf|i(5BSLA$+T zfizr%vVCXB#`|NW3~H12VTMxp`QiasnM#ac$8qCE&MFWi{n0uH`9$rD%Qs*+dC7+r zS!AEDXTRhfMvSvvRM@4JccD%$X(2+;3Ko8_bTDR4!Psrxd0bWhiWAQ+u$0SP&v|)A zBKy60uM5;|KK4i?UhP+L?DhE4fm{&fM3Pm$foHcCdfma?DuD(HPqoh#+55R{5aq>X z&&SHNi6DqDUaL^$Z1k0hMpin{=H~~hdedx;vcV*sq^EO9g< zIK9N%h@Drdw$@h~EZp?}5qB=|Q5DzY-%U0UFnAXQrAlkmSQCnsw6rC@n#EnXiyMd) z5d;;DMW|G6fMIB2|t(CQ4nEg9Tr=RtaD}dAU_kx zx5VdDoOJdG38ga8jLN;93m+|~m&-+i&s`)5o*`D$6u60rh8@QS*qb;uIPMtf0~+_| ztQI6H$OtHYU%V%jvnt&Y3>mAmB}4PiyEcB3q;Tz^gqEDLMoz=&=>uoTJa`$YduTw^ z@nYB=e7@{-dwNH4pV#^ON{E^8zKbHsqNhr7%}smv>T&GiqqwAK*p)>E>L~K!C5pO5zvSPZ594eQAdBdn)_F zAVi^5o@ekLG4D=Dq14zuWD3O3MCWj{S0Gpv?c4c$2RFTYn7L5 z2A9SwWt$?&9fHM?gNa5%3*&>d$6mn#^5QdsN6bx>1Dk?M|Jox0NZswLq|Y1;#HUK8 z3sI}*s^5^YP=sxy<({xML7$853q#x#1G=|o(0xpZo4TNf1o^9s|BV^@R7h9l^oE4B zPK0E^v4h%QDb(J%&Y31S+1(@wAT?~N0I%wHV1-~I;wyaov_#2)Nl8JEN#k^68^I7su8ENd?+!#PU^U?dH zIiZTb%N7+6A^E$cGB1imD>A-o4eLj;oc2wSm#A^yyNQdeunvr`)Rw$*?tE#(^ik;g zEgndc8wCgy(Wlk062BPiiwDgSL33!Ivek+KX@v5C?+bJ)ks=ZgON?JqgHWE;cSHg7 zu9_s;AW__C^&%EC+VsowC19zX`=*rVJP|)|VZTynf4{y5X^t68+~&Ti-UCfaAOAJ= zg0cl=N5rs*5}rt}1|6HYX9+klqd-aUVTnp1U+2~O1bS8Gc~Xm#lXA9$Xx zpCXE)^L+^}TsjH!gB*`#hF5~WML#YTN__0)^a1Wc8Cs-x8uQycfyBo2fo|!JZrt~P zFJ$^ak90>5j?lv8WN}N(DDc(x5ti$4Rx%gj(55obUbDJLJYI((h$voo!8fSKT(X(w ziqg1jZ~6nSDSDT)$M?TRn(8C5rd&tAvTf=2ibBScRz6_|FJdeI9vnn+qRNu4bHF4- zjrYP|1ZHUe0onMo9^jJJdapcxDrwp^Z2xaScYO^?_NnZUde3bny9|qr1Bc$1+$}W0 z71PP}{Ax?)e#j5gW#KY@jr4r#LTQPM9?G?1y3JJ($>Vt_Z%nSKJww@Qn8|6~T-3-$ zk%PW|K~_hh(X@XnrnWWs_lf;eYSWhd<|BTR8<^DEiiOYcjA~XQ``@jewIzR$?|j=D zuGkhql-5SVbJM~^-3(0<@y=^KZQmpLQ++O;#I<9-)NMW{oi=Jc_hvKC@0K30ZdEUn zq5c+TE(lf)Fo~lx{?AZ$Kly+QbO%9tWm9wS{ugwi`KMf8%Q4fqZ?Ok>-G7L!>kPUh z?5N^7<#ni~78HXQXOFXQlgxU@gOZu^C@o;ewD40Vvbby3KV7E4N;+|v1&X%l=X`vD zC))O0Nt^mjI*zP}O5G(NfHF6-tnx|gL<9o92=d}{G3}{<|+n2eA2ZA zd9TwZW4}G~Rkm{(eQv03(!fLFNw}G;VPmDY;}Pk4wSwY!4~oS%*~#&j!}yca;rge^ zN>DX9yFd5u%rj8|wvjd>HM$Tr93nIqd11GidpjSoqyznNK9@HV7)v6Fi@FmShurGfu$#nxL-BO!cj0Ows2 z!&;zXE?o<0&ZP6VkVN+vEOVdHC%dMr7gz!D#ofV>sD9v!dr<9)p zJ7Ag#nbg?PqWa9VmlQ4y1KWM6?aD~kk&H37BfX{5QzgX$9AVPG%v4l@l>3SB}l zV*XvQue>zNB}WC`I$OxsN-En*nVTcmhRnNP;*l;Dy!jZ8pN^NHhkl` zZ_N!&kji##KEULzGb?XC+EiZ1$Y47svy2YXy#ygHL5h@!7;lX*i#98-#}A#(OIMK< z#o(&k!>|0h0LE$3a9mlPAWZd4kkr6D7#UW%;8{EWE*A?2N{6NfE0;_zP~@J2UE;cP z$o2Dw-{G5i!w39_A>%1Uky~7I-@a& zN9UWc)I<1v{%m`ZHhzs92@Kt`4`Jzryj$QU;ACdiaQ(}G(x zqF$+cJaTWI$?_K}l&PzY+bCGlD|XlJ8k&mt^5IWI+wjlIk4qShvSzt%PuL%1#n`#@`s5X&}ijZEuCjFlgtngyAH?l|a5S@s)gG;T5l7|ESl^pjMpZvrfaLNXQ6d0E z)G0)qdk8%@H=a2haPhahc(oN}H{poye-{a}mv|x)m)#klJDl!cky!UX~ zmWtK04%j;wY{BzGdA0qW(*?DC9`eV7q34ueOT?ITgQHhNKk~dUfvRmC=Cw(3K0XOa=LPn9bF4+ZVYd{^2oy4YBodO~D9+%%Bzo<9}J(UuVX=IEmK4>17@CB**x3K7#vsY8DFSqf|5@rc< zk*sILQV%GJ^#zf*T^YF-k6gB8*w&bH3w)LHXA<4OS@m>tYRNEqT=yw$INB+j0vQ!gioFF=H_6>QCA17@K2ey(?eK zSktPEX#LDNB3j@76v-d}(fSag^+cGKS~rw@O(f=b-9E8=dqO&gZDfs5`&Xr1uxJm0NTM%$>*hTdw{$e0=$NHI=gwU(#{ZuyeP(LwRFc>hC1|EwtA8=S5AU?{NM3cq0OOX{U{#B z;h`n@wrJhtpVEDZld`f@l3?A39!|NjG|S#eIwP)t(=WpHg{X_vK0{bY{_sNa0gMmU z&1vFplifdc@sH6SIiHvol@&KJUSoO?7uh!dh5}koMTsex8Z{ldu#Zgqs;03B2MI}8>y5lJ7 z_=qk^)CnHzlH?T^17v_kCc+&0JxQC`h^JvA_ti^NkO&&_Y^%GLoczT3vA(mn8wh*U zogj7dNt1tSfymO2a$J|bZ~O~nffU=lrLt7=WgOjW-;~JaLM_iSqwp)()qZuhd;*`! zdbR(<{gqLwyM|55JEgv#vZW-!dTBLMwLQ{b7~9C`8)x9 zqO$UryR+OeIhS^E1Xh~1$%ATr({1dFp8vhEm2VmU`^)&u9$`4AFx~38#J&>cd0XSo zK%>>IuFYTfE*B%@Cy4rAU!it}Yw~Q&G;9&q_|?UaT}S=t2V~NSFS>ES8cU;fb6y+U zZ{}3 zkdV@`wqezs*TP)qB0{Sv&u4y$q2ay(9;N~}U{>?*pmi&lQbyE3;6N(2S;AbcaLUQnO~KcVK{$4RBT zfxMdsnoNs6p~)ZeZ9=;=O||Aj98orb>Vk)@iK z4q5*1Zz$ndiqI#@CAMqyLKJvum9 z)s~?HhC=b}f@4Vk0v)93Ot9C#2#}MZ1BdHxm!vP!fiT|nq$}!HOj^-_gvwV`?K0_L zuji$_!?cAM6i*@(K4RZMWLA#($?Yn>iddku9d$OapbiRlJ%AaHZ0To#s zjs7SQ!FBfDWjl!DR@m4YDcda9W;Y1q<3ARW0TQ!+TzL2w4=n7P9it-JrA+efmA~ij(7QSHL z*M7qZ^Zgw-iHjF%2kpalwsd_o{a#))HTYa(eU5DLZy(VMO8Yq(sGtu><7uMlYte-V z6amqn%FhIim7gj7x0rP%Q*+e6&XbpKnTGedWR^#rFNql z2kGezuI5#&PK)l_#&iD^H7nb!gEbvn0()aXC6z@>t}r9Ak#)&G z4=Pz?w?g!8j&)1w`J^%$kCKR8(5dW9oXnJAkG4PsUB*A&RKJ+E?R2sA5hl6EFddupURmFZ22BtZtPhU~A!%Jce54 zz9tp%FJ$a3-)H|`z9*zP<{ct!wA9J7$Q*SY1=_s%C`Gbj2vIK7>3v7W5!s>TeT1(D z5{bIhXkU+$Dd!;B8r!XHot;wY+l7K4<^5DT=YaS&%`U_qPLO0v6Qby#CT*#)mmmKc zyb9(Y&%pxM*U8oxIb$&2>CDnvQezV&XdSnhA>Z7%ym2 zB`(W7fR3efe0v+jw^xpHI{Hx4FCiwxJZLo4?Zq(PyY5}!BuRiz-7fP+H%)0E4lZ~j ztcg#R*z8e)`EjCj`c=9U2`oOwi2@cM88Qu_v9LL`6dRinD$@Rt4h>ls{~q23$6_Og zW@~$z-w6|0O1>u7#E&;e6au#>e?$QH$DPpZ#YLRI3>kjzr*}Myxy47TuSPzxw>=^K zMNr4#C9W-57=q(~O1>vIVA|lkEAu06KeJi74w(m)9>p=Oi53Utr=uCpTG{p>zvkL> zYy;YpVG*HEsWLcI`LEv%ae1=A=X!V&g3dw`-! zVq`)P<@jP6L}u?!c=nD!#`v!{*@xbNF0~cu{hQZ!DA$01-A+kp1VA;JDZU zI%kB-HrNvtuZFf-0BTC^LmBL!g zUk)L1xkTfsme>3XE9JQjJnCqHg^k#COCb7#Oi0nrWhbQFmsd3hILsvCrg~n^q($pE zUkRmoNQfAo`H~R%(|!Q;XNLJb>Np_m(iY7IEn2qtCuiU%nNS8D11JHhlEJyNYC-1Sn-s)ncumhZmwvG_b9{QuySLE zpB1OlkxGR>NFT+=L)M}(qjfH{nrIchBCW+>cjO!mC8JyO?%Zf4Im| z6kmSsLo)u;f5g|<_3Jn2dVYgN0%0hPy`m+?AxjUM)qRvbggEo~9ZH+&k7VQMXUU(0 zrtr!V5!==IS_uN7<2|G_$4(a&afr?#xtVf;xy8=!lE3p?u{YkoY!e++{6~7}hJ9N^ zI{Sdz*(d)?ot<&m$hKt2c(d+xc3Fmu-}vv5@$yqMoy8@8hHb-s6!|wNL^J2N-zS^{ z;ckf><4~v*^kPzaXLtNKjXS%yfdTvUrEtCFKG|ctE1#zvf7iO@wmedm_HUj;+>Kf? zMkopUTl`V`2)WU$#dQX6Q9jxLWp<4mh{DvqVgu_&`3|;6+w6yz!Ni*~8@nd0{uom1 zbNR!58h^r7Y@Tpl#39FSctg6wX%%nParnwKW5NkH#RAuNKF-<)cy%=)mBsoUzkBd$~L7xz%#$u zp1|VI#{D_cKY&o}e?U75Xy2|t zlLfqESA0FwAhulW#%K`RGAMqlf2-Yu2m)0-`p6-EbX=0Jxl~zpI3#KPW{|QPA!;Z> z5i$D}Wf2*C4?s%B@`|L%pFoPWgfR>+b0xc3_^C}+X21Fqrxwuz$1#D7K63B*5 zT$d{OtukXLGYyM~REF^(`5H+P4g%l|hhZ{sQL4|WvD6g2HSNE@RSuQCpUgezL(7jeR&tcfb(-;xmQIxvVa2mCw>pFyJEAop`75lk46+#NEL6aMx-w=4Uzt^UyztZ&hzg( zY#TEjut#;uoWhUkPj3q@Gfo;>{beNB3nW!OpMXbc_PB&r|1$Wq{Uk zOO^rC$*qCz4ojJIy)5~R93Q(xHHfFg`l5X(YmAS zQcTC=XpU&!C5+p=3bv^BEdIzqmZRASs_S|b9s|E(s0a+#G@F5SFj8HGFqxcvOrNTdjsoT!?aC!2EkvX|osD4IKw?4q}+@5O`4P57ifM67cH z)!A2)oL?O@TJ80WhKm;X-&#D^{_Xv568T2rzfWV(B(86QUv&~m_Pspd;p#kahm`X` zU{>ehfs$6|;n9*d=i#Z6-OdAe2QD!nW5!D2z8|O8>~VwhM2T3To3o1R&N=;-5))-m z-&>Z5ikGqWw|2JGEfNU10Td%nfcI%6$D9D~P7?|6-k>TYz`N5#0=z%&q@E%g3*xLS#EB$=uU=c;aLDT(jylySPYZ=PTVvA2P&0`-U7AX8QIzFyNBs~OFa6K?Ie7Uf1P z)&JLMKLbuYpa6HrZO?-`7a3F~cXgo5EUl_|skWVwYf&&kkI()A)x}ch|NbAu;P@8L z*2mMj1o60?4}8CiA8YYORDnYAc}}6irzo_K2}gz@^1PF0kn;?RMp?0}dCT448L`y& zPQJVcfX@0F`K-<-CDh0Sbzc?vSp0Np3`=Cp_=IQ*A5$BNl|Fhdmhqzp(5U@5&$s-1 z%36;AbGbUF$C`V;R{`rMxRC$_IX752RaPccl}=28K|D*9rIM%?W2&}J6zF%!Qi!lB@~yrC6yG|ZbrC?9-%Fb8 zX)f?;$i=U^&Ptl*;+F}=?x zS}bjKfqv^h0-6BS|Lg|nJp%MSE_=|H^!nGB9=;)k@iSE-?r_#R(scqb8hc{K&M4=y z>Q)t7ACwkwA$vjXmgP9t`K$+39%o*~jJ=X8HC)|;CFuB1hJ_CLtYT@50yriIAjKVk zrP4zI$SUz;nt9Z*kUV@WRzTN%7k8(}< zH5v7m%3^+4l=y#TP;VLPzUC3FRgM-^BbHT5)Ie;$vkLCw7z|ft{q=NiV^hprCWAyT z>L9hX!dmcAh;Q zxXOQ0)~)*MG?uHbi`u&s4n5Bwyt9?hep0%@sv4A}&4^N=6&-xGU*>UyIr^0$Bg_e} zl(Gtm4YXi2r&|!Gu8sL~FNL1e5HlKM{*96HeX+95Qh(T-e4aY@&2KpZE6)nn!FSUEOUUCEz`Vg8KO`J>0kG;X&DyT{QOc8U=>pY|}o+Pe#U-1oKM zPDG1fpKk%Or|u~*x&Q3lywq)y!1Zf#5I+^-8dXkM`~ky@wrDGnH;KX?g^MM#*BXnjODUGM#@%l94l0|J`A`7$s+uQQrA=D zKILE>s$1DJN|^eoCGm?=Md2##1@w3LX%hjJfJpA0_ndKkgZ)|{hTVA?P`R0+D8?RL zGCa`(Ew7x5_&TMA=Kr?R}Q~a=r%h<;-!1JS&Q}bm};QjJv04*|ttLhxN%HR-A6* zEOiX;NWaBsNmHz2-Z<2Wj5{AVd>~c$L^gM8PS&Px_`-lkS1*&^gv&b82a5bJhw3`7aBkxTQxh%+Q+GNi$d<;&9YSUG4*hs3?B5bLzrh4CV!u`S9|C~n zl=0IfCy2fLkYuG=zx}+Bn#?EvfeKq2^)esUadr8_&P=nVMj5a4=Y_`9dp|R_RIJoe z?_>G{qKun(Ycodm17RiT0c8jx#&+XitY(iyB;W>dhxj=)E7UCm6HbMD!E+r_7iHOI z5<~vAOigh5uvGYa#CFeYE!Gl*)9{>pjJsD#PGiI(4+FonAU!-Yw3}YGnVzPUopk%fkKN z==5mDH5HKipJ}=p9H-HJMuUC4kRAgWtzYPLvLr$GR8)*F?{p53uh!|hG(khNgU$Ky zg=^g^Cqw>d8!wDnge^qr>;@@K!AzF+kmGwLp9b@Z zHz82o#yW4p?RXpFyvb6=+XUxrvGaDG^Y)PQHqm)&blxg?!+q|`_W-<_Bvic5l_Yqe zA5#4xm0)EPxPzP=kCVU#QZ6LtHbH?Qslq=$)~>|AluH(6(c4Q``*!234&4kEeBFKM z6_C?AnXLn+9oadwkw0p@X^6JBQ47NKaoOTTLWt3o-M2X{Ae@hjeTR^fdImHRme?46 zUfMpzzaB}=c$K<4)^lfKi|kWZeym;IxR-~fy*yZrmmkDee769HxK`nZs|DX?&;Tyb z$kz&g3#F=Oi_e*}gGe9j&RL~VZ`5xHafOuB$Zj#|j2i`B6u)9^0?yR<9cx!^SFg%< zSG;cD)PimD3@&&&wXq^>jGAvpjYMCbkEB~Z1t3t-S z1@hdb6Q7Pds2s*=eVEcxAh#EEtof_=M7oqvkiKGX7A>Y!om}-anelNtB;?4TIUU-} zi~N%|HPazct9R|tfUX_7hYbIn4mlM2RXens`s+UB@V%&joDMA}Dbt}+lI5RtsD%y< zRFt1fX5+?o8KH;B{NL%2%($;iZ;NDl*L@n`c($}!8|TbXnFNqeBWaM`47XE^nM^lh z-b|-gE!oLacUh)alv_( zEsNH*l*TGpHnjQ;SUALJJlWe^$tJ7~$Y^)%VmuFBC9`zU8r7UpGOPC+8yzLHeYcJ2 z!`qJ;`@Joh2U9H$MF3-0yl5NJxxJDC+9_d?zw&EKkiFUfXwTj&7QY8K%ky;Sd9^%W z$1~=B`zn4}RRr9kBoORn{OM}LIPCsf;qYR=Xr%cbdsX&}HWHNmLg6G6`nXAHt6RFQw-Fhl{7@U^zS>3_C70EWf4BaY`AJ;8DU9l){S7_viKSYxAHFg7fisbG1y65Ef#Y`Wyzd zWj%Xj7= zxQyGcsDw(NwUS=yh|D6`Uk7SY3O+;zYx=W}u^{;)m00jQDRmE}+&Gk}f>I6<*mGSt zH1-+XK9MzTtNM>#%xj`q#7cmP0JnNk#8E_kl`@#$LGF90k7o1k zXt76aL-+UypRD@B0b&@41Ux{%{hb51t8&=`8gwdifF9fm(CY-~AP*>w&(Y&Ya_s{b zei__MV+(=yCxI(Sw>ICKQHrm$*72fH0b@WHsVoqYjHQ5@JuDnm<*s0c1^RY@{tFMF zQi+3GL4~ps@Ksde4UE_qfXX)#OWj`w6(4N@XkU`7Go;Dy@+4uL`*}6wHd$E-r1XE% zWJt$n-41k4*{y|mmdgoE0sTBL9$^68X}nkk6hZtapcOX059nykT-l=u2Dk^T~5!?|VCTD$6V6!1dm@nd6Vr9~K#A1s5$MO{=?tk+ca7n7Uy=PzapI@wIX z8C9h%5k;iUk-`3!$PmGV5joGk3#+`N=d3D<)l9n9oHbFe8HpJY>*FArC((qks}DJm>xqIqc_xt3zyuK~f3j^xyY(HgA@Bx3$Xb-y)E zA}X-|rIqs|VOvw@U}SyJ&8lMSLAfTttSYtc=fU2~l9h?ik+^lRua-!r^c1p}wTp{1H9!$B*L@6jX4P_-y%@HDN7+tLPmT*bGYjWDzejg*FP zNy8rk6bR9UkyeVWSTQ&4EUlXc@J6eZJH7xnI`yhEtBv zcKZ^FWc``dMNs=$AzXS9a(Cz@?*-^ZUR`=QZCMVz*y}Li3LTON+ZQ{4!>^YGNw7C( z-({lNt26JhnnRq@Y$1r)$fDN0G zLY(-u$0C(Z4ej?yqpF-K&e@f8+ez++I#o&tjKx?=p<_^t0FmCwVqXE(s88v(KB4_f zgiC~s7NsDUc9l1pmj)=?4Tx;ji=uFMD19hcTZkTR z(OLARyfH*1D7pBmtT}8}$z9$Hj}dIjkx{+o4Kp$*Y+f-0`F6mb7@jbxON;eX|GQ|d z50mQ5SSs)eg6X*LJp~d(U7g^=h*aP&{P6xUL8TWyOd}kvfPgf|lvbIi3A_*GF#A1{ zk4stEE{MO(fKNP?mx#M(Tmw`QfWLkP4>1D=awQI5#v2Mk*}%wquTiRUXY-=O)HgoWa?UWmi1~kf+9m9(w!K_q*@@4m_y*>_9mp8I+UxyShwn;>R zw0xEV90Q%OT08r|%>j{owX-SN|Is#%*>Ts4z~3ApwjSR$Mk-#PB}&YZ zsn}hRU{FFYqfiy6C{FkRvv;WCEp6oHDDhAu{?8;VDzK&D<7haK%7(CI!30RX1v0QW`Zc8WJ#TRB|##3 zZXqomT+%AE|HjPC&VP^b{~nGGN(%7T;7BST{kx9m^$d5xg z;ZKLjAN^o(A~>{xA(20JD@?H!maUdSWG-Sbh#+wyfl}PyB+-1XDuXO1#<&W|JfZI3 z>9-6(n)t(5!5p4YbBO-d**0m;tl&K?E*&tAoMRvjI(v`FRKldQL1pDt2CC^5U(7cU4k4=?7@uNBpB2V~pfC6GyHyfD-}&q+zFNXY7g)H|9SnU79l zV#VX=`{iSjOqq{PVq!&Gk@N8>GG#t`i97fxiPRKihwHZ+3V@VYAuo8+o+h8nQ32sl zC-7_z3xv)cUc%7|V(_SCMoNdyRn5|p%Ty|xm7NePsnQr6F2!hDt@m ze?d|!=1EJmdVEVd)$*fHSv`oZh7!+dqNb$4-F&Jt=S@70#bIQy?%?t9LKd0T+$yO> zxfv~1k=C^f*D|0|PB+#@Q{nEF?9i;|w-owp0m`~D{y zhf&tst@2yxN&tfZ;B2qyFX_eNuV*#9qBg*5Qfz>KCq#sg%yYbCH^77pX^N(XX9Nyo zivVR<*q$EdfFp<$$ntA_AIQsl@n}u;;1PXuc|sKwh#3KcHvbv~sJ2ov1D0o}!Om}S zf?w;MmjU~8dFtzdMaU3$Xn~n4V_e|Elwui}ZWBu-Q6WJZXabXi%OQ1vk+J0&nI+cU zcLYQsvT}d=Dv%3- zOx&J5TjY%Stb+2<9Kmi@j+OilFGdAEuNa=e)VQGjkn%=p<#{j99y`P7q)EI|Hb-0L zRZ7+TL$^GylnE^$Ke(i)k59V$iR>$>VWMCx!w0kckDSxw6aRRe;XabFK{N^cdJNO! ziR4-=pZLe)L+&FP8+($(ug63^K1r@t`NTgSH@lBy+>K9x6gZrRlFKLFkNo4Y(0wGM z;;gXeKEhP_C%qm*uVq(5PT^=Oxnj$ZE2n#r_?#2+XE@1DxiA3Hh>( zmuHYKxg~(jX0pk8R4NeVq1bsysxR_veNI6+dmvfG{vgH2QrsH-mp~>#8fE=?6Sw@% z$u0-SQ+>2%cz?FJ_1$?k$FLk+RuUf=s`!m8Oj`2Cedu1rZyd%yl9y#NS4mM!zy3SI zTpSJ^^LHd>6jS6Iq%~I-`|Q3vDE(x%!auPq4w;t)*f}rc3byR}^Dlz!sIv!cq_TQA zwZEiNS%20#sZKKLBJ1_3~qt+2^#hBwl#^~;)_AQbv zvBFu5>R*F?cvIA=)&I$PQ>3TWPjlWBU1{~(oHs=@i1WNf%|+FM-N@Al*2RF0)~%4? z0~d1oIotdDSc_d0<3`h)Pv^R5zS?=nTFZszt3S5Z}2K)OXqDKdeB)lc&C$^**sXZTy8f__L9^Jck|GqQW?DcYye4h z2Jf#bmBHICscOJ7L--0w<`}}&k0RpyRY6RrL-Vz0ld(3v^A!KubVpw5qQv@x>FwRh zTBGJ~glWlP{muMxU5JFpowDYUzx{0hA?HyA9XOLX(&1E56n7v_Fs;__F$2Hah;eVB z(i`2Q#LA$)e@`@n)0qDtyN)wHV}ouC9ipumb{t!jpfO^wF|^b!m-d<~WS%3Y)i<%< z56Nh`Od^_ET1rD?$R6ZVH1$|D^By&PW{WBI+DAviDUDrWtd9%S9R56N?2loX6pcpv zH|mlq*^g6ze2&gpB?BaG4iluh#PhAtoG;GhwI9jR1j!?usJUKk`jDM&^%+l3riJQY zgL&n(=FJmDDyrX1ImD~Zz1q0*`_TsUD{-^75D7F13?+_f<2n$x5a*R7 ziHj)SRubo83TbyCbxTmEaV^?ijXj#?-&s;89m-Psqz13cT2cc_$gF=;=CXOkXH}`E zck?K|P{IsD&(Tbo2M8exWLHK9XXwVO#@p>bP=12-mqXx)=KWM)?3oUZ}!`&3Xh`>Vt@XM`+HDLuA3t zD8Tsw9O3l!JN5Op&PAsool8>m{aa(H*ri=M=E=)MeoltI3Ei*_#?y^E1j3iHV`-A3 zIso|DJ8BqeR));l&-9uR0f^SW2AcIZd$=&XMyD=<35PIef6Nh>8A=E>hfffCT&i%E z64dE6j^jeCX1BNugv^w1VGbcE6@_jbBo&c=)R35ei-aFuGz|JvvQfF5A&8%(*R}Yg z6^FFsCiopOH4aKnzSMpo!(C;(DM3lv`+EJ8q7%v1K{ou5H`9IqSWo}yAiMtkwQXWw z&l&IrfXpZ(4G}u-cZ}5`3hJ1E!-g3C)vy~*4Hf`hOx zCcFf3FZMx{n|DQgD{tKX5&=8>Tx&tl|G>-$a~wJ6(D zvw5T@@=T+()^ScAwT#>6Wb=@PJfkYDJ~jsQ(m&JGp&9;RU-Y*R5wG}S1DUZ zg7&bIa0fw%#U>Si4|;eDGaNIuWSU(Ti+!(WxmQORnTJjfg{+#dw)b@Q%N3h%y$Fo8 z3jRX=J%T`RHu_TB7dH#q#Q%q7*27we@I`{QV?rztAzW--ymiccTEWZhi9%X4d{Rs& zbb%JzXj<_+5YEr7aw#2Z%eH+qoZlUAuf@`fPa^cfS-zdIm!+cp7;hZ5+*&=H%jBK* z?{x`aTgZPP;$K-+vyIM7xIz&C-cen9LQ|Zcr0K~{uP3W!Ka$&tE);M83YMXuGjzdz z6Zq#54f?f-wJ@;k@!yUiAy|*{N z6^UF275x{+xMlVec7H%Aej}u({bz7hPme}6OYAjJh{CuK{DrbHYP4%%c1RDdsG!1s z{pw@*-&6cibSC|N^TM7vNO`VgF-VfF>_hwtUzsU%?qQ30z<$h`&Eg;{yFqcqgqO7P z=;14z8iiXgqq@Jk|TflobZ)GM1YWw!B^nje4`YJwV|33u*S3uxl(! zta3-6b8v*2%X1r~sOJ!RA3O4#8Y{A#Hl z4E|AZJOLd0?a(t0or$OYW(UV_ICOUKFdVDi91*<`TCHi{2P2X$2`-b*vr4LMzq40q z9YQbsTkI;?4w_Hz5T0fJ-r~m<6YbabNVowVz1Xp$?zhEqgvWRN=qn(Fu_#arB){z0zF8 zWpnLosZ_Qadp?;w)!3yxw{OTwpeRB5%NdMo1(0k}+nseb)!>_fOCs8azv11c;{q<~ zhxE>}RG%NQ-42zlM^lsTkT`Fmk$_7P>g`N?Q_>fjf%$dm(v5BQ&!nTKqml~z>6=fiy1Uwl0mSB^@$ofK`?X zRB{+ARF-xx8ko|UX9-x^q4~&Qn7}X!NC*jk!dx`&TjB>Kg|VLWp>Y#;dv(=Kj1< zh1Q!@;>t2AXl>-d9A2u}1&95K98gGv%!%T$GM*a=y!8Xi^?0rj%GXnYavirq4nqdH zKi#_1fz!`P$6|;8mVA{yi60PVVQadZq2j92+0SJ0Z;dBCW?olZRlg(t(a#mIOt{mwVKN#KYZ|htqGSJDWR@%?o3SgW_xfX1PR{MK))-61d>h(w^T zux78cK8zKhe-4)v(lEH^cIzz?RF_ku2DJa3Vw>xuTyVTyZ1mMyg&;6+c3E~#98F;pvQgLLB!jO+R%pj)gVx;hGOjfZgX zz7TZ(miAH2ScF{NJnOcFMM%*Ad9GwKDUv~SIC2o-PTnP`?O5=jrzVt)ZNJzXU*$Cf zW^fxO=IB_?w_}!v0|=gp)N|{v4|eWLDuBV-=@LS(nvZx(N~QA8IvMPvt+-AOUoBIj z`N7WDN%*Um(Al>wRYU`0CAxLxMM8ZGN*Y0#bulktt_qyBU*W~z^gXTTf{@Y#C<$eYaQVEHws+Mdn+2{BXE zz`;+>j5qnonQW|mkK1DO)FYx*wg#(4PV?i|_YXco@)g&8=t&p9vv0dg*ZL+`PE z1r3N+Y`aP`rL{T-ywv1;SY)r9TC!9iB_9XyGiOt5lF_G|I~exQp-kb&sc8k0=f&TB z-r3@tFyV(2g!pu06AMa(>>2wuDie}Dh>1Oa5 zGtXLM6sZQwWVJ^?^dgt(smg#NjkOAF+FF?s0)gI-Q&myVACb2J?s!jhsla|zn$YE+ z(6w&%s_)C3Y~@M{y``X*XZa@>;c~u$DbXIj%p}QT#+e^uF2UU`UNR)gR7hRU9(PTs znafFi5;2ZFdOXa!O?%6@B8KAqw&2b7YIkh2cwr#C0CR$)Y=(!v5CehT6Aa zI9l>fz7vP87q{k~?C7pn#=lGMKEBZWKKVn|)_xFb4&-x+lN7yTWxPKw9zK7B>{pDx za%Hwsl_4@@ZTua+)qb;m^O4(@S?|L`*2kZc3Y~(K+2uj5{VU^7oBklQ(1!_Afsd(7ImH5q}F-TB(=85Jq(BrxNtN@n>tro@GYxhS?Z}IhB2? zS77=X{&v)VAU^P-RO}3vhP9~qt(R^SvcI%a_rDYMzv)1DRWEzHHr;M0d^zc-st+Tmutc?q`U+WqJI60DoMp-a$seCT-`pt_2 zPL^Ke?%`zX9pB;%$ZHBr`7S;Mom_5?)_v-r(=oKxuKIORipGtPORq=ncr>#Fy2E$EFv&ww_KPfuPFg|ZzpG#9Y`(3w( z=es?;)XZlaa>_H(J=L>5<&7<(j!`q+-RiAWOWeE*1MTab`7LBwdyH48cYK|f!RhY{ zxInl(EbNxhcdw1uV(khdqTpC_gJ?4%KjJ- zIHeQ%uf<={F?*HODj!-R&Mv{F+YIA#k^En5&(&^w#vQFamAUOPY;P*rrKEdf-o?LB z@p4yXqx{xz9bn4_%u^A2)y3_dJ^2RX*;=JB#;DTpNZ#ovxq9ISm`=j=t! z%nw}|x{BEoW~;6(IWcUW2w$FAWgH+HU|Qmwa8X@ZIu+>2*WR$$o#h)s`}f*EWo8m@ zGk($XVp?QfeW%C=>^fFj-QHp2lz$6>6>3;(^HsD=vat0cNOL!S`sv0u=o^t=fg%0# z+f#U&)IfmRi9B#802>Ebg6tm$>Bhx?StkbDXfSH5i5a1OIJQmu0XvycvBZbZ1tn* z9R*eXH`~wpH|wif%j-HS@e2iZsP4Quowe<;8p~)ByUj2o@Mt(y>90u7>Xy0~11iBo zu#4`>Vo9$dl1yj(w3s<~C0_gmAv2s`7|I{kFLW+q?(Ci|euf#V6t@l_1S{)7#j2TW z!WC~2F*&5g4z{0hoL|2Bb2)iY6G#-TgmRKrKy8Tx5AZLWls(^K4Cf|<6i;~U!C zdP%7J^jK}~dY;%&qCzD?O%5vD{&R1i#J|6>h#D}pv9d-z zH5nb<=iP1|G=f_ZMy5(AHcOf2W(7*PHhfc232~%gx$KSW-tUO|t%tg6$+sBw5vf2P zW&9itkyt-J=El-m{wt0$@-Y;3b<4;EdHIPsd4xQ9DvxXskDe!=Jk#Sx|IQ^dtEZ1X z`u76)KG^*pt!wP&v{M@Fw6%)wedvfk>TlJSl(O?HrU#+ThOz zT|&81_7mleIXKUG^z;$bLp0na1M@29gP{2;94>0mbnOR+0X{w#aLiaOy0ht|9manS zf6eX}j8}|}VWTBxyj;aXd($KgfxcUQvb-O7wLVzrivF21ZXyy^v$Mb>r$t-3PFuQ< zfCrycLk%ILsDu+atMN1`DNGZo8dF*Trxoju0HK(OxZXjzV}U?Ylq|@lp1vuUXDZzt zyR}zj^^cTq6HUxs(Wli+%=0-xoom~3^mCc-fBrW2SbmzI^|kG+`p#-(@2X&lR|}I{ zNp4+&8{yB^gTKo2?ce;hBQfwS=W*uoB~fETh)ZN{`3C;s$4~5m1_$=+hDT+5QKc7D zUeiOAY-`H55p?$EB5icRFj7U3$=b4B(c( zc1810|F;2>*WRS~PjXvroFok28>Wvz!<<8UxsMI3$UUJ!j;J@mJuQD^{?N|(IuzLS zvmJc9s55b3Q0+-stTg8lvWx9J43{tQ-H8L=j(=-B0WeNUG8AaE&*G1s8k#rB7~y9| zOh*Z^HA?v588AcoN%`?IF9dJ>uI}NpS3<+?`)8on{zvwGx4cVSRQLN1dB3A8&F8G2 zEc7Acb%(^o^Kt$Tni8$y)a;JTS;BFJF>`vc&{~f~1x^`%ku2uiv8-^+$qJMsPE)>)qE zI>Jn4v2Id9!pFwm`5Q92S{ddqnod;UhED2_IVB+imr5^ zL}{63O$m!THcu$)>>mR91%Ypm=TAdJ43%YR$Q&BvZlB{r6^+x6#hXG-a+TWnP5K%R zpAU!aFUP{udo4By*^1e+kphtHthv&XN!lTzm4#%xN$9iB^(mb*WM#>p#U||)VgD-E zzTw>RJ0!WLcDQanCgsECgRA)wSFnWxq(IGUx?$0qyL|0Mj4S&CmfEKHn2LV2AA{ks zSq!tKoYVjq*~0)v7K!$yco)tWE)-5p@<(f4Qb%t~Z~L69h}u*{I##(nVM4|#>-L%W zh}CS8z_|7MX51XA_+M?|85A9AOz7*2Bs=5Z)eQw)a61SUr#d96>R}r==v3sATOuaz3;)D3fL(Onsc4I$p zx2vUiGRWWZMtZF8P7TYWE5rfCDkL3(_YRbcY-D7MtsiUPxun1FqQ| zk&68V1`~KXAnp6bFF}iB4x87O475LV=GStOibBsptUmh@lBkf{6cDQPs|uqsE8&lwA&uO)1(GSSMnp$YnW7uX4MiO&%xlR!mtyf$R^!PNKjT@}rPpiaZ$32Q%Hfkgb);!SW|y~u+tu?$W6Km40W2Re4F*|t6p)1kMr53MLd+7^ddI8!0~XBc6p-IadL*}b4RYU0-QQwg z0x0G8a@0q5*Vc7i;Gwfd1z3_B9pc5Sj}Q`pl2SR{Lm?QKl zb8w434RdRf(L8!h0_sX?!c6lUATF0{C*>UOAE4+Awo^5-v5D`oA zm$lu4u2|V{po5l#fHqyw(~k&R1&x;R`I3h7HQVri-Ib>d%u(7jM80sqi8-Nkgk5H| zCvS_v$&Q#)OZr)fzJ!&H1Ov6}@vJ3E4_7rNWAsa#w~1zl@FeZ;N8U&Ek-UUtLMRYJ zRz2W&8k%!niA>|#JGpv+ebbzEJ|7Hw${JZR^!!nrq7D@s)q}WIES9P+HO3B{WK^Hi zQrS-$$sO_3&90)d$gJipzg#M#7lu-!gNgi$XPA{iTreW3&}_nRM6_s{fD_C^VgYs! z`q z7KP28#?V3L&^};uM4@r{z?Pw^X_Jhh=a@qSEkhO3Ll|xn`JowtUwlcrpcva_se|T5 z09r#+Nws+f(O_K={d@vM{{aJ-w;x+p$vE1LIG?%r`TyR;lcb6HYM8?^tOZ{ae13x# z%6LKL-MGz3JgJ3JB*sPZRo>)MD6A`BIDBLjhl;~SC9xqYGvv(sIb5p~KV6-tIt`>i z-4KmXcTlkMb&}M1+4hG>5`#8agkr7k=;G{gstuzV-3{^aYHp>-p~5!*k%zA~t4c+< zupd<*#j!<8PU6}A1XnIV$Ac6m=<`TPNW4e;-exphcMRf(6A&rp`xKZ237UoAbds^=A@Ij<4DhJ|`Kot0>H=P_zuz z1Gfak{!$S&FDusXA@;*(d_$Otr6#OGIQ&Ur*t{lajzAB;Q|zJZgl&u7lNn4ni;cDW zQBS?jBvAfI))?+9P)mZHRucohMf3ZF*sJzy|3K!2HJ!bHqdnrhqhfu1Z9*_ur{C!E z!`oD1!8Q`@Ujik=536NyDUK`-Es<-627k3Sbb6YqpIQeMuE@nj0iaw=oT?-zEA zV!$K4ICv&&bLT=sJBNcj(GrJc7LSkm`sDLg8Jf{l< z(&(ABD%w z-k69E#0%ea9WdM?Y-bdoS{C$8^x4P5K^#0UD+a8cpLvJQ_sB@>VJ=3HCKV|{%;I}Y z3NDYy>&e_u-UwY1@?EWljI$yy+j{@{07q5hC4IuiUdZgG2wt+mp{YLK=lBu&|0w=S zSZug(S62xZ8$|bkc|(wZbNbmpa7XD{+K-|s7J*7{IkyobxT;=kj8>*!!$?F~W~jF8) zTeRNX9;Wr4NsuE6HgiN_ST`pZK)eI zFT+o9EMJ`U&5dQ}O!jHH>(CQd!Vj->`KR^gg6w)WDj*w!zW0*Bx@5Auo}Hr-3rs0h znhWOv#9jLY7mnyZIAo>tA0t`LZsplpIy@^D3Jc6c$Gpjrl#jZaQCO{Jz64Op=d+sq zQs7;87`(%SW1i#+;9>>MEMYFJY{X6aW4$#Gn3V$acwjF71y3T!cJnI8NXdFC8z%Dz zvStQ&BB#L#0Y0BLSWAX=MSwIoH)PF}t6beg<&hdpqAckO2?K$tv>?95tQO=49PeH( zyJ4&92o>cjL40mSkjEEQ6W-oIeyx>rY5e&D^FRd5{7|8?+4>hRO2P*-GL+JjjP4^F zSmrwv`~v3hCNa~I8sJMf56+u2g?-P!IDFOxTxTmYL8iG`up3f?-1|FogBj5hQAcuH zBK<^8gAq82vPhUWs*9YbW{2!rB`!l(=AbQGrM5<(U>gCeg~zKM)5oCLRdE)#MmDs!@a&FqEt-BjW1KO|dAU^V39z zfxmSJiG6h{X|R>Azl;oCE@zK6a4$hZow_;We@JWpZVtcvw~wNqreXjFZZBWs#A08k zoxT2+W8hP3w6k9fX~Wk}!r)rXs>HFU^|M>;&y^r4a>g3j_kQTgl|n;YuC#{H2ia;y z6$`Qy&aHj#bQypLPjCldHeBXe<}H1?vDbQ$bA$lri`I@iqS~Kj?U0A}xFu>A57Tz! zx_T;pNWm@qM-aV3FUiu$?_0d%1#vY>+$kG*CfLN)O+0UP(r((_ovW>O6P%#7N#Smi z(I6Gp%~J+1n}Y#4>wC6elBaxwqIX&a8J+5MN|D>^eRIg|b|C0x-`>)nmP+Y^{FbU; z17G3lV*aZnNoa&FS5M@5vh&=KkffHxe0k-cZZs^GpO(Z!^2$F_8s(=Yv07gFM@pOg zv?MHfDfTQTinD$hdvUR`3P9$ZTZ7_bs4W}>4YBa5sTej#vhil^6I->jI$C2-V+A~h zOwL4zRJ_E(_!1UsH627D!meyIv8bqEvBhGkv{q>i*0u_PWR=@x0V`D7S|8f_wAM!-`?OX; ztL`R{1VrVJRuKOn+PashV6_Ml$?yG{xp#NNA8WrqUN5q9=gyrubLPxBXU?2CL(8^$ z5#(i$L&e#1d4Zle+cZRTlh<(N0yhccpLW#P3P5&Sw(aE(4!7kMqR*shq+yylXh>HE zt(kmy**NFHQzo2~Id;goLEsB`5;_Hnt5oxw>d^LSKP9}!-Il!roJDssbGc%-m!CsurXMaF z|BkV-_~~Eo_f zmOd{=P}~MCQXyGYyKXklAlxS=J3u^LA0sbbvj)%CT;7RCh_8d2c~LXBd_DC4cpUCK z>zM8dB|OvAQ-{mp={l6;Jn)6gS&xmb{r(%;Er0*3Xi->}u06ixO}DOj-+z4nBPdw? zzBRC{&Ut`1s?k51`)j8!UY>hoCne?k-_997=3C~RNdAG(mzQyrEfc*ld?g*L`;|wT z57=%@*val^9_3_yS@)BVN|bhY5ZQ{BINl&BtM-OKhv zdr5x_YnGC{zV@k>*9rGIINe&kjH+}oz+L>xH^$r8;H_%ZqWXG(@!DFp^)um;j%4oL z6`A$1QSwr2S$W!i7AeLdk+$KM?q|XqFGq2N^yvw&!+rNf+<11gyh~2&<#Zaei5?Qw zfzV3V(sO4~nSI9Uei+XtB1Gy+5T&K>!UxEbYp}Dhn^dFsH#XgggGAtm`LtlnT9pGE zGsm8?s)?oai2BGb;~n0esO_B9>Gv>p*uM?@(}CPsBqqo+@GDNfg?}`uhH3o> zbc%26tBp>4Tf)oXc9+Fw-Gv99+u}!XyTcvNY5gsetKQsxvK*|RlZo=b@)*v`u+dz} z!H~Vl8eH*?{Zf7Aq|wRRjU>yRTiWVtpLcF)ANU-PhbL=a;ANEO`r7Sv&Mm73c7NhI zDIIsTCu^T_ewiD%xgMXLPpo0zHCeMcDd2C-wXShmIjTWWk%`fLY}$T4S+fQPh_4^_ z7~FW0d2<0oO~9-hmoOgq?cg@jPN?OUt-I?pqs#dwn#^_Myjn7y4xWSyR({lQ&GLUZ zGglwOpX@Qln~&zQ6?pVT2jlF6O)ooZqjs9>YdNj400~=Pv!%Xfv+&b227`<~x+;1} zvZh0c%FnB!msRD=7z`?SYPxKIBM0|jB?eK>Epa; zgFliYT5lSfm3HlBu7mq^K&$?j&AV1;$&6}+lbSB-p4P8^S}Yh;h!MVnHzlhNMl`wp zP3&nzAw@(b*$KC}y9bI%W~x@Ho@D0Of0|$K*@g_-NzF@NW;m0z?=@yl`jYG1fm_># zI_Hj6?m)jj^DWTvdY!X$mHP>vuB_T!U)x=HJn7i_+Bf)Wh{n6I_H~z^_`o;ZR^Ms; z5-m1nDnHf`d99)LDccUnIth;sSz#>iG3XvWbd$Hq9f79M=?0{K~a zl#!yyn2yyE_TL!%mMofB2N6CHM|j?Ck0on2&DzMdPy>@XV!aj{4?cuRP8s7BTA!|3 z)0mEy*LzjbMlZV7zn9mc-LPd3_`MeVnpvL(z;r)myC(iWcnD^_oym6AKOsCa^EV{f z0e*__^daJ)BnX}WJi7E zZB73!MH*|SU0sDD1{B_{G0L*GGC+-c{k%k(zoC!)h-u$1jEl`N_FVn6uKcENypKM# zz{bi>W$V3FPD(q~g3nw=?sH%)v_JQyI#C>iXGkt@NbWLYB8 zFS^7i`CfDZl$@jnLaUc4lzMV~9uKMSJ>!3bs`jJupuJHWN?P23rdHC(!IR;74IjVg z5WHEVhbQJos|*D5qm>7TV57f8RU5h7kp75ewOfRkMgLb|wQt%~xs!U1l+;QHXZGPn zR4m%W_kB)uaNq0t{AscNreL~XgZEjVed!YYKi$t_{7mUPrR*%APv~|H^xFpAu7v72 zqE*E@gc)DkG3yoo)!qAjRf-JL5BN^y*>Iq$v07)vRRs*Fs-d1bWMO^DS7?Xg=t25s zB0LC<0WaoPR$W_Icr{MjCHm03m@oF0X&8gXyLg;X%i>Me=lK!7h`d$1ZjLX!a78Gd z!@Y^x_Ul*s69ax{>!1CV#%V7Ws^7)^?&UNQ)<445|A?tyC+=!woZoW;z`2 z&m1>n05>}Kf9xG;b4+yaCGuvD2#G_@$vGq<}v^H7$6hJ zl=97ERt@2SZa>Oz6BiPo`{{re{*t(Ddxx=HlZTk-WknfV!TGOpNyLhM=xK;UmiWCx zANg`6_K%$p*}Tp9#5S3s-pap!zIKx~=lkD7&t)J6acoTXE1fsRA!3}Hzcgi5zmD?H ziF0U4zau`IDw{0If%X0r`%;%5LWsID_7a^yf2((B?YTP1^HwTb=Pc>W zKYm1io;K&(`87(jIeW~a#p)B`dEckMChxc1>c01GaPT*ij3)6b9c6Kp^t$u2sl;5B zUFcNMpVK&Vd-Ep66xk?OzLWCz4^wx{`R^uVandFh1#_m+%>c z`m>V<%4cVEd$f!LcG;%Sa`+LSf4R2)BmdjA>f0XI^Xa)Y@%-uWXjw<}_%fW9=SS7W z!h*o;3kW^MoC3J)Cuk!uI1zeY(wqvd2~UMGFAMt{_|4aQYdH_fo(8&*)A|!pu1sd0 z66x>iTaJF#*8yOXDl#qz>`H#3t-fYmLv80Z-{6E=)A*$Kem$FEry=?4*($1eJ6YS! z0niufBX2cbpwnvSn$QB=xxOhGc`?6gLXX)(uB(r{pc<2(=t$PQFzYXLrryMeFe|&S zUFuG8FSY&DTqqtVUrZ(X)PDBk?#@x!5@rJ$bRNL)pk#WWJxJ-q*YyrPp|P@TOgW68 z=_6yB>0gtBbN&!jE!V_2hCxwk_nR`84a%RzEbaHZXxVajUvKy3B6ds9H*);KplgHB z)$)U3Oy+GQIhXg9pyAeAdDhv|rf(PeY`LXv|2w+xA_u;86v(IuKIBPiJ zKnMfy3UHoNDc8x)vkX59yIyi0+FSSTrnx&<$r-+PB?zQI4$c+wAW{>T>VU!zlWqeeMJEe=~SJGpLGn>!@376wN z)v3XO%GVfn+j~K>6Ace_l&RvRKFYg>^td{6401aU$@DcR)7Y?N?UPQ+W_@`2HK%>= z#O@36FL(3FnsF8RKMi2g;5@DGw2wYq)tPT7dd-MrdfW(vP-G{uQ(5i&q%l*Sm2bmv z*)1L#wYvLJOBc2!Q`WoYv|@RdWSVKS#w!eZ2LaBrW(4$v?&=OFXZ3XF>6|looVA&M z%79&$Pe#U7;4p6)Jait=pSyg7;PZO&zi#Xy=+o7F=H6u5=&`z@9{4)O z7Vi699OZ}`MBDONM(*4@H3(lGp8qp4BiT9LboyN_h$2ltHjyhbgTADKCzyig)X{~e zuO?f5bXr-{*_c48i}<@nHGn@FtP5)rmaq9_3F@v<{G6W<<}0UGg^$NTU3>mNP4naG zXxLaG?O=uxJvzq?*9#s`(=R9*;rm9-sDt?Z=SYJ5fPbes8=9$X#$BRc-nm4~mGShl z{vMPj=qb=A8VK^C#mC}?+6!V%%iXG8y~6iI$@DoRK;AIiUDO+|i;IB-xSKvDS0V`| z*LZ2}InryE-eJF*q75gW$CaWNROBz|4`QI6VucL~2@)V%3TLwA+b2iVM9a5NLj$>B z1QBppmr`F9Yr;zyywgA5^iu=ryo-2hVZHifL&zZ#7r8ka1`AR(%rlF~_ck z6|n2nd?xoEt#Sr8R9ERwl)d9AS*3={B)o{YQ%+2Ae80MzEwjUF*3hRZ*8R5j9U@uyizH-0s6({qe%ZU-`lI>~kAaY{E$Z2z`$mA^WQ4O2` zj&X7Cq_w=|HsEzmZ02yMV_lgunVpueu61Hlv8B@z+umJHN7seU- z$5pv$y>El$^9j!Q;Y%Qi5tnap9X;3yU~f8;o^WD$rz3x%sdn<;vcHm_}CwLy`rd>wL<-oMdwM?=8PowvP8P2ToLVrf+&**mO<1P(0 zcLp_^Ut2lOD7E~b5#!Hyhx6w$+E>){EEW~g_&8I2yxN@4rh&o7GUm~05~7gUCi+O4 zQ&&#MrT{@NIg_7oCT$LTAC86T-XuOSW3kS>W<1T6i>GnqbxXx_U}^oUsYwK7;As`$nFB?z1I;Kk+1&Zq=1?6y7Pt*d=* z&J+35OtC!yOY>`ZEX;3X`hQU6{=1t?!uZUtbYLy!U$}lCco%rs8gtX%($WPX+t6g=& z^z;QYkq1{ON*|pb)R3;v*XMi=C9nD3aT$Wqa0)B`00EUK*N{FdiM*jKTKYOTyEkrT zG86w!nRn97i0A?J?5j9~LB++|g~TprHC32rStkA&eB*Muce1LEI{W3nPMt~btfYk3 zb#Q&FUm)+~Z4-9C@BYEu*KeaQ@wU?!PiMM4LN)FE_Q-OZ_`jXuI4Ll|;=1sn{TJ=#&P#;S7S*6Ew&bHOoHB)U)c4`JV|^C+DwoapiP0D7HTFZ4?f23PiXxSsRhpt%({DfNqz z`h&F&^|Z~XeSEVH$GYHeF$yg zI#&=rv&SMFk_Ss1F`=mNMU=KRZaB=0FY&Y7mbN>g<*vL z6)|~7b*6ZePpHn8j^SpcOgBx3K`$gpon3n@oMm;w6O`WvPBM8OUe-)a4}U!%4C8RL z$DFpycZ^^KrKbHGF|A3jwCkzsc(U^me~&4&;mfVw*i**g{UAQWdZ%>}GmvS#=3O-P zx81(m|xYrX;pJk5Ew7y6?aoRMl z#OryWD%8FmS?SWMOV=xo>=IE-O-AxmsB`w&VE4TLy4{lZlezP8&}x!Ss$V5*ZEnYG z1!TO5&F0yEk=9YzsTe96GZRNf8@U&zWp@SfGt@D!2i4TgZ7-L2(z11L!fT5Y1iE$mAofm33sBqxV$sFt2JXv&vw#3lFcdIl@ z#LL)*Y17+ygu_XE=eA_asciO<=5?&Xycb;`eSu*w0g&4tG-}U7 zTGovFH6C`CCM`XDq?@=Zx{F|W%M)nI^gF&Zhd%beFPn9v};v702PC;$6-tcyVy}DhU zxL)Y)1$LEH;ZdqkC!RCW!HhgmU91}c26Ga;4%BtxA3@=UOnh(@Wc4Ybmw$)o5XFNl zOo#ZCFa7mo2J2$x*W7oQDTiUS*8D1vxajf#693k&z9bIe22@@ka8bLcTaXn^tbQAaR$^EDPvoPN#lXOxi_O}%GHJ}U0 zV=ZYm_D;l%N<^7195|S24;mB@D#}Hxs?WXLXQmOKg88NCB`P6E%d9sIc@P0Za|^tJ zzV^4rQR=pHGnKzIyhYRTXYtG=$l|5hpVG^Cg&_*fsDTQ>eWcB_^JpMv&~Wz~3%~}s zqfEbp^=103Dk1iGgCT?CHp->XiW##Y`}FL|naB}X3UJ=IpsuD(It4Q035~S7 zWjFi%&#TAm5IeEgo!E0Ws*lt01`CEQhnT{p!(D2+m%;=2$D$D@M)aT9PG{0vf!9@R zpELP=XVO#7q)v8|%ZupG&U(tA-)kd2eCyfFm6}dL)*ERW+Ys5V`AG)`H$>?4?1B8J z-nX1dJLSqHhc2_kW5IFMK%yH`1<$4DAH-&OF zMyLJZg!r~{b$PX(V})l8-gnq2F_Ti^52k8T<`Z8E<|7$qDpo-dqL$Vz%w*`>_4XK% zlGhaVSgyaR;fK!6U@<@nzf>RTDj5x9M`nfZ#I$o6b7GG>ZS5dzqn2w^o^igm*17a) zXJVIgVViT2VUG&S^km%Yfd5 z-}tzF&9F{8En0oBDvZ_XCL$wN^d(CemOHVbQ{NK7A54C>Tr9dEyx?++~KS;&*`?m(VA@Q+ZQ z>?^Bdx-I+-86b)HU9b8pjIe2j0*!D!1tc4$@FNm9{}?`LLwdm{r;}+2&FU`yYlsvh z&3el@osJFASRd|bw4dqY9uBpbiMWQ2rYmkCp%Mg?>#5;w(Ytgo&%kx;XkZonUAie=E`TYSA@j4NJS( zNE6NoVj-NLWurI>^-Ver_)aqfHo?l;MHd04|5IY-t6ive(T%+DQznBsi!J3}&)Jgc zYx&2&KY!g_ZA{xML3wAxIooLBj^nU?-wbp$W(o zKAILwr?CGrOs{mf3_m)=P?h$(REQjM{OS)qest`B@%z~R;};XGXcmJlmp#?M>MT4S zMq?&HkGSnkoX)^21V7jnW;-CRdDNHw7M;k-(G*dn$mxs4t>(hJ%{+5Ji44nAnf@bD zO4c;6Z`snrWFzd8CYuiH8Mb~NC0P$J+kz#5oo?HrV}to6og-KRw9VR%^e9~dyoO9- zX;agNJfXfw(}=jo)`A)irrJ+}sdfvQSMF+yG#$l2x{-ARbV1xzF4knb*{CVU&eCPhq+;P*ds-`#DZ z`8OS570%QmU^QIiF1a^Lx&1E^f!dYd$!^E&N>-XbCez={W6++#1p!>F%JyS~e?cF< z2CfQLkS=&Cp0Dqgk%Qsv7{C?VeGe9l{TyL-Y0m#F?@aqEVFafAhe@=|u0n_X9JmhU zRH~WA`t)w$GV=vjd1guYUo`Y(;QB3`##HrN9O+omGC=5%it>P-ZpTQv_WAnWj@Y9{ zOhCVZUblgBet}l!|AsEObB*|zQ_)IAQ@ITz6d|{O5(EAt-0fl7)b%9>{MK_w`R5s0 z&{7&GSb6LN34jE4fM6XX=8r8!$2K5FlFRFG8)rJTYDWQw6eRYI7S7nOo0a#=(Qq54 zJtYnFH(%z<2pS*RRCx_e11eRY2ZkA@5Ibl-P$0 zhT=mc_KT0On=WfFWGla}{501!hVh*CkCTA=25}OI=Y)04j*0iddk?OtMH0~VY z)+U4MX<++$?n>3%$9!Cmhh-9dFYnFal)LpzSj&|YJ&z15V@r72T6nXuZ#A)@JM>L* zdHDuE`53D!>|V3(AY;j6lwL~WyFk#rppjE%*dSmvZ{;IHLwod1N9y>$jTgn6lH>p5 z_zKfpl27zor_}?$MH8cawsDNgzKl8WB1-1}vu}l%0sEZz#~`>JxKv>?#SbuCDwCJi zBz^a}y5L?cQrw34U~TyatAPAV6v{s_2;=KlOdaj{EDxp|SY9a@v})|rl=xTI&?CW2 zqo7>z3+Re`$@1S0D}^?Tl@<)pbmjPNVPt4#KACNqBaG!e)ofFt)q?t z;f+$Qe^IU9JZP;a304HSU_Iu8YAuYGVBK;KwLYR+2OqT7lS^t{^_LI8Kr?j|U`?sk zM^)>?haU_Brv4fC>F~ zWYmg>DU{#KEg>bWC?Mex0zVkQKRoeR$ zbpIB5hiK*AZ6J3$TB~(GZN%k%C3_+iIJrz|0-5>i;^mx^TC|%1sOP3&7h5let`ZL@gmwy%}*b^S9y*jn+VY`WC5`|HdG$NeTp<-DJFg9Dk@3QO-s5 zPXL|qe8KB{V)bZvFR^uSBzI>lsg|T1g$rjrI|fPOP7*5N>i&1K%W4_`iF~u5dNc{w zv!%^fJln5;f}SW4Se+1U3aKz%Yo={mF}dUuL*@+gc5j$N$vSEZ zOE#CJ?;@>#rnZv&cfx!|K(_|l3d2lQ2&{z)gEY68GhU_>z{#)vvG!;+M>1@JDr_Ps z_I&WI!3F68F5qAWab^VvzEoaVCcjVyldb@Nhj*qa;g$EM9N(#&Nazf`S3z0H3k6lN zI>HBqjs$5s!bqtm3f#r7`H1xMC57J!^VNdVriCz5HPb?&<{(YYOR9C4&D6|qq2`jp z?}YiPS!q*qn5mlSc%kMnZSYL<7QK|Ft=p?d3rE5mzXiO>P9>_BEow$<^=^I*u7tm^ zJY`ItFhE`bPSRo1?}Yh+Q)vTdm?=1^BrMzIYD{DnnHGw zU-1P3$aS+s3Ul1_`6!&)p+R7k=UXVZB^V=dO}$iF41?!W@F9`G(PDP23k{c|NRtbanl^?HK!5 zs!xQTlbo<^R?X>q3`1$?cSS|>4P#jF|BwM`zTpf~gbrgtlM?Gwzi!kod*ZY8nfDLi zKkl=FKez2LMV|7uvv<>~dKXimKGV=&3&(kaiq%gk+(qMAXg|cjWA;F!#%FAb%r0zg z3{J{r(9|G_#%(KY(Rvo%cd2u;26QIsM6Kzir_qE71(%7JH#-kpcxH1Crof|w1q@`Z zdyz+6xH8biu5@fB9&4`8EHOe)p>j-=h^dliNrcd(WM*khXhdvj$gL-*-b_fQmsB^C zC4t0&xf>M3>NK6qJef?HbsBKa8Ij8$PyTRB#OrrcvMxXMl74J9ZxVPF{sqWqm)q(^ z>)>||KZM?NYqyU`bBvZ^9?W$7x*{J~6eN)*pmV z%rB>PV)(?EvQx;DF1xRA>5DV~bOZK9orT8??XzE=oVEtn;R?crRgUJf_p2}!YHNOt zvtX_^Dsk${or2$i^iIuNapvN(6Ac4^zY^Y|JFB3dhKIz&`?xhiCI{IkszIn zx~De?1w#PP1af>!WlmoZ;Nq=gmCZ;#7iJrztTWlzk=w&;gPo^McGPLTC(JfzT5q!Z zJFQE@Y=f^qnC!!#YGv2bq(R)hCY$IA-z57XI>FHJPH0R`B+GfMZU}^r_d&cW?vEv> zZzrRwE$rmGn59ZOX{v@mw~}4b$zy^}t`4(pCrvh;{G+l3gX!d{rV=`NTUgq3@^F() zC+CLQrjx#@gid}d%r>3;O4!K@$lkA$GU&}N<;n5xgBo8%M-2DncG$iBS?6io_Ukojvw%S?{U%H9E|8ohA2MH z`W`$F2m-M$;XS37#P`y3O%D%ksv{n0kEc`WrL2_kjq!f>=6T>o3We?SI^+FPJ9&oP zNBI)B-20x5Y{>N-$%eW%gga!KK5K8>Gf>7oQ65vq^l+)F@AD{(M|mc)rE{m{%-e%$np_vq)ulzwts z9T~a3l)&fJU+gRW1h4F1dZs_@k_5w)`Z^3Up1xPTi z1%alQihh|^>gav7F_f-L2 z(nL9;jadz%Xf88JCz9grxEpgm=1JFkt6ydT1=L$MFrIXCd+2qSM=9sN4(K(qlip>$ zL_=U39=F#sHF^e4O2V!>D3 zO3SzY-|ztY(%_V$gIhr2{W3y6C<8ARO+wOs7>axL+ajW_fUPs>7tItQYyn^$=3hol zX{!M?dM|{kuu*@1;}dv{pdy60)m6kOrCADVHD1nd{`Ysoa;N3}>nSEVbei-YzaLh9 zJ&iC=|J0sJi4;fgordOhb^p=-gR7Rgx(A;?d^ReGnGj8Oj!l*|)5JXfm}SB^)c2_2 z;4^+KZfI6Ga~~T)Ps+*$L^|i)r3C*v=ZUS*F-*IrWZZcyIiz#mJLWCtj>n!snZ3c& z^zq)5=;(O5jyuK9j>o;Rb)EAhXqtK7G4B*o$j;Yc1MYG~B#)n1SLM##tt-%+%vjVD zMJBCs5jU{}e};98J<}+Mm5^|@W9%5hL2#3MZg)jIGhZf_RF*5la-(*Utec>qo$icv%P^+rUKx;-NvRAn)pA~tb$8yz=_b7u0({`x;~Uh=B7wlhn1}{%n&J zLHO5@OgBzQCnk2LfYkis(0Wt+#Kg>+uH4HGjJ%axrjeb*>Bgy+hl>TI6PHsc6w*#*=Xm}^OuDW3N0sP$DXQgAY8)!6v<{_n|rLD4{ z)dXEZclm!%X$tzw!E_hn#(HSoWe5yWx{J=v`;BJ!7k32#TC zE4>n8opi^JOdk=ij;`;CM>?pBQaOou^s$<@U`VBE<$4?wthhLQ&V3t8^{;=?hjZnE zLm$pkA3S)khROeLcI=u0dHgTvYCq6F1VtH$4nk4wY@b3=i~MrHkXEH&76Ii8stbUM z#r#jv=QRO14mrjDKN1IlGh0Ic2POP~QcCrpy1hjONMV`*NbjHOeCYO~&=>EQV}b=xavj_&>6#lzW|1n37D*@U}v&J7Yb)vbLByozymV zxr-*3MN3uZky?B`Ru{vO506J8_5aV^caMZVk5A@$J|P+nT%vtmq zB&0;j!gk3-=RS^Ua(}t(5Y>cI!3F&4{!4x{P+{&kUa&fhG2GcKfj<0P1RvpsZLC8~ zpUE>2ZLT*VE}4I<7(H6~KiMkzL243ST03`Q0N) zuuyKy++OtuN|*Sf#xrMgVQEiA(^0C-U49`}h~;I?%xfo+EfK`c5+3?j-#M<*y!V<{ z@)*y=hm`BSl1SW}FEJDMnxE#U7?jdmyou+QeJqIY1`EPV>!(SSR(?ArD$G|>Kwy?- z{(sApW=8hpS+eY6hq}7|b97Kx`*NldY-L@1YTeGcAzYwpU3|v6soSLiNW4ejya{iv zU`k}h%IRF|gaKz^pDLfRPPpN%KsD%;^h*)Y88_WFO6hJ84(H7k=)Npm@flsq0lMBZ z%GvP-lx=_##hHbHI}cC_DAK4I7|v$FXpu6bYeKt(7)4#FAUWC)Ag;w03csMJ5)@>a zR@cC8K|mf&j+=sofS>(J2zXhVpuA?>Ox>K$c_sbN>RuQfLh$C9k>DyWx{lMHIM=PzyFZc zgOqZM6Yw4&OXx4fPJ^kv%K~r4{B%?MzcuC}-hXS%{|X}x_&e%!@Au*M3%^GP#W7Ac z{Np6|p$JNlwCYo)$G!83+Ysg z6P!UvZI%Dgux>po;?;FVxw?&IwFKrT?=V(}Tm2<`ySP-2cYY}SDzH8j^sBc^^s7Uf z9;|TzG|6ye7MKUOF+4*jqVB9E4RhtE3N zQU*`jIseTsnUvm=(JJwfXe3x~j`Nn7g{2iT9|0hQ%tg2FFJweKi5ZWZWg15TfX8q{ zC`FVXa>9lo<(Q_a3Tx?khFIFM0mMB5kPvnR+T$0e=c`^}Id>ZlM+)7To$h@73I4Ba zgx?XCBI5xBbLe{o59TE@gt z39--UQcp?+N~gK|{Br8b?Wt(VUG93GA@CWG8?Ml4*|kWTuSDHKUW$8h-8peM{EX~w z#4ZRKU~rO*X!3ZTdf-Cl2p7!}P{NAypOA23#>TCmwR#uJ%%P_MJHN+O^UDkqQfNlg zM*m1^>gXSHK-gLX_VO+Q44f0bSeTohqj64pI9rHPcO@w($pqiao*hL6x4bv4CV$g8%h!wj7m9&wFVnr>^5 zSbNi1mizVXefsXHF^x-=PzsnDu9{!aRY@%K!pcG`fp5c-U*uCoCPkAXJj<&p z3<0w6H=HJ5O#noRY|sY*#bby^fGA}{2%bJ%XlNf0XjnvG8}2lWPqPaUIt}Yn6BYu` z@Jiu=whF^%o6f3OGu7-5MIQ-eIb%Sz3(-SM$A|c@Xn2++OJ)Rsl#WkcJ| zv9oT`1AX)-!~K96Ux@Q zk>{H2g#}}#>X_1{kCwQmx#9}wKS8V5^K`N2@8;#$ihk8BF-q67pwlmhgF81JNvGh( zMf+CBmxmEb6$zc~7$2CrI>rZPE)(}pj1g1L9&dcyGE@)e*oMrY&)ga?)acC|wCmkk zzz_RA{vsruWsW+$H+xW?!Ym0Zad4^>!$Id1*RHV1z5K|`BqJ64aypZK3v+!R4%4#- z{h3dh?^}t@YOPn5ZrUj3QhNItrMH|gyP@*=X`nl_g05ElC`DTK9l@<=Ft3N|0HkH# zK&SOlY(f70{0a0JHNNbphqj^3#fBy;oqs>hl8)Z% z|7IK6fK%4}+Cx$OY<&pzxvYD$i7wQ=!T2F`KR#+hcc;nm?|79DG;{qWq&UBkQHJT? z9j_E#kLVb;E@0NHNUGO%=w`0nx*yN}A!OpU=XM`%!iDGF8`zRPx~2W| zCSa%q=|Mn}&0V*)UsRskIzY>amTVR4m&%_h28sJ_j~m!e`JG8)5SP7*fL&&q zdSn3tm+!m@ms6c|QXb~E33aJ0-h@e+TU6B8e<^bXpv!VxlqOh-rN5LkiKp9+-(R__2M0kjy!OEIIq zVeOv6PgxN|AJ9Zg+XT8u6Z_f1)k|MS&XQIiQ?2T>tnui0!q!3B59lUrKEO`oIhpIR zyC15vEp3;eAsR?nJ)0q@YDU9LgUiP|DT2GrKvYG6BC@))i%|H$Bs#*Zd38rehn&M zwmI0kvTwGUHPeOO{1w%CW|=3!~0X-9!B zaA>g)lFPWU*oSKKaGiaShpf~3Fb|3Jh3uH6ZYKjLTy2m1>~kgh5{5^PGjG5jXz2*P zxPf=FUU2Qjf(VS$?KEG~pECRuMrGr*>u0SM*R5@H7S6&M&h<qH%!Zd%&NxpQu(>I?0(-_@O#*)Oojd2hp~3vZ4R)Pd+P}W{&+Iy*JLUsMYs`Q zT9>(?aJ5XL@>R&~so@+r@x(XgUEEOQ=$gEZjm_NF7(pvt=dt=Bn6OyIPFz~%oqclW z*i*{Nh#5O}L`0`h$Kqb-M!m5ox#`BrQQ6M1bzl+=)mg%3)W^NCquq3ZD}0m9TRSjr}ZKp66whpK{%+m=rnAd!}-j8NPo>GGOs4A zG2u8ATa?$KkD$DcLivgv=aADqsGy&zO0uIjuV{vA5}D-tL!8gGt(Zea-^Z{!8Dqdn zUGDq^L$6c!wfL>wFlPam6t`|? zI`Lt%)eX9&_b8f+*T!bO*>c@5oXCi=cGK`GcI=YF>Zetv8zP%~U)FqFaRiX$w#7DX z_a;Kfih0NKLlcF?sk`+{) zEGF+aO%}VcC)q4!@f9YERr1j$YpI>iZ<}1q3H@yDUjTp_>s2GB<~JB<_w=P(O>T$D z#qRv9&9yWAA(M-HS(SvwM<~x*=p@@wvKJCapD>SX`*V0?<>a0v$`!*O_09~8#HJ1ZE62bFEcA!o7}hdXT+ z<8a(~m0}!jHd(9!3mvQ)p&9&n&#f%x_@MW88$6>U|WgKd4t{sOf zO)lf`DVuA@VZO;_90u83I}W;I&5XmlBDK?(+HttYFB(T`2_w}hLa)$lDDxdwp40a%*1>Z+jLKZ z0Nf#-d$Ru)1HITykHc1b!>|b6e8$+49ygWbVv$XH+!Uwvh#DcSyy@shZ>#s5iT|#R zu`BXl--ov>_T?)QOxl3GvYEo{9mbwaW9GsU9LTt$Y}BqsZ%1;PtzGVb%~aj!ZN!;n z2`T-Pd-hKK61hZa&0L(JA2IJJ_Xj2T*Wle*y%YZ3J+efpC`pQ+;a*+e(q0{}?Qk+D ze+qHwJn*SR>#I$#ai8!NIDp?|q`<5>NgN1OmrIyOH$A>GeXFn*Pv0u3=WTTE+nm}G z&!n{yz~1pV{#5c8PxYtD)M{LJns`Bc_H2cPlOQMV+?UHlZTQC>Hjr4hj&Rc#DhyL2Qezw|v-0Mk^YbTsvaD=O8Ax*$-Fuv< zf-q=PNF-bK!JIEAHJ$kE^wwFLO%AlJ;eFVTh6=%%8UPD0#%7<+U#i)}PtCfA_{$DL z8@Hs+ZbT&_$j=f*!*t!6tTuLUHz9Nzr(s%NP`#D1Hj>p6dy=5y?LF+U+cNSlSAhna zQr*r23#ym#YxIbXTj`|$bJOPxcfFnTJoP`v@~CJHOS0}KTb9vxGzhe?a8$Uzai}R# z;oS6EEq%@mT}eE=v!_KLGFO0w`#K$o5ol|PlMv(Fb)9I?!-U{rrXHH?gK?pgUMHLe zS<6W(OH4M%dOpb7TFlZ&s+8DkP^vn}5^oK%l0lXjYmjwikR`4fWGxP|#8QK-`-3cD zD#+RtWQmyuS$l)5G7uGH4JRqM#72Xxc#tJA7G!B2NBqy=6tSOv^mDT(V)clHCLQV# zJI)l*LaI86Zspf2CJXs>xy?d;{isf*kYDGStU!MKz~myoPPe&Metp_iS>)FVHg_wK zBf3p4^2@QgR(=gNxyY|Q>?k08to&MIa*Idue8mz@+)u3BEM$YTw&d5?J~K@udmr$E5Bl<2IN=0azptw zng^>?I1io|n{G}3G$Fc3afQyudCT%6%LO&=kb?7hd}-2em09%oI>t2tCN;hRX?G?r z51uV`cc#P%f-FnpoyJ|wW);c2GbMf(1_PJ~(ap00K8?9sGvy4Jm$Yzj)h&!mEN?;G~vFF@k7 z{?$HgH4pvA=u^WcP`vd}n-aF1)~oCrOS8Aw2TQ7p?SrMzckP2E%wcDk+AKXDZyzif zR@etieSgtIZA!g#QsYCSV|^pdwKJZo12ndwcu`nyJm|6BxI+#&$Jc57f18lyv>r~G zQ5&SaY|ejm8Mm4sZ(CbVgXd?KO1`>gZKp%96>sdppO>92><8f&Cxu_MlV6|7lz!2c z|Lf~}V9vo>?N^joynLA88U_>rTKVMs58T+V zYz0=zvizd8?{nDtavL{zvyMn00TqY%)%oU(b&^8z8?Fr z`Cby*KPCQ7R)g^WQI;@jk9#Cg5nL;ls znzHg81Z^0JS1cD*t&dbH}7f4tvcVOwTim{NBI zNo2rnB-L@)%5vqBwK8~1b!&qpx#HA8!RM7rRz7%3!JR>p+^r;of|_nBSgBwBQLrjV zl6w$E@Z@5_(~1QPva%zUR4(66EEb$nELaeq9jPmWg4Y!bHWv#PBx*-$aZvE~V!=C$ z1q(v9BXxgJFk39xRV-MLyB(=bLBUsx1z#@~EQsQc)ZU0&`Tccg|Z zm#mYD1y3m!EC}q5R6Hm+p;&NIv0x~}!_{+s-`nMw6R$qufg3CI`opQ{NF|%IfL(=PX^C_zKdV~qwMqr>xktl=+9@*!^)%O%J8o%Jg*RI@!#VE z`+n4F|4lt4@XFR9yT!bIJK>DXaf8U@{(o%2Q=N0aap&SeCav&v*HdF6^JNZy?IGan zqAvnSCVB>YlUx`Y+s&`_Om;I>hmrA?)6q+T%8&4(ZEU9M&oofxbnMb*=F4$!4?o)* zylrwmaUbhtLXxqSNV{aL)gI_;t`@`1>~}}?_!9048z^&SS3~4w(nOVYdNz_c^!@L- zxD$Jpz0oHyw{lA3d+Uy12OLkA9z0#9x5b@_>zoTaT<0Q^vGaGjTy0|Se_ubVjYXgk zLL{k|iD=rzDcjcn7{L0|`-gMi`bbZJFRmyy;rbR*v_WtEbJ4k=<;v&P!yfKB8W!`%hE+g#V^EAZ`$dY}C(OwG}u8>(kn~cVhAypIzZh zY;!K$2*l=QjHAj3M$IZ`0o%-kz~tzBWDo244#G|5wjY7t8c5~r@_eBBUX;%`AZ2MClp&Gx^++e*75@iv`2=;65vExo{)Becx+dP*!Z zCCPAI>(PxJSU5&KZm*7$7w^vrpo&M{ z#p@i;jgCmC^MJL%$c(}LP8d(jy-rwwQg7jg;XFV-*zRofUUI!ltAyV-UGF=?IM*L{ z9 z(_jaOJyu2&k#~cmcAfe9$M@jTVUEO3idXNYRW7Ol;OA%kvEF+-?sX?Q@q2}WAE-sY z2eUTxCXDJl{5~G3wYSlGEhNv(O@dU=@1fo?H9$|lP94gxESK`66o3sLmnBy(@j4(3 zn4gu@-dh&E?Vxwp+?Uk{00ohgJMzoc7(j{gIcc1*I&N=6?JKjMkPTEP097YOI)AbN zv=c?!bC+5G`=I#8v-d}FD>lte(ZTH|Usk4wWvxsw@HkUP&JWh8ARRrZ%OFak*#L`$!z@#`y% zXu<0du_LA%%9Yoc#}t~QLRYS{vIUV6NSs&6m8dDMyZ>b};D1PU?i;uoQM2!vK>j=% zg}LvAr*}HBAMSL%l7-exBy+Cy=7!QI4kC1Pz~`Vsr|Ihb1(2msm$`KV}*WMvH;y0e0K+>_c|f^JKyG=1p+i4t{}TQtFyxU>Ah4e*BrZjHjB z7g%|O*@DY43c-E*`Z8?)9BnrhRh&K>&o};{l3i{rwnaR%|IDTKSzMem*wqP`dKFY3 z?r@(Og9eIqv6~v_uJYC|m|D75n*D(s9!5r?V(Z&UJ+T#cu)X{V=fB;vcq4F4tCJ}g zL+uxbv1-T+J@bbphFWNGOE6*7RfVBF?k5y*Vy`$CpRk0KMCX;bxG{iI<#odE+weem z(V#!`8YX7vchrdY|3bVx%-zTv;0Y&o+;Jr}br_1^Se z@DM=FG+I{d-|r=dW_^}E;`LKHhCgWE)9Vq}|ByrYm%Wjf%n<%%uL-7`9b$W0vuf`9 zG{FdNX4A2u)`s{%k>yFl*F7&D@IvGFqWIy(P8LV62KZ&;JLzMG?&PTzC7mpc9(KQC z|Lph~aRq%M{(sf>Z;jvGY`yPKnUh&86#Mnue+2#daUY$mmNSsWer?d4Tn_+4e|4?x zR~yVI{2&=<-iCvSzj-XUc4Ya#+VG1ZDA&@hrCLL2-lm*kAzjp`z)e~{?8ibb2*|F; zLRPRCFf2szqYVrBd5Qj&CbI-uslWw@cg(U7e_G^bRW>aZ#5}Y-$ES#(Tcz+4i6zoz zm01^McCd6=R9Sg+it`ENBG|2#^R=4U@-%#oXbCfGHin$99I$mGNvn^6ob^Ve`<6a) zWCPhkV=()Rc&-I%DaWn1eo~0Ga2o_$N$2g3dw9tQ7)FM2gX4qQnp}unc=N~)K=9pF zmM)42p449mW-WQ9ffOEndx3v)H=&dIo&1$$yCEX`I%H@Le@1SU@fVRFuB&w3l7FmI zsGr{sg0d+}b@1NQ^EJw29rV9h{7!swCpFJqu8r>~uHnv2G2o$B*xt;YRYr+kehvDm z6MKo3|8YvQuPakSJpGg1{3sknvkW)#HK>30A9xzz^OZSo0REcEX%>UIo__NBA`VM3 zmybzxpMYha(>;NBq{Ur9i*Jcavh;%SKJ^k>!+qP~j&5^~>n8xI-PqgIOS9m*y?U$4 z0$%^)1SU**Q;;#JL0<=QsWGyiGeTPD#)ejy{3W&(GCuR(_fTg^oUn_8L|mRK8oa-1 zrL&u4!uuzjFz&tI=si`U>>-;mmF&tft>Vteo&1@+tL1%E2BOiSG7LJI+K49|dPoNH zf$oWgi*y2ch>z-fER!C;=HtqgiZERO1=1mZ0{-$$E4xUFR>vbdcp4n7HvIDsAil5E ze-f!kff&bjcC5zf%(+P>G;%IorCL_vbe0_>t<71e*dZcpxR2DXbQ%5B0k9k@h=KN?IKA($wRWiv@=nAhB&zIi*10&xb zH1{>@2xI(Vq(t_9N~gu?>ZlFx_OiXyS~3#3D+5JjV@A}{3L%yn$wj2-&iDyMwih_$?TlIIMC-uZSl8Zvzfkl z%=i;Fn2ZA^GFL1X#4<*=>FvXU{81*t%t+Fo*;J!xwrSsYdJyu#>0G2N1@nZ1s3H~j+{$Z)q5N3bKNo0C7f!` zCqq)V4mhQxo)hE3Gd&)8$uh4F?p1irN$r59;~p0r?h5(W0nBTyF_qUboVF8|9~s_d zJ8Y+JTmCo8_v@)Yn9h{&r+|OGN1I_~mXEcQQy3pxf1d)~KQ(+NROJeMD{^qY^>bBM zpw|Nb66@|#9b#gZe?5Fi{x$EJ3Oioy{y9`fIrl^HuaDcVSpHR9W#0G&@;?B}b`oyk zsM@8R;W6_`e2#Ip;t|Jwu0J`-|`kOgxW`Q)5`F($ci z-e&qAJp;di=}#%EPQfz^_5p4m$*_^{SFG2&R`4pH8Z7IFKZ}E-afgItQ4%l!<}Y|A zaEJ6?hi?|f+eNQSb*>9-6xWw?`_(~Q>~Fl2B2sTs=w00U#8V(ACRR70>P0r<#THDT z{$}nN)%Hlv6lnoBA28ymzfInrI9yP+QQ3h+3MJgotPj|D2-gR1K{H%qXNU!LJ364S zN{B}`=IlbDD4|Mq@8}W+Zg6yoRs(MB#yP)7fl#BYIW*G*4(9o|xz-K~y+6IM-;~r< z5U+%+ntLegy_J?ZU^%uObZ+|QKzJ3Tta|Dd5Ai?vzR*u=h$j9SYF(BR_(ZCs-b)x_ zo20pI;t9befKc9+@k3PKgtr$*)OzoUJ_tdfVb^F!7UxaISnMaT_1@3fMDECoyu><| ziyi}81nYH`a92=gUAz{1*7!Y%$U7n`R_>GH_nMns_#xO7wx>7eEc4zA5fa$1gJB6Z zF5ncnjo$lk(Ex>n_X`w#;cg^{gG%N*jMQ5nY3K6qKIC8)XuW^el7w7FKR;ZqDzD6u`(A2L3xhWahh|IwaiV4}@D9eiw)V-Xg&YF7}IF(|*zDFS&#| zut0h*0d@%UQ~SeQSTXJo^Kbm|Ruz>V@~`RgT08NI>-WWf`~OFkW-+lJNxGh2pht6? zQ9zH?fBdlY7?1qZ3>3z)=shyCMDGcy@z?%$4Ck}_yQ$vm_FiB%G7B5Mci`WWj+#o) zKyfna1gj?FGG3U;_%jZqhE^kHVX$iu!<6Xev8t;Z2kM3pLpFYa6;w;MGF~BSOdK6P`J^f z?I=O*C(t}4XE(8%XxB;0$acLBGY`F<5?mfYKwsv(?SX7fn4EDrm@MUM0k0!Ecfxyr zKPFdCBwNepfPjGHB?w$>i0R!`##Z;mgvTC-m>uhXOI+F|?96xGC**Nk9LU>VK%R|L z8`xc=_eWlGAEIY4gJ(frj~jWzAn$%fG>_NrnzPh)H#Lij0A+i3AyjEh1jCYjEAyF_W=5a7Kj) zC+qE2XKx|X7@b%Uxhtf{6qZFz-->&>T6{x|Oii*4u0O~YffhywY!S>F4_Ou!x0_zT z1Vfm1r*$Rsi$yT!+axrQo=16-{2>y`;d;31W7jATqUGOKk}aLdW{@^LA(9bhbadHM#Aq zAUC|5(+YCdf6d(<=z!`0|LMUUjB_7La@$J`%z|)Wik867UBD=NQ1`*7ivEjrJsBqIP4#Id^0Iv^I7g%(29eu&mXt*rKVOkn{um zNv7?hxW4u!qc%Dzmqn}p%!|Q%)cg5#sQ7*fW_AD1;d>39>#aL*oQ=V9A;pU0Y`1LL zTs7Ea@S(bfnDPw>?MI+;~y}e&?7<&W$agR z)bY0Jc6RhbOyx3uo1xECE$RM`U_Qnpj|V6l5G>N=s>2nEoG-v;<8guS#+-iyB#!Rr z)^>f54a%qSYBn?WT@+=yuFXmPXILk(6dPQYdSlk_;-O{!+W+;xspu$yFOh-Azy(MR zfYe17aYtIx{VBpnaI3ra7hYlACF&69QcwiA-$M+Puxsj<>CKzo`|5-#=)Fe2#=QF#6BdoW z+-ayn9iPwl#_s(hzB0CxBSO9%*~cB9rlS?3cDavIvM!0yI9dCW)7l(mqc9bA)EHA- ztGOj=x9zv%d(Q8)tG1Ia=MJ*t>r5IDN6~Nw58zVFv}BiC)1k{nY3|xZCCVCS3S&cYW<%r*$WDqS$X^ z5SsNlV+7KGLy#K9&itg`e&{YQc57Y?yL(&EU3JcOcNwX|I1j;+6;3M6_wxZ?JDUMB zHmgFWn0)lQzgnWK>WTN$X-CU61OmQn$AWzACyaUaeQhMT%sqC!N!W)^os;a zy%F+Hi`(Pah!DQb>UG6Q_=rCN<51XxK5QX0YZ1;0t@O&bS^9H3i1t=3d85 z4hMl(r3>IDSN#b$_o`Vuu4Lby*G3Gj1+e|O#H~dD@9^)#+!9Wu5{e4xslmh9@&!XO zAw7v>{Bn|JR&}emMR#%jyzkCsF(z{;SFSw5NHTvq%%)50d~|?#ac9Kn6lVP+^jS_( zb>|*rLZ9_cA5P&+I*eI!7+hkhTk`@Ragu zMC3CB{F&ki+)}jWSJ4_5HzD>pY4%VBy+cHOxy|+BnYjPaN1?$Taqn&KpCv5f00yxR z<9^XTBNl2|W{4dBJ__J}cu1rzQU!h5(cBC_53BR9P&F)!v<@)t8E2EBZNt@Act@_5 z4;$wE$%C3NVtr$rsPAGoJ9MJPLl+f4Hgule;?-tcvlDXD+TXWLd42uca94Y`#K}#T zkqU}@eXVhGbFS)rC+hniT$%T=(?46D-K(9iY;eA^n#-`9$@rh|03p{t?@W9g z|7z#L=h*02?OfEZo8+w=$7y>~PF{5`UUl3r1lPo{#dR~g;{|VR^lpq9{a8paYV0NA zid=3cQ9fAGzzSl6z6C5HUyz0{x!}(&cW!xew@|rO1qJA^Xk-&h7X|JnY1|7zu>{%-iL=n9sULs z9Sj4+W>{`512|xmbA5`j40I9brb}UQJc5}W-#8;{;@cDg-_+-Jf7-2i+{z#!I(_~b4*>Q&A)@xv85>C=2hI01cT&N661cJY=8Xv;Pn9Zjg< zzWWbeuwSuYg(>*VAqqx|1uIR#dk#^sf3aZ96l^ILY-u~J2xhTd6~Tv`gy=_@QszHEiRCEkW&S;+jG4{d_j~_HbLQi{K(`zhwK9JX z+{IR{{c2nF9og{h5d~0xtUQ=8{cocd1O5Z5McR-5Cw*(){$45bHYT9W+f{tA96M5( z|FFI_-TWcnvIT(MpF7Ud~llp|}Gd=p6zBP!ukd!Vq z&5q4PzvzDjn~>qd{xIxf_Nyvx%o5|$_)C}gB4}@LD47&3QP&x?8O&dK$XM2$K~nQnZFeE zf-U~0WO{t8w*4Bnw&R+i^;k4Hvi+PrbG>C0+>e)UbLMZ{#@e=Pjx+B!dH*0Re#^?? z1S0ewq)g~vV6)o8PP!8>v`wBY-BUm#f$P290su2&{`p%h02f;TCIG<4lDejpjp`C8 z{`uMcp!hT!hg^tbpkU)j6$8!5HY}pwL2K-@w>e9~K$N$e`zB5N$qDw=Jz*fq`@=w#{~vR210Pj&?fqxSL<2(4M8TrP zHfXpF3I$s2B^R(6n2;Hr09IZSjEaqy!qqBDBD7iz&ICAj9H6ze_FjAIy|=fut*y58 zL7;C*fP@#(0HO#gFTTwoz919~i01kJ_BrzsjBWqV=lTCXe?FSoXPtNG0u>qvfiAr1rKM0v3eanDIy82jLoMVHCXl4FSWo{XPm zM*f)_`&NKhF5idy7`s8mm~I826uwaz+R`W!gEC;yAqJ(3GBGGeyE$o;i9zY2Obp67 z?yEG)z!A#51*3HPJ;;^oxD>{8mTgXA^5Db`etYuRrhQAUY+N!ruVHLBF{M}$iq459 zf+_Awj{idLMl>-@ETr5Qx1?XRm5=t#UG1Jna7tOIO#93?p+xm~6T0x%ECae9;AT^8 zFmY>%f_pWBNhmRs_)ejcTDjvH$CG}PjbX zyS=G^= zHzZ-xg%l>UnKO09MF>5WM<3_^oNl`A_Nsg@{)T0L2r3Ma;%S}KJ&x0G z^CKd`GeClag=wRH%kwnWyf$$%yv$N%N`TL!&8henU*0+bY~`iauOO7d8>HBzN&Sik z12@9uRWJ;@HJqHB4Z?9!z!}PH*aKh+XsK68v6z4A^8&6nsp|#2j+B5;>kW7&B!~UC zfg6xpIYhsXh(39#JOSTNrhp$?-V5d?@CHTm{tn<;z*653@C%jtZ{V#v-~oRy4V*rq zXWVWvfj9mJaAB-I*W^kC0Ny@%y!y|1&1}n;LvhiPIoyDq%KvUbo}+k%9v{>&Ytp6u zWsaXxQ%X}ek#HXKz7uIStzwbOlJ+=}_9`r5y^`^Nv!H@Wy)be{KxOH9uR}!6iuC?> z@XzHcusHo}W<)GJ-e=rjxv#`Ns!%jD*eq}+g3B4zuY8=mkIy2LV=Ws1zM+J!ZXy0B zHNYa6sqPU6Z9sP;To73AcVLi-=W74N^;=CWAxI!vDmJhu^m@&crX2jThrABY_oO zt+L-j!jV(uBRt6lYZK(nb%iAOY#*gp@J2HZo;UBRL}>F^;sDiOz(v{V9nhflofk=c4w9Sx;a|ra$r+bO`4LZr3$`N zz1+wfG3>Al39#wyC6C8Ggf|Xhw>pxn_DAg2$nd=pU7fqEki1ZGhBhdlWED&{6$?2u8VR*{+7ygZANI>=2h4 zxSp>1l`BH1Y_}D^kU4`eKYSPaAgVa_fv^6nC~ztuSFA_*4fD=C`*u|&hy1(xO^>KL zOU}_B|3l>HW7o2ke_{iTY=ITWUj4}Ta7i<7qL?l8dsWiE8qFyW{l8kNqCDpz!{8xb zvmP0aOK+rn5KpCtOE!{X2=T0EL?1I7g`xoA7EP8k@#B&Sw}1J|S3Ftrf-)$e zAxKtqlX`>{6)g4~lJrvJYNt4`qRXj|P^Ye*dx%VVV#M9fXjXL0X7Zx^s?AUvB-KGm z{Dl+c(>b7S?}bhwtu13K%C;^kg1)%+XakYZE8_b^Qd1MP&y2k~>Ayte9_RdtmfOYs ztmUdrs+Ld*Cnp?VjCXn6kf*}F54vB4TJ8zgy<9OyCbxnw==f#Jt9?F!0&<9<*QD&V z(8j>QST6$o2U~%?*7VKR^gY(77w}37*Lw#J+|XJo!~5ALS}@^&#=yAQJ{z z10n17W`6OTP(O%YsJ}gLsW3YR9NBk!)RR%pf_1H?J&$GEbAy`tceN)ie|`e~+j8-b z2!CfHxN?8!+t$jlq&U{_2h=urF z(u1BL4b6F{!Lb@cU$W#H>$q!lU!W7=I?q7&`Uhir!YB0h(?yeTlpe$Rpjk zA7jG?_o%ieyM`}7^R1?OP3U)GZ=5bau?hM23T9W(K4uP!@CgR%K*7tLCscR#f9R^@ z_#e?ZdCY*9`1zB1BAOgA)>wu(g7PBMJ5Yt~t7dbs46A)~pE-(Q(o;c|0(6-TJPzOS ztrdOcPg2p@Bjm3&^%V#~fP?fchLK&NA)Xa@3OrsY@*(O{rT zr;nArtAkC25qtGKLr8S=j)e9tcm7QTVr_j44%zz4-r+n5)rXU{V+-9w208U(N2GqM z1_RxQR`1Y(>x5<=rfv{!3@=VVWhA|poAlIILSq={j3FrB`889(r4!NRBRpm4@(Hx; zGwJeS@_N!`X+xGS2b2Cg=rYR+nEzTI{!i!=I{81O&wXdoC+y{8^!a_Hl{4vcLjC_; z`gCBqe}g=R_C}wfvX`xue?biS|A0P+?(3aC8>s&O4f-6~lRiI1HJ*HI)*SI>QR<14 z>3lH^|KN$%DF0xWf^XG)qqI_p7qstJX#yjimG@T2Cao zz>gjh9)2urSoSXRvXkdhj*#2$jM>-n4ieHEpCBPg?-Ta$k@17A+IBI_Fbp$XcC6t| zyEFFcY5Ns;QM{0P?RSUoM`WuXo!-TTX)NjgM8tP|YI4Xg^^kAXY6CCd4Yu@L7r4Ip zk?(^rZlFp3Loh^1Mzu;I-TW_JoAp8MdQ@d40Z#3uUE_MR>w0-K=Co@yxcgbSO9orj z8$SvEFz|cD-=B;BIi8s2;y9|L?)SCa3?W3#Z)vS4YwJH7pqP{}s9Tm#SsVTT>2*+5bw_8K9FUv(LE6OMXNY}$nPMX zas2&YDhd;=T~aK<2O=!SBm-R$DSm>rJh5Ofof=9kzC4ToE{QS`4oFBmKr%U#O{XVI z8cDk5Jz_pFl?e#%W=8Tcw@6_2MeO5NysxIoNnd@X{3YTS7MfsC@tM?u2!zDyx^r3a zhtpOk&0_(dl6dl^1N=_SzxAcDNb7rw0n@M!)BJq zH!^IEK=LDcllAzqi2axFu8$%^-wF;tax7w9x{)g{gBZw$J|7$^;R6S(TJ68p_#1iZ z{{)VeiiT1YN*bLsTJ~(ivb3@ZNApD!;2Y*(ar{B4+o(Kq((R|eP5Z0Ve%|aUb^;8S zDU0VuodSdJFv!}rWk;!~Po!*{)l^OYcsh*k3^#bFe6;Mv`Zv{p zF+0_S?}E77z036+5oVhJhWYueW|(9 zWP9|0(JulSy}nBP$J6UwLH` zTg82323UDs<_%&mxrL6899Lg6dfI9OSo)*O0df7>*U;%a4HbeH}%hR;i^dm%ZXBeJ#QHc;c>4IE!mzptf zfJHTb)BS*dE%ps(1{_Zg5sEEw9sQWL9)#=gL=QoS#z=(yCz>2DLNS#46pV!P)P`!-s>mn{(PRjn`U~+~J`-ym%h{yMWIGUJ8F!}91 zB&E`Gc@YFA+WrOnGMrqDrDsQE_{m7@Br4~F>aJn86t_e4&U5B!2@oY0n7Ovb0X66 zdLM+yIMsp+bT)9bQR<8$!^HBmIpyo=uPAe6A6U`-M(rjwb$`$k&-n_ExT1lhdBeKN-?Gz8P1CLLDn_s z*RVw#WJHP*@4Vu6(oyU2eUV)sbQV`+XurRq{b-u@IsNr4trNBNH?t{dKUXpIX`$Bt z5#`o0pET-bEZeM6sYQRbM!mG?*Nkkd&^SOHuSRyAt{8sMn_c}^bUy5&`X%Ihm1#BT zGdv2vq=iHTZ5)+f6Q-LukthniXswsH;wcj0y1ND{cjT{mpprHT>{@cFhPFiQ4WjOo z%xVeG5HaV-1K3n+-hmO^TC&(_p zFZD#0z9FHRqUbW!nzo8hDlVnpjXBeys_aE8uFYQce~IA%VDF+_RAMBhC?da!(Oj(w z*%q=!9k7=5X9lTfchbUB&c$Y(t)cJTZi6nmH5eWAB`zt?M=x>X0!S@5g_1xO@QqBz z0QLjWe?g6T-r3Fca>w+W!YgM?cjt~NtqP1hI>)fO3GeVrrNpPbYao!eyJJ|-6;zo4 zY{?Gb2D+|xbLRvzRJ&+FbH&gNW{e(EXCIW-;*N;XRnF)zVw^q5IOlele5E}YMI{d% zt7PnxkOU0Qs@_iPp0!53x9I2e-0npQ9@(w~HGN|RURMKO1YeHtyb`_SVORK}pEj6& z+GYAl9nb%@2SBo>yQ6UZsDw^$3OOA z$=~r|4CAlVv^j2dt`t{4Ek{i=j0v9fQL*7p&QDqHI76~nC_Ar%a9VO}x;$N9h9gy@ z$~y;M1~=|zvMPy18wKcmtb;8=uT~KFMo-+-+3?% zE!|&Ded$`~vK}9}J=wH|UUG_hd!xx(^~t}%85s|%(lNL%?oNDXGZaPG zfT+ExY3IFnJBNA9%3Fy^+_iQ!J9Mpbq8WfTmWm+LM>)CpS>H~Z+eQ!dN&W0)0$V34 z!eM(7C0q23-O3)deeDAK@}-#b?t->&uRuTb<10?=yBUG7J&k+g+!z(=fU;9d>LU

*C=ZWo_2|LAoaC|8f*(mxu7nF9+59)ajQ_(_acyP?s6%1>+V5?wlW%lLkf_ zHfp0KVMNB%vAw4mz9v(+7d(suD-P3>T9aWPs#kvM=yz3di>m!pG*K=msT-Sc__13e zwyD!h?Pz{op~k^QqPc#Vibgm^5h~kc#TwLOi6LEKMGlsmZ#Z#|^trLAo3F$R1h@NI zely==0vQ`gxD9Ien{IHv$X7Y!ncKfriJJ=T?e_Ck_9pr`Oux*3+jy<{-ilyvG~eSA zMK8ErS!`P5b!CN1VnO>j`rX@&r)~ZIqKs*`STamlU|d1c4c|qxVr-j zpAP5WQW#FSeNFfMA=@Wy3m?BKF(gHQ)c-Wo7u6HozL=(8?=!b6Tx_mt_osxQvw*(v z>^L7EuZi6MdB%7>9`nY_h2tEDE#&m2lAd#{tc6;w&M4g#LZUx4<@m|ivO!g+(TSE zC1NXpY{mDR^!H49i%CCX(xY&w85euZq%Sb(wI+R;NpCdiK_=Z{($%EPV%n#*;uA@S z>tb*5pfTj`(bzq)((d~5WDu`CP6cgbGPj%e6v>O-U5ZP?w`BUi`|@u0E+g|29)jDz zgS<%7iE?%wkaNXmfsG~y#^{rvJ+U+qJHk6sqfz&4^N^T0kmnKHt{LjvY$yK0dpoB7 z)KvY=O@23wEF+rk@x1m)a>VIwpLDtVQ||sm-5*)5(@m)>-P9wQ zl)BN)QzyD9b)lP52f8VBpHks=(*U06CSk09v99y2rU-AH@%(Y^h{=Na@=I*P>Lq%0 z$%S}}xN!ZJyfnSMNf#P=31F`pHwk(fZxYbUaFc*uCYl8Fa-T^+FE^V6^zt($JbKw+ z(k{LH%A_9wH!Hr|q+NRXvq`)3G7RVPaWR)(ER%NWWddoBUYhEeS;oCR#E^+#`bR=` zC^4cerZKac6sywsaOSpeCn8X~eHEzVrhWfp8cO>rO@j7)$s}kW{sokweRz$KpnWS% zg7*DZ39o%!ChfNGph>&!>zC8MVIoVvla*Ivwt=U`@(7Z>>P441sE;!^p z+E_mb#uO)+eZc_ao!ICzZ&vqs!&K)@AM@tn9&hMH-uTU%M|-@X?|4&a-aOgk4OGLM zfO*s0<4u3_rr5lBy2l$jiEqlyn>{_==orF@jg9r6DoeaZ^3Jo|5es>Q7vG1_9I_1+ zif4TLdVDo|8kWD))ZnDS*#HFE{m zx<4p&;ySPK;FyMKe1AQd|LMV8Och#`dvt;_CH@(hw+iMm!ThgYU>cWSwFf+_dc%`f zf>rAM7UwkrX|P}}7tATWz|7pS2h5Xq_tN$ZOkf#21#{!S1Jf4FQyc&?1E16O%(Z&J z{GZ-ns$X*P?B+SO0GJF$X*l^nisu|ol9fWj?YyBAW6k~B%TJqRS!;tMh4=qQOPkO) zxMf#47Q8~WntxVNtcxG#MzqV+)i|%ZVxSdg+kg%jbRYaX^}#odvwr<;;bg%gGMtUt z=jMLTf+%u?vxXIIVtZaq8HR~y7vHJL&#o1?_>Tu>|o`G-U zMCr`*;B#=-Hj)a*yvrvVA;*d%_vR&oePSm+Wi>4)okhYGbiM-`y$L$;&w`p;SVSDV zyBw*g7y#xvP9#Y?@s_&amgfGkd-5eRy$u?8SjJ8Utfu(KYO24?1*T@JKC9^n>^qlk zRvTH%kv{=(-G9uFz1gFa*nyASb;xx~c$97OIDoY9xc#^SW9XU4E@XlEL}bfzkR1iP zJF{E9MP9GnayB2HSySJ?R@3tsG}7I2K21KeChb_ed6}+>A4SACvyz`M44>GXJN`x` zx`yb?N|Kqp>;Qj-q)~s+RNVnK!+9>?vv|9G&KMPt{ixq+I?9+n%7J4p^JGk>2Mq+L zm?^`VRZ;(#X3@XRhV}1^Jk=gb7!f068;!!b9&?Hr$j*K4crN85Z)oR2haSZ1Oj6i7 z(@472i2B`wrctFNRdjyeWOS}{XVm4&hafrcN?!-vq-9`9u5kQDGtSTOT=+2E;g_vbU15O*rYxsSSIzPK9hLioTAI!6P8DmGI6dXCri7x9$gRaGz$coiI^{`<*be(dA`tLY|YLYCZIKII_j^g1E$qNX$F z%3}Kd6X!|=AEYPb^}W<|FEyPxS8mGWW#`Iyf31=Om=)8Ne65#CF8rkC{EQFJY>rMr ze`0g)%BiWh<~)J*GYilior!$Y%Ls7GJ2kO6WG4Nl%!d#SJX<`zE|ZsKRu!4NY~Q?( zuJDN%Z#*i&# zUz^FxV*f9Ht&)GtsYLE7XI64Y24J?5YcqM`wg!LaU5xl=*uOZ8JXqG*g_ocNzTe@U zagO9i3PYC!3xj<-P^(M&W9sT}2MaNL4DMm=#ojwBI5T6DT>92#>avR5h;TZe`vlMS zcJ}35)7E?8`6m{GVYAA- zN)t$@UYLqLqrjEAhk7dyQiM>Hj@XVQXI)~Rx!^j?2NI3Tzv%vs_MS_?T zwxldUUg1IR(;H-?Na<7ilOYSD^aum_9w4u~o1D~dr+ED$J%WBgFRRR)pG1#%25)|0 zD>W&Dt*Rn3d$yD%IaMl{(**N|USMX9O#<^<9?Tv+kcQdl!glqt=T-u#eE!c-xH*rSibsiL3v|MoRUWw!6PBVT=$=qw9UG7nqq# z$$`1#ufl9}$0(2A)Se_Tjjs2pUSJl3L)gRf(%xXE+YXw-x7g@PW%!!gE5{Bd(O$`@`tYHvHWHlS#qQG)Wm@G)K%xUS5D^>PHR=pVGBLh^=&N9$Yrrp z_qv)%>{NckHhXGe8b{&Vxim)~WhN7$C_N3;KDRIKFZnTW@$u77Ug~C!n&Ufc9>R9z z9IAonmj2#24Rb4uwQM-gZRI|n*|y5)Z(bMVR`2zK)5W?feQ?VH^fk$TYFFxmLQM~C z1K~dpr$V3nEd^4)yv05I9sehjS@7TbYCT`MdLeNBnG2PiM?E+vCI=A0pW!Jn`Q}jK zwmFHJ)v$>A$;pz^L?zykb2-L-6|;?cn*P=Fn6KV~``L%h3YB``8~J&O%IV`OtF7b= z-iLfCyK=fYrW)lmahMI6Mmh%LU=u%PM$buDL77wVO<8h*O99-t@Wb~{ngBFZG_?b_ z4%ouj#MB{)S?n=BYl#ai99AM`y02f`hY0c zJGg|`0}+gHhgh$3jJtaEFe#<1#iOR_TUBrEGo>PZ)|w-T^h zi(WYY+QJhP3o*?8Bd-}+kf?8Zd#+u1RdV`e-9%Qlp1QHvo>iW_wtKEUE38Am8iv$Z zd^Qr5CBZ)dB#%=9*1KDN7<~V<=}MgBd_XfKP`4e|(Fy|V$zzTfU_?C*Cht?rf>uO# zCV3~wLdkMpMcJMTYw8A0ABPe*4h(W!6yMh-JX0baRla8{hy<4$(T~f83PV1wLEG1` zs3LxXh~dyL`-Xx3t19pc@P={`6U`az(K(^F&dPIsi{$LtM?fym`LFErJUxFm^UOT? zPrUh^MshUYnur1QebgxP7&6mg<&agAP`|X9W;&nyqs?IFM^qclcVcoaf`h zX0^4>kTV+IZS^AoO{1&(FOPbY3rVsp_3c5imOglvR7cPDgUH!#vXEXOE;HR@$ox9G zg+O1N?YEHIJTk{Uu& zg>_g>-=To>h5@R5Kl{cJW12%N7UAMrG_}+jLvew&>HgR$NbW~2$)&kT#eCf!1KZFs z_r%mfkH~xFB4%rd@u-kT=Fdq4IowSDTg%Q9>tj0MP< zMRO)T&51?KslM~_^Frh1M!9TPpQs1bmC?lH(dqs(U8U(7H0PFvlZqxUH;frC?J-v; zqoe%_%P~iR{)cZ4$GY&)9<1_oZOC>^@BWx)HMoT{576?|Ek-pq;mj>5aX1Box;Y&?Ja z8UM2-1Hx47o?z&6qQzJL`Pjjae4C@#Oyl}h}?Y4aObXMX&Q*s?KT9be)%~UE-}dR zsL3I$oTTQ9K~aCJ{XUS?L@x6C=pw}!Z#d{og?WWoT)YWjBGU{P!p)3)8Wl_=AuYDK z7&$+tfH_?7B-p3%a}MwT-Gl*QG_5hsJr$;`q~r2O{0|aWd^*1{ujxenon!Vfz{v@Z zzIAqXd^s94hBGA}bPmmFSr$s{aB*<#j)qeCW=*u#4D?l6Yx?Jhl3)FCu<_IdcO3|g z-P&+YMSM%cD~NF$xZi}O?KovQc3*a+;Xl{X{BFHDLoLiah7$$z51*Zvd2gauas6g{ z!80it&R8D{Hd4S%ZS_)N+)a;%v_WWeySc1 zmd}I}k;2re3ypV)DeSz>gS!vzeXIChG$%RWOBWS#-k@LwKl(@V`fT!R+2s2}G6i1p zlBv(HKh2<1L+J*=3nvEc<`qD{S56GDzSuj-x>yw;!<-o}Y`}5~>09T(Q~5cbWG;R5 z(6525NxK^Ss+!om+Z{H#we>y1hn$Go&sg7U?c0Hym-qWNzlAInh0HYigL@IhVXQS} z<#EhJ=(jkSMSQ6pb53&9c#bdFcqNSQ6lEgGDZbQtlReFc^p{@|NBTXF55{caL|s*~ zs=Jf>aE!mniqHVCSI`FJ9+V}ds5O%qnhiel(LLl?Ypx89ZEtuk!V#&vN{p(}8SwOb zW+I;+s2>3B=8qkCR>QC3I~xuYAfPB(_O2D1AZ&nDrTa?6!Xm8yuuCF+*6@U@%>a%x zE%8MOn>74XICkn&)-oB`C_-wMir70fG>4AlPM_@jfgjxNKTAx3Z^Sn{8r}-~c0_cK z`%mcSs2FrdG`Se>$L_Q4x}YjC{`@L?Jh%TfM`8!MqP|vKaUMOp{%-o!f4=FA)q4RxY`N9O|RMt$B)rTz19TW4FHOXYl9;YVl88A3;kueN%ds_w8_I_S}Gkj439zkwB)Vhi>uQ{jT zSqOp7IfjLqt|i_V<8oGT#X$8AKAf!$?{u!l=PyOSQ1l&&0h>55qqm$OWwNQVsN6gLKE+%pbDQNQc0*D$+tvCAjq#R-5ES3VYm z%i8WdKTO1=mO};MrL9tOQu}`Ax{KLI!in=ZAcXVafda&fupLNTTWC+i&UI}doVaeV zJUHd|b`e)2H$1w|e7q8~A55?l(bXHT#0;8h+&ihYqR_b&{%rb%kNSsgLathCyFq zkCw;^eIc9;ORY8BV&?=%7Pq7ZS6FN4>%+L(q%Kvoy4-IY-3~a+$GdMV%=?p;*p#1A znkG4@n~q5YqY--xD4rGjW^H$UfXK@H8?%$0yMs@i?q2O&R`1Wt>B4OPJ!8Ls3$n)d zD!0*3e$6!c(x<&fql@F;VV_EMeama~ssVl%RWtd`c!`9P1D5b<>Zaf1yU2F#%T{*S(7-%gdM``8y+tCp)HLxrN&6$5>Bo2`6ic!-?^)gqynShoZ3) z|Li~Rr z@SE%pS1Nq}J>5fq{e!dad3I~+8)N(?qS*=_V}xjnf6pY4V`HN7#HWI5HEj@Zx(Aij zoP+hIVWbrhngN4mz@Qm0XmZG84kWfX&3H}!XA8?fJKzVC3t2$_+E>o{$8)6wG?v0K z1RpynkKBhqF4ZsCC$9pPNi7H?*;ZJO-)~wPP2?N5P;*2r8AOF+6&*w=4oc=VvipHh zJ@Tz7g;F|(>6ds!=1Ard(k)K@m}ZVfcHir2AaCbcZHhs3+xu4AK7P{?{6W6|M73aI z0Of$q9ZbJMv0kVm8J)grCw|DTXDD5gk9CXD^C;mRgYl!fEolfuE&Z*1m zhzm`G_K-E77(xVC59%q%ld@eX`{ADZxXFu9@B!|bZf!wi32Y-+(bfv9b+fAN&}S|B zY=^)$t15wPRep006e7lVf<#6bXu;0Obi^N&wLW;Fn>{AsG0~9 zL_@8cbQi&(FS_6E)3=0z+DHGZ=Q>;GPO_f&PYc>xO|&*&N9-U0oQ5I{U_&vHkD&+u zzgnXTQqjV^Ma5FR+DLIbAGSCydtWp_+TZWVqH{-d%&o8ohH*_WhA^D&MMCEDpPP?l znY-(o=;x+fsBE(p`(Iw6`=}#MAyet1&#I#9^_Z@wzv{VG^{ASlJ+R#Q7N5H7bRxg! zG|0cQPiE#iSIO35$_Z$pLBxYN6NDIvHed{YSZ}7%0ugoRrvr_xM|-si)ra<-Nb>0#R6i0Z*I$K>FH8O&yIb|i`UQ=i8@1=kuHe4UIkJ#`6{(i4Sm5^{xMv?eQ$s=x#8|0CkCrg^$oIkkX?CkqZ)LSC&O4%N51orJZ zSgxeB>S_EY@)GwJv(~nx&W;_h*x@V0O!v9in?9?e-EPOmJcJ+)Iv4*C;ZHUJA8TMc z+WJIfF@-x!gANxw$y9?Gn>)f4PE)%gc}K0ljidQ<``Bo5YAK1Ym-FY| zFn<3 zv_o0^XYj~_1>N>6C-W9;VN$2%bpi?$u9t8a9e$82GQw6R0!GXhZ%S}sd&CMyG2L8r%AH1&TX+~H}e>pWS;b^n{{}Cau!%+e32$yYJc$o?k^ig5XW{0ly z9|iR2!bsWHg++Sf<`$aV02c2d=ypSO97a}M9j+@TN(X$*Yd?Jwn5)iTCIaC1!Lj@X zje%?dGl$XSp`R7MgooS)=a6qsa`jQpW?p)fBY9w0$f(qC>qB5Od_S=1C?_|M!t5t@ zsSjZN16v``xuX%{kusJAGzMkQSWWY_0x(?%%QzHYOuafgDfHAn;2%x=#|p-i4GaZm zyWxmCR$D}BT#m{WHe4xu+qSUpaF}pWlz#&jzEgw8yN`C6_)#Hify0$6T2iyvOP-#~ z05WhKHN9tA0G6)B@1q?M&1@Lj?B<|#e!DKZ`H+4)b&}PB>utI@7un7SysLcAO-f$==`=Z+q3>i^rX)w0;ii3XCXDL#ttA1%oJNy356WZY zXZt&X!;dqvm+Hi%?C!`8m+Am(P5%Nq&V&4U@fQ6E``SgWI zMh6lD0vIYTIiNWn2aSD&_+^4-APGG2x{}ie z5l-aNZ7yJXEeA!bre78c#>&d%J)iSM?9+;?Ss3PGpZm0==r*vyx*rjH3o|>-hYZs; zGSmW@R6K?ivj4F9eg<2jT)E^v_#zS!9KOsL(i>2Q^q4(-lc zS~FLx(9`i-+q!^Q^Ni-*J50jes^nRf zJS`0Lr}|y;s<*pXS+(5566nZc@t@=mWV!@eoa;fyomh7>^CDRIe21Ark&j2M$?crg znm+?!e6w4Xnm#Q+a;tT|;fH2ED3r@yD8K%O?4(Ff2+@<69TJ_H4=(9r;|>kV>%saA zr45GYcteB`kM+5^&>y*kkw5MH0HG>GP;|oswMWqO0Xqorz`;!?tR|heHIaKX@1yps zv@VT^bGzA`a92g{rTT&BE%9SQmY$mQ7*loScpf-#Cdkp`6>B~` zo9TS_;PomKO!${sj~ghly9fI0N`HO9`aC=}qsfs2CU7$r=9J{f4SW){ooI5HkG#~A zmvLoMVk%-pGt7RoeYR%Hf|dhwt>N&<#+bPzmfUS(lo(!j)(+UtqS zW@)YZ9Dk){F8?x#aNPq2JJ6z@U}E5d*5ePTX_Qzibb|IQzd_il=%Cuv7*L30P$05_ zi^GNt4qTQ462HKvD#7r@2pFX9e+)6%ZZ=)|l+dc1G!ShPPPZv9HT6G{b;+ukjx6Z=W4h6RdfLX=s1=vf2+imo_&+fe?ddApf%I% z&L^sbF ztr^JVR)5jk|3}4&QMs{yDa(0;g3yV&k=NEZUi)~>h{w8c1SwzwIeFmWTEkyh ztFG$oV5fkeEjg1Zg8dl}g2aF?vGWn`9`+bNIj>jq<^uQ4#hrSSl^zhOLZaCL^Ggfi zmmRrmFoufYiRu-w80+_ch4%(ZA zA&9cM<);psgD&LSqhEnV{1b>q!E#jC-jVaI_$bKr#aI{67DdD$cujW&7)Hxl?tFE4 z#|HGRKH1%^+@5vQ*M^tAB}q`4%M%QaoEn??MN*6#4Ti-1B?sJ`@0oi($a&aYOd_SS zaX4as!oAUh1=0$yl;ux}<&Iy-V1Eo;3us9afP?Ypmg$>b7jWx|jDV5s0zl$qG zaEl4tTv7^1r3MY7EWfvwjDVkvr*`p`sD24O@f>Nn)|qWjoR`Y8%f{s;9QG;WL zdEMcC@`6?L8S~YS-oK)BsAQV^4x`SqR-nr&x;9|7by45DAZG>X3tCe>Fo zsaSq^hSu=IYi1Z}Pny=aE#`omlcqIWNIx+zxf^1KIu1zNyX+wUO%Wy1c@J z%O_yD#v+h230*$d)4z8GmE*GW(_N=AnJgLb;53)IC2Q~;8x8;Bj>;B$d&GW@&CaM5 zIzTv#LLwA!v|ekWN+9^GcutyZ-6j-^67Ob*un%+fv-Mw$B=0SZ+9%ocZa3S?k@n>a z0Iz@H*qdG9;U|~2EG7esc!qa|9>Y z{Ty%2t6*O@TN}A#^VlC|zuxD=1ROV07?%A{7(Ijb@)BwyQ|HTglD{cW>hR!-l8Y|FtYW+}v zq$>XHba(JXW#2}tNr9n^_wXDFc-YaWYLWhd*BJI6tfp45jM!6))A$Ql8%$JIqf=CtaLCnG!4;vByXb^q`|`B_)jxV$ z(^>z>-R!26+nh}b5&ffpfFK!kQ$X`dNvQ|VFh1B3OPJ}Jg*{cnjC^D|;UA}@JHd+o zJ7v92eWd&(L=}2}Y$B$PvJlj)W{=w;PSH6qCfgTyIBbWzMK8m7Kj;mhO{z=Imz{wkytZ>kNKV-jK z!S0%(esq2zN2bV08ve*$ZDeVi_))0rO)HiJO4*0?PB^i!FzP!IUfL#%B;?-m7203c ze(y6v4;K-c70CX}l_zo3Ygj9rHd_uUJ%-?3%SM*^H$ak8>NG*B8T%z0@Hvf~yE=Aw zbmOVM*7E11IINk*ST_6ca7m@=wtk4FTNi+MSB-)A9Yx<*Cp|Z{nC%LYZdNr;y*}RH zAF)?y7HS^36L19WF|)M(bIeeUvHqDGKTRmurW-)tIg3&*=!-rM`d>4k%@j}o+4v5+ z!~Ni`2)HB*hE>XXP5T{Y66Z-9#*aB+nD@^p>2#Q0ZB*5UK-hslhYwsLSx*2bXCsYU ze*i}B=uG066RttS-pfIoQ=5Hxj(k==E_{XL1m$V{A7qdF&Jq5)2FP$?X-XyW_!`LnL*y-0pC7gJ@u#ZCCG%=7mxAk{ z4lh1i3A8?Z7#GhE+1CwZb}Zl+lkykXlLl*J8y|>;#h8T`SBLCtM^u#Ux~H0ny_k$b zoPSCdub6Z>n6IWr0G`8qGU*kQuF%H?iAjU)v$Usk-3{yo$0?;2UN^Aw``P&vN*K7` zepKEi$pHh{A5N|P4!#6GaJwrwZdzdBS80zs6C(N3jE{N!SE6iTcwmZ^L&_5r3BchQlf7X-}B^LR4I)fIX^LC7m3HrGAqwF-PZW& zaNWu9{BE(3NdDqNw&sdOsB<`4w&-FVD;v~u4BD;p-xv0EbR&)OuC08A&*MLwdPdrQ zgeuafUW~NeZ0bbXcG1Cvd%(>}qk{=oQXqw0bXb+uwjQgp>l#gj+ofG9YngEI2uC|B zl2heI?}jvQ1-+och%OsF2!OgIa%)SfkF+o&i}-pllq_Yqa=R7K^5DiN58^-F((pDQ z@MgDLLS>!inW{f)Q0TZFT zLlNNo%ebBlC6kg;vWh$`AD|RajFxD3fvJn-C)gKy#!r`fT?Ri^!}?HgIEM{R26gqt z=RK%Q2|J~*6Hl*6 z7F=+oFwZ%k9Aghi+{p2pd*@6_`p1=3a^~jVbKww`QESy*B+Q64E}oueHN6VQ3d3&Z zG~PXfp%crOTpPQ4hz}!9+a%o#bm=5NI27a^EzE11R7*zDB*F$=2OzrbikIIjl&x;b zFuprM;WZLENpG=6wKU)o1|hbWR|9ukTY0U|)TJ5(7E5wX!LRr}F{wY6v70GmpwD3% zjt~go7kr2JA$A|<@desF0Yt4ET2dc;K^9b#TQrG#IB7v*601!1yP96V+mQPmJQnOi ziO0o4qIJ_S#Nzw^2A69@>TuTL@C=UFY<`C2bV3nGpbx>uHSrdNSvuzl;gId#Z;-=q z@Fz@$N^lM6u;O$BfP zUdTQ*rkP_8I`fd*R>McJl!OXkdB*45xR-kLA3V{XUw;kuO9dw-<}_TjNxeqc&>}w< zz3Yfh`;yVHi2!>F_)ExsQN%&9u5W+F&4ftEDa@%-{5)CV`y(AgCt+7^(lItOAj+!3 z<{R5cWb1?6hr|n!$vq+O778=siRytGTvoIteJeOlk-URo1N6>4K5Ny@TuwnC3u^vo%Wg&@-x8U6HuP(9|{KgZ4Gk67IDnqNm8%%4EsJ3j3zf z!}pKbxAaZbg&j?}jy?y8$&CtJm6-myvG#{miP{Uw!}j}CzN2>PlW;ekLtN8lpWyd@ zV3>zKyo!@mAm4wzadka;?_S)+Ib8k$Q7HP;Po@%6g+2_9&6S5t$Y`!lEl*wCDMy?s z;nW2rjArDF=@OGS^`<603*{Rjn)7ykhATPfGlvnLj*T&HrdIr7lUZ;MnNAnMK{D$_ zypxL78a{>nh510gWf^>Gl*!t_p;_X=~dU_K$3zYa)o>IqX8F|ky^ z{4Wot78o&a6GtlzQ<;=4-pp^RL@>Xi)NEj`)3Oz|+f!9J72sd1Nu8XOiPY80p>@6! zP{~RL_+Ln*+NY&~f5%MaL1p6d&+FTz8*LfhyrKWuhdD-TKdg$644}6sRk>JZVF639I;nU+8j%y4lk}Rss3D05#b{d&aleKa%vY>b zOmcXKJ*gyh`S_3NkpIaFuNk4GJ#2@|4fxbKA1}B#r=SFl0C;nY(hxohx0g>72K>4h zmygyX3qXTk4Br6fpen7R$XLCb8?qNnhc}g9?#wj0bfa=zEE3`J_VQx$EI)PcF7mFC zAZoBogu}*x-FvY={X$rMD6aYa~Ps~f6W8h z2bjK z%&}I=^jTrgFD^sAu~wb}C7X!P?>QI95R%p>jXd)v%*?FOuaJ6)ZB5Q}grW8IL%;N4vlDm!JxYlMy66&%jdTUUm_qsv!6GlZ(Vg0edIETK}D-|9Ky z>$nQdHR`=aD=4J%mLM}}zvMg_LgXgd0O4?xI@RbD96eF_K%_L72o8y~2TK8ji8g46o-Mk-HPw25&E?WS zBCr~3)K+VmHn#QhrkinJdG~GkyX- zwelZ$;2y#+hVa)yI(*HFYhMJVVgkSdkr9x64$8H}3{iONrvH`B9K`FeeuNj(BhF!G@`T=K;QCwXS`*Vcu zGILRPX=`Mdk9|UTnQEFuiQdr2Z)#mB=lPKA^bo>>*1Ys)f%6i4%*Zu}syH_$i=ovZ zr(<&Ol*{Rb)wG;DyVP?N+x^;0$a8xj$kimTBJW}=|HO|~&tLsMD?-O_CO(;S2PEnB zJF|e9bb$JTjo++A#%^Z0qkC#K0cs+1G_%ZIGFzETH|#)97;pz3wwg+ZxV&Mfwd{v{ z%VXf0c`Cb4Z}u|DYPV_fnTe+hI%X?Xy_Jc#MV%kH+|ez$S$%=YZnoFW%dyUCxUA9Z z%rrB!&znm*v2X)>(bsHoc6sZHximDcuv@<`1QF*q44tsKX`b^YMGRs$J6{ux;4>!{ z@g{FOj5A9{D-NwbJ#I2;@wbRdmEI-IpImsNT&B%`R%T)znlAQy-M^3s*Fp*+3pqGX zCP#q>R=!2YMVU>}#Mehh>W-N^4t>YDSTy4M3o4At;{f^2lCz_U1?3U;EQ~fBPTV*) zoVd5#ip#IZEFRiosjB0GIkYECNngTB^N;lVu#*SyFM$xvy-b77!TXuc+1Gi!=_h(8 z5YZKWCuk@4{>*+4w_Dr*YPRF@fCXpvmZNZSIXb9^gO{s(v_M)8YC=(esSY)MtSm+5 zTsyvX&78}8%bidDvtZ~Hwx+}1=>8k!6A*~tRlr#^rqd)tIt@|ypx)F3rIWI6EhmE; z06$wE2Z8yQTcfsH%dbsO(wm(rB-86BH4F&QK(IgE*?~W#Zm7Wk)49>~i3DjgBXQAE zA4CzN=cWE}m}Vd;b0i^E%A?cDJQkI1+Yc}ium0?GrWrF6iw~kno|E9(y096mMLovq zM3s&I<=f62fPm2z_W?wXVk>{8d+r|QPoxgFr!$Vi8~#EIF+ivTwf7)fZ3Fk`y(?!* zS4pg&&qeW{FTFZZJ5-X4Q$yUjj19+mos#w`=c`PL-l|v)HXN*H3Y}TW8_peknh}|r zw!bPv#twR8EOx$|*MbI=WTSICeWkuQ`rmo}A<>0AsQ=a?Nxil6D9vyF9P%oYx6 zd|IHC_%#VyiI<@(6F9m*vDbZtzc(}I{MkHR65z$??-|JKHaC#jG$x3#IDduV$yl6S zxe~v$8Kn?TbGW@?u&}p^DhktXY8Ayse`PCRUfO_+^}SKWj6JjS_00Oh`Or{eE~3h9 zHzy|7vQRha-c;j5sQo!sAbwc0Q8;Hi7J_Kf+g61*%n;1&~HD6u?kZDrCGT=@zE(q17>%v89P;|90w zu`5c+3MeZ*CN4X=0rn6Wa2}r+w#4;AjFa)AtSDw4Rr#GMW=(E1pC${+UP3=8H(BL* zscnCP1UcRkFQ+%K+pI{IbHCBL`7*?MX`1No1`J? z*ZIkezh-^Y4*=l};63A9)5q0b{lwp4W@seS%;+g%U03VzEBasP-C(R)a5`QQuC&zxa%HHV4DSXkpN+*(E z&5qJSP47j6%+y{XN=k1gq5ru1M^Dhn+COUMm!N}hxjpiiN>vKAOknZO#Xa9@+C3B3W<3a%9+j`n=H6d@< z{YpG+)Jj!i!29+@lK$nWlL~T!9;rR1V#T=GYP?pAl4$fr$tgwPuYJ+PP{;&p~^n6{wzvz67Y`v zw0-e?CYdhpGp4|kGJ&z8wPLR;WU8eZqIhAW>R?x%AN`hk&&7ERZt4ykz1Mx7H>sZi zZ{1>2CjNgKxO=gHG1*Nv5iI!#JOmda%9_-aE#Um%_w{1+@?d3P8ibq21M|0ndEx`F1K1igON0y77#3OOWV-xtZ!ciesEP>+RsE*s z3+x1?ehk=kUnix0_-?iiFn24++y_A4e5@b%&h&%)y9Hdosr~@3;>freQTyb2)TzAG zo2;el7AZBdmr9I<5j|Y3_{W@9%;GhOr}_P@OOp4#!CJULtE$L7)O zv-|Vu$9aRV%hzE~9_;KlYKiFg7G#G>H&0AXFUTvqHhd4UA;w)xD6211ATimWm{J&A zr_B`c5H^UG1eo8KUa2`h;TmuSxmy#H`*XH8WKG$Eloh9}k%V`huZSAKrQJGTaqnlN z7=v356jz~lY9S8)@Xs2X$oty-sOWONCXFy2C^-HihP>gMTMnEZT>6I+77beJW4r6p zF0_CNw@~X{?CAswwoneiy**ObtbL??AJcn1c$DUBOKDe9-MN_Q8!!2ZT9uxK z-w&1Cf$}5lEo;s6k~^&bXdcRj(uz>Yo!0l8*{K=YL3$w!@>W%{f`U^M_uMr0>csS$ zN~`P-6*S9ty#8XGTE(oi*6IL(+kO@@LH!v|C#^dC_Bg%vuv;8@~I1Cl9jT*1Uk6unZ%g*4xx|YqIi&`93*l z5(QG{fP(QJT`!=l()wzeYZ`w56ZI5$78Y+i)~v0Dt0b-6oh3iQLd__nv%IzHq# zF6aDd#<_Z5o_K!7pV118=BOqzeZac@INv-UvS#h#kbkQWb$Lg~n%-f}z_WBF8+J9# z=_O#Ri5q9PD(=}M13|$Vz9V+hS3gT;5t$Z^KmC%CKcfd!Yt*-waB@FjDY($O9)Is+ z)~w^ltaBZ!wasTuPgyfISb>+UnVW zTbN*`F9!`4+JQE=FX;xk;~!Q#sD0RVyi}j6Z>_eS>P@d_Uz2|X;7tHTKG{al1?IK9 z_7BpLm`$n=1g&ddB9CA~HLqIL`w$jh!azyia(PBhj?>=x>AO5eD9yO&fjWXOX!2G z`mcH??FYjxTBmV7VSVPwxSW8EvHJQ>v@!x;fVJSTB7YUyUT`B-q=$h)#A}6i>@;-@ zcy+hXsWwg$8R7i#dCYv=T{n=zpkI8Ik z-=*)DD3%!$kWKObL5)dvEa-pehbjjBj>3$Kh6m7`O=%7=jC(l^xfg_=<5P7x4dr&H zuO1}Hoy%sd4lxKyVm?s;S+3G!vLY29fk3TEmw+>79*a^R&Y}X_)1F#5mUfi#LYZv7;NXU~^=odarxAG!sZi zK(N~MJjF5(BzRR&YkrMPikX?ub#W}lX2v(yLt?dL)JJ!Lc>IgTY@3$K>ajltZ6YS* zuyGl5Qn#F!W#vZrvsU)wOIHAlck>yYx&?xeUJ1<&I0STgmarfkPD~ywlA1+Ul|q%} z2(W)UY2?lM&EJ^P7Sy`M#)`k73{lT+X*mgXUy7QlQ#;kNrcFEzbD4NL%H-V6dT;N6 z#C4OobAu3sv~fTRT=DEqm$X?=>7gs)JaQPAqP4mo`7tA`i^PYkGpxWX)~t(erHpAD zj(Dq~B*TgtSW;}*inwv0GsDwgX955?FyIG#B)V6{`><^;ISC6&v!b`%bMBfO(_f$f>~F?t^2ne0f;Ihh zYX+1@fth=(8M~~RObTzR5m0Xy;xT>?gl{-$Jnh5>$Kq*`nRD;ZQ)>K9`skG$rZ}i- z2hM(QYg!H~sIbm`h7Q9+jBFSjEd=Ae9+zZV`rtWME6#v{1GJb{AHpGyBl-JY=6|{y zF4KCLa5vN8<*cZ+E#h?`8lcIo&#^?pVNLnN48M1;bI3YZy})GT3$}&mA+eik*iOwZ zYld4=Y8!1gEJ__W<8_`6STkTmGq+?WE(ZXx3wo1R(;z*8*#~Q}?t21{Ax%IxVxcvv zZP8FMQrZN?>PQ&>*Xlr74bzhv*_lhGITZUhlhCuFV9t|OZ-xxrh(7zab4qF};Tpu{i`+$ZcMb#Zl*f&?s4h&? z4=v)%+LrVpYRE$jV99{@pMiX2)m}27ghm;*uw=kcl2q3WshC$6@T|jGDmKWxThh#H zO1o^Bn?2dC$S$W>JOWs89(PpfXpJW9MqT~~-Z63`ItcZ(^l)CIv8&-FT2ruIZzSn_ z2WT3zeO&NCzY}H)qB6XsW@KLqnGutNk}K6rB#S$?-7!-n48AG2$N&pmbcKEy_W|Qc zxJ#9M#g zy^xxNj!Q1OZM)jKWYB~Bx3HM=DqTBh*?R`2e`&8Ym8Gl}1 zBi%?^&l!#)zRwPaRa43odB>VQvM>2WL}DiE#3S?TQZo*H-0Tj0;^yggdCk3|LgzR_ zj3z97e8sw__5G#DpsZdC%!6wpx)|d*<7LJvihk)zI=?U_0weXyh-|@H!;hpy1}}B6C7)gb>l_=9^il00mRUnW`1BS>HW)4$d5C9ZAaA@bu&&=_-H6b> zq@XVa#Pb4&SQQ9bA&JOcNrbXqJnu>{yR7Qg^wjwYdlA{ODoC2j0)zg@Z<;964gX`SNAn=V|7^!h$8}r1 z`J{_f-T8EsEKQ-k{07Y~J0rz!O!=nO>C98^toUZw zOM1Ye6o`Gv$n9IqpkH*HU$ua|VJ)Py8ec!N)3~JIcPfFT%IZ0td32rFWV0f+85W87 zsY!Y}gX2!y>SmfDk;AGzVA{82*bfDv_Mkb9d_c2qu65T2qdso50xwID(CWU+sH}zw zFVF`wk(6P;u0|9s!*fH{|5e(0g<|(p>E;bni1z#ye2Wi%<;|Gjki?a<4(_OFqbF zTZJ_PWp*Yn(H&d2%VL0HJL^?`pW`Dm%ozwiGt(-R)pWa&>x|J@rh|X>=TKL3PwJv~ zmyEo<-B8ys{krTwZAU;%Ytbq5=`Vvd;ry0p#Zd#Gp&fdp5zk4$WhsJWG(naO8!a$_ zzZe;|mSN)rK8;lfrn^|ToZS<(yXoE9i*qkuqB!+KIw4@$C{Ml#<-MZ!vxWmZ9y?;xMnE$ZD_eV_Tgw9T^ty80o7)S^%9=uMy%VQWXXFX zQ8&7wD0i2MyhUQGw@SGppNY(ttDclIK5FjmoEg9(C6kU}3rFT!bB{8lZNyaMw-cs) zJL$PC=m`7Z1N+;krIW;=O>?cIn_QOSu3oJTkJ*QDlq)y49vl{x)xrA%1+zI!>*6Xs zbgB%t%!EKcra5c)2r~xeLXYT%;O`Yx(YxJaSJ$osOnu7K4EO>t2uIC#Mg7V)St}EO z7bL$6`0s*8n66xq`xp%u-tHw|xf)o7!L{m8s_O$(Bffgvj?M@ zas@vS41#ZE?4hfU97d&HG6FkkKDL;|T6NZhX_oqbQKS7RicE6sMxGptjq)j}l z@D^UmC~@8fCP`D*YZU$8?7e$XxRC}SPp4NW#9Bj4RiaHY@33v z_p|o<&Lt2m=X}re{Qmjnd0_Ut@0YdLUTf{O)_#O2SsJh0@-a~ZW7?qc`5h10;)jS` zlM+G5O5>D{D04o=(lh#7`f1JRyKJ?LIY{@}yq7$9b&7BgrCu^^5)UPgejBVtBd%1cd1d~L!Z^H|7OQ0NKx z|0c42B0CJkf??VWh`p)Mgx73`#08-X9k@Z8ww_!G@$d?fA%}pF4zCC{bIVb%5o(eQ z5Ej#R!VJG6*q@_i>UQlKWSQ5BM6JbQy;`du$RH`^a4()BDgMBUCfP5_gJ7H4{WUqa z#TjRlEx>>+qeEuEDQcSoze!1w8(*gD9ST*yEN8*B`23)c(-JZ|t?@&8G-Ep@Ki8&q zC?WBOGFd;thbt%6w5`r-`C3-BL|C(*GEDO+IT%hC1@8k-_?&wVdG~c zknai4IBm0b!RyF;Ae|Wj$XUs!wF}<4OKx@3qUmN;jV3Ok}=dZQksV$MRwreZEk>h{d#I8iZ=@`|C#GmJCi$bDjBl3=A@#8Tov zRlIKIi`Sj}#BoD;d?K{Lm$p$&@AMu+hwC5A1=K}U(F#Toy@7Uqp-k}_Vg(*75ceI# zEG-Zdcmli=Wd)ur7- zQ0Tz0yHCIx_=4r!$hD%5Q0sHHba6#g!X2QeU?!`g?)GPjQi19!It5l&;T){4LhxB# zMJ{A@6;Co&SGni0x(d&3b(LzYu2N6A^s#n>%tUwH1dEu6BzKO!Yf5&Lzs!W8?;!SGAP0){%Vh#8$4jUaY(M zTH2RUQa=v3h^wb~^y06y z@b9mnQ_ipS_;$BmyB)V7^Yu6O`zyHE_RZ@slHJwn=KDEcC(_AjH}Q^x#t7|~3__jx zRnv<5R`2%mAee6%X75#QxfRF8L~r(-IEU^4RJf;P;cH)#Yg#c%x$8tdG=Fp!_N?iw z^Hf$W7AV*ICZ@T|8<|j|M;0y5=Z<)jsMa@3nalAX;O+*&AoKELNqj~_}_zU?zABmeqD;k&w zRga{>h(1HKYsGASfy9*%=au`U#JxPfgY^u~WTIBIB+IhVlM=gYyjiFqOK=Er5NkPBrQ5`e`o3e$90w)tBM2iU=}&V z-VV@59m4i68y)=!g;eQ;{D!{76lk5&NlT&PjuR@EDAm8(CRsW73$5Wdmou)&wX#>M zb|xnl)U;3rTpupz&rdj3m8&2kTVoj>I701N zyubJ(ukog*csHil#^)Ymw_bPg^s`3SM@<)GfTHFs3?&>P~**!^gUXJD z@gP3sbULgJT6ihIHO3KS;liiV3~r!W=w7<>c#{(~Ang6=uCDYXlOss{`WhDt__5Xy z%A&HUr@*rHFZD^)?!{6OzcG)|t~JFRn83j{fNxZSpo?&X#wF)ga@uJUR2tc{?X*NX zO@jC^)xuZXX`Sgb35s{n@FjLy?&+yIB^c_=(ZZ+LX+zR!5|qb0!d(ulFT>Mm5)5_n zZpBVJ?b39b1jVs>xYg=P1pSIJ=(rFS@KG+xAX*1Jl5)5_rtGZj}WNtcM zf}zg5s_P}bJ{>Q?P-p+D2@=079WOzs#;OY>{;71l1Vf!#)rrKfSgqnWvL1_65PE`z zQt~^!cth2AkFniS{5h+(@rSu;Zg}=_@MFS9Avse*I>k#>osyJ~aRCul;KSwY04oH6 zGbQ)#N+5d*N?D5^QRJ(ol*M~`bsyJ&wcb>eX3lMoD&c2VnwJp%WNB{!BQOBoz1;6< zQ@MxQs$KB%T{-YjgHf&(tBls_w-o(c^uAySkCRbct{da4^kM`HpPj~DtN6~=;tMkC z0<$%5q~UcxqysePE3_jNM4|1TVh7Q@?gCwE?6AypKA`*DbACy0PAwtKodB=82&r(} zXCf055iP~-X|n95hA{3a5&iPL_0DC5g` zQher;xpSkC1XCbHrqQmm_WIrpY%h6~(PPAwXiCih1J2pDRF-EuPJxCVR~pUJi0cQ< zPhUrDk%cm>b(-Enm4Q|zy&^Ojj@A;l6?bZZW;I=eCN~$6a88Sks}3r8oyF`2)M*XH z!gfYy9OvrRc=v{6p`_(wYe>iaht*iJA+I#l3Zv_b29D#s2$nc0hI98(Lqfh$+p1bo zFDM5Z)vGG%;1m|e64P;;7HCb1>G+u3s+x&WgXlav)q|W0E)|Zvo(9t}r;YCs<~qHH z!`#e=(=hkSL&pSj8TxpIzynUCnuT=2%C0{ArI`Ee^ZcQWC4ASW+!6iq>zwaK7f6ZXBIS^r%>cDNp z^jve2zmfXG3ax1uxO%B76er0pHIdT5VA9y-*+vo7s#QaL~!e1h;WIDiWqq8_-KpFLJA=xyK`1aIdf^ zn2nfoxE1yCJ1Z?;3JcjHSKkB1=PT+ZWTlOiG>d|fw2_K>`I(hgB6a4TF6E@o5=FgC zw9=+Xxgjb|%1u$!i#WxlFXd8hc&c2vqFx4BX>+99rKxhrm7resIi%deAU{&nmn^Dc z6b`l(n@-UL)G3<;82w-?->qNxue6O6#afUlnTBd4poljEag$* zP_^=`%FzQHs`4?F+5;S_vPXqORkmG~1rC8yfjWWk)dHm|H4_d!#qCbD~8HTU^8A}l*P z0HWH{0{~ixP^IOk5TR^O1$^#nM~X_&Q4ygumw^bS+z^>Z_q9{3a%ljRwBai4wsK9C zI|=}*_R;_-<$S8#e+5}8RkS+*N{%v>ikXs8nqRn_yhjBa7-H#Hpbzlu(a|P?c>}sUSir`;=9-oj9wkgnC4TGWc$YPyyg-Zi0Offs8vuip zI}!lPG63+WGGqAZ752|JV)`Oli6yms+NRTgznDVN;~!dpDO1VEot7!nA5~;dJ&`gQGtCpZ_eMkHx>Q6j zB9a47$uYIMFS*!G&cGF^YZ^5JM|q7TN#Av!pW~#g%#UwbWa41^lFPpN;LX(&MKEV< z_TX?eIJcLh`eal&5M7qu62pi5Il94XRh_4Mj7Cpk8xO(f6}8D5nZIj{P8|p}c-sN~ z#YMzlsomHNv-@_qw@COzsI41Qd(SkN2>W&9z0<&q!To|P8Ou9pN%#Iwl4P~MREn@# z?r2oi7m;un@UF$)2pV%$c|LZGZ?$CEzVEJUJSdLYk&h`bwIN;Rz=nMiOJrfOZk!tu z4IG~Hkky((!bmB_@9-(sZ@xf9q9qG+Nf$ARLvai=uOWo_apEgJj;SU5!%N+=aa2P< zCBkgWjB+@UN?z&aH}O+xiTguGV(GC|9waBj_zU2b?0m9;+*AXSiBxMS-{JX8Ukx|j zrF?LU4PXX7NE~Wr8p|k<7;LvMoo2Ux?=%+m(0*R3eJV(|e?RRj|9Oe$V%F>(O9QR7 zM-Gq+y~Acut<_K(;AQP=sC~^(XjvA@cdSkIuu#15Z8swwm3frk#NTL)X1;idW-9Gw zw(~&--@hDD56ukextU2cv*reAFl<*&_~`550H*^FzYiWcT{y=}P8XRJJOI&&-C(;l z2;m%wGi4~V2+53{a4fBf6x|+*^hz3-0%+%_T9ORXQfqJO57CmodI(~OwMaVATImjX z;f+9E4hf0JU!)^*RE6skQ9fi&>GSsto5UXGv>??H(p5*K;lzPM3>osvkr*j0-A+h` zeCDyVBzU8TA@c~lJ-N?v0?3f%H?f44bY*zGwlA$5KI9wjW^wP3j{NC`V;H5h&EjsT zIdXAFq}r!8)xO*>Cfu|Skou{8&7CC3Fh?J2Q$0+mLX+ZxQ*P^2GiopV`8y`GikQT< zb;mxAgIq6DmBP5veF2@3M~p-5X`eJuEe+KCHyU`NhXyX}xq;6P(f}80j>M@nu;wm8 zGFR@5)|if?<3JFk3`J%mIh4^yv?L&$xL;cOk%XT6J1t#jxAaFosKLjE5lB9IOV(x7 z;f!r`Azezg~=R^C)I$&N(0i<#ENfeK=~2)WNmr? z|Ehs3y8&uQO_wj#fW%4zYUL+M1HT|95w;tUt4CdygCr zdJsu;ZZ{zJi-{l5K$6bkd8RT*9-;F+(Gewj^cTIkzipOOrg7_> ziTrDXbl;G;^s|Fq_-$Aue1rIH@Hi9BR<3-EkSNO}_D{944LB@YGS|3Y`-(rRel)2% zkSNAs6C8ms0=`Jj#NK_lS(tq(mtrpo!$Ej1&gOHjCce_A-4>ICAPL$DITsKo1Dz>1 zXipKBxSzIVfga(RoLe4Cb};J6>gVJ^$wjLr&vZM_?d0JaVN*Jv+_78_aFG85m46-i zlk>%0Nxis&z=Z=Uh(G3WyXiR>lQ~iNN~fwv{C*0t#9cFvm$;O1=RD5R*qc?<&b7h9 ztSyR3FLr*Dt{OI|<#dPo^F&l5dhLF3&!L59z_C%Utdjj$qY(#QQe>eNO6Ygvk+3f&I<2ZTJd?vp-H)W{d-S)o@Gqzu9WI^=oi-Q^4c^F6 z>QyNPE~Tuc)s2@PSmZw{TJvNK<_{%~shKHT$$a4*`-_Qlm@ATBtxS;ld%kq-krJnQ zNN)299cTW-3OURUJBlZ|+a=gk!YiFkCA}Ty7CWV%*=&dM%oprXfAcvzlx60S~1X*p>2k5Oi@c~t!_4#k?WQ=Ar7qB zjUUi-V`*>ENHW_{&-N{gAIPz|uBE-FNbEWlTN&TgTcR7ln`FB#3d4p9|@n&uE z7D*KP*Q~QEQ>7$U6l~1d#NN^-v{AR_%Ove;sZN&mu2oj4k}tM*{vzf_7}W6(twix)o<{w-j~%6l1>q6&tAA-5^>U5_oKbL`DZM z!exwnTdkw$u|f0$xqw1v`2)EmCn#>?#e8!5yC@Z-s_9-Ph55!VYk&&Nu6vnW1CsR* zQ1zLYw2KJ41l^^{Q&jKOs`ffbnpQ(nXCl+1)Lkqk5!sxU(g+$Pi97xcMHEp5&=yUj zGD{uc_&2NB#2Nm;RNa=M$r=U-`>Xsn4Nt3`NNi#lm6-#nrg)FGxazALG(gVF$EvpvgxAmbN%FYw>Exj z#Yq<%o8t$#-C2RaA-X_BFPgv6&t%%~BrtWNPg7QMQ0A=Upuc!e^*Y_K>W{2iMl*V3 z{z!UtVX(&OfR~@^LG39h6@@zoN$R5_^jPhf>u?mdj&Yw&Lc=x^R_~c2F-l{L#?-~L zdac;lQn+7R(Ned`!{ZA~hOYTq5Qu0iTI2is&_|+BVDhy}wdfhaD#g|DxXFXI65 z-oi$Y(TWPz8aZNhV{>6#FJ#-iqSqdXk*P*g9CqOrPjv9BQcABqXvMD;&YRNF0=W

BDQ_|`dyc82SPF>U4ezT(z;84aKgmq!UyJHvlFo{}gPE`H`zT5E~#N1yF9)O4X1 zhRJ`maR=hQ90$~Z*HTOi*5KIG(}H>_3I^G_=8qw6k~2EqndNNJ>VJ9$Te+e|^a^j; zq{K_{?@sf@_n*zH7SJPpJ^o3qr!c`YZV^}Tjl>$k3W)e7wV>;`l+FcfT#l;KIb7v~ z;Y^xYw<+^A48~w(>t|(?0ri|sr37DmkPMEhbAVA*W79$vp(IQT!z7U)IjsnRX>H}C zJW*Bq512QX97$z)IRQ{;{kyyO_B&NyQA4*xTfEGPQn_L2PWij8^kN?FTSV=bK>+z3yv-H>MNhpcWsU<$X zqgN=F&wYi*c(ULX$}*%6q@~ET(adfEbpTUAD`B~na49;N?N-c_5))loAe)xuf72UX zEBjzb$m<$;- z^h>xPD8KwMBeFTJDDf7*djIhr9DLyZv9QhA7}{|;#e!rJUFQQX)o=#EN9kTJ{I1C``g82(v9_k?)3Q1+x?<(%iK8 ztLO!6hVwjyoD}E8Im14igYqR7Nq6RfG%xy)FK{0oBEBlx%S%7uUvp*$(24}TJyY;& zdX#MI?o!oOO&;y&@s86x&aGQI6*zslmp!JHR(zB_|{<}pe;_& zx6pTJB(ETsJ@W8iFaAntd2pl z^HeLRvl=2#mE~!JY6bL)_i1&@5T^$sGU@oBmr3_kyq6eY)KC`g}Q5)@N%!dwnipx$N~Z zPqEkMOyUG3oO*{e=l+6M(ft))d(hB}4t|bCrg!+9O)>zPz7IIapUYe&?BTY`{9Cq- z(?3KjkvW$6*W5q0reCI>EW`{ThDu(g*0Q*-`0eUO{QFb0$Jop=$Sa~Oqk4YgVZqI? zQX#bxuWQjivl2QFJ~e#6CS)TACEaKNF+bY`yt;0t~*#-+)@34Ig^eg@m~^_w1rH2o9ds6sD{i{~0zDeM{46S|O~l@l=~c+DxT!{$mo4M~;71U(*RT#ms{%5d zP05$ur$}wATS?w`wF=rLI4%Uk(z3u~ckEmI_WkEamz;=c-FXSY8VV&BzpXWl1*y<* zyA-sJ19ZYOswsZEhJv3Bf&A!JFxuyP3d;FvADq0(_DBpG3(*Di%`6HD!E=*USeFdM(v*Gh*P`g9D0^U z^!f5-Bl^r;lZ0>CFPO=uwu?3$R|6^Z%~K>e@Ur#>-85y_VB}l2QE>ML^KzxV7GxPf z1`1|O2Z%z(o!&QVu-&veyZCLH>eO+p9dR6=Zy(3zEXr8)7?3HjV$(f#CXd18aiBNSx%E@8V z$*-_k!cAx^E!xg&{85ta&Uua7=Aw%|FL;@-XL%U2@dQu@$5D^WPa6qGXMW!H6uzyk z*i*MR`l4_;n*WeT_!;6_<6TFvKk);73J+<%Jsu+_tQ3D3yeO8+c&D(ja9?d#jJTS< zFO~6AxG(-$w#@_ewRxTRj%;lOyy{(ZP%EDWiK|C$D-Sj2L$mU_UHBs?3$ePZdj~L+ z=M`^YM|vYa8!TEjbyu7!)U*)YkHmOcul*!NJU5b6=5H%aiZLGZ$OAt@@Hso-48C*Ue`&UH5C_Q0Ccp_*W4F0^NYb&mu3GXU` zBBM2)fbfB<$lcP33PCIy7!X8-zoorWd;7rxkup)bzO4^5?S2L1iyy=3R%rixULk}^ zQQ%a#8305?Fm^ujfp}+cHjfnK5EO$hNYh&>!e(jV12}28lUP~a?{4CTAL6Z*_<*su z2y*TwUTBU!ql!nSz5u5o?-98h6Um&jb5;@5$tdk5^pBOW>D-7F+> z&L62(Tl5r5UMldlis`C7;0V%@@IUDY5F1_#zpUVKGZpfp1d5EGpG+sBrE>$2EoHd=DSvzAmDZl5|jIkm#whH!mkcs*y<_X zTs29|aSP!kry@od&C9cJB~jxFiQ9nTjG4lv&epNoAXgA7Z{}0Zs-dCwL(WEgj5F@R z4+FD*H>(r_d)!Fd6j%tk^$}#v%Cd#D_}hd*i=9*TlgHP zn{<5&s*LfobmO*iAziX=_RTYcN4N2w;Q!-OZGR%qdFTYr`VS1EkYxjriUVOzNqu~ zdI$>pJibD}PWY~g#3>Tu@f&+0A%sr<9?~HL!g>xS$1mqM|2k|20Eyr9M4G&?&u>Nf zXCB|a;;*YWnhvEd34CbuwQjEmh!muaz&?hlg2MZcv9rby$5XMRIPASby8V!Vf+q7N zmfXgZoIspXW>8UM9uXF_@|w#%c#O!9t6WZg7WPK?|)4Pat9XM!^W-e*>E_4Z>JD zt`Z@#hNMG_Rfn|c4XVlmpdJs+&{<0KLb}5`mo#weO=vRuIHu*`~a?$>k|BwV$BDF=j)ce~z zh9O-#w=f>8$#&QRRcMW>K+1kOo@u{q$$NVhwkVOc*e|zeljB93z`QE@oMvWd_T5;wnOEy5RoC9h>Uw9vj=;OW}ZKZD+EX8S#59#kr;cMj3hOLn$EZN)atU3W=PLUQ$ zW6Gy_n$_jAeKV~*9JH+A!a1ynJl1?Br0a0M@l_xiR=PK!h5W>E^T)x^A*aKc{Nvqfq>P*h3DEQh1j7w;`raa=uMIeX7CgLIdam9wz3-3^PKEfYVyL^2}5-57Q{PIHI47|dr z8$|1*R{~0{?mocEycQ=zY9yt$H^lxMew;ayd*#a-$qItWk@O^^Qu4Zl4C$2Qa6XrQ zzDvwbqGx=E-95z{FB00sUmwh0mKu@43O1&$kM7(8>V!hBS zhPf0pp+*oPKt6Z>tZpM%Jv}vo-2`O>(x^0)9EIYyz?aOHJXPu*WeW`uU`%h}`%7uQ zL!Hy^ccj~RVRYl0(=EcaGP`rq%Zv`PN?YX{7hJZZDPp#>7C1hY%iI~VY%p$Az(78% z4wCN`vl+ak2J<2T8O*5{N%xb|?ejXyQiI922O|SX0#*hJSVH$?p56VDi_uOCGW})S zGhj=4B7P>PBRed^Pp1Hyl4Y0SgOm!W{9|gFAz$r$&5#Ka|N8=Zit1#QWaw&HWJMO4 zS;;}{$4ynL@56p(^<5U=NC{^~&r|YuOVnwtH()N6?=t^`I+OY`wt|du(EuN*_{_ux zI5NdnDh3mk9<$#ILYyVZrKQlf5CE$M!DqDEjb2JpNYibS$s(Xq^xOZ4UdkYqmYSL( zvV(MiW2DWT#*E<%EQlfsT1!}e-^jn)V*K)N7BlVcAH5b@0iV_IY=8}uqDVvYMv8D; z&6Uw0HWC(D{>&TJfpq)q(dzywp2qfyFk_Rp_%cqH!}+3;0pKFJg?gNG-~0+q9}Dk> z_V?E6MnkHsmb=+Ca!YIect=;45Xu#+MImCvx_r(^90uvAbn~mD;dQYJevR84xpzag z%Ws5Fd`fzB0cA3DM^={;Swz>&TUVhacDRqAreFy}a+<9q`ifuH!XGkFMLxbsKqL&x z%5yX#8DI2j7~htZ>AwgLS>U1=7XEbNDC{lw3$ARaLU>JONniaX=eaVXk7GnXTN>fa z;?Q)3u80n}vp6L9GB^Q|~06fS1iWLzzMcbh^(hixLgPqbF{vu2E@V~L- zAN-$kf~18PFlXWj$-xZDdE1nC4ChkLteR;nf^XV#}u4_s|5?+%Q-h)gso-bn9!7BHolh^pebd^Wx=GB z!kvJH?=4Kj9IERc>t5#pa~KvmY6Kf#Bh&~69c=_JUVYRN2p`9()2;IzN&KkJUIwBL zUwX|E)Dwb~BUg>=bLqBxNqs#aNb3Yk%DoqvH)5)zhTyb^aOxC#O8M80ScGq{I+`#Z z|FTy9f0UejlX?G)9$2)4LgRF2JEIZ=Zw*2&h6KyYnM4kG`4`7;ER3Qb$SUHfR>o8I z2{ldsM9wPI4<(yCdN<%kS*!KJWCzVBKDLMPBWP3--KQG#w#Q*yc+_E}31bQ>U^*u` zp8a%3&epR1DPXbg6J~59uT4XcEaw`I(cP~k2g9%!ctVEtIynzWU>g~@X;YLCl7BgY zmDJRNtql<0THU=u5N+Hk1UPt3i(aM#-ALv8nyWsv$2ti@G)?#~y|PEbKS@ty()Sx> z(mKpas<(ypqTr(Ler$QYeQjpGvJHmPa({(zLN0$ZDb+eQHP&@McsQk}DHcdnF_MIy zd~sQ7oL@YY%Ac%T3SBCN?wJvt#v`X~Fs@4^(nloEdVs8yDNo|B>9Ue6i1~;zA~Q8} zD1v(D=F+5k=k5O`ggPhNEC^<_1ycev9G5J4huOa2FDX9kFe5C+cyhV2Ak@NlqU_+W zZO*hJ#2NR2MEse~F0%^G4A*#C-SN}~&x4}kJYHn}9$m-JpJg#c_Sa9k@DX3aFG2nX z!K3}GYZcM0}iH#;Qh?Z6pc>jE2|$DwC85{4%vdGRtZ?ubhE{-i(!zsSkCb4{ z+7eAh6TTPg#1fWKq1(ln>;7je7Qj4D8 z6{5sftK|_yMNfQ65YK$w>4|o!z5^z(6pc!Bj+~Qlc)3ZA(Tp*YkawKrA4a`%BDB1? zvyq`ZsI}w^6O9|1R_!ncG0KBHf*~BlY~e*f^mWw7WQK!t#*3qgmmt|*?u>_B$@3uuH?KIM@-^nBL$y~9|tm^KFdi5iQ zQ7QD@ASM6nF8oV$7yd281^eN`zmZ9?pCtt35~F9y-xZWiO8&r|zhuUMsWO+`Y&gsj zq(jyfE-aOvSl1fI>rE#~hygwr%4T?vX9#CEzF6ks0^lnrdwJfq0gF{7`5l>{~a zgASKeK&5;6EF4qWz|M zW);jeAEL|Ln&(Svzh{pNmc*+JJ6`Ou&HEJZgNhrPu+b~IcH0s^(AzwpcGV>hnH^@i zcsh=u`mpLnJ8;&zWFRhRZmB|Z%Cna%n~emSlJU;FY5td(LpP64-64k8F--HI#IDV! zg^AInC(3zJY8j`4=b?xNr6%$qVk|36C$|=SBc74Y|tf zZ{i78rFIkEiG*n@-(0E9q$BR*pYn^}r<=bb-n9IR-S9=FcFSwpb-T6cyX5JE>AbyA zNOA|+650Si(qgIN20Vz}f|qaL_?Z0XsHf^^3!eN($t zviubq-#~39|F|rfy`7q5m z&M+pc|9w7jSFCFS5{2T+VLm|FQXBEO&P(AxD{j zN(PuD%tbjBv+pxYLgo3~R>`r-Fu4C&MKYxQgNsn<-q_G(}4=Lx`3 z{I4skI}N|MWt933yG=p${_1axXbb8|!#uxj!^qcN1YTU;G2+QHJ{f#VHv zX_+)|spLJ5z6yONR*l#qmN3Z&FG>GpNzZC97E(hk79+qo!R_ zlkx!Ji(Hzx=Rd#Y?B&RTh7?CB_bg$F*W*KFz2E3myciaG1u+~g7~E@V;q7Sk`J$GZ zgif>3<7eU6(uc{;HtY@gRc0rccHd5P;@o}TLLux=+_^W)VZ57|cU88-{2457x;xm5 zsqd2fK!p3h5(Nn!q9S+Za`7_46M14PvxruE4WOc?E(pMB;gxg*rK9s4qd7Q@phyjE zVCc$qGADPP<&P{8YmZS^xbHmKy2ukq^<|IEjZB$~q%eC*RpB&TA{*a^nE3%7WQANA%wQ73SZO4jm#}zeNjMTwU5P$7mnp%fSbCW_a4`dEMn-FS(#hCe!oT|> zuw+fS3D>n4@)mzn{iXQ;84n+(7OqnDCx?o@uKG?7R|{W73>aZ>rR?gPS<}q%?_`(% zzmDJBBgA?dt_Eh}6Rqwsc;=?iQd#@v&@z75fn80Z;wS~ypQWg4|`FBO&<)WXN9uuL8%fb4@& zA(=NVd<*DrR7j=_@75|Tv!#W{sIW|w7Cu{rWsdNtufj4tTKHR4r_78N{zQdkQnc{v zDlGG%g|8)CtfoS%dmO?;Imm+JEa6|MDQH1TFbOH#jTmaS1SQ={c2WLocm_BIO~^)y zjCDPgTh+IA5<_sSFX-Q~WQ>Gn(jLX?uaeO%Oi1gY;iM?j*&JW?LQoJLI-V%#tk~Lm zAV7$b7z-0A$(3X2p5FW3T^l7{bRi|a60MFVe(SBnoQom^I*AW|CMVR_e1UK`kbElt zY*ZIcyhN(G0-hl)kH}nd2PqaVz7%~xbxiHv2R8v>UR5wdM-kvA9sE{~FR7ZnFt4*9 zqhH(Z75&YPkn||fj`9@vw8fPi8hYpuRLy@8trvR=0@|+|BiTsmB{#k-~7}dd6@(hB8Wb-&qi-NR-~PdoIur$i5|4k9c!YgFJ4SJ0FB7 zT*qZJ8>!2q6`4+Cnur;FQFtiYQ$(Kq+iw5v;a5&52Q|tc!8iGlFL0}*CRanLz_t^S zSpWMhhg{mdyjRfSA{kO3G6mZ-W}_Dqz}$TFNu^fvo?d*FPkZosOt4_bn3bx�bl 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

  • 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

    k#O&9?4!0*h>Rwibk<*G0eN_|4Ik!RuRB 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

    5@v8Gs9|-)lIEx zW=s0b)$XEJ71CC};w@^}oK=e&pf}t_&EFQEdk#}orU#ErSfRp_Hf20vAQ3`C{^-}EI+LWO0(Tm?tueQ$w?cZy?|h4?(!~%E(VSA}RAL=<{)t&v4>f9T zEzFvvnO6)`;^lqg0*I)e#?--v6UQ}e$v4Dpc2E>sU%jvd!`62>hiJ*ez{1v;eCrbb zOmmU!2@FwlQ6EXr@Sy~ni)4c^SA4;*b$y24 zi#2k`CabKMm0_=tBrs#sFV-CDcC%3&r5*F<8`k1&1X=|T=)qWV;Fb@#XwJONhb>h1 zJ>D&0m{nn99jJBP6;}99SgGF}hMHT&%I?XlMUh<25Br*|u?4)cEu=*xn9}SY(Qm3c zv6QOZ#75^@K;FDK<{(9Tn{?j4s(qT@K2K9GrcAiK^RdkNB~t#8^8#Z&b0|8BUQT>i zZE)5!UysOxg>A-lAIZtX$o)~il3vFiH z!%Q)cLg=$_-^Z*<>{=iXOHR8q2jfrSs2z?#&oS17Mi|LvosHtKRDdc^-M&SDrPl-DvPkvU(4GT$xps&oS+< z9OT31f+F7G^+(Lz=pE5TR~5`Or;M{vr8eT(o-u^Lg3bcp~Qe`qNS^ zJ@Nj6NXchHy2m0MC)s6+81%#RyXD#LX{h6H{lZ)D5aI-m+9=uv}4NG-SxHUP4r;UY>m$WQkLofLu>t2aj)^ z&Rcj_it0_HczE~k%Jn?bRmzg?LP$Op*49}~+M+*@wVUDT0wrN-BlL)!JVC~wsw4J6 zGK7d4Q);y~>?uRBntghD&GbXv^outnGTl>uHN%YIS>1c9S`RMTIM?X*9n!9_W=KP| zuy0FegF44AWVw})`4@n>zvVEjTr7cPr&aQ<8xf430vVZwgd@J!_0*AmoeyVb!q=Q16Cd)9B{s;mGbN(t+u1k3FK3+m7!v1W zx}S~zhm@0(q-BYwHW&6FdoC;SU1Gy5TBpGp`I-_Xzc9 zVDd)`R~WKH6tR%kZz0aUih;hm80Xg!hCLZoZ?OS(phYQ^k|f7mCu*b=S4HpSbhnjn zipph|+z!6`ilml}=g)Bdd(NlXIvwJMTAC>Jic52@;bvc3J!vqs4{wZA1UO7otwi(U zbc#r9^0C-eDG*qbTa?76K3NbgdY1|$Hu*Ck?u&-9c2q5yG+2A;9%1^yI-6;_u8t#& z!bEEy1`0GPQ)=!}Q%cPn53!e$GHm^|k=%QA3o3S6!*rRBki;W}j8p8-d19UwtA!(!Y4K-Cm5X*;^{|hxu#eYQk+dV&4iqmspZVFK@ zhOpH@1BDn^P%l z(%kbW7mv`E{tl4>4$AYt0q1VIG?B21dFQj?XiEl8IUXxK^)e44Vx;P}#FuvWB44Fnwp_KF8Onorni1HglEoS}pVPbLJ zZa~AZ___6sn0t}lPZ~8)ju;0oh@#53iTAem)sBzwkcIhKWl2-#Nj>?6O<2ll-h9`R z3u(wjH3iFcb1Q@ZOj4CRNb&{SBf+Ne20wITJjX%znW=Opn?mKAxDBny&&Lm_l;%cNyEm{}#!jWJ^ z7AU>@RqGy!Wm%#U&srrb)%Rb>tW>l81U)7Zavzfjh!_~W&1fo*yY_)pR&^H1CaYh9 zeWL56Ip;=e!YJ4J(%l`2MP)S6C(ZaBE3%+J(GkFuX7UK$m_7W04-a_v`)(Bk58>cn zW&PC_^(Sr2N=UCr$pTwLCWu%k1G&nknMuIgo!QBj{56~m6JYEXVRz~GviB@ z)3xAn=MW22Ph0BSWW8EFB>)4m_M4)P&=lVsHz(!)L2X*e@2JgTNiQViH_eyrH0Re~P^`wAfA6$a_YRN8P~YgnT74KqVeX zz8*-nAc-Yk1zK`%uB3>sQ|X!$XGlQZiSczRQQe^UIyY)^2qn3}KBqtK<-MAGK-R+N z#|37N&gq_aLNKw0JZcA;>Z{HN1RkFWe8vluuN&xgysypccLyyBvEPO4&z)nZkx|@m zJ-)E@Tbb_e)GzN2``*ir`0pDvNj1Dt@zIuDlPA+={%~)|>tfNEQNK{OjG9KZO%z|i zh*!CLGwMmFKSj{!BqdTN21LawC25@r6dJaEAq!5}x<^$(&6Ntf^aPoK^I#c3ZC+$e zeu3$?rS^)8YL;4YG7+)e21hye+#W$$1DRdaZR~b#wEAwv9$JbJv~!kXSA`jXC!CAXG_%otH~tJEwt3w|JtFVCM@+#} z8|?>8kMaq=#5=q!NM?GB`MAPCNvqRe0N1aZ3od(l0i7|~t{)mD{m=-GoKs1k-JnZl zb9QD@vCK?(@I-e6?o!yM#i3Zu_84CSS#ME@_~v-~`eFV`#70V-XyO2mDe6rq6lHTi_HSG?{VW_ConSnO@62$1g`4EB3kC-lSju8mD;K-YmYsH|W=A6o}K& zSGTwGFfE$t*JfXE?}8_t?~`ds8x!TeUK0f!0GXB{8JUXSOdk%)e33p>v}9)L^pLLW zSR+zR7u?3ED$5^`hgP4Gbf-HY>tW)@J7wFd%a&!OF{Ax|WZ7 zoGZ9XH@ozbHf*wcOV@SO$^6+|m(X|08K9;wI3}P~jtQ7Pa4Vb}o3+dw>?~5NCS<>~ z!4UmM|D9gPEBzT+O<;sCc+WXKgJiql4lKDyk=eDfYoru7&)H2J_emS)der~);D?$m z22!In8=MFD_U0(`miI6$M4GIMQ2b|6j;~0|q~LSYZPs{B?iC}ND-7nzco<`gLu_8* zl1&lY=nkK{3H`7;#NcGC=KhfcAZye&j_~p8W3AG=;HRt_C0iYP!-EpXnj|u;+4b9+ zRA%lk|H$`Q7*WUL@P*Bmk~d0@@Vw>`<#V_tdXayw8#l$cAM~Yae=LhPHv)Tg-xu(y zHiGc9pSD{StiTl`d@WKh^Jit^Keg4YC_^ITRB4zLZhqWpu^-A!UElc6jGWrhhPh1I za}=ktcl{{E_l9Ig)Yj%jNR)3p-?%jSqnxo*+;;bw1gHVcnC@2Deq% zz-68!MT6I{%2)bo$57p&mMMFu9Ndx%2uWat=X8i;B`?EvW28&I#~8zr0j5`$0l@V4 zDXja#{3uW>ZAB5rbrrwcYUpD5!tQ?mIaM)x(4`ApLZF)}#WnqV(&-K;^>cL<^dh!%iE2j<)y_86P(nTa!v{zgoCpEYjD> zhk=`uN`q~;=aC)!BQy)SMbcK?T*hIu{w0E2D$1yMjuLMO?v;3DW^?c}t@1MrTiWaFsqsnwMIlGo&WP_%7Ky9 z1!A}) zM;TH1W-Ftq)-M_3mF|?$RWJ8?=J+xvC$6;zhAhNUWRvl@EqYc}8Cl??geDHp8& z)7Rvy@?=g+0c5LXv*l3=uP9(L;IsgdpEmv*5ev*0ym|*%3e0#h?(p4^Q!_{Lafc|=BrUFlwWz>yK=QKW?#4{p9B8GgqR1g zmi8?l_hHC9$!rx#?BsTY|7R2; zsic#UlHV7Syl(>#vu0uU@o#c7S84xE z^}H|1t9=8=MPE}4cxECW171~yPm6v8VDDG=_DiE+5K{TFHNGBY~QR_KG|*Q}vVl z#CZNp)5xd#N7ZDI==v`F{u=C1Vozt9#3cpG`mSsPuKSt%R^fFAvgpN0LVJ{$%!yiZ zx=f+fg?*Py_Hllwd*7KT6T;1>b8Tk4sqsTg>!qd6<*aB-r7+#-BEjb*0QGEd%a6IA zGh)`QMckPV%iftTps&@HY2EGCbwi=A=hj(fnwr7?xQ4e{xEaL;3I3t{hpq2ei(~@L zH2;)O|ClSj#8bY-Y!H%mrnzE(41)T1QEkD&L(t5hi*PZvM-q|ofw=s;omcl>4{za4 zb6?#zK#$Rb9vxX>cOM*+-;?-V_lnjU)2mA6B2@)$ZB>o9ag{o_SFCV@R?3sPf0Ful zeoyh!j=i6i*oa3|nqBF#u}9y{Y7IY>9i!L%?8Lw=@Akf)9p~Q8awEk8vzK1 z`DHF_3%Rfjz~OvTK0v{n6aqT8k>(j3%z86qZkw3`CH;!lNXiNZ?VVZYEjX#TzK&C zdWM=UTsYk0#Vyl?#qcL`35dL74$_uz;6^%6s$GupB~4LHLhL1Rgl?Tg9dY$pLrS?L zPPz0}jBBbQIXpu}ZZh|93K*4MQY>db7ahi0iJudvIBt)irblVXd};1c*V$a)AVTk;8a;@A{v7#IWrRx_@7S)xp{QB?N^)9KbubrKa_zb?*Tllz8J^ntKI`>bRDi4 z67?QH2M~2H{zj$f{D@f0u9(PdbD~IJdr-9K_9{{bc+^~64bMJ3!2`?E?SiKZ_&g8H z3gdxi3Ajjs7th9>L|pqX7`fA}iNkd3{y3mDIRRO+o|=n$Ylm(w7ND5bjFSszo%)Xp z@xxUavUetkvg98NZloENZk>Xlr#%pOsq}b zIOxCBw&Pmm6hK}%0O+w=&Y9NY=`_aNo^np{ZRd!24i{6O^JrZA0R)too5?WzRALF5 zDlLT}VilqT;=d4?IlpT?nh1jRu=zSdNptmh*YQ}rLm3p;U~Tafgm!4|JJ;sI_0K$W zw4A+k(3&5!J##M}(FR}2g~;Ft^I>phl?45fAb|t~GF>2#0U;s^V*Jb&$RAutBm~5c zgAV~d;wG%`5c~jN?!g~&;r7GF_+{Wpx=eWEG5$9Ef6gcwa7fDO~01>CcMt5m5>3TFd(fLhmko^K?^S8 zq}Odcmm$S@%Gsz{FDD0M|N9WR1D#UB-F?fz5YrNx&U2f;#KIh1bA#aj2IZ2`a6yzvEF`dyz^Vi$MQZvT)+BC{0`Tzz7l`07hk@PJO~_ZiO5M)zOsbNH{gATdfy`N zJHq>NGFI_Mdf$-uRmLSqU*-9$y{{YtCEr=zceeMP>wfFw)WvfOwms+a9_Ir+&WC%P zD|?(z^f+axdO0-qI9q$1Z9UFyJQEv|C<#Z=HeRX@(<0Fu~aZ<%~^D_wI z$b6@mlFgT;7h!(AuNixTN3><%0_T8=xGjIH%6DE{1xFp_yN)yeU#vO|cl#jHBBB zknpJe4@rY)js0H?&KMl=St4*TU4+YL=+-Y}A2xTW<+A;tyE4`b|5e`NWnF*UNFbVr zHVnTA_Xo84d0mi!@#jAz9j9bAZ$aZ+EqMa~HWBR9ztWbEI8R2?R&Cir9aT%NRv$s@r9{z|*>{wVieK;XL?cGZ`a!Oc9oc|p`3bz(^S z<;F_i2Mi{Zp^zFnkRQ_SZ;1s(1ofU&f9KQ#NOh0wBfwJ+j3y_ur%^xg@xXtzUp6fQ9lMq!R#Ogd0hK z0_4dIMp5||Y_?G6zQ|Je*QkbJwMA65+;PlRfxoZT+<3Bd!tvrG5PL*ZQW+qRq3;P8 zSR;EiY$}UH`x>#%YReG97>oI-m^1mfhW7z$+DlR}p9B6Cuv{;)3-2RJj_TY71-_R| zm3L_**gAhADJd>|q95xm@PtX@#T96wKN}gH==tAvqvn@jwM$0LVE-ZoDa_AAOQQEz zECs@eFt=C2<8@y=7ZzaAkKw)V)EXXQSEa8x9B7M9gmf@>AZl1a)nn#f#^xq0l8Mpe znC~;O-y=uhfHt{FyQ=Z}aU0V>e*q$S)2YNHP>Ch7z_yb3GhnzoUk4^|3c5NqQ@akN z-iZ9@)f9Lg>8=Jvewa0ljB1V-!mAKeb?sY^bztG%VS)^C)VOPn>E^3BMu_C5jNyU? zv9vEOq)IGzrR@t3N<>7f+fY81qjIO7-l&lgh602X|<;NgCJwA0txL4?=bm(z(*Ah!$)01a+}3zX=9j!DZAj zkJ4_R^sm$}(b!iZgYk5l8sk%CM3sW7uOiJX#pfuFjqq3E2M5oo;D*URl~Gz#c$eYZ+`Sw6pEJWW z;?tjj(IbA)bB1tQNg1ApKJ_V)t+&^s{X1q!_)DVOvPJk1LvOa;#A9oYAnz{`3EI^6H|Zpyj617AEQ zu&{UFDgwb<#J3|uIwcPIQ0HX7Rp*YB2{FUTMO|EoSf=rG=3J7YpeoHHqNY4oHgD*& zz_~3~&?)s%R4eClf@S-LT!Gd8PS*$i$9_nqTgJ%Xx*UO1}jQpXJzZ z^P79Oc4g_GQ;Y|+)fk3fvoIcyYpV`YnJy#s$$x6A*g;d>2-gVF)3uSSA$w4HvwKWV zbS%)GFGL$sTlEUG&Rs$!Y0-9KXd82Lpm9WW9kK`IhAyT`bA7kHSmJQ)TJ2w_8C}@u z7diz_Fh!V6VtUQLPKX}p7Sgr&n%a5&6|zSz-=CEQWiTI6&I<<*&acEG$S@ca_A@!c z$xL5P?aH@6Uj|z=dkBjZVd)4!KwMs!Evj*umKo+jXRl(4B}ojIlovQI6a zo8S)`Q|KoaqGn_Nc4-i~*+QJvZ;7JopesTRs?Bc*>FG<=Z>a$pF>I1kjCObslgR=3k=#%r?V4m5&E)xQzg|9suHPd zwBZ;AZr8ix51c|*PRUY{0|js_Y1!XMH~}m+)uDjgCdMukyXpG71Vc5Ain7eRmm<|Z zxTr)7uWD0NHy0?1vLG3@L%s}Xsm`Twb!APf`KffW+Hu2QlW1u+L9l5)1W>Cf7H-+v zOPaXW&IBs@vVgcQ$(kiEUE&fVvxmG)O-DrJ_jGl6<60;HmZdO1t0%*5GdH#ENi;3c zmrTwJaTY^G$X?z^6h@IxTfIeZOGiplktIkt8>8dE>sp=tAHvFEBiy-$<7$?_`HzcP zA$^|oI0EL$ms~f&oa;FVh+x|*O5t}n!8XAaPElh znLY&zW!U@U{0{cVrIx|ef)|}%vF2CWzh6$NvIv!(#ua)K2dH`xNjR33o8{p`gVsp& z!KDZPStW;4Ngeeik8DH+#@Cp>?nGXA*~^SUn6gD1c2n;z37b{-7^Dx3TU}&dU&wIf+ zOUZ_DEL1WTL>$z23M(X|tCNwu$1iyFHz-`G)yTh;a~0#!9Wopc+oBk|e9gI>;HW^$f*|Fb&bx)Qk_QU zL`H1S1wz((OGq1Bi`e{NrS0&fVjNiRgF{;2Q?9&?g|f@!Xp80k3@m=GQ=jB$*RuzY zb#Yj$|0RQ2Q0UJXR980$RgB*+ayXmUY(?MT}zWUZq4W-LQt#f~A#wEA3cZ z_7P={x)J01+UiXx$rcO{^T{szAho|Khr0tT0ZdVk2T9McSjuc3%tFbDwTa!aIa2~5 zhOf=}12rRGRjDb|PF3obK2j4^A!=R!32>=n=CLHH)Cq3ohRCWt>x3>+?OT;;pC}Uk6Qoxl!zArH zo3BE;dv5#J@jf_%cfok8BUTlJK9s&bMHPE1ef>zLlSjXEp%59@ukj}v>n`b;-zZE9 z9^nFE3H%FQjuH|=El@4#!1McIPYP>kaK)EK@Xfj{Jt*1>#`YV&y^gDB1NY;f=hOOJ zCZFnxFTKn<>t5>oGxb&2!5A%=D4~XYhsam;bjE_9;1$bG|9gMy`x}qyaACDXeS2Yx z=~AZH$7!!y>s$k$TJp=Z#2K8$+x$-5zLl}}cot`?E|8kcSmW=(mzmC>%kcfy&ykOoTq?h-FFpwgf^&F-rbRCU5Ngq55?tR{cbuC*APkzE zX8jWA!VM!B>@Gb)|L5h9FLI}B8Sa5x^ghutRS>PRakQMjMY}nE&{un5{9vED74cgO z2hL&Ry|@s0wm%@x7Uk%Nlu-9>!5#z5C;7JBAss$g56h3?{6OX-W`9im9Oq)(!*e>i zyOqCG-6anf>%yHM56{`l=Y!#*OxoEY27^ygcf)y|TcL>99q()GRBMA`9eRT~Z?Y<{!A&A2>!Hsz{#ki_>ko`J!Q2+gMFS*Lq_NVNk?1#-ezY26oG6BuNdc6fvle zYRj!lha$As@C!*655}!XVeNnE!Hu`qX{+iupk10X#`b?#?tQU7VtvCf1B?gc^2GRA zFT1L62XC*iD)Ysx733CN=$9*Oe~IE=HO5Eg%wJ#L7`AUg=w}>{;(a!M0=f1N`>^c< zd#kbYcbV~}+n1s$wT;W{^r>9-DBFE9Kkdr^Z|4S4LVjO~^j@TpT53x#13jIa?92M} z1TP^tZ0;k5b2g#9r^nIqV<8ylhb|Ufs#h>@hux;A`I@1Hxs2GTq^zF;Cx$g~sPa6D z2NmuSYDIk_TbCTGfbkg-hvAk&AI21aJ zhf(vRzBki10m1+$1&kYNUOzOz7uoK{THQ#@&CjX*z8td4Fh?mOT{0ELUj&`04xpmu zHbTlxU(tC`nXMVn5)$4-jyXHfJg!tGt+!99P7;}^xC9%@1Q%Ag9>okT0gl#$tR;`Y^NKT)#%l zD6+wBOMlcyv_v-QR3K)gI=@Y%p`G7m-(1V}bWZwZ#*_-9ZUyN^B8N-T!EHC~LdLOo zt$Ow^IT(x_CxmF{o6>_l^e1ZR2vcG*5OEZ{^kn88(kRT%^!7Ipx1;-#4HPNpABAL! zeQ6&?s$vWgGu!Q;aul)9uOboGKci5byxv>Npd+T{HCC|xo~PE|z@Vq_sP~o#VU-Nz zJqo~EDO*u#Y_dbSu8h+DZKBab&zZ?zKZD&C^T}U7GnCq7M}0z`P z?VECx1ZlNU*=0gyhv1ZqzCe|C$LCt>OW zK=}A=+`DM?H?i^%Q5gEL9EpGP_Iwh&rC!>QybfZ;XC~$EBbkyI>uWa5w{>$T z1!zlu&T3<}^NwVgB9fc%X-{p$5;pcZO5R533`ub0{nl&Ct|W*n(h{Cfxs8`1xC;_- zxv)Kqp7=@o7`t$&*j4I`n1{l4DYrI1;hN=|*LW!-*Dl;hOl5XyBbrq7#!vRxh4l)i zT|suV28g=c z;q@*VMAvb9bhQk^ls0(G-dJ!)-LqlyU}AR{l{^6!=&BtEU?E_Wl!u8-PEI?0DPaWL zg(q`KKk9Pbz5-6+`UP{$7YI0%4{+M?eSk6;w#~b`H`EW58<%bK#`lKy1-+ZPJs<+KKeyqO6g$2EO&ve3(wi!SFKYD{Kx2u5I(_R-?;dkU z2M{KZV_}&b3qveCN82IE^gjpu@njOV$EOll`Fv`^iHSq#ti2(9q5TBAPut+GXjcpS zHW!>Xawd*Tr=U?SY#+J66CTjUu2k4%cIdNyGY~q6L@0T17cSyJIRK4*;$J zh|G)!08IeS>j8iv0N?2WfE)lr0LW#L0p7k^a*pRc&ba}Xn3-@|D9|N5yx**SXS4t?{=_9TTUawB4P?tZxni5y$`@L= zZ+vbcHvH%}*W7kyzexW~!~VFrOR-wT09Ze}p&*{vP?f`mbQMtzvjrXd zvn0fxLWD4Zb}Zn_^uP98AaSs0epTY&S+(O;kGk)P?Ot0%FQ>)&lBA`?SWSy6R27ik z@N1!AcPlgD*-AQB65ZtsNSMlDJRtFWTe7?0pJi9)Wv5~dC06Huy9hgKH$riR5+MGwYBqP_Eex)hUiTj@Dk>StE`GEme3%7sRlO)hNjm;HKAk?E zW1@O8j&l?lbUv^6F@`n2N`E#)F4ja&FXLwETi>g!c~7*E6wUG?bug?@I*R`CqC2E8 zd(NzwJ!h_A9Ve$L*$|eV zt>P_v*!7}jCjsfpUFgazRKnA*4v;(+3p9NGjnlN`2Mp=3dE+$l6QHXI5;pg=jGKWs zCtY#&;ciDwrffSAxBS*Bq$W@?snM*$JI|jIuFW;4gd>*1Rr9!NG^5+J z*%77uZy(8~d)!OM8cNp|| z`D$xP;L`j>>HA4X)i0^P#i#O819+16#K{pY$Z z7uxWf5Q)5ZRr^gffux3q57R=G*4qd6rI!u(6mY@$+HwO!3o8@?^@V+-VvM*FQ}9bkl9La%@4cW!_G=gq|GpYe#FVFB@jq zix!eoj1L95>&%jXktfNQEZ+vkmn>(1@GF+GmMjl}4Y@Vixi1x{orx9*P3F(X^M#5B zwBV9n)0JsHHLuTULeHPxP)+{$73{Nb!?-@H^_Jmq{!?mvNX!nPyhv5r$U!6Agpob+ zR(wBR2{^fBkziN;SSpUz3fYfYd15L)ml%c48=f;SCue`#sVUlSD$Ihk=VJDAf;4m) zgu)NgRUF`>3tObAm>IggN{?TdQ@f|qzHz8wUs+oIk^W2(#YOGspFrA8uZK2xkY43b z5b?bmO>D$I(fVqX+2=hbyk)Y19Pdm{ecJfzG)nCdmHA&4{EbDbw=$8S%E$#wGy z#G*%Q9ZR)%-v;bQ9ioc+HsovduPX;Kc7IlmBCUR@a)h+{8*ori=bsJh$5kx*Uth34j7(K5NDlCJj1f519ijPCFCKn z9A*uvJvTGKm}@K{VRK8m6^h48!a{KQ_N>pH{ZRm-e;`J>jva~605>qsoRj&%c#@X< z66!)-`^fBg8zRI_;k*mnt7|z#H1@fKeeb*u*zHdfg~x+(fp_`$C}wIe|ut= zh6)N&nlMAbM#(lelf*%7{yC|GewMV_Q*?#Ep7S;dp+9}1x&m$dDT=j16f0w++S9Ud zVOOW!ych{VB8eX$=JMrC3%!6(L>JDS4T7}X5-YS(|-4n((M>;j? z)C!h1i87}Mz_>gY5)cAFYgFxPr|Hu{9-%+eKoLH}fMz|aX?bN(l;OYH8 z-`^d7R#sDa2$wj4K{J4VMjU8~`Y%{q;5u-89c=H#T{m5sFP=Zuu%C5Tjdwc(I)E_k&FgkQ}Fc#pP7?JphI4Uq#OsMKIv}W&Ow=2U})%6lqujIfYx~G zUNO?Vx%B*-LkrL=4^eZm6kn&cR7@8)8;3Bl*IO0xFfrH6tyqF(#ku7;p(ZEuGrp>G z>&)f7cCckqE5=hrQSSluIn7W1&;4?Nfcz~UZxl%$Y6y{!)ieJEC%tju>}M;5J{Co9 z>nSOL8LcIE0d>Siv5N~)8aHYXEl1aXpR4PCkJ z6l~U(VFkF`d7huI&?{m^QK&p_xf=QCiG`w<>KkX5UKp|K(6>TBOP!&RCi^V2)U(c; zuW$zqr%zua!z}$CMrnuuBT)GBPpubiHC}z9CBjLStKTPx#$a>fW9zI>dhove2yCt% zdz{&X{fESE%}gm_mmn#yc^$F(COZ7e^7VeuqAXvFg&?`k7QO$(=8(SRvf~6@^+%|) zD*OKt_criR6<6c`ZeB28@Gb}zEta&6m8i7DVkH%9F6_!(Odu-S(ApM_PaagNR5ysN z!iL?2T$hEYXt7%Ld1_nhOSO*{5D~Khl7ONC6hYJmeA`Pz0V@O$^822-_wH^0wf(*P z|9mui@7$R)GiT16IdjgLGel%VpGoxw7ILZnb?H?66x}@FGL@~Vf}g`;;=SbaHF+M- z3jp(2G5#p^NIn##KVh8ac zQ_FUW7z-v;YaVNMTNAqY=$6d-nY83230V_uraCsJL)h1@&Cm<}INWjK-I7z#fG+El zTRxFvNq?og$4EXl9SGL8du6wEF6*K6=3IIsy(rzKD658K`$}T#`+Q*)TU#V3J(=nw z>!#4FQG$=2o!6f$B+a^?FOFOqStomdQCTR`V!z_ELT0A(PYU01hGM+beAH0fex(`; zA_~_H!zG_!WYM1h(`??bGc?$gU{aUidx!m@Huq$>XHKno*%6~`Yu#>){1=^sDy(TI zl#`34k$BrwkF`<4fO;epfQP`u+M*=h0Evnq;q^L*f4{DD z{~n#ao%Kg1iPT42RF}GFW2vDh z8j`6QKUGm_qPt=Ff>!GCSntVvmGSZ6l<;E*;i?%9*+&V%iQ+ltjK|tX7UqizLZHxM{f?AI_N3-_ z;E0PBu~f%T5@JS+g1&e|Ds&q8a|%z^8w#uVB$xN7^s@F_tRP1iN;h(*`DWO$lE>xr zL^1~z*qEFFCpKJiL@(=g%T9$~HLId*L72nVKf#!cmpzGPC9})BT~ST8t|ynB4%o!N z56_^5d+$~)Tux^=pUOYGo%qiol7&un=)5+!@G?<=VOVeGqM%K6A9Eq^221W_xDkwr znr{D_c;7V&nX+Eh<_;K3{z>&*nIm3Xw|s12T~SR9(uhWPeO2LPs)Yqf@Kz&U_GnIM zEQ>%vRydh18imp2v*@_?8MaMog|E{w)^)e6XCCvL(Ux#S1Xp% zoy~i%mn_!#x8t?MQEFnzG*)<vK%jXY=NAb8q(ATvMyo=JFnE^8`s`VUCYA%$xm$bM1BC z{v+mP1iq=35pWk}=tSubzX#@|??Uvd@9%t^>ANJRe#YT%`flZuQ{g||AL&cYWpwDc;yex1kjISX#MfmDAy{0Ki4iN#@gGaDtg0*3^`5=orV z&k0@1-`o)Qnh~4mik9$V(!H%=$t^n$g1~Tt$V?!ZZ~D(}cz|T<{S%JZ__VWeLRGSn z!8-KdA({7fx@b;B@mB7!p*qO}CHYa+0qDIl-cSTj*5iNk4G=Kv2qF`k?K`s=Or zl1P;}*3|oG4(@g$m$~w-KR&rY?sOxlpP%#Fse;J%f=EX$l3LKtuSM^paEwc`llFZW z;{AGY;sLKHwL1GU3prl0g7Ly`{&0ST?fmbu2T# z?p0ehGp}x)Xrq+DOK&Of3-Fm|64jyeMEZ@(t(SYT@PlYZz!B|yctyX{1&yKiP$AHI z-BkUwJK;8L4;gwi%;)O)?e>MvciZ-HkG6GW8uhwr6q>Vct5#8a7?@}z>ZNu9YW3?J zEAs|v0g#b{<)IO{UDSQzPt5UxUa7p&+Xki06FyBg-Mmv!Z%H7~4E-`L)~%%UXzaA@#Z7j~6UFWJ!?VR5@(}-B zil2D2cnTP*sCl+nLQe)_+w6;CgEd>UC2axC_!)OtAxOy>`r~)(=0|)$8aD8N-RfIZ?jQvv}oTOYA}pec~NBmH zWQ#UnH3t%MwNqA^lX_jl36)+`t@o9%6BhLU|Jd$o+MV6}U(tMPl=OjhK%!|Z7)?9f z@n$$qzxWh2Mgzz3%S?$jiMOQ?6Y{-72|7lYaxA(NSn$^&Pc>+$W>@pu--pvftE#`_x4#4%;uj!EDr*jCO z`&IS&?RW-z>USt@qqcI=K=y3*o35=44fJ4@#y?-;7ul(2NJc)9k<;@5ZRM5up2UbH zdh&w;{zG@n$$9ShDo`)^Z_|vHL#OMu=h`XAn}p4hIRw~a~$P%e7_~( zAZ`?&$U_&YKaz*tF2(bOoyfF(941ooDj?U$np&&9_6g4&{NhG)b2|Hrs>6>_pTS%>~*H>Y*j(r{AF$R$n?rVGyPaP-kI*W1pyGHew!Tuifz zD`?gm-UBl9ulA!4OLtYE`;l3wm+TUpNdOf&INmSsA%CKpc%|=X3j)9j)^rBVmnhAE z29urQuG9n|t~%KkD0w?mQfTKXf7xy=p-BspmYs94wsfstB8SRVumSr}#yqQ&9V>L_ zj7JRpf*OyU1DWx72=T-okCCVL9FHH+f!cr^6<33Dp1jN8OyJiYl@51AWOQmPxNgiH zjGdrhgg}rHVldtZ)U-5D0?x2~J~@gwty_&!7(OJc&yBCCfzq|tI_M08;@4h#1Am*F zH{!W*b34bqTACXqA1*Q5TI69PUuPuAw{05?^Tv0n=inw@kGwBw?R@>mYW{RKXOC-J z-Q5B6QzAZmj=-B9*+3Z=BQ8bz)MI32Fmq@t!<)+hxdV##kY2K8m`pkQHW-GG5L^tf z#EQtn37LUb!=)##$9v>sZNZg*CMr|F#AArzt=Sa>B*N!qqWv9{}&PS+3;%t7`45c+Qepcusd-1Er%*afEpSw zIpiW9m-r+g5Q*!*kg9aJuSSRYQj~i2W!4#ym#mjKrfBO8?D_qIOHcp92bUenJeSKE z75jVXq+HL%A}=7}{3Ijan(fkmn*$z%-$goxz_p_J(_x)>Vx?OS_8bPk-WA~pW!dEl zaMll1gUUVsI=rLS4bIC*zquV1nC#W-Z30^>q8nZL?3)WbtNK z-F>UCTHDTBOt&W{{PU&TmofjukXA?;D`j5kSH#fXWKFnMhhaAy>JF85fE(+jaqtL=sO8?}w#{o0#ovtir6nlzKqX_W$#R_}iINVOXpm9(Z!d{^fNi6rsPFu zA295QBxK2qO5m^iDfHpWY4Bc~oO{Y?kRK5_e28mT;?g+zbs@V+wt%(L9rp0A=YHWh$PvQpDY?Gf`4snC+WfQ*i-Q`fs{!eD!IqoUtW}&; zi+xBmJUVpxcj*wn18cd%MLKvI@AiCT74WeE%Lg9*i)q%=RmuIE5N~oP9B3m}p#lB4 zzZMpRWG#VGI4ol`ii)!BbE7zWkTTotc*0;dcac1$buy_0oK=M7m~&&`2wXvo@OYD*wxVV{NSI zRva^b+$Q0O#CgxOh!Cn2@Ig5W;sp$MNf_SF)LAW#2SddLq2j8#KULPemf8H%47lAv z!^?i(>cv4OJ#nX8*h-Zf73x93M(P{5h<0iV-r3tZqqh-HZm`nAt6!V`x(Hs=nnXI%e8Wx` z^m&t+^^+=BxndFr^2H_iHGI);ZqMh>hJ3B1twG#}<)Ez+YsDv>iMd{z)TUj&TDyXP zGu263z-_DhpW_R-PeadK8_QtlfAa)_Vv03!CRbCcT%RN%{xNNJ0r zYiFy9?{QdT(H`y0j-TP(cVoy+` zy=zxy(&>?piLb>TZen8Ev#jD;>;{5O(VEfyRPDa=o|Ipq?MHbKq0Q&1GwgGU&d#pq zImNP=7_YMy`S(o1nI&5(_M)(-Lgx(7QqrTJSRtDS+w4YJD~{Trsb1pYF3 zIqx)D#Qhyli1cx}>K`NQa)F@t2o2Ndi;@moQx8XbG_0cR{krz7h8<2fY&~c79X|JE z@TxNKvRIvfUEBF*r@UP5XH+ni5n|0|h5Z|W?y|h>RovXH*bDvYJ1bAPh)m|hG&a=V z&YBNLt>-~5b5QYrgI*5u>=qv-;x_5#>m1Z8StD1g&K{*LZRYw1*)Nwg*+P7?$j(UK zOgnX4vI&;J_O|Z7gnaUfJO2nXwDos>vlCT$=Lq*bQ1VL2CN43uC9M{Qnb2avG!X&&@J2(s>-I zB501e$|MfNdQM%)Fr0oAuK(`fno!#^FHK^uuufo110Nd{&eqvD!?6n&vQ0YSM?nq8 z*U8WnC}~flsD%r9bQyy7%n+b;p8bqqs^3H;$pzLoA))n*xPQ1V&la)&=Dr0qZC;B1v8Mrap3 zX??jqQ&3`c=h#Z~N2Sp$2&eynhf0|&@;2~3)feCB-`l_Esdql~joJyr8s(RS{9Ab7 z)=QRMM;;d4%Pv_=z`++N%>CL~DGE=v0-EnLR*lL3lp)yczDab5>JQwv-IDWTNqUF+ zc5A-Xf@Bh_J0;Opn{z09CV;N|STef`baq`@Oah5m%OMn3pZfp2eTbyhtG}v!S&DMi z%qh~$lWC?ct$iP1PAz9B8R@l>)?VOZL|a2{e@eMgh%%2>9jMqs6f7lWY4xKkUW+&mKJJsuu8d9T^QuYU zci0sBci>chMd%g@?<#T9Lj!{ucv42%fnFgs; zmDd4Iq&#Wt7pp3<4L#&8P_)TQle{V*5gj^jEFF@L%|4jp=`_?jU^Y8DSpj?8-7H;G zvUZPUnx3<>#Tf`$Q*Dt$OJo9Iks)*E8#Zba| zwpAkRQ0>2Cm+(#5?dY&wT4}3WaSS^U<3Mz;Qi9l)2O@l8S`bu;VF6SQ9C1Kso0z=k zEVO9};b|MHZ7dBk|3QkfQwUdZ=tB+W?*Ymnk`Z8Q*|!1UAwUC4AS)oYt%7aeWLRx= zrBGL;9QM!_{DRU%xNs~M#Cw~kEluh~(RFMVDy)$m$yWjc`X{e}lae_|_D6{^E9whr+ zj#Fm8Z$_h_-c|18hdsZ(@xI6odQ~tUu7+p{f7o=eBB?bG&6nIU&Aat6a`(N~Z$%0UyNLv9Z>OHdES62qC0(??>+3CS}9K;A1` z!FIC(2?>Cz$(Mg8 zHK~9DBy1Ftq=A$B-a;z&P};-)!Y?QDTTRH_$$h8sN%Os95WIzV*{X zZuY?{r}OB9hTbOu)g!B? zuCnENqeib5CrtYaJh==nDYxLs1_#442#?%43S?i+6PO3zCveas6Md+W5O8Agop%j0 zhXZluA}Wp7i%X5zmSe=MF;4IkxHGO-V_wb`x5x}^4$+c+-~Q)R{&bbu{{C{hTMgsD zbqq9pvq$eadBJsH-)bDqKyYQ{>0D2k=AhNb{&?gHOv!$hp@3lJ{*!flpi?++jy5W zZQ(Hf5+XhNB)<}|G&YBa=R9=He5r(kV%w5Zn`&0jWfr*oJ4D@si|hSgRm& zqHmkZ7I{}&DS46yw30UQq?t8LPafh}{~>SaYsy7e^njdBBle=4L@Rr#Zm*d%TX4+a zAZC~L9Li}vucF~kz2YS$@0bQM?r;9{E%==*#{0Y!QFV2^R<_M`nDx6oQNXys5v1xI$oxyPJeT*OaM#p?0% zrrfdTt5ZD^HJpjAMc-yM*Or`B9zHym^IT--9&eQ~82^2fh?O<32-Q!) zRf9y=HeG^5UAwU@PYmF`-n$L&CNo<6EDb@ZAmR_oIfDJ(jm^ei>_yPJtr!RTk6}C7 z(kqL5i2;Tue=&seiI>a0Ka>?@ySqTKtg0bnij=x^!Ccg!19LkVmv=C9UPe$B;n7 zm?F-aM$eNj%ULoxIfN7EGQs1V75vrrZ^aahu&2jkqeO@0MXz~8RTuppJ9PcITgeqD z*+VqR0^OSon0@s6+edYGpWxNz4Ur7s_!g>P&|h9!bHtO{_NTTyq&RvTZV<1ep??&q zianFOo~|wO7f(euCvj3F3rwr zBm6Brd`OJSNW=2ec*U6f^d4AbVz8-(@ijCK8kQ>^C1M zZlJpcH}r)0RhabycxviLQ{}cAp5%a^d{f>P3U~gvT?&Bn`9LOvT2fqltES;w#O%_R zRuoUrmaLCh-m*J9(1|v84apUWJj_pbbWsXl<0J>Yj1gsPZtevuO|cKesW18{+4Q*K zgJaOIr(%WB#rZuTuv|g@NY}1~yTVkToWkpO{+GtO? z$8!;32=zooZ?9h)my})^Ha=Z$Vy(mhl6hsvL@#1kmrTL*KwgfH8(+DvdB~ z;@z`g7u14s$%7M-ZjKosG%Li%kr)|-Du)*3a7Jp;rh|%TtE|g=%3FG5e18r~-c)3L zN@E+HGJ_~n2Bpru!fD!sqk-4TS&J0$8l%NcWR~U|ZktozN!NCY61~cq)*wKk!tJ`k zP;7-zkT3_qmoNrS>#qz;?cn7xs7w{aWcBU2VeqBJrZXSyNf(Rr*;);fuL*Y?4mcjznY!HD$~-8~9oXv8tl!eoW(90l*}Y6`1cU3SY9eCS;}OoaXv9y8p)FS4@^tPUuk}`I(o60`hH ze&k zr)SYk`$-pLMLw`v^IJLn&Z?P^1;asV1CJtqa+1i9*~UX3WB(pe zfn_3@a%Bm57*^Yq8wjQTbOB*9Bfp%<%#pFtmc%4hrE?*i=wrAK?l!BaM`IYx8wp90 z7A59ULIe{v+@E2?AVVz~oR-Pwv|urVpe4s2?)lA`;eL9XJKTQ)Tm}u$plI9Nt{XLt z3KIxNvYH&H`#rl(@YXCI!nG-}KQmWs2{ZNpkM%n}U{*8xfaXMAAGtDMCOWu4D2FLU4J|&mo+Z8<(C$OXCvZ!=K=FJlrO%w*fW>+xB zWBq~z_@?4SC70$|7r=FR$AAJ^8RlM<*;%z<)rzO2{`B&}ZWxk1x`f<~+)pWKq!m)d z%a30k5yviHn^oRlwnv-$xLZEzl$QWC9>_KjAD;(LuUamvw7Dg=P1bHs#5yavyCOQP z_~6A~wT6pBgR{S=J4HpGK{g?4rsBTF~rEBAkEJ%Yo?%Ws)II$oloDt24C?Q_Sn88})BU}x2g^P{ZyhrjKm@L0D=>^&Iaa)U98$I;1ER?ctFy&w zU2v+9lWQ-|pDwMn-o)?%bB+oSj~Zt9N%k-okq!Z+nh?s}QIg=nC zq=^*iNFQuqX*%!hE2(aRs_r)sSZ2TD&xLhlO&3|2wU`Mfum&PnH2TlxyChoIkXGC1 z%5isJh?MG1EtA*4WYZtQnFPsd{W%JL}$3Jj6L{xRL zoHfms`50QYQ|NyzLK$*}J$>pZ~K(w7NfmUD&@;@BVuTWS%> zc4hE$EO>Bf1?jhxD~U$Y7pSKeskRXh=2yl2;~>RUG--I#rdLI;uWE zmx16}QyE>{PqSbN3w)51FYI~L877S&0c<*|tRH`A9h-mhMRjNkiIU!JQ|C{?8*;CK z^wmxs%TXtImNDZzDtG`3dK1qc$>9t2ZkVrL&G!953NW|O2@Q6R(k59uPFCZ60Of>B zf{~`vU`kH|BK4itgWc92Xfjg2Asf{~cEPM)m-?h=KRrICKwFBoTPDId4P^JO0!?(O~79OF76Us@ImAxqsG>P zFg7&UNZ4nInU<;B-zUsOSxlnlYjbbrBa)}uVk|b|gNcVf;GiK&)mM$${<);_-Xi%l6dmvVuTp?12$4Zl;E_ zjc^#0>`#n%VY{~Ejl`Io3-m!+VjEtY+LBMpenm51h9X%qp4XAJY6_QCa7o+tTG^#~MX%=Z6nIZXb@-JS2*O_$9vg@RC# zgwLgM+|ea_VV`vdFY>`D+B&9C%1E{o`O^7@?7Iv!fLe4H_@YHBV}XuB(6X?yyFlOO z8J^iB>d$Z%cCfoE@YdcH@qP4Bby05O?EvJ z^OH(!o7f_fy_V0Zao_6hPywQZpz0LqDLdWhr(Dv6-f%w-9;90D@hYE=+d6i6a@@&n z;18sM&q#Tt2B7>P>k%nWdlg=DV%>Eo+2e;^G}e%v^)%~NUf~X7`m6pmN7jiJ?9%?R z?oc1|Ac4H(%_pX?=tRjGXO=VUt{OJ>LrFY)Ou>Dn?O66i`I_GwrH`D9~9Oa|Go4Tq_i&8a)Cmc5NV@YWEDsdZJ#sZ10lKkNHY8X!9|fuJpU zjge=eDN0?OUAzOw&>ro7l>}$1r>>gBItmgAnNmKoRh#pSc#)1EHxRI&-8yO45fB;%J4Fb{AR z|3E?ghibX%jfjI&v>6ycjMR|4;akRAWP6@^%d@{xoj24Q$8s3Ci5xXO zUS4oE^@&zd#>d%zirzIUkgf)jnh{-e30?=cg1m&V)MVixS6dNrsJQIgM->6qL32!h z>l`U1(6E6Fz+~OTWY?laY#^ENETQYr7Rq)+TlfxXGPMSvdkYOFtF)!PmV?!r`2pVo z++fmF8!&$|pjH;!O}K~HOKqOj%Co*NFtA*Ut>BT86xH!}L38d~Q z%I*XNYRf^h&ctbYdV$C+XA-y^{iQbVRw&K8+gOaAJXtB)lXGEqX?68pL}R^WOp(XR z`=GlU*N4~~WN#EoGa)UP7_A#fGuy2$`d(&f^E7H!`g3!w)dG1zNaR*>>5CxBVF-d1 zVWzT`Y~a`3N;)WGBa!-U6)Xexr;Gw=(R-%5HDvOl&TrDq78y8!!JVFhN&!2o06jhC zS+hyUSeq!vFX$=4HEI6Dhyv?0_}p?fdJ>ukDQTMwfOU#QK!5$x#C zg)bzh{DHcaI>{P@>Je9ckqu}ufoX{5q`M0)V5#m`!b4yu;Tpdo_0S_idQu7cDW zlkxBZ^8zRRZt_~sP@xc=H5cl!d2(Q8!heDgieY_SX;27G6Q5n6PP6qP0X_Xp?g99O zD;;M0W(??Q=G9_@ccYyV(vifw zQm+wII4!9Eh{4Vh)CV+MS5Q)#tVUFZ)*e;i8P*wK9Tb%JQvEo>)KfVX`P6qqR2Q{^ zU4;{iaAU&!6M{!pZi^E|j5UDC@q%E@dWw{WF}#dKV_vRy@%>s7i@@WpghM*I#j;=h(<#FtPmx*Eh_&3+8| z<=VY#T!{`l{(4bpYe(pxT^|qOF#3WGvn^9uW zzvYzCV#=STwW?Ivu__gvIp-WQ>EXlqTJ&*5W1cYL{Fj`&3?IfxGxu~Ud7aUfGpJ2(Ur9a{~ zp5Hhk$J08tLaHSQAO1|^d?Fc)mNhm|s#d{=`KIJahQ|py7q2KNsNXIocW$HSuNF1H ztxh25Kw0ZeZ*b3?GQBU42v|(-m3~w*XchBIs7^HGVLqfLVQ6%+%4#cVj_Lin$7Nwv zKvD}R+%-HFbZL3{z3lgiKm z&Z|`T&)cUhogZ;XtM2Qi8zG{QW+d|Vi9z19KQR(@ML0{eQND+>gu;g^!`0YSS=SpI z{UbL&LA~(k7@_!t49ad<#ekeK93fO&@_O1jpKUi*d|L77^WmT{a%C+>QK?`NpS5(O zSVj9o4YJRwir-yM$6aIb|4`3Y8H*(k))Hu3ZAq~aBLUq#3i1@BKg?GLNy=tCD3eabB2{=WF_Nd!z_Ag#fH4?|wDmM~*qcONq&caB z&$_kTOf7D2ZTtBQwr?&TRR1mR5K;RCnGVtqZyVR-;0!puiB)!U^lq80_VoJ}WpDYq znt;*Wvaw@&)}1KrXFz4X%4D$B_HD7Xab$5Dm#CJcp$eS`WJp3q+KU8WSMHuiTi-JX z6^>DB&JkQPz)7)>*vzHwRK+9CRy?AoCf`MfG>X<#ySUSk{)14a`-e1-A*bcSPXI zl$wHyAM#Cxdq)bvgfyu&8u3%N{Ij{$VuS>)3NXHFb1Q>lQzz8qH7IpHPF?Y_6-vSY z+u~4CBsY$W#ldAY&{!B?((M?((z0p@uAXQ4hr~9|`3>_MN&Se$OaZdND7ukKtH~)j z8XUj^P&j?+B)5R7S!H#y&zre6WXX|b`#456 z2J9FcqePzPxTrZclo~taFk)6j1cAu)Grjuq2A*0XVg8DN(Hwi5Rc==bD?H_UVjodF zPB^cy$sdyZHA$v#QYdxqC11oLjXz~L((*0LvsT&=XA7d05LBMIels!>skcqiA+Y-r}UbkAGKzr`Sr2u28Kb_4KWN3FNDyJ zSvO=IRHngx^v7L0-o~(Gy~t?OL3f=xR}`}kOKxYqLPb)|$PCVtVN-uy^rP=EV^ z4C)*}TZKLPjA#JPj@NHjemJWCbrapbf1odyd1pP(Bw*jI=8EFm2b?88#??zetRF&3J)n!}0 zk~KsQsj&(7u=;HK^C@CfT^*^1ftP}~H9D&%GphbMg#D8$Ql;&u{BUu25{ zcLm5AC2*8__Q`{k6INwewh_|qpPQZjTO&Zf;FHB-s!XJrg4QVxAf?2(0Vryfz&yuy zXAKgZPO0(%%HuX6ibPzz0R`lArv|^XCZ*0V7eBx&;g>*~E|Ty} zwfVQ#9d7Ys0zwG4*;R`QfEWk>LzF;&2xqxqjx5AlWQWv{C~Pv~bGqm%k8Ro#eMF#a z)r`KfO~5j{O28|9_9`;Rb)VXWa5>_fi;$1wL7V_z!k2F=zJNFN*30lc7neXObQ?Fc zpiXH*@1oatC?~*_HYQOxNaybAawbEp}J@$ zZM&jtRs2GeqQZr}LJO9rTHpWT8a}-6K(~UftcX8_cB+mpE{4R5K)^AE#J5CukQuA& zhBsz|)fQgIK-)ss!|aYlF^cB?4qzT@I25Ta%Wx>KM;Q(!skDie#I_r5ckG4_lWf}! z?W2kf&Q=6g|Ib{%g1o=dS5pC(B$VlP3>X`_h10q1{r$xufFwYSo$%`XBTQbLz zm^4+Q^C=f_u|Mc`#Apwbv0Tc+06}RqkOHc zS0b+`$6u24HmC|4Mv$)D4TR|2xvF^9c4uBWb{y${N|WwA$GEE8(ChG?+W6R`=d|QuR$Qyd}lj4ysp3bIWGS3CCwv2`HLKvWRv9y5RYfJAI=14RdF-OaO zK)FZSb{a^|`0O*UPuG)xAwqiW%iweTy5!>0V zdrQEZ~X_#l0mGwX0N?>tUsd67tx16s)J3Rwa6)0ktmGFprZOQWoyOcu8UmX8QgkD*$T3Trd*KF=A;UKYa@5auz1yI_OxW13hB~W*+bn;A)?MWgY}rg z=4=O$i%kbxgzA^!Qs!-FY_cl(S@tkn0n&sr_P2WAFt%!gTXk#A6_E=mDwT=__#0#s zbrCWVR$xRT`DhiW)E@NDd}dg)=)b_x1H6Stf!l?4o?(J&Z8)ywT)rH~axQ!7<04&I z&R;?c{ zF}u|}u|X)`q#lhwO2R5sjY6Sm%RXWrx?gR_1ke&y%2JPY zHuZ@W2sczN%IIMP5^rpbK$jusWf^=PpqFwf^_;tT5OK;}W&ItAQ&}`*u8UQ}wAX5D zA`)?8Zk83L6$I8Fv8^c8P*HjKh;2pD&CmSWn3TWaab-!-W+@)*Fh{YY92(--QMAqK zll3dQajeNlXv%B-ir(7RoLCo|Y%4(Cv_#U2yVXjK5Qj9j2r8!h$?aA>uPe}d99*`}C4nnh{R+i9N7 zrqnloNlIp)%spXG*3bFeqLc`ZRc4Je6UNV2CH%c?(@HN%dq&nlFJG+vAYHOJwu~b= z8QeC~NTtkE-)#%Vk?@5o!?+Y&@o}|-7|klKEs48Ej3PSWtTxZ6?;EMXF*5Y9FGN17 zRtqX8VT)kEer-Y%f;#&7p!xD>xeH5+zQvl6>^QNahNC`1DzDwOa8KfU!Q|m##3L4o z=bXx#&*UV-aGe$wSJtFTcgey&l53O=k}FU{W9Y4T{z`axMdI`$=i33UhRfX>VLInA zH=AqBy4{#H-xs}Wt$h`m4q&395b;E(gV7$;K6&EK0-pJt-ZsC5L zZAK0C6Nm3@=GWUs@({Yhi#0CbzR_Pp#+wSAYP($pADm0AH$m3Q%=_*J;?w@Ol^qNpcy)NPm2YUbbphFZ_Z1 zXlx?Q+%E*)%Js50Z+l0-V1DsXigRulqSCST$eRvRlfjXH@+?{+`M2yG5(!0BY$Pg* zD^kBcS3I~-qFlE1ojQWi4ZU`wWGHFRKSh>-#X2m!m>#YHZEJ7_p_f(C%VwVO)8QB? zxtEEwMHo2;=676}H?FN556m;K-6$D=`4$Z@76-lxW|hFaoFeQIW{t2Lx}o$y_j4x< zni8h9au*M`^ccwQ%_ZwL?DVcn?ku==qm-Z$nX6I>3~I5l_{%C=Eae0VVgOhev&#uxd_}pZrJVFjs=L=NcKn(Y zy}N_bCdH(0nSs7@IQU!h%zxjR#vj8XSxVX?P1ET`8Z4n>4l~SLeWDri%rHMu+yO)a zFZ8_To~vZpoZ`zge=JSJ^@xF;?l0SNJCf5D<#rmt8YyfkohVc&iNeX#iA;Bu*q)sT zD^ZENvlB%gmEyAJptv@_nFlp%qMxB|3E+i3TzzVnHngkT;3QFOE&ehm5lsO=7ODGQ z(urtrRAQr@Q=4DMgXDTTyJ(@4t35lB{gleNJ3H|t67@26M=})LHz23$(=#=8h0+Z{ z4VbX5!3uRWRw2p?|#|PSpm#R4u7=s|B3uxJf|%-ojvo&xGWtKx5cjayVA~od5T)48Ms0&EN~umo41S`zP27~7Ffu( zb~iR&E*Gf9&wF2Dyo@RI$G;KdJk-WSRc_E+%b`hP!S+cW%rV=Cc^G4@VYKWCYTE9@ zmihQ&kDUdRKC@&)Vn9$?iH*hnc-~xnQz}@~q{p9=yO7lhBcHKMXwMEN*ZeaPIF@-5LVHF{J3`5|8-7B40lTJEsEMX}n(EI4;Ed;d4! z{Dfi|{lCCFY`5zb7~q${d!5Lv8xqrg>5+!LUw|O(H0)ksoUT0tZLI3#bXvPyVT}Q5 zHa8GLB#pH$u+}74OZLE8W+dNLTuAY?%s9M(s9xXfxlzdB-vO8hX>?fkQCc`zTrbYm z2j}WT;a6q)Ia+iHlwBDozRWosdY}4rbT+s4LXdkzlC>A_L#Xy#6kqha6_{Q0l4kwd zb#&vg`lRPkNMLQB`U8_LAIQ;!7syr-ze^6rN4gGc^Ur|XI7?oYt3NOK)p7D1V$^6) zy~NJ4BvHu0f`XEDJ(-x?s(heCB4Om+C7h%|q{l2yLWo?fpI8Jg8Kj%~07a*nN^hSw z`tUpmHnEnr=y5Js=yNOx79}9m@Aw=wg}@M43eK2#^mi+8-4Ic%;SC@JYt|9CD2u_C z_)9i`$p5hA@BhQjSyw4Av*4h;1qWlq|322(&1gFg!{Ay^vDwVlkLAlyQzF>4N&(625l!Dsdr|M%(}1wa*_ zh!AQ;r5h{a!E%Fuc=6!SiuhO}yR-%O?=~X887Z2cyY%>oWL-t)uNt{tGG&yEEl9n4 zx+qk}s?6}Q)^SCk2pYS%ob%LPBXa$4uL5xWNUtH+a?`2AfV(*8u_1K!1?SeGyl5-k zC^>*0OpHnz@rgy4dFvh|Ozwjj{31~n!Sq(St2~VzSxXox{%=x|+Rh3}9JanQUz2cq z5~@wRGXF;P(lbcgFG!PuPLQ^sPfATt87C)|(~ZcMZjd$+sI`Tfnk8EFeCQl26qibB zbDtqsCP>>4`9jdJdpG33K{G+xGVQnHa}j!rc)Oc&(sA0hNn9%;R!tuGDyepyHVHLF z2t|3Px7cx`*%o^2knjaoUAx#>3A@1JhTH)4|4}S_zsQR=`As3)9$E(DKXU-T35+zp zt-I~{Mfu~!L)+-aL(70UMb)kXgbAe6`?#$M0x7-Td|^Da`6|~Z8@W0p-OE*wk<~{& zr19-y;|V^w@z50A{FVdC;sa@bzbvsPN^&uQ(e1 z`3`(L9@=|uJhToVza<1}aZW_7_jWwAaw75}`lqIS%Z`f1JMs9==@A?4S$bBf?yF@} zICOj>Z@r9IMG5X#x>?awozQbtWU?GR{Of#AC_i5`5}ZZ9o@EF%qa$DuR7}aX{*tZ! z#NeP@3WwpA#eTq?O*@U}-k!1NlGd)4uPF|zq%0(8B&b4w_Vv`|8Ic{IXH^|ECpA@N z#XC|$)$P6G{gXTTbpEZjG0`9l-CiYyC$d0FQ_^dsUV=6!OVTIE=$QC`-znj{Eny7Z zw8NUpg5k2Sp7FZiWh!>19~azsy$JT)(Ph2@H=6aUNO!LO0^Ef-A;tYzJN#PU6OQ+l zZmURyeBO%0C|Q!Yw)KM?Fn!)1zb@oa@y=9n9Xf{-MGuDg3XIT&k#2A3hO*bS1@)w` zL8y7%U$*1+0x>cuH`&N4Zur_VJE=k`3cu*#+~_ZRUrRhhNpMy+AyHV`+27vJanoW@ zOeYb((E^V)sRc$fjCRa;x9s)XA2pv)P2f^?0k19mIauhtANeq)m%XMfn8_-M9}pDQ?0;55oxLH;=VS~|F}lvjYy{<9@Av5oSh z^pp4_uQ$v$(3Lb?Ev&m{yAi*sKwl|)3v`RYYgfBq zBU3r1Prw${zgvJre=FkG^s2fzG5B+QmZsC})Zu|LOqQPbaRHVVqctL_@-OwNj^`3` z4t6$#1$36FtHNDK1Snm_fE9b4OhIhFHb$C47fI;YAlece9UjoJoIcv<*icsGn^BC^ zW22)=g^&%MEa*^?pKc=7R#erCvz0VKVjv9V*vK~oC*Y!G%y~Jg+G+3@TonJl2Tm%n z`G^kX^(XXpJ>1oM#??GM#8du^DxO}HCvDzXaz(83wUuid#-E4mlH&;XPJNkZQ%EXE zDFvymv*@R(nqh?$1^St4){lYExq^Fv+B%nH_%{>E=rN(voWP;a%k@c0X8|uTUp36l z7mW95kx^)|bn|5+KBl1Z+V=!072XaZ5iR;nJ_Xg*F+Q~_^~-V@g;mn^=m~tOh(FnM z8asm+UgLLyC+;0e^*)7Z(GtkL2G_lhK-Z(*P+tyZR&oT)Nyu>$a@+(ALfg=;@%jM; zmgmp_IdXUa>uP|AMUf9lm1izvilm(9lMn|Y@5xKR3=q7xDPLW8#1RiUZCJzyxD_*b z{1aRqzEr~hYSE7YoEYC7InYa+`y>?-wOX0&`MqCe5a#Rc#CpAv_3TE1l3zto*Q*Ez zeeEWet!<=j=bc-kuHsU{Yj^PfYMx(~y!N+iB|mwudY5mMyJ_#K{MpT)&e!-qsr9QG zK;-h`{mmzEu0f0bg60sGsW<9(?&a`agje{*LIylU$I1iS=Tif{+b%NwjRT+{j;%Cn zb4w^SE>Xyqy!l@$m7_|13b=o#RIVx|`?!CnRGum|@82wyPpKJ~JM~18y}r6zW$R{~ z;a8#3sswE|ws6_GOt6;RajL&}vpK0@Ky4!g+U62yqeGxmPtFjiC~|rbs7lBtP?Z3I zo+XTQNyMVSayggOgFttZ>Jn(D^Q;K;eR=tE0{zQhG6cFSi$L?K5W0#y3kZJiU(N6T z#{~NG;}EDcN1~&Oy?{HK)V{2gO`t3O%~Cdj&iyw_DFU5z90L8q z21204JqT2C3W3URhCmxHnB}{9bVY70am$IP<_(or#;+-^D&6L;KZ(1A83xVW=7H4i z9}?BcjJ_otR|FO#a_EG*cUbY;Nhsae5*v=X27iHjM)JE4b{o5wcfN1oyLy*?^WI^< z*ZrF3l=FN8&%2%Ht21TlB;Cy~>2Cfjvht757US6d`DHS|@bj#f(1m5cpXTc4mqFY# zH6~5%Y|N}*b|>gsMlM`cy4Jb{;h&#ZDc*BIV}Cw0av&#k{w-%9iIx%o9?>T?xA2e% z3#q>n3zg9Hk<~+KRhSw*kpsCQZpLwv$~{hj%bfzhoZ00TIF3A5|IrpeX#JioZsJ#8 z!N_=YQANWH_USMBco5-u%O6EJj;g4*k+5>y6Jzo;?A_NCPebRCcveNjH3+9DbEN{K zrHFlUkaZ-#SGB%ajoHXZ3Ux28^Beng^E#JJMIXRp_eFS#Zog$fmSgQuVUtn}3T=!LG&JN>G3^UOUp=89{&K zM?fpbG#PpsRoex&Eli8-MRZV+l5Q&9$i-c_5vFow;nw%>#z;C-Zol#u-vA9A7^Fol zNQIlB4Vrf+A^sIN5vupGJXsO6sPKEiGoO%+nyo@auUhm`*cUSxWkvC%41kEe z>4u}yhdb#rGwHzgqy{8h5ic2A)`BQd`?47j5{1)NXOV?Ukcd}=uMljeMyf9$7!w%c_z9{Xvl^J&qspH@1b z79acR56-6tj{VfYCqHPAQljsT8gy6AAKGV5MXcmJ=n8dU)jT3$4n+%Y{sTd{BJqSe z|5TB9L>Z6`-XG>;S|6ixtkj--f7dYLSblB6walBrx#>?Z>DL?(lD zjugVc!CfS9-m?lb+PvY+02SHHJme6K^&Vyf#oyhTV#QSolWmdB8zKjXYSHgNcIYcP zka*7hIiA#qSd+6zQ-$Pr{b`ut&Sck@710v?Ir;k)6CUo!G+@1blDy9J7arqG|CsU| zN%Z}pRDK%`X1e4ZW(Pm-&^ zg&DhFHfq7B`jD99@uo(7Up7q5Frm;LY>ZEe_rcM~AL;nKVa!QouiShl`$}{KyLImt zLJ!#*QA5hQi-6ed4d-cLnj>7T zY{M-d!M)t!G25(i*3is)dn{8-re>~BGsVa*uhy`G68?n$m#8n+i+;r0l_}5plPV%3 zEGfW(%>{$J{uG`;?uEG=QRlkl#pq`XVkW<{Br7qBI`E(4|L@o?+Sb(MB*5|FT zv`Mw!ooB=XfyI<|JCjGaAJd|Ampl8^!7O+7;a94t)}4ir!vl)8@iG#5Oa9g3GV(OP zso%XUb84$%sF^txby8)PvWazO&ka5Dx-+d>Qte4CJ{2scKLBIwLTn!rRxrXP!g#H_ z=$5{`m^?}lf(#OU?_La1eem>=ZY9&$gm&n+q-~V6dysQ_2sr88dbw!shNEgY*iUY% z_*GR!{8Xc6!r+Sdy(y^AAJ1#>n->|C!oT*DK-8i^;x`%VBeXf8NQGwD^zP`UpAl{Q zl+hjEW#%tD8N3oga%`?<5amB-*)=rv?2C$(pup7#qq%a!GwWo`yvns;0qW0aQxex7QK$8d$eNtJ+Rt}8{6Q#*607!V zlZgz{cYpU@?I%s>g7Y3y5^>qvb#J#`G)16^esMT*Ub(Ffaqef)<9CY{vBH#?M$C#L zp{&%O{>ChgFAzkQZcL5*5%hnN;b7K!k?ED@=N0CT)T7sn;%UNEo(=P&YGcFB)IE06 zbUSHkDyH5SgaK|RO;6oqXCXKsrRK_))GzE@vNGDaW~M6aB*BlJQ9h=AAgShDNwxk* znv>Somo{08v)iY0K!Gj=%w&bRmHrKt{z*UiVbN|%{j~pKm<7P3vmzspzpzJdH$Z`o zs}unxaJK!h2T2~S-$Z1UR>kiS2QTh?DBZ|anzhy#fUEf|4o6RuVa7$3@JU&3Bp#=v zrYJCDxTJ28qLEQep3pam@Wy=)QRUp#T0WTU5c2$D0dDgL1NK(7L0fQ0L5ePt=^g3n zuKR5%A?+&?oMF*lq;5~=AUi+nmr>s;mqiekHSsuKD!H$sNow>S(ZefO%Y+YYH9sre zmVDpW*~i&e6@{)K4h5p@o0~dxI}~{6J!z}x4>`F!Uqw?Vs|H?XsTfbM=K+Tit3)={_<88SDYN_j%Avtx6D=Tp{esPhr{d65n^_GM``uM z`K}K+I^XKSEgFy3_Zt#?qlwD=@h6I99tO=7IJPhU2a6ladf z$8m`(hjCr+&0aY-H;QoDDgER_Y-e#F-77#(2B*T^J=hXW zyo1N(*^lG$crMt_29P@}nrh9924i2EG|Wc&_SAo!Mc3&?Uafh<;K&+p{o#75sC&Bt zS%-5{TkU?OetjuYAG-LXNicGlO@?U0984<&gKY5;FES6xnEs+)7N*aY>J+9q76g_( z%gQNi-6O(Fcjxc3$1AVLc%7OJ<)e}`l(hn-XxS8jG7%`M0Z^R2EDG96H@aL;TJpM2 z(V9)ak17~Kzo8fsfEwBzsdI^XqRa`Ysr1-76SkKLR%$Jzg6xh;CoL4+Jy+|a=3o6s z!em8XAOfP+Z-wpksr8E%Pa(mt^_y?Id}{p`6^HEszAp159Q)Vx_~t~TJu!=V(?h1cTU6SS|+BjI5ZQuBZRIqco#WbC=;t6*1L zFGLR6Q3Vru4+QN)`xPeF=|q+A9}izSKtX+kEaD}Y9RNMJe@_4=-5{ToYYHAdkLiRQ zHkVm7bxmTkJ}EzWh>9Zpw* z*4A#i4q$1Ch}wceQ7Xu9h53HG{G8lzLz5jR-M4>*!ne69^(k&^P?&70xJ7CUg#>%~ zUt@hpcAjJ`MgkS~AqW&c#CI7GKMZ3O@qQqm^6>4~(zx5GVqahoY^Eh}t=eXk1*U5g z0@LxbFLxq4#p{a7y0nR{F9HDrHO$cO-DkD}#E1uOW65Ntj#ti1ZqN7PfO#SAKk0@x zCwC6&xaWJ6S7nJ)BxSJefxVN2a zxkKe(R}jYXB$XuwoPYt{oPW=ig}hWTR6TNuLViK#9t^Xkilu$Z(mHHd*RxI-IP0*s9uIgZjE@LxQK*KTVBwY`AC*f z3ppcX)$U?BiHeFWS}et288kvK!|C=0QZYf<8YkkF44F}5#1n(4QR!P!|NZ@g-Qg7q zb`+5uS!N{wXsF7QdiQDtUeo3l0mw;}Lz}T%nIEawHc6ldmDRCTM=8u`5$lE4+4uQ2 z83}(3&CbJe#xJimEXU{MpCM;?E9@x#sq3DFn_Ue|rjwvr8lfu%n3X3?&7PTOUmg;I zZezvm$QR6$LwQyv6; z_4FNZYNQ0>7$7QeYsq0~E6WQxLfNoF218rffw8!W9xJ+lCISdN4i3Y>`3e#l_dk$G z9gw88Wwchc4ieK4Y%?Vi02ifAp60mLUj`e zUYA4)-?TmQ!4N&Rq3*p3(J4!(rs$?!P>@D<^?0FRb5e0HE=(#U+A1hi*TWF9LT<1# z`=AUD3mRF)F3ls(W?zX|B509+oXAY3PKXe~wZ1D{PJ5PtU?PT$Z34^eqZ;Nb{6aG< zec!ZkDJYa{o&@2b;a|aK@24GXPRYz?rPG<5w!xhsY;@Le2+AuGJFps0`MYUE^0@GRp z(*zHU<8-0yQ<=ahKl`L|73&@5t^PmWUur zgzSe5bil%ufVHqczt&RLZbvT>tl59uQznr)rw%=H)NTPfs2A4A!JgG_y zDq)vi*IQe%5w)3KvZ1zqZC;Kpx-xM&2WqW(ai4(sMlDsv{z6sS(y=GWOY}rO3iCJx z6SXj-+eF{9Pvy9*(A!=+8nfSmrK~9S(NA+McWUxgVht=E+eeEo=TrFQyzqO6nAnCe z46D{0+XpO+a`;7m!B|w;Q7BT#)f;Ms>n-LU?FEnVF~}}c z?U2pA0qw;nLK2hCU-nDijLq88i~IQFC+)`r)!^}D!_gjb%bEg9QC+7z1NkB^lwqk+U?Jh)+{ zLH3hxYD+f5WCom~n{Vj*|Do5vE2|!J<^d&Ea=-H%_En!_e#AwjKswohoIKbo*-=Qn zT&sJ??`G4&3PH$d#Zvje7^@{k|OMVi+7DxWBOWAbLid6k?yTG|QlJAwm5PPoA_gT0fAD-GVL4+=e`8|~AoTvlEVkse#AEk3Rb2&m-V!-fJ zYolCrHD8fR>akNq(s5+&$V~jdaV{hBI=oV;5`P25iyxQJRs7dJ1h@rT!G&BH`mmr4 zsRd8E00Aa#oiFmj=s)f768Bn4d;Ex)6NxNt{n^d^TGu zgtS%wUxMgtxTW~tuk(dzuATowbT2xW9ionSmSj`aSQ@2}~_1wW`oUIRqR*9N1 zN{zKRi1M|OA2uoN;gzyvi06cO1#dCDdn&x!Q~fIb7in(;A60cG{^urx3>v+IMjI8^ zP~$FBXiHjb8I5gjxC3`!2BV?|U(vBCv{tDm7F$SylVEPI6KJ(9{nh^0?aS8Pbys({ z>uYN#36KE3Bt+z`Nf?mhS1bI*CsbDs0Op84>qiF)98Z#^OM_D_&+L}4?dkiS0VZl1|D=r8qbh&Ai+6|8&-T?zMOpCKwA{bE=V z&6S*{1e1PRwu@i!bA=v0>`^};q zTDQ3W{+$s01?0o3JqPl=WPB{y6{SZva?bJ?QdIZAt7Y|H^2MzUeHc-_TV&G3i?U*#^voKumP}@@q!cFa1|xxwlFe`Hy+V z?5ejO#?Tf6`($)dCR9^Cn@IB_zg}i%VrCNQhnt?EU>Nt3w(vi>PMP*j!yacP3x6DQ zrjgWS*O++H3>I_1cVbaSK-l|ETtgSXIS+WaGNl`3 z?-FA&l7s2oRAf5e3L+fzNxp(eBKcO?4rJN_@n5+nkCjoP5@=`R?4FaLhjDFpEVU-+ z{!J4J_-`soARx2bHf*BFxZq6#-%i*^eY|RZ1Ts3TI`ox=C)(V4}+@3o(D7giNET0!2m0LJM*WQS&r~$S+0QqZ5pd=mh13RiCL8 zEPyrr-zx=0zbWKHju{<=o-j}i7iKq--6zLy;qOi!>OZQ=dh5UQWKOc_kHb{pQ3`Un z8|SQQ6>8mw=Q66ioZX9UQSKM09k{ozc|AAP_Bt?9MXQWK_l8#PVZleU`Q^H_m6Z5B zLEacDIawi%&j~uB29m|wbd;%#D{cmHYGK*IsJ(V}I-vNP9EW0cX0{3&819oVS7kq< z5f4vABTmmA^wKRP*Ts|f6@$v?8io>!hCHJ4Cy(fmuV>1Ju*95fK>6F2Ov)|T zIE%iKv0UKN!q0 z#6S=|&NQ7lL6JQwoEe28drUt`_V`=j^p)&!h<9?bhg{n;ki~uB<4h4g?m}cZ5038J z2p`zrFW9=9{KO)IsH2jRLAvpE@nw*+47=AD*kQ0wgOA7{{w_?GmE&cQ^F0~l%+WH) zVI_l1pl8L3yBCexNrGm(3QKJhL9-h-A5YNiR$LM(j6O}!L_j$cIb~Qzk^3Kfs+>ah zT#Q=21Sn~yO6WmO8etJm;uaC4h$SIUM2s1h6Ms5iWR*E*^86enx^CmC0{dvubq$4# zuP7(F7SfC{>KF;rzJb$V+V!SiQL*u*fY5}-Jx6kVp?A`I`gwA1lpuS8@cK!$CDDnrjSpcbfxxIz#ntE_L!_J zLF6?MA$wD>U2Tw`fWM%&m4D#ta2WV`g zZTHP<4g*zh@??vR^y;ZM8K&%~*{8S=aU}ak(zkI@lwAm}s(~6#vwW;2%?`KB&~6$Y+9oGj3~^CodQC?7nd3U_&Y*w(wnUD%M%RPB_}sNtDsc(dy$aFFn_rY7LF}x`RUv zglHSLk3nASca#$Q6U!b@&Q49L!Z3ZQQ}ku@B76&N)kSLE)NT_OCbbTIBB3Zv$1tTC zcx@DL6op|Tg%?*A7yGck*}DIRZr+&qUmjd=aB{>^#C{)jBGLk$J6Sm?EvL4>^~;|O zWyj(bpjV?urJm#$c7UU+&$FF~)3e zuiInTs-7igo+#S~-^QAyK3jni#CGO`d&jM&Uw9B@T4S4wG7s8}Ne@cYj;OZiP_GxyGBa+sHJEsD_0>tnXG+fYVz%7On50dQ_3^k`PL<6)XRR2)3i)y^%}Z|DsrLZ++JzHZJAC>BW2k;NM1=< z>-2GqVQJ}t3-uKjaVf-oq0s5YF{0w_9<*p@FD5@yoRzo)r%)V&i!Qaat`AN9uG7EG z1GK#t-zC2kjJcN!(W9>B3sP{w?qD#DNrl7j z)aW(XDfODSYxH~9a&hk-sp-l)YpA*CUAgU(+qH75p6*po<-u7QAu61P*PLd0)W`;dws$AvE)nd6S z;NcV!sH}AZ35^uLs^XZMO26VMa-}Mct)X6A+nT^3sQI>ILN%I71tG}D%wFeF*GNb0 zwFFq5KCpq=doHgL|Hre9XC!mJy9MQ%Qr;uHLQ0g?i%7wfX z<-EJ&UTAp5P`LpmjJdfS3M(J^IUgZ6%y|9FUH6R?xVupyXfXB zx+$u&YKV096X=-W?{CL=NLwuiV@q+RUGa4M(g1BscLP9od|pE9CaXbRzws>O!b|3P z{7O1`8R7AJpikD2g?h6c^}RZDaVDS5PUVlkjz&G2ERW9Sk5aKuVFWpwgYuNk{s+q! z9Ts*1OOh3cEt=tlY>U__I#Abn#4mq%!S_COdkwwa9|5`_IcTe&;wqPo)^&Oqyw1V2Wd$f zq)I|-$0Z6?p=jK^Zc>*R*$GCa{`53sPP!cV>1i{CQjSXSiwd#6csJch=wHsaJ<56 z$_!u7*a>}2&%4|wzSOXXsWJp77Wog!Cv%hgz^Mj8+lXECiUrnSehmdFI@ z&5~44mRcisaSllqHcKW+CO4kG@p4q{8*8hfMPvSXt(Nx}MN7{yo)bFBb||#;tc3O< zmFmAruuiD($52z*T&MJqre9IhO89(UJ0oBf^Nxjytu*%00FSr+Te(W(UVO|X6^*^^r!CA(32^& zJIHfYw$-0Lwrf!Bv*+)R*|*?9jss4Q51bg<+U9Yx9ko$K(&LivFP@ywS#4KBaPB%Y z&M^b&yN6D?V<&90&Tkr^{3aDZ7|Au;IS4&?K$krR|g~O>c?3rKaHQk@crA~25zMgm}&`8-8lI@TugU(s0wh|H1Cmx7v zlIH~%R6}+hE2NK)?dP?+-p&~dm@m{sJtn8=xzmXTwCo>M)$%b9XNWsh#l&vVM< zY6Vv&mz=)lZWzR$20ip8%5&8Ipm(=1?&op#`dm=YsMHF^&BiTWz6QGYw)9hf0)+x$ zJm3|Lp+_r`k?~2ayY9-JoN#ejGIY_&ax^u?tgt+>KMU% zsbg?;|HM$lDdb#!pJ7`XqEDHL4@j3dA!AZ%L14h|+Hh0u7@En>p)Pt+2 zx-pll%ZiX(8{Tz^Tt~g@sd63jt}Em^;aykB^_AZB0=d4%yIw5U^VPND9Od?U?^d=T zxxK-=ebm3b(YsYV5>IdPZZrPVo4wm^|MnK|w$Hy^;N9-$c3op0&=~Sn`6iIyq!j+M zIxB+yulNX-gSvo+3Z~_cyIHrE2R8&?^?lomv_BD%J+EJ3f@_DJq+)?-fa%v z{od`PKFr?rZgcS7=iO%fr|)^UIe5SC-S+uU_j|Vj?`(>VL_+0GSbx=$gX1wO;Ml>z z)CmM2aDFNU*t=iha=KhfS%qBiYsqf{6Lo8!EKw5ZrEf2t+JAn|55#_5+@&vG!&{N} z_4MzkZHcGl5et8$%Owv*J-z@YOtqx->;I;ubyz(|Eawby^*9$Yfp`DV&&9ZF**Av> zGc9o+<4y&Ge&GK3G^P7QSB*4KO$S)%OC0&)SNS6DB^h3@Ee*s7?S)K6O$@7{*U%K_q->$#U+* zq43%YVO_mxS-MtawhYhg^7~cdmg6)2`*3&vvz_jEjo3F&GSdt4@p=%S2LaBte>;GJ zdLz-gQz8Gzxoh1S6wS7mUW~qSW`%gR`#tDyQhpWBGyr?xfRxoTcf^Cpv9A zN+{7>H9bJT%GSeI*lsO2wk_|i1aSKh@%6SmdYL^eg+#|A&Dpv;UuQ zF79|n)^UHM-_P8SajikdH`#@kzq^|6NibR?zY<5y!jz3y5@{~9()U$aX`&gO)T2Be zUIm}I1f)h4HC5GWxu9Ty{HDlq*CZJigq~oBuD=BBBbhE@_Q&ogLG}W|79n9>V0VELcYZ*ubq>UJu?p){aTC!@*_xc>^0=lU{6 zZ+=g(A9_*M|79O(T+tj?nZCe!TUR zn=HKOf5eMfvQDb@m{XY{=raid1}@^`g0_HM(71Xu8pqgbYOB$!EZ`WuD(7lqHq@&q zrIw)Fl2`KLL`akQs4U|?E=?tIog&LM5p#k}GAo{QqMBRf&OJ;&Mn5=(A^45E51&sv zoeB}<10FIKaFvDA<+LVQ6>??}CQ9D9+DZq$X047-p3*+tA8%+A=#QD6i@-g@8txZ) zn1c7tf%8VI2;o@YlU1H`T3gL3Xh>y{KUZO)ZZE0P@1Vk~T~?&0ZV#pKs;|`O_iPQO z-Z>`aHI`n#0b5tP=$jZ$V+Ce+FnygCc};JXEaw`&x4FW6DSV%%kc1k?y?%-m{_2Fnu~N9=guXTpSUo!u!AX8$dSsCznV zP38Jb@-0&D%! zKAlulpn(!AJ-12$!~H&QaJR&L=D1f>h^L$o?Cp=wNLM71iMGYPT$q>IMZ%_Bj}M#5 zrXlpgQ1#Tl@`3wpsVCdiTsoUN0@;z6yR2~JmScDE)GdYVSe+~6TK@BTtk&BN)cW&M z{$!8x(w~Ko$R1F*BYU!Nd1JEgT`(}D_Un$}{4OOH*kQjW%KX-MXwh=+!;`L4vfwi7 zt*@%0FOC}@$g?i{QAlrnNEOWCwFB-i*2#=5xd*i$$T76pN?peG`EDmw;06uLnN#wd zfWd8rNm6V?+&L{b;ihl|UtFWc zy`b)1Z_NH2lHx8mhZ{2g{a_oWus*AYw#f9=Rh=|-$IV-Rivr3oUSwWmXOMiUpE^dE zgU=Y>@JR{YAcfoX^9xVnEInsF{Qu6F{Zh<+HRdFUd3awCk#oF0k(F?sl6MXpLqFRp zu(Owis8r%Uy^$)N>*&x>|HaWo!9<#wC|z6*QR@~G)Qz)XQqK~at7Zz5PedPa*ZBhS%zlEkKixN zc~7?P&~TM&ass9|(VXV`cxfYJGo4$Do%@28+7qJoI;2a^S0{YffoP=7Zyp2j(t&3D z?4eM7``tB99UOA53|QecR{BQV70K4O5|WeGDKw_hbncvBq!XI{#4D*R?h#MCNYskE z_*|qMduE8ZV%1<>$c2q1RHG*wBSkWsdBN;-ZNVTy zVu2NYx&P}UCT64qlFzoV)Cr_&?6Dk|Lmu+f-k=pZP@6Q<)yGVS zIKRq33~5VSpGcRU8cQ!dH6H=yzCT9om(BFTPf(wqddz5hFQgh3zfQl=uS!GGu3-mC zi7>~>0Eb7Nrt5y6!#^az^tZZ(nN~v`Ph_&+MPY*D5_;AKs)!Y{1Y|+*oa%04%;?ge z0T|+@Tla!fkBfXwarP;Q8e@r{dJLCivXhbin@<;(^3k!rhrNuo_SB>5dBA&qni{^U zqk$~`{^Wu8Z`iXqbv$)6UvHkr!}Ppw9>WUPI#aGI39BaW^yPHN?twY_;(~u8x-`?4 zEnoryemj)Un-St~;SB!l<{yUkyI&3Qr(24*VwlH%w1_hia2L=QAqL*s!SyzNB`fuI zdCq+gzht1^v6eE)NX@hUHZ-dNW-G%|>8ksg-A&xu!S=Cw(;omt9E+t>n1acZVJ_bV zl8sxBrKzwoZE1)@t@l$2EHecg#M-Fc1UHZbKymB;|U<01KR;@_0$ zFwqjYCFcwbIoAecNwNMKiWDtwr0RWC_2XizPNI(#TW!fkOTIHRm^Sl{iJ;ngmUUM5 zx?M&~AVfXMgC%t%-3@=GNAEzu6u%>jTl|O#3J@-RcRoh4vj*eoz*%xS(C&g*xVJyd zeynYBiXLh{xa2MbftJs)=vr`u>N0Gse{L{=t3%UIX~j%i#|$TAIEz`(>p3>()U+jl zj%z*5o9=twK;g}THrle-T=tOrr!k?uN~4$3XtYJqh!#kM+cLhN1>DH`Lk=&9C%a~} z6rE}xXxkf1ZD?%yTt!P+fAjG3Ks@QrYAO7J#J|(9v?^_>YASk_;a&l7{Qc%SPs5@1 z9P;h(2_X?nORHk`#%Dv^ChSgeRGsvp^)KSNZV3?`D_xO=c{2-^^j8V{bp%pkJ4923 zc8-h|&Lb*WkEBY2RmW`U^x+u@+ z%^Im)T2$*vB-dY&E?kM1)%kxkzygZ1W{_8q4Sc z>S$5tG`;B`xPqMPtsK2U7#*l?LGqldr=#LT1ghq-*>Zd7EW=)dx+WgC-%$JwtbQL0 z$hmg9-NT_K$PZ*z8@J}Nzgha0Y4^qK4{_wO;`$4`dAf80hiMeD!+xSFk7Og#N?s!= zoOSasV)wKH$UAP?cKHL%`|2+jUxrCB{e?C5Ui@7jkb^^5Z(_j725ck1gq-IPq}EO} z3i*rQM%Hx9hpV(qrENA@Nq z3IPouz}i(uV`x7L?d?vny{#u3>8afI08@R4PFMBst6I+d;qUT5nWu99l9 zV*XQemA!^~-b(${^(wj!QNas<47=-K8|il1S+y$jmb6c@V$qELHgnI%&kA0o_Kv|+ zIIpxc+#zA1B;N!9Z}081J6NVmVWQw?$Yd#tcCj@e-oYpfn@St0ijveKv_pN0lhZgx z>n=jNdIn=jS5lrWjwkzgYZB3x`NT*4o;R?#{Z7@l(n~&)W?Cq-v|}+1o!|!wZdP)9 zJh=#RoDId2S|T|gKQ|Ke^d>+;(n2NlCwk=+UjA{w;*pYA+hL4}gC$Ya8eD1w4HaFl zkyY=?5J!0$#qr3ldmgvK?<3a^#nSUiG3B$Kh>m-o zL~(saS6qK0u0{_B?!?|2CH zDiP{oydWf&SA+7Zy{$m7lSGn|hf%>ONir_km!Vs|Zwt02lH{Pe@hmj)^GZV~0p*A# z%brjwC|ryoCpNHC$NR{-skLFdbxuy&(&jI@QH9(uKv*@K!+L zSQBtaASUeGFvZ> zCC_Dt^3eGMAb1350>PmYGpEJ^U`GdsdtFZTK-%f~W0?*IPYWag3M2Sa21LJyN2rHw0x1=UeGZp6n2(hO3I~*%M-s z5A+8_KZVm|5Qp>|OG98|(9$N9M!-_NSV?fWbR=O#_krF}2g*B_3*%hWUn`9NH^TRlT9!DOZr*)ayE0brN=H%IN zzyiDCTpy%*Fuo|8SbJnD;-GVP$SyBUEb6)Z3FBT9PpQe3LFYTwhSo8e1(1PEhd6Fc z9?B{wVvQ2c1XU~DbgrKO42Y+a#-icPiADRRrT`_rs9P?f3X3xGR2DVRiN#pxiA7!N z1p%B#b+wEUUguO+Ni8S|LLvR&SdY>x3o7Tya&sy<0Tlj;{#|ur!FO)d)|ug6Nv1{s zD9lVLs4ycvg$dlsSVNO5Sv>np?Tu)<9L8dY8SY9f+VOwxyZ?H!)YTFslpG@dM%^#U z$d61QQM0OqVa`ZTIG?=QUxd65mN4Kc&h@vG(3Cl4Q*|m!W2_oL%)hG^n!?USHF$#A z3!J;}FtiL{nIttUs4~UWHk#UNbn13`eg|z$k7^xE1dEuSl*blrQ-J4znOL-4z~WJN z5NbzMqvwRHZIUXJ`P}5nNj|Xg083`#i?({81&E6>Qpty(3@ME(&nDzs6s6k7qKTWV-+PUTb?Z(LQL#?#y)2MNzxYus;fCqm+iXDs*K#d(*Iws=-FXe>JoZ4DARE;54$%ft4~{rgMAg z6gh}v0dSH62df*}I-rJV(a@ z6}pp$Yv0Ut;4(9OWM;bjYi9VMnVwdRGqC*?gZR1YgW#eOep!1te1zSU^)hJRU1(nq z1|Bie(nlMQM=o|z6ea47!B`=hWAD_Hwtmn zHX7lVW+2Z+!}u)SjY<1Er3U5Uwc1vQ$8`ILB@`h~d>jq0HMIRU;ND7mCe%70|AB1r2>))m5BYXCsU3t_ZVh^SIB{*CX zJ_LK)0&T~0lFUs794x3Cgk=U(;`~Z^y&ZbRDNDRiN|F($YY#%TjB|7q~6r6 z)wA@cCY(!5a}ipEOxs`})u$6970_Tr<-kl)?1|uFj@xRE>+U6sC(6#073sbQbPchE zn07Jr3^XKCzltB28WP%Bq-^~;@L9^&-z0Q1HCRxu!#<_Y{;xm50<9)Ci}lO9}f89Ot=vLv|E}bNUkp46;i19QHPLaOYS__=6egX$8V{Egq~)Pm}d+ zFGg#aPlQ+^@{<05*qKH65ZEa`QVsihoQ6M;zQvN`q+8O(sMZ@xE((~F&%}+DJl&I* zsGdom>>XBeh!4}TZNh8t`-&pt_Urf;Np~oDT{>xox5)!j>z|qCaPKfnw|bCE=@^%O z&&W5TKX8w5yEu@G9cC4>hA5w!R?$t)D!6N-g1Nr(9CVg(LY$Y#VHd(5a9nqOl$nYp zVdFDFD~ZzV`++!n>cDo9eu#<{=?A$2FBkzIw@RRpl_ovKh@y7)9q{n!2{(khqx8_Q znSw~)-M=64O~BG5&I!0Fiqs>YHlC%&-vnRNV_w++7Nk#qlCvBPhyU*ef^9+RP}HeD z8cUux@J7#|fp=B%pw@1o<3T3E!kj!rZ}!GWCn*4=W4u|&FHG$xilz*_;maAk7)=*0 z5?I27*#l8BE~X35k0l|@;SG{=(YbPvhD|4Sv#g%f;;^nm9Z_74Z~ohF_U2<+DHpTZ!sAH&J!AdYYT&`<-T-M(H1 zefIM>a+?llGhYqbfYFU5r?Z=y_KvWyEd#H|>|<@mlr)^&r*XsxUQ7FAW>z!q{q#u? zX)T=QUJtin;^`Z*!8c8NCz8=lVZ}%)kw{iC!9%dJ%n$3bYgYP>y1ejyw1S0kdvnyD zq*~lEAd~C@G7Ew#qZY2qhpOQ$DU#L|Bs0Qu;BeC(9N3wj@LfJZ^UPX_VOP6+<6Wn6 zkX3usUPlrrQ^@5GZyai8-l5o<9gJaTEV*RA%%N#-5u6I|ly*Gc4iY*)k*pp>G=vzo z8DWxXEIyEko7vt{mcI9Q78aIB&|qa!2>!Q-bOcR2?VYF2n5yd7iD<% zT91KV%4}SWGNNrze3>9g*&b2A5{KCcy5=E&i;;h^5GH<0c~cTcFA=Lgzf1EF82P=O zAjiCH_4~)GOIEcV%I9=QQMaw-xp@DkW1LI`SxHZ5gow5yf$KkSLldPxlnJ)!O~0iY z{u%}PieGYtI$tadV&cKVU@DhZvyvc$yW*8a`nt9jF$o|&dL{v!tGhUwCLPZc9XP7= zALIOE7q*y~0HTo%_0bvW_&Agt>v_sUj05s0UmkryJxXN?j(f_d7>oH;FLQxp~BlQJ-Dp!{*OPZ+$%5I*!mH7(1m-5o&t&~|%}EBv zgY2EMF~}O!GU-B&mTnsy$LV-vH_=yq4h2Tp`pZ=`Px_g>M)s&j+G44_fq`x2#6#h( z8vB&E_I4ujVcnymA}v<^kWb5`v3mOOn@^-Y`nS9~0C^|=s$>rjb__!}m}*eD>S3)_H-!pR>qG8on(0ZRA)TwkP}kc)0KYmp2W8MY~K@+WK) z!YM5$M)cn6<9MhFG9sOVZjg<%}fn^!~kvLEsXID?EVrbp>k+b8+5 z(|U_X+b&j$zu~|r&hWO?>U#=&W%a?=qI$_bHhibpxaIh!HUBGP;hEm#@Gu&Imu|x$ zo5i*<8flN}bMeuIkb_-)`3M)W@Y+~1BR8>dn=o0a@9}R%% z&wIm`|K*%_X20VoqEwLo18 z7RUv^3+2}sdbo5ezcGi*;#>G*pLQSx1 zyD#B(Cid-4cLrDNYPe(1(P({=v>xGvNeSx#FT5=HtuL#b@-0#rLw*pKASy4G%F^S- z+$@os7_R3k*LtJe@t=4`;g$ju)#4T8xj#90a7dVMMm(MELLR%zD5H&XsUr_?fz(_7 z4LShT+$V(sp9)Lj`Uz%c*zzv&xFrCv?CCfmk%S+<0M9>qJq#W+54Z}&OH16zf5^R- zF7jG*0;t+a>Dm0g-y#tUq{&e&rp@U=acn}hRZM%ta*Q;Ij?-&$>px19g{2A90U;9O z2>m93jkUaAc)^%%?UW`i_{{fL^S;&D$r>H%|AN21NJ!+(qxeVtVGA>-LPVAc2=I|Q zod`D>d?+5-zqD6%H8nI;`{2ljaKiFYV`S`K=0iC@DZvqUt~5+@VZnvv#1wmgcuN4` zy;fL?)RFztF#Qm>%dVq5P9r_KXY?arGF>nZYsqVLN9iPekZy z^im)w_T)i+W9XA%;ziDqgcJ$OIZr&KG2@$336tCnA@^vRJl#?EzOeuD7J+#3pVe6r z^nXMCZ?XSdBEM1R3KP>vX(QKy0F%Uu-y-Mfdizk!xk3nm-lS1vIJZg5MtRIHlP1~uACcRn5fmHiB*IZ1XX zB8x(cAAD8N;s-&&@d_T~35LpzB{w3TbM1dUw^KA9tPNYvDNa4IL2YS8JXwRYB6KWX zP{PUv>uxWtN)4T-ul(c`Sl5|_KHU)@+H1+GskwG%YVf@J_bdkwpJWgdAHHXIz9P}2 z7KXbv8hVBkLV(X}d{eat8?{>0gk*KP&g7J`3i8cP!Cp1Bb^!zy5Ec^<>p4&%Xi&id zq;;j)Z$l>i@5i0*htOKP)26~0OO)vxp5aFh_{@k~-zOSXZBfuR3S&0Sbm1h8u;q_)Yu@Ee7flf?e^n(I+s4=_6w(ie)bpzRfVa;W9s)O zoRAz1fnQREsJ0RXtXo_`o+=8Zb_Wdmx{~4fj)m-Ye|QH@7#@loHJ@6l4?cfZsf5Vc z2Uy9>E87O)jn1qp;$D!-A8w~n=qm0=YYS=I7gnID4n&KInh9V@5vI({k1aH*XvEEsU*u+2_2mNy-S> zriX_{#_NVJ=Z01RLY_3PE*V#`j7z;7FE~w%T7WH#vYq^zPnDmGK0az+S6zYYyxw#l zqarU)?U|o48qWPN1OM)#NfBiOu z7ldPQowF+BH%EwLo>ySDid|)-J&EsuAD$J;X4rSaTebNhA;1m57n`eo;W3nqJjkLc@Vvw*yV=wzi|`jrB3+Qv~s?XwCWF!NP|=NmBqMkCvn z?TrgQEb#F>QGii)qale+!W+??&(NQmGC|u5eE=ao0U?%*pn2{2Aayln5d;%SRt2hy z4cyzFjzRS{Ri^L;mCkgnS=d7VF@>sgMR6n@gj zwQ@d_o5PXPuTg3^S3p4_|B8Udg@888Sr4()tf|^FWZWFey4()$M-WzI5s!@WZnZtD zkfIVOaPt;sHOKXIR)iQo42X)}p?RB(H$3%TwCq{MF=y6PeoO2v=zD~xT28X5p$6H# zej`=cLmQGSM4E|y8Z`TKvSg#7eaHW=a2v?PpYhke5*#;zb|>EUV0fOeQS1w?AgHgYe0m>obuG_AErsS<|y$ z?{&@66GvX=zaKAtt`r{W%~ z3d64nV~&Mxt;$*uv)A_j=GkJp=l=TbgG1RLF{MDMgdg9(^zR2m`LwV94>)b_$nF)< zB<19M}L(o?8w4hOb5LMdXOPxXVLpl)%T>{g$KDWkEgA|3h6D?6Z@Au$c@n+DQrojg&le^5PGHsJ~y=$~W z-iyn3t|^unuqKHEC0AnYb)x9n$xWQdx3cxJ7zoR+$YU492eN4`Pwe*I!>Qd`WxD7) zQD@33j)}T&m$96zvqKG3N&ki_=__S4?iMm0dOOgn)UpYDi-K5Z7rYf~zt<6L8T zpLBs!D6--ek!zRl$`=XkUuNB=h40IOlbzowTZ5^eq(YsHwXJwt}B|M5cvVvJwtkD*5wWFp92cBb6i?qY#Yk76wJ2=G0&ArcQw{y0 z4hvh}Lv2QIqu#Vr&2YZH;x#26-uXS8eA;436eRnx$BM3XCkN$j&J)Wla`IkGvb!nR zhr#g!LgrsB@%Sf-CA=O@O@3D0< zpWgy>rkMaS6Vf}}#EwVtk@=K4d@Mmi1RucRBXiS5Kj&=qNN+rSjRJB!!s&hwwMT=! zdeiSg5?N3y9uaKO@4RVBR8kb&xz|b_G1~U#dl2Q22z_y{*ck%~@B-_Yc0hsI@8AC# z&Ig9!EQmA;&U({6Fcah8-1LN>N1d~P;WfZ;H`)3~rf8D#1uK@G?xGS-7=ZiJ>tV=G z|BgBW?;;=G`MrGt?=!QG;J%{IwEn$v_Ogo9vgt%KM)Qc>M47q=LZ|TbeA#jYPm5aP z5d`^%+GE;FF>P%;@*a)?MzCFPdJNJdIGh?hLti20Wk3gZvTg0K&9KGlX-#ty0fA^$vJ%GVGtRhPU}Tdz8Yxe+eIs~XLIM_i<2n#67dSI2v!mWr4Z!+Y$fb3 z8|zIKif-Qc^FaUShvf%aI?E36wk%&oJ-6yjFYu0upY+5{f_?Qnh#0!Mf1AQfZ?`BO zeqZeuPqAO~pH` zUsHV-3?{C2fVUvA5-asSF{~=6R^=xNO4mu8(=d1ERo>X3-${#tYoFh+}&Zd*fJ#@UoE0+M) z+$Yp@&Xe-h6jjP}&g4$^{dZuU<4!{D`zjsJ@V@^NPe%6rO7`5qm4MCPm)ZOQWA+&Q zXKp=9bE|ntScpu2;VPehXg;x>rvhivj?C5TMruz(_Bq-hXphL16>PH=#9yn8fel71 zyzCFSNz5QXZb#jo>}I+h!{{P)y?Xh$y#*j@R1$x;?R9SUNh;0IUkIGq=3baR2KAbu z|0OV6Ze9>(-){HvGU`ti=G%oUm^{KTyX*F6zapK_WM@Gcg{Kyt^t9~Hw;%NJ{&;U9 zkKa=%DG7D>e#x_wU};Fw;$FfF&xu+H_L1Xg+)GFmqKG1j?GL6LSAbNz@6H(toKUXV=!F_KueZh}iqOI$peaQ~j4H zMGeV($axM%1lOYaOL9%St7*e%F((x3FJvy8S-f-y91`cKyN_-=h>51pV;;qCvV(jM zu)~9nu&Q<2j(_G!AjjEHMEKDjv-b?EF8>^d1N)>b@S-tCMP77FGZ5a?wG z`_HIZ#f3B0)LxG4ub+ldqQr$I#5+hy2#0t#<<9<#YQ1jrrwA@JtE9nSNrUzVafMFL z2a{#vH{gCS9m$UG(Ivq9T|;uYtbmC`#lX%)eY^yPG2v@r?fEz@bVTH)wln_VWze?gk`}debuem*lCK_i@LI%|oIl zi{1t&&_dFb+PQ|^;lOxvL}CAh#L$WD-us zL9*Am|G3N77Jw_3^2ei-VtidM`5?d zt&0*<3^!#vFc+(&`_J(mAqwt`%A8t6taBE?(l)-#bo#$Wid)R{H20Dg`Fdd~=-wjv zR6*Qx8<&uRuK6tLud5JW;F-m0Q-ql~2t=WTeE>CZt85wN&vq9`QV}wun82$^$s4hz9b=u4U$R}vi-NOj^ za!Tn`Iid%@)dRGd5P%uvL`*p4rKF^?Gl}%PkcNB)p%BS{4i)~CPR%y-7m7ZI3p__* zzGbHG$(J~wsS0Fe_%0umbCoB}Nf&<2O}#2;@j*QKAzpu!hTQLaC2~{j-tOH1Z@Hi3 z&f}ii^n*n}lTupJ`wrpafl1zk1*-UVU@Rdmm_J%4((71q9hs)`0{!QY$R`4fSgI3d z^h3RA004W5vBofHr9tCBi@>G&)0s$T0|{^NF;N(P3SS?!90q#5TYovY{;j_pw)waI za@gSC`pe;YZhdOm}2vvEF(+^XSbqXDwy)l^aBI z8$Hq2Q;4pCa7chdXoDz*J^dj1~9u>b}PO41zJ%c#Yy*r8arQU6nZ%*wKAVf2Bp)a zS<&_p6WbEVmxF+(2_i*08v2!EO#+XJV*TljH5j1F;i~#2Pe+A2hi@rDT!V?`8`$(} z(BSARe#Cr>P1>U7?WNz~FCGw>DkFRJ)?%KKqNdce_h2?#FZdKA^jcK-Qw5<6+f7eE z9O%b$^Yuu7{oF`)={fzDC#SU(!%~?XN-{n2QvEbYGAK7~ES`(}mXFn+mNe5aQgN+| z!24l|Fp`Rv>Acs_70E99Vm!GmJ?#s2cS1W7ep%=rhKI}OWHPB2>*`!>FRsXZZH96fL0iR_4Dq7xKolHH&P+*EzX5%RFZZ(k;k6431au_Rj(|Gd|7dIm|xTD%wobm#LnaH>OKex5_U(vwTnTqzsL-u z*ot99Awehm`twW#M3jC+^Z65BhMUmS<~1nS@SE*grboIe^uJ$M(R5IccInaWl+~Y! zL#;S-QfTVYOq60tonl3{)U6RRK1ojbs%)7sNp4DJa$#^WO-@)NWhgELoOj01vkxOj z3dwu?eh)iKxL0Uawm#LtxgPcz{HxEGQ>Uki_UblSK9VOUrgUtB1a@QXM$n$Z7!-2V zqz1?8D@Y@n#~F_vYY^?GP}f&z6pDX*O66HwAH;U34Hb+ zY)6RxGf*Yz$6hVm9tNQgpK|Z{;6}m;j8E8s&)FMNyJ5&{$duFc5H)$EKh0@at93ZZ`RZgwLzgdaJ9f2|f?2|kH`R?OaFr5ABt zpLgnoCFl7u;Z7yKU1!f*L1+{E;A$suzXCpw;_f$6!fWDN@I7!3iV|l5kw%moIT>Eo z9k|ou)?uT`y5p%VFBQt##wy_CWvSRh|P8hx2ms9eZ$_dp@ri z_9^1vsPc!A&Lj|z4Af30k5A0`oV|_H7kfWJJEiT`pE5%Q2_PjL591`pSt+sF7-r6+VaVCY&p34q> z{DD1SZwS8KYubCeR82`?<@Pn z4DW++r`nWT!<&CO@Clu2*V<-)JXq4K4YFT}1-J2~MuKAQ?{68_f9OwDa6pU1unK$u zbGoq8efr-7#%q-mX-w9H#4DV%jZ5mGtotvGBUmI@mi-4XpZqn&ELyv(=Ww_?J3te; z$?kuqXHe_PzD1ENj}zC2k|kIlaztwK%6Z})^ca9~idIQBstYxeQ-F$7R9432;HlwU zJ1vSUtNz5z)5ZSKnxYWj`h;_5aooB1-xiX=Y&{qpRHRwZczS=xAGSf>mQ@0MY^-nP)m|Ev>>cl!@WCE`59<9=jRRYh>z(FO(QDt&QEaHk$huA7bfZV+f>3 z7e>YpJCrsw5>{PgtxmOJSr{pgyj*_}AH5-?uMAEXCd4Wat(hu=Dg`Fzdv<7%&3rA{Xi zXLI=UD{% zR)*YcIX^71#4(*$#GU0e)Gb!0q1sft5;uOshTpJJBDLdooBNZc9xHMsOR_U6jsRY6 zS4mf1=RH$)K&3a5!UYtP7+*8(ZxzRqFOr|py}XmL*wGS>C`AuQ3(m{{JI)9`;%kzr z9S@S#;_+#+ndJ7rZC9jgznJG1(x&BHQvx5^SJ@Ky4)3d1&X8BeVJ{u7@9z4MR~5PQ zE1LdPw-I?&Zwk@R%OeJ&5Abv$FBCu?vrs;eS zza%nUwvx4)B|bNRBEns?PK_zZnCdyS=q=T6C8o;zH+a1W(%H{jP6FG>_wp+7L7fP% zw`^G~wT5rk1R7q6C0`N%P4F5Ep_=)!tn*=Dp5?U@Vlb9%byC7rI=(HF%{HMM&`XCb%*#brcj=o1U@k0K!S48#fkDhlA|-XSLSwgP4x-9krQ=5VM`aVz;y7;83JKz`LNboF@I+4>2!dtPElr86A&jY?$OO^$lX08xp!eWNXnNxmcJs@~uIX+p524|SFh6b+ z#|f)gz>#76!-CHq#>H~x>t_r@HK>Lm9mr0j`H}T58feau*IU;?RTA6~5MGH8Q<;wn z5sPI-|2Vat*bWfEo?;!xG>*G!mH>}5?80=C-k;(`nulsnH#!xZI)!6n9T213QP%}l zh!U$+7`!s#&rn-IFhmPpm0-&YCSYZo#`0|mA!2`m`7bPp9I6XPoq5ejgBcX7SmX)r z%|KenJ8F}$csi0!21$qfF|gHOE4Gt{wE}Z8ISs1mg9TZF7K=ln(}j(|w*qE^*rf?w zGW%#mZ^!Gvh?JMAxm#HSOok!x2whc>aH229o$pRZ@#^bbQMe*4)Yqd;W?mENrTNFm zk(m#`WSYaB^k08!*0F>WUn>^~jOJPf)<1Cs-l8Gf$_K)52B-~H-#h9rGMu92aHx&V zn;Kr1Dr>2N*gjIF;dLwZets-6RQGFAl$H%)G+3tiE`^nagP)Cgf)*lCUoIa3jEc3Cv(;A+-!Ck z_56{0KcoGh;?Bgl{U#aUWFTkuU+Ur04fq{r#6OQCL5QiyEPa>NTKjdb>SjX&=>wGU zzv!xEkInHx!Ez3T&|5@dUC|<^kB}LytciamHNy8<#kjI5tNku;bQqq2t)D1zzsVqiZ zeegk$HQ~%Ah3-`oB0WoIC$PX61r<0*x2bU_lz%j7T`l~h+aw|Y|LVO7hXipJo;?zf zc_$qCZEcBy(-I`aPS~@_yR5%fNoY)$nVyf&bS9C^;4?i9s@J} z*|=-s> zeYC!Y-pA~#MnNashK#}H5g6CjS4`R=rc}|Rn1lAXQt?P}2Omp-EMc!W^p<6a@2QFD zcVf-GY65YvYtgn<2D75%8kt{acfAt>_`Rt^=jg41_c3R@(do12&Z%@%T5OLeuL{Ns z#v8UVp=`Z03zY95$bY;MG@dz!*Vv<$Mq}VO?(+7A96qAB%J~zHimX>;rl*SPePDq}U9if#$Bc-eJ~HM|BG z{}P`pXsrC zIBMXAhw-5{zcSBOf@5amU%goZgB&dkhD%Gv2j(~yBCSD=76T~EnzsqQBnzgpv~rcl z3_`bi%R15Kyv5C%u<_4e%!_UiM4`a}Z&`^`*uda_+V9(`{kF~TTd)0=?kvIy^|l5& zG)u-pdwuN5&S93(foisIpmA$t8QT|iSQB7L444Y`fD!B;^R|jL5?<$(89;ECC}z=t z4#a8$6C#`>B9C3>dq9lz zcb0@(u~7>eqr|2(Yx1<$JGl5YYZ0Fkf0y+vef(?x#4y&*4cjdvg_gCD>-E+N~57LJu`AqdTp6F3^RmW@@V#X*wJ#-v;~hV7CAi_Iy**+z%V z>)!Xr?%LmO@BEA!g3jI56&tf3ORkMZ%{u{Ox>adx3E|iU5RTZHy1NAJF|()c=v16yOMAs0Fr`xj-1!^Rc?5i^@a z(QIn~;x*eSF(4sCDBXhI^4Le`g?t+#_i~w(SRQ#Ob^8^uZxnKC9M?ax9tk1D209GQ z294c86SZ9?rHz0g2w@#-23c=q!mfhsiiGUc3H^OFjn=kbr!_5`+q9-@8i60&MT5Jb zBW_2vt64rE_?c&yFK974d^Ls4j(}%6(6)P+9*xIQxq&-wW1Dyi+pmznSkR^Pca<~u zF@7UXj|K}o=JW!g%stwy$@Dn>UD|fWpL0gs>G_uivb&hCpK;gzOucH{XQ8U)T>lFc z7vp)K-`*UZ+wu$8ZfWxN#c_>?8u8OH=Y%Kzsc-c%N)?xu3OjN0XmpV~%9z;g*ss z18>!Ah|gk&&D62i6)u2jjeSXpSE`DG8_jVR(|B#pxX)nY+>BWoDColUaQ)N)XktI3 zb8A6MWibKFQNz$PyB=6Ikq(mmicWvu6M;;1A)9S8_~Cg1O;2rc^(&iJ`0%Bt$6lsY}RZGA+X1$ zB2QkoOv%B<9;^+leae)-MG@<*((lHu+6yJx3|qum)OcCsW5z_5;w$-w(wAj z!U+>lzvPI57~`x<9W~SBzrtjaEBejyX0PbBHul>nHkFj@$P)`iq>_Eg-XEjra$bnr zY$Y<@`&;Yf-8P%s1a~zmimYXlB)cHWlhjmEY`sWQQ^jdwtq_FW1ZCQ4uU}d$-WJ}r zX8uJyfhhfnZd5RQ%dH4WJQp-})fL4DvjjTxi5*H_dDD=A+UsMAm3HpS+Mr{6v&p(# z8isvI!?;c;=arTEO~+bjlXVUWT%pM$ykDUXF#44!< zo%1^ek1Nz-uLzqo$Dq2rsQ%v5ah`Ov3=N%KT5-BZb+|$H^&rFMPsvI)-<+ysid#wG zA`i8Av{`aq<vc`=_Rr7gtsa34x2el=o`0CZ@{gQocxQxVc;T%{Qg> zKUF@L^7s%aPnGXM`Esp6u7IYu|5RG}3sdELP`(Eq+*0Lxs=+pn?pD4kt$e5GL}d^I z7xkokPi>Zj)no+o;-By!(|GZXO3mIN_Ve+jdPR2j3+cTn_M zt0>Cmx!VB?`3Vn#RmUA3?co+?H@jnT(pS%{aO;ut8R`lf9C&i!5%a96{0^kz*SpYw zEVnDR4H0eIT`U@QYj+XF@`4AlQCwBMr$>iu$co%a5mSm>!IeN1sT-`b&LSAPJUo3l zG1+6e({m(jpI0Q}tadN!q9_{eEkE1C0DO|bDAr^13H&3n{sJY@#riZ4qJw37_c_XU zr6REN+uC?LK~QAdLx!u66kCY{rQLNst!_aDI@0uRRM#pybK8NrAaYFDtj~f`S*4fl zarEy*)x)dldwd?jjX31Yy7kr(z=FNPVj#fz=gk7h+&vB;i50W0#EWcM6r2I$BXVs1 zJ~{4pbI>)cCe!pUF1(T|@QUKAe&{%w%!-Twec}DE0nWnuTdPV1b$tetU{zlR_S$m? z@GSpG?zf%f%k5+@&+^YYx$5h#rMY=hnT^#&vsHVE9nzHgcToI@qBspde*|4=_%Y`1 z&A`vgd`{sf@i&E^`E;A!2c`E-yVLOV2H(^1vxv*=R<)bsu=q*Bs|K@_!8|?8uqMFt5G zou`|#g?8*V<9AKR!t~^NH3sYdn%Upg7trn$+U-8_-NwUh?{wPxzG|-@^twDUP<-bM za2ndbai60HwkCILXOgsYx6Fg9xe6G-+4H^ z*}X}_pK8xfd$-WuWoGe4xvqPaHRN}DyNGA1j1nu+?R-zpUloV)YiHyHw8?C zpfk%d|B{K%==s2N`hOFiGU-2Ziwn-i_s;c?JB0;t^aJfd6sInw?gI@9psc3u5u z;`>JFe_DIJ7|RQ=CSEER0j~|E;mOVKwjVXwL9K9_IJ!5-H%W5ake$-&zbnC z;v%cn;~U{q=j|L2ntfKW>9qQcgt1h;Vg36ryAj`VUnfnPPMw)&_Gcpf`PJ7c`U&Ya z4;?(JVDeCwkBO_M0>7R!Dz9@`o+omKHvc|6ULm~v46j)HJos~dxN6k8si4=gULDS0 zi+q0oJ|21@vtK3-QLMB7-5u|l@ck6{_Uui;hed(n@d97)K={rL489L;k~JC6OZV*p zw4l*~aWf|=-eoe)k79aUkOZ=x3C|EunBxj8Kk&<*}m1^%UY7fs7a zx%zv~&sr!5&;kzq*=7|7@6Qy3ZkNaWpZAAz@^9atYyK;9JjM*9Kb>FxxB7FJ(9^TK zQ+?sU<=fKJgF;X2K%pi1-zM~Q1SbWT%Dc(CEg7U?xn9s~J^rUm_#Z;mV_ldIze`F7 z;Wvu@Y1qa6|0(^OeHeI0{tv>-e8qZ8iChj}JpkUp z-QYb>;9axrTfv*0ua9!`z{TWFHQkulGKeiSNm0 z0spb-@T+y4X`gtR{fo@onin{}DKJO&L+c(WZEfACaq}th_(AAL)~kh`slNHs=>38W zUc@n4bfX6j`O8oV^c5^ z5K+>S^HPh-8j}g@$UF|~xRK_GO!CXg#wJc>c6*NF+UfpiOHWj;{+AKvvM^3>B?6vb z3$&o4^GBEEb+*>~v0As^3Obiy0PemO)qhehZvpeZ4$7JjZsaf5XbW0DD)jg2@b_ww z$?wvlSWaZTTYr5f6A#Y~01ub356sA!l1G(1HJZL3kByc~d#9)RJ^8eZKCAT?%DQhE zU?ssg$T~Zq8yu$!97{0(PtKe}%-<03{Oqd~Jow0KQgSh5L_LE?7fe1b4Xn}V(?=d9 zpy{C6fy&m~SWnH(#K+@j0LR4#z>%@u+$H$vo!0)hz{lFd;NygDa2zdg%>V2g@j<+8 zJJfVJn@)p(H%r3!sh6F@SUooMwjByNTZH>#jIA~eWi7s|3#J^aS1lqcjx8?@%QMSm zKGlo@Ddo-)i#jh=qmWFgo^9Rx$4op;<_ya^)`c&b)7Af=bRR^I#qNEG{93O(y0;5s zsVzE(X+t<_64NUV>kJt-Ir|Y604Moz>%P_OKaEx(*BYjvQj#P0LF(*f0&lzw@uSln z(4d?`nYJ(ez$s8U+4w&Mi-kKSN`M?2?$8SQWJ3_d{P26)5=ANfw*M6|_a=bxaiW{R zR5jr1h+Kpxr&HP}$?W)!t+L;}=RVQB^zhb~VyPe8AL8FQAF!hNtO#@``PD6)gSzmQ9fn_-N*qtJtAoj__dcBo&*amE{=X$W zr+}|@U!>siIq-1k?=)(i(5?QXrT+O=T7T8J9h^IM-~UQ`x1_gc)?1?Ib(e+mEbFC zz#QeRtXe)YmcLA!`Pg$%Fy`gx<#qw4Ugf=y8#P@Uk$0?XewT^QF~#(wlK|x^fDcp6 z-F4dYkIN6Ey@_~IUoP+238J|>`g3e7M|%>>)8G3h7N+=@HU z!BHh}^Z<@;(|?g)RwOdoFLCf+gec=qndp#}SrP7#e3Yx_%-+a6vhVS?q|cwt_{2-+ zlj~0bj@pmA!;#s4X@BH@ul)={fR9vlYyTQ)fB)w0?dxW4d<(Ouyx<`F_q&8&E!>)- z2cPy*y(|>Tj%HbVf0NnI9YwVBDD512+z(EF(%wkbUcORxx_ZtjuO#(eX1DgD(%$Lm z?YUK}-%R{U{afKb2s|0}cRrG=e?YhTPnG(Yew5aq!_@yXRlj|>fK6omoJ@SZ@#{={ zEjpR{tN(-g&q%8ueQkYnX8n`8)n6s`_eih*p!3k}RQ$OI_PS?Fk`{mb;eF}v8TVyw z(E1WUQR~ZP#(>1A809zKB<82Fh%hl62x&8`z04&9#^1D6VxaYK3vR9&?;$N5yP(RF zW4xkA;8J7U@pxm@Oy4#|c|xO~T7+bW0A_DN6DjA{k9@rx-;UTq;1k zigs~8`We!i9j)M&eqVQCW!3ns$Zv)fF5QT&0r#nQ4c6{IlG4$=1zK}14~^>=h;kM8 zM7S~7s$IT_yH{sj%W#u|uY+UN8&M$xvaA}k1CCM{Y9Bm;Vw3K5JRL-+F)%qv? zjM{mYSjbcH*)?$)i8wjBaU}`*#vK8bZQ?t;v6$TWc6C6zaWUCGBmsf;CsXl$HW3-{ zM)BM=9^1qlm+??e)$8~1{{#NxzWv7nq*4wtK^ zflIGc_PSWos|>lAQ+EC%8i5=;h>$dv@7=Rt>E{cuIldDFq_bMHk=T z8i4z+XA@ix$jodN0A+f?*IfzHvaHF!$mFY&j)(6Z`GI@#_>5D|KL30?DWAD^Qjq7^ zhHNe$=QpHa6U$LNK5UL(kE~{M$PE5Buzu)s9|H`x+~m6Kl7R7s)+qE~-8^Tn2pkKi zDNr|ADXTtF(0op$KYm34J4$}86%X~$%(a}gKapWu@O{#AF)@$6L) z$@jkwC(H7`#w-!e7(LFD^>PXP%Nhl~gfAMc)@kSNhh3d^(#EW;&PCZZqXT#mFX4Yt z*(yJKY`Ju^$$DYt-Y)!34L2_M6gU=Sd9t&Nv##OMIB^Mom*#HZFP2%02OfxTWgD9K z(`@UNoLybGxr_?`^%GBt@@1b_ij_)pH1jFl{5sZt6l<2aq__fKgkP%Vq`#|=W?s@5O zmiV3@$zI;e5o1f_`m$Bl%t?Fbc;pD_8ar)eKW6sXzCmd?&a}qAxli;LXC^-ffa=so zGwJCBf#&sfsdHPYsoFkIcM2+a(Eq42wKR|>>9G?dn~*x9LpHP48FUndhUNd&UTpuC z0N6bMyP3=6t=3RZ8d0|Rae0Rz(9v>L$t}kmv($>uDS=WPEVw+nV%< z(jO$12UXvZ^&hzXuY$PlWwH*EY7@Hix4Sdf&__oJNX zn<8)F6WJksZRSh>#Reyj2^Xq*U)kVj4Zl**w^^$mbI46=Q29*n1~oJz)mTaY_sCd? z_Fmz|?MMKOy`bt~=&T2R3Z!am#)(q!I>HRuV>Bv*XJlEMAI$9M`hN7Y_MdJ))fSp@ zwELNO#ob>st{WKFhrvo}T>m2Ds?C2^4eQTfrS7mgL?eSLa7$QE9NXnyL1{))jj97Z z!(GH6mslrEa|Tyy9xN0G8oCegFYu=+ox5YS8sQC$Fy1vKJhxJ2yNF4S@Z2qo@V^+T z)VPVYoEo>x{YM$h>6Q;t%xQFpO*E=L1|ovJ{-}Xv%ey+9X{{I)=YK!X#N$I;Ft9FM zGsLjj_ z!AnFa0`B`t|n^TOVbB_5(pkE@?J>sIn=yhBkc$u&x^~I&mW3v{iDEje0qH^Q&QqzJvoinMBu}#i4bZvf<@D(vMbhI1JvH-iIV}l&t!s9@fmk1wO zeV4;W>aMkCTXK=I<%?MElYnh{f5GxMOJo*nWlUMdod_ZrssVzJ+gD}IN!vM{KOmC==ptx2>3S*6y0jdpr`V>^O>kyi$agOfXi4yJ}pJJg3u5BM#Sg`pm3 zY{oHH;G%yVosBg6qe$V3_+rvJbEm(@kVH;sTt0O~h|`cLlBCSq_?nAdJ2lD~WReI2 zm{YE?UVT6z9Uo(k1RtFpnRrhY%8-Yg)C>+G_)<2nI@GGz!hg|oGq(X` zAe^5{?Jw8&v)A9)1+~PHj&9_VhbMU4=hhq+OY#_GMI>Q+(C(GR84^9_=668uj89Z> za>Kj9KVwPGK&t&gfy}dkAgy@45)9?FNJ6-kSU=+6E{rKH65;nKEvzJ#d)Ab%yR5vI z#M-t`Upv)0uFkR7gcHhWEV4$JnRD}!KH%h|x81$cJ83;m%GZh;+zlkpu90ES-)P$} zBJ^MB`?)$)xIAncj)oMi4jR&nJ9BRZ0R=U9SLpK)Pb19yC*_LQEw<|P=b}0_dlUNF z%Hgn6T-HY}L0wdn8{M?i=q-bpIv0EBXPGdY`M`X(3$vSdc651OvZU}K@O7qjC1pYU zHo6Is{aH$W^_DI3Cw`gMSso8uuNS_1@b&r#S+AAdV)~M8C5%jZ+k6DA-A`*7l6JCR z-BS;2|030XKARal;`kNT#rd9fC+t6|V@>X7tx2?>u6M4I_IuF2Jzk1SAHx3l!1fnH zMwc<(Y3-{!8i4QxJU$%+TSnOg`#3L?ik zr{~tQr+=LSVm8BE%6Gz>{0?6Y>#b`6hcqu(VCd%yFuU3ADP$y8aDG0x8@%U9mNjk` z=<3k++DUw+!P~T2;1zS-RT1Ew0QkUbJsC{{)a6ff?{2<3{BXVX{7eO}U=4VC2rwZR zm<0Px%Opek_(pq?<#ad8w})5FXOTzOu@84Q%jxo{P2ULKSsC+qwaaIgRk!a!T2-?E?KB#n@4`VD>bM}o_Of~%zm4Bw0kz~X3%wVKkk}vXUKD- zWJz0%035JQGPIfh5cV4zx@M)KFfq%p&nHtda5nurqznw7mO93=fl}xHgVZ~lgK~M` zcOYCYb^dS5z<&aITLwPs7UXax18=pyn5JalI*5HsHyPO7bg;uIvcA6_B8e`}+;TbV z-K54$JXQ4sPd#ua>*6WBR7!u5o~lGg5tF|oI9{>boh}aue@vH;2WH5}zoeVU$3N=; z9Vz*E5vkVw8Q2a}T#!DjO*i4K-St7M&! zq!OL~flEtUbRL+wA4R;o!;zaq4N7jlBTa6;xCb5GL zkv8*>^c)PA(A=fw*iUR>xQ#?$*g@j3`XNPGkqB?Ump5cAS^n_Xy8~gPylEE!V2X>X z10dy{DNBLxtQlU&hzQkZ!U4<_dzaplXB0(4JYgVrKx^@oAw!b)!!Rw;v!miS3h_6CH6>}_Ls`O@4JlcePZs2x1rWu1%amf z#LV7Z6BHe%Q=J;8!QJ3JPvBj%BokhHEab0EpK8Y-n*@)Ge@yqgFFp3^_L5I zR?1$Dg;&UPEWJ?VsWq@im6U8rG4tny%m+oiGx(kYEsAC{i+kxQGdMA`vi*Dwo|{EE zE&7V|$gJNbIk)1)fB{hkEVkVz0cz{{f;&nqe+hEg&m6@TaSKV#m+YFH0pm-2s|g$% zZVULh>wNhlqG;4;{!(o9)|PgNHLQQyp_~?4)VfRabl_|w*=^D^m1$IQuOza#i-gE)8a^&x-zDsm<))Um0fWibbjZ zb>ojNJjTkfgm*+mftSnNW72@aVXb|UZ%%cF5Mkr<(r)clNPC~QWww{H=SiP0ivHd9 zRnvlxU!jd~=jXS=$EytMH{;{E>6!R=stY0*-VMIg5M_>!@QdDQ@En$3;IF4eoRlt? zb1(^8w&p%D2Xw$gpPAl&HC{(_gD*$m`$KCc{=NY|SKi94UY5k!f%ah9{j&HRVD6+f z%pkeDU6>$K*@cPfVw7zhrtHGJ%g{|t?WxU2lhwq1ejJao^_+^+Kc1S1YQ>4q4Qw{2 z_QG*_@eS36o=u(!WKjtdNbpkS9e9_e9+h?nX+2T~V`@HId+*I0uO0iq$D=LC!%C7( zWq0J^ZmEtP*fWk@*ptceOwsqX4C)0aW?dnDT4(Mt;IANZv~}dvj4cK8pS-1fboLV) ztZM;}{m&a*x|98n0Jr<^&R`{$%KoPt{O3uQHEtG{PS1AtE9vy0=7W+4l}1Eac^dBq z4P4TynW@bbehx%;EtTPRG(~&VC_X1D1MU9LC4(6iwLz%r-zej^DG?kM1KOl>=yXBk zEZ?ZSh?mV=B;dOvKav}4?5qpf>#eQN;7~X z>Hq6)|6dV*HSa0IFhbzPt)KkaRZk{sM#&^!Ui_=5R1};7Wc;V_NoV};?l%5=W&GVH z1b@l8Wd0=amrPB~6@|}q{-VwNwT-|Fx#!^U7_H%D(rlwN?fyS0{AC!XX$>-cI&-&E zrXX^T%x-&%r`fB?T$dTYW>{Wws@wYqkQAq&gTFSbKiz|VZU%9Dnj)Qh`85}RvLD?$ zwOjugU+Ymf%i-xKy}x%I2eFJ?EPb`@vre`8&%zH4c(Wer){ZIdoZYRR?(3Dvi+k9C zxb^w1C+gEw7GgIrxLdvFNxf@c&E#h(`bv%;8k_^h>n_<(|BUwBse0gk+RNBv?5AJ3 zD|0{n*WI*#1?~Tb`)RcvN&CGI**-E!YRua2(q_kX8U!JnMz zQ)1f^9*7^YFTI5gi@RRp|3od-0s99=+rvj9bZpOQ&uCK8}^w!o=|BvruS zv)xkNS>~Q++dABE6-VvwaK?k@T?AM<0hOP)tW`mnP^^f_kU9|?`W3AzZNL==-Ug`1 zybZvP^jlm9*u@b)NclDOq7T3&(*?KunMa8_{iXHctx6wo73fO9r8v7%$I$kb8g(e< zy55REO~67mPbSr*@PvHar;4j-Ru8O>UCMQ|!2av~Kjc6R&qVmY>T{N0bK}cwfY-X1 zvVSx7`<&drn>-M^YZ`}#zit6zRlC_8?dL4)k1|lddQ0u~pL&5W$-VwDc2DlK_xU64 zcF)45!cF(XVC_S6`+U_}d&^#TKfkYsyPt=RCfz18Z;`m&bFjN32b_c5jv|4-nKkuBRm)I`HwFdSsSw!IOOq^!Z5nk8|#N~`Q3)KyL6OY1Q59b}iEs2k< zn}c=pN^%TK#_8t%pB<+g*O+S+eyuQn|^Hm&=(&c z#ddc5F1rs-MK}*sDQHW_>&juHZV-U0YFJ)4$HNw^zc`HN3?;Yj-0Iolf6{2h871$v zU+QMIoiA%aE_I04MGU#ToVjER;>12j(i2-1@h1|te+}LI{~sPPt2!7w_IN-(c#yDbDhppuX|dhFM8N;D zxT$jX%lI{$cDC}=>CDrVpH5uY_Ik{F1AV1k-TDXSlmaY^}@}wdd+uUCCd>9mg?=4 z>Sbr^U(?s4k| zf3)i2j|WrhmC-#%)g~NDS59eVGcTB?oBoAIC6R28T#D==`J-$6#G-fn`yE*C(Nb?= z`UtM1-nLNA(e|*}HNJAR3{>eGcn!u~VE^OACvkLlznY7s>Vv}D?|^zSi2u=|?)CPg z-axO_cGWUdkN0Dk>+iLW>W``Uu3bIrUyAOcdydJNhsRKZJrBLv%IUC77+jgCby4gI z6ndC23Dj-&0F3Bp(9e;Fq95(h^rIax&IhF*?O^m%a0vP-IH2Bx(vJui-$Xxszkz=GX3$UH!_tqS zryKqJ53a}FZt{*dL*9{%WK!Nyi?O2X1(NQ{JC+kqXW;n+D2{fpmw0%fj`9IM)Q<;U~g?_zlV7?Cj? zLU*>!$p-!E4o-Z@ZI0fVZBBfF`$8^vzvjs4I?l$;i6w{=gXj{5_aZLQy4KKxj^mwH zoZ^dpOp#u7FPs$Lcw9Xf31T427BeBtQ3C;fVW#PFLjZr{M3PecRLuv9r&cb9Zu=Gc zUrkO3b^@IE`b*!etoj)4G~~OmC3`~jwejHa=~TUHK4jGE&~3kB#Za9ZU$-a3TLf37 z-r{rptse_VEvOj^%j=8$YxDn9y=p#`q{F)je!4i6GtORL?RtZ~w)kI_Igtdp_`6hH z5bX6ewfC(#MQTs-YtZ3Y5#6KagIdH{vKPpF5LfDND4doq`%*iK^<09){K6d%@hmMD z!HVFw{$7hgIldTo%Mxd-V~4KlPs;B$J?mBX$T%swb+~m;zwa}x@ob9Wle_T^enZiF z3mIJk#W$ec;9z(RJeR|z>-pyL-IcO6AhqTz-SG3!f~7s59l1d)13?|hHD6I%9;7pd z+UBU*a#U_ENM_AW&!-z#Qvlj}BE6oqYAeXr=&O*C61 zx^U`iu21dXY|HE-#b=GTh>!_L{S-aea>Qr9a*=Uxc;0ls|2N<NQtDjU^$meLf#FDr@cuzlKhE{hd=5*ub$R&69)r=Am}fyIfp zX6sdJtY2KkiYOk@gETS%RZl^k}Nf3@k<`_hj}6L;UBty3gW}nR0s%k z$4TrJb3hFXFf7KYnl z;#I(A99@#Z(2dA*Zi~>qtryxqzOyU7o;d(hwCAgx{we9v{RQ^LGp+Ki5LV`^NRuu} zccd%#N-?*;jeO)A@n68X{avT4)wAvT9_>~inlS4=yNH|pIE5Jpu4=x;&mqM*PhMC; zCv9=$uY6MesnsihSWl7?VlU*3W~Rho)2EWsi--t>7Rx>mfl`H6M+%et-kv|tKjzGz zN<4bY93kRIFwcD`BubD9Ak;pbs}2NiAkfb7iSw9$)@I^Ni0ran;!U7rBhJrPcAOtk zS-5e2UbDZ}eB{Iz5)cSHQO;=F?LVP1phxQ#Tzv_&L$ zKO%BY;)v?mkrT{{{@fNh8T~MASZ4w?@t`avMmfwy+F#HKw%aRY$&l0BB+tp1-{rys zjn!hO_(R>i2rKzC{O#7wx&rIgM+JXf=mE`p>2_CYpJRUyC%+#${z%xYE--5g526u5 zb{Ghds7W26jzQ2G)}!m;o_Dc?5JAUq6LHVXD~c)!z{xDXskkJZlZOB{L;^|X6@jG_A80)T~NB$dir7F zV?*5^rYUe08x44FFO2_<%yzqF%L7E7eqas>0rUD|;sR)mCNKU4qJ;5B_ne?L&*RC( zr=J_)4?KoYO{a$VC4`QI7%ou)WOu!guVeZ)-7Hba&WN8=$#kKR!n2KJghfA>Z`}=! zhp4Op18{sDHL;*)wcoe5_Dtep+NOTxX-5NusTG`pS{I-3Kf~B0Qen};V*y;|-4;ef zT`-cX0}J60VM5>1-6HH&a;`7NTK(qSY%yPoj1QSd1$|fJT;oH(cG*4oAp#wR&1|9! zTo8)&%d3n9@;tH2yFwm<64X?;(TGoiI?n6ysF`5Gci{raP_wSZnNO!<7A>!Gs%lUlOKn z^A4|u2f%|{0|^|}OWD*P5}pR+OK_C)pTUD$`Ng2x#*qV$(ilc}=hVXAGLW+sV3r6l z^uVUhgCb{)*0^)80tU`AjoQ-(t!()r$L#pJ!D^ZaD8@=>%XPe{Ado*)urcg$ZdX{T z%<0{IhAa>TDgh^CilDh9PjowyB*PDcu_c34Ube8`Mp0Ek8;CV^yL*LeCwhLjgra#~BTQdFQK&ch*Oa#)~iw%FiDoc>TM18W)ud&8< z#s5MBZsj6aAXDeX$MZ!^EXanXLlzAt(i^+U{}Is1V#cyn(-(b*TD8sr{`e?9b2Eq? z6qn1o)I7*2{(uxekIAU0GW7{6{3)MUvEskyYf`zwgCjqPbac@D&I8S=-!)&@`v-yD z=|f?<*pRGJf&faK0Ys2u1mys;iQsU=_Z~1Rj{s@YG@Nq<44vq00gt~BfAe30h}3px zc1~Z@&jP%vbx#f!iqVgH;y6P0jAkFvmt8xOOb=T>8zw|rh_GoQn~V%HB2-r*QRj4H zbRm)Fu-vLWHEj0Q3F}4xq0+XHiP+7)-_ybNKaWc6^*$t58e5#2YUaoKEfKOIp!h-= zJ0g!!CJnsVVbfnov!=hqPgFn*5{@kGF#F=K*YVFs=#lj7>@P+a2Ivw6IFuB7vZKj9 z^2lggPfcHmgH<}}=|~kJD?!v#?~G3@_a&mC1|Zan4kL(_!0YR% z8!mPGz(y5AK=`DV$f@za@F_{h&}n&o*yJQlC)6^+ffxb{Z(*!z?AuywJYf}_F1+Vo zy(hXSul75fmij#}iy#mveQ)(ff3LRao`SmGSgoD1mfY2|B}2B_H>5HY*0LDR_vfg+ zfSZh@5Lp)8Q&hW1zIk6RN~<$5FU5~M5;!RhgonjzWaNbSV)Dzr*R=aVCv>wH{ir#{ z?Ze0M@5_+c>uks)(FDtqpnvM`^(CNd&3^KzDhuOpQ{{p69hs_c3zC6bkfZG{HWW) z35m;HdSy;Ar4(V0$`elI*8XYS=hhyU+G!^7+mL4^Sny;ZJAR3iFY$3|{u^%?YpmJu zhMe<=bjeQDZ+zLhKSw5D>9&Azv|iOIhs&PHdCaRL2vF%xe&W3{57~J`c_ERdJ(rf4 zBbkL`3O%hz&)-8DN}GdO#-;WYL_3hIMC6f>(P1oeDyn(uAk(m-AkhT8us=71lIR*& zxN($}vawxuGw^)BY#*`8q2*zDT3>%*D2Fv#4$$+N&f%&Su9o5sU8w^jKH_*fd?R3l zN`}Y!Wx;uCk5xFv#(?loIj{~`jqnXARau31?o~DIa=lrCNkE`UE@AW2=*x2efY>Q- z)DCCn``V^o!rW!J%0ZJC6b|&86*mCI@%&y(CC%JIK$^SsCWOY7d)TyI-j>{~)l*g0 zg6Rw@1`2FjjG4Sknb-KOG{+3AG%p<#8{ZX(m3!=)cP%MN>!4!U3 z2oafhqGNP@;xY^21?^mA)tK=d852kzKN$2lc5QZHXkwOp4MkfD^k0T{?jhV)rEhJG zr88>0W6`7bjA6F1RqL$#&!8gC&8c@#NZ4rwcT&&)KmgZG?^=C8;9RlVFF%=gN&}24 ztu<8sNKQyX?X9YNzjN*z#k1(Fy`(spti2#?&R8J*6~?BUGhX1?UWnAAs#TlkAMff< z)p^|_g|!qjrAl@Ff@w>xC1;=Zp+kCxE9HOtgKEQP$(^zj&BxeKb@uUP``h%DC~W+s1l==G|fLfx@DJMx;JKS6>OB>EL$f7sF8^Eea7w9?@-M2&psA?Oo}vSd(BA*KyS0_8diOftxZcpWp}2!OBvZQ+%(bC-BPrISpTi*$ZHur# zt3-KoD*ijHQxXzN>C4KhC8S!f1ko~K@m(aJPTvVj-rE)F!uNt$e`#{V`Rt&1 zYcVVI=QX%Bw!pbud9v;JWW8;-?^{XJlIMMu+f8MIA*qq2Kw#Zi=`<91DUBaERvwa} z0DkYdb$3Spfb+ERDGz@3U;=RqjqK2B2kPb>>~+Q4UF}pf5C6y*<$QOPyVj(JSVrQl zjB&=#+|p89$=%x8eZ0>sP7NT@cx3?FRmw)1x87x}4j8~2@UoE_z&#ad19&qL(hoU+ zUw!ng2k@Cw9lUBywZM`#i038;(U%;=V4A-&HJsy9+6az&+>vv~bLBzD^A#DcpI_>Z z=ko_2&vNz%n6PF1%QzpM@!2l`SlFhJ;|)Bs?&2P3wY*M{SAOr1Ur8vJ2Yz+=m4s1F z!g%?WW4x)>S*WZ~lCT;zl|y`fbLJerajX})TANi!O4Q1RsI{5>)z`~QBo6PxXr)5t z2-d9;1#%m*B`@(ESH6)|iUi*Z?tOrhurF)cXIQ&h4c7|0(Hh?&F%-Lelr?6s-4lPi zY7#i;%gkl`KqWI@kk{BunR%GugbC_;gKUrog<>P7imsP?#8d`X%Rol(_>t}fqFtzoe0sDcR- zM6KZ(-U;QX&5H0K880GZ&>T_XHxzhAs|XRzQ~4S)uPiTX5mjAz7RoJFY%fvUwT7v* zG`P0}Dn&^Zh9_}kOLR*@6VIG0t+Ra}XdQiuP=|~}<9rg+Mq-pUOT5LoBk`d6YLCP| z)oR8_^tIOqcN|tmZk93FCS#CwjUc9Gtj_a0zQdv4t|#Q;b*nXcBfHaw5k6J_1UFZ! zmwEuguf|>QQL&eru~>*SW0D~EGceNZi6c>=Efw@%BZOeilf2>ut)Jhs*x&kfHplH@ z&nF>6eNfVn6k9U_X>42Tu57k~9!vMF)nb>b@@mk<2i{lKgCD{H%vnM~wk@?aI{@8- z+^K53agoNjDU65A%k>K6MA@4T@UGOFKBW-UX9LqxdzS1A^w{XU5K`61SlCktG8)K3 zeL150<7`M})_p5#KBw{cbShVRU4QiNbI1n0w1J#B_t))oMN9J}X%&Cc=D!WG6<|C< z?TY@T8D~~NI0$&Vtks!yU9T*NqL}Rxe#@-BhmH5NzvJyP#*? zx3l&lX5TBr!co)ARxy=pBY;Nv}GE#O8 zTEp*o3{_1j!8*1n#W%k%g% z3S~`8k;p*R+B?g1wg8`y+G^ktcJf*RN$i(oR_EG(I8>c;>&iUw(Yi)!{uwZNRtc%w ziP^q2wRfi{AvSx zZQ873c#C;YpzQ&)?WRx16-A(RSHiJl8c>4U;DY2w6iqv#3D4v$Wu4)w#AUG|a&rwm z(r@NU0}a3DZ)L1{R47(EmC=RwJ@4hSEDVi{c?y|FR^}j5As?SuXnx+qidy{ zQA@1k%ZjW~p9zN=ULG==TS&);$z1Dw#kEKi*JU47#+skz3)6!OesleXYF&_0L@EpQ z{qohaj+coLDdK=69J{G_R2T{Tj(8uK1^3;|=4Fy+>?HzJvMtYgm6Is+s?}<{RYbrc z+eVt_TjbQkxP=n>)y;mGpoG`vg-SoyJ)Dt^W!d$-t9)rO$+c$jh$g1o<#v@!ePf4S z`lU|D4nU|qN5^7p5T2QZVdusF%M^Lo&3kp92hNDp4Ze7@4#K(4=KG$mvy*j)0%|o4u~Yu7Ch=Aw8b@LcUsJF0VL9ZR@1Ad+pl7Mptt59O~F_ z0TCP7)Om>iwR#yw87S#$pLguF;<dZ_ z&*n5wfe(i|6lv_&9_ZwIJjTT4ZdFVCE)FY%Y;>@f_|R{@E{GLKV*M_0WG)=)19=}#4OX#CGVW_BNlm9i6 zx~yd@NfPmq_21QJp}n3Va4&MC16K#-eAk+V|DeZ#FExnY47B|ve!Md@iyZ^U4rrDA zy1jy$fsWL9hSEvaZu7@RacCXVQQ~X&PZ9{0V0aF;-2GSK~fOTb_qwgwfLCEuw-{HG1+J!Y#jV?jq zTj~zY$N*B8XO&=bdF143@ge=5{K&3^tYOi z6Klc~+k|2g|48o1yY0t?u!RVnwq>bienITAEnmaiAbFGIa(UoamtRRZyjatGF&x~H zAcyjZ(pqaegNKms%0lgdBH{1mV&>zsRWr5&W*Ypmt zdus0DB^bLJm}Hyap}QRKLBUYn@|6xRXidr2hv5pDEJ63Q1&p<9A7c6J;+TSCm*vHD zc*6>yKUh(FR(cA&U`6c- zp5>q>9?7#<*JW@{Lqw8!h+`y2dvvhn z9J$4B{#J-w*1Dfk*0(5fN>bH=RR3$fDQ%DFV5H(Vq0l5b%=#OPK)ixKNqI_Zz=dBH zyy?fJQolo1ID6-6p|xM#m9|G+9FpLIo}q8dg~Q?ZEB<#D%uM|i^5P20FpC-_fK=Lq zR<3(QzPG1zzf$JNH|PuE*3t{1AjIz?EB`d;(pIrSmRa!WPxanqIlk0gd>v2K%#T>4G#hB!ZegXsStmydmO|9rS)RGmQ zbL!xZw3!p=RYYUn zaOv8_L&>F7J*4@=&%Cw5cE{D34`Xba#P-1Mhbqu_Q|ycqs4kr#BtHCMqaNy%lS-*h9gB7u3D^n zqQY1(>5lX=qr#D~i4JP>J_&k~S3n(`bN75Q?Q*F5#sBJbx{l3x`acN96%AD~VqnNv z9@AO&{9?x8=logbBg54nBI<>IugG^0b~V2_Ll~9Yp0OhFKHuXZ(_apencmrUwbYkU zfBN~I{tECM;{0yy8UN||-GAj%U+jW;6qK`|j{~Aa>WPI$0xBeCI5uF zjmu{r+T%iK8}(25-x}!fbZ$Y`3~!$yR3M9^V(vA4Xfe$%_4;!Jy2#ediqEtjvMW9_ z(V^h6?K>79aGxU#DfEPkNTVQp*%WR`;dB};jgO+!JRlnRxtrRyvTU}EIx`1|hf#0xuDSOc( z>STRvP^J!66Bhs>$Oh)6+#eRsnCyzX9+k<(md4MgPSt%&>LwEsu&h(*oLZ32DuGUq z-zfqe;K)jB-FyV;9rT^$DnT#(eXO0p51RsUfoJ9u4Ew!8fiCPCi0vt zw(;u(#P)W1c5_wpYzuqkJf-j*7rVUwH$P?e|G)W}N!0PvG5`7BoS#>qlss^LZe$ay zQvbvGX`$iyAD*8}n0JSopEV`+{Cw@$|K<59egIr$nt_V&O?a<48apLJZT+jR8jn(> zVTz>wR2`@OjYqAak-uCK)MJ-*MR%hoF?lCqjvSDtj#JkiZqY=+ns%HT(rTC4i)J_{ zu-ZLNjl!|iTIVFnaq6Av2{|O(n4aL}Y;;t5f*hw_lAa*Psb{Ar^d#X#cePXvah#ej zizP3MSS+(Jakn7J2tVWy+*d%Yh=jNru)8NjjUR(oSiiY-*p!~S?~6S zO4}+?1E0$R>A^4R8DbkMwV8n&4*yzwZ`G}Im}=r3cYUTs7NgKaLV7?Er7fx=_IR>J zur`S4g|WTTXrs!h+>jiv$EU%CNri2T`GZ^G+ac#veP#M?DWzY(Q%OjXNeD+s4mYv& zInC9WhsMh;dm>tM)n7SQ#Ael2>Pq`;32_{T^kjL$Rb*BO;#ya1>;Zzr?vSS?gbjyM z3A+%zm=2Ncuf@QeG*m9Dajy03iOMn*i)nd#Lf#I2HBxV{C{n0zuV5B21nm_{N6haa z=e=D0M#a1{y>XuXV{Kc^67#2s8gFBxhYdmFIMzn_g{HdB(7Ro-m;e8-L4-@$zn#<-*yo8l;SK=r~ zKgG>$-v--Lx3S%5U)^Qwj&AbA`i=IR{V;02`$OZOGq%u19l2spQl9fYY5X(x5P1Af zwj8bNPiwg9qk$_68rRoOWyBKwlKM2-Aue2-Z$spVY3+zNAZ~gPzO&yCs%h;#QKH()Hu4_D1b-< zeX3_Wcojg6He);2Ha_yu+hIh~^^UG)UvT#aXbM5Cl%GR+XFOz>E}~ExoH9P&JFuSl z-o7Xm?%qH((JgiAl&eB}-Ro(!PL5we_6qIq-eK~xklGa{;zaRsFBy$<4?G+))ML*V z*V8|yXTZD}J19u{>{a+#o`98h$9(I87KtH zI@P`@D5kb+ZF@ND!wb~H)+kEGpxIM)Ma|0Gjngnu65cO_Mabq*)za2@Hv9cXjF?b+ zc~kp8SiCp8THEi<(fWEZ)x!MUx2z`49iiyPul=!ph(0Zmi-mzy!R$WD4#)CiRGMYx zn|@FDm@L%a0blF%{+t92Gs8!CC6O&pOKtCAX5ffCzb9}^UeL2N;Oo?8iF`@>v76_r zS>?Y@d~ROHMbmSp97Mu?^5P)(S1;777FAZYBlib9dnGb2wrttf?+ZJ-d>_`~9QXjR z?Rxq6bYfEqpVH_mv#hbR_RVnBzslB!T0hB_`60C%R@o}g4yoH3D)sK27Ek=a?)Z}~ z8#_e*1Lkeq$ry*N*V_<~V4xoG^(t;=FZ(5?B30WUqgaxRzWbtsikpgy0Ov|Q*8fHF zGgG0Yte_F+Qn*7$kDVvzs2SlmHNfW{TX0upEdPO#v3@Ve{Xw~Zjqkc>i`Uaz_pA#; zAlpJr#E`GE=B0yR#_kf%miX7LKZ7#n!)*gYa^aq!2^h<(F`c1$lsO-+`kU&A87z_W zwW5Hh#RxtRiA}$n{!iBJgy`_%{l_sxp_48XaY;FknymKSu?=(yG}la6L(lMyuG#{LmcZ z75aRew)CoY&u%p0V)6_f5hEhdG?1n|zPD}1lD>aV+Zr$?=P&d+kX=PRT)Cx!Srb62 zKe`{Cf}H2#>0E1w&>JqAIKoBcG3mm^CGutq7iz$e7@TpaaK@p+8Hb7@8WYLl&=N-M z=4BaVP(5296}K$n6hIE%<3X4j^GVQ{MBpF){O>N?7PoXUn2{4Kl@=+J(soI0mXMG##%`Ay0Hf~B_>E+t zCcu`e8mfew{(TU&~!rB!ywoCAq-6+;pYQJt#{pw#SCM+$E znCPlw;N0Q>V(h3Xr{QbnlpaW;)o^FaC#UqqtKw_P015@(0;dOP#NB0#d)v_m;E?Xtz2Jp<>c+JiLKH`iGVn2h;p^Egh88`m5B6|r)_QC8g1U&Fyfjo{l3-HPV@WTn06Y&Mv=OIsI00G-==>|C++=I z^k1IDb6lt8i2lfcfkZg3#b^!0rfSjFynq(k&4$!?+o*ii-`bTE-E}fK{n~F@qb)u8 zxYk%kl-Sn2Ida^ajnS&eo6sNphkBO9{8EXgFB59gLEd0+v+q&3TC zaykFyFgY}cT&6E)i9DUD*xQj8!KYBqKcF65RF_v9-g^|u?63Po(t{k?8f`*nwODeQ z6@#>SInbkw3fB@fj^_QE-qN}&hr={xjk0h412Z8IyS97}HUwD0GB=)v<#GSAky0=> z3hb4F0o1d*CKAz<-3Hx%31HDX@Jj(y(oF7#DWy&tKW7CjN34Q}cY2HH4t7u~FU zRWLe|D$L-k;B>Y_rwo*gCyBTJ z$OBo~f~Kchosk-5crQ}e`zS8vkno7+2=(Ja-^KM*Cu@`U+>9~Z7{8Q^O1aBld!RtBncaPvZr0IX(M}-Lvmd6Pyu>xCBs@458K$q41WS&KNP; zsw43or1+8O6{CNY))k|d-6>a^3s_tj7Wlo*-mM(S*q%w*@r#%y3lP1!;`;&Bf!)SI zd_G)A;WciM%l#%7%Ch1Y1E1YCK|;EHTgx};U}FtEb1)viP=P4(@oB1c=HtZP!Ufc9 zj87&rG+-XlUNM9gvYdGY4r(XKjIhVd=!kz#Mj^8|U$w=V>Ac6k`YOpU#P)60b87G^ z3gaILLCb)|-y+E#mE!@>&IKp|b74??mxLNPQ=Op(JVrE zf|!!WS-r8CIU`$3Xhts1x!a-les6E2F|{x@D$Rlzx|tNgZ^Xi(v|3$Zj6IE+ReNpN zJdeeyJvdi@2^t?0zvLt?9fo3orEIZ+b7q^t=R@YjWE~C@N%WbGVW_9lw zUeCXzYYp0_@X#z{QP&!*?LK6qofjTlGpAz-YSH#3Lx8~5WjJ_HxH^gIME{_*s|a8XB*G(_Ny7HU+QDBa9KNY22=kzZ#MI`9q* z!UqX5V*S>j)R+TC0wPxmRy6pyjhC+@=X?`h!iYYgMS^{(dO#CvXp7*%`Bd`>$U$wB zxs!KbLDi)GW%&OqT6l-hkn0(`gl>haCZph=T%;R?nDOE?Q;wb02KskBltV<^MRGlL ziS-b#JeNa8vQKRmCvoN!Z`pcdXY2m#l}!Fly{b!Z{WM!|-Gau=y&q}pQM}K3h4Prx zsuwJUKghD4Q8jwsS2N1DqvoAZdvKJruA8~<;)0jg3BtsxwJBo785~dZy4)j*q8Cpd zK|A)~$+C@|HGfaMm!t|OdOPRhZ!#aXhIgcQrhgF8DrEXzWDaL1Upt^|y(5=6^IdC@ z{#kG3%A9B8yU0_?arz);<_4MY^GTP4a;f87yN*+(4o>WCe(`t)@8-pU+pX?^^MWfgC}4uE zkO~`1fm~~tPbWjT9}~N7nfYe`SlCEd)eGUO!f=EoKl8Gvl~*B6oIy$!F-ON1pKUC$ z;c{~cd{!Mfn<~1(zRfjT{4=I!P5H^4KZ=~_e{C9Y+P)7aqy|p;M$W1xpLgQqnswaS zi0;dYoD%+P3=Yn z+Py4%;*9~zcoqoMw`zse2{wn!bD>v=a73YQEW%_2^SifuD;@HCvJuJ}VWD zC@>aDouXkBt&%EM_Bl?wMJ@MX4*WruBVKf)r}Z}PG?OR3&z$i|R(B26DeceHTgCaT zKX#c5;qriS{#@PciKi9IdO%gtBgCvyurlW&{poiGyjmK(I__nCKPjktRP|RdvHc~{ zfUvWe!5YcwP1x*NwjN?H7Cw}u^CQ5g^=USAKEhesdP1oig|OAy_6DDH^Kxfxd(D1x z*0y=_*3Of9KQShG zhjtOBt*##cHGdzvpRq3s{A#lX@a#7)^TOGhPv+Uo;Y$%;e%tC>qCL@;w^D2DNqThG zC0g@-5tYD>n$+*S=n%(EB4};qQzoBzAKb)u@@FAic6&XbgiM0F`*M7o+W#axcOIKm z-PV!^L~o5hC~Y|<%hp@fq{pUuxcC~b>KYl#-$$KUR(Y0iLL#3HA7q`+GY+~lAr#DS8Ph?89UBC}TtMZDA6{Qj`@>}0*|edXR}5_O9#7tZxTY^0f}@H& z$!y+^U^L_dX;ocB*{*x`5jgjE)@`W4r1r!deBEjd=SZ(tf)S9>Ai1;BI`QP+R3}jQ z8nylOSbn`2SX=jYAu$-k%K^L~amH*Lu70&ez)%kHJuasZvHT7WW~>)3RoHny9!bM1 z22AU%;ZpSkbk$3Y+w+rE7ui*pG=5%pc4E9UKIUcI``jq!Jf8Qgvmpi{(o?CBO)ZU= z46eJyF8?7)*9!6Eq8ucwInhIMNNT=Jh($0JUm~E%_M`36_f$fq~{I| zG9o8fVW$LDHhHgBwOfN!)scteVTvYKaz~!YT+cWy{v3IRn{gN{^fW8NgaztvFEvxU zEj9LdmM-H8EElID>k!?7z9m8JatlX#Ub(z9L6m`QVe<~8p*0wE`wgOjpSAT}PZoZN zHgEG}#UG~g&N#$!SN6+BdEZqOIf1|B3xrz2v7xVgfaIbD+TC@Tdbw6zQ69k2>ZpKu z>DT}%I;!ST>drJ8k8E|Nn*CgWI2Pkos6?`0omeqQUP95u9(A?Kx`P=k{wpR3z(Lv{`bFPdv}l{^iLUTF-OjY;D$DJFPG9 zM|TxP`bT#`smEjkxax$i1+gu4=-}7{YQS2n*4l@PO)3NkOM!?Ik^s>JA^`-y+7OZfqDdyrBrH}1SyUQ9Tx;E`)>_+I zr7D7=2x#5f+KIN-+SaOVEx5N}y%Q#{SnP>@ zCo}x{D|*2w3%9afGd^ri|DsuZZ%%7lys_NoJDL7=y8FEo{L(R#+ZTD|YwB4~{bq9e zA#gX#vC`F#@90>clAWD94&}kTz>u?Q3v+^<;CGAB1p3`MUB3PEZq@Iow6BvpW+I}e zXGB=_)mBX}X`jjwAztxT-qSMdOLJRaNTO z(D**!c=i`Rn%W-PrE#?OzSoqmetO4mcJsT9W0r=N{3PuF+YtPW)a&s_&)w&BfKskqa}P_TmMMg-KDglu*rz zD5GRVtDahO+JQM`9efcSa&7zQfD#g+M-jC$VYSCw z>m5h2`sY2_`q}mwEH_&tdBx@Ue@c&?YSMi<;=8$%`35*I%lwX?ksHm{@}bMHJ;(r# z&ojf}f^SalY+ayOJyASa3ELfV;KrbfK-eM%Wp_@5dh49B-nrv@KM8Q(H9Y8mR~(kg>XI^3Dldc~xk$X+c*q zJ9P_-LtXe|TU(>wVlhWo=}0SSfe9 zgt*`svp(Yp!S!m5;QwtqmJR{?F=rmv*A!p+=N&J7XseFas;8EsYx}89DA20bewY*4 zliU0LZrO?IyQ)jEW3i|6re90sQ%>4mzojqixY9K>bjNCUH{Rf*AGkl1EoZY_9FO)1 z;L}-X@i|mm8V^2GT-C{1b(DVBnO(#Sa!qi`;zNCQ_uY7^e`o9S1y4S;LH&cNuf{sU z_0xh-?)%B9g{0L}J5D$%dvH0IeaJ-ZxaR{)tD!sY;BM!U%pj9w&c{7isq*V0R|KM- zC_>L`N@nniXHU~@fZ#e>K@>cLKx!H5<{RDf4fy6@ zhE-c32i`8=C+pmNb?ia%Nor%E_R5Zzeq{Kzm9MPM^z;`SL!5lSh#o8T=eZxa&_qoW!rXp)WJ{Kw&P${$p+wOx_>|VOGi0^|!(t(|z+kVtdh-nc&uXRG`8r|yLw(FogUIIMo zvdQdQmW}y&Yh_t&Xf-cZY(MWbnY?Y6$MRuA1>2PE6}-)DP9S~mpYM0BBZ{>P74E+u zah4iMN1rE3lOkV~oyZtEkJC)0i?J&g{Ib2Yxg_tMBDSqh29dTo?E3w7G8jLwhv#9x z-}Z9f)umgB^na&l+v^7xefaUDHKDH(#aLbXP6{fW6Bd1p z8$R}&_c+(pZFlhc0y{0c+=pxPl6olTHZ8j&)UjjrcD7l=lh>U0+kV7TH_3Q-d-eJ2 zhq2$#KI2UsOmtp*#V?As{q-O=k+;2`1D24B8ROIAMceirRGP;Lv?sUi`f|~*ZAE$8 z+Do4-t$!*^aDh*de`i=SFIm4;pH`ed=fIq`{X;b0Uh#6t>KQxA39K_We<)uwyEl8q ztDj_A*NmHgeJ_6d?&;MX+jbto8Nvw}zZ;J3r?q9=z@Ke*F6LMp7x( zzo`9lMbGVgZb#XQM>)y%WJ%uZMXP_y&h(c{hV3rN+YL#d<|jY*W~Vcb3Jw#kENP#? zY2q1of)GA*=^sjQRo0Aq@j86MgE;l}y8t%F^GM#u>v9CERn? zW6$jXC$n2T2alz^{j8U_y?iirmutK2)33DXJjXscXuepI_ac>c7*u=lOJz?Vw7nZL zT$I_bBg1-9l?>1A;N8x*+Got6W0?5BirY$h{f?xk*7QAv**f?^o#1Ud`auVs!fiYI zAvk^3y(rwnF6|bCJ)bU2qg@4wA6%%vrKI#%OZ}>Jt zZ4X@n`h80BUReEf`I;{+Ue`-HKH{L~ifx}qib7XDw=3uF(gmxxpD<&q+P|f%o?UwU zu&o#Fmhm5Uo_Exm<+8Om9P!!pYkNuk*5~Ma+pa^^wF_Oyx($kr*R|lbR}Lua_4BgY z&+&dzvItiOu?NGPZLju+SBh4Du4K%I=g;JP*?0)}5QpzJOCI2ISS_q}{)CCf`@-Awr%I^PFY>|n~xbTik?c+rJF)4A6vXXYugbK;u5xjdp# z?A)&kVGD6DTEC(x%UFFZEalS$JNYeC9;oV4zd#ZhZSQRAb2bY}t!3z}U(H_g`P;A2 zb<``$D5%gCFQ3e?`z|M=@#F=t^b)zpf9T0*3{UFm0~W_VhD_zGr2x z;rq>a(NC;=&J0G2o%!dFGTPI((VDgJ&PR{kO%5h|pxRumtN*Bc+_jp|znxz!vq;-4 z^VjYH-ueDM*DB|#c3%C%4^w?$@Ggt0`10o9s#8!nC9D6YXFp5E+;`kM+RRy7O5$YR zThm@ja_+A?Zt0ZvlD{uFrG5I}XI1n{;shK*K)%S^+jg%uvQocgqSyPl5{+9%8>^1s zzQ{hb-olCR8}+D(X*s7KABK67lc)#fJpPpA^kdnxwO`KcZ8`nNzpLN%d#ioragWh6 zpE%meg&)&KAxy62$EEeGa;X1%MbvpOXZ91^^w+aFVE%Z{+A)+WUsKXQgs5Z|(cCX; z8|3mSL06f&=7SQD=e-Fz{X!QO{CQUDW*$i^E8>C*Lm>cKH z!)cf|Y_Pk3doSm!Kbw5uRmVLE)@6JOJ}=12Kdy2~Y2&jyiAS zxhgSUpb!1Yqf3vwnY(h{?Nli&XX~bU$IY+fo3ac68J7%uYq6aNxK?(fP%an#p$iu0^c%!a9}Y@Q$~#>rMbB*N_ic1i7(|G#O7{=-ccjl*tK0U5(MI#Pe`pLD zO6Huk8~lvJO~w&BZzDmMjjKRS8-g1BL;l#`-noiwC2(&zPp=cX2E>1zJlxQK}GE=C3s+j6|mzR8{8NguP?8t?R*?~u2&Lbsv_97tM`P}D{oV3G0iGn zTB-I~YMTm^uXUC0ex7=dntFK9em&3D({0eqdZlYBI24dom(EIhB~1)2r(#>q-F#%4 zlla>Ic-krDi1XSqG=Rn=8AR(R41!+?x%>J5jX@mvpBcnTrON*;gZNhlz>i6WGG^kP zoVAZIr|CibvZNQkX7qYjcIq+{lww9NRgS_#QYIRo;;bDyZE1uu*ok^22i|#{vXa(U z&Z2%e>xdAr}PHxc6!gVrGWC~ z|0FHOe_5pe2}FzdaOW{I>FIo=jc>U2{Oh5BQeak2B13+g-1EimdUIBO57l}o&_jV9 z3iME*hXOqm=%GLl1$rpZLxCO&^iZIO0zDMyp+FA>dMMCCf&U*-;D+1fjMZ-rKH$yx z&I4{b(W@(vXNu+)c(-3tcShmoWt1EkIjC>WA)i0us4pKgF!zM~VIxKto>Wva>6D7f zs+qITtgfk>e|BSYqHXavFIcwXqD$J>uDkN;Yp=WUySLu)X#tUtB&V>{rn5R`~4qZdij+<|K+cL+p+VFH{W{uop=B7-h2Oi|AP;Aee}`p zJ$v@<-M8;!eYYv&A1V9x?cKX)&+d;t+V$ZF@4x@g_x|zsci(>N%{N}(@weCh^5<7x ze(8_DfANLqfAd_&uYURSr=EQLvF(pMy!nBR8}40y*PTE7!S`>y`Nr$7z2?fx*S4>| zXvKvWd~@-_M04ZW3u1Gt&zwE8sy=CTr-qQBv-g5Pqddr3{_Lk?5=q(?9f&9aI z%h*GE%bADtmZklA%dH3ZmdE?{me>3AmYjon%kXG#nH?tYz~1uxUcKcPol$vjUsR6V z8RQmlrDr4V?O6;wuT>b{>JEOAmZ&CUDYn1;>RGMFn z%8f5a{y# z{!~;>>5ZqjGI)RQ}WwmE*q=m8N)9Ha12@8lqBmc2urdK)dsz@|9Rr zT56;6a7|Qt&tYs|kIF4)M&+$DqEa|JDwmudmFH(f<+$llNlc5%_R6RnG8Nn_pwp>Q zIq($fOpeO;Cr0JN651|~$_+(PdFNzke^OMgIT8AfjmpVmn6s}j_K{IJX+%`6E{Mt- zLn$*PD&H9#mA{`r-LKMjF7!G+Dpdoa)v-~D921oqFDjdlj>=(Q0@p7_<(VUx!^5L; z(P2^f^Py2G`dn0Q>K~Q8IneOns65y=Do1=K%8yPnA5mx%fv%yb>^UGRXZDK9md=QH zA4g=x-iW-mJ0fKtMdT+RMx_4-5o!BpL|*(yL{9#DM85w{L_YI&M85H6L|%BEw4D*T z{cjOD__c^E{7Xb$dNm@GUWv$0{}hoUUy8`eKSbp17bEaiL>~KXM20>eksE#;k>1Zm zq_ra=uly<^Q=W;)L%)c~SAQOnYoCfp^hw%!96b2p*%^;U9FgqM4mY#A~R=42I zt;-{_`4r}(j4@A&$efAbQxcJH7SrDZ`WYXQfhR}gzHt#LJ~1NCj*ZCNF^uVJ5m`Pe zBA**cJHsO~vHZI}M1J#mXme;pBA<)Mcl*;uzld}k9FcQA8><2{TRbd`F!}6t%!}8$Xu*}*MmJdG)%hkKWGUCIq{QCW{ zB>owe&%GCx`~Du5>FYko_a1U&CiDA@Q$!- z{Z&}%p9xF^(Ouo0f#7b#YjREegw9ZP2qdEDI9UZ2_O=u-qCC zOHET)yhg@!PFQX_J1k$X2d4#Ld1+o)z8ee6oVu_KsDe{g52-&yf7{A0heG-$U}_cSCaVJLJ6` zl9S&G$x&~Hgi%OUyUpJ?}` zkktP%B&Yl#gik^Kiy?XQg^)bMhxP7$J|vg_CM2!D4#~{tLNexA+V2QS=dVKY>N6pE z{Ffp5(Jw->_U9obDNTQF2Gz(H6#Xpl7+WJhwq1^@;2!7J?h*Ft!@cP@0&yN!A&9g z>y07#^$j6;^!kw8dtFGr_nnYjd2L8me48;|6Oy{C!R@M$Ou8~8qpyG-mowgVAvyRm z`du56_bv^|YwaQV-M2#W%he&-b_q1T7&=}Qk{ee+>y?agMM%zD9+Gcd7?SzRLUPv9 zkW^j3oSq*-_Chl1o6N(xjC~1hFAm9}i$cAXNKgm|6s1p2+5_hL()DgB;Pt6m0MmggU>a~5>6Mh3O4%vYsi1B- zZJbJ5r-bC{GTNR@ACu^7B7K&I>dG)frEyJq+dZu4j&eh0YgKQHzXtl`5_rQI3y*5 zLQ-)8Jn_|#%*hMM*}2TyS3-Gh(69FiB0X5PL; zKSzZ`fX{w0Bu5?@lCK;Ql97jpr1%RVIqfj=vi`*nw&z`jx^pds|4Zjv`fX}3=WLpP zc#gT={C?bA=e%yu&m~{5>HU6LZ_@i!pKY$o3T^tbKiX&S@kW#G4=Z_{%^!b(ZGY=k z_PXqL+s^oF?Xy?op5M0pu3zu^9ctTsd4s)f{iVHD9&XEf3+;8;ajyNtn@s;+tHb9= z+kbM1y{?;`iC<-ft-r3x;knpeZ{BFr-)*wjIS1Q%-UT+lInO@#8*TetUuFAEo?@Sq zuVwb*)1&A5KTCn`&U5M+Q(w~l@);{%@4D;z?&@QebkDza*FR+C`{jDBJrwAnKo13a zD9}TJ9t!kOpoaqgGZYv}vo*jrKz}5!7duvj{3O~JIGpF9ygxEWB)nDRv&(uB(Kt|! zApX}&`f^W!|KWe-{jEQFn!C<)*Z*+WIqn*B*R$OCaMu;?dWpNPan~!{ z_1o@xgS+11uD84EkKJ{>yKZpT2i^4%cYVxVpK{k{-1RwkeZgJ-=&rB2>)+haLaU zI>TMhaMx;gt#j9UcWrXlgu5;EwO^)%l@fgTF< zP@snbJrwAnKo13aD9}TJ9t!kOpoaoI6zHKq4+VNC&_jX$vlJLUc8C-J!+^xRM0I1$ zIkD<_^$oG6n#Pz(i8sfZs_UDo8)J>}mL=lKX{xl$l|^$+q1t%!5>w5MX5ONf`qo&k zH?VGy124~uwY0=r#(D!2eN3Ge8eC}mu(!4WFwy?2O$*hnu|%sWJ-;D7x26F^>g{t& z8pFnO>gro;#}jL)TIaRKz1o&oO>4{}Csx}E;&hwul_~~aZM-f9Ru+r-u~yS>b)x=U zi_EZT*s-QC1hY?U_y!+YJJmu+S6__2UDGBYi^FW*cKC#pJ;2Ui_fo?X*yI} zsZYjyL&1vtQ}d-_z^MadMDgS)GGb!+bQz_0qx5dH-i_8fV1)h|rGG}t)Z*zyQd}~6 zn2h|)p3a8edpbYvW3PFA?N!r04WfavKX&bOTgT-+PaieS%?!M{ zL@UH@lwiiW_03Y#R#zV%5}!Zc-8DAH{M&_1b@_{Gn0;HOvA(X}-9oa3@x>Vrjq$p+ z2EXWH`Z4X2D)o&u^J7EK)^_b}bCZ8JzkZ%9tgnm3htw>rcXy4=BV6UhgKO&N%@eug zg590#&)?m-6}TDb$Fp8Nu1T&h1MdRDb0shbXa<%6LxJ&tX-P-f*gRb3HPqA!!{Ma3 z83&idlBU)L0^W-8+0FAskyP{)F-1vf1u>K{Mt_qw&!sP54$urN1J(gI1M7jUKoWQv zcoz`r^aDI#C=g_@L<8)nEZ%@Hz|inp&D=nN*7`=IGM4a@s+J^LV~w6k_L^fY_3=7y zK~2J&8;do0wF_#R=3D6+Sm!k+3ccLM`lhi1>k1od7IVq#BXzN+cuS+-nn*=y#nfrD zJ$`7TXv&Prv7Y4T=gS~Z29}K)(I$PQJchoZEu&jd4Vv6XDry$HB(E(It4pO%iMM+5 zT4I3|+V_ge%cmB5rPHQOon{-bLP?v|jLb-N`o2IC`cT^tZ$jGj_S~k}B6|lL*R`3i z1E&U%XhCYL=eEtOHlr(vU9=4gEyUXXe+IveB_)rR<@SW7ip zDApp!4jfvr*auNnqy&kz=H}&lbv3OuM&&_VG@;3?sjI85sa3ho%^U04J94ew?yi_f zY;ml%tu|qUB<}m<^l9>a)d`s-#Yu_*b3GMrn)DVxK z!>lKoTjIv^gRO(8ZR<_E02!=+{;$L{41&|o9b27G&VQH zycV@*P6mAv6{#xpYHONX+gf5RN=atEF5jCLtBut!M6#H^xl0iJK2lOu+SJxqT+`4n zx2EXq_ zT~yN&JF_NHAE)1`Gp3Z#Lwzg4uPQ=2aWyryy3Vv>HM7gDZwfy0%|Y8p*_6r|)5m%x z#;8|m-^JF<8`lEF`-m~||5|w{oY}5x%#qVW?B_w$bld+%dDrq-FA;0N0bwTW$lS!) zem{96$^f5IE|p&uYb}oBlfffQdwFbOtf3pc$9nrMXSglhpQA)`3uYDHsS721ygs3v zX)&u@B32u3s_V8zi@?8BJ~e88@)yRMTJ3O^&6VB8dR_Ch2S4|;wph!OvZhuPP7NHN zp5jj`5U39wF-Gd4Oaxjo1M-{uK4{C)q-XbXfOjeTaa8_2j8w7`tX%wz1ySriLXR?ieNl&Tm2-#G7YV(~Ig`7q~^UMcIvOS}e0iFL%JWL}Ktsxai-&fmHm>Qmwjn0qgeE zy&V*^m|*N{6(0J2=$ug|O);N;tW_H8u?W#d#z7VqBK~c2OAPCcBj_j0Z>ec&Yp5YG zv4o<13Y}l&XB!vD62K)n@;l>~po;)aYmMV!hu|}xb(J7Xo$Bgr`exK%H2bHnqi<_^ z+L(gc1sZQijmp>cik33OetawAf*B@IE)SR|lV&W98)orjnqh@z=upTHPcCVOq}EF; zWT|EcN5*-V@9EqG+zmVjJPm9EZU-vY?&%zV*`Cg!fCuyg1bCP9+sNMz{2KT<@DA`A z@JAp5yt-~r=L5hpU?1>L;0-|8sV&x2y99!sUNmh=*_287-svrIVlV-AR~qCtwk29s zRh%@AN0uWq5?Cs3aXan$5FymC!_>Cc(=|Y4=M$O3t(0y&)5b>Yn)-GZayX@h;xSpi z`tio*>XbYCJTNiVo6^=e7w-{WmQm1lnJVYEXKlEKo{+T0X56^BxctGIhNDvTa2;a{ zwXJ-w%6RZfCEK?0U8pIC0n z)RJjsGfSr#^gf}zDN|Xi+d|#p$M5hecJw-N>a>cY=>!3+tCJ?VD^fLkO7Z^Nv2;XA znpuD-Pb@$hnFi|;b!{~5J5kn2x+@!?qff;ytt&Gj7+Jlf=xRA@tT&x7ix$f@LTCj) zk0n_4IQCaEjrUl?zuJ~vPo%7(Vw>tWO*D(Kn$8Sn^6Bxn$$L8$TFdNJ@6X_VJaBv< z%`f-geeE0Q;~(_>6`mFT61abw`}M#zfi%C|fA{sgKp%6tw?qysR>ks&rM5^H^4d_S zms{7uI?M#S3$4;s*~FiyGMZeqk_jFgt!<2?t)O8;jTjrjx4~{}Hn?XMu8}B=8bN5| z@&~5XF5vgutrMm!eoXO;pN==5h)u3(szdkW8XTsZB}twaKgaNDMmtt2)Ui=9C~KOg z!6l!wEQPu$?>jPWO}>;m5mg0lXq4t-i&u6(2FnaR>f>+mF!=^!w|H`411E(k)sm97 z6dl0rlPTbjC)=824?Uw?*AZu_jr7Pf>iLw#T6G<=RRn%kV6>@GIlHbgA;V_I;@8zD znwewgx1`fs@Q!N|v2;SM5<(59`R5kZ8QfVHQ*DMLGdDKBzR4E+#B#AFJVKG)*DN=T&<<_tNG{;4z;69muZV=9bEC$?WA4gKimI z7sEKm2$-dk7a14C%B@Fe4Qrp5DZluy)iyt&8)ehVCQihInOQ3H8e2Wl*kopT7kH{R zZkcq6?GY6)GZGMf6#YDQv@{%zP9eBvgjS5#=Q}TfXqj=n<#eQ#T8*CRLFadLE`NA^ zLo`|$1X;%Kiv;20r6)@eL?%%!2v6{wg3hIx|CzeByq3{_ql3^Xng5Y@s>VyXP6a@{ zzI9@}rHa8e#HP+Yo6s5zm=52_*)>f<$cnwF7OqR=?6xMLfyD=5`B<~CVZ}$I7UJvG z%DkA_3fXbd?#>f|LBM&yrN9lqoxnrDFMvM)X95jCIiR@czje>->0A#afjPipK+_Wo zjq)~e^ac&;EJ2vf5)F5~ZU9@4sjUYsF3z28V1vVQ64qh>>rB=!wXGh(nYI`%^ zS5>sGs=u1u9X3N3n)s`3*|2*{AbX+iJ5;+(Gt;_gwAT=6tZt}yECh5-hvKHN25?ME z5ORnnv^52j=IR5>^M)mg^+I+Kbl28zo&+L#O&}RaLC0hz3VI6jC3bnmUae(e4Yiw{ z2#A9@Y+ZoImhdd*Y}PJrwvkg^iFkv_^2dgIOpvN6fKDI<8&vHcs~0cPGQkvGE@h{g zt!|Ol7eDT-1EvEdz)FDHep`*~b4W$3wT6J0Zb#0Hx6G|in7~}DMXK7GX2utL<@Ix0 z2yY78>gY-~GOOzv8X)of{MN;-y2&0$g+}x0=jX#0x&z;R2Cq+L{L7RM!)hvfsee`F zP3Jgfav0h9D=YDIlnLh0{ImSlT@mamZt1|f!E7AaKVIt2ZE9A>no#&L>z8X8oUyyrfP$7?!d$#vmJ;_5EO8WzjBT%N2HQt$iHFcs?%;rydMb)WNJY!n9 zOfRF{w9-nNA}A!~lS-#ZWzlr=XS&{%OJxcB|CLiHS6N<0hMp6soLzN>RF)M_mCDMZ zY5bXXtW-`cpTr+5PvxvxvnVoqHjk5vrE-G)DVnC7z}GoDXu6h5zymt z@{|hxluYLjUGj&f3&f!=CRI8d^F z*w^{(=l6Af?>GB8Uwmd?=k{Ok>%93_7HYYF`?-Ccg8@Hn8Rc(zabM>tz>eST>wKT* z^ZA+He+RCkpKsI0;V-Tkb2lxGCU+3t} z`#Mj%mw5$N@qFj~`#LAzWubuk?{C=G`S5+|v?m|j*ZKUN`#OL6$iB{VfwQ*l>ns4; z9=0%j>%PuodHx62#{n%Hgyk-6IOP={19yeDXe(ImmpuRIF`L%P^|0;s{u$a1miy1% zf0Z_m0CIk|uk+eR_jT3*ep?^V*F(T4;2v;Pc#NN~{T^fgA~bFUR&l=&+B9%g*b9x~ zz{SwfPrHirIZrWXz&KzeFc=sJdShJ!h7MxjO%d@Gqdd8HhqKTzeCVg2{c~lwo z;Q)8Up{$mpYw8T$qyp>^kCbq&*DXHfhOUT<=?FW9(e*cw_ZEHsn*z=G11pO_}Ql z8S5JehZ}Fui#K3CTR0m)xJ;J^HLZy}#$*1W!pr<+tPMzbH6BLYbKX%OnI3Cwj>~kd zuVFX*>v$brx>-!{+w;_!@=A5yShL0!xBB3sPe)^>nC-^?}l z%{`q*09OKwfoh-JTRb1C|eF}I1_#5y6kdw2wGZ(l8co6tIAhdZm(4V&Q zxE>kZ+qoyQxAPCc!@y<0zHl1uAyVM!VO%%0Brx#-p-qV zbAg!vXVfgan=r7RU9-ASMZxWpjb*2pSa$4=JC%&u(M>SO0wd+E}+5dkK zy9F91AcUgAt@6j}r@pDyMkLsuNc^hRfGO__he3zV|_ZDvQqmd~!rS3+V3+=K%cxZHIr$%wPVv z-MiY>hJ?pSI8OMfJ+$jfjc-`D!l)aojIhAghR$emXS-u{w6m#vZ|5a|UjJ`_S*Pvo zJRH~r+yPvx_W}Ht>GL%31{MRefXTpUzytiUFHmms6xsrM13N1Ac0LK*0nFj~q3L@& zX9Ej>y{CRMyhi?_f1%tO%G?gX)8?Nthysy_p~LGuP8SayQRgkO7k`=(deYw68Dc|r z?$mYCGs1pGHSsh*Pvc^)e6`tk@a=g}VPwXS6$gfOPJ&oP+(qJo_IS#S z@^TO9Aq^L=)yC&gB`M2o-JBpgPL3?P1_>W&u4c(@j@@d6$UGSr)Eu3zn7*LSdP0PJ zaYtzz&%pR!X-CHtSJ%wXGM-Xh{la<!qSj?>Bsm>TAaz}4{t~On~eA=#YhkFZd4~>7!xGnX}M- zgIRfFvs+lV=tW&i$q#2fclgp-cb{zQ<&L-4mrr(!H5J6#1#Glv`XfiNj{FzkM#?B? z+4?W->m1|m&pi6m>px9-I~;7Jd845T_9mjc7_HAlk!Yr#b60+x(nQz|N3z?lc;0s1 z?#>Ud-9HTa4tofImYIJ2?#?$|`P*FD{_0*ueqYKu+US~AMNlfHmdq$G<<*r$TTKIT z#};%KTfc!~R%sG=b{P~9ZM(n(L^}4tz zR>SC@$H!^caHpTAG)Vas=zwZ{)q_{E%!yn^*ffmez>isX^CgFI>ZUIlP(`joy%rywQdtzJD{}Jf4ELd?VbO3 z*>L;rf$otlD2-wLVkO=Tg7Rha&ES zKm*23r>;0$8f@{wIDP8)`JldE5Ddm_+lM|<+Yg52Q+ zUmG==9k;0yC+10+c{OD4NnSCB>*9^(tOqKgF`Y5hymx>GIachs0u~2Gtcf3S>UQ2> zqo<6g?G%yv3o&0Qp_BC7Z>!g=haAm#P|Xdk_00`SWF~~D)esd2%k_-?LZ#2lcmp9D zFTwjcdXh#B`8lxw*|Ia>*@pSUysC5)UT)3Y1g-E!jUKvBEFk!mXG#q&@PdTViZ)4K z1<7q>NG{3lW!krLawnggr?cY-s2X;#n=qH8$Md}0p*~SdjPC@=^iV--8}Fi3)YrDe zTM0`fB$cU3Kwo$>^IK2OG<^Y&Sxp};jG?`?l1^`Hj0v;XDN(fU^!U&b{N zED&m@1zVVT=lw*arOs1%Q8rPuTi7u7AJf92Q>3d?dX0@Wb?lw3;O=9sbkK^>dCe+B zJfJP?Uxw!m^Rbwua#>PrcNlf|cS&O-fw=lwpT8Fx4s{~p9?EsMd+MY~p4&NAx0ez~ zTyvb)Gx1hsDxuB#COuW%%v+8+-E~Nu&jHH#`hJ#1?6_SNYp{P|=0UMR^@HMr+Vp)c zjB-VxctE9GnGvg_sCcoI@-N8fAhqz0OB& zB5!Q^Nh(w&SiORa;YV$aM^oR_7AqtcQVT`wzX4O=d({mbD`1}%{PN*(w@gvj$DCQf z)i%ctU`8v=?k#eGcp4|+0F)tqzTwk0BtnA)HMKB(4abqo=A&L?DP}W{k|UoZ1B^6m z)LgW@dp107G%zi@vFK}ke!f{rVP0V4c(X%XM?tTCAV-gLX}+?#9a&ZZeN#v*l@%j* z=0YlK2tpgZ>rI_9L={C9p=VxxY?k5{{*)l;XhT-8h?}yY9SMtBW}(cUUCBrrfZpba zV=L~Wnn$Iin#PmO1WaLTfNuz>l?!SsXBEbZ<_E^_<~bw9w4<+5pz(|%4CMAfFil&u zp4n1fR+dE~uTND5l4#pRtqdDFbYS7vMh+|-$+dv%uz@}o4X{CMC65s|0%^w5=%I6` zx>DgFR(V#p#W&X(?GOO=R{&2ku>*6I33-=yH`*V4&Z{ynPQx3 zJ*6^HOX}Lg+#n-*b^2RMO<$>ziQ=^x1<(MiQQ#XGk=qqbxHe`U~qO9Iec6}LR>3cuj@P(9=RTWJr=g0(G zJLibTS5jQ+sflUUos@J^!bm|nF@c8yo4aB@GIm;=?4PWZ%XbSWy~PzAVbZu6?%x#n zH^cNss}*rjvRBQm@IZRF+hmNmLeT_+`IULT{R z`iv&e{NczWmSes-?r8Ptr`Gdl*kDwmZ*{AWSksDfG2h{^yM+!9!!j*3i%j@9C30pM zwwCIDquu5=Aqg15SZ&%*OK~t}AZR?RtVYO8bS5-m%xN5BY7T%E;h#0vBoGzj@v6@m zL*hzkK_)CQIra0bKRRxxOlnc4G8NUIFn(uDD$Of7>T0@s>v;P{JLQ5n42(nJ<>KGR z^87N^$w1v&7tr^0Q`yEJE>_p8fU(Zw5FjQ_W_ja`eJu25b7!4qP4j!S>Hbqz@l>*D z*18h8vj*2U4Vpa|mdta*vTmJ^kn{3jg{f_=`TBtqy2Gc$IT@~N45muGGMvyZ`2}5* zhGn&*JC1`};&Y*KZtW7@`K!%n2j^%>e(i#MZ=fEH)c0w?GZAc7orP|4P4YNTQ8KrK zy|N~IcY;@}hj;kr?6T&Y&$+0sHd6{JO84Q+m3h6!klCBd98Be2UWcy56E*MR z<0Vgs$N5Y|8GfUl-DqvYhV!5^uU8B!7v<)Fg3~9>;L7KLso#wA{IjGALw8^}HnjT~@ zRe40pCr&l|VdEZ3Hchdl(>slJsroksRTKLaq^z;ItpVSts;LG!YUa&XY?pho4xW3^ zrLeoT?yF3$U%+zFuVSBE75m`IvFcz)z_n~1Tq$#J+OR8^-)vP+!SA9wcO&m0jlm+#J!J*HjLGuR{4XPP5fuw{Ph?bHG*kfz*D^1f?8u$@? z?ZyNpq{$444;c;SmEU@OG1(lXP9@kQL58hBh0>@E{ltR*O%G-5LLvZ5yc&3J0s6=} zKL&CCg~>%j*zRR_mse@$`>P|?Iti(*(QgZ|(9q9`*jLE3Vo5xhY}J_Vg&1d-Sd2Nj zNjdbZskpxq=Jby$bRAR?AC_8@(t*05aEl%(YT*-4^XoMj;N?PL>*+$s;*oiQn6^3N zEae2xsXR82F;*&B6*0f&+_CY!bdM^nVFrlhfLl7F6(RVS^Iw6=L(<{rpT)Rf;qJA-i@YU;NPA`#Ehf+ZyEs|;GG?ROu8}nwC$N16U z>!M(K+{-2yg=250xukM?)eewCgk&PFj`_mN=`6ELIE!B7B3&#R%|gwt^v$w^;uGpM z`q1JL&6w)?PTiTXj+#Up;#Zowf9h}8Gdm{Bx*T>IZDBF~g$)s;tWLm*IjxN#Mg6%( z{pzW)Ci7a7OxMtc2}a7qd|#_`>)X1C`OYCGH=uQle$i4sktf>lg*6{CHBnpO6pgvH z(ML^m(yysD@R*9nsj{?h9qS#NVrds#Rakm)Y?)JzS1Hz}YqN zuauH2X(Onq?hZ4i7Su?kwMMKbos_%vOau0^f$bc(x{1}*q@DyThX09=)Vv_xv;;OV zi%*z>P@Oo{KcR+?7-88foqjvr*R<+-`ZTZx!Q%+KU8R(}8>v%X9AaX^yh2kuq+sMI zy#hA&IAqj_^!>1*se7}28-fKD))ivLkdVfNOg?uAEAOFP#l+HW{6KK=cuS`>UdR`q z3W?k!AB784R`g#jV~;l$5@I7BK!$(w_2G6|RI^C$%;Km}*GdcY4{t%SYN~Jg`f!bh z=p9up%?nkq5zly=T|%3DIu3+N3+L4k?n{SG4IU;f*LY!sYt7lUyh6p=9E`EvL}6{L z*@UNLFiU5AL$&fmw#`G$V&}1&JnK~|-^`C099e2xU)uC0CJnAO>)hl0@QW=^L7Sdy zqrAL*=4BVL?Cm>*v{@Hd&qE_)>}n9(0KWzurs`*t;`+@fr=cbanolD7B}vnw^ZgiY zAqLy$VU)B^Y*vz+X4`=-?Q2>Jk>O$br=W1Kxz)b~W&*J|t%WXpZSHm9S~y()jL<(L zm8WzFVC`_xmhr!uHC9nLkAS{v!PHGb>TYA^Wg zP2|_{nV&+v(NEb0=F#$+$+frStKPJGM;aa{%A*@F`p@xJipN+CnbV)FUM-bODZY`$ zJgSHn>W%p`q`+Q=7itWrkgo(H=eiA5(_o@VgVCeBiWhH2=fffm2s~7Yw-l=5BsGPx z!urB^VVi5;$g!FKc+31@h5RYdKTKiEeCUmQ+hu4Fxii*%Qc?=z(CXHA_}Xxce}-`eu)+Z6jZy_uC~&`8-BQC&M~gq;LC zA6@6k;Hi{Mt4|dNVof!R3bM)Tp0Q7U4 zYjxYN-U)6uOQl=YOE5voD+?!A7EWM)R2|^_#5wioEZsd#rx`gkNmJsgjr|x2fP52#;%%Se_O#m1nMnXfOf;aA%Ci=&T+T;+Mi9FO90N@F07BUUE&_* zx5SpX+XZgF%n!`}XYp-@RU~#M0{Q8c|3X_k3z~PH+8H+ z?BJ=(^^}UXuqrF{5!2%q+SmEo0yeI^vIcEz0DG|E$zt!f7VM#5M0Y*-sa<<;Is56s z<|>D#PuM7>H+rz#eL4uxQpVZ@uXbG6C6%HNIsU#7Vs0^mP;@sygN}9%^lV~8rU8$M;z-M(6-xcbwPH4nBS zuuM;Ya#1&wXGqEf$p@VYNIukYVPW#hj*AKz4fAj0o2pyDVSUB}&YH@;pEqPUkES7O zBm4(rCO~94h4s+Wa=$;8f~b@KbZ^0V3=qN_)g9BAL_2%fJ9Gww_LY&nDfmRS#EhdH zFScT=+DzM0Dyc_8)&IgU9Opac9d6MdF=vbAVrLv(~z-9g$Q)SRqxeOW} z!*fPjNyUw$?R$-Wy`OosmcfXmvs3#m5tzS`|E2jue)ebY_G{+UK*K-loryzn7#*ah z(P$9Wi<-IKaDe64Pijn=w+lZ*nJlJ7q?MZVm1&u~mQ;38qje86>$u(WyRHcSE8MOF zO6y;mN30a7O|TJ6vRTc68MKzmrjPX_(u}F71^84Sy-8*IZ zx>oLX>D-lPy5X+;VcjLdt!e<(ZBU1V86VaqrE8htUCO|T+3lRrC5dHtb}3fl*-0$Q z5jS;^)-$V{VZB1N>zgQuDR+c2T!rsS87zCD7VWsSW4Rj24Vu!itdL>BQ?9&CQ!&

    #3wv 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

    XRl3Sq*LvOc{ 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%0A*Hz_PSo!7g%GXM98SZTREUgt3a6^o! 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 qvc#kI8 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�>V?0mLI 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

    u%?6hAzi1tl-R-` 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 z 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Ν{ixD^hRQ6pZb8`Zf$S!KLB9~$=t z#MF-IGODwo@T!BN@=EVTOo(fooO>kPQfZ z*uU|`Mmav+<@1ItxUB3a=3nM z%#m$P=pVR))iI18whmAiNPVmE6W%l*Y2}U0)p=|-!Cc#}F;;aD!JXPw|e#4MqC>uWWxg+bxHav;O zc>EFk7VX5=I|#>T)II0`8hl!CI4e_xHDeQ1(3yT$|5z8m*pEpK#ny-W(L%o-pYMv) zd}mO=XeoxCC>Y)cmnk~jcRZFeO_P>8zX`Pyqi#y zi9Fpl=RL@~CE%ut4iaBP?{k^D-36L+dDq;5? z%Fk6Zka8KGze-|7Io5>F)P_+DhBCMVPwkb56#;@o|Ak_&!cM>|VzWfPK)^l|Q~VcE zYmsLsHhwD5)H8KgVm01|Koh~<6qvQ>&!~^1O%Rv~H`DUe!oc=vJ_H;Klp6sGnu@X= ziJz#7=BSE(bYewHwJ0q@>;Ge2qTWH%;c~;O?I<=#QQJ+d?cgUTG(;&GdAtf3%U#!i zzLe%jLAI7nXAXI&0Z^ct@1BY<@nl4lfuz2b_3pmp<&T}phz^OuO3OFC~{>kV9Enb$-Z8j#E+C;S-6*IIM7UuNia5F=$>ubj#?uiF6JidWx-8l=`PpVMichJYoWw5oMM3v;RUI!CEF zC;6^l?mmS~U`|4!*0%Qj;8*@+`qG2*&WhAT9FdvNi-A+j8H~D0Uuit#1fxu!skFs$ zfH6@EPlO0fD~4T%O&@|5U|^YH6R#q9zyU2TsBgk@!hD-a0$;->rhug_t#F!~AVb>i zNycZI&my{&8}(vD`y!W+K7n(ZK(I@nA@`%XdwmkB4(~?IT z>$J-n>!5;KG6QX#*y;O(&C9*EP+-G#idWG`2({ zGl4eQvnXcsDjzPFBXFVD@BwphdAMi6Z_SQWDsv^m5Uh*ZZOdXMWluJ~S&1`puu%x_ z4}8C95J2Tba@J0L`mX7HBOo`99|zySUTx)R+RD>gI-B}_+Vsgew`LUNm23>W6Y2?^ zUS0Y@nSy6}$h@4P4}txDK4VzVEAf~22FjwO1H)J|~C;5?X^~Ax!r|5^)r>d)tIBs?%+{e-`mG<_Xh^rq{3;@*wI1r`T+}$tD)&cLxn=3)n(v_?E8~7% zIM=7EV)tj@LVNRQ1XxwV%yUz zQYfUec0anV1btfrnkYu!RvOtPg$}??QW%IPGGO38KeV&)D|&$TJ|Q$Hqr4v7z5q3^c@Tj2L3|&(T{>mX~UoB zefm@KEG&Qf40cZ|=`8DcOYY&Gu_qA?+Qjw(K}A&QYq$J@x%6!FG8D^<5tn325)moL zkD3()y~B*YkMuVIk%w-_WwWLqFRnB~;(JDlj`->f+y`9u{iaplIA*|UXTRko)!kZn zJ_@$F{C})2znl;XG5!1TV1w6_*>@k;-2hjSqN1sX(P4zUzrz_=*M*x*e&rlQzP@KH z49nFO=Cdh+>2?KY0^Gje*_6oFjJ{t3ylUn&#bhK|3yGpEjVQofz(DHIDZe9ck)Da2 z3HC-lf(!SC2YGx1`$me>%s|3K8@@A|gvIj?!S_fuH2$jxd#DZX*Y4>6Pr0Yv-2qcP zJhou^ssT;i)8XEtg(q;>;+P&cEiXb?TUmugmvHGUF#mI`mMVTYu4(RBpq>GWJwRZ6 zQz=MmkfgOu=we(``5BJJ!}#phR-PNebmzgSNAYf^)<480FJO7O!M&e4sju-wE^~r- zyz&w9udH9NW-DTBe&jNmRTuChqB0=B!3#9rY9{Del4UF+a^T=h`pw_sDI8x~?45m0 zwNxFL#FmuA8vlXj;#xN6>|eFuR7<4V={yp-)TwXp%bM1TWod(NY-ucTowhQ&W{UmJDlSJ6Q8AQI%FbT_84Y-d+#G;j$p##L_~vO&M$XmMSrQ+?(w z-Gn1Iz&Ydb9pcl7mYNHlxNjRaMeY{J>$68A9vq7ISY$KbE~L+LzGf}~{mK%>ZMqRe zXA>yaQV$=-yKLYD58BFH-`JL`1_9hh`oHyEeQQ*gi&Z7)7xa&Y+4J*Qqk{8&V*K^6 zo2tkQ?!iTrnT=;6MRKaX0G~J>uxdTvEK4mkPn$eT?qc$_BK`FK*iV&^ti?+eO+4B_iC&hiYS*;9j3)C3nK7u2g(!}g> zdZH@2hxcf@jfpPZ?=mL3b-&xVCJVAhl`#^QdjE#S^=6FtCY0IM+i#8d?-BBmdPm3@b5t+RQxFi(6XBn?>QEMGccWSe3W+(Jg-nRH0EWGj9bzv>e+#vi?!gCeU0f)x;eDFeN#;sr069D&A6KpH$b!jW<4KYVs z`FA|B^$v9BqW~$oFFTrm({Nl*AnRv$LK~gw=zCJlpU5XGcOQGaruPNA z1^6NQj9Pf93Y-?4Q#lx*YBH;6oAd~R)Om;$jg}?;7e}Ot9g94swc^E`{&=Rt?qbdk zJVl5bKmu3m#oo5FzXap~X^C6TlUcYEB0B1AQOxXZYWo?kjMpfZQmOd zK2mGNoA-?bk5n@hPKXi`xy6RCf^EjPL1R(vHVgu0tRXwI8TCB|A zv+-dcjliPTvGZVW{MK8ba{g9q)Bs|%7izrUiVypgAK^1{N3=JNiD+7L4-Z#h4u_)_ zsGbXUUwsUZZmmJ{eLYA515T*>i;9!a#_C;oz# zwg)$4fqx!~r44G@_xi(X$YIDV!!~BZKLwIEXor-QbuFj>0YGzFx1)(fU|H&_CQiOm zcAPnk8^C)wRnNgRJQqaK8T`k&V0pEml@X~QjcPA%ww#2tAqZkg~SFiAkzGZ3Qb{6!8v069R}WcJ9zOOHsx4a8+UnemaX@yfzme`w*f9cXNe#_B3y_< zxe}vLRHJuBvJT*-ws%}19rVU}$CdQnK~tYzx#3$|m<#xV$8aeStZf~A!-cNnJ-x7& zbjMzaZ;HLTYad=~2dEESpXB;`vZKlJzR(qBk&9#=H+A$7j93 z+Z!_3hgG|J@Qy=RI8h{rd3qaP$L#|F$bkXKev2A0;^?yI8E2o1Pe`lfghp7?`@{~2 z4D1Oxrsy-D&C_g#gqw)@(uB5f1lSL8F(%R6S&wciQ$t6qP7NXRb?p1t4C>0&wVA(} z&f%NKxdK@W!3GKeVq$DP*g!>&-lbzEb3qO<49*7Op2m@)3)O`g8o_)!DJ4ESz>U`-7HCrA+%EmZ@(9}*RTm8fPewZ6o6zVYBeBzvJx`eJucv&B3r*0 zgtlNR$rhy{1e1EHqLOT0V~%=g>+8a5K_X$_lcC4;=<@u~$&BIBV9hdLDk^?<~;3)DZj z5b?=*&FVS!nd+-MY3YN;9ymr7A{*aUiSCfB3l2F!0a<1dX;;nHj9<+Jt0a}R*?|0? zB7b6CCgh!pEPj$qMeX?V;BjcYABm(3uy72ZWSLF{uD-3ZJ|?k% zF!~Rd^QGWE=Pjk$x~#J!zg!;~yCryR*sXtO+TD?{J$?4!M2z>~;ctqFsa2s|WCH#? zv*?4}gL(9t>##LVmj`m5OwHZtz@q(-M~gTOc#Tm_xKftr$6FpKd+@AB5D|RO9kf&} zGNe_qqHTlcZ@|~q)+^Wh&^C_m`Z&%9MlcEDd2@W2>(E`(V?3n{KHfXbjkgs}?Ab?S zoA5ml+Xz0`DctZ#JhAKGTbtk7gw%m}G(HFhdMuuZ{R4dRRWR$9<2l}48^BYicwJzc zFUK~c5dOc77Y3JO>OqK~VfP|A*PMlA$8 zYu6?;g#Z-;?i|*DcAze4M|N5@C9DAeqb__)wxgUiAR2Ws+HQxB?eMU!g7kJ&#(jmT z%OCd@<53g$mEchu_m$&O*I2nCqwxydZ@f+JH$GF(%7!#j`XTN&-s0R|v`uLx10%H; z&YY%a%OMW<0SFA&R(j5C@nET2PyR%$RIYFR4?$Zk^@E_Qb5>*o{(?Ng_KaX>M(~4- zX?pFkzGcVhPtH>Z{f7StGfSFc@$E)W2v-i+y!#!+zl?^~cx z*Q$7XPP=g(H}nHq%K|LKFhX+l?iu){A%?RvaBUj{&A@2_0rf0n-1Bc1orHNZUbawP30}PEWg~pyi-VAL8u@~?a1j&%}?*OcTUP0Mt zZg8U$`UEjcL~Z2}{6oNXBkY3EJ_r~`;4}3Sr}#XryJDupIikW1iMNT#DyAYNI)aJ@ zZKaySTPkcu?Q~`dqXv`xSsrG{*A6-zH1FUMq;kFD=92&rnZ#3|S&>OM;Ngx;nt_MR zlfj3bj#aZz3Qnb=1kSy(ipNBe_&)kauK=dC(63NDSq8%gIEf&<_B^Jiejc+&1Q+IF z+O7NFql5hw!a*3fZ3KSKHV`VKRk9F$N7z zboow!MqQonLFb+d(cKk3d_-N?#pa_@J!<$UmE3xegocIZrRtT`(*aZPoggNFy5vgI z+FUW}_yAW~sM&E^Yc=kW%hp0+N@GmicF-=l3Ijy#gY9J7hsQKA+ovnhQINjpH7}1tyR| zhNEVTe?aQg?_L2==jV$#Lw88t5aEd2;4H(y&=wod470~3>7C~c7OegCjpJBTYS4CU=0c>}g9mYjyLNptm9aDutu1m{5-C$t1jiMPt| z&>rWjr=agi(JqV;8EF-xSD(jf)o?=-vlE3kz)q>67-i#BI=1t*&<9Kn4rpBFvQEBF z@dhGeiz9Vs6c_dMjhxmxjLfWbOW^FXdROCzIK}hI-1o3~U`02YKt8(1901Bpkj7H!@c4i2kP_6%uxk}_9rVwtA&@y8kqTGQAcltM*{cQDW~axL5ko3!=Bm3e7O9JTg0B62#5?WzGz%?Qoc)QE(jmn()c zY6xiIGW47p2I0ei81(8{B^6uz4vYFkwN*dWZX*E!@Q^E`1=QzJ=L1P1OFlpWQdXd( zXup~&F{U!~$Dcq?YvI4*v$+{RknfsGAYf|YgQ#6-!~7RQhzIMY9Zj2nKn{l*65W@m z_OpHiu-NrysQOtt>ks_`Wm^TTkpdusC4Q|kCw`2K(^?@HMV zE6_c>6(cgk92fvFYF~)>!Y7Bh8CagyI-{EeH>{AnhTvhbbQSFJ_3^R?LGOgdWmH?` z%!o6g{#pd?2(EBDJIyf4#0I6g15dj)a~)n-GwXJlf8<+5F<;Hs09YHV>AMeY!`TIT z1H}*{5$3RGe}4-Mf?-0IT)K+9OMNXsMmN*%0(C#4w#6`@GPJl1dc**>iEH2yC-^w( zQO4St)vkUY?K4HcvFtf~&=!)B8BI^&H&T90#Iq*iS%%{Bsrlkl_6-W~HXLsSnCI~* z47bnWYoT6&@jK^weNq-6frAl=Ezv8op%>27XXS)@=3J^z^ptL0KzBCfNQ>=A@Q#)W zFS7eljJ*3>D$YlaVO(XNhBge*5zG1q{?7ZBgKi8KHvd^86aD|5HP0k|2ybY84+~!G zpDQMz{2a8OI~Q4He)p^@%gs~0%NeJUYM|J-pS%nLmZwED0W`Nh(l zg^m5!$lB~W%Rk#SMePUzj{C_>k@tN=e?;XSK|q;rXK79|^MNiL*IDZt<^N7lz1+(T zMo6sQVds7hggZ_~mYw@$xFiAGpxC&9KJacGE&lIn9=H786}2~SU@4;20UYX0KvYp` z__uadUFt-8w%P4L_Y@n8#CP5cG#&?0PX(3voCiu_@4fgbtmMmJt$yd95h!YJnpfj! zyca&nn&yeeu9>(69F?L_$IdEOY}7jdCpgdJ?5e7B#3$Ekp@)&puPtFQXc$|wQ|!WV zCDn($@y3zeRkesKLwe`VDtByD0tFaV(3!-qt&hJSpFAag?bP`f04RFGDS`Xvi{3+u z_&%)6+T)+TWn!^&AU5nR#vSdA$FH3NKUMIQ^G!Pk{1g9&98-Cz2gXFPF)vp+8^ida z5j-_}OGW{3@CmL8r;7h8zy7hZH0SocPX!y2=3(%kTkpgka)}oD1Ol-kccB|OcUWyN ztA)h`{gYagnIBz>qqDei9`)4#Tli$$K{*TWm8d@yVazy;2b@<%5WAY~_*4%&Ft~$) zDzFm3)?%PfnNN*0x035HOr}E5h*U^ZKZg3;TEL3<=jmmIPNZ-_15e@N%?I%e-Mj>9 zZnzv8hx`pN4?67DH*3KgvoJAr4l(TLOgHQ3#A!@eO<0sDU(wL5uk z!Mqhet!>L5gS{e85-I-LM!$xpFZoUbIxx47E5PNeDjD2|pbQ!F3rLli7>E4}(D5^J zVEA|V1Im-x{5MOKJ@+N}(6)lL?89`>_HEFHxrdXE@N+P1t22}XMe29ZQ^L#>zxZRy zd*a=%K{!wYP!vkAjm7X#E)-KXtk6A+(mr?H_fZe{J`d_!9{VWH&&2#_O%vmWiQOz! zY>Drs3RjL6pi+j@L@dhYdcEr*lTt3CAs)&XZ97WNT_sh3YvD!gi;*~ceS-x&8kX3N z5e)wKFss=9Y7+j)WQv<8Zj~gS3o{P-KFM8OLYP?vTE<;h@4Af)VD`diR*{V=veu*D z2JKeNRaKO+ikndds=JhVx)Rs3LUk}8GFc3<0YBc3NF7RoCUJu72$EBA7J$(~G5Jt7U*<$KX(s%iA;Ac!IuoYB+kl0BjH3csr=t=O$ug^2Q8pfWlN+mDL2Sq~8a7YT9c5~hIEj|OR1cLEQr*`K8 zoRqRQGXv-+S`+(_WXT0&yaDf2!MjoAjs7zOgfR!Z3OMQ#X`)Fxl1=E6*`^!^a}Zx* z&z+nDFXC*663SCfN{uQ%H?+BNSCtn%!v2B_MZ8xURfTxeDYN9cluvk22Q`g3cmY1+ z&=Bg=CTxiwahGn=F5g=24DJ|gL!3iiu?CyKyOsPXq}F)=zwkP#h2F#{Lm>^|!{M)T zSRE+pS5qP89B&DOG~XyjPHcX1+IfnV&cs1IN`uJtZA@mEddjuP??Es4MoYLFXxx&j zVoP3$J226|9k0sgu61vG_P069=W{~{S66#hRpTml003*HH!$=34R8rB>ua{<8}zSd z6_VQtI~xDm_d4-_-OW;H0ky~_AT*eLFByj?fM@`Q>LZ>Ks{my$9(BdWia*58#`n#0 zNSO*etncX9j0Q6lxBcdBPGkZ4`vM-!t$b4{**wIR7j44{@ZvBr%p@tSH5jf|&TAvV zJFvqT(3Ut6Lcwz)S-D6`PmzMUFE9aoI?ekwV(KHVA|S`P*={fJ_4dw#v)w?`7?fifB#xB8qoWK>zqC64auR3umO2Jj_wCE~{r(kRkdI`Rq(&K4@r7=aNl$1huXs3z-GK^3iS7H@7lC$ zv#8G}7w)0X6+X7JP+8TsYr&(ylOHzovZzQ8p-2#G!xkAaNL ziy1N7f$K%8^7>XK=}#si^F?`eD@NY8TifbF1yVZeZ@U% z?Ea26?l)IJbAd5tJ|y_$radmMO_(9;6~PBV3OrGOIX!uy-uV)Cfq1lVDZ+aE|M2!U z@Kse;{`bA%0s(_3)l{jaHFlyU7CWY8`cE|03rR3))TpRb(WX-dvC@{&1Zhnn@!kNZ zhZ~{-QmdAkI(@9Rm9`226!L=MMO0qenhPTMQoYAei!bF>$@Bf~eeO+yI@6i|JP)4_ zx%-^G&)RFRz4qE`uf6u#_GH0poGkFCZ~=xvq(KXGuYCCjfd+N{1eRDoV7d-Yp>sO? zkTq>g;iXqysrl<0N-j6+tXeiq@T*ot0XuOwS6Z5kg)M8mE24IOF2(g17A4;OLGK&o z;UnRfT}3gj4bL7%|Cf4|RpDn1KC>#ls162*KAJVFwAi{3W+69m8zsoj{-E*A071kvgPU_x zf#+FTW+Id&Jn#6ic*1f8PX0!Y!7n{ajlAQ1TaN-rN0A2$b!;Rv0G*~S)ZusY$9&)B zpGy+OFXT_srL3}TNWfed^{yzl1TPJD&~(C&6Ctz9zZe!Y-JTr0m!a!4PvJ8}Vzv3P zFa2*@P*wi@oc1zOywV@cX|01@5FO@}@x<;DGP&@^o?md9j6<@y5QD=(<_yEwLH>2r zXzq@bi+FJ2A$@q}W*W)$8U0HCMZ=aJ@;BO}b2aYslqoiyW~Ak1@U1<_&|}WN$hz7U z3SC6Arz9rz`j7J*oPX)jNg01d-wSgRVr=H{3 zsiR^M{|mh8cZ7luBl>ViC^1_nFvj}6Xxpamr}(|^r_GeHefT3G&N+&X!X#Z`3hJ-o zlTK{<%dC@V*|b~!D9fowJj>1A^~TmU+}OHuf1QqJS;g3_rszb#Ok%Sl?H&TZxMK={ zIc=S~hN|u1NfMFNJ&VoaUKyzs>-wLFeuO8;ipw3WA@>mssH~6`pHVAFn)NYfp;;Jb z7Ib6SKlqy&;?wMbQ7XjPIa)TW-Gi5b_sj2epYsU6$r~at|JB*at8A=s{JG&miAQkctLEB)QyzP~Z&H(KBwRe}X<*k-2&--0q zN-FjSNjb{rUF=wv6Q4suHWN{bB^!!}7Mi7^S8CUjIAro(`RP2pf9-MJOQSPD6SqdR zm}yomG%}GhwB!=(NMANJgbCJ9qU4f^&H^npy-V|p+Da}R?KCUyw8|Il3Pz*+vvYYP zc~tCG-7lZ;NEw}IELb*rMt17pnh&`iMKY)U1^-WKduD!bJ;b>6Q&JiXeNtcIW+xgO z_tYrtLxX-5*oSVbH#eqMoS@5>OHGz?c zG0g_Z8YyiMIBov=JcyYQZXl$sUXu%Q*O(!%5f0eEgqOPO9n2Szf-h2AY9^pb->RB7 zq^9*%q?=DL*;wrz3Jm&Nqs(y}Yx(L|Up7+5G$fMBv$ZW#ZQ1?dD{gE) zE$=f7Wtw65(VXH}JJYtI$ptxUOb!O3b&?+GDt^1)H0a+{#ecv{0jtn1~qVQ~<>$tNsnCuYGKF#*k;6>43ul zWJ9q`U4eg{HF(h|^3@_Eyn+h%{1sti8AN$$YUY@bTV@jY+|9<&_Z_wQx2yWvjLs*D z(Pm@gvqssEZL=}>*#?g-xb?uDRFtP?8}K)Qzy@n^OJ!X_i>>u)Lq!4bLtPbP!W$|^ zD;e%G!rrYL>F;Am_Q|v03zPfN&jQ$ftG+Sv&WjmI|9eS&P>3e-&MmpRy8eWsw)3x^ z=rk|X=&y)yFVe1xQ1^(J#PMiEtup&G_8Q~QY_MODF-C~%V<=b^Uz zjZM9{M_lDBZlmW}Gv*^T*-|VoxH>T&-+Je9Aut0^ybiFRh3np4K;lqfGzm^EdgUvl z;f;f;R#v(%)P9BilrJYY^F;(G<&>N5mKN|cjsLn|COb84rfK4InmLXC#kjg&g+BNV zjDTD@P-(q*pT*us#?>JwzSXX&Yhs6nJM%huAV~LewNdkshN!<+yZ?5cuYH{PVr%9( zb#KUoO z{N|d!!_8kD-KVx-81h*Y>IDs$1Vv5^h7^xexJx7Xc2S$Ly)0^r`Yo91x;F)Qc02K# zkS3gsd3R={dpaCIi*~&?bNKFL_Y|Hs%awj$YiD*G*U}Di0N!j>9)i$X`#0^9)xc>! z57?HDkT5f!+x7W~2t<)>sC)1}K70AFoEJYZ-j~=hy6ci^kKe|0+y~lpj|DAN`gqVm z4F*1kH`@8X$wE&a0sga$6PYm#cnna0|JKKVhXPdbs?)rH%;a+crx&}2XhTnh>_r`{ z)!~3UPQjvx4{P^E+)p_sp$d9V!hVh|rDu3D9o4c$)}`ldy`4_{2k-#;t~rf#`xA_~ z6g>3q9b2Jls=HmVFs}IqR@cY2oXAQ2S`L5M_8uERzs@?}G_Zlf9}DH_0Z=R_rs+5M zeL6%KCO7Te#sMik133sJV2?q}rCw^sIj?i*nr$kr3;tI!zjcM8ela5FVB52)3jj0f&zT&>quy9ACqM?Lj&d(Q$p>YV2N z)YXT~XTaEa70k?nsddb{gb_bIjgNK_Qo$y|i+=|`{V8Iw5R$b&g*=UF zKi4bqAv~WJf8bxViA$7Aox6OpIVp2)vi!+>4F2Ng9d)llohep1Wh(=Kx~F;uyFeRh z&=mg}j2mXWl}I> zR+03&hxhMezAZLU_MED&wF;$YFYvme3v72B+Obz8w&d*_jlc7#)XxQ#pn|C_W*$e` zr_m-!qSD`pwJ0c&nTY)AitseCa3bUh&P9WvhK8#@6|c}V)t148@W4*g}Rq3`i=qs{4 z;&UCWT@qHQ#y8M%=csIb`?1sALZO7rmX-P-yz{SGTk^mAan)EQ4&OVDLsXBgp5d*;35%AI!FcdVz-STb72 z=&io#X5wCzrziT`->fMe92?dIR86sr^)8Fh^}{6yqp?HzwG+7@?$zv)s*|TcM{NV# zna5%GA?lNpXJF?Lw>GX>&tKzt@oANb-C3GdM~H}`O?>KBom{V%Y;CSn>)iT5+J7$f zu8ev=X@N2tjX%9Wo&-1!Oa8j%b(HJI;!V6qIJ}8RXGx7VF&6NmtYk<1E|$ioSkW%_ zy2~oPHO3AYFZctb^kQbI_>_rf>&6SD>f1#mREUbtyr_n2acu90mALnphC)|xmqf9# z70?nbu+=V#=v0P=D9K3b=l_Nc%$^aTK>%K=viJV#4AY4CP2iSzq9Daf=C6g{0G^vC zQ*9JvvH1yHY8`?D+4)4luPDZwsA$s_tI3D$y)q;B-?Q zN;R-Jc4vJzj)ROKn5ezgHUC8YaYGEKWoR%m{Ib`inxHVpr7v)>WX&0Sf$oZMnwNcz z@(T=d=jhGqSAM_QA##Ec;t={FF2NmE*x@cRC7=we9;f-Us4dQl2Mh%g6*Vlnk@Q|g zEtH%zAKwb~-r6WN7IyIpBk|WkFG`nHmb^1t*7HjDox;OBJRVX9@Mm)r2FK4 z{(6g_P`XJB=q}!;H!L5`><~d1m&+@ol~=_8%BCGTq^n%cVsxi&nG2}0{0rn;=EQfM z0Tbmk)$B(;7(BR;A|Gf57itd!x=@A(4Wfv9D0PW2DXT(Ts}@gJqeN79kElk_b5{(& zl8cM^Cb_tjzc%D={EKHA^okQ}eg$Z2Wy78&JTX303q7+BB?Eqd9 z^yWV>huv8{#F@7nY`n5+=ET}1%!y`SohZ#t^LjFZDa_sP9>dBxIgvBp+`-OptZ|=9 zPiF%rvZ*b}!OOvXwb7qAgBr|iL@urlW;R=(`$Q<9S1(adzud;dHiq%$#>4gk&KGD@ zb>?o)^tGHXqP?H7Io2g(YCnQ$Me>Z(WabYLhQDgMpeBA`wdy*CUS)WHZ1067jCZ%9 z)>%kQ9ckdYVQ`W+s}kY-9a>uM&3_;tHh7N_BCf!(>6u^(YPn_8KgEB4LSy@_-~PVCClo9>c;M}50W>0P_nyDK2N1=NtL?>zIm!V*PArfYcMP-p1?^+ z(IOE9acbti#zH!1u{ggqGz-qzdO~`lU7aQr*KQM)vrk%W@;VZcKbk!C zfo89!iQwUVVMMsq|G)qj@ z=hb7J$2YJ3Qo|q5mJp(=L@*?xvm!big3#tgCJF}jy=v@8@qa&CiW{DHvq-qzl37Pj zKQqLjZG26C2ZtPzouM3H+c*skm?xZyZaa(j7_Dn>IMA;yiYU<7qERF`!9=u^xs)$abnjp1&D z6fdWErb7mHA(3KP95_v1(ICM4s$|EH&PlXfcvf%kIc+bJUjc0M9aEeuzvp!ohtiXzzj`>1s*UQH4qUhE=;tX>Qiy*)P5D8N5zk* z;zb1_hua@Q$qv=|=1A)7|BdR@CqY@u9pE_w)>z!uh^d3?#}_XByfi89Vc?fK)N$cX zS~MeF;G3EkKZax?SkMD>4hk%1H;6ff4{ZC9;k+q!9^aa{%f!du?o>iQM_)8NWqP0a zviEbQLNRCT(1*@~2N4%wM>Lf|-VKu3RZjDc&zLd|YK718O5=($m2yGgWE6#F@mNjL za6~!A^s4aePcicpyZhTyr-%1%J4Bbuld-sU;X8?cY=6T!_%@58_9G`2z6(Az%qTU< zMj?@G)aXezF4f<`PcX+Mx9oa<_e)OfMmmCH^dnmJ?(IGAu-m{Jj%3E~9R>0qvbld6 zL~<5BOcxk?`iX%ZpO`B$0>nPV)X)H2gCEFLJIx;;F!5oo{LyXQBiaBA#b%}F!(Qll+Nhi{wuXbMq?s6ZKb#gn83HvpA%Qld&x5C7q(3ta8SY#xt@!krU&E zeB~mY|vkUqGkNDiJJ=0^0-z#!Bug zkj7H_W%?B(^ICmoJ;b!wixf0=Oyd>uE0S6?iDUP8mie1{{&S%3eM>-V&w?Ezw664N z0cCNKotS5Usa{}p%@dO006pUuVm%1foJe_l@Jh}T)`K9Aa>k;Kgs6qeI##`x#~p2_tBD#PP~(s)?_vLlqq%loOKl^ zW?(X$Fr%K#p7UFHIm#xZlZ1WtuT{MEjQz_1l>N(z-br>Nj&4#<$6zLwStRxms!lcS9r8x){szLp4+`zD+BB#T61hW z;_fKy#H@Tm(XNtX&d)j%lRs;gpd6@j)?ITVTN}%z*tkpE^tXCiD=pI;G||6KI9WDc zgHR9d*Ty!cShkeNnA>RIGX%ZD*f4=&DWBWj0%POqY5~K;NmR6Jx>`>4JtMoQ{DBBe zN7w4an7B6JHQg&itVim=tHzi=s9@0+WAKZpg85WHWtRwcXX=Nl4htN3uU2OOm}^lY z)=Dv*yHRpg&blYr|dXb`_*P{M`=)LaX*!wZY#Z%SE-ZxT4k&>+$)l8Mow@w zwY-jK&YIx+{57VL{hFmwRm&wX?DX`~zC6ojK}}CSOGgGG0~r8Y;_hf~b&>6-Pj=F6!3H2ZEk6@{AhC`& zraseGjjo&Fq@U@@bT0~e(3k10vjRGGKs5?E5?n6SuTR@h)2M_xLa8SfnLfRWG=2ID zo<7>Ad3}8vG*@+J&WnD0w^DPiPQ7G0^^$(Ie%;o3gRS-4zFKuV4J>0Sw9a!?+(r}B znrG@X1hdB;KiXEPSX+>@HUz(>nQ8kb)7op*+OB*1dQP?z%d?~4Cm5D*<+5iwPaI_m ze57&eIU!;$WwM<%!`3iPHB6xfX!}juvTIeJ9V2Px&0n<@M;B95a7fiQ%RGEivz{J_ zv05!lH|oQUeSFJY10JwzI)YMWM8i-8w-~-1EZjEUV{rSn#cefD>Ar>(LJ2O`LDuxK z=25G&^*+l%X`{%N-(Cr1#XaleUeb>8e8QQTjfQ4RVJ<*&4>A`WCXE< zH|(r2F?y{*M*>T^1FJNoH^VgN=_9l%O^|&|5b1#|QWy}(N^>V=e-O|l|3c&Z_b)>5 ziM#taqK^t={zqfku)LuJmD~VA=|Oe{m5`olsW47eTBb-`S8S*t1`pUT;PvAOVcrg) zeSbn|R!kG(wJuZd&1&3>c=x7fgucd|`#);jae}JeRx?f2%;>8oaot#Y@RJ3V!2%cD zj~7%yZf5d1)mAb@m7G8&(C`-02&xYkW@y-N@+s{TR6%nCK?TEnWFVW#$8?z?Zos?` zKV!%T--S|3se~%cT-urXabJ~*>!KRKt1u6QR-0)~QYv4lNg|7d(^AT6b_06O3T1su z$(*$&5!8N`t^G>!Qm3gtyLZ^HiRGCl2K>^cIbGt)wBjSJ%!n&HX7~u+T({md@;j>L z_syAV64%MqJZP5TDVk;GT06xCgZvYxSco}L5?p8NsZl+b_SFL_4DQ5rRjWb`5CJhz zbl~ZMbLJY8!-@L-Lsy>Jcu9+Dd?cYqTi)w5Z9%4nQg0?qhkc7QJd)%oEqu+1j>L7< z8P+$=8ns%iW%|od@8bnrn)7u}T+mOmZKeOLN^es&wx1H$O#~R+-+)TruR+skhgAeV z!uncxh-ajWX^N&rX8=4c$}XA|=pc!)QJnGS)C{i42V>S>iSG?H8#WuPU1x(@5^C%+ z3i8~Hf;{1=aH{bO#3kxXT@Rk&&hSz9p(%7^>Q?)<+`jE`Z+ZaJPjTH!sp@87)D=@z z;nY{|=Md1n(@3wXA!4u_n?lm<)-k;WUyvUYTK)G(xbG1y@U;)T(y&{a#p14{o6w0J z;r61ogI!tRrqGGuscx1L&9OIZ=)~~+QCZSaTlXr6=R8^3TN_l%yrm>lUBnXu^`9*u z&Q|%L6Wn>)uSqSpZ(ZIJ9lLzcDek;wybow*1Iu(@ungP9?!k}nm&3UO0>v07IBZ}h zRLp&k@F^~1KYN(p{@gav>Y_i#3?4v+XBKKEKYwE^(HUsFJI}0Ef~DTKzexapoyoCpDR(7r{9LMWR^FK7th`3o zdvNGqtB*w4!q}k^&b$++494`t?p_PKd&&j@Q|o+nR^M{ytS!NE=)IQ+8fIp9EhGQT z6NZk`bOjBoYWPeMe*TqM1+y1=KVkvtKG$<{pFJYV)u{2?VI;Sm6-`O~2-ZijqbE4? zzRA1Zf(JK($eQJ6n1)aE<5b`*9vALg@ZDzLWLf#hZna-y-waACvlIQx?VD^Te$vZ< z$5Pk0VRn)96`MEAi67XV$;-BRr`S9KeDCbb8x-mqH`L}I*k!Oe!FG%moUhwAIeqwT zw{J%D;n!x~g!?{v+!hH|JaQI!(7qXLHCL`>^*y~=G;T=W>h1@&%+S6!H}mF}?NVkm z_E>GoF1=`wHoy7`jW>m)4-F_ZX+WXRQ7FhZcXr2)WE0B)SlWl{gLPnMrda!t!DLqt z$bPY3_FF^At{RZt+Lvt{?qWxBZ6(^@>udSl{fd#Hu`p3PW{U>NC&Ist?Bnf`#6A8G zX2X8=$RnRh+as5d@xN=2#4`OFF3N#zI%ALYZ)4GqJJwXvXY2`r|a$63&~e3AwIHDdWHig2}@a90Ir zfsVgAl`&FculTRSK1?a3a0U+j{jRX@+>&k&?CL4iUB`*%FO68hBthv(dc6024H+A^iIE)xeD~BxD zo*98jJ{dF9)FD1DerZ!8Z(*{jnEH}2&0@B0OzO19_?LFCr^hh(vjs!64QSpdWozQlEzEq5aK&+q31xj;!Ri%>zQEtE%W@fOlpi$+MnTXzWIAv zCQs)#cJ=7|h8b7d|DkD>ey*4pbX$nyfsY0oSWVaec>ojKJR;2me4c zzZzYGTj(iEozA)^wXuYktnf%zGLt=&tBx8s!lu=448YIDeruU@5EI`=2T%awe>{2y z;I=AFK!f2%FbTl7h#|x#viUCkG@3!)Li9yT95Y^IZ-*BQ1H8*Akm1MpxUXNe18AEO zY>TCL{sI`m{TywP;Bt;5$IB}!ui^BGHu}0pJOw@Lw)kJ{Ly%)SnHs+Gx)}?Z8r1*) zBls&{%Mbvz#kAk_JktuE>I_qj95Z&)<10P?^>dcGuLi9EqJ{hpW=_M0lrCQN*?rG0 zb{^mEZaw%)`&%Q>&x`#(zhVn`i8zxP9ya`yKfpGeE%1Yx!DE&RI!#$DMYMZ;1dUuS z6j`W#GyLhn_oz+HRZ0B4FXRvO#|;4|280Vq;;LZP!oQH}(#(Bt|t4$Vm7H(@i+y=6LQ@)(?i#sj=P?oc(J-*FpY9xc6s4Uua0pnEn z&PEB&MFA_%xDutV8W zqngJVz_b5odMm2q8BGiLf)m%e?513M23bz?y}Y8|IZ-JzX3rDiAX7=4t>!z(V?|J_ z8|{d87;<0iaf0zz@`4keWa_u`3OK-_-8s#H6N8XpodXty-9Ok~!aXqI(yf@Wp+XDC^bw%A z@w+#%1hl92nu-T~@S@USP_(`0Q)&6c84@SHR)9dXpU+%ElWBKkNpjQ@&j35e*ltbo z2b-A_P0BZet`<2_@~phAEe%Xhd;%3Lb+`5PMO;^Elss#Cf$eyBhAxil{v0#z-HPdy zRhXl4x1y%0&AoAk6CbYTrkmJQsHeE`7fwcobTy3v^AI;T6ek}XsgA3dh9}H2wVg$s z_n@?9{7t+ovfZuteI%+*Xb5lJc8DO<@q+y#L=e1aeMElh3GjeCj$ z%a`Nh*hLnLQ+dBVte?`QUi<-J6h1t#bCP$Bq56;LGV@GpSvM-AjmAjet@<#-Q%wIy zei8S^;cIqT8jlwQ+r+4uiBhkVRL8})DIOT#rWgYOoT%7GWwDOz^RcjiA~AH-3u+KD zF|*nrh>?HEcDnM3vnZtT#c+y`rgPm5?Y+ZMw>~;r87Dja9Ur9ozuVpHANx}Vgv=Y< zkeUhTl5f%xgTf%v?lv2R=v74_dQ?zs)j_jw;&-CP#kW{wlPjKiGC`}M?eL*mYHRcKe;3Qoh~@6vN3|Iw$?(Xc72fd0kJg=k3yxfS*2P1-K?DWiW~#( z;;oqQ?2Qvle`ZKYAkxD#eBuTgzYCkqc$(qvAJz>9NEmowD<~Fr>JvQJI`u`6?t-Z` z>-pmWAb$+2DfVd%oAICkt6A3HBDv}B(-=C?NRpc}I>|;9ySsOD9;v@R@(V4S1v#gW zfBrAvp8>eo(V?s4XWANK6t9u5sZ-wWR3v@(kCx#?-_=8p-gc%(q+lpBiTeqk9q8cN ze&hu9ke_XsMT|{c`D!oz-#H*4@6x!@B^qW84LR`!F!CN$FRYU1u{nQGm=r31*9in9 zX?=h9Q+vLFO8hShFnjNuYOBpdR+%Z=SpS@I^}LSllv>-AShQv{#h)_gP!fv@_JR*Q zm5ti-2PN^qC%^*vOZ6m6DFIRtv=jM_q`v-H>{{A8|13Z-!7Va^)!%glk#82{8_>4; ztsQ2D{yy#@j#|4}!?tz5Zk^q*82H_ryPv`NY17Nk1n)MPlhCj8p2M}g-O@cmD+;3w z*DVg#6T?BlBD0q$ZlAbN2v`tp-Jf7MA-q%sI8Gi!-@MxDj(;qEkc8WU-G@ZX^q%T7*+2ef%X=eoJBsKa1k90tLz=cTt4 zCh_Gi*$4Vl>%M?mFTI$?r}dpQKK(t>SUJ}W7_XcED-0E$VR|7!Abl#$Hko~c|J21Cw_RBN9dK(z`vDklwO^vC@@Yfb< zz!nwI>p6qZv-BSq?LkRPvF8Jfwm?a)Iy#=m?q)&vD3h1%!4}S>^kI@5EHA#7pTqD% z?27+(e|Eyvou)sZfgb8hi8&Yr)%(jLn~<$ADj-;kV_8tv>4gx9Qam zM}1;{f|Kpf=Q4PSo*%(W{kiiG$V2OzV)o?I+Xu!kjBSD8KSvOD`R5|>kcT?-Qch4M zmNiD7C7$Hpt!ivG(fjVPiiV9*S%*CoSjGOsoDNp3T4eDIyzk8ny$nsOsLh}GH?#B6 zPn(w#kX&rkm~d6ahSdswO==Vb2;C?ZV49 zm^vbE9`_4Y;8Ay<+0D6Rq8oo;FJKbo^K;$ELuDmB_1*qd;)l82+{L=fZEeZdGHz83 zWte3|YU2lX-y+_J58E?*DAy+JHDyxYTmr3v$ccB>!s8~x4bB(u=yjj^%3i>^hdJxxF8Ippq?y@U4)N>F z7g62$?<)<20}W~q#_i42W7q4VTKj9(#8_5=VhOaSRDa)(Oi)Fl6YaCIkr+L>zl1m@v#fIo~ z{_-<}GW^uqr&;!=UN5^E7VtN`AzGs+cm70v+@)rPzkIUN)l<6W)#Q`cw7${9Hpa?NW<2f{96 zFC@gSU39$TKcJ#!N#``rwdwMH#rv%%>=%DUf=#2G@O>Qw==J}E?T+tMe01%CMd5_S zdRhnn*R1Cc;VTx>ud?Zu;Lf*@$5El-egYBM)TX5}7uj(C(#8Acd4X? zIhPH07bmW$@z?VjKXY>+vkLKIP3?Ki&NBEAmeTa9R$We<+gZ~RFpzzqF$1X=tdf33 zo6@jC8Cd563#|V@Q?W&K^Fw)!dVh5X^-UzA*LJ5I5$11^U$ErkeanOPv+?C4a$=%8E^!B~E;V$Za;#4C@;-?Cv*I$tMzoTs*h1WH`KfG3+j)S)sKyLh0 z4eo*Pl9o{e=KMU<1nqi)Vu@14BP~zIf0jbWy7&eB#}A|SG`5>H434;uatQC)gRi!~ zH7pUi%6R4?fdWQST`J2<44~F6w^Vr`HZ_9O=?>;vFS6{Wh>7(H! z|C`$~V{w%r2Eivx+G)D$X+TYu(|5lCIMrGElnEm-Rou3RF76(&QEQMGT@M|SD_M!f0W_}!Sv|GO(ZorpBw{*2<#op#h&GE6pg+5d7waCO)%TfU}#H`yyY2@+xr2LsDU)r zn^EcwiXHj~XI>kbI+?wf!P`6uF(702W4!b(&httzAnN(2JaZ1siEliOrp@~oj(c%g zvlIUgk8JGL&E|G7`eb6Q{*nVhDf+7d`=OuFCVy z_O9U$F(>|xY@C;i7EP@uQ#~GF=)Dndf;k~E87x{MZ^*9&q&L?1P;``D5sLc_mGkF{E^Jenvh{PUktTD{}M zvrSq(P0(rQ1(HuZvYdr)$`EY_ z{3=Ox_r>=flQS9fd6ylvvD8)hs4r{NcJDN+I`O+<_x>ZLQO~opiIq^8ChhFg(<3De zzP*?>y-RZwcZb$XrQWadR?>ObMjBU%ae8~R!!ytJ=5L`<=Uc4dCWvjt=Pa<>+`OUg#G#Q`TXyWwxwpMTtmQ|@ zG2`Bz2|4PDq-Iaf(qajHPdm{y(pkvj^m~I^=2a>} zYt(5j%j1C z&4ib)JuBqRTSjqI$dU=!Gq1d5t9W|QwUGnkxj0hS=hesj+}Ppp9ivE({nC#OcJ~M$ z6wAVGSW=XhpF%vdO#9$IA+GRNIe`hWTW`VA`M*atqziY0M`CW6Zw0}r4%x}ZWl*Y|o!`xrc9~93{ zFfxCSrtdyM&y%xaiNqrN_YN|@B#`+pn;bKv5f`MGxJ)+J&H`;VSA&P#(oC+M7yjMm ziV);RGr4xAh}&FAH*(7}xpwZDYI8MPlFR4|>b0{;rOnkON^Vsq*Um3z+g#198?W9buot3uQ+#H)*lgYL7)bDJrW^BHlmdPE( z3n#wF=Bf+H{ca}L&Sf)g?zuMidzoB2yG^pW>TtgOekM0+AfIP*#Rue$&E!^@+)?CW zJct({hH#Q829+z2m?TR{o@bL$l4sgvImuj`tR#69Ws9;^B;T;fYLeS*k_&+1Pub)o zlK+oQ){wl%Ca017kxhP=()O=$Glr7pUqHC zJTwK!ja|}T_01oL6FF^@+bm~?^y<*~udvkUG&1JrTeCtX@74Xa=V6yCGVDAOOhd@M zVBwnj+?iUAx}CL(YcAJBt38-ytzGNp2Hygu-*^AScj_$^>b?= ziP;ZVg=sWt2J=nCqMMigE;oHej!hk|PG4ZUjkRoRZUcgE1E~Pc zDmf#WmPYKAq?WL$R~cLwq$ZG?8bVazfW?^JIZU!96agm=`eN?Wb(b?(Lqe<3_ROyi z%&>>bG&73Aeb*USlcLsd+*tBES`7Sz;Q!+K4E)5k3XGX=z43J}5{j#)k?S&bm^W3N zdFnY_Wl0MF)D`YuEBLXhUq9)?UNcP6ou+$ksKD&-jI{S1z&7SF*Rm7$ z-$-_Fs*Qpoo7ssH>)b(oC41_Ajy^JW4a@b=I{m?Aqu4cfhX;hQYf$#-?FuyD>+`-% zATt)S>E-ZJ+GU=D<*=q|^X$&myc{Go2?t5dxIt3WT#(G|OKJiO-fFh8$t9YKgSE2e z-C(V(NtVGkR}+^N4ofskxy_o5+_i_4-TS|~QvSQOBgwfw7Ry;@WSbW>_fIrLn8Tmd2HQJ zzW*muTy7@}oy8Yr`Ca{<7hN>SU%@k$;Mm>|h{Zc7wlVBp6cKx+)?AvFp7-`IvNyId zt7lgq#IRpWcI%cs)cPG#T)p}iCNC`tgIUf@W=nZC2^qAO#~4o$mu1wijQGcsO0z&} z^rx~y%kK*E(l1ZurT;t=a3YuzLn>SYQlzsVk@+g*ukXBDib7TF#=1YI{3yZ`QEz%n_}h1CmUBf+%Rq<4`C~g%N^a ztY%yW|HE*oHrp%9JttI3(Iy!JOe17atBpA8%1(4`b6zI?wb@Lz==^Rz!rfA&XjAOa z$%J7OAw90bBIvNHwfMSQoj7wR@evonj%S*Hk&kz@ryLgD!YpV%=n3B?e3<&K!vdHU zxqS?p`1d#O%Y5$NFEjLtt7ev5o9i@%*=f6Zc4_`k-A(luA3k3sk^{H&V; zWBUnSQ>EInrhz|pD8j|XF8eBCHOvee)u|OL(G>K6z2lNL>f8^7Sh{IhT+Ve+2wYvJ zIo95iRqg$t65FvH_@bWKr^NEHa4}V4q>-0&6{DLw+c!J08BCM%^9?^H|K6;r{Df=6 zk1}G};xJ~9)A$TPW4(Hgpj4~EX!ylgtH>UnJ=DhjRT%bC8J|0#K6Q+Q#1yPD5{ZSA z(RRM`sSj{>W6NqIpY}nl?hi3b5M@7C5O9LBIq_3L@RJ~pG!O^X{*b}57ocV$g-lh< zK~?TEnL4T-kr!w*{6fhiLVGs$??~3QZAIXi*HV^{PIdc(#n%L$;fzXeT-3X=yy4=U zeA-##jjM*ZQ@krDdahWXcawNA8ICiNhz<)G>_^-$VeQW+ecB` zqy8EEieFl0_|F#eTS>3cAD3Y%@* zUSReY{Ts2^%5vKQgsJXzwFcZpJZPYND040p3ea2+;EzZ14-^!dTlh8o>u+XU+Tq)# z5ek3vBbX=B5)MJQf4Y72!7e02$h0~*oNgM@>fP!T}MB={{d8}t`@ViI9i2I)BofUN2qoN_VG4!lVzfTN!@83>c7QK7lBqi4L zU8R`AL;f74v;^_%l)`Qr@^4j2)bqcklxgI3q#gqg|8rn8l~k6wGx<@*Q&r;1UjJ?F zW@u^PpQCTEWQF{HPzoClt`tgP2MGC&QU-@}Ghdvgl=(t;7uzpRQp$Xht(3v_7`sv}0T=y!)B!&X2lmvmVJ7X=QbdZ8TZ$}>UziesBrt)L{DWna#61Vj}>VH60 zeU~KK{oVz@VWW4Mer$O4rd?*g_YvOQ(kVNScS|Ik(mdczEA@uxW{Lv#ddvUJUN1YB zJ6X-EY-;lEK_S^OdO>#&*&Wr2F^R>cG$mNm5f4pEr&wF=hUohg3w1?5 z3?ZUZD78&0XTLUU)*IYIH+}QQ&cH7U;ab#tU|de5?ji3K?{cn$8;z`+&PE!tuH1WC zAM>KtyH-oRS>Cm|i6_VC9e&ijsFwrB;P5v65R71Z(PlS^(H~p?j@OEIU^~a*-)TOB zeU_pF{o@5pC^^V^8eY5aw!a!VfAXit)a^@Ln?;(K+57D&^co$+@yopjLJLh}e-it#g3tT;37h;9W-W zxAKA?_K)pc$=M#SBCj3Ajo~657!7=9g+pj`zNrv=L`@IEJXEY zczf4y_YUW}bNOf;5T*j=hkR2`i>5csK~6W-Ybyr_&e$PctgEepsC%k=MTBhtdXx@u zugk`~3KdG8RR7O8X+mq1y44d`?03yOpc$f12)ZIrrnSNMRW1!&%_*QzVMia;NlMR+ zszKZGGK`z%Ux7Q&R7qtKcE;2WB6lN9cwg$Z?xk`FesXNi`;IgB4nF7R5!(aoXjH{s z!`JU>jIt<2Q5!FPzsS!afOb59_;o5bLr_i`RYlmJq%)j&7UfwjOdK4dX=~Lb)EcFG zoGbpMgK2Ubz4%>cWzHRmo5U>DMDJ(2Dsj0&B_2AxsH3nWc5IFlzY$?X_9VEQaq3iU zb*kPjYdqQjgxXV`m1Dn26QYItiHmXg^rDT08%ws%-buYuE+)AtKu(Mu2AzKrm}h*4 z9|LFQgdFd((ay@7PK>3#A3NkY^A0lsAu3)%RB+#EX58ZGNruL5t~XmGHe*-2NO+tM z#^W>?ywB^IAu8A1Sw%dhhbh$*y&OBFI7Kt+PW65?vNZ(q;UkK^4-Z|Wh~%>lj*GM* zFP*rfPDzL>7%9#FVJ63(;VmYPkd_%h2Iy# zPnZ#$0AJwCoWy-4^!1Wu6!FUM`oP7UG2xfTdi`;fZb3L|tj&90dzX1l`KR2gtE}e# zS&yYnQQSRQz#2ftyj&V^C0&}GsyWg6QvFngua)O){MSmF#Z2vBj#6H6*t;p>ofs>9 za14N%^q-cvIb7hx|HdFdS!iwqtK{I(Z{R_d#R;wYf}3<%x$Z8zY1cbD+jl1iTB8|$_ao)?gbi<`U4s89p6uNM^%q6Ia0SNcKA%E z>3uXe+dhx#fttxF^hkJP%_AJlrH`c%<7LIOaF`(@CXa48_8|W7w~dIpTXZ&mNEMqvYLAC zzZR2*osHd{ZpG-Lw$z3{V!BViG9^<_40t6yBK2>)@)sPUxfXpBHE(T$8Yf0K{F$Bl z>}QM_f4aW7unddzQ>Lw^Ckj@pw6)0E5P&kK*B6YoHfI^#$0G%hIwtrPJM6L@1s4)i zLF(;UjG=&droNn36Ydg1n)XIgqipquRejs|O!a*R@oOTh)SJ|i4^A@phnP`>1YN55 znFfQj!C9BxGJ@9{Ta~QOAaM&wU}k2r4W(}ESA_vPk>H@$1c5t^#d+i^1JJ^+FDS5k z9uwh%DzjseXId$b5Cc5N0zWF?p+4Zj-NZ%P)5I%S8=_Odf8^>kdR{lMtQb#LUB{FxN%z6iDx9*F`RT>ycjX!qOWXQ>X z-55#Rf2O=7BzkmIzA#tm*+^fen&uz!#FXf!!f&NzFbHjkA~ub}-W4sBrvA2nr9Qi6 zG%h13UsHIns^o-R?rND|s%OO$)+Bk*_tx%(sKIq3?T5IxC6N~;H1Vs$3%B+uO4lG= z`xK=otB}JGmJnV}(~N9IPmZFN?{ZddHPR`K-3lNR&@I-PW3?Ff9qzm1GP+X|k&6;J zSJ-s}b6Kn{tE9c|Kx2o*ZsXB7U$FqFlRYkKI6Rgx`drj)QqBJP_LxA1OkdLT5O=33 z%Zw&RAm$s*<6I)_P0-UUkLJtQ$Mmsoty$Sow6RZjDeCkpMr)0sQ?YoiX#3PqUS42x zPWE+<$n-z{2Q*iTXo?QW&77wfbr*J{L%wWuNVG>Zi|SSk?79(%Qqpnr zYfphqj4>3Cy~0C-jUk>)z?AEnq1v3OET(>lI`_If=?(9C%hd+bmAdZ*?~5VMiv5Y% zy(I_TqfX);@~E*KeYKQfP#MUH0Dbh)re*pX|EG(xXWn4_pS&v~;myVa>Jlw6KH~M% zxK69L-d?j7tH0w@EO3x^vxlvg&psleUIHaig|-p+L;ath9qTPCdAaT$u#jb~(z`KN zA+@>8R6}(nZP6ML^ZW>stS}RU`At;hyYEQH)L`H3_+kKoqJ5*zRHZtPF?2P@izC&3o)xGzk~b{ zZBR2)BLBD&%Tz)$Nv6axof;Sy$-tPc64Cx8UOKLXwmU~O^e6IL$!lkLN5(*zvh;+UrREX*_Gd4RPXeS&uZfzQi~S*8Y_pt9cR9{U5pz5~hjz zlPM>E&!#)o_r|=U^~Gi=>gllNHDl1wSm6^YMe|lP){$GX!HMHE5-Pbq!hMp%SuWP5 z;K&)Pq>b~DoLQ$Exfb>}jI*L_9HK1O<#L&GL*9Gd`Zo zXPc}+`vZY4oDa%IC(5-^oozJs2;)klC-qO4umNV5G=FA#;8juEI(H%cBm@QP-%pR!`u7jWb_iQ~{yZ~HG~dRwu?}ro z1{La=?lg^&#lFu#HnnAfv3d>XHMaz%yYMZOPLvNG16q~-K3lt7iFuCt7gJio4!LyW z|B+nEL+DgliR5;eRXx4>_{R3b4y35^AEA8g$ZTis+fYcW>08x?mGh)*0^-t}q>AkP1rpTGSr-wr4Xo+BhKVV@(BrEtsPFT488eC~=d184e z3iNi(UNUiQM5AywfDR!_dy3O42=}zG?oHg1-(^mS% zhjC%)JMnp!v@~0(jVvY=SmLG?xNmGXXVTEKsnV`5x8`4OUW~{ zovH3=46iIqJQtO`Q~wt;p^)FRxa5WUyY&%BlshZmPE5Y@7`MBcd71IU!I!h$oj^P< z){|9oaLzt`=xco?`;h;kwrsVm=B+!FRMfgG)VmkyKu&pJ-oi5VinXY$Ktzy%wNc!G zfNY+tjy3uMnl}E=iM*wa#pE@_UR2mNZM}hBl{PVMplA>(DE^MRZ=pwLHXb(3k3Yd1 z8+yxWx}R#8q$XLJV|ZG7vQ;HbQP{J7_y+S!Ef$#v_10@KC~coT3VmWCE(V)orOlyP z!*o$_F|eati&3|)tf{xfX}*Vgxh=C|OwsmOac?ab1JB4QdESY$=^q-8VY=i<{hO|V zDidpxuY2J!FsMEsEYL_rK%Oi<)HmtB!09u1ShPW9_T}br4fJ3_K@A(n4Y+kZv5h)= zSb40iZ2m<#wod;m>_{ojRW1f{r^;=`d%-R%d1WiY!_969CezS0V5Lp%$OQ6^##l=c0_dsJ5d0&t+%+E7EbYXX@fWsKy6G3}hNGxeWhHJb zaGGD_9g;Tn%dbE=cJ-~mDrqW*0c+oY0HxLkzG)LDv(_!6otTxj$4c)D(dV7D!^(&y zR<}R4+4gzI{OfXD^R0g&)damyi2d}^He+!_xirA<6Uem1@ehko%ymFQbaNH2Fz3QB ztB!M7?cfLn$CMJqptO5LfoR5U_3d@9`ro3Q%74R@FLqX(i(H9JRpC9R@Tj2h#=6)1 zu@oA|kZ~4nMHR64iQC0Y^DA?Fm%T!F|HrbxFa=E$j~X_3(|?~u!_v%T*`q|*NteONP2f@{8dzQFh$SlkvYYuuonwUW-;Cnl;c2zgf$#4cRx zH+(DS!vkI6+D`}HSld>Mso=_p;#KB{Y9FVQ%(+}}cv_p6pv)vO8D7p#{ht~F{;@-P zP0svn4X+T8_GDyP8iNN7+6|A0dpYnsf2+4x&SN>@rd{(Za-8OKD4VFq5PXz4d&6nR zfzAjnb+S5`ID4J_+3fSn5fVKH5j;k@$E;-vSx`{2WRW0FUL55PX6$`l z`I1T+HWFOS>gvY=gZ6%xN|oaS+LlN5Xs>=Q)7s+dhWfn8B1FE^v=@^JSMBCG&99;8 zoR1O8Sy&`93PwNFiM#|i>Ieu%xx&NNt0_B?lNIhZ3L4D(#lIYt92`xFe6M_NHa;5E zwYYlru&(mF$zdtR<4YE+AzB72*0@-oLChE|2sHNDQ{X|(T=Lo7H)IROGSj0vwQjSl@0v|jSt`(7mc7DdN;zY|Ac0LWsHoy##@ z=KREMm9dUVJQq_!?l$L2aB@n4{bAk~Wcp7>1h5i%V_I~JW(g4R-L3o*jMTF7WTbm6egm$#mU3prIGuT{68OZ}!dMog8z% z5IBYeSBrru5ZY%7;@#>0XB4QJ_R(WfIfsWCyMw1<3+Q{D{n+#8g~KM1k=@B4~U6rn#NB+>+oia zsk=md<1K07FGXX&k_3JzuKwDu0s8>Yw`@1S)H9qou^zz;WpbPq<`}8Ghi=!07K_*$ z>a%>WVZOjH+SAz0U!c0~QpZX-)DHLV(l}I_&K#-E{1p6wCX4_n$SZuVB;{P5O4N_w zZ$TWC7UY5u-G2xgVLgtdP!^KF{`$oSE8 zaTE%dsWZhF_#1KzqE(zxn4;9^!X1gR zOG-K+*C^+5-90>#Yv9!~TrU%)kD;iKx$U=U$Dzf%4}5sO8+chS=95u`Oo;gr@2hgG zzvBbM@hJa?ecXaP2hM>S3hxB~N0ph(E0t-#*Rc?-AI?qOhH_I)%8X#Y z1fm*2wD2(s7-CACOx6bLWMmY>$Z1~3lUO7X`APU4^rw;CBWBQbX>ub!Ogu~!P~t_m z*C`&g0&5g*Xn!*c0_G;Eu>n`@10*5B??>6ej)&e3s z+@n*Fc03*kfzb|Ool!W_BeFrGAL7com`8h~;jIDNTYkOE{Rz)&nx-6EY9 zS<)WTDE&>Hs6D?-)Q|i@eggK_N6(X){^)lm%@{+U7grBx2PUc@`Ujyu+W0!7_W11R z8(1gzL*QUPSUZo0^?g2Q`pfKd7;9s~UGUv#BL=h(MiMakSw4=g`>StV1n;l(*UAfF zqyJZaf@*ursJWhQv%{sw441E~I|)g0sXv-j2E*8Nc*{RTt(hr;H(CBp-l%vl)ae)X z0~N0())Vo^k{xsj_AMhO1HViEv+M=x|WOrT%NA`h3fjitQ_9M2=x- z>IUhk_I=M~WQ;|QvEGR3M9l0F@wU1z_6#-io(b0`!Fn!Yc`V|%IJUktb6|O&8}>96U{8I+fhK>)qWu?-=~@rk+79yOYU^dbvI9 zPEzH}rO6xXdwxoNsoOsX68Gv@4`gJrD>`8IHFANNYbttm6cr(CRoN$3GxKZI5PJeJ zwvw4clJ}aYSZn5;Gxtx>Ir&q)@t-3}{UEo|(p$bz`I2WP2UVvKCz$6eF<^%3_>GfNy9>l6wuA5x|AmS&-hyVy^z zr&bqbcRO!1Y~4ZpEqBYbgsvKK2vNSW_3?gOOs<8@t)C5IttXq7bY*&W!bBHhu{Pb;bclDe~;Vwi__rCuRYR=?7AUTmfM zP|x$GFZ4(LnX!G-QJosdVD~Dn9~&m1>AocA z0q4x?BIxJw!9#-mMAp&kr(5*Q{Fta1C9*XAJInBjO1Gk%Z1I&1fHSp4k3z|QBK@68 zF3a^=BNXylvh}wi(5fokjhw@&K zp9DvdiLi)zu{2OE0dK}~nuwfwei`u{!lVP>Q%S0DNf~h-d}{J4%1bILo#s=JP+-X+ zlM0zmixUxvdL4{|M}uV?$!aht?YUlp2iu-o36TI-jQ2S{WT5Ia?PmRpFe=8^DE;aS z=~tI?F|gBgKI%A%Zz+T+MWS2@Zui$Sbvnl}l7I*}+} zTA9hQ3#nN?m3zyvmEq9UGfwT3Qyg>jf>LVIYCVru5RNLm-C3D;$~G-~$`P&Q-6QtF zG|A5rF%Oll1T(b1*JYsIQOZ(MC+_43z zCGVSqs6U|E)M{ePm@{it=@YytEbG$VGsaGkx9ZE_PaCbj3bGyhG#A-HJBech^7e_w zp=2KDr)~!1YN!ufNSkr#!ShGU-{8VtM5xKmTNeONpRmmifCqq2vw(jnTu&6Pfsc=I zCDGnm1|ApgG1RD0hlNp!RvW;QW;*wyeI4N(fbG26;48LHt^AxhihL(kxEoTxe+R^nwG>V4r@IXK18KtS5{b-oK`A*qW|XO_u>XagDr#0LkABJki{UI*cO$ z&HwQ@n)in}xF7b1afnAW)LZO(c!ER*2}2^?DVRCM9AHl+)+(lnR#;fti#%9I(_RYj+FTW1W%qD%)>y#jqpaEuYBd68$ zRc4osdUN%~ud-#;7L+s=_gfe)7YH&>%gr=St%*vGeeK9oNjDcl0#` zLK_Y$@mHj#-;tvQ?Vm_C{lz<#_?1-L_@RWMxfR8^e0S_f0mqx-bI8#8_SY0m4$j?* z)EM%2IhbA+NRi?|iWE*S{niQ5IEg%#?k1Y9kJ3pSP78Ig#syp_|@g+Oz zHut&qL2_JsEl;LB~M3@}lil+`SID(^VqAT9W09b(6uUmhmMoYCY$6`rq#B zps6kEB% zjS_9_2{pFRVoM6v4dD_6H7!WfN-rO_`KZA~l7>|*}zTeEIXC%gDMK;q^iy z8sY(|>Ye40o5;)WxSI+Tp^sF$`<3psdp7DjwRz9W_92GufyZcYPQGJI*E?#dzWWs$ zwugCBec#g;I_}PGyHni*59`Yu_1&Fv7T(IpOzr(RH1_x>Lxfi=g$6G{{5^|+H4`u% zbYhlKr0LU)Ax5eu&v?7hOP)USgN*-c)*(S3wLp}q%y0FUzS(&?QLm*6WHI~wL$|3m zBZUloj_cn@OZO(z$vjKZJy6|mJNvfR@S$ydMdMg7n3oeJL9r*}7R#V1$_v=#ws%?n zzs%ZKeAk@0ty91LHbvZQ`n;1MQ_fUoaCNvUGjuSM}O9^DB+KCMWA*Z!0DV;IAP0}FCDmLNvdxM5yML&|BN{o%w%*~ z(n8;vO@GtaVJqV}Zlz)&;4H8DiL-p(PYUP}6Cv#W`JnN?4etk(GknN+^<{hv`uBA? z5)b+}vY3VA-j@zI3;!JfES$`1t$iaBlq@KBZkJnmXZhrcYq|#(5;?PJqp+QP0=AQL z*j@qf6*+8En*kly{c?B5p3QiyKVJ%(nw8qL=N0~K6muI@PLk}X-F-{tkXmp9E#a9I z*0bHt@nBw{O1szDEB=HO+TO0(V6Yp z5sp1@`RK3FlYuk$B2l~S-m%p$&U@YO1E?v%Aknjt#lk2S3rU~Di)N+ZZ_|mIUOo>Ii!xA*wrx063CfVX`Af3P~{)^-XsUflTF-Lpcm z{;m35hrOgIT?)C(XMBB;U6uD{iN8_B{2wYe>Of`sx$W;uTRN-JjCh?1mwG^c30BTg z8LLK7W^m$n_snYjP&)^2=)F#yO@ean1bM zXb_v;(7&@$nLn>>*q+YYO_=_#?7Y26?O|POF-Mk1YA?=!&@C+5oA*9<_be9fr+CrQ zbrKi&TRpyoEGr_dZt2f`n)ZUlv)rxO zL_k<88;uSgxQ;P88#2iM&vd5H8SZFpk4QEn zn6q#>39Vl_!1K-IPL8|K*eXt6Xe=O|vFQ{N>3u`{=t9Vc=C{2Nzanf3kVkhKw5Z4o z9{2D)v*=Qqd=B66!{qe7W@7+Izszs*n+>1qDG?!5!qy;VgHkfF(^uXO9o)m|S=^GA z?WN%+YE47s=^m}2b=OhgELP}w_OaybzB$ZQ=JW*|^$$&-e#vxB24fIOa^~uPAV@?F zM|)4t+4{ce{V7xm@ypyDzApU*o!*k1ooUi(%g`+sd6B;c-S=6q4y!_}Kh`96AusT1 zOWoR%-iR^Ytdi_|t6&UkeTid_{uqjNODcxH*=E$&d6rD+uYf>r(SM`po@Icg&k|x! z^|bf$zC!B%mDjy<_pBTXJor9KyBrHNUOZ#B9Z&kzcq-F?U{y+^OVj`PH^bu^35GM) zWd_fni-Mt%Q;f-??CC#qa6tG!V6&OHpFJE5jZbpNyrr>Kk!Cz7kR1;uOiz`X%k7t9Af9FG1tuiA8 zti4RfzJ}?_^9ZeG7Qt`BcWS5b9EP_%gAO&0KK8@b+NxVBIY0)=keSObeF$l=>@&oM zvhvwUTtFcVs5VKu)t72u>Qcp<+}E$}40aMmSERpBRu{)m>(bv*Xha3;@oy4Z`8DN0 zwk5~)4|BnT7Oe$uNuhn<)QSD>T_ZF|SkVCW?Fdc(iLijAc?9TLK1sjAl#Ec|h^@xe z>dOO+H0J9qQVC7+HGUC)vm%^#I_>yy5}Rq=>ha`i6R-AUMTqh*c@R%1x*+@ylrZOs zev8&N?i=2ScDYb?=f?TruQ<(HOsL@VPV-tqf*3aX3r<1?zQ&{M0ezXkhnt+{-;tW; zP^WOkc>D`K;jGmnM>0WJ``l_rN(b!SRbbK5gi59!l%E7 z64Af1oW6eZ@tode2lxs*_n8Tjj??4EYIgeR+n_c5w%TShasTz3fYaF%_^0E$mwdqh z_kSW}%siQ%!qUO;iQyQ3hEfOnG=Yoj=yQSW)ha z!#8%0s~8eWR`qFdo+wC;STTBf>`RN*HTGQF`2Htv8BtZfXo2SVF=MNrYuJNxmLVZM zA*;Mi>s3*ny?W{Ad$x;?HU}F=dX#BMcp|58JF@dbAYV`K)i?SxvlY5^hzR5GgOEh>ZU|rNHFppxdBZ_Up7(_h#qpdqha=~X z@dm4O4yI#&uaDsQ;PY7&rkrIYQ~Fc?aV+z21>8ukFKU9)+`{Y{%m-QU3cv|Jt2)yE zp3BnkbT)Dak;-n$vSo;%%x|DrN=iAk_v=CxwF61*<8+A{)vCq4T17-9zmd$~A_kS) zC;mn;w7938+@;J0&J*p2x=-k^fWO7t;%jV`uo^fGqeYp)jTGZuq;PB9Ix0MS1i|SQ4Wu&%dsprEE^?lEa`dB$_&nu!3apj4asto?b<0QKpNmjDok5P#{ziX_G;;Rbm6>Q5OD z#GSE8jGc$t(d0Fv)6cH8yIt>)Sqba239Etx6|RI0*@WK)2^&Z-oEk~Smk2R5p)dUs zjWs@!FRY#c^PWfCL1@7y>`M|ZhD6+)8erGQ=F>A2%ZoGwtYN+C+*wRLo~NcaZ@g{5 zN`6D`Vtsn6L1MF3($Mtz}&7-WG@BC%1rZu5*41lXeipR^9%M=BVN0^qE&?tPz zbnG1{>|1YPMI7gNgds0Ob&$yHwH*Ew)ohQ&GJW?l!3{sySrZX?#b@cn4IiKoXE~5@ zz;dN{h*2{;8(vhqIe2svlR{@r->`qZW(UZ=QcoSNFz+1&n}L*f>_f_Xl|7ZNnj$6n zqXd1QYR5+*oBj(!WyI>h8PNNI=DL+BLsuthQ2NWIcx=Imn9gE!_6a4Ygxk7kjo%l& zH{Z{q@$Cdzbxyz^39#MmKd^?PGyWs84bgH5tA34hBcXF`5^2Bw@RYFM&gOUSrgxt#zP%#$NHpV7yhgq|&+`6B?rv9nIh#P_nb^fSVp z6GrIRipQpW$eUA&+A_fIuPwGQBNb!sqgj|K^>oYt>w4gE12btZrhow}rNOv1*W)_r zZ8Eaw9103w+^R_B?Waha*XvfKvZKG|vL9BY>XrJF%?_n)cDdZjW*@0YWyc9kE_=Nq zm7Q||x$JYZ*^N#X)P7$!JMLa`*;}*O&Eb06>c!pJ>|Be<)qXgeU0dI_?Tn~?>W&6U z&Jx77rfVZ8o7SmA6@%n1S1Kv~6SG*@m~}(%nEr2$ecC=UF4uzj&i20%$n?L?&B;A$ zDZ0c^BbGlc%h);j{T?e;pEsO(u%@seR!UEYskImkO3*}ecqLaEMq?@T6NW1fHs4jb-{1 z((UlUs*zvsA`2e9ByfLjwsq}#O^!lM;t&$E;W%LpzM*=A3M(alCEg9(p|2K%SQcDh z7LG*Lxs<$?gK+x&*3ZrIuFGj|r{fxpLjpGD1~9cXt}(}ToaPB&)VQWaEb27RH6OFY za8C0d%?Ed<^zjk}bS|ieL&CiZDN?_f^Hmj+H>Pg-STlj@zLS-nmEA##iJi+5S9GYO zICsH3*hu-&yzAXN6MP}ji?Z9@Ixt`szh_)*XrZN_`F`9-1}#{m%r&}rQ0Lxz2Oo2; zqoyivP9(hFTnWF*s~he8Om#@bRy$RI!G_&-;rJ6CP^0b&@Am6x*rD$D-b=#m?pQXw z&k2PtFp+LYGJ1(~X-CK5e)0Bk?pU6WY1R-9o{ur%OneK?37Tmz9Fwvgu<^SeWLV@~ z5JJBWI_%7U(^06=StoI0W-%mh-) ze-N==xH}gZPUu|FXoSpy1V8@1~Vt?eu%~opBWp()$aa_CijUnj_x1g_LqA@nNc&7i{;8@wTuxB*P&}R%yHjF&-_Qe zo_W~lnNMkc%6Aa{ln9*XApA9*zt)3I^xI4~{wk@Swx;i2S_f5;)y5Xl8CQj&b{piq3shas9;%|I z^{UtGR|y`O$3h&P*LY;1frZJh)tfse>i{$A|8|vf$aYIvfjiy$ZMWTG-I(V2ZKn&4 z>lSm_1#Z|$naR5)YuXz5<22vTUsHUXKz4P}Tm1iSb;0_TTXao}sGJUqz_1*QEi&_V z=a~9X@@wBT{`OQ~Vz@-g&D>)En713{M*AG1^3}cX^WE7bWJAfjQ~YgXT_5r;t1KH&B9&Fc5hAz`W#t2vjV{+d)usF88W}ZTdXAyjw%;d^4m3`3^>N-g#^nL z#M=gJi8pgDd0{^$ER$|xGy%;uS_1(sUEm{DDUG+)6dJP9=Mm}mJ$Kk~-Z=llP;67S zSZ;dRVw+8|IH8_j3?u*1Tqg4_yhB!t-`qh-s|NF@XYfqD-%vs@^BjxvN%+U50G^5_ z1{Qq9TeygjVa$*$6$=~rgtvdGXcU6G1ZY?D1H59veZ7!R7~Vj76Qw%mr*uu!csFG6 zPgn1>z^wMlvGn%L1nXe$T~u+y>ovvT_bO`^)+o89+Qw2gubu@&bRqw0+G;$>r+@h0 z;ZV;SMXOzk&J0$Y!O6$vi}=GU`h^xd-sf2ExLwJ}o5Dwf{L?JTR{l-PqY0&WtH@64 zk1`Xw6U;>XBd%n*=@kYBD~Eu{=NW)X1?vFloKO`u4qk&9%e$sTdKey3GTx-AD8)D6 zSmMb()M>0`ZR!U#RrPr_(v~uVA7pbF(~>ziAM{W9y`LS+TYM_5AzybiX6}M(9ZjfCsExZPRS659P z@RkkCQI?x+IHT!n*=LldI>^$lEZt|KLTtAD9>h;qd^_>J?lj8oLPK(lM8-t|_>BO* zD*#()0B1G6EYME`BxcO=P5-`Ry-u;mdhr4Jui>B1YAvB$;gGHoz>n$HoaitCWBAOo z0V0VbMpta!_~ZVEQfAp6KXS_a(~R%onJvjki=rEXnjCkriQa!7Rb-M@p)3jS*iu}H^Xnf~LB%f(SX8}@hgtM-o{d*gi-_sZ>ar#$fd(Cvmo)X`aI^?$Z?&yD z|GY|d8TkGUjBrFc?;X4M@mYjS>$$|y@l~SKqNx=_#Bfa8=2Av_+Ibq5#FF8hP|Rc? zDnG+H$7MJ_$Z!rB&Q=BvBT(>a)k5iKGtA7vgZvv9C zSV>OK+o$P@EQG}~(fy~5 z<+W2Pu&u78`uRCGs=({t(j|)(fXg&q%2q`9IlGt*fxob^T#azLqt_#tp36fO0yAQdeN70!P|Y5K2sq}d_&kaorLA~l|d@66jZzcqd=(=#|g ze`ZV5`{p7;;#u`T-clHM+$>A9Hh}7P@Yma)Q&*7D&-m@9_ z;aC!GQzq8I{KXM!^UwKpKftZUYbe{C!Y+=)*A`aqL)qRM+!H+|Clc%xJSp2`l3xn* z8jtWY2TQu5x=o_B?=ZKPD-S$5$Yt#2?G63CAHN4b=!uUJ?p&EHvNvqZzOOkf5c`Jg zf$TsS9<(*^xJi3~e~tPF-D?PCNBvs9EG6w<9@j2sdx4F_z6dDJtJ(7+M5RwVgYyR? z*&cA2O78y?2d&!KYf}V|vJF#6}cr9X2;WP zcc%aSQ7qOwT?60HZJ_XHa?nP&7d5Jp?F|k_SIG6AmBr{6%o4^()eCP%OCf`@+!{rs$w+13l$+7LWWBzpoxb__{jo~cNo7b` z4hKjnQJ|85S6AFxdFsz+#g7i)bXnvVQH~Z-zuBtI)h~U$GJVghY}xSpRYsqvd(v}R>^`hWc1WGt1|67c5yo4&NRYnZELb?V4Jti% zsnV7y%{ea3@EOF3&^0P!7jTqc#Am7MO*fLqJ$nX69{jIohheZ^ObwjZ(Qw}xJI|OL z%REnSm?gIJLUgQ8a!eTeCHp*zBjk3ObvvY8(9ksW%fEHzDk+G zu@TDEDrm477GGcGUor)=s}=MvSMqeJC6fNPcXa55@_N=ve=DoVaasCGl6qDIoM3+> zf1BRe1+BTFCsE7mI}!cdUmP4q_``g!{NcvSFYBr)mNB!dW*ohc>8g=T%y5k}QE`munO!xrQL$=n0wDI&P``+- zb|xzJlhj!=moGUGd5A7mbEe$#?9 z+`wJv(Q8BmFY>4IXEhEmpMk8(V?P{9%LY4IR$S;Rz|7Vq#j*1LDl89$8$S7vO7lug zR=1>iFC|1DR^0gb2UQJ^94Ft&FK%38ngC+yRnvv)7S*;kAah50V0>@*prv_%UXLpX zKFakG2|l9wC_H4rLKL8HUE?a{ny5O+n^MVeR7{EU#FU%)#f|=y7*tTh_$*9+@LhIl znbzF+RthkS35G%ZS$&9`-FSCza2G+ii(MlU7Qd>$R=(+YWqK_$up8e6vDh;^xE_7^ z*FY>OW)aD6a&aRm_LxSz1>}N_|Nv0xyDHy*>R;!OEeFs`A-CRWiX&$p=m62IEi&s63{r@ zFarsYKJ!5u7@o&DK0}nndK-&zGOP~-DkNtB9ck#_g_I(D(|U;nql>r~l@W9=Ea$I( zH7h(#@y=cEqU;%EG5ud~ZkxtAqa_IujU3WlzY=wmaUD=>oXqe%>y){y#&6*O115Qx z`5dxI;wt=wqnOvh^{i{DXCfqO{S3oobyNjE@*r(x)M+vb;X)xj{#$Sze9)O5a5YLm z+@wE#KTz=gof))G42o(=azP7q49}S1;l7`2Y2@r?mZQ<9XLgMhJ=fBIV_&BK#;X6u z2L0C+mDC6=2^%buweLC2S{fbfKyl=4gAi8Q?XuF2IL(cnW)#PxD303>Wv#Sf^)z=v z4&|)0#Kb!a;>JoFmS;5KSkrd{I9C5gjd1SzCVAZVeJTHHEppY`zflv?=UgQoeU;wx z**{i#Dd{Ujs5aFleqP-O%IOMrvMho2DfIYW^0;dXVRZM;CFFs}{c?(s6kke)d?~(< z?<}{yWy0!Rr@4c_`BJ>$2Bdex)yQps8W+cAcByq3kUI+em%+X>`d%hk`#-BMA)CKJ z5d|545_Mu@1kk)@iN6^ldR|kE;(`}1oy1v+eqIv;r61UqmIRxo>prnR*)7jO~2*t@8F*WI(;{k`+cb&Wei&YGPZg1eP| zM3#ioKfHy5SW(hZrq1oTMGA>V$3u#$VUp0qnEvC7dgpIk>>_W(ugj$jFnN6Gq4)Jb zUTmA@3QF5WZRu?h_5mQH&KWS0?Kzk90364nS@g6*i%id}0IwGC?*vRtre|9#U6twC zWc7n-ty?~2FjwW$jLiIWGbTj}`MRs~;I&3bqa+a?2UH2aqxqHMWS&>#cSMkTn9E47 z?Ld>nP~Dl{bA>eO3Z26V^zAhUhn}2{5}a4^rc-pDX<34z={b8c#aVO}gUE}wGJL$n zOZi*9|CX!b?ZvK%vQFHz7)W38EOTsJ5Sk%}oy>rXRnGVbrF)|*xo4JGqkO1pD+T90qTl$xt zQto~T{}KCou5$?FE#*zL`is3H52pdJMLF5!E~V02APu3qzVPPLuHPX`gjXB*C~r91 ztQ6dCvQz-B^QC6NV%Kw^J!0j3XG3QQCB)w!EY@?oVjJKAqbn8zGm=Vm`#VAt@gI0M z48~=db?Ki@#uWN+9>Rvl^N?oqi1~^gAl<=c@PI*)wnUJ3PxQfReBqBTUewX}_h{^s zi#qVj-uUR?7CZz{MPcl!t^x@ca~s`*t2fY)NPK;v9dB+yHbK!im@7M!w7*a2l>Kgj^TeD2 z${;&OIh2b6`UC~o?P9ww=y<(og=CAf{9v|_e&^@qDahs-L+3*$Yu}s>Ip#X-_08s} zOBFpb*L!rKHV~WNjGf*3b8U56X&_}RJ*x!PXE}@1Dvqz8ZmnpxdhKr)8GqSp=yd5@ zh3>kxGZlm!YtA9SnEC|;reCJ3bZEuQ^U3kL^;E<%_Y3rDp=w!6x^_zobSQ5yZOU%O z^**9}^36DWs>S-6eJ%AfLZtN*wwB&k>-DD2#DcJxDE%$ru@wlrZi1iW>Qnl>u+6gJ zh2Qs?K)~G^X3{C72d=WzN)-2m~wcZLfxl+y}Jq)^jvMyCP$pE-u23o_Wa`x z1_MlS=pgd=Dd*0=kcA!SD`hMx@wM-Z9P=iYxtmx}?-=@=TI=0X<~+8akVX{yhU+v4 zfR_v}>C=y|(muCT#6FF3F@)#{D99}Z6_rYMq?_+!v+T-JxK7$eS-e$v6~wNmn&dY# z9EwMbhgmP4+s*2ji4UOB?!+>l(glxw;WXy^h2}72&+s>W-7f;5d`&sHf={8TQ8b9w zxiW1nGv+DmaSbE0y93T+_lY2r<|gg1K-@KFL$=?J0@vJ$pListsMeS(R!!rMB45ZANoAp{Lmr?5g40jfvXafZ>3Fk;f>5 zv6tveb66mDqd6!rfL;M2z^SC6DyToOt5QWg%Z0a zN_HB<%uzFbyJ}b;uuu#R&;%XK`zz*53da8bU>+;z$2|6}BOEd@vFu6??q<)Clwzes zNy(mK$qa6>DV0k33@Hzp!!2UF4Q8KGdVIAKPf<3R?hU};O7K#;#SJfc&G(RQ*k2pvXjmpf zzbzzq<8@+z;W@w)O*3E9XV-X3(ecwik}#b-WSa4jgc&BGxsjg}(r5=aH_S5jgp@9; z)OzDTiU52=JwGVs@?yFc3E4HFSTTN>#f%8$%`cHk{thD29<$(F!Rp{Jfi8GxiVcn# zM7)WnX(v5baR0v@%UtdxwBm4{m{?@a6-<<38k{Sz2R7`vf??VipL7Uz=x+et$XUCa zUjw(~#DS~J`DJP?^e)^_qLDuamg6Pb252_3=tOhM{Kdr_D42NRN|Qyld5On7;D)K* z#0#k>{TBd(8oRSK#{Na%bpA5ow48U8y$K}(E@QUqnqYX_=T$G66kZU>J%IG=Wd6(7 zJxH9V#9Nejx8XmfTf=iU@mnOCZK`a#s;yVHs8Y1VMxGIOKyg)yGw!wQ1WCL(H*gM# zLODG^0KcLa?f8c-h&^jqV30*!rV*Tu8n;e>+b*W=`MM9DZsY47exWm5XLse9leKvS9BeOvh5vnjQ4 zSKs>x?e6=azHv{pyYCW(Htz9LWleG_@C5ED&g0)X{5y+(XX4QjKI|F9uWhQKPwK6l zZehN=Bg%c-;XOx?+l6tR-ZFZD+OZH+Q)wO$I^2CA_N7#N_15kV=gPJ6l8}=}qFI2y z@K|@-Tf4j2SiV!I|5ZU=dKzyw?FQSe^U}C}(ZprwrG;@Gy+U$Y8R1GS>ANnjq?wjx z2CuyGJ`7s^24$TeRA+tQnQ7Y^duv=SmiM(?sCLPYL%AHSzgD}|UW;5E$wk#DI1Hn_ao|)n>W3VT(MHnsyNwlM zVkEqdt!6!q`ZBTcuR5^{b^l#!P8O({DI@Va-7lUd(lt2fR2 zd7i)tJaBxRhuRizp-^<=+5==-jLSal>wb4oMrNUo#dEc{)#0V&QRaf$oJV;CFf+qhWx(k%tDLsON$x z{RUCb2T}SpQH$>BqnwSa^f%NQe?dRqnGGe4t4ua`Yr`pxs|jo!L6d$c@b?>NmDfZV~FzVP9>gqqg9O3?y7_afX23?fQ$zqeh- zP=VAgd>*`vCkY+27~rmLdigeJ`d{obhukR<-e+(6o%*@GA=3DrqW81#1+f85--&2@ zMKPKb=8{WMZTJNEPSM-`EWVGg?~dc@JDd8bZBrvi=4y*HPNGc#PO4*4MEg|PI!aUr zQBepusi@eGs17@a!gFSTvFY;`Sb2BZ0mfPpxAiXAN5}mrv|@EW6!;SMIU`U%gC%d~lcfdiWw|QINbv&dOIwy#y=* zS9{*ZNA@Dt^h&snz^7O^aH}Wk#D7Z@ub)>DHS+h{k?{KmxfW^f{dwLpdck|#h>(~=$?^r`w^^lCuka- z>`u_ETIcenyYAymkeOk+JAq^A301_B9Gpll`)LV^=Nsji>FpjyB)zx?7p)VF6NSrF?49g!4_YBRwMxlXYP|X1{O~Fz#a0AkjsWkR~RG74P*3 z-a<~*-*ZpE(0rF^@|Z_%P}&Mg$(lh@3({dQ3aB`z)@z7_4;^Isid`I3J2l!TIj$w_ z{ZiC}vr$!y<1+8E_o_GC{0SA|vIjD16?-5H1;bqX%@#{+?imiU#P|OwR>qGfot*K< z@+YS^m8_KF6<;^VUHp3j(&)f&DHx__;sgfFOYEsghD8f&g1glAo(F9H;Tz2b)ZqT7 ze0*2JCRRt#QOU7|_}4oAf}Sy;U*B!`WUS`t_+APG>leH_xS#+osF<@^+C_4NnJT@} zJZchKVb(tBno+0(qiHX{HfL9482Ljz_vM(E0P6`FQYbZ}ag`3pVodeo`w4i9-{5aF zzPGh^E3qYSFb+7-z(ZlFxJMe>dBLbv5n z8!B>J_S#Uf+w!UnmAEZwLeflS{wefohC#NA+3;7j7Ol_c&|3Bx#RmK*{65tcjVUS* zznlJn6-xN$Fnr$Hp`M$O zbMCpEXeuOleZnLdTF;M!54(v9=?&iO(eY8AzU6aXA5^+~e$O~l`SdIU#H{OCW$H^#7?-?PH3syTDoFwDbzRYA8iE`nd85;y6gI0a)!x$> z08?IaLT&Qi+PwVHvRna6O#%3~%jNti-i>QiIa=AL0rsX9H*cT6&6^aV*x_&XoI0~* zJg8JZ7h7Fj*zlfrYjHgDfpfMV=zK z!5H>X!_z|nVf5(f31~YxpqzB zTMe34%T>HVde^lsez=@Th4|`I8{XzZ!SL-kR5ALYJGI|+)L-X+N~MS&vgOddPP1aI z!R^js1#dOQZsg)gFotdpjiLPNr=7%pw4Um(@H`&3mzw44ijzx&k`Xt1`KFF4JNET= z@9Eb9`Ta+LF!gy0rqdsch(c(Pp8q9o$Sk;@7%u3#CP{+%HVO0Of;)&8)FSXoF1RuH zI_n=esDX|wh-ip>kgMRJ9iWWP#+D%l#W&prVjOQ$ar_9qx|UtB=8d*j$Iz?XjxC^w z+HAivJZsghYuyd>O>M`KA*QEo_XZtH7Z2UEXd8WdhZ%am%J!^ldN$})4EgqqQ2Nj3 z;^(8od30-W)8Eyv$*J`7%aQOq@t=$fb>1$$JscYtpI?ZB$VTFget+!h8#l3l?J7F{@-6UFEZkNhHHc%yM>29IbDUaW4T)a;p zCH+D>rvmRcIm{kfg)ylUlxOe;L=ObjG=$qBqO4^vC<(F0Vzk86kJu=t*J2#~rGne> zV$1wHNfq4OTS0PKgbd}zk#Jj3cG=2CA!zMpss!oF-#mn6M!T`1bTw{!cvkt`S17wH*_3m#f-!=@0 zR)&~U!M)P>?I}JUJz-P|iY2Qh)IiaW4?NaVjj8e`TjiCu%IkWoOin8zBNU-{$VW}4 z6GYcayY)IxKJrz0UW4R|iL;vIELvTtGJ`4y*ebuIR%X_iR@T`n5AgNTRu<=48Auo! zTCNPa+NDq&SFvepn`x&SY)Bo{p2RIJ4gQ*HZ&H1htCG`%Y`Hlx&~~$Bs50xzBItB` z$l_!BJ*Xqs@8{cks3w&Dq;2Kbh4i}gfV@^36q)mr(*kGwH&z6<3oVgzO=MA&-$Ze{ znA+3|QyPXOWnGV0EsE=ClON0^@LL+VBhK5yaHRbWPPcCPeM;D zESh+aXP}F1W!I~+;k}h5rsC#sGAsq)piaTL(0aup&}bsyI(v5d~E&ZBu6EP4q- zgQ%Nh*R-gbEa@#z8kYGt3WAtx_{y@3!4H)-Ijv%a$=N$F&YK2wj+p-&e)+bo`UbV{ zYpN{EFM4R8d<7ym)GH+PMVr)!%2fuPkL8yj)$mK3$wxc)A298_QI);QG9##LWiOjl z*)af{*nzmx5H?rcN7zKpyLyMAAwKmivh_&ONzbDmX#0Ij&mXAPCyk&rr(P_-3|oN~ zr=x6N|8tRHZX@9oZpRM*MtGjIt zgeRP|)4fwuyLsW~0ZmiGcLs_b2$ZyzlaW9n^L!pYNFeiIxe-H1D8o;Mf8Z2@oq)39 zG@>$0R&K8lE;8?!sJy%>Y3uKE`ON&Qfm38VdL9*v5G7gg8#y`trkM9XdNX}&9j%5P z^3W#VcaF<ME6)_%sW{~}0fCr+kh6!p1F$GdT?=PI2GE28NCtftl9guwsgQ+K zD1hwO3)v?JsgQ+KD1c-F%9a_)K`LY+6$&6t%S5NnXx|*9LKae?0J5mJ%zimYg)F2( z0VHlzvbAGf4qBv;g;XejEbfIY%t0z-Ar%TB8IjpCPsu?lWFZv_AWM27Pt8FpWFZv_ zAkXZD9FT)l$U-U6tgH*^uDilC+ zjw}o5{vp;*9sSkL&?cSy2X6NgHNBNy|TOh-) zxB1N)dJ4`b&DPET@uH*ghTVAYeaJEfT5Zqi+}F&oI&^m@Yr?US?h9NP(=zeUEABS; z#SWkK;iYB`!R0h91b3vd1@DtDvLE+1zRiZNtv)(`l_v|{l35_YGDRh4TR1$E)j;!A z?M1KUl+>&|JWhv3+I$xfyF@aQPaF2>j#`|~#=AR!4?cTo@5CDvZ71M-ddjyE&OGCpjAxJHe55J}T zn(X?x`4v9BD~h$%l_W>7Hg4}Z-P%pG?ym0OunB2e7dvfQ4mW1iQZ0vBd{6d&t6~BJ zP2*l#$x`@?_}upfI14^6IV3lzu>$T(8ZqQeD|ePp8nmdWIKZ&QTcCbRK5z$rqptaI z*$cU<^TSMStX#oO=d(8Cbx|tfQ`-4$v?r1tTg3en4uRosqW%0kMGf;@p0af9VJD@4 z4DrMBo#rEN((w4LgF??NZ->O3Gc%E6^-%pABEUEn z(tELi_Zz2jO5vLE)lbh$F{c|qj5|AEMPmmudwg!9LW+!MHvaf%CE$H zXS4ax8|rJ$of{_Qm7tA4+y{iy{CzOS^4$Dqrk75PXuNr$j!0B6#<`MZ!|VACbRTbm zT*BUI=_LA6+sx-d;-y?Zm(uLQ@+ziHa?Rk`rbTy2BiGjD?bLaCA)?{py7D;jo$wt?k#ot85gM9W})HPn~`m z`bE>ciWr|!r@4=`4co6P6@#V~3$kVK4?xkgMg^Ui{Ec8^L?)IQ8YC(bWXaO0{+L&L z*qi$Xc+K|e(+r-N7u`i!_gf$#rux50Dd2ydu)e};l**f|)fJ^$C-EA?1y>HYh1h`X z#dsW|2N+K!@)LGfukH@e9XsBMljWvBp zFzPJ4o!t1QeMiMZg2`||BPq-WDlm#S{lu610zpw4pEyaz5^KMA62DSb$z_vMBUdt*YG=Adb^fg%&5E&A zSR{?A}0 z?f!@4J@4i18xrQo7Cm{Le~PTJcAxmsibjgl6F`>|8E_B0B+12Ah6a(lA$$Ptye>PN zP<%_WfsN>;hyx7`mq-W<|#cwqQ#;_J6%k~dxz8u|eh)mzA+M}c%-=y-cb_~^Ey z0$l4n_8hR&JB|(vzm<%f3T^ADVk#u5w3_&LjXnIq9I6>5l1FjwI zsmN%x(`i0K5)NXx@A`$kS6W+|j(mXQ8YlUAq~k+Uu{-vj>i*8r5I&F=B0?P9*;p1k6Met?p{r z7*wlCM@S>{rUnAfpMNBW9P@PmXe@j&iAFkWb{2F>FDP)DKi&E?K+|1jqk7#{o8i{K z$4|_y*LwxCUFNF$tuU?MrK_%eQJl#t+db)XX|b7w&0+~5UrE;tOU55X#t^FVrd6^_ znjBYvT2@Fzg*V|n=pO`iIq*I(E=0`l>S1j zyb#=HgIe9R+o1Zm&PB!~QUQmeWr#HYrN2S*zxEX~ zs!g+?Ojq<68K9G)P8T=R&DVS66G&HdFCCfjwHtQg=1+1_Xf8Q(8+-1ilWza;3h&Tu z+8l~^RA!fTd;RxWaKU8FZ-~-?q8aE&Q)P6GLPwRc>vCYXQ znPZWgwHtWm^s%)aM+%cICaT@3<*abftd92!n_AbCCDZqm@GV76e-9yLn_kghLkgqP zOB%#Z{neo(psuh@*~!GvJV8nfFIx_SQ_aEBfMOI6?!E-zI`v3iRRqS5`Iry1nf8K&h zeC@z|i$33OH3!aKW?W-kLDAai-YYEwpw%LzU76drbs=0H)jAGyYcU{PFV&m{EGjc? zv?l64Y3SqcB*JVO+-VBl4pXm@!eZj?m9FD|-CzgF9uygxAX%3U^C@<mgd_N?d5soN*tKKD0)` zHvMtUQP;fm#~;k5yQ{=6Q2r71Jw)-uO~W_h6Su3TOqucWVt+>1pQ!z@SCVV$?Uzo7 z0y*3M%+rti_*P1CSG}sgkBDlnCo(yS$C=&CE~S3~aJlt%YvJ3xr(3EhqYtG$JhW-O zF{#jqiPeKihfyMS6_Zx7x{iJ(KKtCaDV#nDO1;3A`hQgF z5S2>6UI8OdMRH1Eevxdds%&;mD1e=#m8NWMpy-H_MZ9QrC<;ta{FWCC(%(_>?K~`& zoKj@>geL3ta{=0I8a8ZsMAm#}-{TJO&c1;zyo*3E8IIcU)P&%+8eWy!^2JN!BE zmjz0DQCBn=wZ{~}F`n02#jvK6+_;90`L;vJ7*fnP3&Hq<*+fQ6TqDP(;O@r^A5LZO zB@&SqmweFge*3$4y?$|q^Ii}y6wDy_|2oV(Gt3@;mGazGW|%#q_PWM#wZE}f0ma@` z5cXRYVa8W$E!^fW$$fi|E1ynv-V{OJjg5?|DRUCnuwENgQ|Tl!toldQjBpZ_jJi=Z z(H36PHKEB)VxkGuJBjHga2;NOO<*?X98F-Jlh9iWqYQPO#KR_RwB^KKP542ob`rla zVbRq|6tcJ+Wys3iFcU8lI*Fr%tK(|)3QfXJVm;!-^Y#)>j=nTLZ&g_)_RZvv!|@EO z&2n1et}a#|7~tgPi8=gb{YPmLVerh%orGL*jjDlc$4mgSRhuNp z_7xL=Y@Z%tU-h_Ty*E!mzXY{}*{-v*wo zB3{q}%MVW5O@op+s)%{z)$z0nXqNAooP2h>(<{yk90B-0%G39I+fSr-S!C2C_@)h# zjhY1CY%>Aczsm$@|3(v_{r%MbNwoh{CP4cOO@Q`~Hv!uJ0|mTArakp0Y}w}bCj6j@ zmyh~Uo^8J&w`be`2NQ4G{{rD^GgfFncpBz8uKmdom$pd`xbq$_Tf;1p+0l6}uEo^3 za6b{cin0-gT2kQ6so<97q+!(uocJON#(QOiW4gDFuKw_r{_clnPjpG4Vrr`o-J}?8 z!{XPAn5h8_1%;NBD`rLz16e{#qKdgOh@t4vl19bM4PxlU5FW5%r+KRq1cO+(nAifv zw)Dm_fQXGK_Ws^jG#z3K6}zN278541#fsH3DJZwd#Fi_zy*GBCiH$0DOK&V&0F(f- z)sJ@*H2me%Y^e4ODPQ{&0I;+6pk-R<3iHyxYlus^W-==A6ruFrjL}e8(DGE zmTi;}K^`CBLX2klJjv=WA#M0Z+b>9OqoTSut}1IYV=#ZN;KtE%rI!a_`?W*gchLQ1mv?OBo<`?QU#5}c6n&m&~CKmR^TF^*IG zI~9@)^b;!Cgnpt@Oh{*RS4jH#GZiPv=xcVhq3yZU4TM@v>Q_~s$uUA9$w~jSD%pg} zmDhysRSro;zesSBoPL4eOq|@AnMa}gw{mgUsWtz1+5c%Js7t-I*s zN;)@J(pNr0C%Go8Vi{hn`eXoVOELJSkSqrhYkLg9wvxnoax#0qz5O_+)j0;vM(|6vOLtgzZe8h@_OWEn*jMz}h%3I*S@J0Xf&yXV;4i+>FBE4j0?8j(sPn$`HTN-C5&x9+# ze!0_}v?Y{|xpcyWm|zvEahm16)5xoy$jlaq!`kB|@h=U&21@(e`N-*?DsIZOD^VBM z2Ix(h^35xpgq|~0+U)D+UhgEn#Fw)iI$V7HOmVngLA*GFM&cxJ_h10sx+^BKLJ3;+ zb#Q9?WcdvX+Bdl zjj>lQ`4Tuk`vkKm5LvI3xJ_ z;`e4>WUcpt`~K_^yw!b(67+TXlq;sS*;QJ(ihCVlnd?ssU?pvm$+`{~R&phOvMM?I z4Ya0B)RYbA@8mR(kqDcTFJFtoMNFHKkWUdZ(bYs>%SX>Yg0||4tzSaN=o_0fyMq~X zN7Z!XrQ>3AD6RO)?|pAd>?aCcK6Mt0kVfhh)y)bi=*c_Iv_1LQm8K_~Cs1;mnKC9) zCdHpMn@8Iesa*aSh!mm&Pd)3@HVJR1xkYu$ccyUpV#5OCm(^@LwwWn3gV-|%O8x&) z$V_EDgoKGWO#Q!)ZZu;Y9ymY1q)X6dis6uS4m!($UE~nQ9J)ey$DYqGZ3}5VOS3WA z9IJyIPuU#5%ciUTwWRsC28=GGvY8$aGPRgYj(HzGKVz#h>dIm^GMjN{kntNq#xI-% zW^VxV#QnV+f1szSwVq|qy}_HLmkEA=t0X$=d-g@@8Q8M)BDIbqaEO@I5!}#9`!m?Y zteKFux}z)7Z&4WeK5vd;&8^g-Exj=6jT>oZg1?1123J!QKHL?RFyRbp5zpI}%CFuq zkS+H>7DOxK_%46^H(Xj`{2d>y9b+9z=yxz$9**&TsDHz`dNwro--+*a2k^KSj^ZjM zxVM_;lH){p=tq{3vflAK%$1*wD!k;Rc!)$2{hXNtLq#)5E=zIq`6Y%czvlp|E33S9 zS(R6|keY^5S6y5+&kO&9Hp}_Dlh{p&j;!s+<=9IfGqy+b?CY<~k7bN|c&^*dLo%~Z z)9eB}{Gi;!toLA@`elY#L z>0#Uq6moOzMwp;y2Xuuw%zL&yzp`?Cjo72-&n-~K^w&w=dws9>z1Qq};qo>hj*qkT>Eh z=t0xH#qzd_Usqhh70bu`W$~9kbc;10e)cjI;?zTU%vX3kzL3iGHJh)l@n+9~Re#`B zb$rgNs&Vb=R*j^$%i!d4IJtri5^-}cQ{?!;t11pjd0eTt z^;mc{>EaK~s|hB*48=<4zBqp|G?RWd>7FtC(ZPmhitTS=vzQHWVwR&llyH-Fk-i;%TN}#s0~ZAt&qly5v8&kYLub3AGLEY8 z90RXjeU1N9;7vO}jx+`=Z+{A|0@Uxa1kDo8Xkm;bPA5xq{Vua4 zeH(>`^tk6_;_+-^I4gb>FA=AbesC?C(3=nkA9YUiHWOf|v=bmpowDFxGB(rgj~LOx zjyic0Ty4MJ8V z&L)IrKd*uVvwgi^sv|9j7dp*h(i+I#SNj#9p*;)7vV4Ce7yK}{6@QW(PqRFcYsG>SOuPdvoE&Gfr@TNs3;^47#6rMX9ZttaL zmVTUN6pc%&)6N}B>2t#LMkwfsC_Q1j0e{ju4{{r|3q%{V^!vEsZzk&th?ty=EKrku zSvu7q9KC%z*MEz)K;+iZBpv#%`&0s(Yut3zb18-FRWoR`Nn~%krZ>HQG_#@BALXyhb1Q6PK%LcPITN9uAzey9%lN5qlylCP!yPsyHWcb|8f?;-?&>bw&v zAJCIy+lKx~OP$m~m`r``W2s(EQkLp7-7gw)58rNxye_f`r?JR)C-Dl*<19Y|x61OQ z(Hw)W@W9{11IAOD0`BwvOyZC82wy}5WV{S?qsh5p|5eJ#cOk!*?>rfV{-;3&wA8r@ zw`PXRoII1BLU&}TR4X55pZFb+;`R=Lxwd?h(|jMjo!Zn>BEI9d$o^VA zVfU26MIB4SyK72!*A$bZSyvHvznI$CGeBT11i5+g(mU*!QF?0Q?yF0C`ZE9T?oMp< zM)699VW$w&V@xhmc@ffSuBEp_XHB_0WeNQ~N1TN-DU15t!@K*o z0!HmG9pKN49lKK<>HbRwS^qCu(k|?QI?1a(;0)@`bK-j)2?~{xO7A(q4ViRm^Uim7 z@4R`~?&%eksZIPXH-AeB72@12T?I2i=1TsR^RG0u*}nJ7O&Z$uQTSu88h8tZPo~)^NnkPZ< zm5q!yh8BW_?WpDlp}yWq+rTdh57nLIwX}mYKElhyQB=cFIPx($VkoUH?ZG!2o_YLJA&UxIrw}om@GaW+P7nHn%H%}_I77V6T-S7T7=fE!GUMR{%3O@p73ur(`+tG- z+|_Os>FHbgL(;wZ6O?Qe8SN9BD%wr&7Pyn`3&&|aJe}=b$SRzBdzT1a^2qis%RkPj zN|kIOfnyH*l@fRdzy77rttGV=@pIhmv+ln4!_c~WwtGr6wRiWF+SFUSr_@Ol4BLJ6 zNMEyfmRWBOb-$bHyF~CC8PVOTzK;^l%A&$ejB9MD$e>e$9O8c@&{oMH{}$2^6k&g1 zZx3?bX>y-RZ)%?^_l`cMU+(E+`h~ZrO}Fgzb(bL5-yg+4|Mr~j)9t=Gss_}WHqaj1 z3O&T34$cnfR7dx~c5v^0*9`4v5orwVxx`qxiHP1}#_yJ01G|ZhX9{-r-Kz{AxxBZh zL&W301!e5sWdv%P;yY5CZ56u)D&Gl2U#mQOo=$DS1!zb2o84Qw*QM5XZ%M7|{>QFo zQqSypDz#-d+|s>v&xb0jdvo_QCZ@FeO<>mV*~s_C?w7lt*|S+ezK)Pe-gEwKwQIkfYkos@NX^pCXTU@_#o4sslQxW7D2j zz*D$_nEnQ)&^s^Js=A;b#E3HL3=j` zy|bD6za7+{#|I~8>|VK$N_YEkz{c*i|BR*c$Kjr5QcuI!PtgaR-RrxbVID3`J=6V) zVR&X-&CA_SnK}Mxcxn?&yVl|=X6{~R*n3O&Ye01D0qgFk4U_MqUG2c8_q+xlG2>I7 zWq?h7vj#YHh2NR`)3jK8yxBh`*WPUWCSR|-1`;I){}wsY%8}aQPdqODMN`^l|6hqU zrjRRy(?>e~WEkn<2=74*km!XM&Gvd~=XHUNq*wnK1+U^UD=s%uqPR2Bq z64(Y0b77x58~7zGE%1FdCT)CY4e#66d~@|}%uhOx=ucvQk^WG;@mm*_Hsdc<2I-y0 zm-88b%?lxVmCBU-4uGBJT2RQ8Io1@qgV^J9UQW&cF0Y!;6HAl3k#!n(kkkLNR0+cz zP$S1A{vmZ@-haNwiTS*5YoEB$OH?${GH+IiH@;Zw0k826zIDQWwc_XDgoUNOeQ}yP_-SKb)jz@5vD=tVMjlw*(JdN1Z7 zZ7s$s>XRHL_U>vVH%sJC5`&&^HXX~7I#e91z!1PS4YVr4Mc}3rq7k>KA~U5t{zf_0 zm{F=zMY{`y1on$8@`)Ox7^&r`3@vIM5&^ zHz(#*R5;Cxr9|a}xhY4YNg|{iNV=pC$4->wnuY zg2@O~GK06|rGKL>3Q1(89S77521z7Em-4Tkf74Su_Lqtlr=sPlXh|wskt(ZT{KC(v zXe7m;N<|C#DN03)_+ec|Qi%a5O+`zIDoaJn_$fyOPOYd&MJo8HOhqgCsY*qw_!-6= z_B8*t>{-Wb^7J0&^X}*{5=P*PJW|oU33V(NZY3_%t)LuX46`jG;)+p`O@7(lmcx!kEPqvsRu3`f)aNu6T z96Hxy*8QC)%Fb9+RvceHjs?#;E=}?tsd+kYQGEtd^<7dB`y+WIf7cc8*4|9F?!)8# zX-*s7t{stuefRIUd)BHDI}g^-yo@!{|HIz9$46OR`~NdAK+xb5HE66+V~sW(<7sl5 zo@Pp{14$riP*kv}v8AV!11;Z{wlhFAKwvV!(}#h0p~tq`+UxPw>akV>2qat*&{l)j z1QaiA?Tk^2V!3I}@BP{PnaKogzde8aUcY~SyfpJX``MSZ)?Rz+z844U1L#1dA4OKma5r3!$|9-v>q9o^xDBG#Oz1qur9YJ;RRbcidH7Q4&YyE5vFTP!A=DNR7>e9uuZ{4J+J|=V(KL=xWXa;hOf_kqUsT zqW$-&Up-?i?RhGXOeu%x!9DJGP3J8aG5ZrnE|`KQp0J(dZ2ZngRq9bgbe}kYhdBjD zmWxjEz8;$Uyi|T?#J=M@lDbAMMRZs#MB{08F=zK4D6pnR(AShiiY z+YLN;-DmvNPZC233UXL(x%geWnaiFmyGjUGLA?tT0 z4Mq;UW4`egF)n@x6nlLu9ttLy9Wzi7#SlRoeh(es3F~(u+Z_2aa)2owgS%7He~Fqh zR2re()Wy`PvnYTd1lf4rHV90k?^z|eF|oLNesO#CW5nIXqBI^RSp-dr&Hwy zaXXbV<8KrR0UAPy*f`gSjF8BDF5Ku>Y){QUibRk9+<PSO1RL+<()Uool?^I-dVw2okx!wx5u4c z>gJcGj$F;z!yg5EJr)D#m0(E(-tt!wR;0Tu^5|SD z;$C0z{X?4tMt6M`34yNq>R@+$M33F|b@r#h{xs^xt)E7PZvBjQks$phyAqA#`f>qr z21aOJeT5!R;?ZW2MV~K0+S+g3fgSgtKTGPm1=e3IuAvbs-TYI&L#9ybr{`N!kFWBf z{VtVSPCe~AKs>!jHJbg4n@ZiyT)--=yM8M0L^OT8#%Hg-@%Vb;((EzMM09WxPx5GU z`G8fb8Y_yZ=S!+*akid;=sC8I*y&y@KXEWt=$Fk1L(_iC;_3|Hh7v9IF`pzG21#;1 zk0LMhi)0CSA6BlJDxss6`yj8L>VQyZ3DmV;ISy>SCvLhCU(p zSQ;yWxVk0v?tj1o$D{?W2SIiq-eyztqo%UNz><$MN2rlt@Ayemowa9C!R660Yzk(C zCr@)$JG^`KhJweN#~I`6%beBY^03icN~|hp?Vqt?^|AM^hk%A_EFalE*&B6yT8{FG z*j+!v#JTE7-$&s={7sxaV{vTz*IFB|QXWI^_L%^hUX*<&ij0uq2<=J~uQ?dQHG$My zUm8LMlXmnvyt@CY9SGBGnAh>ZjRAFt=LI>ekX0^1zvF*{Z$ijmJ-Kh!uK^^GzlW$LpSVZBFi2i=Eo} zbCZ2oh7^`9+dSq`=GMh^i02BgekwonxzNkC&h9`b>|yRTH?WmvS-09WS>jFSGTffz za&ZX9Z5MCFP)FG&5fW@rGUZ?5^`FnIjWfoXExA8BpJGck~&MbzR5lr5T5gF ztf0Hpj#dwKrSk}EaGzf1EpPCemPZIDAt-{62h;Hz3WIR)?e;4wVH07(StBD#N{Q(> zfLim&2)eGv?enh9_aY76m5sF1#C4WzC}_BiT!1)>VEuPr!Zb ze0G+E1c^|zjwb7R8`lwdp@pzDTdBF4+Wh2Xfc?RkR^aI?;7b$Td}6PH_bBE~pf7Xo z#%l$jL?UPR4382}f!C7>s==XZ?XG>);xQOMfx(gHLDtaMAFNw^q+4AS5rk}@-*g91cGt4q!1{yOy2gDEj zKi-e4(YhCd>r9D7Ro?uFHt^n}I^78gFQ>79GjLlGBu>5?fM~kT?cqufX169rbv31G zAbr%E+6ar#FHxTrrj<5R&!P-F^a4~X0QcQqdM7_=ojGV=yIfT(zF=k@r&%SP&Y+HOL-yh~h%`mphi zz`m`6Irg!e&0)DH9d=6ZYJ({S=NPUVW#rh4y(Gv;Faj3Mk+XYwToh#cOCuF0MoVj8 zzB+MWQ;3XpbeE{+v_49AfL@(nx|-58eWQHFoWmyEGH35;`<>NyAqm|>#E>~UdJngA z^G2y547wo8pP4>1Mw;;HUdua`=qfd$ePMv;&}h$a6#dp0T8{d>czGn;x%2=?<#4gN z>K+Or^oh%= zn>EVM=OL_n-|Z;RUkUZAd-LO2!WYMvZt!avr&=0!_qS&NCT<)pK{Ki68q{*r^*xngG)ov-80_wYV2H-DlLiiu#cVL8D$3Y z-0c(2Y^##>Rm%DpN)@BEK#^tg4C-uN!Yc$zQ)*TV9sF`#da>s{z*91`02{KF=4E9} zXp^XNQuw)Vz3#=$WW}0awsGFZ+sFz3l(W2Q)ya(Jlc()`QjM0XiCrbr4-p<8I***h z7np!@HYv{sy1d*gUK_qXZ$baur%ktUCD1$GgAy$$iJ$W}+^MI5=$fR6|ZD@pEA5#)z4J z@$Jo7^NY4@`vWTf1ykNNL~TD?ty+pQO$ef6VW7kdYt_D?5uG3p9B<>DD(H8@Oj6Vd z*NF+hHK!BCNPt-SYwGxW^fw)B=&#QG-_TzjaV-5;K?hKQ{(`x`1>qB_?AXGymH`U1 zqf&|yW`mZ4;;#7=F=Pxs=Pds^6Qn(yH2t0OJ}&}nr%?J-K6Qr(7p6E!hHt|Ao#bPD z61N1?FAw=Hy!8E@>~{re8NBxJr^|`2q`NVVob{%Jf=^@w7hXsb)lIO?fO}vl|5^EW z6!|AxSLENw$?DlwIUk`8Zss?0@sp8%?mk$cJT;4Sv?Skq8EDcE4DO33OaApgpB*pa zVzEKH;noaa6zf2!O6-|>JZbt;3#ck@rI6$r8vcqQ(rYvo*>RGo$8gz4)Ds_4k2=fS za%ZNVE-0C#5G_`uFU);;fEKdCnFo8`*MuR?d___FG;B!sM~Od5*=qCy_refe_4C-1 z=fz(h-r%&#-OH;lX6sXjxgh%`4u)Wh7TOjg|0M)2)Rx&H9prnt|K0s7lgE5*kbsM3 zN|TEe!KM*aY%9g>hnmhm4V|QCGmM&s}G`zUcUEHv+tgC)z(3_rT47``|4Q3d~ zP7rOfT9X@_oQ9f=*d)Iqu(d#9Z^|@wP-}jo$LnXXWzw>FQRgeeyb8vHQP?IY6}Sw) zGfvY<;#3MG>sAyb3zHPl(&c240*@Z-(Hlh}bVMSLR~r z_p{@cqv6Jovmypb$X%1XL8s^T#>XHd3B$F2?#9P|ijNbroz93iJ7cR+_>`YWU(>J4 z>|-5|<@T|GEea=w3DN{1-%>?)eW`qaaSGZRTwemxPJ#m%Yo_;Q9^5A@_s0Kx z*sc1Q8~qq|;d$ZrFw)y|uu}$@umsGAiC(8MzvNX0dYv-96x{x>|3HCop-mZ9{gfF@(wZZEc!6;;>7fH?HK4L~H0BLUL4~^JIz+AV8`Z z*mbEzk2BX9P59@27etfcw0^+n@iATeOK;D$TL?|42Pf&OOmpOLKJZp!&5huQxHsmx z^1>^vA#gNdtrI$rbURHBMxdhRVgFz*S*wohu7x4-YfD@JJDC@_6Vu(zC1i6F|4pi_RG;M6J;b3iotn=PNC7*& zyzo&vwdYWm>dmnaJ_I+Cke4;5dCi&!ch~wHTI}}PWuKjY89?U7Q-65Hw`<1pbFeN$ zR-i2lb~!)q4hHw1cvN?aC8rLLcZ_mt8@<{Y$*OfU$KAHm5Fo9;=F#7Iz2mIDleezg znZe3k2e;v`2+~)T8O*Y1a}Aqi+cPYN9R|a!iR@vS$XX1Y#I_?r zR~5KX+lQ~4KJ;b6ofOE(idLR69f&RTu|vIoIyj|k1iAWUkV|%xRV}RN_anI^{p_Il zggerYXNMVs@VBZE`y6qN#9R6{eQoPvQQS&;hK#cf#w`Ac>=puExIkjZaGtpK|T?GfR4H!*GZEi#keQP8hve3nA z2+c(_XdfAT%#`Me(ce*-si&=nC*w+sIE%kw)E+F>Z}6_>Y%=jw>=XUteG)^z+SH*g zxS9oAs9NM)zXS4KT@>E4;1ut&!eq@I)D`eTVOHw9Yr}gMzUfWMSH7E+&n`b!n8!k; z-pC^?UlQM5fH+9c<5hfRU$?cHop}zD)}Ej|kKq<74e-MTP8yofz}Tvv-HH^(Qy7!3 zRa;wL|5D4*(-w{_FTs_6V=v%G^rwma zzcn4=(YLfHf9GMw-}%NrzL(1bOdF}*Ik-uVEu+Q6Q;SZBHGx^%0bF|be=8VB-B`k( zNuRVX#z30da{_>LR#fe$@Sd>b{k_`+sW2$H3V8aFDL-_?Zfj*|)T^{A8!KqEzSw#?H2%L|(A2>|<|~ z-}=w=TG_#jwyuN4tyENpdUHC9D$M-IxEWaX#$95Ihm1`PT8T&X)@sduZZ%gugx9n) z_?;DQh%XNt_sIM;a*AA}1Z&O`{$_!*;tc#`2*$Pd2ad$(i=!`gd(}=BT1i1`ZS^q0(7?iQKaiu zaAv1J=BCS0awh4soK_=ZGH{M2eGcjK?2a&7&vB&BCq0TkT5dhZlfH=bX8%6#Og;G= z+_jLAqr6srqF>F{G=?v$?3dO0GBx|<1ply)GPml>zh}QVe7Vh*QR^u9)DDSv+Qgsp z|`XHvG`OL3zU+))#y8 zDnf3xhf&%bt}71r#dL$Nw!<=E)h@Bz&2#-8cUlz_j&z-!RAtkLIcu)8>2g=E$)*n{ z`lC&ckY1Nf4_QBS>fuNf^Vm%NBXIS!`KOXTEt@`)m^YwJ{u!hRZ03 zZ?j*oBg7`&3-u{TEQ3fEoIcV*)LA?6u#VPzo>)F7tNE5#&LU)E^Du3e^I%2 z*>;I7e<2Dh7W=Zs?H#v2{VViRXuS4I!1!j0cu$kq|E%BR;+JBm7y^I}D$-V#CK%P* z(%f`Bp!1LIq(=-ZCAB#eFBoXj3WRJpV<=ao-y#>nq*U`H;Cz%k!KwTQR-PyzM?Sc! zb;*-)1P$+&sQO5;;{6@5GF?oP8Gbop<-*+b9IYlMrKZ%mU+1Vroqrg9Xs^}7))XO6igM-2 z+gW*{Qvbg^`Ttg)Fkg(@nvo~zd!@-{*bd4Cj5+-opMhF1Zl`nqw&4C`s5^Z<;=$*P zoo650P>o6_66wl53FUedjw@wf7Hu2rg)G*Gd)~1mZl?S;-;1LO9XU)g; z^?uc(1E0b9vT2=cH!kwl8qxiTB3ihG%iP_auZ-|&3%LO2nmi1d3>b??X24OE7L16y zQZEz3k2OCe^WQaQ@j9$Tv9cj#qS0KI1Jq#E+|1cu> zoQOI&`~Qv{jbTpcm@3?s4zY$v%WB-mxX(swf{#VJ*OiuX=6F* z;N&qa#8RYKqGQQ5-u*(Ta<6A7ma~4SyMxV&0^jWS8uH^ub~ooIulQuVv%tA{cjwU& z-r75%47bFst)-&wNHLWJF0OSOipKv~bZp+TY`d7j?pR>N%8r9wd6ve}KOXD?f=;q| zKQ=6YF1d;7yhlv8K2^C3c@_E|z@FpXZ#uF^fTXykDLLnp@s0wgVMpiT5#gOEZySOW z!+T=8<3}RKqSm>rFZ^SH<|LO>|J-dmVHb!N;z)*6myO`^f5$-HywSi+?-7H@zQq^J zeM@{<9I4sc(McZv*QiwB|k@KOAu` z>-8a6y+oa0*eV@ow3zY8{9C53bXp@Mr7JS&?$n}MpNwHcL1*oEltJo>^%`b){IEE4 z*8H3VZ>8xp*-#hz6rx(o9ex)g@5Lx(o&nSgJpd6(IRB_MGdf?2J6{_Sd@B;(h8jGv zcga%j|0~hDWUczZ%U`CrFm)sHhEFIQKPhj?2@}IlN3ZkhZmozP9*FI6uU6$H<7vNp zlIeSwPt8TiiNWwn5tP=7my9;{&hE6<3K-O|ZP-x5S^EVL%4HDR#b~+zF1N5W8A`T@ zmh@Tb&rhM}H&Vhi7^e>)YB*-t^xEkd!{sY_Qz*6kVYd6ZnVuk%kv=f}%?PseH~CY! zH~keTXE&StJ$Ao;?E6*HSAb)lB+`!oC_E82knizeeL%cxL&09DPMp?dBzjY8yze%% z(~>xAQNl#F*~u0_H2 z-~7PXHyZQ*`yWDAV@feZ@1fl?)e1aXWEP2&)l!^LCYwGuYWr0EB`D>Ur|3ilK>0O6 zIom=xe4c#OS|cl4Tyz6EOgyAV{4y3_bK&_NSCZD@cU=~My_CPGyU;YZ1r{9 z%!Jav+qg^hKemAhF3>+zn~^!cEl+Lll{L7#!)X-*`9bxh$%~lwP@9<;jz|KzQ_7p7 zSd_kF9V3TK&@OLFNFGGS4JhAqyBS-1@dsK@FK7uEIq*vgIsdh-WpBXQyjNjgQ`co` zV2r88jTlyooth~UC)kg#jC$xi-mxc1oqtUJe#~9yy=Smd(mKQ~F0D1g^#BH)%ihz` zL##i?ekuF?%T!04A^yht-E!`CPj&u}Jh?J0=Ef`2@c)_W`@q(hnZ9T+Ti?k!^$}+- z^Ut1-m%~?e&LhpG3ejFLB2c%Qx< z)msjE+Prw1K_`Zz-G%{p7=Q|_!wdsRaz!Yj#gl*-cn()QgxA7d;T_Q(Vjuo52cN0p zj4RqXB;eiM(f?n56U4{GkV!4Xx7TDHaWk~n?_fN>3g}rvKUBdUni^&DS}NL(!*9Xe zD#45zYvh6j&gQFvEl0y{Px6u;XYF{p%GrG5u+CRP$!SiHd$=a-tQ~0+hj+djN;ZDh zPt7w&P7Qi-$nhc7t23%k8b$0zHK?}0H!$#lG6 z)hW7Da@AKfRdGHR9SO`et44Z^IG$v3kd5Mp+$*23YAeO>mTve_9(MIVY{mg??P_^_ z0?7+*QDeN{oo(>3{-jU9HX!x$IV+|^0^aXVE2Lni6B|Fft9(MuY0iqXmDu>%yX|E} znehls{O@vzX^xVg?$3>% zZeCn|yqSNQ{JH+V59Ijs`ucwO2kmYHKeC#64uCbN&pLcmLb#iY9__j{ev}JbUA`i7 zOWXryFwbMiz_nk-5{I?aXrI#VRxfl5Qlli@%L0@s{=n&nRamJD_5e6#Egqow@_{15#v@W21>;s0YF|DG)Vsecat z`#yv}#!K{e@jrtoO4?*6A= zcHiS56b8eqdJEYHFfGr>oA7B)>uod}Zydor!PjB7Z_m5eI4n^P_AtiEz=Ej^s||kGm_ov6Qcj1ePCNvR~ecV{%h>{V;f@14uMAM zbOK^lK9!c0nI;}+XF@QL^q(ZT_*2eB2ax_Ze^a#VjoU>>dvPy{qC55G-z{#vXV8Ec zrMESj=K{dfP%zv@ww!wap<0bMrzSrBoP}q4!wKd7K)>%-&GcAvaB_agX?>j?j>e0x zUZ*Xs6R1nIBYdSsU$$M)nDgZN8HPXpn-O0>Q;!dt$60#(Z}T`ukGGr0d3wCbJkHnS z3iBA%>mAejc z7>yPMk2?PKO@Yj*}=RO1rVJ8qR~ekMr8s zFviK6s_d7k%0FRYHAwPHCT2)J44!LmPvLKPn4P)Zucj^?Z~b9^Hp=wShHk!VUQOM+ zUy~1U9r@7yJC)i>srGB(th9-SX2y%z!KURhZtHXLhilDvmgJcmOeAkovqqT{?n_TA!6!`7qK*FnQdC%GcI!NpV8qHaz>_Rx zwF6f5e$~5(8R`Q}O9lo5BU?WIR*q5oOygfy<3FtUP~+BHUMxYygN@VXN4A`4_lm#Y zuDOuH(0TQXrfFIZq)KQS8r){-eA0&j$v0Hsa{w$XO$SMk@i5noiPkoK2o<&wx|Yhn zPwCVnpFE}uajsu)@XH{CpFK39m9i~E@fMY#@RoptqsUDo8H8ujgx_!E$rG{d9x0Ss zH^Q(}SZIc69Y}s)(L8?;7Ry7{D}TKrJ&3;R@8s?UgSSZmB09}tFDA>uH3LQ;_m=u# z*y}x6E9Am*8m1GpkJ&~b^{an1u>8=%@?+k7PDxHLQlmq7+eT?nNCVLY0tk>2bI}8E zD3E}-ufTTh5aLe)B$~Wk#Q&@svD}@Uu3)r^07X-#+M+FA&ak%OQ8eO%14_7ZJh72l z)HPYUr@m}zzeBaZa6uM@4D!T#@JHof?@AeCurRHNt7B?6XAGGeT-3W872_a7+r_r2 zAE~Ktsws=e29sx+qBLlLm2R1(G8QR@sTnCn>*KZw`E2G+JLdQn4D6?@Q=o*8U1f4=t3>ga3X~w7;laiXKqXyi>JoB{S ztVI76Zel(!8NqwUEMDAAbCk5ojDD_OuI#{!wDah2VpL79gFxE!+$AuKf-006-UOH1 zq-E_YRLktA0x*Ejb$O?;ci z(i%pM-l92Zf^tlE{o?BR&nt>Q-Cu<;Gl7-7#8zRM9naAH?Qu8<^8j^*1;m=QXR(Fs&18L%H z*v6ZJ202<_XU&#H^O%TV9I2%N4N`9xw?6s!Zl|hrd-nbR9TY*#M^S7BiZPZb>9Jtf zKI?Vn-)h?TJ|Cg)lEur-`9rolDUkZiwZ?!z-Mq+rZN`OPN<@4LSqKKBFlpZg92AhPT+^$fPU(@;WTn_oH5U*xa7 zL;CHzzG8Ctkke|`mS{NpLhW9Cb!2>fom*eM{QcJV`|uwo;Pi@%QQ)gdzp7RuOaC=LyPWH;uQ6Ts zHAbtC8aZ0ue;3Ln#A@S>O+M>lQe5-=cb1XqohoC8hGk`Mt=LLNTYGXjxcx&MyjeW& zuF`n)R<-cgvUJ5zWB2hDY*0uCde1~$TB(qt>|z@g8ezAdr#CT$ z*u99ixUv5P*6Fpx4QO;)AJk{)?@gJ}7rG7Khe%)XO%vVeP2r=>FHosBUHjBXgV+Nz zc$SWs`bUOo-*^?{DKq9;p8*9kpO}LXa!)h)oYok*ymcLb?_EMz{l_`8eZ3%z8#s9) zOGg7{!^Mnb+0#s0{1x}8!k-^?ckezz;`Q<<7-V#uo=Q{MaG{jme-?xn;gW;_L zZ)#Cjq%aUX;x_0EW~!B!Lm6y0_{&Df$a~{EmzO%H3h{1-JOipBy$Evzvl0?{B0dnH z9(iF*1mf&%5lfliBKwZ8HScg%Y5gDZ#ztg$tJBR!Ns(ky?8!=e2C>~O3t2a`sq8%Q zQ^%Ke2KlD)T$ijF-qshK`_#(kP6`m7qIXxkE3|Cu@$1F}dMAY3o^!bhrDY6_oGFO< zg1uuJ0i<_cX{7g+-ddc`dxL$a^<5F_`@;L-mtqe;5Uh`P=8d0M+K7r6Ht#34dTR%Y z?HT^II(nRIfHl2@F`R-?tQM;PwgKPD$dv3dgbj6&+>n0mC;}o>YPJrc)bU3^57uzI z`P*zK3@?J4)k-Zp>in^0qA@np28x$&!*&{TM7}AZ;<{wv#+?1=a0TY*2=(DWzbE!~ zWrtmjX@0g~g$8$W`#+`AM?|{(s`7bi9=b-S5aT1h8}v17~?ps!r z(6IA^VfZJveq1wvFh$CH?SGGqg?~ed<}xxFRi`IIy47wV{_^2uT`;dNh#ctM8Q!_C zGj_l|+?hHnczE~WOot=AI{J?GjhH76d+eomh`heyD-heOZ!mjAVgM3Zm8e)Mu;er^ zHUq&mCF)I|r`aKYnTZY39eXEPC>J;ac+D~w3n`=!*P}#-S9Wks%CIO--m`hYC#tgJ z9%50!6ymvjuYMjsd0zc2f7ifUDAg5#DW*3v%8+!)c+b9I7%ZXl&TgqiyQ4m@vzog zkwZtqB1xB%d`R7+Q9fl}--rf4aG6MNVtqF9#Xh%3vUOtko!A>M_NG6r9YFoezPJ2Y zdiPOkpV2LOlj(0hWieA4)5!< zIbiH*$;rbLihDE7xwsn^qV8$?jzW#2MqZdFsx&h@5nV>i$?5M_;ZWbOxd%Fb|Ii1U z&A!pPcTaNZgbwk}Ubw|3da785C+nhE5 zW9A&g8sqE4Ba`Xa)hEHhi4G|<>HPW5#a+}1zguz z5-i|m4DSo}owek2L$PTq-)|R7sej|IhwvLGG{rkw-0Cw(X(nPk%*h=Hn=UjMiBaTb zUOH#VM0J9-WIv!-B=dNy5Uy<_HU;P4sHnyBPNhRZp$GrKL^<+Pp(Tu`lV zm%BBhi(eMJ&N;`4eRVgz&q&j?8BY8OZCZL5Y0ath*1_!wRQ-Q-(fHQ5p^L`0chC-) zxl!W1n<1#*w8E@|nHAx7<{NG%M7mlu_b0{F<%bN}%?67Dk}VYDXF$@J0nSpriR~GQ z##ASLCr>Z-y8F|+4`2*vW1N1~@rEvgT{9kz1?E|t>?Dq83$zGWq|Q-7u2U^bOI2|_X6uCF7`>eKZZ8Ik_c+bp`?O6wMOX5RF##l{Hc#q;|DeP80jbXXEO#(+ZK*=CgU?aAUEsC+(73vrb`$ye$9%l zkOBOU<{4<7Q+eqy!EjcPbm5K@cI3n2NH58+68-;B+HgEay?R6$xxH&IH$!hKls5XCVya#8( z>r8{i-h4&TFY)HfFtXHpaF$Ik^B$aIpUS-l=h>$UZ+?XrDIs4K*cW=s6+oY-0&ls3 z;KNfgA|s(Fb$dZDK+KKSMXVnQn^Y4#tpjkbW4&R*m&=|YWTr7)Fm}@HwqQqi>%yZM zYn$0^L#+=o_M65^*JXb-X|JdOEFP;j1>-d(M;h&8CwX1G8 z=9ikWOe`>KL7=|iuzK)5-Q$=3!~1ltece3Hb2U1=gsA6j60N+##9hzcGzZzMap~Ou zeEj7gB&cI86>(bUX-Sl*A|I+B8MzZdNNU1|SQT{Dm5vV@Ma^$i0>d)?R(Odb)tZd* zmz-;^<<}^-`P_`jORR`oy33&08)@%Rkgb*yO9}ErmO`f$Klwn*l42xt2T$Nyk=RO` zCiRR!_oPA~4LGfn^)VrnI2vm0L!dXflM0<+!av-u!Y1@UmQzBha8P@J8@g!i?Cd_MM;x!T-kxY=z!XIL?9{*8?IO~6$+HZyGkfu%%iX`O7BN1 zrLIGl>>lAPf;%%0{TbEPlzf-i84NS9%7nT|eP#a9f#9T~v_d`_`@O;Lf6aFK+I{@O zWGJBX(N9jMvG_m%cWjJgxV$Z zqdk8Bxi3*7Z`?juS8~kIt|V2y`zTY~YVrnk2Y1og+sM_#QxkTB9HhDCTl8Yvyv?cB z#%;6D;RDX(eZigX?%CV2dn&hBry7IBOLbR2`BgT(^nWY6e6Qi-g?qp!HF9JWSMh z0PD<{F!l+~meZUq!-BmV6+87p{c$eewlUB$FmR#%IE~wg^f23<_(8mLSomnH2bwgb zxkow!k&*pyZ%sO%#My1S?(lOUky$9(XL=GDHj#9<&#o^2!0OVPX|TrxXYO6KfpB<@ zcMl^_3GsYJ!87WzanGTeQm1WY9Qd7P>CDCN8lQ$|{7z$bB{Hxn7k2?EO zGI1BRx=f0f{LIE(U!ql)-+HvtwESD!@^hx;TQV&-XIj=ltGNSlIuGou7#p{R?-HZM z+Pt>+`StEl4P0bl-iW)sPy~u%7eCnkhK27Bq(2L^Uc#UbxgHfL3|j8`x&LvlPIVu1 z;vMv&cEF>vF^Qz+A^eTsp;GmzLye3~-#`sHpYWfDQ`7sPP;POjbsH)D&t>)np8}5z zV`&qZ*-RXz?GN3L1 zIpFFZmVS_Tzxw_VV8PL1Xu-{LZ(TeDso@@#m}@(3-hCspALinjg={ zjDRx_25Pa}>2}3m85Vy{mPrL}XJ=}7{1wfcg{48Fpq!q50Akzm?`~c8s-&IUa~C>l zC-E9zNZAqyoI9{(V89IFKd5WAo;&c8`ScR}k*BOL+pK?4*1sq#$B6RNR#w7{Q48nL zcaEZjCsJ=l!gIGg%o|ceOYPo%c}?nopkXPAAshFlJ%L90Ll;*N%UG zU~Wg6Ow5F`->VNq$0E)PG*6CZBp{Fy-{H5--5P&2n0V?o)=Tut7|C#VD@6>Jep&=^ z^+=CUY(2wdDiQF?B>Y-SOj?1T2`J7n2`m|HCSlfko=Ib9n3^I^t8Nh;6QGxErWQhL zkb;^WsB&>iC|P0Yg3-yy^oZmL7npM~_?g%?GS$=;^Bdy#WBiWfw}{_7eox`|IDQNH zW#e0W62B+#iw(YYW)Y(x7YpI2YDwt*kW$vwB+EL2Ye-P}rEgc{|v%Vn>h@n}! zo7CBDNaxc7POID-RmHFTD!yW?*sUsdr$m2S=w?+Vd8u|HHq(8|#0JUlsPtU&WQK?Q zOWMyHW0YI+VuA93)Qlx8`B|ZDeQG{MtShxwcpIH?jx87LIyf>I{iQca2!FQN;-1=eJ^^@cY9r}W zB&8nG>yxwF;wB8z;I7fe-zfkkZC8yGGV4{YaBx=r7hs3u5;V>Vk7w@|iJD|hg69Ax zH2=oDy1?@!d9Ju5H}O<= zs9H5H`Ils28)y9wou@ZsRJbR4>iCM-U%T}l=zr7jfsNk3xgYbc3AxvXP%*gI=6M(AyO;PS&m908 z*A^XgpUGeVH|7Bp?upUMb$jsnC)?5g$}YP@B}k+CCsc6;DVRBX#;Vf^QAO-3%_ z<_qtNg3iMu$MtYBiT=b}X8aF3V$WJng$#YP8^kh^-uYs9YTklt=RPJI8<~{!9mM;A zh59u$o@YHXCOd&WN7NI3q1qR zuGoG3uL)=CfAhZB;nOX;59naD6rOE(kK5k>D3H3ej9cEeD?=t)pIu+JmP)a@0bw_= z@%M+&D?|!`vYJ~O*ve7E$%lGoM3CDe+i=sPVU+LhjWl^^A+SXR*(53q zj9p|xXn}!odm@Gw?HcPzOdax65!^X2HcBpB_5dRBW!g%8(0^3cb3HVe8b(97PFc69 zDl&IiHz+}D?kBMn#Xwy}PJ17e-=vYI7jG}!4-B+3^JisTvS+j}1WTn+`^?dZ+giFG zFjGG|kLYT3r8A9%0A6=&CTx3h&$`pJm#6j=?>4zAr4Eb$Tl~mKXN3de^qqex7#IOX zIZ&i7rc%G-9{hm!Fz-Jxyh2TiRSWqm4-SmoN&OJ0*Zs7>%o55nkKOTM@2~E%9CEv; z@&=j{;G6|E1?{IXzw&@X5Pvlc)w|l_4vc--Fb9;4o)PaVh`(3jB;Ka!4JDwRK2@`n zm0M=NW-s-EKGZx9kWfJIBq5&P{s67=AQjCl0GXG()sokmsv1@r`$y9lLfHQpTP?yQ zR~sT{xUaBXystU|SIaR=GT;%rm{@hXQ8nZjbGcA;?0mx?dFe1E{dJo7a2rBv**0-$ z`g)M^=c&CwYR6zVrzUjiSP?z_4VJ{26(;ngRg;O{dRGMfq4IY8Oj(BxTT36ZwPx%6 z26@wG4XKasm(%G`rwL&@Q`Li28z9t@?X>l?lC|xNTRW! z17zVSuQ1tol-XUTxnj>r`M|f6id1Ln96>TE|H8Wan6F!ZI|6M(%SJtJ)ni~`kjE#@ z<6FZ5P9iF~$@mMTe=>yrP$C1;z*wImKK*>G_D1rt2}z8gE^Hq|rDcDUOkn>2O#B`+ z(42b;;+B9O;#>MnW4Vfad}~OJ<{N$6bJWdqbp#*B5_gyCs4$7SZbG;iF5w8b0i-8Agwhp$h!#+-+PBGs4H)irC7hz}vL>ckmu&q5iY* zK3Jkb3SQ+xoT$fHc>sMz9^jU-IpSFRqtC3M|SNgCHzbwb6|AaP!600d;C`JuMKQYXs(-jLP zX^nyT4W{72GXipi; zkdtW9SnRQrI31GdT6Y`aeZ_?=1uXZdj>?YU>t?XBS7*KF1rM5v9G)xKBFwTdmt?KaR96}xbm#z@bOv?+PC#sW9f+B@+N@|@+DfgPdFu?h!;j5g_Qs>o=reWTq3HdN%8W)05qRXUTEyeIUwysIuepTh^a(^BgJRYUmQhX`hP!{`pAiPX>hF`pZp> zm#NnHmiF!3qnQ@jheSSKxehRL){7So{L=Za4vt4QOWw19RefZLj!n&{qRKbp+iNmG zUC>XYt|PJib^s7N&?PzoO`QUn*`Dl(nj55gc}vz0vj8EAO^sUH`qDiwb7-OI!2mNG zV3-19wtH2#G@=dA8d9~E;ne6)A|T?Y?*oH z&2vnCKihw8ZP^oOeJU0sd!ENp)0T_L0Y+cpN3yi@55rP#o(4zO7kE`gTIs717utPd z9vn1M>7gReoVYy?OCT%;X^!MmR!T`*BYz3DanLvY7jpXRJgS>&`&)fOymL?5OqsHR<=Dj3wREd4=j4k2ybdb1Tj3)E)E z7Y_@>O48GLZsU7x>eR1UINi@+H=WddI`p+_rRikNZSD7D06mkMv@MVAv;snn)P{SP z_N4PDqv1) zDll3s!N-E^jSRQ(+9p_C9J-=^M&V^{%wqYuh1oo=()}G!;Q?-&;3E6YXz$I)Ozk`c z-Qk@UUK{HX&x#7o2oISsgv1L#GpTJ^L_e!-Fq21Fyz+LdiK;>@IWB9hR>JM2jr=%q z>FIst))K-L+n8!wNer(ND9#GWPp`#bTy-%9+$|jV4-X{s|0h|ss$Fl+Wm~rQh)?0$$UY(1-S5{#FbpT5ql+pR3VpNwV!%6yoZHsjt(Yu9Si`Dh9Ewbd`ejS zZTP#40Z$vz6+{l)rwp|w6>T<^K4fSJeMM&IYY1y=4W=-z5hYQ&H1K09O#gvSl03P( zD7bU|83N2NpRx+b2^Q+(;6*eD&I{1gdd;B+q}sY-sRG)6-V636*|88 z7w~QW&)KtQADa8FH{o4eP&*HwHEt{Rhs93vO^SN8i^yN()kdY7`i)ZTrD8b9I`Ny&+mfLldZ#2q%Q!!{nt)y*7!jK@4~vzl`QFu-p=mRM1B*bd5ARrf zB@2a!chjA!t@xhtU(EY<+8^GZ&kXNg?-rdDP_B_nFmI6?32r0fdfZ6`<}$^E4vxHK zevQq)j^`Z9NUjO8&R2DhPAK&Y!Y_H3E@Ed=By!Y7)76qm=pXV+X`nb6YUzA=IB17b zH;~nxT<&(J4=`(B|N1IFneK1nyiq#usM%a80L|A~L0nPlese03@nhrMZx*}zxesQ< zzyQY?J>RbGo-hZvWyEz&iMwB?i*~AWC(Oan$emC^-1#1?9~(HmaVHcjgIOnyW4m$a zK*VJ0?ceH`n%#C?WrsC{^C9AVhPk_#o-pyl7?+9$S*A;GenGpstpp!mE-2})E!CAX z_RbQgRaDElt>gljLU)N^cm0oVE6Kfa#+*Im+&J@R?Of0j)iwy_i({Y2xtfLR(CxJ> z_s)Wu?X@g-^4L|&?OQ?s5yOIFFm#wDQ=0*M$mKYi9|h`9`TfXiPcoO|#A@x{Ds~Qg zs@MrWSp7GdbCW?h`&-Ps)lGFAqG|i}Z2v1+dMnwSzWDpJhX^&UdBfa8QajGxGqM#9 z$&@hl*y~7sL-K6%ZtpwMZptrbFF5)1ho(Q-H)^~7zqI!(T*chC+q)!0(Sp%CVbQ`v zyU*U~P7Gxi);_=3^97A1M6Bi#@2vPA2oSnckCXGl);-FJ|Bm;$50&1@Pd+^1O%8Fa zh9U``yx5;T~#R^e+9} zXT2XMmQmMzB-lLeL{1vawD>($4OahZD~xxP^&ii8t&Mk75rVa-r8*Ej&~n)rRBX$( z3mv1-<~()wm_s(fhTF@GH=AZu#8&m~^B2;g%)6xAd3ZY#1MyIv`YZt)k-Sqlz>lOZ z;3fVyf)tmQG0#m5kT?OKQ&D8)BK}tH+C(1?s20=%(nMP2EPlFs_JOzp~HgnV8?R*_1#8GaF156{&=(kXKPjr5~dcehx z1~4UoSPk9D4+3*^4*|P6)S>C}L4;-#|F3i+?X#R^+7$Wrj^^?f$d|s6Y`Nbp8!1aW zS<#at+FMs_YL7>><7$F zu75pa2*QMZ_VZ_Nn&S^Fy~huaS$Jyv@No-2j{o*?7%X#-WQOnJsT0_+C~YKZ3#Y;1cTjsTr*41p3&k#m0RMU7-v%O1 zYYI|og{P&TcNyv<+Vk&&m}FM}8mA`ID`spwLKXPboX2oxVs7j4`&rRWSoayS)s&_t zpRB%)e%Y|EGHhRII;vZaKjxC+K*ZW`f=HcB5O3$zfb5qO=HOveV(5>T3 zLwtK(^wJzc6_|nTpNQE(A!3QYAj6qlokzKk zSwfxcUF8#MMhLt5JWU+HRHbI$Jpz8c;8seCX1+3(FFK#*yFCfE0vmo13&3X63`^i@ zwRz7$_ydY?04pN}akuU&5Su`xsj1ZQEIIcYHu?yJueAuvf`RqxQj72+gRs+@9ORJY zgB&9NW@6nLPVqU!9?wZun1OXJ90=l9Si~>!zGe{L;nmAn{;HP6`GMFJKsNjA^e?ot zh+SyrQPJWs;jh5^!#xeX+~U&pl6LMp#k-OAs3Jzq;d#zgC*Cuy&Da=x|wA)6|~W2%hG%%%oS?=&FC3s;Dh9^ ze{MEq#&ml5BCy{<5n=y}Yry^+p{~gmd!JPl*0%yotH83FjY@jWp}%F$IWu&9-94OI z`E%&{xS=aFI<}Ni)Fs}GeYby|m484!c)!;1mksfM@L&kOpWCu16o{UMHFut~P)-LX z9yQ_qhc_0KyN^wD+hlZr@Kb)Rs3}uq%A91&9IrCuU)4D5)44K|^*14sy5jdy9McP9 z_P1-vx!!MN&r;dZ<`u4B(NI97TH3lrwm1ie6~snI!aHMsls%s<8PucsXY7+Ipi{*A zo~eu=5u(5MBb8o)iw3+ey_w5G{$6m#n=4$_9;PtCcwv&pw=d~GT6WAS< zJSyNIu!BJ@MVX|AhHq;7weYxkE>HD--t70v4X0~w1Z=HfYL-6GZ1pbj*3CYLTHCHk}i38{?qi{L?StxSlQz`ky^ zX)^wb!itn=04?Mj#7tepEJxRtV8obsn(UN%7vrxjDk^D|`XHo`+VjjR$1DrI$%m+(^<)yV>hOSPv}Irg`bact=Utlv?^$V%L)MZC7((OwcPYLi~%2 z&1{>=zh&YGbu$rRm+Hc;GNhon7dXd=+_DezF{mW#%d84s^AbD`%|IoPYWX)~S)TY3 z{9~q3+^F*pZg0UFb_A4Vfd?9a4GP?5BY{mTt=<3@a<-{jPj|>3recHP9iUjR{WV1h!z(41q?Yq5{FkSEY90>f@Q>q*K(%@l11K7 z{UZzB?HBy63a)DfBBV#9OW-6Zp8DFi7@<7))r=Cri1vs^aq8=S(aUv^MLWqvFGSXO z%OV2xVEsU<*3Vj+&HBPeWIawwZ#WR`jkB2<*#f?1O#glir4rNdC z*7c}@o1iJlsrHcktcfWnypD6 zMf)5ooury}{;Q?Z-KHk3kAbN}HSHNvlLvEInDp_Onod?tOZ=L?NKH29_7CSQRL*IB z&QE7^?)-30MO;e#3pr^^`{~3ea>qCQoSYITGx$LS%CW_1eZh(tCSnQTXlOvZoKRK) zk^xp+4#!R8C$;+mi}r(@A~S;K%K7Wp3`}aS;JdckVs>V9-TBxM=dgvnasNq)jztsV zTE4YjMQ+-uKoT|JBwgVonc0EJObohWuy_?KhNr#XYIfj)rr;B1I`KxvHp(?bUdZ0@ zT58HmGYJZ_O-m5y* zYd%%CQM*;0ZgXcS;&z|kTv{H+K62^Ho{CT(Q*RyUSM}dBsGm?fl7{9SaJ|Emgz*NA zMr396dYDluRU0&xNU1PKn35zLBnHy?^stPgDuLbD*+KfUbPbde=@i1G`n0F;`gnCe zK$pk2p5cDrK0lsC?cyc$Lh0OXn#eM@{eIq%TZ`G_BN+8csoPrGqK2gg(Gf>+DTstp z|GrvG6RRRiJ{X8gL@@|&*yVHlq<(t7*d{tqbuU|01h#L=SZ z6iV_~l~G@xZoqI7?<*uB=`InjS59F;c~!}vST0XJGtY?Sa@9sHr>d5$SbqLrEaxk% zqB1byH334dU^q=E-|y#Z%jB!oPB=GPk+QAwv(3$BD>^3I$CT|$ezu9(Y{kc9!?v6F zs(!Z9v)R-~rqL3VJGPU{H z&QZ1+keztS{Y#+gerOH=q^R*_JQ__bC!9kmL!2)u}v|p>vgHwCD< zi4Wp$BN-4a;M+*qItd2`cX{~m;s)n_5?EP=I{PbTvyzP!&5kePT=_(PLV?(E{EQ4F zZwN-mC~gQ3OI1yidz8f`DK$$UGos->#zIqoN*kTTX8=L1GeQGty3h7o{mf&)me5F5 z`Cvc607(}BHpamWuQt??NQm^AnQ0?*Q~KMI-#}}4J!jNpMojt>mI8ZNS)_N!vIboQ z7fnziI-lrWojO=9x`glw)r(JL_gUo?-onMvBPSBit8-YS|2eTkvR)L*?Y07ene^+H zxJu7e-O3A4w~~-~{v6NANul(ue5d}J^l3n1x2L{8zzfucuJm2~So1#ZB}PIhd?K6` zxOQcZjx(1~S#2N@$$+XnbJ3I2`X|+ZV65C_R-Bc4QTu+c4N$!m^Z4toX<)TOkpgeU ze7#GDy&`I#io6wz^wb0fI&P{ewKf{|C|GVLq0}9h4>#MJb!vx})xf5f@7>11^&I(R zFi)cqq@y@wV}Ikml&lT1R@~-3+kWpo_uO;n5AJSvPiJ~`GITM97vp3FTjqt@o=&-2 z$G!8Nkoyh?m9H;Ra=H7!Ox4&f?~7&IMWI~9zIT`Lt3ZD{hLPEyxe>SxiQZ0vhD9iK z`6a`-m`hSV^)BX*=}Y+F(>?QpJp$XJI<`gDaGzqlmAJC;Y&V90L+@9y=PTv(3_Ech zM@ub!9>463Q!m{t^^Jdj%84YJ`&0S=T_@~A?@u}BQv3{WHHYEc_)TxOill{cZik&>++Y={Ki zGr$5Va_?jLfNi1aoAh;q{V;gGSvMD{q1hYpSi;O!!6aQqUql#2rQWwg!FLW$3=Q)h zY!jXCxs|`zw36Lx{%%BCadifEs&QjF@X&YfB7@xg<;|#_qe$GZqPG+>8Hcwn`m}dT zk$t+#yQSDXIjing?t4r0w!>MaQ>{wfa&x8MBj|5E6{;KvcYfz=$a;#qW8Ck}YGTK@ zXTz*2ocIlVcONr42+uS1b~>vtJ<6%~YV%g=xAJR2b#Iyfwn=ZEcFNoey6Si4t-^oX z%bSkMZ=<}7|8}GnV?BgEveQi+dfTi9g5G@_-{o^KMHA~^+^xGW>M1X5Q^5?^6 zvG5sGY;fO#j)`{d-VgRarpg40_<`(dbPL z67K6;Sg8sZSH?gpi3u76@;qU+Mf+8K)cmTC_wWw&v`kDBJA$;2qVYkK%XX9rbgstl z0dV!Qf_5Ng{vXob20qH-+T-613j~ckQKLp1YiidPT2!KGC4%ijB1VlG6>U^h+Do}u z>Ah4o5G!I}cOg%g)mX9B7F+GL_itNorIkVeg#<7OXj{ZL5MO}$vJXMUmqtJ&|L`J{akSdxJ_H z_awEx^ec2KbZCt;?({bGrb2%?;ykfWXB>AGdV{Wv=rbU>cGH+h8EU1AX>xcvg$!7q z`Ninc9Bh{Qw-=;ksY1q)XeLe=0~yg367vX@$it=X(N(*VsKQ?(T*GgEb}4s_(Lk@W z{Bbfv46AC^&!Xr;e&7Y{1DvY0)H{)+2I3OiKjq6P2~7^?&I0!LBqsS>8EP~RPfibE z6(l_c{B{vPvU$^@!9g}(&axX$BV7qNAZnTzJu_4O7gpCEm`FK5=CZ}29POTwY}MIW z$f=4%@m*83iR31Va)|@Q6GbA!v$pPG@|KhIyAp#&ZYjr+R;v|ozpW8q(S0l~{ZRLvb)`8iS+@i*h33^M5 zTZ`JaPH2yi>C6!CtNUnBLe>1jtwqtT6XzF$UekGYp(z=wI(L3(M%*W-W|XH&Z;8=u zK#vUH#}l&7Wt~1^wpQ(lY;DEOEIye9fn0*)p>x6Y2*Aa|3+ z-tsA8R)ZDp6?1`|%$X7$Ey0U27|SO<$#=6(ViI}elY;|o{R1bD0E)e^^ADAQ@3e#p z|CD$C$2JKR8;#U1LAtf-@nRf@&`f!B_=lNz#^l#}2l zCpk^4BT&`a2p45OsDI(rE$BlbQ0=DB>N}~aU?x*;;KWP|Av_al!3>@Y=82~Oho^g~ z7>^U_0dAhrPw6`^ex$R!e83d9JP-2`#f0O7on<8hno9C~B!>Skcq@3>hwg2yS~zj* z#3hB!oj=l-k5z-T1^=lj*=Im2-R@Y|!HaTgZ~*Hzm<29pj_)&4Of%Ac8{maGoH*2?N-GoUY|R;xmn{CGB`>o!B1n zXY^az3Qf~4B-e!BfNCSBYU`~3!22H`T$>MIZNKbVrG6;?#-Q~N`cR*f`V#dU8uX;o z_3M}3>sIK}Jh^lY0f;-_+(r2ZO(E)GMW-bP-@>qYtbfw82Sm~Z1Kinp5uRmYb2*ym zTRe7@rQx;Vb)s4XpQ!h+Ae|Xf{qJf{ti^=vZv^OIeqt|oT}}pw-kM9PxrUm{2e>uV ztjVpKOR1UKRI|4mx!3mF&I?>CO+WhYlF!YLofyzRjTq;k&hkEcmj^>fC{THe5<>*crsFRzDJ-56c&U%Aw zd!L)moiEi-k4s%{t_RqR=Yh>UH$ISSrUNmEv*^rb;sZl;yfnPYyGj)75Agq&@^6|6 zc?cg%6+!IA-F7(xF0=2**2o~A>djJiUm+u&G|?ms*qb~sq2U$v({=Rve>MX zIaQcv%RqgjlrOwVeC7izmJ)Nx{;w}lImv&3Ub)-Z#xGTCafaYZyzjGFr%LU#6qo8& ztdqKwXn#@Hi4B@O@lVh6NkJ>QJ8(OkLx(^b_jlJK#*20deCG5$~G%3&;FhbzkHQyXUsprG@U3 zjAFPQ&ZW;97fvTzJUFRACcuo?LzTvb)9VB@f8{_rKz4rwFZ?wF={+HOm0Ad6TSiTm zu@Qd>+ZxH+vcVt1)Hbbo0;c}-fOxbCfIqB+pOmy*P_b{$y?s9JcngL-e@e57+7fB8 zS?<`AgT@<2%RXdcXCZGq5zg`f_zz30vo6G@u{?X`QsA=dL*tr?QCobs2eqkp5G)-g zYqO#c$vQ&_wQI8bfq};d<)6VsG?shx%>BU67jzKx0e{Pu$V$J+2SJhfsHDV+c7lQ6 zHd?z0!|_;zIH!b0`Z#~O6z+w=rijQ$sBFY8Oqx&3wzz=p+7DL*rcC__tQzvFhO}yO zr1fjmh@$Q$=&r!Wxc3tVeb~i+PfS3W#_fGH+d6#87%KZZsu*Dm%{DN!yV!9o}>3Of`yq{p3EKWR@PurohdiE z75B;slEk&?_Ko#9BP`^ry>b!{q2k`obnMDut4ry0u4}&n2(uEV2+)hx#M^xzH{7eo z4RbeE$zr7E-W#jLXttRft9e0h4rlbe?3+2G?>`VUK;=3uHp4rukAw|uPHF>S3$t7K z{g;^SYm444==#{A8<_fF7_)D~Zv>syoFW+*P1KJc|D;E;Ze<;I=}z)xDhkqWAPw_* z!7Kdvc(XS2ZskM>#d_T6V@ZFT5B+t5{?oF}i8uGU<%Mp%P^V=TyTItC;Lhn1S_)>r z^i_$s!}WLgG;tv}FPM%T0lmOaz)@y~m>}L$5@nWtg%Y7=E7m7kBR+v8e@&t_Iyc7b zPV(nObae*#H3^2HZKA8*@erE6i_LePw~Llk|E;|Q*c?>l-KfZ!p1Xf$mENxO&DY0W2A1A?T6n_aQzCOeHLz;+H&^Fu}R_4oEmj_Jj?S$*k$`R@n1lgj^Ft zvJMK9uKzLfU+VECml=!3@uuD9MuPtTh_rLh+t_o?w`;u2goPe!GU z->wRzEGO}fu*UJZ@4t)Jm4!QQ28EwZS4dNAl&b2(AI!NtPRQO(pJCsobyC7PBVFap z|E=oLsaRy5c<;~jIUyS3XlPFQ1oV=HE+#MthuM6(LdKHxcXR}si+=x18x2ZLwjKI5 zKE;rRrb&vw8|L@0BbTd`NP4*$o$eG#M*7{ z%foktH__!g9pI|i;@mZu-}Ifj8XbOC{+~tf6w>g{aI-`>?+$A18p+%+% zZh3Ug&;2?OjZX<>yZ3VZBKryd@;g>UUqPwKx!0qdO&P7fhCd4B7(4Xd^#&NqF)@Y9 zM^rPCm9?Hk)DITP`>8xd>|EISU!YQR#DeB50oT*xr@@B^Z&- zGLcWIJEZPC$wf4N-S%wa3=W9kdU6A*3T@BqS)+MT_*81Pj+>Yc&1K!*H^`aucgI$J z)gsl;PEr*Yy=U?Es2VbO3vQxEY|XG|q;sJy`^Z<>z^S{YRg6Gd`6XT4EZz;(bMFC212zrl`V0y-kRmB z>+PIC%z0$@z`|GWo+@W&x~5Y~8C`W8RzF5J&lvCeY;}TAsi;!C+xw2_&e8wnf0L7wJ;IJS%TLTv+~ zQRY%nhv4=2>EDWjvP{m@oRhgn7Od?l8{^BEUOK- z?JStPGqh(wFGTUviO*}>IcV0py}dZW>ST_ zUwt+i5^sN7UG_$j&%S6b|F6P0^pAs?p|3(o&ho10(7+8@K}#`C5Ai`(fG@Hrze59J zJBf?+y@RIf16a7DsK7;>vy4*<#K2=jR=892FeUK)^>WYFtdZLnCM`?dx4~UHuaX#!>$~S^S`pmfhDVsH2(E%ynVJk$ig8bDZ2y8n2S|KLMcp zmW{RnbNTB17k%1Ri|PkCvu>t;lDm&G5JWSlRYMfE5;> zN}C!{x4aMUZ5b)5QU9P+eDxXEj(W6PL{!XBE6tJsL!Vvue1I2AEm}{(k54Xd^4>uO zQX>i*#v9gH;vLWC6Tg?a{zUkusn6|CKia%1*BY(#9fa95beR5hLy`hdTf4dEl3Py=N%ig4&|J5!r8DM^Y%gmxA$vYw1EHb0oy3o`Y*BQwKBpI@d0u6k zliVs*}0{! z@B&z!dAP` zrAB8rlz_X}9^FLg62~?iRWT#jokh_v_)_+^AwyDNuctSYL%+4pf1TDl6w)!h$*|bMZuA4YeU=FEvO{uNIlQ zH&-)Thn2nKJk}vojmlVhfB{ceam*YtU4LTx@FUBOss zCn5KpV!MaZ!Jdl)I*5^YC>=CW>u2b|v}i~nAOuSQQK-VJ;jm2WI^(?!si+B=EW77v z){ZV;q9WlwYR!I~GX?0zU6*~Ikh6@8JhSD2d#ld_6ij?Cf@UbuAP)OGRr3fT*lw?= zB`>V^v3P+s!$IOlf&y`je4KY18@-N7MhbfTld2BnQFXPq{!-O{q3W;o>$lp7Y0x(r z-JlU#=vrd-bBbOg=*qf*uY4a4#3%A68=;ak3l1>mTL*krF0}JVfKmrD8VSBHpdFQl zr8CDqlQ2=h!x2A|Fv%ngI5b|`t&q2#b7KM8AI?1h{A7{foVc+MoGJp12&uhrc9@EQ z*1JSYtnn9Xmd(LFVQ3*?T8pSVPYbjMgh2LgTI~@vjxPf}n` zJIz@86)0o5$>?&U>0GkH&b@O)-KHIZ(Mvz~!FRJmfVgEnp&W?NsqW=!(%EfB0PiO{ zaLCnTj8SR#8TETzr=VKt_t|VzR_s;3Cs2n!sdN2)T(V+6O01*(CvO!vKc=D_C5pN} zGr}6%A5nu{wmI|QY(&>1+AF7qGFRTTMwfTILL&NR*opB#du5CaW7p_HjMqs--&2!m z3~DJz6eCdxHkKb4hvQXBSQ{d2gx_HoNk;esRC5|JNGT-?{#Qjr;-5M$v^616DCv5J(+b#11~Hb$&G0%cb4M9DGKd^`1B2 zf{1w-;=+pNrNA+BtnV{#%oVBbOwmg2@iz=`XYtTw!*%YB1@4yAhK94;%Svz{eOCH{ zB4%k}x{xc95qG5fLB(^o=ee?Lz>#kJ{)i-d z*Pkn>XERxIr(K{!3#)Sb712&VS1s8@>p}Cvjvg0cGg#JY_QDL0ZpcKk&+jx$X0zaf zd$y`}sw;x{%o?vu0gPMba%AA6C$)pkv$Ux84ZY@m-UJvwn#yLWoAP74yUBa#eye5i zNudz_8?u|(hOC&z$ME&osYI~`b6@QuihTC3wg-?7P}=t#CHnMb3e z_<3jqGaBOxkjeQYpk$tiPFC{L=tx*q*HyajpAWbrTcqp|l30T|a~K)Q&MP|5V;jWZ zIPi8SO_kVaNUo4>oYCKc14gx%om{N@AWljWt(G@B+r;H#AZLgQdApNsU2FZ_z0p0# zMS%_3f%IYO;BPP?BYB~ZqI>xCeX$H9ONon}xu4XaoYD_bY8v6W>oo>u=h|%VlrA$({HZ@OH95sa+A$i(2j&xrLTssVe)?_0oREf8EsxvhXG3zGT-`XIasJ zrlN3+D@Gr=`;AdS+2$2fHBzv6JRA-4K4mF@T#7u7FnUC5Ub1%{`R_~VoPNd_y4WPW z7;^ee-D0RPSZ7&cF`Oj)qONcMibUS-9O)0L^q@W8J_Vk8m)J+5V=`TvOei}LzaoCg zWNZBo()T<_9qGiw{H<6U-u?Sem5AhUsRDtF^cizluKKCELe>4`Z8b+ZM%EwYOvFjU5ML<#@o1n z`9(iE`-4HuL*45sV&rq{S6O%CZ39E`m%A(T!}ZULkaw=YBUO7>r>UpwuRfo$?P&>= zy~O1~rKbhWoI*-*i`s`o%;C=dfd_&~Lw`&w+e|AjsFj6J9qhr?kQF9LS8=VW0b9Hh z8tS8;2WqJ12yI}m^QLEedIG(CkpDYtemGdp!B^=A!GWBSvTcAVp(XntT(W~hiDLE5 zvEoF?+`L&6-4uqf7V#3~O4;+MsBS=C?lB-;>ie+H+K^ z-!zIf{Edeml2e}wTalBTg4%*|W!>2bB?%=KMwe1|ezxd0unZX>umcebc>^P=rooaWnsB_no}K?q{%9!y3#SVkQz@5 zxtJ1=^#!CU)0RxeuPz1Q;L*qwJ)6wY?5MJyreyR)`re|shUyM*PU3S(&!3f2La?lr z0EQeki!z+dhY#-*yc?guC#nufRjhrb{3N!=$ks$#&b_U8_HNsLa%vkfVo6SNqSR9H z=p?c4^KqiF(lp(w69eDi`@9fv-tunHVV+=a?VVpSw<>kuyhf_3|A?Cmlc`Zge-PX# zXL&=l%w6u}o1Kj674~seI{`Nqj^)pl6|eKOhhHMS@V;8WLHf!%%YVe3llbLiQkIzX2vH)p1Y>raDJu>D_o|M5SaO2xHQ9Ms25PiI7izJj*jhSA;j~ z8M!>nPl)uz%b;Dl)KdDNKd~EuZ*twvt$IM5#-}+W^}FT}!r$nUq7kO1NcL(h)%xWe z-H`7jwv)^Rj^PiYX?Ypp>c~wmX<74Kj3u_;fzQ?OMrT=5>&f>_ZMx_tLT!YcWsPf1 z#1ERr-Q2HU3qgL1k*(G87@lzGp96LYO!;&<=7PviW{^Qf9rhHW<@a)HrjnR(sXIYfcU?3qduZixFbVSfrXI;mZ# z6M|VgRHDOTgBh04;Q^9jhvzvEtj}{8`f`RoWqgZ4fQYFi8Zp(cL+x%mf=&jEO-D;H zod~Q=Y#iuA6TxSUAh3DJP@ImHYS?n6beA(Xb}@~ z*^e!QMJ>%xEm41M#A;Ef5u+2^Ih+gorBB?Zj6OrWlbT0E0k>Zi5sz~hMJDiL4n1SH>=Ni}Op)2q z2Hvy<*(d73v3NAj6I)tTUZJ9vLHxP@<4^3x)mnd)65GS1zd@2&*QF^jiyD#Ip4mm+ z`Vv+%K4#*>)%U7soQa6bBQ_k-$vkzOjCN9{w3EPM0$ryDlggZv>)kHgo5%9t!PR=X zYt>hb`fyBEc(zOvMw}YD55-z2OpmR+m0B zSjvlqMz>r1BCn%452228C{_q-NWMOCIz;^rl|d+ z-n{bUm5hq985}m)VKaa25LTOTo%ySwwPbGs&r?k>k+$>+ZzpVIL(OfIGpkfJLUBzW z6Di_CYtcZLy1RiiA9Er`%pGmTBsyl zUV}oBM;}pvh0#X+=%Fge#^^EOp4mrc8Ox>ACr45@&tLCFXjE}AM%>cVX7%|lhd0{aog+`wHbJ$3syv0pL+0znxPn#5 z$`PA={A)BY?xRGjo@W7^NcLHL#_0TMn&`@(GR>IOrRv~;R%A$y6KUGzs%%5LSvw*s zyHk=m^ik_RjjB|W1r<|um!5Kn$>@DU{8(m1zFKivQn%nd$;FxH0u^`WKd066=Vnti zVxBL0xg+u}agz6#6y>VqA^FT7g_Ax{SGT7J{f?+ud`H@PWyK(3upC*eaR+4z9w3S9 zs5Ff0qg#lzPg!TmO+tFaNaTlVMC_mA0QjEt`JwbB`RS{)I9Iuy%rDs3owrh|tUKTy z2EUqb&hn}~c`OFbf>+@E?xyiP|5CB%jyL?bvg6SjYWK#dNpO+|6+X(;`CmR_kg1Kr zZ}70?r=**u*kwLer7y})>hp!B*WJqebV4f%Y=3Av zA@-o1+sl*yj9k^X{FZ)9pdYm?4Bum6Xv^lsuSKE#j=!UGl8@$7gnc(K=7#zG1ebe$ zrhaKD=O5iOiP^z7A@iDQDz?n(3{YUDS{eLn3_#U(CXIJHH|hKwl1Vs)QPMxp&&2}U zq`A0NiU2(BQ$AIGBs;%MYC}gXU)Xb!#h@EV;$n|XKST4^LsRr?(h zzWp-V46iVCSRKD#ZT8&@`;?bAtaN3Go%(j=^w2T&jT2||-q%gd-hASU-mCrNl8W2V zKdzBDp8G2Y}!1q~Gz<{c~dHwT>@p^1-dO?7-de`@lnCfx(a+um`J@kzl z5VZ)7n`nW z2$RUXevvF^ij4G+L=R15zLR`RHCgVg8NrnB7Td~Mt9Aprm$5lMA}l(eqfd(is<4yQ z9Y4&Sr%i)5sW;UzJ)GrTVyly`x6h`hJvMWYcNR&`^2!p`o8P-3n$i)A-yZUcY{38- z;|smK{xS1AL67&&UW1Du+x+#4+;T`{t0LDO68XF$|9D8`CPm)gKXQDHx8RVNNnU;b znEAU^aMB@>Sw&uaNaP!e{N^E%+ZFkxLn2>MWWgbkTNL@RE~49UOJ7+MY}_8y7`$SW z_L>3X=(MsJUOl7{&(_H{B`u9g2t#?5`g5O38Z{Bgm=BF-z5ODk;v7zu=Fc|oc3X#$ zZ_N-lct227Wxm&`@xj$lwRj2ji1%bqo&!&>fkj^xiA`~<-p^yz^cTQ(XW{E~&g)hW z;eo4)Xa_M6)iR2KCZ1cNKZ(|(RbBRn=bHm7X%NHpX9Ruk2liQjEsetdVw&`&iUoq5 zbsOE<_)9sjIuZ{dm);&~ky$tEz^EySJ8DApgQj#`P%}t}x9ZnQR=S=k?)bQXO2=yE zUTP*6&_~O)*D7xsKNHUV8GWC3`fg4WGfx<`8s{fYY7-GuQjUhq+eX;mp{~*nb@hwd zrlL??qrj8;ldV+`U?Sve1V9?(A?573iUpnRd{50D&=#!O)W4DBKLJfMyfjR0+w{;@`X(@A2^Q8@BNmh7;FjsAO09vY(a!Y zhXO{#RyPDrIj4NYd3WJ@Gw3sO`G+N+^mzZxIgP3)ec9;vv!klaD2x*49Yz|aByyV8 z<9&tx`qHbBX1r@vlFfdm{7J#dl&J;fb(xEYvQ~)XjLCH8-N{K=1W}dkM zP+j)xN#CS*nMNZh&pZ(^vo2jQoR)^#=!$6L|jK?JA;L{;;fpZ(3_ z2YSX=JT7r|=DAjw^}a>rqEBY+WXjYsVth*XYPeeVhKB*q$h{qrQL3@)Ngvs&7Eq@4 z3g({2P^=KR+EREw6x__{m6GPzX22gN4ePycUS+}&s>Gt0u={L_iehSj(d37Ja8mMk zWjuk12hvgvY;78?PR*nmDV4c8R?+U<(^m0+*~h zvp({0Zos>9dFt)76)~z^72}^Zmc9{no3R2NNWlG@4%zp*C3)^dV&bRBj-o84`Nit- zMeoYfK%d#yDQ+_8pNxy`a_7!-Nzgh2V3VC?vj^2eVzKn2tEDAmzxXWsMGDk1sDpTfQjetPFfDUHrAz!zI&Z`T)W{f+yMbdqP1Fb?e^H*k|j5_XnV4`|$XRQ*o9 z%u@emX1t8w40-Qh2H;NzvjJU0!5AfFCCH4^ z!URBtVnwIj0@uR?0SmZTyn&9@jclr$>5bY&4R#sU3hWJiFZa!=>-D^A7EuA@x0Aax zO2tLNdg7l1u}Cv_v%gq;P{)+dPzdxl9e=VZ++;sfn@VzZ(O+d!p_Xr=3ngG~BwaW& z*DXYO76Q9YX^k@HM}3y2OMjHB&89`NqksA-UW`5Vf`fa!Dz-`ZSApPg?{bFrO#V6s z^afm`_P0Pt=fBj4hasLWaQL0dFl5_*iSd+n8BM>Ck77HlylaxaTQ}r+3Ct=`6FU#i z-AENNUIB%LnYXp4I*X*M_*H8@cNf}=ftR{Pmn#*vXVpbZd<|8}ek>yufP zxZ{cg92={dNcQ*5pZ1Kl`ZgzdJ=T_#j4``)46HHQvP^6SL;r2<0IM64_psCQnX zo-Q(a6+mnT20EGgSZoXxMI`zPVw|AJ>L4b_>Agg{FEUx=Z&Kgdh&63HscVmeAZj2W z@OmP45lvF`Syr(!c85E)_vGA<SQD#(c}2iSa-ZAv`A-<0?b;T7 zzGXfGoej0l_MSU5s=;ej6e1G)C4NRR1kzWDYOeVb_=tT(W75r`PONC3`AtSeU#3JP z6{8(0)=VAcGBlM#q@A`|h?lUNJX6)6w_uF~yJY(l_);5WsPe|Dd3$V>zPOl7HJs+V z1@nWw@0a?fs}hr5Ge6=D{+yJ2?;Qkaqqoo8kjMSS8fU>D-b8YL!puHIy%;Kdz90_B zBYEQ+1_7MzX}^9sU!+;ePF5<-j&5%B)!7DhcF=K1?_VN^?3?4X#a_OdDR@p8cm7p8 zPhW5jb5TP9_eUACsFnS-CKQW6@&zehCPb$@%i7AidC_^u+OA`L>YUO%K5?+rNsfhx zoaI&ZJfU3wjxynaAG@?UF)TFG_$q(S7^IPOra5Ugk4YeM>M@By zq4-I?`@OM=ebC3~p)76a{BKzTm0S`!ucwDa?hOPg1IA)QYGtj?vZbc8vcfXd1NA1} zZESlhAKg$gI*b9-g1#M4o#owAnE#?F-W^ct2!eix40%cH{T%XQmQY1s8haWVLxOpf z=!!)q^_D_QYD4y@a<$`E{yC&3?;Sc`pKgTA=e7?Cj{g`ywdQ>hX|8eS9ne^S9J5bo z`^VrI_J(rRP25J#r8RsgUb9d9$Y&t*A_2@9 zmSOeRq!%tU1`RdQ274ZOju?j%AL+}MOXQN4oPQ z5SV#4-fP;Cn@zGOT^N{^HFW)!?x4UTnz;Gn_i=|j%9nJ#HnoU-tg*>Uoi%{6;Mj8Fb5SSoRUKn+geI$b5#yoW z2|Vrb+M)Xr+LgwjNXGtbd0;|F=Y&3^`8seHyAzpLur>KABMTKa0i*`|$Gu8%a)_-= z5IyWlv7wkri-~sp!ZJw9$_Kl9bmE^!fyVupV?mgY&zY|_?jJm**;#NA0P9rt2Rfyj z7_Dl7eV7F={GoRfI@`wmb@gv24o2#C(t-#hE_x07bk1diq?yJ1v{JDC33AY8K9y36)B+JbS1Ijk@C0^6gy5o(|bK4mZ36|UiTQ0%atU$=`t%|cVoepaR#kyQs zEZ9%G*k?(=N@uhcZ=LyNeKJ^@z-pHJK#P60QYWYH+bJ}~t-~Ebv`Fkk&>#mjAm$(* zi;y%TN)gl=6WSD?BFIXqJqy^*&iE;Iq+-v?<*oDCc(aTjQ+V9z!BM4?k~8aIslbYb zFX}Rk*__XU(1y`G2$PV3yuA&@oABXI-G_3L#=AJ`GFB9Xxj<4{}e~IA|=Lp1tA};-+9cAg*SOVh!`O#NJFI+t@{x18bZ0*d`xn z^*htM!dl_IZI_c>KzTLIGA;Z$$xDwi6QbO#%(FEyy<4=Km2PdXd+_5enPk%N6KN!@ zgc#oI>l0{Yl!q47@{3Hw=nAdraq)r zl#Q8c91TfdBUSrc&RhMgRIyNX_Z-efwdD${UdV5me*8kaKUl=B6qUEOnI%j5f_)h4 z)RqgePBlFnT?cW=h51d-i6LXI7v3nA%*{(8p&xaMO@u3#jOxLPO~cZ%tcU0>n7Q&n ztDrA6{n73VoyKRj3@yzma&u58Av7!sr&)UIAqk|MTHbj%%i_JD_*1ibrb zMQX?iPW}}B-z4w$zEaUR)(bQtl8Qb@@&??)$=$OM)p~^?c)pdXp4)D&Fb(nbRj?q9G*5NrYFMmF@{lRH>j)@kuC!+8KR?8wkS)XX^*qKtGG4 zN&PG}uFDal7xLvDh0Y{rB~R+rC4N-#ivp1 z$sV@%eoju|pXvSLR^R=-U!`2o=>3X0$+LUE8l7Z_ua9keApmib8;g1)K(~`z)F%S$ zI>{UQM1XTADL0To9bm{wet=zn5K*d#C;CLh6fwU~M57{VbrqmjFZO%%0YZukFTM0> zZlb+_Te!qQ?$^xGNwL4+vCukrDJvYZ3F*(lj~UxeO2ruu2@H~dE+hL*R#uQOVWc~y zImnxk-^fbNf??*Nzw>9Y9qbm19)3n>}E$1YW zK1+}>hU2U0T#N;;z*zX_!#N`WES<8ENb9bp=_@E>rmeUgsR76H2BO19J~xk9$9w^u zy6W7u?w0V=-V_~J_S-0W&!Of|>_yHx62mFrSVHrsHGVr38nTI@)|dBwuf5d&bvwTE zShnNqDF<*-5X9!uSw2?BgRFmJFI{1lIqpSEZtSxN9!8IK zrDHxsW??(b^1W|t?sAE_Qw=OZ5ma`rDVCo-o42n0G3b-QF3@1WNUPa*$M$A2=5XHB zzZ#TDEL^RVMyMeBue2S`(AeAAcz(re7=_m~A32cGJ0 z%H1|z+wG1V5w0)vh2DzG3Y_GLYVN7w`gbeJH)8M&afIpW0x@%SnCBZY>+q(`AA>f{7G2el8>* zverWO1!^y2ud4{Fmrnn*N0TN_`XmT{wq~SOG^1OM(}EZe$a{vLkUPJLzeI{zxbrne ze2BBS<0lbnHKEB`@YfS;8b6iDPC}f8P2*X(WHf7X@Cc^8#zs6>jFRT^TGRNO0ivp6 z{!;Qd^K>g*L@o{TjWc~v}LpzvWfFdXdpbnKs-%)6pD z(VAYG1nr(Ao`4zg$?Z1C{;9B+JPyeY8w|4h5+3)F-_1>mzRmU#+D~0-acyn)YYc`b z_zD!G1S~^kWbv{@xBqmb4}eSy4ArqOYE;i}_@A(C{NvXe_}~+?lbZ{1&3i0(s?_DY*a(j@LT8<{lpkL=$^5>v^w$A6Q0}1c1QeMF^xY&uc1akPa zDIJk7H{7-$ia#xJ6BAmhnQDC+P;FHK&IK=7`g|ROj#!ny*#S zBjz0J>8?DgG5!c&=KLB`;x@3AkY#s^dlMqG#Ky7*H0xxZ%!fBiEEfntPpu3GW~wh& z<%7-llv(=~S=ZmF=xNbu#7_hAPy49bn(11#+un9?V5Z<4t<-IA4NRBZ6|m;JENi}> z24d+;@QwVO^Vp4%@Y+nlv*C5aKTMyKzP%t*{#xVgm)HO#4WGdLpTZkgd)N#)8%~RZ~ zc`K&q0=_3SmGE#Il7h4B^1Q}f+&hgq3l_6XkyhSxLgTFioLSe=+<>0w1J6ThLEZ?? z5JzF?7s*%7QO>fB={2=%Ib`kKKvQiy@>_RB=I#iwJ#dz74sWE*K|YR}liT9Qs(xqL z3A7iFg*G2t+jMmpEXSa-@`|<2UEH%2#l={X_{;JH6{d*u-hNGr{mUaNPvNE$>f4&9 zB?b1%y&lEl6&}eTq%_t?}r(768hrGi9c4yfJ0GG`C z>=gG>)nVQ-Q|1A5$wI&zLw*C^S$<7>Fg1{S>XgKo3mC>WaNsOE{@})2F{m8RIH`0f zPw;HoW#JV--u)(@8CP|Q{xt4;-B~ctL~n*~6rK3fsVaMNi0;x?_0b&CDDn$_`eUflS+I-``VD2?TjO`eF#}`T!wk_>J)}1ZovuID&a%%PXYWQommOq( zfIajgrfi<6E{HwbkJV27@<QTd!6$co9Z`JTRPUN*QnHvi=Y6#G0m+WR0tK?}9T$RmbLPVL%Gz64Fc z_@f$~fz3_L+Pt~@IKB(bL>bQ1 z<2zPiv(&$exUSM(@hjA%ZIl%j%es9zjMev0GlV`{DRN7$rJ!tbT5V9*o+Wn@s|{tG z--3*9vtdO_$yUThveR#4qopj`nrQJscu->Rev2)&$_vq@rbwn7vC`%WL?o8_rdwI+ z{W@-X-)K&ah&o`phHo~K?tF=I#5Rz6MiZw}MoxI!vY}KhsCNdg5L6Ihm4vroSuGDW8+6(a-dIW%6Wqb(rRi?i83( z%Jlf>WHNeIjlVM8{yCYXm{spaE7Jv^lS!&zWjbD&j{clX)BH^DzfY!ZvP(J);M%0C zre~Dtknx{;A!wCu|C?jAB>H`~J*$pjcs9_lY|7&1VAl=wURR&x6ZX7Z(*G?Q;K zjvvxLiiG!YH4*}CSE>I=F85wq zXSfqvJI`>ZE)-I7k+>cOpm%UTS*HY9{~Js1mhT5&_wfZ=7Z^FkkUKWwEf9MP#dw-y z1?s|(cQ+NXNMs3TB2O88m_L_P6ObKsJ{J;f24?9(VkI`*hY15~w2kl{=Zi`zB~`3tyHI+pb;*WLlen)G*?4e6uW!M8BNfI|I;%K_o;RtBAK1 zae|HL*0I-%iWp=gHYwsMBK$*%_dY`t!5OD?SoHbA`?wRbfm~Gos0ud)h3jwE{?;b} zMo0r`Sl{>y4ZcN;9q>?%zLE%wAQWdP0)AJh7A~j)ynnYXB-O%KXdzfR;@?8HyvQa_ zQsNMGrhoyRrlMuQXZy>+Z#200F4Wv=4m$0ba;!nA8pI_6K_<&4#8{`Yvd@h9*P z*WZ8LmwY?gnQMVZJ_D`yId2Nzw*P)i&L3U>^251!C=&Q4`O`Q7C;0V4s``Se>h)`v z*gcIgn}n)OC-@Vsdr407khP|Ax&I~zWp=tne2>udiVN~*Ud>gg6GCX88$p`5)0d!- zo2Esl8@Unf$gADw;~{4}v+079jlyfXtyTCveY%;KCxqe-B&r$&<2fM2sQV_-y@_nC zCL_>KO{|}`&iL`I)_m?Gj;%>nG8Lf)@Gh30fMHdo+t^JGQ_x zi96@nA0S=(Z3n`f4*C6T1sUscH9vdHudG)Iv%ffBSx&PxjR+u@WM0KHA zZHmRuF_3sDeeM1d2#qW)@T)7~bs$k5ZW^i6Tg`^sCwQ9CKGJU@Q$Lh~R)#Mn+R*6M z2LxFCucT!Yw5u2#lOjAZh+}A@=PC?*-F5MiYOm>aE)Z~_t85dE)2pv4h=?9D6*id) zofJ$>Ja8C^e*4z@jIgf0rkYfY-e#}%OPpX!4DT(GL#ZvH6~vT?`X%(bwv37zaLWS^ z!AAu-#4jVgbpXTHY`KEW`IAiXHy7K%_-~4THuu+axhI?4%l+JJIce!xdY^=AYv`sJwUj2w)* zxssnf)-Uut(uZ=hlmu8O_nEoeH<{dT{?hNipSwS{Mh3Z4(6+_*Qolew1=0_+5{+-K zkuF>8AHRAiHQ>6f4>kPQFFE?KO`T;MfEYS$C_j6lU*L$t7C1Xs;F+L6v0q>-s*cYh zsytV~2oS>6+rLonIVev3H$_<2OF~X^pBAQjwHcHz2CjgDa;=-C-ClK$` zembS?D`cCR;u9rP|og^GN#jT-c?O216X2AgS1?iMpU_`#bk1S9%$G-zST2Uk$ z$tKDzie}e|tz^`Kx+HEwj_I~IlhECpy}Zq~6_5R^cD~uCo%inVZRgQXY&+M{jyjsp zwF)(I@5B5R2EGRc9S#E*5ud}rgJkZH0j&oX0~e`1KBY?WNoX2 z0kt3u@Z)1Z#VrOdYyFoP@Y{)zKWOKj`+70(djw!%`Wo6vJh_xyjBh)C%QoMRaX5x!{#5Cm=g&(DP3wx%+aj;uGS53A}R@{ zYrCF+kw?b!RGL<^dwyoRl{}l=Y}krJ^=DEjpX8vB>d+^pzQvCzwbGVK-G-HtmPk-A zUHJ->fuY>>Gwg*MJ~o1LBXOvLRnF%QwgZ~%>Q?rLer0D+nRhZ%-G??;=t1SQg)~1* zp;3OJeKg|j5`REE5g2~PI;hKJJmue6{1?JDd6o5VhvlAQY@G#}@exzv)q5>UWO3_d z`D5ij`CE?Cif-wYrW3EQqf}S#LNn4*s49>?RK7Rq4PKnKUlfu1<


    x4-ad@`6zQ95C0U+AOj-Bb^(yX*?CE3i=+(t|n^(J9)hT-} z%?M|2yauwWv=mWk=%k%@ugFtwA4bCueO-_71U*vow3h1WoG4@@H7>SEk!;iVnTMQ* zE~O^PQyJ;{-!Y)MU0g*rZhfZ>VGS22#t^^Jv!;GG3ZPuq-rc;ieXP_NY#B2+&eDI1Obg>$r=IEvug&F9y@te=!|e z3crkDtgsu3(K*`g`><2xghOBRS%H5Dp7_xm)_Vl_@Tt?}Q&j*j?h(mU)0RdL>&qm3z7qB?2o9j9=3HQyec9UGwW1V=ozy=DvCggK(XK86!Ik+j zdG74~SLU5mn5wxg4}R$|H|3qw-wDvzh_vLn2dORHJek3C9{V8NEy_M8w79v+%e+g^j*8hJ7pb7m+g?d0~IgW!zT=tN2!$$b->urYohJ!IqSF7yND~cz&T$ zUIvoOC8Q|z8R{gC6!Y1_XGdi%RYJWHuUXlE0{DlmX8hD%T|ko4zpEjPus4%`J6ZVQTqn+_RJ(mcq7O=|%5Zh<`@ zfO?CdrV0!6HUy)99>iJ9@@ z)Q8Un_J{TIO1A6(51o_}@7~^z3rG;`IWBA9E)WxVj(KSKgRO?SPLAxxD|nOD%=u&t zdCWclrgtLFWr8+qAPN~T0Fdl9%6-b?HPc}DrZl(bg}fWd7>uWVGKmM3u=>$?dhV@6 z@2f=E{KFZ^&*VQ+k$v;OPcu`R?WE*oBJa268yJH1FO=uA-liL%tAk&b&&fLgYNj812yi4-|xuOYjUjYw_zOzLQ*%IzSji$0TjvQl^0)ajo|?YW-RbvCv1 zGpRe2`dgb?{h8EtN?kyzoqvbx=YwPk`q`T6=SjWH&+?nUF#lVc114~@>b*NxFTGOw ziYJuL)-rps(uZ4Itq(XMG-{?!_H?D1kuXnOTHW_~&{6yOOv05-<>F!S&|U>pDiK`+g?v>_6B&5Uv`Ckvt&+6dbhGwvqm&y{luIh&jNOK-dn zb=-*6yc4}SKFBriFaLh@_stoK||a_7|WkkA*iR9 ze{-qYeI0pZc*l7?VUWUJ{*EE1!&!u%l5PCoa@2HM*t+;9Aqafz+N_((3BeiN zODKLA?>|606&;=|H|h5q)NHMPAMXuo!&G%rDD)%(TF6OBHGz8~Cv^+~_dQOq z#W;_2<3~mkZTS`ZV4P2X{FGK9{26KDhZ5@|A3r4umP;dI66^93Z_4k`03oor7lCxI z+2C*M4hDxkNJVG;dtjnewe-h??G5wmF!*TQvf;H2!b+(bFG|*LHCW-B22btRplxqE z?a>{zSJt}6`I8}9o=q>(qEnLn>K_cpFTw3Ry8lhaMSc4`Aq6ytg&WbLC*7p&;X8SB z(tC|>dtPGRTtF{9GCegP_eG;qJ?XkgygacEzhC_asJpT|94~~djXBG&{<#kYL;R%i zbJs~bUh&WR*V!SN4T}L{N;9AS&c>by*!PVe1u|?9JNfAzoF6}C?s~8ER3j*&FTqTQiwe_@$S!>1GAT$q)oD4Vr8g*i2-e`vNEr9x&p) zsPnD6r5kA!15)+KS-uzij2L|zclD}?c3mejS$n8Ev!f& za&p?^%$J*+^y5;#WFoOlWI-k}pT=Z$(@LBiI}LJ@N6<-UfoiKx?2R}J{JZSR;ViEn zenT4L|OSta;@eufF# zT-G|5wOnPKU$?exmk)815q-!oXW8^Ka7lG$%PFa@%ZI=3JoaqcTTZ6ntdBia)wb`H zw*7;KZ)`;MU4M+*o{r_GFD)3}rfmD2@Y*RLrH-zw2hb@8tal!}~k1SZs2{LP`|&bVlU4mUQ8B<;UQ zYmbc#uMpNvJ%8=n9vO!P9(E-LXRoU_y&UFA)erq>g=0jm3WM~~LHc}?o;%)AMwS0U zkUqtxn`TM#PB-6d^T6Ntgum=aBsGsWJ|rgrqAzHgjQ%XcKF)M8eRY0%e1Ws<(ldr{ zavtk61I(z7&kqKblgF!zM&~*AjvtxO4k?85r(HD2n2v#Olv~XJ3IO-1{`|s{bNJoQ zYoRD;A$@6nc;o0owQxb=sqzZb%B)rn%0|(^7;iSM!9s%bK%TDyBc-?zoK?V{Aos3T zpIg`I#_a$KdwShIDx$ZpXFkW~A(}2};{da^_I>@!vvBTxZPQq0OyCA0q|Yqsk> zKXpY%Hv$mP?9!A8JIju3-2Y`JLLJ?W&(M@qoho$3MaEzw^+l$@-1Wke<=NQ5HiS#5 zfS2*=j|nJ1^KxusMQMCLWm`<+kR^4E$o`Pl83{mRodu!Gj`iE4<@$`Mw^HrB_K=KT z?8w{oO<_f0_Yxa!e6aq*#<#3RZ8e6{QL%M2x_<9LVWX}vAGKT z{NT1EI2Fv#F{bRk2TYmlj$Z~1G619eXRNbdxEzUUeJONeMDMGwOzbwV=Sd^FiPqBh zOaequdZeu}q0e+;m?B%_)tvIDTIXDueq4&IRQDZ6%F9Q{P3tp#&j>|szT-&CK_Ay= zS@(IB2orP0C)O89@>pl*kzcv0HC5j6KLEMsVD6>$D$0m`q_S0dg`+NHj2vzbfDJPbBj z8r}!F(%JIG<}2{1g&3$d4+uQL(X! zwfPl)t6!cjh@Kz*dj;Us|MFVPHB|q#=C#G^*U_<3`RtPWoQy zSYXQH7aBCCPkzrPi0)~Qk2-?sx@wn1T;R7=B-W4VE2bjfj%ksHHWSI9CwA8W@))oz z&$%&1d;(2Wu^d#3;s?Sqd1=X6a6n_j^9n~Mwhw^rqUk?vBB>frT{y+bRE^Ud9hNSa z{5L|neA#c9H;isC4x!b+6IDS6MYv~=6sAU+PAK{kYXCA%OxWpi^Dw?fM ztgi|9CKgYxYrRZgIU&4>hoNipsib}t=T0rc-sR@f&1-U{-nL-PV3~ll^o(jTpp`Nn(a~e`XMFvpEs~(qcpYBXU5QVl zlQNMjknYp>Ncv{~jz*w7ebGl1owJVWw@#>40k$4T%WguMA&ytYwIvmGJ%@Sr)4|-= zFO3({aD;~Q)$p1ABiUo^BiW_?BiY57f-5pbKS?*K#!S)Ot}ML@+}h$Cq5G94c2A@) zHB=dgLTagg67)3z`l^#Y_1Egu1TI6sOzu&*wn!$(+~U{AN>Tji%h;F9;`64h1_l4g zs~|!FC+x}-=NNDKBQ}JElym0~6sAg2rlr5;>yq2v$_xJ!5||oxZ;r(W%7ybk-J7d? zwRF0+z*oq-SL)%Y4%G7eb1Q2CXG9|qQbz!|Q7O9x(QMH**rMLEh+K4SdTMiKOiD%O z3`pNxO(!R(!{I&bOga5FyHD#}mNm2L?S0ZlP6d2P;)zwNBCKLHD(3DPFg8M|clwta z>X*uk|HzieQwd?yl*s>ViC5mT?F@*2+lccOX*J~B^)P>h9U6-KBwj*8#im=5`OMvb zlI%kirRI{c60w;shCVn+T< zWW%={)i`Fr8JVI1^&ey=3!Fk~#gU3$G|tCz!BKYOR*)l#vGhqSc<6SHeh_ zup?Izl@zR@nC}AyQu=?Hd-wP#t7~t3CK+IWz!P<}QBz5E)S&U0*tBLO*dZ4(mWWZJ zM2(fxLn(Twr8*#3iX)>f%E0x0AH3Bel|s~Ne7_jwpEs0iVj z-}k%rGm}ZMJ?Ff?_m3AonP=bk+H0@9_S$=|y*9XiV#`iPEwO)p0FiE%2kZ=yTaZ~s zaxv_!A(>pnQAsEst60wROIT1AQiu$tga`^yR(_4Q_U|eY>jC-YB3OH-tKCfJ z9iS7zBsaa7Ik*&3rSQSLXSyWqU}%^&JprWPj%@%D=5pSU+!&hgLG|sQqHQ_RwjL?| zdB;3~SU{7Fi>ZbyyaMn2;viFd=1V!tT=xhIxNQukZNH+XG@N^o^l<7Lx)Vr_yu5;B z0(|zZf|3pIA3s8JgiP@Q&YjkLW zlrLlo8HFd(h?SIhaj>d%7KDYRnUCfuenC8oIrRqww}Nqn?*yLpu;4gC9Gh6*Dg9B| zGc?=b1t43|b`(@ixMJ^=0U*j}<{uD?V64YrDgr&sHJKLD;4-SRILZAD@EAVYKnP(` zkI)*1{!v2f82SXAEz9xC2stQgZlw=#d{E11>9yi?`kMQ!xJHS~LQRkh<{QmLboKb} zGFoa>SioqmQ(-?q`6}$^MsuqQ`wx_>!fp<>_Q8dBB7=J}eVtfsGKsBIOcZs>pzoyC zJwn(^onrj4Q*85g$~}rsQT*+cEBT#bAgQx8LsE{B-?8#bbScRJ{2d6Dm#epy;|W(# z=O7K16#kDbkx8;7oq*@U9sVC+NbrgBA@WZ)?yKNH2U5=`U8TchHeivK0M;Ts6@N83 z%do#_Itr4i|7=-AXNT}GTnz`<=n`EVd*O2{?_g6-#t3)ft`
    Qdt#By;%BkXC^jMc=G(1A!8Oe^$#AGgUff4D6|y%FfN*Ym#{O|CFWVuPGEac3Zm>+na`+f@F~TeH zA|nGEB(ST@eFt`quxBDjsdm>Q<8nj+fEq;3w5c}~!K0Oui87)=Yvm9e<#&es&Q7$f zKH;d7aGKjtRxZ>NiFn#ULLN>O=#ymLM6RMl|Lb^>r*Alwxb)7zbw)W~EA&qd_FX=2 z47Qm4XC&SsTxrMd*X=g{#m1GHk*nVd9zJcJ8@H$Do{5ovWmb227AoR>PgZD^E&3Os zw!p(QB!k>DZFn-gf?9emiao~k98fxXR<^kMxt^&+r^ZHsQ^8$B_i+qzxNGVDO1Zss zf2`a-y5CXmVw9VYc@t0a7+Ai9dlsA~>y`A$!Oje(dluPk^q>7-CsC$O0kf!jQajj$Y)ITGBO~)NUe4 z!^yPbK|(kCf1H7yLDG#3fl;6kuisp){bc@p2hW+#$qUyQM>HPDwIl9S)_=OMRE_VW>+m56sWTBK}#p!VU7 za;jZdnQzhy0pW!59Oi09CCe+%UNZ%whF~LO87jr)->W+Kmus;LV7On%0M>3u0p?!n5~${29FTL_i3G)6%vTvpJP2Oq zm@lRH6}_2%9w>n4ZOlrd6eR`TpK+kgM97z)L8bz&n{@*jT7vUkIkNRk{a`#8P)_~n zD|(RyO8L6?5N65dP&V1Kd65N93lyEnOi?}TXJCwJA*zL+yKtS< zIoott2~|7l%>B?d7-*N@{4nWH>7PpTH7nR^R|D%@&9G$uv)=|;yGNh6W7k4i9AL07 z!!Wf;p(zhk68jrelg+w;0$Tn@oM!DTQrJ*-LxlWqSdQ$2AxA2s`5SIoAgD<3>GQvh zPeV8OOQ?HTE#~B9N6>BrVZ$tZ6pdR$aRvjR+I$qD;3piK`XSr|1qXmMApA&;eB$F9 z(zfED>PDvl9C{j`M<(qaDvQA{i2D;l;Px@oA4&TdN_3w>cgWqq=vr`$#+T?)Wnq!b zCdOuh0a=wKHNWZ+LvC9qDSo;UI~pnWXvuy2R*FhVu@3@mYKj!&SLfmd)PgoahPk~D zjYjJ!vR+S2JgiJQG_C|#!8RAh!{Y=HtwOOgBaRlZPlh0Z+!7Hp$t!X1pI%I=jI{7= zoB^@VVL0{C+|%nQ^y~|KYN2%n^Qy#R{{=9V0fr^-p-WJR6s=x4Vd?tr0rs0b1H`^V zIXJ)nT(DZjeX*26YB>m*WINX1U5-jn%~G=H$-#{op51|0QMhy|VOHG=Fj$?*GfywQ!ZxE zT@DlnaCcFh!ar+xG511yHIochfV>6OWmU33iWSf$qeY{PM*FApli{!7XN><^ezd?fyL)iM8hF_ijSp8}g|}V3 z@gn>c;xB(!@2r;i1#q2*zq6r|h4k?=;64q1CtLnea1X~{n(`0bp9e}|?gz+qc&>KN zvv=OoA)D-1JD@?)(8BH-gzlDUm|?Pjbe`-%0Rv<)p%nY`+`h0*3QFaqKnr0RgXg3; zi`{uE9st2Nl6^%asoc<9cU6Lt&Z5)mh`WjPFHfXExmBwgql6t|t4< z)VD&VXMEK2j^Dxe5TNSOZfY=pk~#lM?;2Z!%{Gxg;HNhx7W6@LVcm_vL*tlx;brzV zNp)i)S!c_QLS>26BL8OEdnH~aMPXdu<2KEZtcw3&U6jc>TczU3sO82%7*hMoe0`@7 zd(8R9S-}r*GmwJigxi3p)o|SMnxObPhkYwwk<>y@BG7oS9&C|QCes@0s1^wePoZjj z3)%+cQBU4IT4*7XcsjKoCxg22@zgw zMAQ;lS>;`ZRq-NLr6T+{v>1-xm15`)*B@mt6dFG_#05?<5&I^|gV1irJt*AfRgil6 zw0nMvsota>8p*K5f-LZT>;f!dQM$`r&>y=f2-i9`HCfp6vJ$aCG;crwVCmouw$|lP z@WS~R#g~6D-y-JI!G4#81`rk~QM-SlT8Q_p?b!cR2|M(>qJqz`278+IYvC*c7_b1e z;L}2f!GR&ay^l}C5n;XY=Tb->r~l+{7$7;ApeQY6Ln!2>piJuW@TQgno$bV$I|Ch_ z8QkEKfttc|jb@G`9HwO9oyB?_Mzqp@AT2Y{5$v}wd^wWc8f>F1Zl0WJu~c!B$@hU~_A-qJ$#h#vpdIZ#B<-}X<&c!h3(?BE+=ZjNJ$ zaE$*NB$DAdqE)<$u5zks?fdMzNh%pA0IVwOd#~GNA9wt_ftPeuhrj`ZFUBAccW^_V zb-JGb2|Guk^16hU5?CA<&j*KOOXxF>o%MjMN0O@oNNLlV)4t<}G+1vdKQf0X+x zUf`?s2sXxKMI7_YfF9B!V5VPyoF5hv&P_3WE>Em0srDJXd07*G&Y zP-`JxlvTMB21kMkG|Z8N3JrKV3xKPF(aU73t-fJOcx%TeqLP7oY?#RJ71NC>^MR;g(n<%4Kr< z@$T}h9E5k5XX6(s9SBBYxNiCqO4iF^XF^;EF76&KX(p4kdG*PhcFWjtk#e_=F33A} z9E+YZq=71Sxev^_ypnz0U7o{y-IKHU;iv@4soLYl(9gw4vd9$0LGdONba|@qnIPoZ zQ?yl8X~8z^p#}COXX0*KEf$Aqk~R=c5;^l5D!V%0r96yBEwK7S_Afh`4ScLk5(VC) zUd}(4XSgGhELjoF{}ukua#Q&`{ol&pv2-VYule8e_nQAl_(_7~f5%?XN0z<`Q+{WpQk}@dt#9hIN8=x+3|=^&DE|As zvs3zLD8EzU+dv-D2asAMM>Urm@H*{y(zGhG^(q|61rMjqa~X~Yp2tyag3elt5RveJ zugV4Fl=}WzdHE^jwWXHFh<{ODVm_qdK|Hw}?&+$?gUI&-a+HU-i9jtYc`aoUm7_x0 zjHqxF95C+9cft8f7Y3utsK_h{zMl>jz}?s^qr$CAwEq0PnMkz`^oHG&dvlnhF#{XY z<71kyOBbhzFUWwwy!3Kx;1H5V)*PRV_G1A9oAwp7%jCl0IWG)UIP_m-!Jmz%l8`uN z{z6_?D#P7K2cSm{%x&L|hs>8i)4-<3$A9fvPJu<6DxdI<1@GxMyHEs9IsM-?Dl(wz z?!VTmibX?(OI5}Ff9l9Y464Ix;a`BYq(V~yXyj?~1bwB<(ZUamih=TwI5YmVl5fbu zbewLy^e%4yZOB_`w-nw~f7Cvai(6F0EOCAD2tY?yx$HiDqju^SC- zn4gE>YVPvaL14*iIwqyocjr`f_^Mh4t`+YjN1f2I@vZi zC8(5!B~xs|Ola3&IM_Rla;N@i9ZJ&|&BZUD;9lgXw;nkPxj&5Fk|@-WXDqUmN+>lc z^+@i|eO}P7rmb9HlB;Dtq?)>)<#@S4G>`+=0`IxT;x*0iMqCSxhnKB<0XTpjBPhfj zJaWps@54}a%W!os3W;6DZ)X4;s{e&Hj-&&sEcHN7LOPw|Bp(-?3po081xZDSzjx6Q6>A>uf9{8Iv7Kc}V0-ff7K4Ax#8-4BA6uJIb zGb!iAtNWX;K8nxr=If8s#&cHl)yJBz?>A0^GM=Yn;cFx*b@iS-GYCL!F)vM+xQCq( zk%z!@uneq-$dtiOg7) zhhO_!6r?;~X_2v{ZS*mk?vE66$dg8MiCxH5Zu_A~@yQ6ti)2JdYYFVg_|&(w?{OHd zLW5Y&Mvym>eT^~68Oi>gQTPZ+FnIiwd3Ctjx(B33`|oaJ95~145RUe3 z!G3hdt=JI<)#gWvmt(kb0hXJnQToFN(ZT^6>iTQA`*W=Qz08rO_Tub*`90eHQPxOP z9}DKy7kCrx$u9}EXA1q|C(A*dP%R88hZc<8=Be1hv&tUQFA+k6@en@BO+F!xui%Q- zyDuk!V4YAe(oi0ry>nka3$L7K@D5RNOQia{w&*b1sNc@^_GT;#wx>tuxQlmyi1ED~ zm4KN0n}2n@{ct9zT2;y}v2XVbU)YHfvVfMHAvB$Zn$3F%E9l3C0t2Mv@910bjdF9Oy?r zdP`Wt2aIuAcnL-u2mEe^g2*CyHAEK@Bxy~tfEI0)6GKgZMSJnJ_79vRUjZ-8e>W8| z$33yYJ8F9Yc zM`@q~l>0r^r0i6rLO!cO|E2?v#{h5p$C-lDe!=N1{ZceG&wdafziqw`f)e;>77XFp zAQrw~QDet&N@It7=n(urwfFBvB zyAc2iD*~8QGcN=QhuC@+#d1x07;?^;*|e_4Mz;r()!e#3Fk;lMuBQizmA z=E)S3Fu#f1vxwzl!lnvZqHnE!ffO969b=2eqK@T6@|_p$>O~hq*Qy02ETk}0Vl0=g zj(Sd8_yz*9z;d$8vA_xXN4S&&^YhN0Xb&?=&nO->&>ifG9oa4Hia{k#I89r87wUU;l#7ReU_?+{gxGRoyqQF=SdCkM6wNb-eCN{tLn4l0@V5r&gapG@n$tn$uXOO z=}2)6M65iNm@Gi?xApm$PiN`hx5pt-d}-D)Ef@&%Rnc8ogW{6xr{!I48dT{a^lCH^x zRF!ilav>%57kIy+l&m99FO`D^DNIp9WbF!wzB)AHf76892Bl6Gu_7(7S|E9j5&vF$ zq(A=W1mM;;_-P)vB}*&fo;v6#A8l}Bd=-KKbBz1AH#Ff^=N*-|Y?Ncp#CziY3C43V ziq!}FQ;guJboEDE-iYh1S^5Qm*|>K(p*395j(dgUQQ$J_PI_xW;d0nceWIcX2fOWKDo6H8bh#ADG1pDK4yp2p3e=8Mb1Lwi{ z=!inJev;8D=QI5aE;Uy0gkj)Hxb*WQ*w^=e$MEK`lYvu*4iWLAm14MLRH^4kVCPy? zi%qR;9^%}5(_ji4=$~Tt2m6Noq+_pk>qp>ZzzFN?cB}-})PtJoa+u*SF6duj*E`nc zAY5J2ggvjoLVXuZP<+&<7mw2GM~O)q6DDakALw)hronDa;PL~V_CNtf1Sbhz1eOj` zmfnk$rT2Wj%7M$304IoZ0o89fy^L?hJd?1eg;M-$;%18+L9%mDw*Sfa9u==1hxrwn z-32MG%D#3SfHZ4~2ADX^b_2B;L=`}Ap`J|28{sz2PX6H>x!B^&c02VV!ss@>@7gX5laHeU}9FI66=BGT$>_MhQ2}|WaqUCgzU&^KIunU1}^XaGsc9JBYkj?9)*E+Aw#$~obhZZt{R^T$=97D>9`c#qosqYnaFn|EkM9}HBK%#U+)w{?zwzIBeCr++E4T;eF*!pX* zEr}k%c6j8cplxhQcg3a=4+s1|#a7#epvPq_M&Wts^Kb^P!@YX)qr7`?M-;FAE}G=^ zbO!dZ$*@vDl!?3s{!82>D~Vm0tl>+zpl$aW@qFM$eV_2E0cNKt-Y8Ck%I|2SxEAGSfCXcvMkciIJpZ`ka>KO(*t*n!w!Xh$f^Yx4j5~e;M9i@Jr;|_c zLYnO2XU7_7x1Z-CY4PF&zV!@uYyLRvto!1BmubR{k}8lX_67W+1BadWf;Iqy((-QS z;-r>1r2Z`Ij(}VdKgpi`KQ@m|^}Q$G5GCMIzo|IFk4X!Pw| zPM}+O#{b@;soJ?fbhP?**K-*pg3fyhQA%3f^oyc zzLQZ4m#B$@ML>X)MYJzpKMXzK2DB))_-Y(3DmTs-X&kLK<$!U)+;2Nv{0J47pwFQdL_7}|7vY;PM~u`{8w6Mh5K(9{nB$#N-Wxht zFNrb%Snc?3aFR@|xrhFM!``R2(_RG8WT6B7kK!{6`X4%24~phFBD^wC68s(kE*$)V zzU+Mw7uQ(O&7s@TiOz5VS((Ne#_bM0OUGl4H?bn5$%4|pMK?G!?$Dlj%YHcG+RoHU z;O#EK)~JBxh0(-!Dm(}49{|kR;{kEqnJ6K9Jb_($6Ofw#R_%LIU8mf|d$M^#pQuoK zW?%cq>0qC@X=Kwe4|Vq{EAn9Z(?i9*jnF$m6%Y=jB*D~U~j?9 z#ak?ypv@{ULbL^nxB79EjstG{Tam)A?OS09CF2$U1>m3O8P_{XjFI|J9Qs%k;OVG; zt-^zH{antv?BJWwG`!PRf{0b|kBs>)Mrx5_GziSSjECC!a2ITgpU(N98y#u0m2^*1 zcwvF_PveO@?DM^D--=qH$@UIQ`)sl&;99ue#FKm2zY|Hz`~q%HLu@H%x5|=$VwYo4 z7~IrvzJYjBUxNOM!82-*xJr@Uo#$F)2W*4vD!1&QU4vJ%B4r2i;2Lptpj** z>(c84B~U{PEJT@VyXtMZSlWfT49j+0Qkz0W(rUd_tWrZ3fEgR$GI9g&*1Pr1KlUMS zcHP5F3s;Vg_m+Bnb#!O+bKm z$r|@knDDgwPd$)k_wR#v0alv{QdavY<2&`AIFslcI zWe*q4DAR*ndKgdfl8Zzk09*tz?N87guV~JYNBZ$nHuPEEM>5Q^S;jPV-#8m~&6q!9 zrJ+>*-e~`1n7tb+DxNJ1E+lR|!N*bF0xGg(uK|+qf~{1U7>`y{ji-c^#OdalPKNUDZs?alY+vWobl*n&pSniG*Du|I)X6r?G(5rMWM zyo6xivb7IawmEI?p@iYmLVre2?HcC$3a56lUBhzm-9?34hadI@;erVV5UG`m$?Yqv}<#>D7>Cv8D+1qzzzwOzmn+wGr;rLBk55aI) zUx|Iw1eZI|hApvT@Nn8Cl^LXWQ@AJM7zubXd&d+40&U5oC>z>$#nG7ldT+Zn75ktC z+uGktkL0nwY&&!d}uCk4`-kx2K_TE?25B;yn0>&7!HSE8t|Kz0vdcimdQakX@0(KUoZM|cPh}`2*+9B>SMc)LN2Ll?9 zbM4}Sw%&>PNWh*VfWTfSq3en60X$wPdzia=gO-;5u3=u56+_&xOt{!pW)%h?0YC|y ztF{Yz1Fy!PNDQO@6+LhX5FM7q!iVL^@3+td1u7wmaw0&{LpVtf(cw{h)Nx<*tf*sI z6!Z|yzAu`+?Az%9%lE)~iy&@H5X9i_Yzg=DZW=-#kD)R}8$`H8A5jbrJeeN-T&N^T zAT2}bBU%;)eMB9Ny|1Vr`avI2N09Uptqt3vj;7xCqS=kOFysjChAY_XXo_Yx{R{f& zg&brN$XF1_Z-hXE{!gHf?{Ni+&X+4rCr}9N$&f97D}@k5;4?`0Kp}u=2!%ioMLNwX zzeyVL4yKW*RlR%T8XK7WzIE zvUd4@fZUM}}9wxQ{So9yyNG8TD)ccXxsNsHTM&vqgr1a=S-bT`z z$}tXzG;15wZ0qF7tg4yQ7&!OzSuKxLhT6U*mrBI4j}RoM&hcEwyF&`#O$4@ zvW$YZwrYokQbFZ;PFU#1+GLg*o;gOSi2xZj$XHPZF%cq1NbE+wB-ns$r|$S9k$Z81 zV6&~TThAtG;n7gIl!rCmhw{aN4u=+AEe_l&YY|6gzylK>PR~Jq85?{AX4O_S=pBI< zn$ziz!{1zLr*n@u)9Cz%IGKQXV_o7s3iBW@VON6vGX$SaE5Q`3?nXEG&<*FKpJnxz zBfphuKahpjp)`E4$#|RP>Ws~V3kpXF#!0umGgb{hZs^dPW$%ie3SFhf<2Jmqq&3Y! zvw)xQOngZrt)~GVVmGlF;s6C#k*u!5zRxXRzWBbdd}oVqpXGCj z?@P-!96r_YM{#X=wb#~Q)0gf?WLHxkei@gbhRCAP7?c>V+#6VQ48tw933=G|Hh%Zb z(jQ}|U-UJ8{HKycWT#VjJreBzHL^d^S4;i`=^OM^Rx%utO4uFyk7SnXhh({eS>6Ra92kA5 zsVMeCD>1f0V;3klEMQfC zU|Vf*6U9WJn6G2J40rK3k;z={)trpfvpk5ENv$z1=8C}QV>?fgj-*9J2djBiazY)^ z>T#kKI$1G4st3n#Hx;e z8_JI?_#iQZs(tuez-SR(zf6-}nkeNo*>oj}2BlO6H`L4S5zB|)r}zfc9E21buX;jW?;*S^Wm&?81GHf)^D4oR~_ejB05fcl`tZp?aV*gADL|T zeB(bKc6A$DAQkQ7k&6XROPb5s>~c=>jGp(6Bnw1gqJsdLd=6k%OY9Zs;x;#tSD@)J zT61e|`UbwpBFff@H`APvrUOhu-U%`w^xICN=_uh9W<05fxEh)Itt!yeN|VH=CP?!> zIM*;96jEu1;Y;j4eT#h6jOo>CsPv}v$l4;z4)VZ|61G}I*dh^I zC$Q%NSgSO$iK`4*B^SFj3T+A+oC`0@OlGl!2~MYS zxfTkW*nUq8)^#a^^#&0t(U$9xn|&oVwa7K(-OF@}oeft+6Bf721nV&t|Q1D-VCaw$evR>=0PNCD0>f$T}HW3)RLapK!Y$ zMHK8HXFwX>CoNP{oU_%dDtE+&AH&?HQev_OL@?b&bbyTWi6hF&-V9_fwr|02QlVP* z=ebFhA1Uk;_=q5qJ0#`l?I}P!0J0=&t-eGz8g;riAE_>wQJC!VWQt;3W?W#AR(mr)_ z^H}Z04bAT~w;%6mI0PlP&f-zp{q4?Iv``Ds5rUF$GrnDu)6f!7b+8L6TSwqOYHOZ+ z$OFYcEzE6iAg2%()TyIcgl``9aJ^a>ww?OH``O856VP*7cpB3tI!jws<%5y_ZGkan z2u;I2eW~Z21>j1Ll3a~uvUDso_ZoJv^$*coImTVGhEznz;SGY~=AT%-08?17Gr_^j<4=pq)6x6j z8JVDPSru0x(gj4)XfyE3DuiuxYm3)oN;fwEQVxyJfHn??&e#WV{cGM~A85U>4{{CR#27q-IZmX^ zeXR~|^9F$AK8#M7uK<;T{$fyU7*dw>vEspHo6Nfr!uqEb^vKjzJVkq;-K=K1 z!&9_yCyHx01aNr7S6r>8vM{!eq?k!s7)!o>laE4*!CLf4p*Y0&T|rNAHA~YN%}Lvw zgVfL|`EiBmg;!a=*h|Y7CJ(VJvffL(80Mu2Ao_1(g9QCE;X;SztZ85n28^OAN?1z6 zBzDihhDs9sW+ggPQkqSDpgp`>10pZb!hDg?T!f%On^oMO!#K3|iwXz!i^dPyFFMEY zxhD9s?r_6SJML?bnxy+&d`*!1)7V&%cLhPK4zn8%n2W#?->Y`hRQX_*PVj*Y6Ra^Y zStRskxqn=+qw&+fA_}CvCn|e-nJCT`%ee_QG)`9g1X%WhAhpn6@r$P_xUZ$Z3(GTs zkC7_}nOpDLCs`e_=){4d94|}Cjj;^{NBVh)Q_z!mj(9zDY2h=$uw=jF9L@^I!A3sr z(=*ca%9Q7bm0}iH5k@z-PlrPhBe@YmaQ`6q3As_4CAID*a|2>CN%K2a!$P34y}-GW zL9I99VYj|vdiR|f# zOKYv&vRE;4@T|3)`A8nJM0Cd9m?%8L6`{7F7`$;NOkX=<&mxi>_&4i7C``b$elcE1 z-GcXb^>X3PPs7}zfE75`xRwSK&Vo2ya3J1y{}#^ODKGi zKCC`Po|60{)~jY#Jf2*crG^qB+b;h?~r~ITANkTXcOg zZY<&|7Vg#dtbxsVv zNhqq@>tcsvUdqys7}%m{oe8g!dzCP&D9J(9>5SM;wzhAk7UrQPLlQ6I4alQ_$IW5! zcO(^C-vDYzEb>9O0BIsfqpd>*u)KU*b4SD8{D#9L=cPyLwrK0B-RCxM$;&SuIS(&E z9hQLeh6bEJG$40q!1$p77Yq%!aA-i@(144E2K?L5fQwTD8jr|^z1w1J;FYHd5>s7K&kBwC8NXOCA*|aiAYLw2{#n`x!t-3XWx%onf;D~9RKr|H5@BFd)=^RdnR9bJ%V zZDxcn$~5L8x*#ms%zC&0CPQrmmtR)#$3|4~XC@PH@pc|)5n4qPfIzoZNEow8o6pxnhULS()LS7QFA z{<bw9s~X<&pIf#uT15{lb`%LHU|O zl~D@we_6L*7QEXD;~gsy5~;IKxNHBs+08Dy;gCZ5y)L~DFR-9Pa-bLD29FW@KuQi6 zNS7MVJX?Y^BE(R1EEPaWWn9)Uw^`e8NbZH{8SY{B2G#k9&yK~fhFo8oVO4JU0IUCG z!%J%<*(T3pRJ}^1uxw5 zhi?3@0O)z#;~=DH79(Z#>xgL!F{)HGD8jx^FTqoBFo<|Co(9!zf=f^dCO`~sC{C!S zQlHI=MWvM~DNGlOL=AY?DxsPx2vGLSV1$eV(h?-W#}WsRr{kSn=rs=K{NcY45T71A zWDkt8SGjKFi6itr52Xe6<2=&7S+9atTGFr?km|hAT(Tf}5NV+uFeK#FLDi(5Z=Qng zOEhWFx#p!O6la}p=ApUVd5|?KzHay(_~z)Cb38dI=bY+%HdEqw<%+u3^}IY%chj@> zf*s+WyBr6j&D+V`V8P`f@+R%c4mr}s!i>fJ`b>FstV{dr>rTC+@qG{@P7!cnE!f+S zH|5d}_M#7{5jE&O*TLR`ZO_@`j|D#^oGuy=_0KySXA=G^p~#A$%)oH%nYQ*mEw~{g z(Rkvw&k;CN9=*-99=%0;`yMTkggH}kw6GgnZGZ`ZddK+9+B4hmy6t$#_-Y-CEsf#O zE`Tyk6|?}fRb}qsyF{~Rch9UbHry%%;&z@}gShDN-eFWe=^ZnJzB$lJfNsqk_i)4E zW{s*tmHtS*wF7FX)i2I`mjf%|&+5kBa!eH2p^X2wadUC7=p4LPX2VMh&p)f|&I~O3 z)i}i_fG|bbohCguaZWI%aah$FO`Hy3iXRe?(R4o%55;{gd_Gtq_WozUUJVZuIjAsr zX)2ifHRgOCv%-)t*VC9Xl0{%TUGfxi0(-R>Q^j_3!c|q;(jOtnr-c~fxvE-Qd@+-h z&h?b~wIz6lu^$>AwR-8?)cvz)X(rT6@T@c5(gF<>M@n5#Jt;I!^>)EdP7i2pX0)^r zK}9>#VdAlOOwDuHD8SQY2&&mp>QDjjRPQKtCOuVA4(wV4^CH2_sMiUnH@qY2&5U}p zqF#5@n-}#KM!m&RZ<$g5v=`BphW}|_)LRKBKGoV1%4aBLP9$TTeK#Dl?eE4jqu>*g z0un4U-LkFet&?rIT@&nbGBdM6#l#nrOjneO6V z97FY@N8m4p-)s53@Oyhdp>KD0w5#`Hadk=NkKiuay)n9>_d{`Qh<5gVAg)d*RlP5+ z4k+2QORj3D&Q!XqpoCNAuIYUp-=7@yya5k335wATyL$g_hp)ICS4pBZN8$8FYaG$n zqBR-OSE4m8?8?>TL~C-RHTlt+B1D%(YrObWMr(Zd_@Xsco;jeSr4K@m2tn0Fm);^N zaynO}sD@8V>k1IA>4P+3%`3C%FG~7jPj#xty0=q;ak$t1C*pxLN9?OQCFSvf$JV*b zl}4Eao7*rs)RI=txy__J^&7CIZLU}K`R>rB*aqxgi`TRYUN)lcdyev2c zJqf@c{Tw^^iuD(P=f& zX)~hJW=E%GMW^LNr{zYcO_;fcremS%Js1{@e9Yq*t55jV=jTJZer!3;=4=dGTXrW66CO86!xv2 ztE%eXGp5ZgX!A@1Km7*#Zs2XT_OJA5bIlhla9d=UDxTvbefR3kApo3#kUltXc~~N3-kR&Me{I}d z9Gq`E2c`wfIdgrw7&DjR2AH4ZsILmMaFw!lo|w0~nr2|Ku!GdVx$u;z$}p>Cb*qk% z$*@{;7F(O`WW9S^@dcZ1a-3EYxUaN`+rJS{# z=`g;l%(;|#lklzPT7~tQH3*0PwrbJM zLMLW0Ofjrhqad&g6q>X8RYF0_{1{N{8ju8`PL8HTVOW)+8VEzEDihNp?^&RNAH;?G ztYZb^2P%k6=WB3oVGzg$!FWwR3&n1t)WDkI$XO@#rc^_21T}6{Q0vZED}a#7QPV4X zrKTyYY5nubrl@^caL&kdCprn%zmS*pNy%)D#SI6w1`HMzxD>MeXwU)V%y?PALR~kb zE(^h{8we_q!IRoDNT-V22vYNJ1iL(NjO7uehXuQl=|rQtI3oq;ylkPDcJ^`fpzP#= zlcgdUmRb;(DM+T7YUj(GQCQ7ZQ(C^B)ogq&*>cs1k?EPzkEy-LYS?me1?kj52xd#N z5bs(i%~jorYHn54Y+yA%VKs@?u*-6!D^+&^yHYpd%>}&ZX#5VULpo7ihGReG5D=>$ z(^WNGg~kp(n{3S*0Y>_fbKkf1qct<8*2IYm{fM#?T_{zdH4n!GX=_n? z!ltX)BwNk6oI}_%0tJ??YfmIhb}H@WxfGdTU9?t63zc20Dtn2Qoios;$aJ3X=B#c& zcq$37=ac;dN|8g^y&IY{z99@Z~g%#EmYu1mD( z%a5f^?X2vhl>==Wpa|OD8A1{4EUBAAIi*b&MW~JhSs-7=%MAn)&1zCLb+D$pS(9p( zdg@(>A|Ev+yPs@Cx)_~>J|c~z)WqE`P=tCCK9ww3(|1)(ovi7kfi^{^)7pl6wHM*v z&KeSu)Zm(gHIO2N7$E;kb6P*b<2^edKy73-e}NS*t3ipk$3YH7|BO3GgT9R%P>oPR zk{e!)YEa1!SxGr6fxC(jbjB_ns4_C0dcip&@~VMP>{%R0kvsRz*!p$C*al%zMzG>n z>@P`)0Y*%2|4?ebnzeU7JwP3jMkwAp(8Sl&G?w7AQoWkFQmRAy1oxcAI3md0QPHia zsGtp;t%>_#aP{a-JPm_nAUc?`^Q1Q|w}L*z*9wYRL4~M~slDpE>T!l2(4Tpd-_P`> zG8O(97rYog%l7fRO({I0Hc`N0dajh2o|k7>-u+fSPTh*In<&~MYFQ<}C_#8R)rUqj`}HQ81!mn(;%haNY77k8 zKM>Sw1#x}OsC?_o`=|6bSl^KKZMMFPt?&KTcc=CJ5MNc>vNu^YTDFH@wCqEEcj!%< zRMJ&3_|**d%%_a{OkY-nC^e5PEoLg@D&rTqTp$+!w2DSLh!;P<$Wq5IYT3Xq(r@7x z>2s{~Z_sxPqH(6hvDG?`c;%i})TgeP^IFdnp zp_)O}>bo=-NfdoQmdDiS+d_U1=uI(}SVFR(vMTj^p)&mt%_0!pm_A?t+hrrGd(IHUeY-A&Ykw{`!# z7@Y~1Qv9oj0KW|8+F-9rQL1cRDQ3elD>$*nxEgQl295=ZQ6$(jblADjqY|$-2{E7t zNS#)Y&;x>m9`I$CsVI4S(i$-z0$5T3nVCfeg&bEPeliuSX4QlGGL9oFqYNcvRIe{}ut%lqliW$Mp2s)@^i|dTeTGD4^{*ip49KbXwH{XoH0b9l z)AtqELy=OS@to`=s<(8Fpc7EziMEGH4WK$v`4I2$B0WeB=}FtMTUH(Cn|x0q zsrB@nYKkj?prs^7V;RX2F>?$>v}NwOhEO2F{6<9)KC_LAVs4eb0tlfl2bdpcq4&!> zb&=mu=D`lf98|`s5TY|14U59PV?q%O5569}m>H_wRgquL(bdh9i2u=}fNLdls22dE z4~xdGWnl=E^sxJRX7ju2<7Ze)TPU~H2RBw>$DrQRr9~p>596j@994XbLWuINMI7BW zB0L-wGF$Uo?jqC8}L?V(;5wZ+!k{Xknb>)O2jNjOwx=cbTVAV z{G+W62pr!B8^!*!Mfx!UM@9Z0k4LcDBff<|yRW^Zy>A2zEWU!$Sja(;@iEN0T6i)} zECI9NFeJz_&a(HS$7-0wxEA^kB#E?0b!{li53?7k)j3XEc#igB4676hS2Mpby-U+MNrCR7SOezyr zk(+9vx8e4zA{*60PIQ`Q6?wZB`bxsd&9%@@ag(oVp)PTgp~5z=q$elEL-OJ#i`POy zag(=epoGte;-s517&^ zW_{ZFYsW?$4ImZ0dPJqk2d^!P8bTMry-B(VAQ9+d0_kEInjmyB1A!APx_CzdK^Idb zP|*b&i^Etg^g{_$ba7k)K^NbXKt&hh!DFHIr-d>kP|?NR5(v6Dh=Ddi#2cI!N+9Us zeF;?Kaj^t~E?$#BMHeRvRe~;BB~a1D*OC%+@dpW1bn&JHf-aUwprVTxBoK6Qmjo)h zcu)dC7c(VL(FL!%1^Yl3S4p6viw+3{U0jAhMHgyZhsPtpoCm%Id2`S>JjDdQ%N-Lc zfaD9ofhWkiRtudfZfmGPk!C`Z!ep(4D+E3&ZiTmIajRi;ySNpW9u~Jk&eP&nI9V=k zg^GK`tuT;>o|@348txOfYVRfDR?WN&ZjVTeT9`Ktq>Z4if*qhQwRuoGf-ewPnT4^$ zxrWG`U`tJGQ$d?rF*a2*I~TfKW3Yv4vGQahSgp94*j^>HHnCY;*?fqv6~xvti0d&c zh>f(IYzt%k_^P1CDEt5vnIIG(iKYIs{e%H)F=ExKoCrVxi6yKoU9DWQY#y@WvvMWZ zTiq2iQ5_chmQ?*FK+{(d+iE$dR%7}yuEg}EuP8LChSI48I*&@8q;a7Y(!VXy$saWmyeCO ze&7DS!+yBCq)bp&QmJpk(N$%4iR`a{QFfP9BeAW!q(*&e`5C!MFPV{8V%+XiQl`x| z0@L1Dv>rkWZYkA~4#w}BXa{lDe>Wi*X}%7;K780Yv40-=34b>2sx1m!FxJ^{3Dz+V zEcJAZ1DqA9g@MgH7ZzkKz6+!$jxa!P*wPe4VHf~aum>RR!Dc3saYMQfHL+iBE5p)5 zt-rW{K}h{C8Du z5Wf%;YxOHXHLmQ{=YOaNVtV;Ln4=oeUA~jd077Q2wPI)$@_}w^WD%F~fG`gh9r5vT zwE)E=qkNBX8rql5WylsWyCe9_g7F>bD}fMe@a08eT7=^L;U|epg?%ok;AEp8S57K9 zRq4R%hRwh<$Kd2*a}Qc=bsOxJe+kYuNCrN2hzz{D$Gnxsz}0!K>O8FIxxJaP`-wVQ zdY}pq0L?#PC&H>=S8sPoFJKWe)c;|=g-L@QXKA<8l zA*E4JDWxfohuy7=!2Ub1UWFiTmE(QrV%0eFeiWkM#Jjw{V@+85L_DAf!`{AUl=&kZ z{$iYE=q0mFc?{*MEMplrV5q*xt3zm$55l>xcVazc{JIOHpAS5>t4>VuUPA+-Xh-E9 zZ*RM&eg5ZSs|Bwq8}o9Eo3q0rt;;y9fJ`o{uRpQoMf-G>&Q9UaCB zh=+mlelrQ>ZAvNcX1D&$!Cfqc+0am5Bm>65r92)p`aGMYyu%C6wvdhU=7I7C!RH{9 z&>4W{H2wpJQCC{DI?Z8Ja3!D|WXZaWdQP3z?B8tOBr~yZt`T7J>25!n0JrSnzFzeH`!3b{KI} z_!Ibyn+s29vEvM@#T*nqPlwgwoCN(2wD;Z;;BQN6c`)YV3aiGR6sl3Lsa`!a%;pj0;`;vq3%twxJA^#l|ffbP! zaloP0L}ogjn4o}~%HBg-^EDV^$^8QhKd(fy?=9KcVc{ogUV=30wu{M^>Kc!8tjzzO zk)8K1vq^TAO)4U4op~Q8KF$Prl`mvd*zQg3Z$ifMo4w z2S|eZ7$&hgT~gV5jFrmXrb|G14K7w8!LNO(JW^Jh<&l;>XL$r8f3!T(zK7sZh2|u| z5P&3K2E!y%8eNj3&&n<^-N5V$IxASfDrK;^Hp4{?AEn>R`7;L`73$7O?d^G2C+|-9 zC(9GFnvNY+1Fg3raG9du0A#k47(V(MsQGqTF%5N@wt$=SY%P+5POTek`>;buQ;}kT zO5_(_V@9$c43w(g$xbLC0WgO$?{xZrmi1V5jbj8%NxlghmWWun{*zj|45v|VN*w2e-^X^__|MK41FN^4c z;vz&~l;yXpt`>bBC>F?U;(?b%jrn-nweC5j8p^us3-S0EnH&e`V zLVRi^Dps%~6$HWzmd1VVtDl1)N$n?zHSdIr^e{-jA6pVon+KMPl60Xp{T6sKij`JB z3;_k{t#F8Dzp|&?#E|J3+^gS7Ck6sKz09}@c8B*F6|P8LzQ?>{Y;YlNMT9mZ1vW=s zhl>A2dPn;7446vAtpe!IpM{QcBC{9t1&AH7^RL2wh^iQ+*rDRDS3uMMAj*abJrdUm zn*PW~1#%x-jBgpsks{H9nJCV~xGsN3|EVtlPX_xx)-n}nge(PQEmxN;Ws@bfh?whH zsLCy#)lzW43<7aU`kQd;{&}PIUuKyXF%j>4(ev@Z8wFj8ZrBhKb65gFCjvk+Z*zM7apwgv zq)tRUMi~&qx{M+t`oZw!bUQrE-|vH^Q#aa&chl>iLVmCQ1^`&Xxm!P6(1SM+)QFsf z+oLdEnqyp|Z-=q_eYiC_0Y#PR=>*1)l0{~EzXj{pAk1~saNnhhA6)UH{r3JpjH`P;$`0VfN`d(%cUi(Czz?qjXqlP zAf4VEEC+aX1-)bN`5LF^LTqj!Y7&k2Zw+uoO*KC%h_xqRSNMt)%QF#1wg>r2j8agD z^pES7HtC=Lbb2MTxk|6g z_3LaShI6)g4*EmQH)}rM4-N!Iit_W2m`P$Tc0iln=|7D?z6GC1H+b;?_lL)U5O_-@ z#cpAuKNI&;cnyjQHT8TiNK07!p79QzTfJj{tP3SP5rW5u7j@*<-)nkIsh1AZHDXyeyE6E4U%s-23B0Sa0h`M#8Xl z;1uN5x+^HS*z}1F$QNH9?hlMdap!h>IX~O}(9F<3TiwkPSrSV`X`SI6fhF7=`vddp zr!uYiYoLtnW2Mmkmi8fAWL^db^y$X*{jhs+$B$t1B5(m;(m53-E@rg^hAYFyFeCs6 z-@k#}W!b;@i0|J}3`6g~_*SbIX0@c4DTuQ^t9&t25MRUjkncI=MtBn-8`JoVCvjPvj$Al^C9px*W5z{1 z>tFEGOhf}S>@MB_B}r0!oCEm=c|xdj9jRUm{~f=0#RnFG;LyK;ku*Ldbc$YoiX+(J z^z6kmLfey1z)-5T;f?!&Ctwf~?6jVMNw;C)wRZ$=RW99U0Bpa+RL$AU`!OVo@)a}j4d18cZjSbq}K$XReh=10D$5%SjL?gNj+YvSP zbr%8}^GBdhi=T3S8i_%R!K-i7--?x2DB{#Y&#`fZ?t=bU0m5Kp=DYnVnX(C%+@!rs>zKxJ$3cd-xm21b@6lJPg7!=`7r z+0a-FOJB|{obmS|Jp38yOk2_mH|~j_X}7oQ9ZVTNv&CqBoGE&=@Ne+NWDN5gcpB5? z|2dwM%igi_}npWMibjhyvPABo-26^b~Mhg0hi4rPRL>#jTPK@3V*g>Eew>8 zO^zS0C+7dNr?4?_Ku-gOKg#-3stG)Vg3h!Byuf63qEm=qW5ttFoVH{(pg@tD!W+uN zgYyVtnP1In!9$U1pAGpzT(OM9NX?luJGI2b=p%mhx38O~zrt~gR$ z^#JC;Ok=eFc8rL!NM0+jgks}G827jI3IgtO*pD121p+QSP&(S{KNq&&7dQ`YZ;y|| zRmBnDTj_?QNylYyhi9+J(HaCHcO4*h6(!u7nNfaJ;5>wZAvK{qtdshd%lJWwwR$^i6BFU-{F_gL`E+V)*#2 zkw4Rv(`ud!=&^(E>08@PY+PKyjf;(j(Lhd* zZm^czVchW3OMSs@{ra>@3_W(evY&$e6hQFGGq!~*Pk=y9C9s2nT#xt!qRche{SPN>a zeg#8o{%4PRc5A_h5TFOxbQsoj-2wI({w1V~P5&BD=C4RI9$1Xp z0_RYI9F1fkZ9I(L@D&2>ZR0z%=Ccr}OQOcZ2*az4NRp2&alC`hBD5DLr5DfikJDb< z$A~rK!ttxI)Z&S=95)Xe|CN=@fmdX_#aYzZ*7TmEZ}OYHXv# zc5RayZMdd2TcR!`fv5qZ1f`ZL_tu+BD{XDrMOq_l+}$L{mR1JoC&m&ph+YGtWE| z{3hK7oSo}#r>=r_wmtxA!)`Z=(-a_qq911WCw?NmpiRM9Iq_^!>a>-fdVjapcnz&( zY~`@)P%MuXE}p*56ZcKH0;qDL4$rb5|SG5Q8p)dv9@x?Ip+LqDE<&KF6XW+5{M|A{g8at z$;LZB>5!s2-&KYX>G^;$o>rQ@o{M+ZofA}pVU zsD5sPBSNnb^>VUt1-oRe8d*XqHk3xZzbu1ppx75HS`U!$!oI~x|uryn9R!TG!I(&&d=;)Y2dgw8@g z?GEVWW)*?dMryGqQ0&9&lTZ=XeuKY8Kq>E&j8a{4mh(xsDSIphbga}X6A>;H1jrpv+U0< zxY^9S(agNhXnuybaNT`Ad|mFN7#-2h^^QCk)n1gV0&W0l=a{#HzgqbbVR1`!z#oe{W6~@_B{@`~7 zsLD8{iwfGVQfxH69oICi<@!wa78rGmKx)vY?KaMj<7u#BA7A4qc}T?jGPtd(F^hw2 z+KSHjNe;U2jvqfOe)6m^emh#U4@|guNpKwrzu6oUJ1Ao$_FKN`yY;O?Nd{||vFs^Q z;``-*XKukx{b>B4JmwiI-=Rkz(H~On93i=eAg{K9u{V_o>ejrmfpX6Z>vFN`EH?)M`lhpNQ6FuCD$a0+^8Q8g`af7S zvQ~di@;VTX@Mvb=P>WfE0p6*t-@W((iV7lP^}uHF63uWlt9naLsMP8T&mrd_8DZQO zh~#9rBVF>WE2PWTl$Gc_?OiNbGBOdn{C`=mu2=Rn-a zk z0Q3fBswuKE`e5jl?bc6$jb8SgC=oqx3{g9zgY^%rf9KBol!hehk9Ka?D>UZj{2-96 zl+US3>(9i)@@nCZX<655P2!V|A+6yxV9E#+PaY#fq>6|gH7;)P8aH}s^(7*X#&0ni zlKk>|f*<{HWlMiZWWpLXF+B7RkH%7wHo_+|-IyM6o23_f%AMB2$4tywS`~lrfSkUq zR)0vqnW{9ZEi<-l>8>Dpj}1-j{xt~j#wX>kXF0c@EwF68dc;hR(yDhG)4aIV=Eww< zt#=yJ2b%dX;36lp zaIWLQh&?HPp@xyYe8LUh`LEe`RgReGQA^2}jp>+axgV07E7f%zFEIPfxwclH?xRqy zj+;OcOJVjguscy#PH?`z{hld^^SrD27elb6t?*uC|6=9et+y-hqe5*ZbK_<*6{)9o z+{^n$_FUB**;q9!{scMlZ7@r&6&4n9tZWk5YExr#&sl1{FV*12yeVqiw?UZZniF*gwz1^gW?KYcmxpv+h$qNa& z7J@m@jAjUb+DHrL+H_jLKhUUbC;0GJDV(L-M;pv3Vw3hHNA70yJoj62S%nVcrP_wl zYBmVjQ8FuOwC3K*MX3v1dlTKGvuTF9zL0n5P)wib?W?HMRY3UXv(R5iEm2Qf-SPPG zk=Am7KCpggNh5@}9warz;kNy#4zzs6bspOc!646tSr&RQCH2{tYZV4-wH7>8b`k>b zU|Q%q@F({2Xtq$r{WE zcY4XfTY$FEcM3X07^3UB-4!K~02yB&I8JUQCuW=bhGOwlw%n%(A6 zE6XBbFFC==5ViL)$_-n0g3k@lGc4T~Omi0e-|=AF1K9xR94pHRgubb@%*bro7CwLi z@-{kn_#nQo8S*eSQ#8#?AC|&nkk7C+uzNhvEKlw>%d2|?NHkQ7y*HBl1UGi!3s2GB z4jRbwr4&<3t`ZQ;Jr;fjDnPv(S<2SGEd&$Vh9rnrZd04FPMln1Ut>Qz%;AHXVHSna z?L23CpyDw?%n>@4jR7@oh@KSKq|epLD@wqp7<);@LYX1NW3N(+2ARH*+eK2ZF*S&B zpwPIpFeUCqkMR6n+F^RaMqPtfPxfRvbk44)_x4>mK(mw)~s4m?en} z{0bwm(7)+tYXMqBB&t^ZF)x*(6GH^OR~n<{$-F_IC8>{%0weno0LI@)BeIWigIC{G z(4nvOs75dP?y-uI?$Auet*9Tf*J}_E1eL8DVL4m(h;g^LAH`Zqpr^;AR-G-WZLPBO zm1%S-7}($KukJQuTA@3kFO#ek7qQ@lOFTg9pIL&*hx0KTj1iIK=t$oMTI0j?9g#E2 ziHWSxxdkztKYq(Pg^cL{$+d9?Ifdx}lEefNusgUzmJP!A_|{~}0Ade$={9?2a(=*O zkRkd7?|VG(L|C|~3I5PpW{ze&&K3@7iiZ!#dT2JfAPtFZanpv`lIpcnHI+&%Svxh$ zPPHImWQ)wWvn9db8T=x%-0Y^AqqUXGy7^c;Nn1&Xb@l8!otXxgF$f8cHst1UhpWFQ z1dKIP$XF|*k5-q`^Q@V{TU+ujE;+nZIhRV8!1S*`>q@`!ax`ip>_f)_TtKTca^SRj7ylilMqnLcYUrd0OmTo@}xJW{E^VG^Pfy+Kx89SIzOCd~NA6 z25jY`Y-4J;$uXhbOsWGR8jH)wK5DY3oMd# zBm(6D*;~(pa(RftWpWGavevvfX8lq}KR~sJw93pLFv=rdRj+w5tfdI8#kTWkR4uFK zx{ala;7_1RB))tzGe#?21sx_KSNI12nSt}%o83ov_UM_u>C?A|=dzf8DCTY3c@Bwc7d4e|RMUV^b?6XSB|tF=tc3?ImfVl@B0 z@S82#Y`N4gZB;`a9P|A5EYunv5uuE1TU2O04$YEV=5h>HiRTjQv0=a)1o+CB;`x9w zXQ=0%KNzMUHGVtS%HC$wEepVpHyX5q-fa3h!T_n2@87WKYJK*yYO}PlU<1M{a+0X= z|HFtqwqaP*_zgp&#&3`~%_Chld`=bB{l+k*17+44PrJFdwr*J^)!j^Wv!uEUn9H2% z%BXJEu_|YO(d`(44U)yvcwl zP173hRnIdQ-0o0}E%TyyHsAJJ2z3#DDScuv<`$%)y71len$Zv$z{_%YXcFkq}9d(acMN&5s zKxAN+?0Yb3tnCOx(N`5N##%L5BN~uug2`w&Z+T;>Wsk&opX~8#W4U4KHA3uIBg}t~Qaqur=1#z_8KC`_S>ot1}{1y|vAg z{q1$XbaVxKW(Ng#r}ZMervzk(3YS%j)V!x0A)8;o@reer*o59J&?A_cBfqBNfsJD5 z%5>W?WTTiAHqaw)ITbr1(mDzs$V8)TG2g@^)Vi2I$x*i>y_SUmB9mc3Cm~j2@@BmO zMk(q_1YSkmHxPLK6WS874e2${&Cos)J)h4pu!j3vtz?!hmD$=Q{YS^_s^JOiK$o<+!Zep0Pq`|2eot z)gnGizp>J&N0?o$z~|8#Q5PM?XTySHw&VNP<ybL6`~0iZFJm3#fc#SnM^X6$A8w)(fgKu?dY=S|S@okVjQSVmCIzk2#@p_xfH zYq1XU`?9P?I)j~q%n7k)rC{WTRBL7j%xotAXGoEU>#`wv6n8?&d5$vD+IHjX2EVT|0OlfPrI#)D8VhV`P!1rFcXnI&FpjB$4AI^>$6`4wksifr-aLt zc$l|*?B5xB&w8Akg0-UPMA~UjQRr~3GEMyg_h2UKd}pGnF_@Ith-*5V*7)}=D%XQD zNj;$-DM*;PYFMb5Q6j^C?x{*x8}S* zNad@Cz?4gWQhl~tU=F<`Mr@0zuKCK4LL-M1`U20x3LT)3?Hkpju5g(RtDs0;KgF8N zQwrRZsx6d-0MQ}s`ZvKL5qU#AuxM2f=5QRVder?dUmOBMH18Ba#W0a-#{&Xm8ynA7 z8m?SG$%Qr!lnzg19uuu4ml+NN{1||T=Be^nr6i@i$S75nW?e)I`}*l*AyhhyjNgXC9emzXEk9=f9zIoEjdN7s zxm;7GS+DWrWVOA|T88?j{YElf*Ym5PIjk?7+5Dyf=ytEoa&RaH0J5 z#Gc|Z9Oj(ZF{W#b+u~uStXp|TnUAFW)RIrFXUp<%&F>|i{N@Ftjj}xbm4c3f)A~o~ zc&xlhkZq|Ij5A_W=Z|1xEEr;6=%-2%5bJcdPg}7SjJ?S}5Eh;MAn9g+qC1x5nLih6 zLm{ab6NZC?MR?}s>+ez8=ip-9&A3JXjBU|3V|cu~&=n+5ku*56v2=)?Q6SUi0nh@o z%Z9mAf6o&A%3dF^>Rq)H(NLBT_1re7p1-EdsRRD|Tpult`@2M=#Q;}g%-~XS!hJKS z@Ut|EIMM;N!%A&urvDx3mBD`^x4MK7uTBzN$=2p?7hQ|BI;Fd&^HsUica?=uV2fN z;j%)#ulEiWg^zSPQ2Z6;>t*U|QT;j*z0kyMTwkm;u8@k$eDSx_j2Rrq>ynnrW{Wh-cOuMaGb(M89`5gdy zS&@}B1fJG%$L$eo1V>Qr$n3pi4xF2%Cn0tABL`!U3kaff%c__1j#-p6aril4$uDWl*J#mG09 zh&S8ui~>u)zQ}5&R7yfnKOwgJSn7>%5R|(+LO+BPtmWjxf2MDBnBbtBjpvUMIVx+J4?+5 zM_D|v%lp-er*SN2yENIG{OV5_5`k>Kgbi;;AP3t37c=EbRv=)*jBFWE zt9y-xX8}Kci$L|bR{8iW#aGEGE@Vtr3ZzIAR(i=-I3%*h!$%u-0LTHCD-XzFmupT( zAn#e|Vl=D*sDMlxj;LB2mipGG3v>rlC8QPtb{NEf5ncDxdD7+~U@})J0Jc?Ac5ppY z6qI@3iD0<`Aocy?Q|&a|MlKxstMs2Z?aC?pLR>!GuO6$wbJTC#Q@U0to9c}gnlGC# zwkgM6xF+X)g`?ro6@pDg{V4$-dab=dxrEsbg?jpu!?akuy<-0Z2&3VJ)a&EwwKes+ zRK0FYy@u86X8Sc18d7f2&~l;qMuSr(G}mZI<^P@$5mhh{(ADq2^k@sdK&0 zaMK>yRO7~M5jteas8RCNF5J_m4x-lT4blR2fWo1M-9~rMuLovI`(dWzFIr_R%=V*%O7(ZQQTjTJd!<1Siwk73HFL0rr=t`qME#CwquJ1n_O89hQgQ~E$w z?aTT|vArLb$q2*ON5&S6SS*X{dwISVe^P!F=jW@x#p-Wq&uj;81Cs*dj3Xwa2e!7A zUNeaa6w`$`RdLIO9+T>gNu1(gBSkRKV^Y0+`^Jtim^5B-*J#BX~V_TYS) zV5eL$3VX^@^`a6H=b@?%v-~vKXGdf-sg{Wdl9L4L^qD95{PXN3D|i^;G!un^8v&jK zpi#Ko{}b`V*rbR$J>^>7%`}lO0GXv@V%axjE38CFB1X1rxqOjp?j$`Rt_OL;w(pv8 z!eDW9E46^wR6#7yA7{he`i@L$*hxKsHLiseo*m1_SBzz)1T+~Sa1G?berKJK*+=L| zexp2=Pb?H{fGQfwRi`$`nj}ipuHxe%s=Vd8vL$g|d(G0c@o}iMiVklvz zA$CyODt_?xh+EeVPPh0&RcFbOS6SG#>6izRdG0Q2 zl-({!o<$9%D$qoxO?)p2MIhu!HgMFF{A{6TLCZWC^h!)PdgrCUK*1%viR|d(5zr=3 zl{cmJ7tjYEFi@w(Q~iEjcKvZz7_kty`WRfeV`C|PUV>OLclGF995gvGPVmRyqJTFD zs7S1i{QG))1fU8N}Uk%SPp`6-@&Bupah<}d_w~^7|z&)hnzA;YU5kEOn-(ApF z&~0Yl2rUY>0iTnGHjEwnhY;Tn3>m>QRS;uw`q#J4XyRB!ozB%zQRVCnmiZKMX2;}D zFG>Z?X{?fMuYpV+y;#-_-sE(0tY(TMU}p7@9I{dC@Zs52#Q(XQkR~8S`bB%}RkWM2S<=0p*p`QG0^lOb4OYn@{X>IF&aO6WEG6AG@ z(x;S{M(Z0^sZU~_RK-ce8#7Jv?cTy{#OLmT7a|bsL*(Aaz!x|Ajo(9G_ znu^DywQN}<8VLMVY~-4O6GTc(%0(MU;&Qq#pbkmoSo_JNt>{>@^oaQleFLueC&v-O zrZ2Og+uv6=!ki*EPRnt^oXBZ+P~EJ<;snx`Cz5W~$gdv>j>oO&);+Sy2&MyxHV2ia&XI0DBrf@v3^9DIYm>7G%ikUSIM1; zi_+tLXX))`;W_#VPMf$-Y&+pUw0MO1L$UHpH^!3W0-YQTy2V;FX{&?zq?8z8rw_e` z9muhMwY?z2H>BY#Bv$YHtG|2`6ha|Z_Vt0~-R!^gIZmYZyiUBdI^PUe@M}&JjAr3Q zozN>BmAy*(GW5>S^^4ZhBpI3rY!$FSziX8s$(&nmd(<@)Yrp`Vcl23kF>=7}0v^Q7 z7CF$TXOGZpMtCBvUjJqe*liftHyI&ih99t#ciA`5qC1f`?IZdvv6?vkDLu?f&xPsX zL2eX&Y8uhhS*G}L#$x}z&|&M}DFQ*cvS%2IjD&ew>=xPN5)3Eu@DDMhvcGo(&?Fk? z^TL-YZV-HAz|ZB%zw5cVy`7)~{ULPFibY{IIKyNOTPLy2F^=>X)qGX(fmYe=@6nce zpeZSNE^z?gS0Mi6%p`|<&P(+Z(@dFrtADR{|DS*(=R?kkB*S*7hJ(nhfYwqiQ& zC6Y@acYFOefrdQG6S>Q^_0h8eV;-0bD}vNe@Z>IaZv{GXweZYhWngP!y-?d&!q~X`xCk6MGkrVn~5$tvggR|_}+vZE{})aO}zK|5q!Q_+I3%5 z4$XunPN`b*lZ$Xovpy#4QDPt=VCb!y=iOnv2$jDjZi=_2+!SXg(q{|V&vxXEI3L~$ zz?`cjzgD%uc7dGU&aO_aJ`#(jzccir)TlEx-PWe4Rwd6f?B`kXJcZ{0H#@r_;S*!- zx}x8=EayL+I8aF?H_F#3K^yeR6>yc-6PSPI3_Du*PoKt{qQW>hrutxfGHB+>R^K#Lr6$CNFC(^3~0>a}{AjpP#BE3=|2#TMC z@Bs#V8wcXODfmMXcvXEB1h`1-6Sc2YU#0d>EBlE0Dph}4S-JE*#U#p4)8{@C=@(b6 zdD@b%!Q8z)Y;nVI>y(5R>z-rJXnnem%hLDuVhr>if+8KY3vxrCVrFG;$@+EF? z7eCTA#ktSo)MjA3j$YJ|6cIz<^)`{gYa~+ZZRcnpXO|k9_sUo%hfYejw`hIjK~IBw1z^~LjDXrtG|Mc zr}hfwsPDPg$q2EQ*$Mrr1W`MpZ__=Lf}iXY{=1~R>^W#TSSK$R9>BuwZ0h`oN`~$K zNc5ng`#-aIA8ufoxt8UlORdk^)v@ecy0Dm4C=L{&>Dnt;FNt!EdL|zNARvcYvn6aO z%n(1s1+Dy>fWZOA`4Z^O|2ZKiN2+zf-tOp@&{eTLi~MHsW0FmI#7J=B0nP3odc@4b z%GgccXFbAZRFY#|Tt)0|X9wa9_ffWmyyt>gWMi({t&zz!cwZuEOfF}Zjfua3prA#s zfaxo>B@%BF?}R01i?;ly<#{mb33P%iv-Ant=xrA5oXz(ww0<rYf*xGv!x(~Szk2#S- zuNf4^fQg_`&u?@K)wc*5h$n>v8hPlt!TEuOcM^PBS*T@j0<1T#@bR31&lbVQa`4&P zZT*0LcI4Opp?vow<@0eO)Cq{M3WxXwdoI> z|M)aG4!FOEukC-c&w5mFvZ}p@`>}ux>^HTT?x-Rl?+LWGdM;xfl?VjDX zEKob!J)4vukll>Tj)2-5Oaw|g0>$*Q%T`gJ;z?_%ynqp0LR{295$^#)yLAMrBokLX zoMV^7Fkc0eu$^(EJF+qJySJvImZ1M}KeJL>yGQ$W$OX+czKnrYvWEk?C}9{>_BdBD z=lbeTN}4ux2gfiMQ~&gxVUA~&$O1q1b9gemFniQp*Me3y=7*dvv{5xra}dYXJ-U=C z64hLXTWL+T`8R%0)2oZEYj~?a=-NL($rSz7_d;u&{k@Or;$89`mT80ER(|)I*Nwyc zSIO-U={;Te0Pi6lQBQ}SZS!KGRGECu;%?u~`>e!?#0TB!#iVtQE|D)o+LrC>`Q>U? z7`M)CDS?tNSxzKQbYCXK8J^ktXK-@z#}8+PP$r#wxU_a~NXQ zM+^qV4|0NyFsMkQ8dS9aVcW!dO+Yhz&qQ>#25;~`w~D6)*Xpkrna^O#3>Xu$^&QL# zxfrCEya*pKUaE~7vce_d;5GhTnyL07CSuv>Hr(#l&Fnsv!OLCj`q}y|Vx=!dat4r` zjko-xtGj}Mnnwbb3gWRvecVPyAE)#VDM#Hs_sRgLk!)ZJU}YXe4Nm@fHu?(>)(wy<#UJD&ej(Ys z=A>b{N8DoPrkynL{tGG7^9PlCJ5~vhlRE_mV88kuC%5c3-;ia!m7=$tuaamprP4MC zP`%3azbg7xK6+^(>&x;!7%r;p@YC7*)S`b80^ghsORA-(zM1f8Ul@=NWs%k_?EKN+ zl1tyGZ;HR=iIlk1dNyB2b1U6J?7RwD4)~0ph}9?gbyD0P(eOe}u5w~cuPX8yQ?lsk zDaKq6mx;)PpQ8f9+acEM8$D@V);bz3t{{}5xk1}5diD>+do*}LlOBKj;&b)8vgP6gk6Ae0x?VZ~`Jd^Fw51bfTy%@%x_@Ff zUryHR@zD03Kf^V#Q$P!RFS@- zpB+~I3AVuzEs5ND_F~swu2w?5Kys$Q7k(fPHaUs}-fyVv6F8w5IXFc&&QXw2Yf_^D zdL&0VkOajD;0Dl}1bWBHMrVcQ*+3=aveQttMu&d=UF=g$P0qTKZPk}wdg&!u@g>(> zd8$ADUK)pq%ZmAYLC=?Ed_W%AdrrOscc>4+QORa<7WDZK|LmZg!kZ(AHH+e&oFSH# zo_9omMBWh}+$!ST%p)#Cp@@Px$Q zvW;Rh+Z=i^%bY1^mXwDH$zC0s*@F}WcBvF@5}L8_V6M5GwOW4n=s76IGSys;-FHjk z$iReCsP>-pZQY}9Cr9^XbNP!TEW}cq&+p|(q5Og)<_!eiN8G3N?l!ZR$!?YY;1kcV zBdc?gJqJdjf#j@axYi)AW<@s6PW4dpnvzS|)e{$*o=&01%<?F*P6c9H%Qjw6oB77GYHJ<}Vr%}fS7J{}yaEJ7 zw3gDwln=KhsUpW*l+6&EoWtod5qDL8${s%6w3TU*)_{M5HmMuMidcv5O(0T%)+mxGy4{Zm~R%|K_sZQGy+AqEN`;zCclda9{%1}(vjjx4}M&k123Jvuao)KRMlCvX_GWHyTH6?4L z0DO6$wsP8el*u(~ZjI`PhtmVE1lq*|#ndkDmOT+Q z5#*>-v(mTn4;LW`WrbD4_^Fr(ok&kOc43=wA69XBGr|iqUBNHV;#|S@4f>4i~NDE%c$CRraNv`Av zUk6!fvE2Zbw!R3uD!>EndkQsk78H8Q6RI)FYQlF{i)hJ1tmGxWJ1fL)x2_7%nV-~I z;5XH|4=)D-`#7nRd&6(DFV5--sn6u-cS-Olj)v$@+WCT9sG*H7M zBteFJGc?Dnm`fNcs#oIE!w!g1_OVd&FPDn1+sD!#C*0_hD#c@`sJVTKO3C!k_T`1* zDjlGTSt}L_j33K)9tB24outfGDRn9(78W!}ym z9YH4YNY2-yA&QdjHfC0$@TkC2bZjBQAmPJgZJ~FkUl#iZ&pZtx(KTWU-qoB+8?zJZWa~m#?21pb_n2 zt~!H8WEyBxvg`pxC@Bg#g;1Fep#(OO5C!DbfYd9htgUpDJ;YP~JhP33rML}$-xb8oMJ1;A{hM+G@97#_t;f&7-wEy!>X) z_Fab~(quz)=SA0;Pb>!>Q=3g5=pCNm;=VdGRf010C2tKf1gB?CuHWz^mH4;T?YFCN zU_IpxmT4{1bIm8V0LEOo1^6jYHpJ$pQFhrTqnmDMGOB5Lld)O-4IoI_bA0WoEPH-5 zru#&%cXJUDbRak=>)pjami`cN(>=Pl869Oa3rT+WG(JgXdyXs!pyf>4cU)Up<(pPp zzeTp2ag%51OD0s9s@Lm~RP%_!1sIkKu_dT+YPVTmDYf*RBR6ZLkX|4mld{+@ctUyt zJx1Bke!rjAY0-ayj2Pn&rn3;P!(O-j;x2-Q>vpGYUnDxVToW#X1y|;t3sZVcVLb}2 z&`(qt|4z;P0)UX0Md9a#`mW#}^RM!-K93iKQMvioXLwa&iTxk*$Av_#@6ckuq}XJ4 ze*{`AjBJ_}*|0EjIz99zP>YF+-LuRHl^Q?dLQJobxh(MKU(TJdL`Y;TlhLY0O9XqB z;@{TZ@DyK2oJTz<&UtP-#ceeFmJc$k{0tWGS7rvM!1rv4<4nr>hWWytjTz(Lzmq|4 zk8xE<#{J@vLx=f5@?4VHHP6GzMBGD%vyexNijm2xgpk&#ZC$Nr)2g# zd!6V9(cKt_h72Y?x{@sgsljADFSa9_UJwpi(Fz&9)*twQKa#9!jvzORlSj~W3Dd|x zFEJ`S{FE9M;$u;SP>d!YRet&Un;T zYzf4VYbbah>7Dv!Z3TM0rf*v#^Tnk#Tp6=MT(0=(B%%qP6U4qEZVmT-G8P#=m7Nr( z-V(l*e%gmpJ_O`S(?J(5uv1ik68wsc73E({=q3D$dYPxgJdvYR5C?5CWjNW1-%+Z5@rpYoa_n|T5Z!SZC-TD#~Or`ZGivQ@kPVm3dlQvR%l zw{7`$_1DRM7|z3O8W>^3i)s-wh34Z*f^X+ig?;*to>67>?MhT{xMxE6YFF^E-lrc;KKx_k za>Jc81cK+8KgMTBVN>XfY+5LNko;H9_4wzZ6}>4VV-2TGfbHPS$Tc7L;@@Qc$$QJ0 z0^WRHBDU(KzDUPHTIWfANg$mJYIfnCH=T}fW{|xEgjAI1X{Uxf>oDD+FBL&--OIKO z5Nzv`GdHKkrB1k#G$s%h#I{tSChI=R;?F3DZKD^`7Z{B=@rIm|2=8)?MAp~pE(k5U z2|61Kvm^Z(TBF55vVPy%tUv#1F6+0Jx#c+G-yy7-BX0e2%4Qy3|2)gt08;J40XcFw zAk#h^VE*J33%FS8THye#e3QS7P`3Hnv@)N+OYh(k;0BSoO8$$MCZgBf=HIpWs6Hc~ zV}n8`qfFU6PRRueWksBhv5#?*UMz#*P123)XX$0d6YehIJji0sX_Qcz>sUN3crFHw zN?bP={8QpR80NcGiSJf+l+BXQOa?_vErlXUX+{Z4KRb?XYC*oIEN_p(Zr|~}>9hXw z_xbKMtLHaP|KS7*k>n(RB_Uy*ROH{i(o}=fuqvjWeHm^Ly?y`K9(h$ZLEXI zPJMVv*RkFE8|aw%9*Q(J4&6F#Uh!42esNQ8bVL+|bLKNjQCT>TIOU1o*kCGRp=yA|aih~(MuflyB0 zAdxvf6W<^I5Nia4N;5LF=okpY^8HI<=NjNAJS#`II-9ab1pFCy9R*Y&t&3d+k+6a* zZOm?0_<-A&W?ZDjz63W)BWKV^8pr7o)x6+2iW=4|l7){_B(|!Ad-22E7T%I4z42YB zqOyiN=RlXz*q#)fgi670*q0i;=zwVscUGsqtBOjs*l+k|8xc4Vm#T-tiY!kf4uvdQ zw3Ld4G%3#?FIh4NyK)A5ltLP}krBF_2SSKMSBk`L+jb~;p_w@YBGC?Ql;W^i?idYFu5!rOa9pX?nVG}Y1GESpi4h*h|&_A~4XQ_QnQ%zN;RxW5nMn-yPx zZ(tXjZ(yM0yNBQ#;VKz(aE*B+MV<>8-G7HX#e`jVxFNcR8AmDFrM5&7Jf%Og2y6Tk zI!Ga$>XA|{dK;hz#)i70>mOqNQTCY}e}!PKINr(wp2M)sP16`pEU`#(P@+Ytufk{Q zyE-3W(+#FtCHjZj=&fyjUY?bTVcialX5Hgkll2%57&4cxcvPS&D{vv40`qK31}{eo zFEQpRR-428E6()GeM0tdfuPEwYke%b zmyEZe?Rfj&p&fu#8%p9yv7HtN#qc6Fqe3&2P(rw;NUi@vm=1eP3TGLwz2Gt-uzPlYq8ReO}%O`JY9 z?#?!rEC;;OL1K6`ql477ruJ*Kmibl29hj1P@2G@2IriyAIjATe*W!~VkJ^fl+&g>U zbRU(8m>E^y6nj^3wpN}r=A*xq;H~C=Pn-UczkSiwf`CZRIn=7pFTv*(4}3b*(LL&O z9NnX2AYJJmKTzq#`utL(EWkEYhPc$u2y~QH(+pX-iov;Pn1&&K5z#Twc?c<})Rp{E z?kCfJex4$aB{pRE_ioj0j?aFg-D2BMwfmHN7wtYF?KbBwmgUhV4s@i>)w7z zV=1b=pnT+RJ$u7S{lIDqGZztdZ&E37SM}w$Lp)=7n7`&K)q79P<+)a0{$qZE^CLtk znRadP?)GqyclTOZyy;I#Mq~Lx{;pPgG!Cbt?i3^t*O|%I@r>h7F}e$%tQ|W5Bh`l# zOs*aEaevQ?$g$O8EYzE%j-FrhZddJk{tJ@4TqQ@O#cKa{2R;-C0Auxje3^`uS=mhV z$3p4=)uZG$mu7*nEs-1LV`O8dzFAG~&0LYETsnnM*{w}_BX4>m`$trojZ!9fr)>26 zD@dq$7CFUjG1%97QoB0MlVrblrxyKR>Ip9#O~6C!1GBv2Pu9P&pCxSQb>n+3e@>{I zz4luF_cB7SP~2REJ>d53+G=bofk|7 z^fM^o@Ri-3P?HU^XQYEJmu+cQHP8thAJC$51Y2U(0&t`P7<${pwLs#Ed)&vl;Gyvm z*s@H2La1$-JXZ*v-V3gD+H;sizvqf-Z~Z}OjTRNtT#xw9dhst{z8<(Ats>GUvz{9yU1F*Zq4%g1;Gbxyzpx+9Sv+S5tz4_<*F|ujRqv5BB$GGr<*#-X4TCRnR5l z-XxTekzM9NnZ6S{%QdvX_{(9E^$x~f(>Qq-;qQ@vLM|1fy)e?BWqRU9b)`{R1yI89 z*8not2vqYX6Iq_t_yV~Rw_U$N+&beq=&O?$H2=XDXu1&TT1TyfM1A1)JXMQ0!RDF8 zjp)yCu~V#B-%PBkcrweKxJ0?*tn;L?okuN2tm}(xm$<}jANx;-UhO$oT`fEsm#VV{ zOpKtfF2@46tTSaZvCe&b45x*#xg73&+kF&Cf}|g_8|-s?G8})b*=n&Pf;ZRn>;-4y zA_Ibu>K*J4b>Jdmn<|@)`MFkNP%Jg8HifQ{YA_jGDZkQOF4h$w;yn7J&lgojqOCGh z%R-v#4;7r*TdSF%w$>2tANHwZ1xQfP@~zdJx36>Wc9(Ch98B zSKUk9qk}x{+n7jSXs5i`J-SX(HYC!+c1maW=%}Q$b&qc1H__I;abLVUo=Csn{tio= z2;G->5tPtfPAMv$;HA*a-lc=`EpsvT+%hk5%bkf^f_4-?$B*m(S3J9?d@S6%E7X{H zQOOtSSaGfS1ck@CgYi9Nin^s!v5ZYX-d+BvL*XFN(NUhg6 ze$qXj}<(d{(E-v+i~D+5d-jO!}Dq$0Kt`sLf()%J!qAC3WKL`gI%sVtF?` zHb3+UKiER3yyJFh9nA{ObVSeRY@c-B3Ffymo1~ZTy4`vfo&9sd8Q_Fhd;ZFJiQHX| z2mh_38B|J?a1R!+6tY_ELwu$MT^Xb>NFG^o%*>_I|5zfj7}l4u3N`+y+>6^pfF8

    {~ZKzGx@HGq`v98o1|HT(ZwtTZl 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%0A2=cB5p0P1b8<0^Um3mya4z)*L(O@ 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 _G5YajnS%w07{A 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.Except(new[] + { + Effect.Jump, + Effect.SetJumpMode, + Effect.StopPlaying + }); + foreach (var effect in linearEffects) + { + effect.IsNonLinear().Should().BeFalse(); + } + } + + [Test] + public void IsDestructive_ShouldReturnTrue_ForDestructiveEffects() + { var destructiveEffects = new[] { Effect.DeleteEventOnTrackWithProbability, @@ -23,22 +47,55 @@ public void ShouldReturnCorrectExtensionMethodValuesForDefinedEnumValues() Effect.CopyTrackFromPattern, Effect.WriteRandomValue }; + foreach (var effect in destructiveEffects) + { + effect.IsDestructive().Should().BeTrue(); + } + } + [Test] + public void IsDestructive_ShouldReturnFalse_ForNonDestructiveEffects() + { + var nonDestructiveEffects = Enum.GetValues().Except(new[] + { + Effect.DeleteEventOnTrackWithProbability, + Effect.CyclicShiftTrackLines, + Effect.GeneratePolyrhythm, + Effect.CopyTrackToPattern, + Effect.CopyTrackFromPattern, + Effect.WriteRandomValue + }); + foreach (var effect in nonDestructiveEffects) + { + effect.IsDestructive().Should().BeFalse(); + } + } + + [Test] + public void ChangesTempo_ShouldReturnTrue_ForTimeModifyingEffects() + { var timeModifyingEffects = new[] { Effect.SetBpm, Effect.SetPlayingSpeed }; - - foreach (var effect in Enum.GetValues()) + foreach (var effect in timeModifyingEffects) { - var expectedToBeNonLinear = nonLinearEffects.Contains(effect); - var expectedToBeDestructive = destructiveEffects.Contains(effect); - var expectedToBeTimeModifying = timeModifyingEffects.Contains(effect); + effect.ChangesTempo().Should().BeTrue(); + } + } - effect.IsNonLinear().Should().Be(expectedToBeNonLinear); - effect.IsDestructive().Should().Be(expectedToBeDestructive); - effect.ChangesTempo().Should().Be(expectedToBeTimeModifying); + [Test] + public void ChangesTempo_ShouldReturnFalse_ForNonTimeModifyingEffects() + { + var nonTimeModifyingEffects = Enum.GetValues().Except(new[] + { + Effect.SetBpm, + Effect.SetPlayingSpeed + }); + foreach (var effect in nonTimeModifyingEffects) + { + effect.ChangesTempo().Should().BeFalse(); } } } diff --git a/SunSharp.Tests/FineTunePairTests.cs b/SunSharp.Tests/FineTunePairTests.cs index 8c5b178..c547fcf 100644 --- a/SunSharp.Tests/FineTunePairTests.cs +++ b/SunSharp.Tests/FineTunePairTests.cs @@ -3,9 +3,9 @@ namespace SunSharp.Tests; public class FineTunePairTests { [Test, AutoData] - public void FineTunePairFromPackedValueHasExpectedValues(short fineTuneValue, short relativeNoteValue) + public void Constructor_FromUint_ShouldInitializePropertiesCorrectly(short fineTuneValue, short relativeNoteValue) { - var packedValue = Helper.PackTwoSignedShorts(fineTuneValue, relativeNoteValue); + var packedValue = UtilityHelper.PackTwoSignedShorts(fineTuneValue, relativeNoteValue); var fineTune = new FineTunePair(packedValue); fineTune.RawValue.Should().Be(packedValue); fineTune.FineTune.Should().Be(fineTuneValue); @@ -13,7 +13,7 @@ public void FineTunePairFromPackedValueHasExpectedValues(short fineTuneValue, sh } [Test] - public void FineTunePairToStringReturnsExpectedString() + public void ToString_ShouldReturnExpectedString() { var fineTune = new FineTunePair(0, 0); const string message = "Fine-tune: 0, relative note: 0."; @@ -24,7 +24,7 @@ public void FineTunePairToStringReturnsExpectedString() } [Test] - public void FineTunePairEqualityComparisonShouldJustWork() + public void EqualityComparison_ShouldJustWork() { var a = new FineTunePair(0, 1); var b = new FineTunePair(0, 1); @@ -42,7 +42,7 @@ public void FineTunePairEqualityComparisonShouldJustWork() } [Test] - public void FineTunePairGetHashCodeShouldPreserveComparability() + public void GetHashCode_ShouldPreserveComparability() { var a = new FineTunePair(0, 1); var b = new FineTunePair(0, 1); diff --git a/SunSharp.Tests/GlobalUsings.cs b/SunSharp.Tests/GlobalUsings.cs index 223f1e9..6edde06 100644 --- a/SunSharp.Tests/GlobalUsings.cs +++ b/SunSharp.Tests/GlobalUsings.cs @@ -1,8 +1,6 @@ +global using System; global using AutoFixture; global using AutoFixture.NUnit4; - global using AwesomeAssertions; global using NSubstitute; - global using NUnit.Framework; -global using System; diff --git a/SunSharp.Tests/HelperTests.cs b/SunSharp.Tests/HelperTests.cs deleted file mode 100644 index 5aee251..0000000 --- a/SunSharp.Tests/HelperTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Linq; -using System.Runtime.InteropServices; - -namespace SunSharp.Tests; - -public class HelperTests -{ - [TestCase(-1)] - [TestCase(0)] - [TestCase(1)] - [TestCase(short.MaxValue)] - [TestCase(short.MinValue)] - public void ToShortBitwiseShouldGiveSameValueForArgument(short testValue) - { - var value = (uint)unchecked((ushort)testValue); - var result = Helper.ToShortBitwise(value); - result.Should().Be(testValue); - } - - [TestCase(-1)] - [TestCase(0)] - [TestCase(1)] - [TestCase(short.MaxValue)] - [TestCase(short.MinValue)] - public void ToShortBitwiseShouldGiveSameValueForArgumentWithHighBits(short testValue) - { - var value = unchecked((ushort)testValue) | 0xFFFF0000; - var result = Helper.ToShortBitwise(value); - result.Should().Be(testValue); - } - - [Test] - public void CopyIntArrayShouldSkipNegativeOnesReturnEmptyArrayForNullPtr() - { - var array = Helper.CopyIntArraySkipNegativeOnes(IntPtr.Zero, 10); - array.Should().BeEmpty(); - } - - [Test] - public void CopyIntArraySkipNegativeOnesShouldReturnValidData() - { - var originalArray = new[] { 0, 1, 2, -1, -1, -1, 4, 5 }; - int[] array; - var originalArrayHandle = GCHandle.Alloc(originalArray, GCHandleType.Pinned); - try - { - array = Helper.CopyIntArraySkipNegativeOnes( - originalArrayHandle.AddrOfPinnedObject(), originalArray.Length); - } - finally - { - originalArrayHandle.Free(); - } - array.Should().BeEquivalentTo(originalArray.Where(static i => i != -1).ToArray()); - } - - [TestCase(0, 0, 0u)] - [TestCase(-1, -1, 0xFFFFFFFFu)] - [TestCase(1, 1, 0x00010001u)] - [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] - [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] - [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] - [TestCase(short.MinValue, short.MinValue, 0x80008000u)] - public void UnpackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) - { - var result = Helper.UnpackTwoSignedShorts(value); - result.Should().Be((lowerBytes, upperBytes)); - } - - [TestCase(0, 0, 0u)] - [TestCase(-1, -1, 0xFFFFFFFFu)] - [TestCase(1, 1, 0x00010001u)] - [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] - [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] - [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] - [TestCase(short.MinValue, short.MinValue, 0x80008000u)] - public void PackTwoSignedShortsShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) - { - var result = Helper.PackTwoSignedShorts(lowerBytes, upperBytes); - result.Should().Be(value); - } - - [TestCase(0x7800, 16.35)] // C0 - [TestCase(0x7800 - 0x100 * (12 * 4 + 9), 440)] // A4 - [TestCase(0x7800 - 0x100 * (12 * 5 + 9), 880)] // A5 - public void FrequencyFromPitchShouldReturnExpectedValues(double input, double expected) - { - var result = Helper.PitchToFrequency(input); - var resultFloat = Helper.PitchToFrequency((float)input); - result.Should().BeApproximately(expected, expected * 0.01); - resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); - } - - [TestCase(16.35, 0x7800)] // C0 - [TestCase(440, 0x7800 - 0x100 * (12 * 4 + 9))] // A4 - [TestCase(880, 0x7800 - 0x100 * (12 * 5 + 9))] // A5 - public void PitchFromFrequencyShouldReturnExpectedValues(double input, double expected) - { - var result = Helper.FrequencyToPitch(input); - var resultFloat = Helper.FrequencyToPitch((float)input); - result.Should().BeApproximately(expected, expected * 0.01); - resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); - } -} diff --git a/SunSharp.Tests/LibraryVersionTests.cs b/SunSharp.Tests/LibraryVersionTests.cs index 309c4b8..1f2b02e 100644 --- a/SunSharp.Tests/LibraryVersionTests.cs +++ b/SunSharp.Tests/LibraryVersionTests.cs @@ -3,15 +3,11 @@ namespace SunSharp.Tests; public class LibraryVersionTests { [Test] - public void LibraryVersionConstructorShouldSetPropertiesAsExpected() + public void Constructor_ShouldSetPropertiesAsExpected() { const byte major = 1; const byte minor = 2; const byte minor2 = 3; - var version = new LibraryVersion(major, minor, minor2); - version.Major.Should().Be(1); - version.Minor.Should().Be(2); - version.Minor2.Should().Be(3); const int code = (major << 16) | (minor << 8) | minor2; @@ -22,12 +18,15 @@ public void LibraryVersionConstructorShouldSetPropertiesAsExpected() } [Test] - public void LibraryVersionToStringReturnsExpectedFormat() + public void ToString_ShouldReturnExpectedFormat() { const byte major = 1; const byte minor = 2; const byte minor2 = 3; - var version = new LibraryVersion(major, minor, minor2); + const int code = (major << 16) + | (minor << 8) + | minor2; + var version = new LibraryVersion(code); var value = $"SunVox Lib v{major}.{minor}.{minor2}"; version.ToString().Should().Be(value); } diff --git a/SunSharp.Tests/MicrotonesTests.cs b/SunSharp.Tests/MicrotonesTests.cs new file mode 100644 index 0000000..c06b138 --- /dev/null +++ b/SunSharp.Tests/MicrotonesTests.cs @@ -0,0 +1,59 @@ +namespace SunSharp.Tests; + +public class MicrotonesTests +{ + [TestCase(0x7800, 16.35)] + [TestCase(0x7800 - 0x100 * (12 * 4 + 9), 440)] + [TestCase(0x7800 - 0x100 * (12 * 5 + 9), 880)] + public void PitchToFrequency_ShouldReturnExpectedValue(double input, double expected) + { + var result = Microtones.PitchToFrequency((float)input); + result.Should().BeApproximately((float)expected, (float)(expected * 0.01)); + + var resultFloat = Microtones.PitchToFrequency((double)input); + resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); + } + + [TestCase(16.35, 0x7800)] + [TestCase(440, 0x7800 - 0x100 * (12 * 4 + 9))] + [TestCase(880, 0x7800 - 0x100 * (12 * 5 + 9))] + public void FrequencyToPitch_ShouldReturnExpectedValue(double input, double expected) + { + var result = Microtones.FrequencyToPitch(input); + result.Should().BeApproximately(expected, expected * 0.01); + + var resultFloat = Microtones.FrequencyToPitch((float)input); + resultFloat.Should().BeApproximately((float)expected, (float)(expected * 0.01)); + } + + [TestCase(NoteName.C, 0, 0x7800)] + [TestCase(NoteName.Cs, 0, 0x7800 - 0x100 * 1)] + [TestCase(NoteName.D, 0, 0x7800 - 0x100 * 2)] + [TestCase(NoteName.C, 1, 0x7800 - 0x100 * 12)] + [TestCase(NoteName.C, 4, 0x7800 - 0x100 * (4 * 12))] + [TestCase(NoteName.A, 4, 0x7800 - 0x100 * (4 * 12 + 9))] + [TestCase(NoteName.C, 10, 0x0000)] + public void NoteToPitch_ShouldReturnExpectedValue(NoteName noteName, int octave, short expectedPitch) + { + var pitch = Microtones.NoteToPitch(noteName, octave); + pitch.Should().Be(expectedPitch); + } + + [Test] + public void NoteToPitch_InvalidNote_ThrowsArgumentException() + { + var action = () => Microtones.NoteToPitch(NoteName.Other, 0); + action.Should().Throw(); + } + + [TestCase(NoteName.Cb, 0)] + [TestCase(NoteName.G, 10)] + [TestCase(NoteName.C, -1)] + [TestCase(NoteName.Cs, 10)] + [TestCase(NoteName.C, 11)] + public void NoteToPitch_NoteOutOfRange_ThrowsArgumentOutOfRangeException(NoteName noteName, int octave) + { + var action = () => Microtones.NoteToPitch(noteName, octave); + action.Should().Throw(); + } +} diff --git a/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs b/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs deleted file mode 100644 index f1fec54..0000000 --- a/SunSharp.Tests/Mocks/ModuleFlagsHelper.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace SunSharp.Tests.Mocks; - -public static class ModuleFlagsHelper -{ - public static uint CreateModuleFlagsValue(bool exists = false, bool isGenerator = false, bool isEffect = false, - bool isMute = false, bool isSolo = false, bool isBypassed = false, byte inputCount = 0, byte outputCount = 0) - { - return ((exists ? 1u : 0) << 0) - | ((isGenerator ? 1u : 0) << 1) - | ((isEffect ? 1u : 0) << 2) - | ((isMute ? 1u : 0) << 3) - | ((isSolo ? 1u : 0) << 4) - | ((isBypassed ? 1u : 0) << 5) - | ((uint)inputCount << 16) - | ((uint)outputCount << 24); - } -} diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs b/SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs similarity index 90% rename from SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs rename to SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs index f8e6999..ffc4e1c 100644 --- a/SunSharp.Tests/Mocks/SunVoxLibMockProvider.cs +++ b/SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs @@ -4,16 +4,16 @@ namespace SunSharp.Tests.Mocks; -public class SunVoxLibMockProvider +public class SunVoxLibMockBuilder { private readonly ISunVoxLib _mock = Substitute.For(); - public static SunVoxLibMockProvider BuildMock() + public static SunVoxLibMockBuilder BuildMock() { - return new SunVoxLibMockProvider(); + return new SunVoxLibMockBuilder(); } - public SunVoxLibMockProvider WithSongData(int slotId, SongData songData) + public SunVoxLibMockBuilder WithSongData(int slotId, SongData songData) { _mock.GetSongName(slotId).Returns(songData.Name); _mock.GetSongBpm(slotId).Returns(songData.BPM); @@ -29,7 +29,7 @@ public SunVoxLibMockProvider WithSongData(int slotId, SongData songData) return this; } - public SunVoxLibMockProvider WithPatternData(int slotId, PatternData[] patternData) + public SunVoxLibMockBuilder WithPatternData(int slotId, PatternData[] patternData) { _mock.GetPatternExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); _mock.GetUpperPatternCount(slotId).Returns(patternData.Max(static p => p.Id) + 1); @@ -48,7 +48,7 @@ public SunVoxLibMockProvider WithPatternData(int slotId, PatternData[] patternDa return this; } - public SunVoxLibMockProvider WithModuleData(int slotId, ModuleData[] moduleData) + public SunVoxLibMockBuilder WithModuleData(int slotId, ModuleData[] moduleData) { _mock.GetModuleExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); _mock.GetUpperModuleCount(slotId).Returns(moduleData.Max(static m => m.Id) + 1); diff --git a/SunSharp.Tests/ModuleFlagsTests.cs b/SunSharp.Tests/ModuleFlagsTests.cs index 29f7cea..e521446 100644 --- a/SunSharp.Tests/ModuleFlagsTests.cs +++ b/SunSharp.Tests/ModuleFlagsTests.cs @@ -1,11 +1,22 @@ -using static SunSharp.Tests.Mocks.ModuleFlagsHelper; - namespace SunSharp.Tests; public class ModuleFlagsTests { + public static uint CreateModuleFlagsValue(bool exists = false, bool isGenerator = false, bool isEffect = false, + bool isMute = false, bool isSolo = false, bool isBypassed = false, byte inputCount = 0, byte outputCount = 0) + { + return ((exists ? 1u : 0) << 0) + | ((isGenerator ? 1u : 0) << 1) + | ((isEffect ? 1u : 0) << 2) + | ((isMute ? 1u : 0) << 3) + | ((isSolo ? 1u : 0) << 4) + | ((isBypassed ? 1u : 0) << 5) + | ((uint)inputCount << 16) + | ((uint)outputCount << 24); + } + [Test] - public void ModuleFlagsPropertiesShouldReturnValuesAsExpected() + public void Properties_ShouldReturnValuesAsExpected() { for (uint i = 0; i <= 0b111111; i++) { @@ -21,18 +32,28 @@ public void ModuleFlagsPropertiesShouldReturnValuesAsExpected() } [Test] - public void ModuleFlagsInputCountAndOutputCountReturnExpectedValues() + public void InputCount_ReturnExpectedValues() { var exampleFlags = new ModuleFlags(0); exampleFlags.InputUpperCount.Should().Be(0); - exampleFlags.OutputUpperCount.Should().Be(0); var otherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 255, outputCount: 255)); otherExampleFlags.InputUpperCount.Should().Be(255); - otherExampleFlags.OutputUpperCount.Should().Be(255); var andAnotherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 4, outputCount: 8)); andAnotherExampleFlags.InputUpperCount.Should().Be(4); + } + + [Test] + public void OutputCount_ReturnExpectedValues() + { + var exampleFlags = new ModuleFlags(0); + exampleFlags.OutputUpperCount.Should().Be(0); + + var otherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 255, outputCount: 255)); + otherExampleFlags.OutputUpperCount.Should().Be(255); + + var andAnotherExampleFlags = new ModuleFlags(CreateModuleFlagsValue(inputCount: 4, outputCount: 8)); andAnotherExampleFlags.OutputUpperCount.Should().Be(8); } @@ -40,7 +61,7 @@ public void ModuleFlagsInputCountAndOutputCountReturnExpectedValues() [TestCase(1u)] [TestCase(2023u)] [TestCase(uint.MaxValue)] - public void ModuleFlagsImplicitConversionShouldReturnInternalValue(uint value) + public void ImplicitConversion_ShouldReturnInternalValue(uint value) { var exampleFlags = (ModuleFlags)value; var valueFromConversion = (uint)exampleFlags; diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs index d9afe1e..7c41493 100644 --- a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -9,7 +9,7 @@ namespace SunSharp.Tests.Native.Loader; public class NativeProxyTests { - private static void AssertThatGetFunctionByNameWasCalledForAllMethods(ILibraryHandler handler) + private static void AssertGetFunctionByNameWasCalledForAllMethods(ILibraryHandler handler) { var methods = typeof(ISunVoxLibC).GetMethods(); @@ -19,7 +19,7 @@ private static void AssertThatGetFunctionByNameWasCalledForAllMethods(ILibraryHa } } - private static void AssertThatGetFunctionByNameWasCalledForNoMethods(ILibraryHandler handler) + private static void AssertGetFunctionByNameWasCalledForNoMethods(ILibraryHandler handler) { handler.Received(0).GetFunctionByName(Arg.Any(), Arg.Any()); } @@ -38,7 +38,7 @@ private static Dictionary PrepareHandlerAndGetDelegateDictiona } [Test] - public void NativeProxyShouldCallExpectedMethodsInPositiveScenario() + public void Lifetime_ShouldCallExpectedMethodsInOptimisticScenario() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(false); @@ -51,7 +51,7 @@ public void NativeProxyShouldCallExpectedMethodsInPositiveScenario() // then _ = handler.Received().IsLibraryLoaded; handler.Received(1).LoadLibrary(); - AssertThatGetFunctionByNameWasCalledForAllMethods(handler); + AssertGetFunctionByNameWasCalledForAllMethods(handler); // setup handler.ClearReceivedCalls(); @@ -63,7 +63,7 @@ public void NativeProxyShouldCallExpectedMethodsInPositiveScenario() // then _ = handler.Received().IsLibraryLoaded; handler.Received(0).LoadLibrary(); - AssertThatGetFunctionByNameWasCalledForNoMethods(handler); + AssertGetFunctionByNameWasCalledForNoMethods(handler); //setup handler.ClearReceivedCalls(); @@ -79,7 +79,7 @@ public void NativeProxyShouldCallExpectedMethodsInPositiveScenario() } [Test] - public void NativeProxyLoadShouldNotCallHandlerLoadIfLibraryLoadedButProxyIsNot() + public void Load_LibraryLoadedButProxyIsNot_ShouldNotCallHandlerLoad() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(true); @@ -92,11 +92,11 @@ public void NativeProxyLoadShouldNotCallHandlerLoadIfLibraryLoadedButProxyIsNot( // then _ = handler.Received().IsLibraryLoaded; handler.Received(0).LoadLibrary(); - AssertThatGetFunctionByNameWasCalledForAllMethods(handler); + AssertGetFunctionByNameWasCalledForAllMethods(handler); } [Test] - public void NativeProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() + public void Load_HandlerLoadFails_ShouldCallHandlerUnload() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(false); @@ -114,11 +114,11 @@ public void NativeProxyLoadShouldCallHandlerUnloadWhenHandlerLoadFails() handler.Received(1).LoadLibrary(); handler.Received(1).UnloadLibrary(); }); - AssertThatGetFunctionByNameWasCalledForNoMethods(handler); + AssertGetFunctionByNameWasCalledForNoMethods(handler); } [Test] - public void NativeProxyShouldCallUnloadLibraryWhenLibraryFailedAndRethrowException() + public void Unload_WhenLibraryFailed_ShouldCallUnloadLibraryAndRethrowException() { var handler = Substitute.For(); var delegates = PrepareHandlerAndGetDelegateDictionary(handler); @@ -145,15 +145,19 @@ public void NativeProxyShouldCallUnloadLibraryWhenLibraryFailedAndRethrowExcepti [TestCase(true, false, "Missing delegate. Library is loaded, proxy is not loaded.")] [TestCase(false, false, "Missing delegate. Library is not loaded, proxy is not loaded.")] [TestCase(true, true, "Missing delegate. Library is loaded, proxy is loaded.")] - public void NativeProxyGetExceptionReturnsExpectedMessage(bool libraryLoaded, bool proxyLoaded, string message) + public void GetNoDelegateException_ShouldReturnExpectedMessage(bool libraryLoaded, bool proxyLoaded, string message) { var handler = Substitute.For(); var proxy = new NativeProxy(handler); if (proxyLoaded) + { proxy.Load(); + } else + { proxy.Unload(); + } proxy.IsLoaded.Should().Be(proxyLoaded); @@ -164,7 +168,7 @@ public void NativeProxyGetExceptionReturnsExpectedMessage(bool libraryLoaded, bo } [Test] - public void NativeProxyGetExceptionReturnsExpectedMessageOnFailWhenGettingLibraryStatus() + public void GetNoDelegateException_OnFailWhenGettingLibraryStatus_ShouldReturnExpectedMessage() { var handler = Substitute.For(); var proxy = new NativeProxy(handler); @@ -185,7 +189,7 @@ public void NativeProxyGetExceptionReturnsExpectedMessageOnFailWhenGettingLibrar } [Test] - public void NativeProxyShouldAskForAndCallProvidedDelegates() + public void Load_ShouldAskForExpectedDelegates() { var libraryHandler = Substitute.For(); @@ -216,7 +220,7 @@ public void NativeProxyShouldAskForAndCallProvidedDelegates() } [Test] - public void NativeProxyUnloadShouldCallDeinitWhenAvailable() + public void Unload_ShouldCallDeinitWhenAvailable() { var libraryHandler = Substitute.For(); @@ -243,7 +247,7 @@ public void NativeProxyUnloadShouldCallDeinitWhenAvailable() } [Test] - public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsWhenDeinitFails() + public void Unload_WhenDeinitFails_ShouldThrowExpectedExceptionAndCallExpectedMethods() { var libraryHandler = Substitute.For(); @@ -277,7 +281,7 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW } [Test] - public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsWhenUnloadLibraryFails() + public void Unload_WhenUnloadLibraryFails_ShouldThrowExpectedExceptionAndCallExpectedMethods() { var libraryHandler = Substitute.For(); @@ -311,7 +315,7 @@ public void NativeProxyUnloadShouldThrowExpectedExceptionAndCallExpectedMethodsW } [Test] - public void NativeProxyUnloadShouldThrowBothExpectedExceptionsAndCallExpectedMethodsWhenUnloadLibraryAndDeinitFail() + public void Unload_WhenUnloadLibraryAndDeinitFail_ShouldThrowBothExpectedExceptionsAndCallExpectedMethods() { var libraryHandler = Substitute.For(); @@ -338,7 +342,7 @@ public void NativeProxyUnloadShouldThrowBothExpectedExceptionsAndCallExpectedMet } [Test] - public void NativeProxyUnloadShouldThrowWhenDeinitDelegateWasNotProvided() + public void Unload_WhenDeinitDelegateWasNotProvided_ShouldThrow() { var libraryHandler = Substitute.For(); @@ -359,7 +363,7 @@ public void NativeProxyUnloadShouldThrowWhenDeinitDelegateWasNotProvided() } [Test] - public async Task NativeProxyInterfaceCallsShouldThrowInvalidOperationExceptionBeforeLoadCalled() + public async Task InterfaceCalls_BeforeLoadCalled_ShouldThrowInvalidOperationException() { var libraryHandler = Substitute.For(); libraryHandler.IsLibraryLoaded.Returns(false); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs index 313e06b..9e4b730 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -10,7 +10,7 @@ public class SunVoxLibNativeWrapperAudioCallbackTests #region input short, output short [Test, AutoData] - public void ForOutputShortInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithOutputShortInStereoInputShortInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var library = Substitute.For(); var outputBuffer = new short[256]; @@ -44,8 +44,7 @@ public void ForOutputShortInStereoInputShortInStereoShouldCallExpectedMethodWith #region input float, output short [Test, AutoData] - public void - ForOutputShortInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithOutputShortInStereoInputFloatInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var outputBuffer = new short[256]; var inputBuffer = new float[256]; @@ -79,8 +78,7 @@ public void #region input short, output float [Test, AutoData] - public void - ForOutputFloatInStereoInputShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputShortInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var outputBuffer = new float[256]; var inputBuffer = new short[256]; @@ -114,7 +112,7 @@ public void #region output only, float, mono [Test, AutoData] - public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithFloatInMono_ShouldCallExpectedMethodAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var buffer = new float[256]; var library = Substitute.For(); @@ -140,7 +138,7 @@ public void ForFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCod } [Test, AutoData] - public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(float[] buffer, int latency, uint outTime) + public void AudioCallback_WithFloatInMonoOnReturnCodeNotOneOrZero_ShouldThrow(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -157,7 +155,7 @@ public void ForFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(float[] buffer, in #region output only, float, stereo [Test, AutoData] - public void ForFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + public void AudioCallback_WithFloatInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean( bool expectedValue, int latency, uint outTime) { var buffer = new float[256]; @@ -184,7 +182,7 @@ public void ForFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBool } [Test, AutoData] - public void ForFloatInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(float[] buffer, int latency, uint outTime) + public void AudioCallback_WithFloatInStereoOnBufferSizeNotMultipleOfTwo_ShouldThrow(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -196,7 +194,7 @@ public void ForFloatInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(float[] bu } [Test, AutoData] - public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) + public void AudioCallback_WithFloatInStereoOnReturnCodeNotOneOrZero_ShouldThrow(int latency, uint outTime) { var buffer = new float[256]; var library = Substitute.For(); @@ -214,7 +212,7 @@ public void ForFloatInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uin #region output only, short, mono [Test, AutoData] - public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithShortInMono_ShouldCallExpectedMethodAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var buffer = new short[256]; var library = Substitute.For(); @@ -240,7 +238,7 @@ public void ForShortInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCod } [Test, AutoData] - public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) + public void AudioCallback_WithShortInMonoOnReturnCodeNotOneOrZero_ShouldThrow(int latency, uint outTime) { var buffer = new short[256]; var library = Substitute.For(); @@ -258,7 +256,7 @@ public void ForShortInMonoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint #region output only, short, stereo [Test, AutoData] - public void ForShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode( + public void AudioCallback_WithShortInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean( bool expectedValue, int latency, uint outTime) { var buffer = new short[256]; @@ -285,7 +283,7 @@ public void ForShortInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBool } [Test, AutoData] - public void ForShortInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(short[] buffer, int latency, uint outTime) + public void AudioCallback_WithShortInStereoOnBufferSizeNotMultipleOfTwo_ShouldThrow(short[] buffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -297,7 +295,7 @@ public void ForShortInStereoShouldThrowIfBufferSizeIsNotMultipleOfTwo(short[] bu } [Test, AutoData] - public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uint outTime) + public void AudioCallback_WithShortInStereoOnReturnCodeNotOneOrZero_ShouldThrow(int latency, uint outTime) { var buffer = new short[256]; var library = Substitute.For(); @@ -315,7 +313,7 @@ public void ForShortInStereoShouldThrowIfReturnCodeNotOneOrZero(int latency, uin #region output float mono, input float mono [Test, AutoData] - public void ForOutputFloatInMonoInputFloatInMonoShouldCallExpectedMethodAndReturnsBooleanFromReturnCode( + public void AudioCallback_WithOutputFloatInMonoInputFloatInMono_ShouldCallExpectedMethodAndReturnBoolean( bool expectedValue, float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); @@ -344,7 +342,7 @@ public void ForOutputFloatInMonoInputFloatInMonoShouldCallExpectedMethodAndRetur } [Test, AutoData] - public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfBufferSizeMismatched(int latency, uint outTime) + public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnBufferSizeMismatch_ShouldThrow(int latency, uint outTime) { var outputBuffer = new float[10]; var inputBuffer = new float[11]; @@ -360,7 +358,7 @@ public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfBufferSizeMismatche } [Test, AutoData] - public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfReturnCodeNotOneOrZero(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) + public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnReturnCodeNotOneOrZero_ShouldThrow(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -377,8 +375,7 @@ public void ForOutputFloatInMonoInputFloatInMonoShouldThrowIfReturnCodeNotOneOrZ #region output float stereo, input float mono [Test, AutoData] - public void - ForOutputFloatInStereoInputFloatInMonoShouldCallExpectedMethodWithHalfInputFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputFloatInMono_ShouldCallExpectedMethodWithHalfInputFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var outputBuffer = new float[256]; var inputBuffer = new float[128]; @@ -408,7 +405,7 @@ public void } [Test, AutoData] - public void ForOutputFloatInStereoInputFloatInMonoShouldThrowDueToBufferSizeMismatch(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputFloatInMonoOnBufferSizeMismatch_ShouldThrow(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -428,8 +425,7 @@ public void ForOutputFloatInStereoInputFloatInMonoShouldThrowDueToBufferSizeMism #region input float stereo, output float stereo [Test, AutoData] - public void - ForOutputFloatInStereoInputFloatInStereoShouldCallExpectedMethodWithHalfFramesAndReturnsBooleanFromReturnCode(bool expectedValue, int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputFloatInStereo_ShouldCallExpectedMethodWithHalfFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { var outputBuffer = new float[256]; var inputBuffer = new float[256]; @@ -459,7 +455,7 @@ public void } [Test, AutoData] - public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenInputBufferSizeNotDivisibleByTwo(int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputFloatInStereoOnInputBufferSizeNotDivisibleByTwo_ShouldThrow(int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -475,7 +471,7 @@ public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenInputBufferSiz } [Test, AutoData] - public void ForOutputFloatInStereoInputFloatInStereoShouldFailWhenOutputBufferSizeNotDivisibleByTwo(int latency, uint outTime) + public void AudioCallback_WithOutputFloatInStereoInputFloatInStereoOnOutputBufferSizeNotDivisibleByTwo_ShouldThrow(int latency, uint outTime) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index e62afa5..07d04f3 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -14,7 +14,7 @@ public class SunVoxLibNativeWrapperModulesTests ]; [Test, AutoData] - public void ConnectModuleShouldCallExpectedMethod(int slotId, int source, int destination) + public void ConnectModule_Default_ShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -28,7 +28,7 @@ public void ConnectModuleShouldCallExpectedMethod(int slotId, int source, int de } [Test, AutoData] - public void ConnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int source, int destination) + public void ConnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -42,7 +42,7 @@ public void ConnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int source, } [Test, AutoData] - public void CreateModuleShouldCallExpectedMethod(int newModuleId, string moduleName, string moduleType, int slotId, int x, int y, int z) + public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, string moduleName, string moduleType, int slotId, int x, int y, int z) { var receivedModuleName = string.Empty; var receivedModuleType = string.Empty; @@ -68,7 +68,7 @@ public void CreateModuleShouldCallExpectedMethod(int newModuleId, string moduleN } [Test, AutoData] - public void CreateModuleShouldThrowOnNegativeReturnedValue(string moduleName, string moduleType, int slotId, int x, int y, int z) + public void CreateModule_NegativeReturnedValue_ShouldThrow(string moduleName, string moduleType, int slotId, int x, int y, int z) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -83,7 +83,7 @@ public void CreateModuleShouldThrowOnNegativeReturnedValue(string moduleName, st } [Test, AutoData] - public void DisconnectModuleShouldCallExpectedMethod(int slotId, int source, int destination) + public void DisconnectModule_Default_ShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -97,7 +97,7 @@ public void DisconnectModuleShouldCallExpectedMethod(int slotId, int source, int } [Test, AutoData] - public void DisconnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int source, int destination) + public void DisconnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, int destination) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -111,7 +111,7 @@ public void DisconnectModuleShouldThrowOnNonZeroReturnCode(int slotId, int sourc } [Test, AutoData] - public void FindModuleShouldCallExpectedMethod(int foundModuleId, string moduleName, int slotId) + public void FindModule_Default_ShouldCallExpectedMethod(int foundModuleId, string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -130,7 +130,7 @@ public void FindModuleShouldCallExpectedMethod(int foundModuleId, string moduleN } [Test, AutoData] - public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound(string moduleName, int slotId) + public void FindModule_ModuleNotFound_ShouldReturnNull(string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -149,7 +149,7 @@ public void FindModuleShouldCallExpectedMethodAndReturnNullWhenModuleNotFound(st } [Test, AutoData] - public void FindModuleShouldThrowOnUnexpectedValue(string moduleName, int slotId) + public void FindModule_UnexpectedValue_ShouldThrow(string moduleName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -163,7 +163,7 @@ public void FindModuleShouldThrowOnUnexpectedValue(string moduleName, int slotId } [Test, AutoData] - public void GetModuleColorShouldCallExpectedMethodAndReturnValue(byte r, byte g, byte b, int moduleId, int slotId) + public void GetModuleColor_Default_ShouldReturnValue(byte r, byte g, byte b, int moduleId, int slotId) { var code = r | (g << 8) | (b << 16); @@ -180,7 +180,7 @@ public void GetModuleColorShouldCallExpectedMethodAndReturnValue(byte r, byte g, } [Test, AutoData] - public void GetModuleControllerCountShouldCallExpectedMethod(int moduleId, int slotId, int moduleCount) + public void GetModuleControllerCount_Default_ShouldReturnValue(int moduleId, int slotId, int moduleCount) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -195,7 +195,7 @@ public void GetModuleControllerCountShouldCallExpectedMethod(int moduleId, int s } [Test, AutoData] - public void GetModuleControllerCountShouldCallExpectedMethodAndThrowOnNegativeValue(int slotId, int moduleId) + public void GetModuleControllerCount_NegativeValue_ShouldThrow(int slotId, int moduleId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -209,7 +209,7 @@ public void GetModuleControllerCountShouldCallExpectedMethodAndThrowOnNegativeVa } [Test, AutoData] - public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) + public void GetModuleControllerGroup_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -224,7 +224,7 @@ public void GetModuleControllerGroupShouldCallExpectedMethodAndReturnValue(int m } [Test, AutoData] - public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) + public void GetModuleControllerMaxValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -240,7 +240,7 @@ public void GetModuleControllerMaxValueShouldCallExpectedMethodAndReturnValue(in } [Test, AutoData] - public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) + public void GetModuleControllerMinValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -256,7 +256,7 @@ public void GetModuleControllerMinValueShouldCallExpectedMethodAndReturnValue(in } [Test, AutoData] - public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull(int moduleId, int controllerId, int slotId) + public void GetModuleControllerName_NullPointer_ShouldReturnNull(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -271,7 +271,7 @@ public void GetModuleControllerNameShouldCallExpectedMethodAndReturnNull(int mod } [Test, AutoData] - public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString(string controllerName, int moduleId, int controllerId, int slotId) + public void GetModuleControllerName_Default_ShouldReturnString(string controllerName, int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -297,7 +297,7 @@ public void GetModuleControllerNameShouldCallExpectedMethodAndReturnString(strin } [Test, AutoData] - public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) + public void GetModuleControllerOffset_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -312,7 +312,7 @@ public void GetModuleControllerOffsetShouldCallExpectedMethodAndReturnValue(int } [Test, AutoData] - public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, ControllerType returnedValue) + public void GetModuleControllerType_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, ControllerType returnedValue) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -327,7 +327,7 @@ public void GetModuleControllerTypeShouldCallExpectedMethodAndReturnValue(int mo } [Test, AutoData] - public void GetModuleControllerTypeShouldCallExpectedMethodAndThrowOnUnexpectedValue(int moduleId, int controllerId, int slotId) + public void GetModuleControllerType_UnexpectedValue_ShouldThrow(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -341,7 +341,7 @@ public void GetModuleControllerTypeShouldCallExpectedMethodAndThrowOnUnexpectedV } [Test, AutoData] - public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) + public void GetModuleControllerValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -358,7 +358,7 @@ public void GetModuleControllerValueShouldCallExpectedMethodAndReturnValue(int m [TestCase(true)] [TestCase(false)] - public void GetModuleExistsShouldCallExpectedMethodAndReturnValue(bool exists) + public void GetModuleExists_Default_ShouldReturnValue(bool exists) { var fixture = new Fixture(); var flagsValue = (uint)(ModuleFlags.SV_MODULE_FLAG_EXISTS * (exists ? 1 : 0)); @@ -377,7 +377,7 @@ public void GetModuleExistsShouldCallExpectedMethodAndReturnValue(bool exists) } [Test, AutoData] - public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue(FineTunePair moduleFineTune, int moduleId, int slotId) + public void GetModuleFineTune_Default_ShouldReturnValue(FineTunePair moduleFineTune, int moduleId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -392,7 +392,7 @@ public void GetModuleFineTuneShouldCallExpectedMethodAndReturnValue(FineTunePair } [Test, AutoData] - public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue(uint flagsValue, int moduleId, int slotId) + public void GetModuleFlags_Default_ShouldReturnValue(uint flagsValue, int moduleId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -407,7 +407,7 @@ public void GetModuleFlagsShouldCallExpectedMethodAndReturnValue(uint flagsValue } [TestCaseSource(nameof(ModuleInputOutputAndResult))] - public void GetModuleInputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) + public void GetModuleInputs_Default_ShouldReturnValue(int[] nativeData, int[] expectedOutput) { var fixture = new Fixture(); var flagsValue = unchecked((uint)((nativeData.Length << ModuleFlags.SV_MODULE_INPUTS_OFF) | @@ -431,7 +431,7 @@ public void GetModuleInputsShouldCallExpectedMethodsAndReturnValue(int[] nativeD } [Test] - public void GetModuleInputsShouldSkipCallsIfDoesNotExist() + public void GetModuleInputs_ModuleDoesNotExist_ShouldSkipCalls() { const uint flagsValue = 0u; var fixture = new Fixture(); @@ -453,7 +453,7 @@ public void GetModuleInputsShouldSkipCallsIfDoesNotExist() } [Test] - public void GetModuleInputsShouldSkipCallsIfZeroInputs() + public void GetModuleInputs_ZeroInputs_ShouldSkipCalls() { const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; var fixture = new Fixture(); @@ -475,7 +475,7 @@ public void GetModuleInputsShouldSkipCallsIfZeroInputs() } [Test, AutoData] - public void GetModuleNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(int moduleId, int slotId) + public void GetModuleName_NullPointer_ShouldReturnNull(int moduleId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -489,7 +489,7 @@ public void GetModuleNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(in } [Test, AutoData] - public void GetModuleNameShouldCallExpectedMethodAndReturnString(int moduleId, int slotId, string moduleName) + public void GetModuleName_Default_ShouldReturnString(int moduleId, int slotId, string moduleName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -515,7 +515,7 @@ public void GetModuleNameShouldCallExpectedMethodAndReturnString(int moduleId, i } [TestCaseSource(nameof(ModuleInputOutputAndResult))] - public void GetModuleOutputsShouldCallExpectedMethodsAndReturnValue(int[] nativeData, int[] expectedOutput) + public void GetModuleOutputs_Default_ShouldReturnValue(int[] nativeData, int[] expectedOutput) { var fixture = new Fixture(); var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_OUTPUTS_OFF) | @@ -539,7 +539,7 @@ public void GetModuleOutputsShouldCallExpectedMethodsAndReturnValue(int[] native } [Test, AutoData] - public void GetModuleOutputsShouldSkipCallsIfDoesNotExist(int moduleId, int slotId) + public void GetModuleOutputs_ModuleDoesNotExist_ShouldSkipCalls(int moduleId, int slotId) { const uint flagsValue = 0u; new ModuleFlags(flagsValue).Exists.Should().BeFalse(); @@ -558,7 +558,7 @@ public void GetModuleOutputsShouldSkipCallsIfDoesNotExist(int moduleId, int slot } [Test, AutoData] - public void GetModuleOutputsShouldSkipCallsIfZeroOutputs(int moduleId, int slotId) + public void GetModuleOutputs_ZeroOutputs_ShouldSkipCalls(int moduleId, int slotId) { const uint flagsValue = ModuleFlags.SV_MODULE_FLAG_EXISTS; new ModuleFlags(flagsValue).InputUpperCount.Should().Be(0); @@ -577,11 +577,11 @@ public void GetModuleOutputsShouldSkipCallsIfZeroOutputs(int moduleId, int slotI } [Test, AutoData] - public void GetModulePositionShouldCallExpectedMethodAndReturnValue(int moduleId, int slotId, short x, short y) + public void GetModulePosition_Default_ShouldReturnValue(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - library.sv_get_module_xy(Arg.Any(), Arg.Any()).Returns(Helper.PackTwoSignedShorts(x, y)); + library.sv_get_module_xy(Arg.Any(), Arg.Any()).Returns(UtilityHelper.PackTwoSignedShorts(x, y)); // when var value = wrapper.GetModulePosition(slotId, moduleId); @@ -591,7 +591,7 @@ public void GetModulePositionShouldCallExpectedMethodAndReturnValue(int moduleId } [Test, AutoData] - public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer(int moduleId, int slotId) + public void GetModuleType_NullPointer_ShouldReturnNull(int moduleId, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -605,7 +605,7 @@ public void GetModuleTypeShouldCallExpectedMethodAndReturnNullWhenNullPointer(in } [Test, AutoData] - public void GetModuleTypeShouldCallExpectedMethodAndReturnString(int moduleId, int slotId, string moduleType) + public void GetModuleType_Default_ShouldReturnString(int moduleId, int slotId, string moduleType) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -631,7 +631,7 @@ public void GetModuleTypeShouldCallExpectedMethodAndReturnString(int moduleId, i } [Test, AutoData] - public void GetUpperModuleCountShouldCallExpectedMethod(int slotId, int moduleCount) + public void GetUpperModuleCount_Default_ShouldReturnValue(int slotId, int moduleCount) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -646,7 +646,7 @@ public void GetUpperModuleCountShouldCallExpectedMethod(int slotId, int moduleCo } [Test, AutoData] - public void GetUpperModuleCountShouldCallExpectedMethodAndThrowOnNegativeValue(int slotId) + public void GetUpperModuleCount_NegativeValue_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -660,7 +660,7 @@ public void GetUpperModuleCountShouldCallExpectedMethodAndThrowOnNegativeValue(i } [Test, AutoData] - public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) + public void LoadIntoMetaModuleFromMemory_Default_ShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) { var receivedBuffer = Array.Empty(); @@ -685,7 +685,7 @@ public void LoadIntoMetaModuleFromMemoryShouldCallExpectedMethod(int slotId, int } [Test, AutoData] - public void LoadIntoMetaModuleFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, byte[] buffer) + public void LoadIntoMetaModuleFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, byte[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -700,7 +700,7 @@ public void LoadIntoMetaModuleFromMemoryShouldThrowOnNonZeroReturnCode(int slotI } [Test, AutoData] - public void LoadIntoMetaModuleShouldCallExpectedMethod(int slotId, int moduleId, string path) + public void LoadIntoMetaModule_Default_ShouldCallExpectedMethod(int slotId, int moduleId, string path) { var receivedString = string.Empty; @@ -718,7 +718,7 @@ public void LoadIntoMetaModuleShouldCallExpectedMethod(int slotId, int moduleId, } [Test, AutoData] - public void LoadIntoMetaModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string path) + public void LoadIntoMetaModule_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -732,7 +732,7 @@ public void LoadIntoMetaModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCod } [Test, AutoData] - public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) + public void LoadIntoVorbisPlayerFromMemory_Default_ShouldCallExpectedMethod(int slotId, int moduleId, byte[] buffer) { var receivedBuffer = Array.Empty(); @@ -757,7 +757,7 @@ public void LoadIntoVorbisPLayerFromMemoryShouldCallExpectedMethod(int slotId, i } [Test, AutoData] - public void LoadIntoVorbisPLayerFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, byte[] buffer) + public void LoadIntoVorbisPlayerFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, byte[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -772,7 +772,7 @@ public void LoadIntoVorbisPLayerFromMemoryShouldThrowOnNonZeroReturnCode(int slo } [Test, AutoData] - public void LoadIntoVorbisPLayerShouldCallExpectedMethod(int slotId, int moduleId, string path) + public void LoadIntoVorbisPlayer_Default_ShouldCallExpectedMethod(int slotId, int moduleId, string path) { var receivedString = string.Empty; @@ -790,7 +790,7 @@ public void LoadIntoVorbisPLayerShouldCallExpectedMethod(int slotId, int moduleI } [Test, AutoData] - public void LoadIntoVorbisPLayerShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string path) + public void LoadIntoVorbisPlayer_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -804,7 +804,7 @@ public void LoadIntoVorbisPLayerShouldCallExpectedMethodAndThrowOnNonZeroReturnC } [Test, AutoData] - public void LoadModuleFromMemoryShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, byte[] buffer) + public void LoadModuleFromMemory_Default_ShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, byte[] buffer) { var receivedBuffer = Array.Empty(); @@ -828,7 +828,7 @@ public void LoadModuleFromMemoryShouldCallExpectedMethod(int x, int y, int z, in } [Test, AutoData] - public void LoadModuleFromMemoryShouldThrowOnNonZeroReturnCode(int x, int y, int z, int slotId, byte[] buffer) + public void LoadModuleFromMemory_NonZeroReturnCode_ShouldThrow(int x, int y, int z, int slotId, byte[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -843,7 +843,7 @@ public void LoadModuleFromMemoryShouldThrowOnNonZeroReturnCode(int x, int y, int } [Test, AutoData] - public void LoadModuleShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, string path) + public void LoadModule_Default_ShouldCallExpectedMethod(int x, int y, int z, int slotId, int newModuleId, string path) { var receivedString = string.Empty; @@ -863,7 +863,7 @@ public void LoadModuleShouldCallExpectedMethod(int x, int y, int z, int slotId, } [Test, AutoData] - public void LoadModuleShouldThrowOnNonZeroReturnCode(int x, int y, int z, int slotId, string path) + public void LoadModule_NonZeroReturnCode_ShouldThrow(int x, int y, int z, int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -878,7 +878,7 @@ public void LoadModuleShouldThrowOnNonZeroReturnCode(int x, int y, int z, int sl } [Test, AutoData] - public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, byte[] buffer) + public void LoadSamplerSampleFromMemory_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, byte[] buffer) { var receivedBuffer = Array.Empty(); @@ -903,7 +903,7 @@ public void LoadSamplerSampleFromMemoryShouldCallExpectedMethod(int slotId, int } [Test, AutoData] - public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int sampleSlot, byte[] buffer) + public void LoadSamplerSampleFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int sampleSlot, byte[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -920,7 +920,7 @@ public void LoadSamplerSampleFromMemoryShouldThrowOnNonZeroReturnCode(int slotId } [Test, AutoData] - public void LoadSamplerSampleShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, string path) + public void LoadSamplerSample_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, string path) { var receivedString = string.Empty; @@ -936,7 +936,7 @@ public void LoadSamplerSampleShouldCallExpectedMethod(int slotId, int moduleId, } [Test, AutoData] - public void LoadSamplerSampleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int sampleSlot, string path) + public void LoadSamplerSample_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int sampleSlot, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -950,7 +950,7 @@ public void LoadSamplerSampleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode } [Test, AutoData] - public void ReadModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) + public void ReadModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) { var samplesWritten = buffer.Length; @@ -973,7 +973,7 @@ public void ReadModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, in } [Test, AutoData] - public void ReadModuleCurveShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int curveId, float[] buffer) + public void ReadModuleCurve_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int curveId, float[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -988,7 +988,7 @@ public void ReadModuleCurveShouldThrowOnNonZeroReturnCode(int slotId, int module } [Test, AutoData] - public void ReadModuleScopeShouldCallExpectedMethod(int moduleId, int slotId, short[] buffer, uint readSamples, AudioChannel channel) + public void ReadModuleScope_Default_ShouldCallExpectedMethod(int moduleId, int slotId, short[] buffer, uint readSamples, AudioChannel channel) { var receivedBuffer = Array.Empty(); @@ -1017,7 +1017,7 @@ public void ReadModuleScopeShouldCallExpectedMethod(int moduleId, int slotId, sh } [Test, AutoData] - public void RemoveModuleShouldCallExpectedMethod(int slotId, int moduleId) + public void RemoveModule_Default_ShouldCallExpectedMethod(int slotId, int moduleId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1031,7 +1031,7 @@ public void RemoveModuleShouldCallExpectedMethod(int slotId, int moduleId) } [Test, AutoData] - public void RemoveModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId) + public void RemoveModule_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1045,7 +1045,7 @@ public void RemoveModuleShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int } [Test, AutoData] - public void SetModuleColorShouldCallExpectedMethod(byte r, byte g, byte b, int moduleId, int slotId) + public void SetModuleColor_Default_ShouldCallExpectedMethod(byte r, byte g, byte b, int moduleId, int slotId) { var code = r | (g << 8) | (b << 16); @@ -1061,7 +1061,7 @@ public void SetModuleColorShouldCallExpectedMethod(byte r, byte g, byte b, int m } [Test, AutoData] - public void SetModuleColorShouldThrowOnNonZeroReturnCode(byte r, byte g, byte b, int moduleId, int slotId) + public void SetModuleColor_NonZeroReturnCode_ShouldThrow(byte r, byte g, byte b, int moduleId, int slotId) { var code = r | (g << 8) | (b << 16); @@ -1077,7 +1077,7 @@ public void SetModuleColorShouldThrowOnNonZeroReturnCode(byte r, byte g, byte b, } [Test, AutoData] - public void SetModuleControllerValueShouldCallExpectedMethod(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) + public void SetModuleControllerValue_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1092,7 +1092,7 @@ public void SetModuleControllerValueShouldCallExpectedMethod(int slotId, int mod } [Test, AutoData] - public void SetModuleControllerValueShouldCallExpectedMethodAndThrowOnNonZeroCode(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) + public void SetModuleControllerValue_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1107,7 +1107,7 @@ public void SetModuleControllerValueShouldCallExpectedMethodAndThrowOnNonZeroCod } [Test, AutoData] - public void SetModuleFineTuneShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) + public void SetModuleFineTune_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1121,7 +1121,7 @@ public void SetModuleFineTuneShouldCallExpectedMethod(int slotId, int moduleId, } [Test, AutoData] - public void SetModuleFineTuneShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int fineTune) + public void SetModuleFineTune_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1135,7 +1135,7 @@ public void SetModuleFineTuneShouldCallExpectedMethodAndThrowOnNonZeroReturnCode } [Test, AutoData] - public void SetModuleNameShouldCallExpectedMethod(int slotId, int moduleId, string nameToSet) + public void SetModuleName_Default_ShouldCallExpectedMethod(int slotId, int moduleId, string nameToSet) { var receivedString = string.Empty; @@ -1153,7 +1153,7 @@ public void SetModuleNameShouldCallExpectedMethod(int slotId, int moduleId, stri } [Test, AutoData] - public void SetModuleNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, string nameToSet) + public void SetModuleName_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1167,7 +1167,7 @@ public void SetModuleNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int } [Test, AutoData] - public void SetModulePositionShouldCallExpectedMethod(int moduleId, int slotId, short x, short y) + public void SetModulePosition_Default_ShouldCallExpectedMethod(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1180,7 +1180,7 @@ public void SetModulePositionShouldCallExpectedMethod(int moduleId, int slotId, } [Test, AutoData] - public void SetModulePositionShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int moduleId, int slotId, short x, short y) + public void SetModulePosition_NonZeroReturnCode_ShouldThrow(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1194,7 +1194,7 @@ public void SetModulePositionShouldCallExpectedMethodAndThrowOnNonZeroReturnCode } [Test, AutoData] - public void SetModuleRelativeNoteShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) + public void SetModuleRelativeNote_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1208,7 +1208,7 @@ public void SetModuleRelativeNoteShouldCallExpectedMethod(int slotId, int module } [Test, AutoData] - public void SetModuleRelativeNoteShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int moduleId, int fineTune) + public void SetModuleRelativeNote_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1222,7 +1222,7 @@ public void SetModuleRelativeNoteShouldCallExpectedMethodAndThrowOnNonZeroReturn } [Test, AutoData] - public void WriteModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) + public void WriteModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int curveId, float[] buffer) { var samplesWritten = buffer.Length; @@ -1245,7 +1245,7 @@ public void WriteModuleCurveShouldCallExpectedMethod(int slotId, int moduleId, i } [Test, AutoData] - public void WriteModuleCurveShouldThrowOnNonZeroReturnCode(int slotId, int moduleId, int curveId, float[] buffer) + public void WriteModuleCurve_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int curveId, float[] buffer) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs index 020f2c9..f850557 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -462,7 +462,7 @@ public class SunVoxLibNativeWrapperPatternsTests ]; [Test, AutoData] - public void CloneModuleShouldThrowOnNegativeReturnedValue(int slotId, int originalPatternId, int x, int y) + public void ClonePattern_ShouldThrow_WhenNegativeValueReturned(int slotId, int originalPatternId, int x, int y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -478,7 +478,7 @@ public void CloneModuleShouldThrowOnNegativeReturnedValue(int slotId, int origin } [Test, AutoData] - public void ClonePatternShouldCallExpectedMethod(int slotId, int originalPatternId, int x, int y, int newPatternId) + public void ClonePattern_ShouldCallExpectedMethod(int slotId, int originalPatternId, int x, int y, int newPatternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -493,7 +493,7 @@ public void ClonePatternShouldCallExpectedMethod(int slotId, int originalPattern } [Test, AutoData] - public void CreateModuleShouldThrowOnNegativeReturnedValue(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName) + public void CreatePattern_ShouldThrow_WhenNegativeValueReturned(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -509,7 +509,7 @@ public void CreateModuleShouldThrowOnNegativeReturnedValue(int slotId, int x, in } [Test, AutoData] - public void CreatePatternShouldCallExpectedMethod(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName, int newPatternId) + public void CreatePattern_ShouldCallExpectedMethod(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName, int newPatternId) { var receivedPatternName = string.Empty; var library = Substitute.For(); @@ -531,7 +531,7 @@ public void CreatePatternShouldCallExpectedMethod(int slotId, int x, int y, int } [Test, AutoData] - public void CreatePatternShouldCallExpectedMethodWithDefaultValues(int slotId, int x, int y, int tracks, int lines, int newPatternId) + public void CreatePattern_WithDefaultValues_ShouldCallExpectedMethod(int slotId, int x, int y, int tracks, int lines, int newPatternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -548,7 +548,7 @@ public void CreatePatternShouldCallExpectedMethodWithDefaultValues(int slotId, i } [Test, AutoData] - public void FindPatternShouldCallExpectedMethod(int slotId, string patternName, int foundPatternId) + public void FindPattern_ShouldCallExpectedMethod(int slotId, string patternName, int foundPatternId) { var receivedString = string.Empty; var library = Substitute.For(); @@ -567,7 +567,7 @@ public void FindPatternShouldCallExpectedMethod(int slotId, string patternName, } [Test, AutoData] - public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound(int slotId, string patternName) + public void FindPattern_ShouldReturnNull_WhenPatternNotFound(int slotId, string patternName) { var receivedString = string.Empty; var library = Substitute.For(); @@ -586,7 +586,7 @@ public void FindPatternShouldCallExpectedMethodAndReturnNullWhenPatternNotFound( } [Test, AutoData] - public void FindPatternShouldCallExpectedMethodAndThrowOnReturnCodeLessThanNegativeOne(int slotId, string patternName) + public void FindPattern_ShouldThrow_WhenReturnCodeLessThanNegativeOne(int slotId, string patternName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -601,7 +601,7 @@ public void FindPatternShouldCallExpectedMethodAndThrowOnReturnCodeLessThanNegat } [Test, AutoData] - public void GetPatternEventValueShouldCallExpectedMethod(int slotId, int patternId, int track, int line, Column column) + public void GetPatternEventValue_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, Column column) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -616,7 +616,7 @@ public void GetPatternEventValueShouldCallExpectedMethod(int slotId, int pattern } [Test, AutoData] - public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, Column column) + public void GetPatternEventValue_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, Column column) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -633,7 +633,7 @@ public void GetPatternEventValueShouldCallExpectedMethodAndThrowOnNonZeroReturnC [TestCase(true)] [TestCase(false)] - public void GetPatternExistsShouldCallExpectedMethodAndReturnValue(bool exists) + public void GetPatternExists_ShouldReturnValue(bool exists) { var fixture = new Fixture(); var slotId = fixture.Create(); @@ -651,7 +651,7 @@ public void GetPatternExistsShouldCallExpectedMethodAndReturnValue(bool exists) } [Test, AutoData] - public void GetPatternExistsShouldThrowOnErrorReturnCode(int slotId, int patternId) + public void GetPatternExists_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -666,7 +666,7 @@ public void GetPatternExistsShouldThrowOnErrorReturnCode(int slotId, int pattern } [Test, AutoData] - public void GetPatternLinesShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int lines) + public void GetPatternLines_ShouldReturnValue(int slotId, int patternId, int lines) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -681,7 +681,7 @@ public void GetPatternLinesShouldCallExpectedMethodAndReturnValue(int slotId, in } [Test, AutoData] - public void GetPatternLinesShouldThrowOnErrorReturnCode(int slotId, int patternId) + public void GetPatternLines_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -696,7 +696,7 @@ public void GetPatternLinesShouldThrowOnErrorReturnCode(int slotId, int patternI } [Test, AutoData] - public void GetPatternNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(int slotId, int patternId) + public void GetPatternName_ShouldReturnNull_WhenNullPointer(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -710,7 +710,7 @@ public void GetPatternNameShouldCallExpectedMethodAndReturnNullWhenNullPointer(i } [Test, AutoData] - public void GetPatternNameShouldCallExpectedMethodAndReturnString(int slotId, int patternId, string patternName) + public void GetPatternName_ShouldReturnString(int slotId, int patternId, string patternName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -735,7 +735,7 @@ public void GetPatternNameShouldCallExpectedMethodAndReturnString(int slotId, in } [Test, AutoData] - public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int x, int y) + public void GetPatternPosition_ShouldReturnValue(int slotId, int patternId, int x, int y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -752,7 +752,7 @@ public void GetPatternPositionShouldCallExpectedMethodsAndReturnValue(int slotId } [Test, AutoData] - public void GetPatternTracksShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int tracks) + public void GetPatternTracks_ShouldReturnValue(int slotId, int patternId, int tracks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -767,7 +767,7 @@ public void GetPatternTracksShouldCallExpectedMethodAndReturnValue(int slotId, i } [Test, AutoData] - public void GetPatternTracksShouldThrowOnErrorReturnCode(int slotId, int patternId) + public void GetPatternTracks_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -782,7 +782,7 @@ public void GetPatternTracksShouldThrowOnErrorReturnCode(int slotId, int pattern } [Test, AutoData] - public void GetPatternXShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int x) + public void GetPatternX_ShouldReturnValue(int slotId, int patternId, int x) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -797,7 +797,7 @@ public void GetPatternXShouldCallExpectedMethodsAndReturnValue(int slotId, int p } [Test, AutoData] - public void GetPatternYShouldCallExpectedMethodsAndReturnValue(int slotId, int patternId, int y) + public void GetPatternY_ShouldReturnValue(int slotId, int patternId, int y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -812,7 +812,7 @@ public void GetPatternYShouldCallExpectedMethodsAndReturnValue(int slotId, int p } [Test, AutoData] - public void GetUpperPatternCountShouldCallExpectedMethod(int slotId) + public void GetUpperPatternCount_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -826,7 +826,7 @@ public void GetUpperPatternCountShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void GetUpperPatternCountShouldCallExpectedMethodAndThrowOnNegativeReturnCode(int slotId) + public void GetUpperPatternCount_ShouldThrow_WhenNegativeReturnCode(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -841,7 +841,7 @@ public void GetUpperPatternCountShouldCallExpectedMethodAndThrowOnNegativeReturn } [Test, AutoData] - public void RemovePatternShouldCallExpectedMethod(int slotId, int patternId) + public void RemovePattern_ShouldCallExpectedMethod(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -855,7 +855,7 @@ public void RemovePatternShouldCallExpectedMethod(int slotId, int patternId) } [Test, AutoData] - public void RemovePatternShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId) + public void RemovePattern_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -870,7 +870,7 @@ public void RemovePatternShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int } [Test, AutoData] - public void SetPatternNameShouldCallExpectedMethod(int slotId, int patternId, string nameToSet) + public void SetPatternName_ShouldCallExpectedMethod(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -887,7 +887,7 @@ public void SetPatternNameShouldCallExpectedMethod(int slotId, int patternId, st } [Test, AutoData] - public void SetPatternNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(int slotId, int patternId, string nameToSet) + public void SetPatternName_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -901,7 +901,7 @@ public void SetPatternNameShouldCallExpectedMethodAndThrowOnNonZeroReturnCode(in } [Test, AutoData] - public void SetPatternPositionShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int x, int y) + public void SetPatternPosition_ShouldCallExpectedMethod(int slotId, int patternId, int x, int y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -915,7 +915,7 @@ public void SetPatternPositionShouldCallExpectedMethodAndReturnValue(int slotId, } [Test, AutoData] - public void SetPatternPositionShouldThrowOnErrorReturnCode(int slotId, int patternId, int x, int y) + public void SetPatternPosition_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId, int x, int y) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -930,7 +930,7 @@ public void SetPatternPositionShouldThrowOnErrorReturnCode(int slotId, int patte } [Test, AutoData] - public void SetPatternSizeShouldCallExpectedMethodAndReturnValue(int slotId, int patternId, int tracks, int lines) + public void SetPatternSize_ShouldCallExpectedMethod(int slotId, int patternId, int tracks, int lines) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -944,7 +944,7 @@ public void SetPatternSizeShouldCallExpectedMethodAndReturnValue(int slotId, int } [Test, AutoData] - public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValue(int slotId, int patternId) + public void SetPatternSize_WithDefaultValues_ShouldCallExpectedMethod(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -958,7 +958,7 @@ public void SetPatternSizeShouldCallExpectedMethodWithDefaultValuesAndReturnValu } [Test, AutoData] - public void SetPatternSizeShouldThrowOnErrorReturnCode(int slotId, int patternId, int tracks, int lines) + public void SetPatternSize_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId, int tracks, int lines) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -973,7 +973,7 @@ public void SetPatternSizeShouldThrowOnErrorReturnCode(int slotId, int patternId } [Test, AutoData] - public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted, int slotId, int patternId) + public void GetPatternMuted_ShouldReturnValue(bool muted, int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -988,7 +988,7 @@ public void GetPatternMutedShouldCallExpectedMethodAndReturnValue(bool muted, in } [Test, AutoData] - public void SetPatternMutedShouldCallExpectedMethod(bool muted, int slotId, int patternId) + public void SetPatternMuted_ShouldCallExpectedMethod(bool muted, int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1002,7 +1002,7 @@ public void SetPatternMutedShouldCallExpectedMethod(bool muted, int slotId, int } [Test, AutoData] - public void SetPatternEventShouldCallExpectedMethod(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + public void SetPatternEvent_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1018,7 +1018,7 @@ public void SetPatternEventShouldCallExpectedMethod(int slotId, int patternId, i } [Test, AutoData] - public void SetPatternEventShouldThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) + public void SetPatternEvent_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1035,7 +1035,7 @@ public void SetPatternEventShouldThrowOnNonZeroReturnCode(int slotId, int patter } [Test, AutoData] - public void SetPatternEventWithStructShouldCallExpectedMethod(int slotId, int patternId, int track, int line, PatternEvent patternEvent) + public void SetPatternEventWithStruct_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1052,7 +1052,7 @@ public void SetPatternEventWithStructShouldCallExpectedMethod(int slotId, int pa } [Test, AutoData] - public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode(int slotId, int patternId, int track, int line, PatternEvent patternEvent) + public void SetPatternEventWithStruct_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1070,7 +1070,7 @@ public void SetPatternEventWithStructShouldThrowOnNonZeroReturnCode(int slotId, } [Test, AutoData] - public void GetPatternDataReturnsDataAsExpected(int slotId, int patternId) + public void GetPatternData_ShouldReturnData(int slotId, int patternId) { const int lines = 4; const int tracks = 5; @@ -1118,7 +1118,7 @@ public void GetPatternDataReturnsDataAsExpected(int slotId, int patternId) } [Test, AutoData] - public void GetPatternDataReturnsNullWhenLengthEqualsZero(int slotId, int patternId) + public void GetPatternData_ShouldReturnNull_WhenLengthEqualsZero(int slotId, int patternId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1133,7 +1133,7 @@ public void GetPatternDataReturnsNullWhenLengthEqualsZero(int slotId, int patter } [Test, AutoData] - public void GetPatternDataReturnsNullWhenPtrIsNullPtr(int slotId, int patternId) + public void GetPatternData_ShouldReturnNull_WhenPtrIsNullPtr(int slotId, int patternId) { const int lines = 4; const int tracks = 5; @@ -1154,7 +1154,7 @@ public void GetPatternDataReturnsNullWhenPtrIsNullPtr(int slotId, int patternId) } [Test, AutoData] - public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero(int slotId, int patternId) + public void ReadPatternData_ShouldReturnZeroAndNotChangeData_WhenLengthEqualsZero(int slotId, int patternId) { const int readTracks = 2; const int readLines = 3; @@ -1182,7 +1182,7 @@ public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenLengthEqualsZero } [Test, AutoData] - public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) + public void ReadPatternData_ShouldReturnZeroAndNotChangeData_WhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) { const int readTracks = 2; const int readLines = 3; @@ -1212,7 +1212,7 @@ public void ReadPatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(int } [Test, AutoData] - public void WritePatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) + public void WritePatternData_ShouldReturnZeroAndNotChangeData_WhenPtrIsNullPtr(int slotId, int patternId, int lines, int tracks) { const int readTracks = 2; const int readLines = 3; @@ -1242,7 +1242,7 @@ public void WritePatternDataShouldReturnFalseAndNotChangeDataWhenPtrIsNullPtr(in } [Test, AutoData] - public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int slotId, int patternId, int tracksToRead, int linesToRead) + public void ReadPatternData_ShouldThrow_WhenBufferSizeDifferentFromRequestedSize(int slotId, int patternId, int tracksToRead, int linesToRead) { const int tracksInBuffer = 4; const int linesInBuffer = 32; @@ -1270,7 +1270,7 @@ public void ReadPatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int [TestCase(0, -1, 0, 0)] [TestCase(0, 0, -1, 0)] [TestCase(0, 0, 0, -1)] - public void ReadPatternDataShouldThrowIfAnyOffsetValueIsNegative(int bufferOffsetTracks, int bufferOffsetLines, int readOffsetTracks, int readOffsetLines) + public void ReadPatternData_ShouldThrow_WhenAnyOffsetValueIsNegative(int bufferOffsetTracks, int bufferOffsetLines, int readOffsetTracks, int readOffsetLines) { var fixture = new Fixture(); var slotId = fixture.Create(); @@ -1303,7 +1303,7 @@ public void ReadPatternDataShouldThrowIfAnyOffsetValueIsNegative(int bufferOffse [TestCase(2, 2, 0, -1, 0, 0)] [TestCase(2, 2, 0, 0, -1, 0)] [TestCase(2, 2, 0, 0, 0, -1)] - public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTracks, int bufferLines, + public void WritePatternData_ShouldThrow_WhenAnyOffsetValueIsNegative(int bufferTracks, int bufferLines, int bufferOffsetTracks, int bufferOffsetLines, int writeOffsetTracks, int writeOffsetLines) { var fixture = new Fixture(); @@ -1333,7 +1333,7 @@ public void WritePatternDataShouldThrowIfAnyOffsetValeIsNegative(int bufferTrack [TestCase(2, 2, 1, 2)] [TestCase(2, 2, 3, 2)] [TestCase(2, 2, 2, 3)] - public void WritePatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(int tracksToRead, int linesToRead, + public void WritePatternData_ShouldThrow_WhenBufferSizeDifferentFromRequestedSize(int tracksToRead, int linesToRead, int tracksInBuffer, int linesInBuffer) { var fixture = new Fixture(); @@ -1342,9 +1342,7 @@ public void WritePatternDataShouldThrowIfBufferIsDifferentToRequestedDataRead(in var originalData = new PatternEvent[tracksInBuffer * linesInBuffer]; for (var i = 0; i < originalData.Length; i++) { - { - originalData[i] = new PatternEvent((ulong)i); - } + originalData[i] = new PatternEvent((ulong)i); } var buffer = (PatternEvent[])originalData.Clone(); @@ -1376,7 +1374,7 @@ private static void PrintPatternEventCollection(PatternEvent[] collection, int t } [TestCaseSource(nameof(PatternDataCases))] - public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) + public void ReadPatternData_ShouldWorkAsExpected(PatternDataCase testCase) { var fixture = new Fixture(); var slotId = fixture.Create(); @@ -1416,7 +1414,7 @@ public void ReadPatternDataShouldWorkAsExpected(PatternDataCase testCase) } [TestCaseSource(nameof(PatternDataCases))] - public void WritePatternDataShouldWorkAsExpected(PatternDataCase testCase) + public void WritePatternData_ShouldWorkAsExpected(PatternDataCase testCase) { var fixture = new Fixture(); var slotId = fixture.Create(); @@ -1456,7 +1454,7 @@ public void WritePatternDataShouldWorkAsExpected(PatternDataCase testCase) } [Test, AutoData] - public void SetPatternDataShouldSetDataAsExpected(int slotId, int patternId) + public void SetPatternData_ShouldSetData(int slotId, int patternId) { const int tracks = 4; const int lines = 32; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index c58f6de..e8bf4a9 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -9,7 +9,7 @@ public class SunVoxLibNativeWrapperTests public const int ErrorResponseCode = -1; [Test, AutoData] - public void CloseSlotShouldCallExpectedMethod(int slotId) + public void CloseSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -23,7 +23,7 @@ public void CloseSlotShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void CloseSlotShouldThrowOnNonZeroReturnCode(int slotId) + public void CloseSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -37,7 +37,7 @@ public void CloseSlotShouldThrowOnNonZeroReturnCode(int slotId) } [Test] - public void DeinitializeShouldCallDeinitAsExpected() + public void Deinitialize_ShouldCallDeinitAsExpected() { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -52,7 +52,7 @@ public void DeinitializeShouldCallDeinitAsExpected() } [Test] - public void DeinitializeShouldThrowExceptionOnNonzeroCode() + public void Deinitialize_OnNonzeroCode_ShouldThrow() { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -67,7 +67,7 @@ public void DeinitializeShouldThrowExceptionOnNonzeroCode() } [Test, AutoData] - public void GetAutomaticStopShouldReturnValue(bool automaticStop, int slotId) + public void GetAutomaticStop_ShouldReturnValue(bool automaticStop, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -82,7 +82,7 @@ public void GetAutomaticStopShouldReturnValue(bool automaticStop, int slotId) } [Test, AutoData] - public void GetAutomaticStopShouldThrowOnInvalidValue(int slotId) + public void GetAutomaticStop_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -96,7 +96,7 @@ public void GetAutomaticStopShouldThrowOnInvalidValue(int slotId) } [Test, AutoData] - public void GetCurrentLineShouldReturnValue(int currentLine, int slotId) + public void GetCurrentLine_ShouldReturnValue(int currentLine, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -111,7 +111,7 @@ public void GetCurrentLineShouldReturnValue(int currentLine, int slotId) } [Test, AutoData] - public void GetCurrentLineWithTenthPartShouldReturnValue(int currentLineWithTenthPart, int slotId) + public void GetCurrentLineWithTenthPart_ShouldReturnValue(int currentLineWithTenthPart, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -126,7 +126,7 @@ public void GetCurrentLineWithTenthPartShouldReturnValue(int currentLineWithTent } [Test, AutoData] - public void GetCurrentSignalLevelShouldReturnValue(int signalLevel, int slotId, int channelId) + public void GetCurrentSignalLevel_ShouldReturnValue(int signalLevel, int slotId, int channelId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -141,7 +141,7 @@ public void GetCurrentSignalLevelShouldReturnValue(int signalLevel, int slotId, } [Test, AutoData] - public void GetLogsShouldReturnNullForNullPtr(int slotId) + public void GetLog_OnNullPtr_ShouldReturnNull(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -156,7 +156,7 @@ public void GetLogsShouldReturnNullForNullPtr(int slotId) } [Test, AutoData] - public void GetLogsShouldReturnStringForValidPointer(string log) + public void GetLog_OnValidPointer_ShouldReturnString(string log) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -171,7 +171,7 @@ public void GetLogsShouldReturnStringForValidPointer(string log) } [Test, AutoData] - public void GetSampleRateShouldReturnValue(int ticks) + public void GetSampleRate_ShouldReturnValue(int ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -186,7 +186,7 @@ public void GetSampleRateShouldReturnValue(int ticks) [TestCase(0)] [TestCase(-1)] - public void GetSampleRateShouldThrowOnNonsenseValue(int sampleRate) + public void GetSampleRate_OnNonsenseValue_ShouldThrow(int sampleRate) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -197,7 +197,7 @@ public void GetSampleRateShouldThrowOnNonsenseValue(int sampleRate) } [Test, AutoData] - public void GetSongBpmShouldReturnValue(int songBpm, int slotId) + public void GetSongBpm_ShouldReturnValue(int songBpm, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -212,7 +212,7 @@ public void GetSongBpmShouldReturnValue(int songBpm, int slotId) } [Test, AutoData] - public void GetSongBpmShouldThrowOnInvalidValue(int slotId) + public void GetSongBpm_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -226,7 +226,7 @@ public void GetSongBpmShouldThrowOnInvalidValue(int slotId) } [Test, AutoData] - public void GetSongLengthInFramesShouldReturnValue(uint songLength, int slotId) + public void GetSongLengthInFrames_ShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -241,7 +241,7 @@ public void GetSongLengthInFramesShouldReturnValue(uint songLength, int slotId) } [Test, AutoData] - public void GetSongLengthInLinesShouldReturnValue(uint songLength, int slotId) + public void GetSongLengthInLines_ShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -256,7 +256,7 @@ public void GetSongLengthInLinesShouldReturnValue(uint songLength, int slotId) } [Test, AutoData] - public void GetSongNameShouldReturnNullOnNullPtr(int slotId) + public void GetSongName_OnNullPtr_ShouldReturnNull(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -272,7 +272,7 @@ public void GetSongNameShouldReturnNullOnNullPtr(int slotId) } [Test, AutoData] - public void GetSongNameShouldReturnValue(string songName, int slotId) + public void GetSongName_ShouldReturnValue(string songName, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -295,7 +295,7 @@ public void GetSongNameShouldReturnValue(string songName, int slotId) } [Test, AutoData] - public void GetSongTplShouldReturnValue(int songTpl, int slotId) + public void GetSongTpl_ShouldReturnValue(int songTpl, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -310,7 +310,7 @@ public void GetSongTplShouldReturnValue(int songTpl, int slotId) } [Test, AutoData] - public void GetSongTplShouldThrowOnInvalidValue(int slotId) + public void GetSongTpl_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -324,7 +324,7 @@ public void GetSongTplShouldThrowOnInvalidValue(int slotId) } [Test, AutoData] - public void GetTicksPerSecondShouldReturnValue(uint ticks) + public void GetTicksPerSecond_ShouldReturnValue(uint ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -338,7 +338,7 @@ public void GetTicksPerSecondShouldReturnValue(uint ticks) } [Test, AutoData] - public void GetTicksShouldReturnValue(uint ticks) + public void GetTicks_ShouldReturnValue(uint ticks) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -352,7 +352,7 @@ public void GetTicksShouldReturnValue(uint ticks) } [Test, AutoData] - public void GetTimeMapShouldReturnExpectedValue(int slotId, int startLine, TimeMapType mapType) + public void GetTimeMap_ShouldReturnExpectedValue(int slotId, int startLine, TimeMapType mapType) { const int length = 32; var library = Substitute.For(); @@ -380,7 +380,7 @@ public void GetTimeMapShouldReturnExpectedValue(int slotId, int startLine, TimeM } [Test, AutoData] - public void GetTimeMapShouldThrowOnNonZeroReturnCode(int slotId, int startLine, int length, TimeMapType mapType) + public void GetTimeMap_OnNonZeroReturnCode_ShouldThrow(int slotId, int startLine, int length, TimeMapType mapType) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -394,7 +394,7 @@ public void GetTimeMapShouldThrowOnNonZeroReturnCode(int slotId, int startLine, } [Test, AutoData] - public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) + public void Initialize_OnUnhandledValue_ShouldThrow(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -410,7 +410,7 @@ public void InitializeShouldCallInitAndThrowExceptionOnUnhandledValue(int sample } [Test, AutoData] - public void InitializeShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) + public void Initialize_ShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -433,7 +433,7 @@ public void InitializeShouldCallInitAsExpected(int sampleRate, string config, Au } [Test, AutoData] - public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) + public void Initialize_WithNullConfig_ShouldCallInitAsExpected(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -451,7 +451,7 @@ public void InitializeShouldCallInitAsExpectedWithNullConfig(int sampleRate, Aud } [Test, AutoData] - public void IsPlayingShouldReturnExpectedValue(bool isPlaying, int slotId) + public void IsPlaying_ShouldReturnExpectedValue(bool isPlaying, int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -466,7 +466,7 @@ public void IsPlayingShouldReturnExpectedValue(bool isPlaying, int slotId) } [Test, AutoData] - public void IsPlayingShouldThrowOnUnexpectedValue(int slotId) + public void IsPlaying_OnUnexpectedValue_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -480,7 +480,7 @@ public void IsPlayingShouldThrowOnUnexpectedValue(int slotId) } [Test, AutoData] - public void LoadFromMemoryShouldCallExpectedMethods(int slotId, byte[] data) + public void LoadFromMemory_ShouldCallExpectedMethods(int slotId, byte[] data) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -502,7 +502,7 @@ public void LoadFromMemoryShouldCallExpectedMethods(int slotId, byte[] data) } [Test, AutoData] - public void LoadFromMemoryShouldThrowOnNonzeroReturnCode(int slotId, byte[] data) + public void LoadFromMemory_OnNonzeroReturnCode_ShouldThrow(int slotId, byte[] data) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -516,7 +516,7 @@ public void LoadFromMemoryShouldThrowOnNonzeroReturnCode(int slotId, byte[] data } [Test, AutoData] - public void LoadShouldCallExpectedMethods(int slotId, string path) + public void Load_ShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -534,7 +534,7 @@ public void LoadShouldCallExpectedMethods(int slotId, string path) } [Test, AutoData] - public void LoadShouldThrowOnNonzeroReturnCode(int slotId, string fileName) + public void Load_OnNonzeroReturnCode_ShouldThrow(int slotId, string fileName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -548,7 +548,7 @@ public void LoadShouldThrowOnNonzeroReturnCode(int slotId, string fileName) } [Test, AutoData] - public void LockSlotShouldCallExpectedMethod(int slotId) + public void LockSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -562,7 +562,7 @@ public void LockSlotShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void LockSlotShouldThrowOnNonZeroReturnCode(int slotId) + public void LockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -576,7 +576,7 @@ public void LockSlotShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void OpenSlotShouldCallExpectedMethod(int slotId) + public void OpenSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -590,7 +590,7 @@ public void OpenSlotShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void OpenSlotShouldThrowOnNonZeroReturnCode(int slotId) + public void OpenSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -604,7 +604,7 @@ public void OpenSlotShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void PauseStreamShouldCallExpectedMethod(int slotId) + public void PauseAudioStream_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -618,7 +618,7 @@ public void PauseStreamShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void PauseStreamShouldThrowOnNonZeroReturnCode(int slotId) + public void PauseAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -632,7 +632,7 @@ public void PauseStreamShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void ResumeStreamOnSyncEffectShouldCallMethod(int slotId) + public void ResumeStreamOnSyncEffect_ShouldCallMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -646,7 +646,7 @@ public void ResumeStreamOnSyncEffectShouldCallMethod(int slotId) } [Test, AutoData] - public void ResumeStreamOnSyncEffectShouldThrowOnNonZeroReturnCode(int slotId) + public void ResumeStreamOnSyncEffect_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -660,7 +660,7 @@ public void ResumeStreamOnSyncEffectShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void ResumeStreamShouldCallExpectedMethod(int slotId) + public void ResumeAudioStream_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -674,7 +674,7 @@ public void ResumeStreamShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void ResumeStreamShouldThrowOnNonZeroReturnCode(int slotId) + public void ResumeAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -688,7 +688,7 @@ public void ResumeStreamShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void RewindShouldCallExpectedMethod(int slotId, int line) + public void Rewind_ShouldCallExpectedMethod(int slotId, int line) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -702,7 +702,7 @@ public void RewindShouldCallExpectedMethod(int slotId, int line) } [Test, AutoData] - public void RewindShouldThrowOnNonZeroReturnCode(int slotId, int line) + public void Rewind_OnNonZeroReturnCode_ShouldThrow(int slotId, int line) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -716,7 +716,7 @@ public void RewindShouldThrowOnNonZeroReturnCode(int slotId, int line) } [Test, AutoData] - public void SaveShouldCallExpectedMethods(int slotId, string path) + public void Save_ShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -734,7 +734,7 @@ public void SaveShouldCallExpectedMethods(int slotId, string path) } [Test, AutoData] - public void SaveShouldThrowOnUnexpectedReturnCode(int slotId, string path) + public void Save_OnUnexpectedReturnCode_ShouldThrow(int slotId, string path) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -749,7 +749,7 @@ public void SaveShouldThrowOnUnexpectedReturnCode(int slotId, string path) } [Test, AutoData] - public void SendEventWithPatternEventStructShouldSendArgumentsAsExpected(int slotId, int track, PatternEvent patternEvent) + public void SendEvent_WithPatternEventStruct_ShouldSendArgumentsAsExpected(int slotId, int track, PatternEvent patternEvent) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -764,7 +764,7 @@ public void SendEventWithPatternEventStructShouldSendArgumentsAsExpected(int slo } [Test, AutoData] - public void SendEventWithRawDataShouldSendArgumentsAsExpected(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) + public void SendEvent_WithRawData_ShouldSendArgumentsAsExpected(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -779,7 +779,7 @@ public void SendEventWithRawDataShouldSendArgumentsAsExpected(int slotId, int tr } [Test, AutoData] - public void SendEventWithPatternEventShouldThrowException(int slotId, int track, PatternEvent patternEvent) + public void SendEvent_WithPatternEvent_ShouldThrow(int slotId, int track, PatternEvent patternEvent) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -793,7 +793,7 @@ public void SendEventWithPatternEventShouldThrowException(int slotId, int track, } [Test, AutoData] - public void SendEventWithRawDataShouldThrowException(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) + public void SendEvent_WithRawData_ShouldThrow(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -807,7 +807,7 @@ public void SendEventWithRawDataShouldThrowException(int slotId, int track, int [TestCase(true)] [TestCase(false)] - public void SetAutoStopShouldCallWithArgument(bool autoStop) + public void SetAutomaticStop_ShouldCallWithArgument(bool autoStop) { var fixture = new Fixture(); var library = Substitute.For(); @@ -823,7 +823,7 @@ public void SetAutoStopShouldCallWithArgument(bool autoStop) } [Test, AutoData] - public void SetAutoStopShouldThrowOnInvalidReturnCode(int slotId) + public void SetAutomaticStop_OnInvalidReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -838,7 +838,7 @@ public void SetAutoStopShouldThrowOnInvalidReturnCode(int slotId) [TestCase(true)] [TestCase(false)] - public void SetSendEventTimestampShouldCallWithArgument(bool reset) + public void SetSendEventTimestamp_ShouldCallWithArgument(bool reset) { var fixture = new Fixture(); var library = Substitute.For(); @@ -855,7 +855,7 @@ public void SetSendEventTimestampShouldCallWithArgument(bool reset) } [Test, AutoData] - public void SetSendEventTimestampShouldThrowOnInvalidReturnCode(int slotId, int t) + public void SetSendEventTimestamp_OnInvalidReturnCode_ShouldThrow(int slotId, int t) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -869,7 +869,7 @@ public void SetSendEventTimestampShouldThrowOnInvalidReturnCode(int slotId, int } [Test, AutoData] - public void SetSongNameShouldSendString(int slotId, string newSongName) + public void SetSongName_ShouldSendString(int slotId, string newSongName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -887,7 +887,7 @@ public void SetSongNameShouldSendString(int slotId, string newSongName) } [Test, AutoData] - public void SetSongNameShouldThrowExceptionOnNonzeroReturnCode(int slotId, string newSongName) + public void SetSongName_OnNonzeroReturnCode_ShouldThrow(int slotId, string newSongName) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -902,7 +902,7 @@ public void SetSongNameShouldThrowExceptionOnNonzeroReturnCode(int slotId, strin } [Test, AutoData] - public void StartPlaybackFromBeginningShouldCallExpectedMethod(int slotId) + public void StartPlaybackFromBeginning_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -916,7 +916,7 @@ public void StartPlaybackFromBeginningShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void StartPlaybackFromBeginningShouldThrowOnNonZeroReturnCode(int slotId) + public void StartPlaybackFromBeginning_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -930,7 +930,7 @@ public void StartPlaybackFromBeginningShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void StartPlaybackShouldCallExpectedMethod(int slotId) + public void StartPlayback_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -944,7 +944,7 @@ public void StartPlaybackShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void StartPlaybackShouldThrowOnNonZeroReturnCode(int slotId) + public void StartPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -958,7 +958,7 @@ public void StartPlaybackShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void StopPlaybackShouldCallMethod(int slotId) + public void StopPlayback_ShouldCallMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -972,7 +972,7 @@ public void StopPlaybackShouldCallMethod(int slotId) } [Test, AutoData] - public void StopPlaybackShouldThrowOnNonZeroReturnCode(int slotId) + public void StopPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -986,7 +986,7 @@ public void StopPlaybackShouldThrowOnNonZeroReturnCode(int slotId) } [Test, AutoData] - public void UnlockSlotShouldCallExpectedMethod(int slotId) + public void UnlockSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1000,7 +1000,7 @@ public void UnlockSlotShouldCallExpectedMethod(int slotId) } [Test, AutoData] - public void UnlockSlotShouldThrowOnNonZeroReturnCode(int slotId) + public void UnlockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1014,7 +1014,7 @@ public void UnlockSlotShouldThrowOnNonZeroReturnCode(int slotId) } [Test] - public void UpdateInputDevicesShouldCallExpectedMethod() + public void UpdateInputDevices_ShouldCallExpectedMethod() { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1028,7 +1028,7 @@ public void UpdateInputDevicesShouldCallExpectedMethod() } [Test] - public void UpdateInputDevicesShouldThrowOnNonZeroReturnCode() + public void UpdateInputDevices_OnNonZeroReturnCode_ShouldThrow() { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1039,7 +1039,7 @@ public void UpdateInputDevicesShouldThrowOnNonZeroReturnCode() } [Test, AutoData] - public void VolumeShouldReturnExpectedValue(int slotId, int volume, int otherVolume) + public void Volume_ShouldReturnExpectedValue(int slotId, int volume, int otherVolume) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -1054,7 +1054,7 @@ public void VolumeShouldReturnExpectedValue(int slotId, int volume, int otherVol } [Test, AutoData] - public void VolumeShouldThrowOnNonZeroReturnCode(int slotId, int otherVolume) + public void Volume_OnNonZeroReturnCode_ShouldThrow(int slotId, int otherVolume) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs index 8867e28..2c6bf48 100644 --- a/SunSharp.Tests/NoteTests.cs +++ b/SunSharp.Tests/NoteTests.cs @@ -2,22 +2,6 @@ namespace SunSharp.Tests; public class NoteTests { - public static TestCaseData[] TestCases => - [ - new(new Note(NoteName.C, 0), "C0"), - new(new Note(NoteName.Cs, 0), "c0"), - new(new Note(NoteName.G, 3), "G3"), - new(Note.AllNotesOff, "-!"), - new(Note.Off, "--"), - new(Note.Play, "P!"), - new(Note.SetPitch, "SP"), - new(Note.Stop, "S!"), - new(Note.Silence, " "), - new(Note.CleanSynths, "CS"), - new(Note.CleanModule, "CM"), - new(new Note(255), "??") - ]; - [TestCase(NoteName.A, 'A')] [TestCase(NoteName.As, 'a')] [TestCase(NoteName.B, 'B')] @@ -32,9 +16,9 @@ public class NoteTests [TestCase(NoteName.Gs, 'g')] [TestCase(NoteName.Other, '?')] [TestCase((NoteName)(-1), '?')] - public void GetNoteCharacterShouldReturnExpectedValue(NoteName argument, char expectedValue) + public void GetNoteCharacterAsDisplayed_ShouldReturnExpectedValue(NoteName argument, char expectedValue) { - var value = argument.GetNoteCharacter(); + var value = argument.GetNoteCharacterAsDisplayed(); value.Should().Be(expectedValue); } @@ -48,7 +32,7 @@ public void GetNoteCharacterShouldReturnExpectedValue(NoteName argument, char ex [TestCase(127, NoteName.Fs)] [TestCase(128, NoteName.Other)] [TestCase(129, NoteName.Other)] - public void NoteNameGetterShouldReturnExpectedValue(byte noteValue, NoteName expectedValue) + public void NameGetter_ShouldReturnExpectedValue(byte noteValue, NoteName expectedValue) { var note = new Note(noteValue); var value = note.Name; @@ -56,10 +40,11 @@ public void NoteNameGetterShouldReturnExpectedValue(byte noteValue, NoteName exp } [TestCase(NoteName.C, 0, 1)] + [TestCase(NoteName.Cb, 1, 12)] [TestCase(NoteName.Cs, 0, 2)] [TestCase(NoteName.C, 1, 13)] [TestCase(NoteName.Fs, 10, 127)] - public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName name, int octave, byte expectedValue) + public void Constructor_FromOctaveAndName_ShouldReturnExpectedValue(NoteName name, int octave, byte expectedValue) { var note = new Note(name, octave); var value = note.Value; @@ -71,17 +56,18 @@ public void NoteConstructorFromOctaveAndNameShouldReturnExpectedValue(NoteName n [TestCase(NoteName.C, -1)] [TestCase(NoteName.C, 13)] [TestCase(NoteName.G, 10)] - public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidArguments(NoteName name, int octave) + [TestCase(NoteName.Cb, 0)] + public void NoteConstructor_FromOctaveAndName_ShouldThrowOnInvalidArguments(NoteName name, int octave) { var action = () => _ = new Note(name, octave); action.Invoking(a => a()) - .Should().Throw(); + .Should().Throw(); } [TestCase(NoteName.Other)] [TestCase((NoteName)(-1))] [TestCase((NoteName)13)] - public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidNoteName(NoteName name) + public void NoteConstructor_FromOctaveAndName_ShouldThrowOnInvalidNoteName(NoteName name) { var action = () => _ = new Note(name, 1); action.Invoking(a => a()) @@ -89,39 +75,77 @@ public void NoteConstructorFromOctaveAndNameShouldThrowOnInvalidNoteName(NoteNam } [Test] - public void NotePropertiesShouldReturnValidValuesForSpecialCases() + public void SpecialProperties_ShouldReturnValueAsExpected() { - Note.AllNotesOff.IsAllNotesOff.Should().BeTrue(); - Note.Off.IsNoteOff.Should().BeTrue(); - Note.Play.IsPlay.Should().BeTrue(); - Note.SetPitch.IsSetPitch.Should().BeTrue(); - Note.Stop.IsStop.Should().BeTrue(); - Note.Silence.IsSilence.Should().BeTrue(); - Note.CleanSynths.IsCleanSynths.Should().BeTrue(); - Note.CleanModule.IsCleanModule.Should().BeTrue(); + var normalNote = new Note(NoteName.E, 5); - Note.Silence.IsNormal.Should().BeFalse(); - Note.SetPitch.IsNormal.Should().BeFalse(); - Note.Stop.IsNormal.Should().BeFalse(); + Note.AllNotesOff.IsAllNotesOff.Should().BeTrue(); Note.AllNotesOff.Octave.Should().Be(-1); Note.AllNotesOff.Name.Should().Be(NoteName.Other); - - var normalNote = new Note(NoteName.E, 5); + Note.AllNotesOff.IsMusicalNote.Should().BeFalse(); normalNote.IsAllNotesOff.Should().BeFalse(); + + Note.Off.IsNoteOff.Should().BeTrue(); + Note.Off.Octave.Should().Be(-1); + Note.Off.Name.Should().Be(NoteName.Other); + Note.Off.IsMusicalNote.Should().BeFalse(); normalNote.IsNoteOff.Should().BeFalse(); + + Note.Play.IsPlay.Should().BeTrue(); + Note.Play.Octave.Should().Be(-1); + Note.Play.Name.Should().Be(NoteName.Other); + Note.Play.IsMusicalNote.Should().BeFalse(); normalNote.IsPlay.Should().BeFalse(); + + Note.SetPitch.IsSetPitch.Should().BeTrue(); + Note.SetPitch.Octave.Should().Be(-1); + Note.SetPitch.Name.Should().Be(NoteName.Other); + Note.SetPitch.IsMusicalNote.Should().BeFalse(); normalNote.IsSetPitch.Should().BeFalse(); + + Note.Stop.IsStop.Should().BeTrue(); + Note.Stop.Octave.Should().Be(-1); + Note.Stop.Name.Should().Be(NoteName.Other); + Note.Stop.IsMusicalNote.Should().BeFalse(); normalNote.IsStop.Should().BeFalse(); - normalNote.IsSilence.Should().BeFalse(); + + Note.Nothing.IsNothing.Should().BeTrue(); + Note.Nothing.Octave.Should().Be(-1); + Note.Nothing.Name.Should().Be(NoteName.Other); + Note.Nothing.IsMusicalNote.Should().BeFalse(); + normalNote.IsNothing.Should().BeFalse(); + + Note.CleanSynths.IsCleanSynths.Should().BeTrue(); + Note.CleanSynths.Octave.Should().Be(-1); + Note.CleanSynths.Name.Should().Be(NoteName.Other); + Note.CleanSynths.IsMusicalNote.Should().BeFalse(); normalNote.IsCleanSynths.Should().BeFalse(); + + Note.CleanModule.IsCleanModule.Should().BeTrue(); + Note.CleanModule.Octave.Should().Be(-1); + Note.CleanModule.Name.Should().Be(NoteName.Other); + Note.CleanModule.IsMusicalNote.Should().BeFalse(); normalNote.IsCleanModule.Should().BeFalse(); - normalNote.IsNormal.Should().BeTrue(); - normalNote.Octave.Should().Be(5); - normalNote.Name.Should().Be(NoteName.E); } + public static TestCaseData[] TestCases => + [ + new(new Note(NoteName.C, 0), "C0"), + new(new Note(NoteName.Cs, 0), "c0"), + new(new Note(NoteName.G, 3), "G3"), + new(Note.AllNotesOff, "-!"), + new(Note.Off, "--"), + new(Note.Play, "P!"), + new(Note.SetPitch, "SP"), + new(Note.Stop, "S!"), + new(Note.Nothing, " "), + new(Note.CleanSynths, "CS"), + new(Note.CleanModule, "CM"), + new(new Note(255), "??") + ]; + [TestCaseSource(nameof(TestCases))] - public void NoteToStringShouldReturnExpectedValues(Note note, string expectedValue) + public void ToString_ShouldReturnExpectedValue(Note note, string expectedValue) { note.ToString().Should().Be(expectedValue); } @@ -130,7 +154,7 @@ public void NoteToStringShouldReturnExpectedValues(Note note, string expectedVal [TestCase(255)] [TestCase(10)] [TestCase(128)] - public void NoteImplicitConversionShouldSetDataAsExpected(byte value) + public void ImplicitConversion_ShouldSetDataAsExpected(byte value) { var note = (Note)value; var otherValue = (byte)note; @@ -139,7 +163,7 @@ public void NoteImplicitConversionShouldSetDataAsExpected(byte value) } [Test] - public void NoteEqualityComparisonShouldJustWork() + public void EqualityComparison_ShouldJustWork() { var a = new Note(1); var b = new Note(1); @@ -166,7 +190,7 @@ public void NoteEqualityComparisonShouldJustWork() } [Test] - public void NoteGetHashCodeShouldPreserveComparability() + public void GetHashCode_ShouldPreserveComparability() { var a = new Note(1); var b = new Note(1); diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index 3efde74..143ee4a 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -2,17 +2,6 @@ namespace SunSharp.Tests; public class PatternEventTests { - public static TestCaseData[] TestCases => - [ - new(new PatternEvent(), " "), - new(new PatternEvent(new Note(NoteName.C, 4), 0x80, 1), "C4800001 "), - new(new PatternEvent(0, 1), " 0001"), - new(new PatternEvent(Effect.Arpeggio, 0x0704), " 080704"), - new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), - new(new PatternEvent(Note.Off), "-- "), - new(new PatternEvent(Note.AllNotesOff), "-! ") - ]; - private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte velocity = 0, ushort module = 0, byte controller = 0, byte effect = 0, ushort xxyy = 0) { @@ -25,7 +14,7 @@ private static ulong ConstructBinaryPatternEventValue(byte note = 0, byte veloci } [Test] - public void PatternEventConstructorFromBinaryDataShouldSetValuesAsExpected() + public void Constructor_FromBinaryData_ShouldSetValuesAsExpected() { const byte note = 0x12; const byte velocity = 0x95; @@ -53,7 +42,7 @@ public void PatternEventConstructorFromBinaryDataShouldSetValuesAsExpected() } [Test] - public void PatternEventConstructorForEffectShouldSetValuesAsExpected() + public void Constructor_ForEffect_ShouldSetValuesAsExpected() { const byte effect = 0x95; const ushort xxyy = 0x1010; @@ -61,7 +50,7 @@ public void PatternEventConstructorForEffectShouldSetValuesAsExpected() const ushort yy = (xxyy >> 8) & 0xFF; var binaryValue = ConstructBinaryPatternEventValue(effect: effect, xxyy: xxyy); - var patternEvent = new PatternEvent((Effect)effect, xxyy); + var patternEvent = new PatternEvent(0, 0, 0, 0, effect, xxyy); patternEvent.Data.Should().Be(binaryValue); patternEvent.NN.Should().Be(0); @@ -77,14 +66,14 @@ public void PatternEventConstructorForEffectShouldSetValuesAsExpected() } [Test] - public void PatternEventConstructorForNoteShouldSetValuesAsExpected() + public void Constructor_ForNote_ShouldSetValuesAsExpected() { const byte note = 0x12; const byte velocity = 0x95; const ushort module = 0xd93e; var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module); - var patternEvent = new PatternEvent(note, velocity, module); + var patternEvent = new PatternEvent(note, velocity, module, 0, 0, 0); patternEvent.Data.Should().Be(binaryValue); patternEvent.NN.Should().Be(note); @@ -100,7 +89,7 @@ public void PatternEventConstructorForNoteShouldSetValuesAsExpected() } [Test] - public void PatternEventConstructorWithAllParametersShouldSetValuesAsExpected() + public void Constructor_WithAllParameters_ShouldSetValuesAsExpected() { const byte note = 0x12; const byte velocity = 0x95; @@ -128,7 +117,7 @@ public void PatternEventConstructorWithAllParametersShouldSetValuesAsExpected() } [Test] - public void PatternEventConstructorWithAllParametersWithSpecifiedTypesShouldSetValuesAsExpected() + public void Constructor_WithAllParametersWithSpecifiedTypes_ShouldSetValuesAsExpected() { const byte note = 0x12; const byte velocity = 0x95; @@ -140,7 +129,7 @@ public void PatternEventConstructorWithAllParametersWithSpecifiedTypesShouldSetV const ushort yy = (xxyy >> 8) & 0xFF; var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); - var patternEvent = new PatternEvent(note, velocity, module, controller, (Effect)effect, xxyy); + var patternEvent = new PatternEvent(note, velocity, module, controller, effect, xxyy); patternEvent.Data.Should().Be(binaryValue); patternEvent.NN.Should().Be(note); @@ -156,7 +145,7 @@ public void PatternEventConstructorWithAllParametersWithSpecifiedTypesShouldSetV } [Test] - public void PatternEventConstructorWithAllParametersWithPackedControllerEffectShouldSetValuesAsExpected() + public void Constructor_WithAllParametersWithPackedControllerEffect_ShouldSetValuesAsExpected() { const byte note = 0x12; const byte velocity = 0x95; @@ -168,7 +157,7 @@ public void PatternEventConstructorWithAllParametersWithPackedControllerEffectSh const ushort yy = (xxyy >> 8) & 0xFF; var binaryValue = ConstructBinaryPatternEventValue(note, velocity, module, controller, effect, xxyy); - var patternEvent = new PatternEvent(note, velocity, module, (controller << 8) | effect, xxyy); + var patternEvent = new PatternEvent(note, velocity, module, controller, effect, xxyy); patternEvent.Data.Should().Be(binaryValue); patternEvent.NN.Should().Be(note); @@ -184,7 +173,7 @@ public void PatternEventConstructorWithAllParametersWithPackedControllerEffectSh } [Test] - public void PatternEventSettersShouldJustWork() + public void Setters_ShouldJustWork() { var patternEvent = new PatternEvent { @@ -276,14 +265,26 @@ public void PatternEventSettersShouldJustWork() patternEvent.XXYY.Should().Be(0x0100); } + public static TestCaseData[] TestCases => + [ + new(new PatternEvent(), " "), + new(new PatternEvent(Note.C(4), 0x81, 1, 0, 0, 0), "C4800001 "), + new(new PatternEvent(Note.C(10), 0x81, 1, 0, 0, 0), "C4800001 "), + new(new PatternEvent(0, 0, 0, 0, 0, 1), " 0001"), + new(new PatternEvent(0, 0, 0, 0, 0x08, 0x0704), " 080704"), + new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), + new(new PatternEvent(Note.Off, 0, 0, 0, 0, 0), "-- "), + new(new PatternEvent(Note.AllNotesOff, 0, 0, 0, 0, 0), "-! ") + ]; + [TestCaseSource(nameof(TestCases))] - public void PatternEventToStringShouldReturnExpectedValue(PatternEvent patternEvent, string expectedValue) + public void ToString_ShouldReturnExpectedValue(PatternEvent patternEvent, string expectedValue) { patternEvent.ToString().Should().Be(expectedValue); } [Test] - public void PatternEventEqualityComparisonShouldJustWork() + public void EqualityComparison_ShouldJustWork() { var a = new PatternEvent(1); var b = new PatternEvent(1); @@ -291,26 +292,24 @@ public void PatternEventEqualityComparisonShouldJustWork() a.Equals(b).Should().BeTrue(); a.Equals(a).Should().BeTrue(); - a.Equals(1).Should().BeTrue(); - a.Equals(1).Should().BeTrue(); + a.Equals(1).Should().BeFalse(); a.Equals((object?)b).Should().BeTrue(); a.Equals((object?)a).Should().BeTrue(); a.Equals(null).Should().BeFalse(); a.Equals(new object()).Should().BeFalse(); b.Equals(c).Should().BeFalse(); - b.Equals(2).Should().BeFalse(); new Note(1).Equals(2).Should().BeFalse(); (a == b).Should().BeTrue(); (a != b).Should().BeFalse(); - (a == 1).Should().BeTrue(); + (a == 1).Should().BeFalse(); (a != 2).Should().BeTrue(); (a != c).Should().BeTrue(); (a == c).Should().BeFalse(); } [Test] - public void PatternEventGetHashCodeShouldPreserveComparability() + public void GetHashCode_ShouldPreserveComparability() { var a = new PatternEvent(1); var b = new PatternEvent(1); @@ -323,7 +322,7 @@ public void PatternEventGetHashCodeShouldPreserveComparability() [TestCase(0ul)] [TestCase(1ul)] [TestCase(2ul)] - public void PatternEventImplicitCastShouldJustWork(ulong value) + public void ImplicitCast_ShouldJustWork(ulong value) { var patternEvent = (PatternEvent)value; var extractedValue = (ulong)patternEvent; @@ -331,4 +330,166 @@ public void PatternEventImplicitCastShouldJustWork(ulong value) extractedValue.Should().Be(patternEvent.Data); extractedValue.Should().Be(value); } + + [Test] + public void NoteEvent_ShouldWork() + { + var note = new Note(NoteName.C, 4); + var moduleId = 0; + byte velocity = 100; + + var patternEvent = PatternEvent.NoteEvent(note, moduleId, velocity); + + patternEvent.Note.Should().Be(note); + patternEvent.ModuleId.Should().Be(moduleId); + patternEvent.Velocity.Should().Be(velocity); + patternEvent.ControllerId.Should().BeNull(); + patternEvent.Effect.Should().Be(Effect.None); + patternEvent.Value.Should().Be(0); + } + + [Test] + public void ControllerEvent_ShouldWork() + { + const int moduleId = 0; + const byte controller = 1; + const ushort value = 16384; + + var patternEvent = PatternEvent.ControllerEvent(moduleId, controller, value); + + patternEvent.ModuleId.Should().Be(moduleId); + patternEvent.ControllerId.Should().Be(controller); + patternEvent.Value.Should().Be(value); + patternEvent.Note.Should().Be(Note.Nothing); + patternEvent.Velocity.Should().BeNull(); + patternEvent.Effect.Should().Be(Effect.None); + } + + [Test] + public void EffectEvent_ShouldWork() + { + const int moduleId = 0; + const Effect effect = Effect.SlideUp; + const ushort value = 0x100; + + var patternEvent = PatternEvent.EffectEvent(moduleId, effect, value); + + patternEvent.ModuleId.Should().Be(moduleId); + patternEvent.Effect.Should().Be(effect); + patternEvent.Value.Should().Be(value); + patternEvent.Note.Should().Be(Note.Nothing); + patternEvent.Velocity.Should().BeNull(); + patternEvent.ControllerId.Should().BeNull(); + } + + [Test] + public void SetPitchEvent_ShouldWork() + { + const int moduleId = 0; + const ushort pitch = 0x3C00; + byte velocity = 100; + + var patternEvent = PatternEvent.SetPitchEvent(moduleId, pitch, velocity); + + patternEvent.Note.Should().Be(Note.SetPitch); + patternEvent.ModuleId.Should().Be(moduleId); + patternEvent.Velocity.Should().Be(velocity); + patternEvent.Value.Should().Be(pitch); + } + + [Test] + public void NewEvent_ShouldWork() + { + var note = new Note(NoteName.C, 4); + byte velocity = 100; + const int moduleId = 0; + byte controller = 1; + const ushort value = 1000; + + var patternEvent = PatternEvent.NewEvent(note, velocity, moduleId, controller, value); + + patternEvent.Note.Should().Be(note); + patternEvent.Velocity.Should().Be(velocity); + patternEvent.ModuleId.Should().Be(moduleId); + patternEvent.ControllerId.Should().Be(controller); + patternEvent.Value.Should().Be(value); + } + + [Test] + public void Merge_ShouldWork() + { + var first = new PatternEvent(1, 2, 3, 4, 5, 6); + var second = new PatternEvent(0, 20, 0, 40, 0, 60); + + var merged = PatternEvent.Merge(first, second); + + merged.NN.Should().Be(1); + merged.VV.Should().Be(20); + merged.MM.Should().Be(3); + merged.CC.Should().Be(40); + merged.EE.Should().Be(5); + merged.XXYY.Should().Be(60); + } + + [Test] + public void FriendlyProperties_ShouldHandleOffsetsCorrectly() + { + var patternEvent = new PatternEvent + { + Velocity = 100, + ModuleId = 5, + ControllerId = 10 + }; + + patternEvent.VV.Should().Be(101); + patternEvent.Velocity.Should().Be(100); + patternEvent.MM.Should().Be(6); + patternEvent.ModuleId.Should().Be(5); + patternEvent.CC.Should().Be(11); + patternEvent.ControllerId.Should().Be(10); + } + + [Test] + public void FriendlyProperties_ShouldHandleNullValues() + { + var patternEvent = new PatternEvent + { + Velocity = null, + ModuleId = null, + ControllerId = null + }; + + patternEvent.VV.Should().Be(0); + patternEvent.Velocity.Should().BeNull(); + patternEvent.MM.Should().Be(0); + patternEvent.ModuleId.Should().BeNull(); + patternEvent.CC.Should().Be(0); + patternEvent.ControllerId.Should().BeNull(); + } + + [Test] + public void FriendlyProperties_ShouldWorkCorrectly() + { + var empty = new PatternEvent(); + empty.HasNote.Should().BeFalse(); + empty.HasVelocity.Should().BeFalse(); + empty.HasModule.Should().BeFalse(); + empty.HasController.Should().BeFalse(); + empty.HasEffect.Should().BeFalse(); + empty.HasValue.Should().BeFalse(); + empty.IsEmpty.Should().BeTrue(); + + var noteEvent = PatternEvent.NoteEvent(Note.C(4), 0, 100); + noteEvent.HasNote.Should().BeTrue(); + noteEvent.HasVelocity.Should().BeTrue(); + noteEvent.HasModule.Should().BeTrue(); + noteEvent.IsEmpty.Should().BeFalse(); + noteEvent.IsNormalNote.Should().BeTrue(); + + var noteOffEvent = PatternEvent.NoteEvent(Note.Off, 0); + noteOffEvent.IsNoteOff.Should().BeTrue(); + + var setPitchEvent = PatternEvent.SetPitchEvent(0, 0x3C00); + setPitchEvent.IsSetPitch.Should().BeTrue(); + } } diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/SunSharp.Tests/SunSharp.Tests.csproj index 1bd73c1..31af5ed 100644 --- a/SunSharp.Tests/SunSharp.Tests.csproj +++ b/SunSharp.Tests/SunSharp.Tests.csproj @@ -12,16 +12,16 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp.Tests/SunVoxExceptionTests.cs b/SunSharp.Tests/SunVoxExceptionTests.cs index 06162cd..5f9c34d 100644 --- a/SunSharp.Tests/SunVoxExceptionTests.cs +++ b/SunSharp.Tests/SunVoxExceptionTests.cs @@ -3,10 +3,10 @@ namespace SunSharp.Tests; public class SunVoxExceptionTests { [Test] - public void ShouldHaveExpectedMessage() + public void Constructor_ShouldHaveExpectedMessage() { const uint code = unchecked((uint)-1); - const string methodName = nameof(ShouldHaveExpectedMessage); + const string methodName = nameof(Constructor_ShouldHaveExpectedMessage); var exception = new SunVoxException(-1, methodName); var exceptionFromUint = new SunVoxException(code, methodName); var exceptionWithNoMethod = new SunVoxException(-1); diff --git a/SunSharp.Tests/UtilityHelperTests.cs b/SunSharp.Tests/UtilityHelperTests.cs new file mode 100644 index 0000000..2ec0277 --- /dev/null +++ b/SunSharp.Tests/UtilityHelperTests.cs @@ -0,0 +1,82 @@ +using System.Linq; +using System.Runtime.InteropServices; + +namespace SunSharp.Tests; + +public class UtilityHelperTests +{ + [TestCase(-1)] + [TestCase(0)] + [TestCase(1)] + [TestCase(short.MaxValue)] + [TestCase(short.MinValue)] + public void ToShortBitwise_ShouldReturnExpectedValue(short testValue) + { + var value = (uint)unchecked((ushort)testValue); + var result = UtilityHelper.ToShortBitwise(value); + result.Should().Be(testValue); + } + + [TestCase(-1)] + [TestCase(0)] + [TestCase(1)] + [TestCase(short.MaxValue)] + [TestCase(short.MinValue)] + public void ToShortBitwise_WithUpperBytesSet_ShouldReturnExpectedValue(short testValue) + { + var value = unchecked((ushort)testValue) | 0xFFFF0000; + var result = UtilityHelper.ToShortBitwise(value); + result.Should().Be(testValue); + } + + [Test] + public void CopyIntArrayShouldSkipNegativeOnes_NullPtr_ShouldReturnEmptyArray() + { + var array = UtilityHelper.CopyIntArraySkipNegativeOnes(IntPtr.Zero, 10); + array.Should().BeEmpty(); + } + + [Test] + public void CopyIntArraySkipNegativeOnes_ValidData_ShouldReturnValidData() + { + var originalArray = new[] { 0, 1, 2, -1, -1, -1, 4, 5 }; + int[] array; + var originalArrayHandle = GCHandle.Alloc(originalArray, GCHandleType.Pinned); + try + { + array = UtilityHelper.CopyIntArraySkipNegativeOnes( + originalArrayHandle.AddrOfPinnedObject(), originalArray.Length); + } + finally + { + originalArrayHandle.Free(); + } + array.Should().BeEquivalentTo(originalArray.Where(static i => i != -1).ToArray()); + } + + [TestCase(0, 0, 0u)] + [TestCase(-1, -1, 0xFFFFFFFFu)] + [TestCase(1, 1, 0x00010001u)] + [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] + [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] + [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] + [TestCase(short.MinValue, short.MinValue, 0x80008000u)] + public void UnpackTwoSignedShorts_ShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) + { + var result = UtilityHelper.UnpackTwoSignedShorts(value); + result.Should().Be((lowerBytes, upperBytes)); + } + + [TestCase(0, 0, 0u)] + [TestCase(-1, -1, 0xFFFFFFFFu)] + [TestCase(1, 1, 0x00010001u)] + [TestCase(short.MaxValue, short.MaxValue, 0x7FFF7FFFu)] + [TestCase(short.MinValue, short.MaxValue, 0x7FFF8000u)] + [TestCase(short.MaxValue, short.MinValue, 0x80007FFFu)] + [TestCase(short.MinValue, short.MinValue, 0x80008000u)] + public void PackTwoSignedShorts_ShouldReturnExpectedValue(short lowerBytes, short upperBytes, uint value) + { + var result = UtilityHelper.PackTwoSignedShorts(lowerBytes, upperBytes); + result.Should().Be(value); + } +} diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs b/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs index d16bc11..a10b39d 100644 --- a/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs +++ b/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs @@ -111,6 +111,16 @@ int ISunVoxLibC.sv_get_autostop(int slot) } + int ISunVoxLibC.sv_get_base_version(int slot) + { + FormattableString? parameters = $"slot={slot}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_get_base_version(slot); + Log("Finished call.", parameters, result); + return result; + } + + int ISunVoxLibC.sv_get_current_line(int slot) { FormattableString? parameters = $"slot={slot}"; @@ -721,6 +731,16 @@ int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, } + int ISunVoxLibC.sv_sampler_par(int slot, int mod_num, int sample_slot, int par, int par_val, int set) + { + FormattableString? parameters = $"slot={slot}, mod_num={mod_num}, sample_slot={sample_slot}, par={par}, par_val={par_val}, set={set}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_sampler_par(slot, mod_num, sample_slot, par, par_val, set); + Log("Finished call.", parameters, result); + return result; + } + + int ISunVoxLibC.sv_save(int slot, IntPtr name) { FormattableString? parameters = $"slot={slot}, name=0x{name.ToString("X")}"; @@ -731,6 +751,16 @@ int ISunVoxLibC.sv_save(int slot, IntPtr name) } + IntPtr ISunVoxLibC.sv_save_to_memory(int slot, IntPtr size) + { + FormattableString? parameters = $"slot={slot}, size=0x{size.ToString("X")}"; + Log("Starting call.", parameters, null); + var result = _lib.sv_save_to_memory(slot, size); + Log("Finished call.", parameters, result.ToString("X")); + return result; + } + + int ISunVoxLibC.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) { FormattableString? parameters = $"slot={slot}, track_num={track_num}, note={note}, vel={vel}, module={module}, ctl={ctl}, ctl_val={ctl_val}"; diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs new file mode 100644 index 0000000..c49171c --- /dev/null +++ b/SunSharp/Effects.cs @@ -0,0 +1,481 @@ +namespace SunSharp +{ + /// + /// Represents various effects that can be applied to notes or tracks in the SunVox pattern. + /// + public enum Effect : byte + { + /// + /// No effect applied. + /// + None = 0, + + /// + /// Slide up (portamento up). Sliding speed = XXYY. + /// Can use the last nonzero parameter when XXYY = 0x0000. + /// + SlideUp = 0x01, + + /// + /// Slide down (portamento down). Sliding speed = XXYY. + /// Can use the last nonzero parameter when XXYY = 0x0000. + /// + SlideDown = 0x02, + + /// + /// Slide to note. Sliding speed = XXYY. + /// Can use the last nonzero parameter when XXYY = 0x0000. + /// + SlideToNote = 0x03, + + /// + /// Vibrato. XX - frequency; YY - amplitude. + /// Can use the last nonzero parameter when XXYY = 0x0000. + /// + Vibrato = 0x04, + + /// + /// Pitch bend up: pitch = original pitch (initialized when a note is activated) + XXYY. + /// One semitone = 0x0100. + /// + PitchBendUp = 0x05, + + /// + /// Pitch bend down: pitch = original pitch (initialized when a note is activated) - XXYY. + /// One semitone = 0x0100. + /// + PitchBendDown = 0x06, + + /// + /// Set phase (or sample offset) XXYY in percents (from 0x0000 (0%) to 0x8000 (100%)). + /// + SetPhasePercents = 0x07, + + /// + /// Arpeggio. XX - second note increment; YY - third note increment. + /// + Arpeggio = 0x08, + + /// + /// Set phase (or sample offset) XXYY in samples*0x0100. + /// + SetPhase = 0x09, + + /// + /// Velocity slide up/down. XX - up speed; YY - down speed. + /// Can use the last nonzero parameter when XXYY = 0x0000. + /// + VelocitySlide = 0x0A, + + /// + /// Set playing speed or time grids. + /// XXYY: 0x0001..0x001F - number of ticks per line; 0x0020..0x00FF - BPM; + /// XXYY: 0xF001..0xF020 and 0xF100..0xF120 - time grids. + /// + SetPlayingSpeed = 0x0F, + + /// + /// Fine slide up. XXYY specifies the amount. + /// + FineSlideUp = 0x11, + + /// + /// Fine slide down. XXYY specifies the amount. + /// + FineSlideDown = 0x12, + + /// + /// Set Bypass/Solo/Mute (BSM = XYY) flags. + /// Bypass - 0x0100; Solo - 0x0010; Mute - 0x0001. + /// + SetBypassSoloMute = 0x13, + + /// + /// Reset Bypass/Solo/Mute (BSM = XYY) flags. + /// Bypass - 0x0100; Solo - 0x0010; Mute - 0x0001. + /// + ResetBypassSoloMute = 0x14, + + /// + /// Change the relative note and finetune of the module. + /// XX - relative note (0x00 - ignore; 0x01 = -127 decimal; 0x80 = 0x0; 0xFF = 127 decimal); + /// YY - finetune (0x00 - ignore; 0x01 = one semitone lower; 0x80 = 0x0; 0xFF = one semitone higher). + /// + ChangeModuleFineTune = 0x15, + + /// + /// Retrigger note after XXYY ticks during the line. + /// + Retrigger = 0x19, + + /// + /// Fine velocity slide up/down. XX - up speed; YY - down speed. + /// Applied once at the beginning of a line. + /// + FineVelocitySlide = 0x1A, + + /// + /// Cut note after YY ticks in the current line. + /// + CutNote = 0x1C, + + /// + /// Delay the start of note until tick YY in the current line. + /// + DelayNote = 0x1D, + + /// + /// Set BPM to XXYY. + /// + SetBpm = 0x1F, + + /// + /// Note probability. XXYY specifies the probability. + /// + NoteProbability = 0x20, + + /// + /// Note probability with random velocity. XXYY specifies the probability. + /// + NoteProbabilityRandomVelocity = 0x21, + + /// + /// Set controller value to a random number from 0x0000 to XXYY. + /// + SetControllerRandomAbsolute = 0x22, + + /// + /// Set controller value to a random number with range from XX (0x00..0xFF) to YY (0x00..0xFF). + /// + SetControllerRandomRange = 0x23, + + /// + /// Take a note from line XXYY on the same track. + /// + PlayNoteFromLine = 0x24, + + /// + /// Take a random note from the range of lines XX..YY (inclusive) on the same track. + /// + PlayRandomNoteFromRange = 0x25, + + /// + /// Take a note from track XXYY on the same line. + /// + PlayNoteRandomTrackSameLine = 0x26, + + /// + /// Take a random note from the range of tracks XX..YY (inclusive) on the same line. + /// + PlayRandomNoteFromRangeTracksSameLine = 0x27, + + /// + /// Take a note from line XXYY on track 0x0. + /// + PlayNoteFromLineOnTrackZero = 0x28, + + /// + /// Take a random note from the range of lines XX..YY (inclusive) on track 0x0. + /// + PlayRandomNoteFromRangeOnTrackZero = 0x29, + + /// + /// Stop playing the song. + /// + StopPlaying = 0x30, + + /// + /// Jump to line XXYY (address) right after the end of the current line. + /// + Jump = 0x31, + + /// + /// Set jump address mode YY: + /// 0x0 - absolute address, relative to the start of the timeline (default); + /// 0x1 - (pattern beginning + address); + /// 0x2 - (pattern beginning - address); + /// 0x3 - (next line + address); + /// 0x4 - (next line - address). + /// + SetJumpMode = 0x32, + + /// + /// Slot sync (for sv_sync_resume() in SunVox library). + /// + SlotSync = 0x33, + + /// + /// Set (XX) or reset (YY) project options: + /// 0x1 - no portamento on the first tick (for compatibility with old tracker formats); + /// 0x2 - no velocity slide on the first tick (for compatibility with old tracker formats); + /// 0x4 - use Round-robin keyboard track allocation algorithm, instead of default tight packing; + /// 0x8 - always output 7-bit MIDI controller values, even if the controller is 14-bit (0x0-0x1F). + /// + SetResetProjectOptions = 0x34, + + /// + /// Bind MIDI OUT message XX (0x0 - Program Change; 0x1 - Channel Pressure; 0x2 - Pitch Bend Change) + /// to controller YY (0x0 - OFF; 0x80 - MIDI controller 0x0; 0x81 - MIDI controller 0x1...). + /// For the specified module only. + /// + BindMidiOut = 0x35, + + /// + /// Delete an event on track XX with a probability of YY (0x00..0xFF (100%)). + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + DeleteEventOnTrackWithProbability = 0x38, + + /// + /// Cyclic shift of track XX down by YY lines. + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + CyclicShiftTrackLines = 0x39, + + /// + /// Generate a new iteration of YY-line polyrhythm on track XX. + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + GeneratePolyrhythm = 0x3A, + + /// + /// Copy track XX to the pattern named YY. + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + CopyTrackToPattern = 0x3B, + + /// + /// Copy track XX from the pattern YY. + /// For example, if XXYY = 0x0023, then the first track will be copied from the pattern named "23". + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + CopyTrackFromPattern = 0x3C, + + /// + /// Write a random value to track YY. + /// Min value, max value and column must be in track 0x0, starting from line XX. + /// Destructive effect - irreversibly changes the contents of the pattern. + /// + WriteRandomValue = 0x3D, + + /// + /// Delays an event for 0x0/0x20 of line duration. + /// + Delay0 = 0x40, + + /// + /// Delays an event for 0x1/0x20 of line duration. + /// + Delay1 = 0x41, + + /// + /// Delays an event for 0x2/0x20 of line duration. + /// + Delay2 = 0x42, + + /// + /// Delays an event for 0x3/0x20 of line duration. + /// + Delay3 = 0x43, + + /// + /// Delays an event for 0x4/0x20 of line duration. + /// + Delay4 = 0x44, + + /// + /// Delays an event for 0x5/0x20 of line duration. + /// + Delay5 = 0x45, + + /// + /// Delays an event for 0x6/0x20 of line duration. + /// + Delay6 = 0x46, + + /// + /// Delays an event for 0x7/0x20 of line duration. + /// + Delay7 = 0x47, + + /// + /// Delays an event for 0x8/0x20 of line duration. + /// + Delay8 = 0x48, + + /// + /// Delays an event for 0x9/0x20 of line duration. + /// + Delay9 = 0x49, + + /// + /// Delays an event for 0xA/0x20 of line duration. + /// + Delay10 = 0x4A, + + /// + /// Delays an event for 0xB/0x20 of line duration. + /// + Delay11 = 0x4B, + + /// + /// Delays an event for 0xC/0x20 of line duration. + /// + Delay12 = 0x4C, + + /// + /// Delays an event for 0xD/0x20 of line duration. + /// + Delay13 = 0x4D, + + /// + /// Delays an event for 0xE/0x20 of line duration. + /// + Delay14 = 0x4E, + + /// + /// Delays an event for 0xF/0x20 of line duration. + /// + Delay15 = 0x4F, + + /// + /// Delays an event for 0x10/0x20 of line duration. + /// + Delay16 = 0x50, + + /// + /// Delays an event for 0x11/0x20 of line duration. + /// + Delay17 = 0x51, + + /// + /// Delays an event for 0x12/0x20 of line duration. + /// + Delay18 = 0x52, + + /// + /// Delays an event for 0x13/0x20 of line duration. + /// + Delay19 = 0x53, + + /// + /// Delays an event for 0x14/0x20 of line duration. + /// + Delay20 = 0x54, + + /// + /// Delays an event for 0x15/0x20 of line duration. + /// + Delay21 = 0x55, + + /// + /// Delays an event for 0x16/0x20 of line duration. + /// + Delay22 = 0x56, + + /// + /// Delays an event for 0x17/0x20 of line duration. + /// + Delay23 = 0x57, + + /// + /// Delays an event for 0x18/0x20 of line duration. + /// + Delay24 = 0x58, + + /// + /// Delays an event for 0x19/0x20 of line duration. + /// + Delay25 = 0x59, + + /// + /// Delays an event for 0x1A/0x20 of line duration. + /// + Delay26 = 0x5A, + + /// + /// Delays an event for 0x1B/0x20 of line duration. + /// + Delay27 = 0x5B, + + /// + /// Delays an event for 0x1C/0x20 of line duration. + /// + Delay28 = 0x5C, + + /// + /// Delays an event for 0x1D/0x20 of line duration. + /// + Delay29 = 0x5D, + + /// + /// Delays an event for 0x1E/0x20 of line duration. + /// + Delay30 = 0x5E, + + /// + /// Delays an event for 0x1F/0x20 of line duration. + /// + Delay31 = 0x5F, + } + + public static class EffectExtensions + { + /// + /// Determines whether the specified effect is non-linear. + /// + /// + /// Non-linear effects are those that alter the normal sequential flow of pattern playback, + /// such as jumps or stops, rather than modifying the sound or parameters of the notes being played. + /// + public static bool IsNonLinear(this Effect effect) + { + return effect == Effect.Jump + || effect == Effect.SetJumpMode + || effect == Effect.StopPlaying; + } + + /// + /// Determines whether the specified effect is destructive. + /// + /// + /// Destructive effects are those that can remove or overwrite existing data in the pattern, + /// potentially leading to loss of information. + /// The effects considered destructive include deleting events, shifting track lines, + /// generating polyrhythms, copying tracks, and writing random values. + /// + public static bool IsDestructive(this Effect effect) + { + return effect == Effect.DeleteEventOnTrackWithProbability + || effect == Effect.CyclicShiftTrackLines + || effect == Effect.GeneratePolyrhythm + || effect == Effect.CopyTrackToPattern + || effect == Effect.CopyTrackFromPattern + || effect == Effect.WriteRandomValue; + } + + /// + /// Determines whether the specified effect changes the tempo. + /// + /// + /// Tempo-changing effects are those that modify the speed or BPM (beats per minute) of the playback. + /// + public static bool ChangesTempo(this Effect effect) + { + return effect == Effect.SetBpm + || effect == Effect.SetPlayingSpeed; + } + + /// + /// Determines whether the specified effect is an event delay effect. + /// + /// + /// Event delay effects (0x40..0x5F) delay an event for a selected fraction of the line, + /// from 0% to 96.875%. + /// + public static bool IsEventDelay(this Effect effect) + { + return effect >= Effect.Delay0 && effect <= Effect.Delay31; + } + } +} diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 681b1ff..1478152 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -46,8 +46,8 @@ public enum Column public enum TimeMapType { - Speed = SunVoxConstants.SV_TIME_MAP_SPEED, - FrameCount = SunVoxConstants.SV_TIME_MAP_FRAMECNT + Speed = 0, + FrameCount = 1 } public enum ValueScalingMode @@ -71,30 +71,30 @@ public enum SunVoxInitOptions : uint /// /// Less information will be written to standard output. /// - NoDebugOutput = SunVoxConstants.SV_INIT_FLAG_NO_DEBUG_OUTPUT, + NoDebugOutput = 1 << 0, /// /// No automatic sound management, sv_audio_callback must be used. /// - UserAudioCallback = SunVoxConstants.SV_INIT_FLAG_USER_AUDIO_CALLBACK, + UserAudioCallback = 1 << 1, /// /// Sets the format which must be used with sv_audio_callback to . /// May not apply without . Mutually exclusive with . /// - AudioInt16 = SunVoxConstants.SV_INIT_FLAG_AUDIO_INT16, + AudioInt16 = 1 << 2, /// /// Sets the format which must be used with sv_audio_callback to . /// May not apply without . Mutually exclusive with . /// - AudioFloat32 = SunVoxConstants.SV_INIT_FLAG_AUDIO_FLOAT32, + AudioFloat32 = 1 << 3, /// /// Audio callback and other methods will be called from one thread. /// Applies if is set. /// - OneThread = SunVoxConstants.SV_INIT_FLAG_ONE_THREAD + OneThread = 1 << 4 } [SuppressMessage("Naming", "CA1720:Identifier contains type name", Justification = "The enum is supposed to help with choosing a type.")] @@ -103,101 +103,4 @@ public enum OutputType Float32 = 1, Int16 = 2 } - - public enum Effect : byte - { - None = 0, - - SlideUp = 0x01, - SlideDown = 0x02, - SlideToNote = 0x03, - Vibrato = 0x04, - PitchBendUp = 0x05, - PitchBendDown = 0x06, - SetPhasePercents = 0x07, - Arpeggio = 0x08, - SetPhase = 0x09, - VelocitySlide = 0x0A, - SetPlayingSpeed = 0x0F, - FineSlideUp = 0x11, - FineSlideDown = 0x12, - SetBypassSoloMute = 0x13, - ResetBypassSoloMute = 0x14, - ChangeModuleFineTune = 0x15, - Retrigger = 0x19, - FineVelocitySlide = 0x1A, - CutNote = 0x1C, - DelayNote = 0x1D, - SetBpm = 0x1F, - NoteProbability = 0x20, - NoteProbabilityRandomVelocity = 0x21, - SetControllerRandomAbsolute = 0x22, - SetControllerRandomRange = 0x23, - PlayNoteFromLine = 0x24, - PlayRandomNoteFromRange = 0x25, - PlayNoteRandomTrackSameLine = 0x26, - PlayRandomNoteFromRangeTracksSameLine = 0x27, - PlayNoteFromLineOnTrackZero = 0x28, - PlayRandomNoteFromRangeOnTrackZero = 0x29, - StopPlaying = 0x30, - Jump = 0x31, - SetJumpMode = 0x32, - SlotSync = 0x33, - SetResetProjectOptions = 0x34, - BindMidiOut = 0x35, - DeleteEventOnTrackWithProbability = 0x38, - CyclicShiftTrackLines = 0x39, - GeneratePolyrhythm = 0x3A, - CopyTrackToPattern = 0x3B, - CopyTrackFromPattern = 0x3C, - WriteRandomValue = 0x3D - } - - public static class EffectExtensions - { - /// - /// Determines whether the specified effect is non-linear. - /// - /// - /// Non-linear effects are those that alter the normal sequential flow of pattern playback, - /// such as jumps or stops, rather than modifying the sound or parameters of the notes being played. - /// - public static bool IsNonLinear(this Effect effect) - { - return effect == Effect.Jump - || effect == Effect.SetJumpMode - || effect == Effect.StopPlaying; - } - - /// - /// Determines whether the specified effect is destructive. - /// - /// - /// Destructive effects are those that can remove or overwrite existing data in the pattern, - /// potentially leading to loss of information. - /// The effects considered destructive include deleting events, shifting track lines, - /// generating polyrhythms, copying tracks, and writing random values. - /// - public static bool IsDestructive(this Effect effect) - { - return effect == Effect.DeleteEventOnTrackWithProbability - || effect == Effect.CyclicShiftTrackLines - || effect == Effect.GeneratePolyrhythm - || effect == Effect.CopyTrackToPattern - || effect == Effect.CopyTrackFromPattern - || effect == Effect.WriteRandomValue; - } - - /// - /// Determines whether the specified effect changes the tempo. - /// - /// - /// Tempo-changing effects are those that modify the speed or BPM (beats per minute) of the playback. - /// - public static bool ChangesTempo(this Effect effect) - { - return effect == Effect.SetBpm - || effect == Effect.SetPlayingSpeed; - } - } } diff --git a/SunSharp/FineTunePair.cs b/SunSharp/FineTunePair.cs index 39a24b5..2fdd306 100644 --- a/SunSharp/FineTunePair.cs +++ b/SunSharp/FineTunePair.cs @@ -3,13 +3,27 @@ namespace SunSharp { + /// + /// Represents a pair of fine-tune and relative note adjustment values. + /// Used for per-module configuration. + /// + /// [Serializable] [StructLayout(LayoutKind.Explicit, Size = 4)] - public struct FineTunePair : IEquatable + public readonly struct FineTunePair : IEquatable { - [field: FieldOffset(0)] public uint RawValue { get; set; } - [field: FieldOffset(0)] public short FineTune { get; set; } - [field: FieldOffset(2)] public short RelativeNote { get; set; } + [field: FieldOffset(0)] public uint RawValue { get; } + + /// + /// The fine-tune adjustment value. + /// The value range is -0x0100 (-1 semitone) to 0x0100 (+1 semitone). + /// + [field: FieldOffset(0)] public short FineTune { get; } + + /// + /// The relative note adjustment in semitones. + /// + [field: FieldOffset(2)] public short RelativeNote { get; } public FineTunePair(uint rawValue) : this() { @@ -22,22 +36,26 @@ public FineTunePair(short fineTune, short relativeNote) : this() RelativeNote = relativeNote; } - public override readonly bool Equals(object? obj) + /// + public override bool Equals(object? obj) { return obj is FineTunePair other && Equals(other); } - public readonly bool Equals(FineTunePair other) + /// + public bool Equals(FineTunePair other) { return FineTune == other.FineTune && RelativeNote == other.RelativeNote; } - public override readonly int GetHashCode() + /// + public override int GetHashCode() { - return HashCode.Combine(FineTune, RelativeNote); + return HashCode.Combine(RawValue); } - public override readonly string ToString() + /// + public override string ToString() { return $"Fine-tune: {FineTune}, relative note: {RelativeNote}."; } diff --git a/SunSharp/LibraryVersion.cs b/SunSharp/LibraryVersion.cs index c1baf2c..4e1d097 100644 --- a/SunSharp/LibraryVersion.cs +++ b/SunSharp/LibraryVersion.cs @@ -1,30 +1,59 @@ +using System; +using System.Runtime.InteropServices; + namespace SunSharp { - public readonly struct LibraryVersion + /// + /// Represents the version of the SunVox library. + /// + [StructLayout(LayoutKind.Explicit, Size = 4)] + public readonly struct LibraryVersion : IEquatable { - public byte Major { get; } + [FieldOffset(0)] private readonly int _value; + [FieldOffset(2)] private readonly byte _major; + [FieldOffset(1)] private readonly byte _minor; + [FieldOffset(0)] private readonly byte _minor2; - public byte Minor { get; } + public byte Major => _major; - public byte Minor2 { get; } + public byte Minor => _minor; - public LibraryVersion(byte major, byte minor, byte minor2) - { - Major = major; - Minor = minor; - Minor2 = minor2; - } + public byte Minor2 => _minor2; public LibraryVersion(int code) { - Major = (byte)((code >> 16) & 255); - Minor = (byte)((code >> 8) & 255); - Minor2 = (byte)(code & 255); + _major = _minor = _minor2 = 0; // unfortunately required + _value = code; } public override string ToString() { return $"SunVox Lib v{Major}.{Minor}.{Minor2}"; } + + public bool Equals(LibraryVersion other) + { + return _value == other._value; + } + + public override bool Equals(object obj) + { + return obj is LibraryVersion other && Equals(other); + } + + public override int GetHashCode() + { + return _value; + } + + public static bool operator ==(LibraryVersion left, LibraryVersion right) + { + return left.Equals(right); + } + + public static bool operator !=(LibraryVersion left, LibraryVersion right) + { + return !left.Equals(right); + } } } diff --git a/SunSharp/Microtones.cs b/SunSharp/Microtones.cs new file mode 100644 index 0000000..f35ac4a --- /dev/null +++ b/SunSharp/Microtones.cs @@ -0,0 +1,98 @@ +using System; + +namespace SunSharp +{ + /// + /// Provides conversion methods between SunVox pitch values and frequencies in Hz. + /// + public static class Microtones + { + private const double ReferencePitch = 30720.0; + private const double PitchScaleDivisor = 3072.0; + private const double ReferenceFrequency = 16.333984375; + + /// + /// Converts a SunVox pitch value to frequency in Hz. + /// + /// Thrown when pitch results in an invalid frequency. + /// + /// Formula: freq = 2^((30720 - pitch) / 3072) * 16.333984375 + /// + public static double PitchToFrequency(double pitch) + { + if (double.IsNaN(pitch) || double.IsInfinity(pitch)) + { + throw new ArgumentException("Pitch must be a valid finite number.", nameof(pitch)); + } + + double result = Math.Pow(2, (ReferencePitch - pitch) / PitchScaleDivisor) * ReferenceFrequency; + + if (double.IsNaN(result) || double.IsInfinity(result)) + { + throw new ArgumentException($"Pitch value results in an invalid frequency.", nameof(pitch)); + } + + return result; + } + + /// + public static float PitchToFrequency(float pitch) => (float)PitchToFrequency((double)pitch); + + /// + /// Converts a frequency in Hz to a SunVox pitch value. + /// + /// Thrown when frequency is not a positive finite number. + /// + /// Formula: pitch = 30720 - log2(freq / 16.333984375) * 3072 + /// + public static double FrequencyToPitch(double frequency) + { + if (double.IsNaN(frequency) || double.IsInfinity(frequency) || frequency <= 0) + { + throw new ArgumentException("Frequency must be a positive finite number.", nameof(frequency)); + } + + double result = ReferencePitch - (Math.Log(frequency / ReferenceFrequency, 2) * PitchScaleDivisor); + + if (double.IsNaN(result) || double.IsInfinity(result)) + { + throw new ArgumentException($"Frequency value results in an invalid pitch.", nameof(frequency)); + } + + return result; + } + + /// + public static float FrequencyToPitch(float frequency) => (float)FrequencyToPitch((double)frequency); + + /// + /// Converts a musical note name and octave to a SunVox pitch value. + /// + /// The SunVox pitch value corresponding to the given note and octave. + /// + /// + /// + /// Supported range is from C0 (0x7800) to C10 (0x0000). + /// + public static short NoteToPitch(NoteName noteName, int octave) + { + const int C0Pitch = 0x7800; + const int PitchPerSemitone = 0x100; + + if (!noteName.IsValidNoteName()) + { + throw new ArgumentException("Invalid note name.", nameof(noteName)); + } + + var v = noteName - NoteName.C + (octave * 12) + 1; + var semitonesFromC0 = v - 1; + var pitch = C0Pitch - (semitonesFromC0 * PitchPerSemitone); + if (pitch < 0 || pitch > C0Pitch) + { + throw new ArgumentOutOfRangeException(nameof(octave), "The resulting pitch is out of the supported range."); + } + + return (short)pitch; + } + } +} diff --git a/SunSharp/ModuleFlags.cs b/SunSharp/ModuleFlags.cs index a127969..60799c4 100644 --- a/SunSharp/ModuleFlags.cs +++ b/SunSharp/ModuleFlags.cs @@ -1,5 +1,11 @@ +using System.Runtime.InteropServices; + namespace SunSharp { + /// + /// Represents the flags and properties of a SunVox module. + /// + [StructLayout(LayoutKind.Explicit, Size = 4)] public readonly struct ModuleFlags { internal const uint SV_MODULE_FLAG_EXISTS = 1 << 0; @@ -14,17 +20,17 @@ public readonly struct ModuleFlags internal const int SV_MODULE_OUTPUTS_OFF = 16 + 8; internal const uint SV_MODULE_OUTPUTS_MASK = 255u << (16 + 8); - public uint Value { get; } + [field: FieldOffset(0)] public uint Value { get; } public bool Exists => (Value & SV_MODULE_FLAG_EXISTS) != 0; /// - /// This module receives notes and outputs sound. + /// Whether this module receives notes and outputs sound. /// public bool Generator => (Value & SV_MODULE_FLAG_GENERATOR) != 0; /// - /// This module receives sound and outputs sound. + /// Whether this module receives sound and outputs sound. /// public bool Effect => (Value & SV_MODULE_FLAG_EFFECT) != 0; @@ -33,13 +39,21 @@ public readonly struct ModuleFlags public bool Bypass => (Value & SV_MODULE_FLAG_BYPASS) != 0; /// - /// Actual input count may be less or equal. + /// Upper count of inputs connected to this module at this time. /// + /// + /// The actual input count may be less or equal to this value. + /// Does not inform about a module's maximum input capacity. + /// public int InputUpperCount => (int)((Value & SV_MODULE_INPUTS_MASK) >> SV_MODULE_INPUTS_OFF); /// - /// Actual output count may be less or equal + /// Upper count of outputs connected to this module at this time. /// + /// + /// The actual input count may be less or equal to this value. + /// Does not inform about a module's maximum output capacity. + /// public int OutputUpperCount => (int)((Value & SV_MODULE_OUTPUTS_MASK) >> SV_MODULE_OUTPUTS_OFF); public ModuleFlags(uint value) diff --git a/SunSharp/Modules/ControllerSpecificEnums.cs b/SunSharp/Modules/ControllerSpecificEnums.cs index b155d9a..9dfcf93 100644 --- a/SunSharp/Modules/ControllerSpecificEnums.cs +++ b/SunSharp/Modules/ControllerSpecificEnums.cs @@ -141,6 +141,10 @@ public enum AnalogGeneratorSecondaryOscillatorMode /// Samples will be converted to 16-bit integers for bitwise operations. ///

    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%0ACkha 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 literal 872960 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'x3U6ovpQAQv)|%P)6q6^dh1yz0=^X- z#zH=K(Uz`#qt8m7`L|P3wpFsSR2v9EYx1=VP_U1HUg@WeiojVy}r!xq&iw}i;oOC=Y2eHqVLstk44?u4>H=BztDIzgB2qxQ}?OJaAHq( z*C8tk#S-rTC3yTmphOcdCvc%$X3nt8xxjDMB}RcAOU_@;_ow*Ew3M=*>yU==($$Sh z?!t89g;F=nytUS@WzqcK!9cx4Al4zgc`Ud3(!&G3PY}a?~p}kW1Oy1`ulOXmf}Uy%Ty9Bo}eJ#UMn(ylClG z=cYRu$J|bncpMk>Jk9Do zFrUSQyxDj?${m5ULoxENVZUC#Yrw`0)sbDw2gy2~d4?vZIFiGBLA2_J8=uasr_;4R zEdHXVlooJt7h?wjTp9)X_z=E~k8byh)gC|Hm%~fX^CDaA=@Q?gbb>EahFUk2ylpLE zAyzRJk_M?!n?S7DTmiclsR5moN(&`S#>@>*nEq9i2hE>7l|odHn#1GbVyo(LF+DND z%=hV9W7(5C9%u}s>tQUaDe6rVq;GsJ^CC)!Y$JN@ozsp4C8F~6=S}|>I;M2P zjm?>f9BviG+dSknp27Vp!{hG$?Xm-eO{O@HXT5w(x$k)L5h zD4pgDwziVZ9(}qt116p1##(+R#}UCXkKo2Xx6MU z_xwG(+*Xln4x|bQTLICQ^v4P1gN4`CpYg;noUKW*Sryk+0aRb1~cJ@)N z%`nsS^IB&5Hjm`Yc<|`yAF7~KrZ=`^lIQ}E>M|GNdC1@#bCeT1mwE6QL^n z51a_)kf)lg&mqsA>f94et-{vU7p-q=z5=k4<67tc9IvRX0Pen@r*5@sSU1PL9n+ae z=?As%w#{EcwEiOXt->`{dVm{KJtS#SpE(JdEDvaZ^c?bW3OH!)8~PS6+-g#pS}cdC z5_zs0g&$&{2EKlr3-Qy>WrX%1X2aeRCqC|ElW|caaHFY6KvFYmAY+B_F(1?5=4kOQ z!U;AyJXb{!@;EK@A0D8R#3#ghGA!fq?9!4~Q;ImI;jxh4qCi5HZky(nSSLie38gLb zj>5Q1S?f&J`cUhFIp1eZk-dqFV~wP4QJ7A!VSCpVVWSCT5t)}!9f27ba68j zkRMIm^3@M%@-8QmujT_WC;k|pgiE;yiwj>Mg~Y^}iKd-YIngwQc1bjCHNV=g>e|Tp zoKx4p{2*tMLdK;#dJ%b=x8wv0zC#6%ZSFdT$t_afqM{nQi@EHQqDqgb&1luuOQ}&P zbp{_qQx6XiL4;c41HQ{U#d!UHjMx8}A^=b?Q9Y$-SXg%`Ch2Ki6()x4uo zp^?p!teA#EOv2V*5-f2@(8y2P^BCb?{B(ap_QtjerkKTZDMk~Fr70tAJM#}<&_b76 z;&F<`nLX3U*#cDiW~PWQ5t9X+4 zC>$5;=Z%4I(0%6DbnOOr?b#T(0nJbbDszA_6(j0|o*uec- z>*u&5i~PPHnH)V{pc5_DuON;DrzdW!qH{dYg1OP(JACw%o@fJ8&ZHBKR}vX1{nTl^ z4qRnH5J^2|=(XXKVoom;iGtzsVRThJIisn?^E@_t!{c?9mh!%-Hv9p%+u`7GGO{m83r$kv1m3cA!?BWYJ;I2pUZ}po)mcCH zx^eO%U`LopDwQ*rW1u=>j9g$`bjPzyCg9P?>*l&__nzs!=kHdZ2;kI^X%FM7 z;HsZfw7B0rCNh5#kv*gNYZSl;KO;A;KXKmZiKc$l2|loGjX$^SHEB$^ZF^mTyY*Y3 zEDlXp)!$u51YzOru2N!7eKLPySErY2EY(}`qC)MskEJxryRt0g=w24WUR^w>45j^Y zS%~xaq@%g;Mb{A~mJAT}iIE7!5LY7VmXN(rko%J-24F#-&+7NdKE)rKQ@jxS{Nmx2 zKUW4*eD!YU@d-yKCk>|PRNxUVb-<h@H4B5lUOIhSsa5rjYVPbPb zy3UEe20gHq`_HR=bExuTB9CbLwfypv<0oivh5q8J(?rJ)hp5-Fu6H6E8aMuIP-x`3 zHAJEd**0>sv!Xeac!IB$t>HBXJKIFdYQ2r@XxQt_`(}D?pkc4S=4itY$cf<^(LuzcK_G^l73)yr^LSQw(r@81BhnkUgj2tejp*ie;WLnpB-Ygoja4DO6BZ9QaIKYAUQ#8RhB z{x-)>2mhF3qvsLfe%tZGI=M-pmrZNr_j2(Fxg>>+{NoXQ4jfH{!;ev#QNEQ~j;{uC z2Rs$0&UX{c}g#0FU)=KsXjZ;bM0%f~s0S3ZPe%J0w9 z{RZW)`4@%u58{mMMDxWu_g!98TS36a(_^QHDb0%JWbIQJR;^xP0RX77#XQ|LPf(a9 zEqAdBt0ENPDAr9mg?(Ywz~s=9f;}Yx%#V+#3xU&aMJsH-2}HKt zxQ5uP3X!G&wV(UWCJOjxh1M5RmH*}wRb>?~YPbKjw8KLawsia%I zk}AEDnC!l|UWX}ZSWihRLER%L?$=b(18TJ0xQ$me{#W2M+DrfQSz<5gDL|u01(?ya zW@7*be*TCUqPXT>_64+fBBY%HNjOX;_w#x+|6{UzAu6jM3puMQeA6|*Em9MtPOqk5 zX?Pcsc}~!IyxlDYZ9!CwviDQ=#JN~4O~*{1PsZqzRQ@PEoN%l1E+_BU=7vuTIb=SI zy<+EA%`!|9QtYL(ZQ-Mh5Dm$?lsIt{p&r@8{A1^F=^|BP;v=@(nT(JB13t4bE93I> z881jO-0Rle28_8Svxayhs7VkKORAcv38J$(Syoxl@M*wlEXQD9Sqq%T@dV9!SFTl5 zxR~3-FdhgZ(rM}h>-aF#S%w?hilMrOjdQJv7?ahX5FUXwQNTT?J%AC*s*0~9TBaMD z?7M@Ijq`ZLVEej?S7!UFP($li!e?3sEl%S}u#+Usf`zhr#g9IFScDffPJm6AhEKo3 zc`KN-`bw>`<{?qfp9X#j>T&5>sOMJ?e3p8Od#Fd5L_KA+gnNA(tkM(uL&&?+d_Jaz zgYMTaqmgN$9KMNZ6q1$hWy*5@WSwNNP+~!o#FnWo%rIF|u}*SyB7gnw2Kvq}N15j= zmdYK+N#A=Asp`IGfu1Yjbf7n`NZz61WzXK&daR@pZg{LnUNC6&&iVAs#C`3Mg zcvZAs*V9hCN=d+}h?6!a(>R8OghbC$ zPywPKvn4dzmNS=!!ACgM@zN`fg%}AH$@6v1vlIUxKzSegw}p&1h}5iMpk8euMzPqh zLXjn~+Sf{KOLsbV?m2)FS#4$V4vB&onpv;4$A6usLdP`Zt30DJ=}!&&c^7s`=|BZn zwz1H{@EExuRR5ah{`4+~TWVPNj#?K=JcGD_HVK;u4f2wS9K{KyX-gNM4vaR&ecPl-$pxsNCjBC;rq3@RxVYEJw zfJxZqkU#l_#yZ=p79lE&)+@if^dF5$l%n9Ymw9*PnC` z#e`|1(*saE*U&!Gt7JHDC@4`=w6Wm+tu4myo%hbSA@^9TgQAlQ+-JXKaxf7UPu zubFJ$5J;4=)W>Sg zNaFlrCWN^vunHh_mAz=qIu}wl)qtfrlOwuRFH5z)qD%rw` z2MtS%pplb>vyc}`;?mLT4Y9?n) z8m6RbZrSZr{7{pTYvDboGAv&GX3{Am0Xuo($0!R5mtl>-2dd4n%sWIDH%C`e=gH~L zIGa=EPX0E5>@**&HGX$O$-IihheR$UQoLbkz%=CjylQqU=3|;tM6EwDTQ!FK^v;UG zd6x6SjOX47v9jjj#@UL*Zg{OOBr^Nsq`PYuYb|((;;?kGmaCy>UJWHp7pV~iMkieM zA(@67JGfbb04=5t(OBEftG9iEUjG5CI?$#pkb7q*c!M&k{qQ2~6jh*;@;mc&3_@A% zw^=xQr?j9k7yp%)w%Vo@+q7b7{o)N?TDwgfW7Edq6w!(QyO*}jrj^;WGM)a5Pw>)Q zllJ|Ia5c)C*wEeIiJ#`Bb=&Wz+V7?|baT5OIxvH00d3<1FP$X|>Y|ES(niMjPM21n4c&ukF4ea)Ec6cIEOdn$x{s$futJS) z%|#k{;wNY}thGbpg_u+Ex6m_hR5WsPND25$&J$~iCAdp`V|FOIf4mV9W#B47%8sk) zO$}Xs|HqN~chzvA(wAx%#}Y4VqiVIjXY>gtypxLs_-npKf_NXJb17ZJlv3GBbrdC| zQsY7jo#DEwNc{!@j5Zv|cN!l?`K4<@)X<@iO-+iO`15uY8*rr?=5g-M&P%QReQoCj zn1>FEsfJnoY%^Dp_%PjBK*mTY$sO{Z7J&CM4+Vnbvr~fr zjv(I1SqP=>s8wjmma3aoo+N|JzsYEK)udqR+&wHgW;zQ>QF?RH$fHj^`Q($S$Q~{b zk2otfMbep*!l^(av59N8My4CO$2yDp52UO2IZpgdwyzqxFLD-_3{ni^x2u3Ecrqv@ z`5JZ|DL0G@DzK0+dgy05Lj#RKocR_}JpvzyIE_D{ff4%5QOrftc)^z{di=$G^!RBB z4mj9w;^!(y>A+f7zB!%7f95q?G_7T38>#mPH#w`ykJiS+^t3yGdq+Zv_*Y#jn^_6^ z(%1H2(YP4&`|cemy;u3i{z1*9>>a!vspdSW6mA%_p!18S)_R)<4<5RCus71sHpiX( z2?&+GTl;SASE07}0M!k|jqVY`xdg(I3i9qk7Ij;?j%I376oMx%1L8Lm8>#M&r2>z0 zf$RbUC%uJ+H zy`+gsn&>6jd9=bynyRF!UeZ)EjgIolnx(R4c}aE_MKdTg8tSMv&oz454D||{d9;gw z@|eL)9zDH03YwX;&C9dgKG*2!Tk=xv^$peO4tp5?_aK{d}q!mL0}LzcpW32L@uPqDGDvc^~!j za%)mm?m1o=odA-phX^(1=KzGJ-ztj1@b41xh;Azrdr@aV^P*n&pH9iQ`U=WWgi%|> zqgWM@FSKVHS>6A0&!*HD%;Eb+B@8o!CW%zYSE zd9@n5u}Nbykl?o}V9m`F_9*v_Z)DQq>gbnVVCK;%Tn^k!8^^h_^RMc%lt}iQPML$w zdJuKMhJH0g!djM?*{m|TKx<}LwH?{a1h@kUkb_I6+2k*XERCk(X8nT;YR($ye1S9n zn_!C>Ou>F9Sn3pwhqAFvLERPn8B44=#b#6$%^Ab9jQ27pIGG!{t0wY3mG`N<&*FVn zmgb9A*HNMqyt7G z-g|Zu8?O^24-3gfMu%nbSdss&+XnjX-1AqdrzqvkJ2^Sm%q`=bR$(Xcl+TtY^2&_O zmgm*l*wi%%BmOeSkm@BI-KRPBy=c&XGGZTS?1}=ut_r) z%%ZQnEk)UDuH@CIM|na3Lcd)=HF2@j=*J(GH&t-v#ITN8(iXz19bs}7Jnb?8`o#oNGDtF3%1$@c!mBdCGTIa~dA~An|fN@a1dZD~} z5?H%%e!dAbFPx8$R$|sKoIk(>+853*AmDzCo+4xxSF;a5ww}G16K|z)uxLNy4)m_* zMK7AA-&M`TDzKm!5vi$ITN(qlAy?#o>Df;g-pb9VgCkm*omYV>KkznX@0SKiHW z#?p^!-_0EPX98s9Co%e-S6fn7Iz4##-4#AStD;VEXfxDXdMznHa`qZ4yiU zRtzX}Avq**_1*Sx8-LH%1|TCU=1dHLwL)%J*|D~y@$r8W zDCd&rt}DjscSw*oXTe&P+>ox)sYl(H`77hBvH}A*xxomU1v{nSNW2-+2>$LvOB$RM z!-ALym-ZmY*;x50o9yy@D#VEHR1yC}^TFUHWnK`tb}898T^l@igau|{*ze^nPG_zu zLuZn!HUs0vPQE*L1V0y#&Qu*VB8v7Pu|{xDxCW<|-(W2brkqqEu@~Dcnq7-+w-_oV zNbg{$f`QxX;-#6NKmv!@EkGyzR|Ek3ybNz*s3)q|nkf_Jzvy^MV~ZqJj!zzATtiik z|0*?1zd9h|@8)gDWRXj1+?o(}7q1S8rDoO#VFc~{p_O%NqsQQmRlC(y~{?vJ1M z5Y{moae?{@jD}wxyJf7LY{uymNWDGreA;yq8`MJ7spR)g@U3uZ^9}v=Ho88+^=a>J zH?emL5+T zv%pw_Bd4CJ=^12d*cWgXol2l_i#dkmT(pV9y_oNE$~1~;FP-tQQ5n#W<0KykW0*f? zdhh-^XRD0T)oEt=QWRKd>`t9U-yk8!_Ec*d5=GF3O0o8*^(MA1v-cUGY{3nx;M6HH zZj2=*kmJe>1I5YI0p7NF9HSw#iR_;%xc=TP{B>v%b@sdYfCL z4z>4&|7qt>BC4+G5U1vFx;?o`z`9Z+z+Q(&3^)R7OUekC z`+3?h2p=K~?VS60l2sEU3^=al37M;ThP9dXi@lo1lUtot7jQ4mUbY3khu+LtAfsO1 z1I~i~X4Deu=PY=OI95_zykpSk-W`iR_xE%dWVyem(+0BWbIQYKaOD0TZNtIHv*-iH zq7NLQFVk)weN4NjHzm&vCd#KdkDNPrVfl>K@`-*UZ)If0Y1TJpv6q>_tF_w&Q&hs{ z_MTPe9*vf;KUzXqWEbU9VhpCN{v@KP^~$Sxs*H>u##odc$$bJs`H8NIrHa<@?uj zDC-XpWSO;c?Mm;+H2=JR(MBJH)CIUl8MZJhRDnuzOwaYIxpKm%ybWqaV?Um z>Pb&F&H{tvpKJ7+S`UKAJ8cMw}9cd)zefq!l_tjlL z(SzW`&w~=e$w|Xv)#W4T6v7jN_(<;WEI8r>EeDQ|f)ipXM-Fa{`L}TaRF?k(^-&be zB<^rKDzY|oAHPY3WoCk{lv-UjCP+Y7YFtGlp&^g(iJoOX>XFr$^Bm#57mLc=zuku^ z5e}-bp8(*Rs|e}pg{3*r?bQo9x1EJbc>)Ywa6G^oU5%j-l`?{dp2d21epXsE}042!+wN)q<>h3TBog$#`zu~n35UqWi%yv@c=Jo{-?)SeG zTsqTTe=l$c3+^w0yXFEyYKm005E{CtDa=(2D&dQog7!5{F+eb<3wnn_XXOCwX^Pxy z82-EEi<-g%YMP=*K!t|;=IfwbMMx;W$V-+sdQdhOFp%L3QC50S?>%%6(1#G?CIo#m zAwi#eIOsh$F?>;jWTE#L%u5CRGKEgg0oc+M`TKK--fNwv7?)6!K*`X(z8h!1EH~d~M|#oIdx% zSxm5NI7x)vEL&y>3?ct|!z{yz>Zxx2*nFR6CuW)Pme)VqEne?i9SpD{YUjoB>*NB> zJKXy;=Z3TW%s$s%8?F8@v}UT|=QIM}1A2rUtoU7ovmV?Nt}^Tp1PQl=+N$YOA|raou> zA3!V<*eg`ye5v`J8T1IJ@hc>#LYX58P!CMCu|lB3ylFuV=srHRXPPkY=Ujm*d@Im; z^&zWiH|mecoUOl|cU5zT`8iQO%$ffUN}xfUg~t0{ zpwLJ)*}(^3ek0OcC4a2h{zD%4J*WLLml4^ECUbQmKE0h4lcwch>@;2g$=H4gHSG8l zm+zR9AOausylB(i@+Un1az!O3MKTvEK?unqHk8;)TwCG*Ip!#bv~;Wp^ON)dSX^`V-3q9* zZKR_7sX%?FkP}U(-{_B+crR~}>i1-6S4S{eQ!*7bUqKj5U*bK)CQWMI!NhxtXeNSc zE#aYqfdrQll>ZP^^BDSLxU3v|8s6OBh(9j8JM!u+?w%%fIj<~6s}(b7RV4OA zl9S3p4R3yWL9(W^Dnf^GSsT4}L0(Pgj8MbD{MzG^<(DL{pTfYJlPs^|F*jL0l?HAC zc*FI$C25?l&6tM$gr*Q0`!)*TGFog61^7fOQ8kOX#0GQ4k`D&|1?>S#@=as8dvplWj$3|_C?DXOR?kx*vJ9444)VZ8n&P1TE57cKb#_` zN1dx*n;vnlevuPFcrK%ORPCnKrpKJCA>ElTO~5~jHU-u3oDjPDbxz;UdfKP2y779g zx1G@WOm2{T4?XSa2RV6(hUuCY7*aDu{BMhDhl~Jwk_V09$p|au0kqlA6r1zo*Q}E^ zfQYSV%dY8|?rd$F?#%8uj-M@f1nXEx(g8GI*K8oLeam!bA4*x}o83`N%!ixxgLUq# zEd~5E^Ygu19c7iGxa;9RNC_biuk7+H-_zaS^8n%G6(#0)VT_l0 zc%X=#Lz4xNe8YNw?96*h>V#5bYCm&!;y^Um_l7dGzZRo%FD z72TMe#zly5gH9r2=+HHA(M$FZn0=Z^;_tD<2hqfHc0d2Un5;tgMd>JJ;ZY$=0g1M7 zX-CaawwEL-&2e`k3~NBnL3qMBVZv3Hu%i-);2YD=cMZ}pu7OVScYV~l06)G>-@**uFr!~X=3~B^y`^|M{u8cwmj4`+Zk8c6BXR5Vq-~`=7~W=}JFP8d zjIU?3=I{Tr;S~(;ecQ-4{TU+RP_Gct^^5@U|2c;9Za+CR&Vi_c-~nm1F>K*8LYBt*`tG)JjhbK@=p1P}sc|@eB z>WNAq$3aW~gnm}Gn*PldiM`Gv8^fg;3^2k@Ik#w&58}XV&`kZ5KT2C8{4WYDVxls% z@oxsG&1^}}0JD(7SS~r`8%1Hw>|uGIpADbAEe#Mw0uz}OSrI4pwqKi@Upu3OCBY-_+R`P8;wByV1%hdr~Ma31{m zBfQ8ly(C^ptmFQ-XyRZr{qCqxXij}Ir_4JT&@X#okG^_HX9IrB(lx`yjZm@6M<>*S1U&tzVE;rsgixv=!6qk6H_{x_vS#F5w zBMI!npo(X1{v#ng%CJX~Za7g{C9`KwtmJ0J<#&;}T<4Ek)!l6t+$>0%*~6+B`?mal zTlpHU9!orxdEi4NiKZ+cxq<9i9^%aZPo$SDw_xOh{Vm2y9G;*%hmcdLkA^cNBRdk` z2DRlhL3VC98Hj9@=z@Z&0C>;>U>At7Wi}&W68N2l8hmnvr2}!PJ*=u@DF%w?3adAZ zJkKuLrbRc&Ol6ZtP}>oiR$>f)@p|*;9^&dqy6(9w^4oZq^KY*Lz50`$df?q&F1$Bn ztMdlcQU6jMd%BMUB)sO-$gVnBq36^H2(9d(vWq%7|8>rz=2UOpyz}~2EjRC)Y+mX) z@1MLnLNd8|Zc`pw%TRabG1Ndthv77)@qN_0*m;Pzu^Tg=B0*+3!#WmOhBI_P>>{C+ z)CA!#u@?bT>_IXVeRTR?DI%7d(w~!l@g82G@dj(qUTG)!jC2@FyaMpKUHv${koY8) z_%xF48Wl;ueOxH`;0Gp9p@>VgBnAncTI1bd_+$#?56RQyVT4qWd6t|a_AboH3fuAyJvp`qiQ4AFjpL7 zrP`70&Wc#cG-riXANbSh%s^EtiXlm*A2S7y+k4m(@zZSN#8+iYFpmEOBv zMwWICaBm23$pd5GZpj$DB}ni41Q`3C;O*LG(w~ROuE`(}zwaQJJX=hLeMBR5vpgpg zt83>Q@7-p(5Ohr()^hxY;VeK(TJKEdBl(TFiWeRV(|5e5+8q2;>sAwtlsX8@C3 zs8f8i1Rp;5%t~F%z_O>b)7T|7A49oAjacDa{Q(j}8gsm$$A%enRtUP9n#b_Vlr{_L z#3n1uCOYLX!Vv#{}b3&8mT>32oB-JP6HUG6}a6XvuFo!{?CxfK_Zm8xQ{ds9Utoz9X>Ts z%9K0rM_M3+{0Li~Jg+7Q)xZ7^w?R&^xwY*nu19b?L~o$mTQvMK{g`f$YI^xKeA*gQX1TSTBPE^*C0MAoNp6fL zUgY}1io_>T)FQM9>vg-hNw8qwR>OTXmT}7;!5sJ04^%QCyJ`<-m+fsxbXT%$?_k-! z)hydN*|IC`I-!vg*+;P|HQjzb(&3)kq{psb3=549B=u#vb`QrM!bEQ7uo!%92A7lO zVPk6aVL|+-LivF@k&$tU8!AoT_-5v4$rs7;NamF{^(kGfDQ>Y3K$#Vs0q|7iv|ZHS zEau6jl476#B@#?tHQvq$??rJ@bZf zku8~Lv8*=|Elm1|Y)=~L_HX8+NfC9^N`;xc#oA)1lEpef{p{NN#OkpSQFhHoc?l20z5RwW zMN|%|zpA1x%=QrXMXD>c8`ax++4{U^M?fq&i9>!@;al7y5s_S}uKn)4bnP;$yiBxu z^GghCh=dH^&?D?Rk$NAkT_vpD?8I;Snvp^!_Q`m)Us}5hczfR z>O_Z#&yqvb?;eI6o~~{9yms^2Yr~;U6*<}VZstMk<9i#xPRP;3p2S|M^whiR_sl(_ zhv$s~FDuu357cSdsWBRQhxcXKOuq@Fmp9OihVx;lwjm3aq)s zfXpp&WLA>ufxW->-b9XoXBLa^QKcJd&gL#&wS{{ksP~|%mKn)_FoU88%};S0hrNPU!U?zQ zFYvF`YOX$YLkH(+H{l0rw|8rwu{FV&eQp)Jb^)&yZ(*;6{oeCHhy|n zZ9k!CZD>en(=NunhQ_mko;El>Kvo&F=GRu(>sF^o`8h#CAF7`9AUgB!2xGrf4#{<7 zAM&V|-Idg}P5ItXK50HBBqB@hA=~N4kj=y=uj0XQWR+iXz83S4rzlvv&Dhr#Q6QJ?ZS z7$s7AUqO9~uTGnnq^IPoq>VwHD@pR6->sXr<`@hyUkhh zGwX~~$z_%lA~~(adnEpuI|b!x(s>U03QsK=G_36sL`#pU#In-3#V%sZ8f2}VJ`=l@ zTMSQR`#R$Ehgwv;a<{-(_HVS8O@e2%pOkX?RFWm{e*)n>Uo2ee1i_4d#cvjYlF?h0 zu-3T6U_{iHS!}jT!a$q z?9h z>S)bkq3Y1Zg11ok@}(Shg!L+QLw!eB&)VP(gjuvV>kx!kA7tLZ`?=jW$ZRLbyq9=| ziBLLHjFOBP-ASV`YxK+%AE5yKynJX_d-5&k6bbeTS?i0jIDO(WB5P<7YIx(*%uN)C z;+YMF%ur4-Xt+lc&!9)lj_=HU%(jSPnsYKwaxlVX!JqE-o-7^ctEtZh>SOJ-FAZHX zDbny(F@`i9iw2@k!@{X6B~@z#E`MI)wzuYa=3<{mYT6z9YjKp zi91y!GCIkZ8dSPzpwHc!=#K#4MjF-^UlE!T`aYL|)RBqR%Y*_82vN8sVgS2m0M9@& zKnp{Up-c94{lV;KViYtnIjNwMQ+y|fbfbL6ev_B|1_$ajr-mNOetK<$SVKjmxa6*m=R4p>E6X56tiEf^Ht7b9T*7x zm7K(Sd^Viq;)Du!+d8nCQ^wF#(w!|61X_Tz4?3wNotlq zT7MvqC}+V~ekY`2|I!bW=a25Et=eB!TfJYIaIFWDXkxuS^j|4Qn>*Y)OF=xb23d)F)4V{d#5 zT?lOyF7coBZBBjU+B4bK>}t-gZw?N5dUT;qKvIA_t1fAEH*UAZqdRBi)>N*$QoRhf9B%{OJrIa9bvj+NCq_iNvlK0U(?H13T+$oyQzpPDT%RCiX% zsTMb<@k%=OtkbOdeCCISAhPEdF2Br-ifH0lOK#If1ypzQLjSmz@J>%xHtuxd#>j{D zk2(AxH;N=rKEpyQG0%NO9vrgv{Te5D?_O6uI zA1Hy&LH|TLoJ>Gaf=l{F_OQC5F%DAJNn6W8>oPXV(M9SNpd} z;`BKJc$;k!ri$_6AR`VA`SGYiY6rIfgYoOU77JZMjxn*+v=aP}!m}b|GJ(?wB+CZp z&t$Wl55|P1m`}WM7D;}W2?wp^pv!&_3b!|aLUKZxy6cCLhU>X&;li;WcMYG;{pTS! zGP1nDz2|vh$tmE{+2bQ^=NGH8`sCW-D4|9$Df)Lu_RJm{Nd<7;e^xq@yr>vxwU3Y8 z*hPo?+-iN_R$iv>B%im5=PAbYQd@bk_iDH#b}y=>MpCw-UVS6UL6c|Fdd3#JlTJGgKSj-{d{{ z(7n8t?snpARQi&CQG=9ra~f1{4?L(hHkr;dUp}zXe98N*=KZ0E%{$-z%)I|a?G{FC zoXYN&6TituuJs~kn8<1y+3ZEmGLetj$n{=ijfs@2*>LhNYIVV!V%0H(sZ}r(ROXgpww^a$ToH zDn#&R8=OI~)&^%0Txf$e1ZUge9D?%+uHio@sfZsF%+A+X*=S}>Beo)!)fCHgukoS( z$J@KWM_F9)-@CbBK=26)iY?Y?qYa7`T5O4U$&wB3$_A;RLba9}q}b9*B|)qfLU)6C zx-6#kQd@1Mt+ljXdsDDh6Tk%UhTsLXYQRgMhj;<4+`Q!d{$`%tBoM6qzyJ5;^C3Gk z&&-*bGiT16IdkTWVtbH){-l5$X#IwOrJv0B)4U6gIVjYcTns?mEInW^KDJesvE-V2 z0XWezcOfl3-o?Re7d=|~5%IiCZs=%?nH5fI4b(Hn5Ra2uWx^sHtXEA~MB}7hGU25r z{JIH?TAb8VCM;UP%a{p^QaFq}L@@6&;R{VzB;us1OjzUr;!Rjo;iN7z;bs%Q$%I7% zjEM{H2Rq6P{ylmf?}L-!M{4F+ zlUR5QiT-XjHvzxM6z)Q~<-b9S_6y60&_I7v?t9w2-vL+T0`=vEAERT8Jg9p>GotRK z^WczcVC^u;;==d%LTlwDHoF(MWFMh>iLYJ>ru@3kC#*(Y^sU7Men7e& zr<0Pr{!IOctyW^W6R=jC?K%U;&-0!g&?l6hbJ~h=6!mr^Cg{3`z5VB7v0Y{_|D8fl zvhp~;<{FQ=8%SgXCC%laP(2`?{T`Qt#*mW!ZiTlDcq^)j=)%-3L~ycQ*8Rd8axt~h zWC7PK=mO3*pgZv5F93XA7x1VzUce^=z|ZIfIP3QR0{pWAK3OfF6Z77_rw1m23xGlh zV#ya6>HpebgN?RXIcy}nUjlQ*IYEOnME1o7F1`Pk27d?Oad(fA{6S&FtXSTEw%And zRJ&4N4pIwxq^==##W0ebhrc_~+j}?dGY)1Lt+$Bm+dh2ZcePLO_ZzKX2um;{33=N$9lGST17b#K^X~hO?h}Ia$zFp%PYOWK>jiY_rv@$Ld*=aq zg_xmtq99)vApCPg4503LT-BMFUZiC9gyWZmYfn$kAH{Q9ri*gH!caHJLb zSaTV1o4vEX^4Q=qVh}&JtPk%iwHZ)A!_84~di)UW2NIde)40^fanA|)=-3GjJY-z7$2lOH8AAw!3aZj~nWKp+j=fit`RvST z|KtbQwWp)5^w{%yvrYw5<417<+N{m}ZTQne`bpiW_YjkBhn>a@A#>E9Qo!w~#*2C8 zo2;nTQ6o?Ne5fUQ8mIG7*>YfC8YNd|)DdWKZi*7GZRyBE$IV??u3PX5Q9-=rjXZom z9)V3jBhA6>f5tYe|4q_`>l#`;2|<>{1m%lP$u}zu*huEQPSmq_dzpMhxY}ito;8iI zw)%=MCGU);bJB@tW@?u{Z9JhV@ywudl>4-0ePDd6>jKWtn`0+p=3$I+f8HEPA#S|~ zTR@bbEn~`Za;(B|HN|TPFOtsqV20ZVgU&(L3AJ&u$}4@Vu){5%Ra#p+O;yfAgI`=Q z5+akW?ZASO(J}S{+x&=*HR@@g$x)umQLY^7@cg5dL)}HnqPc0?KQhXT&cFg5$=DW_ zeTn;7CX@0mBd_0%(>Y5YSPHmC;{do?+K)|IflafQfc)<(E#Iv?&1U%~(O^qz6DF84WzPNAt6RviH@4s! zCbb7FHl~B5)T?9?&3eBcl$#>9xMPZ!GMj9?lY2zz%96&)NjCnDi4Se8JlDowG4Uad zm0z>*r%W7QA`@-=5fd-AT}arpJ4pj+n#WKV)*nmt>+UvkIp~iTG6+)(0>pC$#{+)r z>)!CMV#D2oeL1PQi2cjBTcwWe&&J9{Qn0ZfbZ2899MzMJUHJJvA?JRh!RX>;BFH?N z=?|s?(=Ky`%VGBrzyfs0ySEFLi95jZx3L%Kg5+na#HQTM1bc-X@MutUlsN zrD?JBuOV%P76<V^4tc`-$yLb5Ep*iH44u6g{AwZtdkD9Cd zen_n>63Cru8*06fe>)&on6zIibgtj!~&Yl=qv;E7W!@UEwI9k20B0 zA2R9&n;i`ny;p+*i^?A;WbpHCg-o};p^)j;B!x^D;tH8AoT-p$#VHDzR-CAisq`3y zOr=K<%IY&OuqQ<4Nm04*O^?>;1baQd==G}IR+M^&#%ealE_-nvy^ZHjDN3YkCd&EH zDC2zScb6NzRd6pBf8Jy9JEUg}-lf4;RuJY2>`t0&`4-1{ayTUTn6{zoQ;j`!eTM$o z#qyzJW70c_B0vdW*%nDAN~h&@JYw#njKx9CHKl{{B4*@~bTBD`Wu+lD4ngSIjU}5vMD(qK* zH101XXM=|HU*&&?I%j1DjVPZq&siJ?*<&VM<6Kukz?{ES(QXL*m$DHpQZUGd zpE6dFbU`Vi%WM4S;QXBpF#QuQD#i1EZ7JeMaiRZxHu7o}tm%Yy*5bvqN0}y)Xxl1up@8j1#D6(8B zH|wT?(wj}Xo)3|hrz?GpVt5x7FHycGe$P%vH%>Vx9erj5LbVd>^^w-hi-lXy&W~=K z$;lznT4_w$;W!`w%_Za|%ded);US+P0%g>OS(A&SH%vh(M@keA0JEwZI-MoF&PIQ) zDILzD+6Z(6sgC}+^#OzZSdB~=ijiB9Cgjk0YP57RgVGO#bIp1Rc*U+snh!K$&UnGO)(}??gWLRhU^ATsl^N4@tZLyjSgjX40f-=^b(tnAv$1`8!dF&_Z($MG} zBSM(w?x9iKAk&Dez1#T3%K-GoJ$8D6<>@Tx?>3OG>qhnb#@uy@d@E02&l$tvu}*P9 z&Z3)P*;vsmBa-JV`Ux==S*maL`~>M^Aa9l)u5Jx17>EU8aa`}>3SBIf8r$;cYcDg; zs1fD?a-^B!JawYr3_6iVCJlG_^Yf$1)O?^!8hbJ!_dI0%4TSdq2qlz-6V9ExN!@t| z4b_yc@SkEi(|k{42LI|i$Tg1yaqm?e%|i=1X&QG`wBjlv-dBDl_5=k$9DLDH@o1~Ux{t!JhZwnX zyK~|rf_RtzD#pumE@U_NLjipK)*b+XrN^~$KC93MU0?zC+}~!Qmf6}$L-X4cZXUds6P_a@?N3#?*{eG%M22FZ>!o!Ufb3IK*i5^o; za|J%CP+9lZf3{cf#($Ms)f;${1-2|y5n!espzloqyw-1T?JsG44Iv@tAtDAjUry%lfQ* z9$EOXtTT)&r8@Sd^Jd3uUdnn93Pg~LIaX#bUNH!%0Dnrm1Aj`(LnSoEiLQyIle?)i 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�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ⅈN*iBK4QY6#Yo(#|r((=tnyb=QLMev&<;FR*!<% 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ⅈYkg3>!K=U3JIU?%!ie;eOO)VR{o=5lB7aN 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�klykK^%C3^vX&^b zPi+R1Vc zFZw}p+B4o`C-3NWuV&nFomBC#dr@O63f4^UHjOZE{0J>68E4t?hzD`As`GE4ql})x zbiqRTJoWXbps%rDFWaC5V@a3jsgDNIBJa|)+1U zvEXRw0eiM*l+qY{(cooN4@CTihj+em>?W4*AK36) z6n?tGze2d~UNxw*_wkVK&(y~|RPn38Zc#ieQTeV={HJq>$HjX=YABkzjQ|lp?}Bra zbKh?#jWb-++;A?<=1?Y!ZvM(F$r*lL<^Ln@T;QXsuKhogOfX>Z3<^qp)Kp^&7ByIG zNx_Er*upZode19SFs?f2Siuf6tK)A)V3jIvmer>(r95Y+Y; z(R>wFSb4(ai91`O7^7FVu*nwoGT=b1uSdg)gx6 z>9h~gtn}+qCbka7SQweULnxr!#O?TPI}uQ}_ODj_2Er$1@E&@bpG~XrZeGeyTeEd- z#v0S&=^<;beKG=@{GjF~*Yv7ofZg9-3{HQZpyy+7JXCLb#~XJm99F4TxY-(G{`IOu zXfuE)Snd0-6DuzJv>&erH)|}Uema92jyF<%!RU3wiv{kjQ zR|78uJlk0n@84`E_ZP#Q1S<-ESz*c5Q;#NVjQN+V$BNqbcU$3}gD9VG(Uor$26*>! zZodC8tx^9lBnvx$E)@^VzT>0agx&3h%{kCPvuocY>ji%!>nHPc zIe4i4%%C51>2CUTw{=Zsmo=u<{jW{!9lP)dFoluD6gKBT9XV@XHr-4hQ>*AG>5G#o2*`QcS1<%PI9~HsZtM^>AL**AGN=xqpM5(WrbJJ zkNV%_cO5Xgc3qR1Vg#BlJOlpb(fX^oHajr0Gj2V7);rg-a_Y6`iJ>Y2)7`|TB*{iB zMlZ{LmdEQ1xF%GH31x~`6&L`m3=P1RtSpwmhb5f`DAYBwE&C8#4KY1mT}$5>{D4m# z6QW~CI`^R8Gj4Y4;YT3f`h36C_j%j)3K|t7cIukq#cWH)I_+RufBe8bo%46k@I9EL zVQ1Gld8#q1mpBs|-=4E{2IGSv)VICNNzcXu*s4zBAXSNe$YBStBhEi8e5TzP=wTX`ujq&Ftp#95r?o{tYDi?;>v-I_d5 zWX)U6+V!X{JB{%Sb28$Xzk*M8<`wW8PuvZHtPH$+t+-_?Ba{m>Px;qCUToy@P9*(49z5A~rWmCHqT%GbH{9!$# zs)3Oh1*YLlC*{$|$?49!QYX3_-9wRs9d(!VVhd;u#VbCx8h*!YHWuG<_%P`ngWALC zeQ9&ZZ*%q-1}GOl5c5Q{RdMH~>M5Ig6^9Ct#VC#T-?%0l4Q_18cFTSS$j8<{flU?v$^D)2SR41_89zUMO_%ukT)epYw^@r`b!#A_vtQI%$-q@*INN5gH3=&N zj;TLSP_Fq_BsHve)={GXPnDQ=JoDE~yc8#(M*+GL(3Jv>euw5r)BeLjudYsw0(2#y3jkeN2@|j4 zKEtB>eO7PN8pS;+ja0nDQx@gk^B||fvJEsIvwYF0+6R}nB%~qH)02A zo%I6r_RVGGGBTNYGUV&{?zsf+Fg-untBMtFj7{gP5Igk$;{4@1hX@*)ye3scp4W>6Us-H9Oo znThXJ8{$|1PQFB_AMxTd7;TWRy67Mklx?8%ku zj`0gD%oV7TYJVI9_oAbBySwI5gj)WnLGSXHv!8g{nJs9=NSz?5aYXMg_`^e@K`ZG= zPE$*Z-3bZ$TegXQS}wMn($&7_Z83+D=ttW7k*>^e-JP7hd!*((!NR7ij_qQfKC4T> zF7=6Ee@b(*e93|nU~tS4RYQkRkC*JUvl^c}=4*^Hr}=2=F#$}J*y$AS{sQin^Y>%( zR$=;smjDYO;JyV#uH>*24{PgVnHgiMBEKyIvMwvLV|wi%I_{(v#SICBv3hm+zTrCitCZZ{40U3~|tL@P`M^1G}G?g4|LNkd=c$C|)cGh>0QX`~c zeco>!8=x2dsP;BcBy(ILS1uEX2XT?QNHRaamL zQ5y~n*ujyCf0xL#HBV+Jt5f%S506oTU4rIFdPAG*h;;8B4QuZ#s*-k@RHS#rSsLlT zE?Tj=%8I{aqz~30_*&e<|rO-?wRCh6T6qd1CCETZ^mG zm-94WZI!b!mcH`%U~DfYzBk#<&REmdLNIFvJ>iA1nhXbhJJlb}3vTV7ltYthAM1kOZ~D~c!XZ3-Z-T9xtqVe|qn zy0}|sKQEV+RIN4Lc9j0Sbk@#WjQR~U4 zIc*x1KIhoU972sHP|f(#Hcn=eyD(ID^1y(^RS?T>(=7*t=(EoPS63^gnm3qkDwC)H z$fRR6SXC)d5V|LUWY{iuEsA_u+|Q8zGr%pgb4ZLWrINW(bnDgN;;!MUu#bN@MKRr~C8V+ZFyTaRX%+QX3fDkAZ< z^r&Lza^0gPz8~n)JP7f847>ETwi#s=sh7p)JCZ4*b*z=F0lmnM#7ycO-W!`--+JZB2R$TfxJp zY3f@faVK0Ox$VbIv8g2E8HhE#kFMoep?K;havx_0_o15*1^JA?u~639aX&tNUx(p9 z&L@5HIpqqP4AZy^w+k;VMq37Xa>+9$c|l^Vm$bkn<$^&;!-psR5lJI2(015&g^905 zEB+whv+pGF#f2q%4o^Ip#Nro6EB-e74dz5;Ze=13rSo~Nkyfwa5dWjV2p?w->k}fV z#_(zG^x0ev}@D{t(F9LT^PeWj$}($IPcr{52S`7%(;y33PEUtruZo)oV-45f@g& z_wlj#cKlM>gSNWAnZ+#9wORd5M9|cJ@Pd$zSk48^W#EN)&2LQp=k6vNesO_SuVBOi zydB?c>DsIXFFk?1KMU`iXn(KY>Lmm4fHDBPFL|+tXP!)E_vxd>T%ni;{vJeC)xDEg zfoFz$)uMWySd`j#?U8vE%aic|ZiJZB@NllGUX93N2$C`{lAV{kQ@^RiSx>e$Z7&2> zn%0?=`=132-9|DJcu(|AEVu9^H)-A^jn4QUtbG047YNUT&-LVY|C1&^?!_G5iLQ)u zuv3hjP#ECWVVL#g&?l@XUkhTH4t;20$m4XM0pw=yad*GqlXXt3RX;+jKmAxcL#RGk z-*3O65Fz<81nJND!xOli-~5)}RzuJ!)OMZ|O-Q;Ge!7J8GP%DThyl)YO5`R8nIi`U z4})Xp-gQtBJ)1@5Ts}n{Ggiak+W(_C2kNd}VSj;?*OLAB~2t`!d7lEoI3|*~vRgS=CHXIY;6A zZ{vKnjt{=4JfA-J%=VIec8lkGgpZwkR?=IVcS?%8q1^*vmT#x)UF#<*_8wG$UM$&y>b;J2lmgBA;5SOhoO#CrdDxiz(w5ptm@La_D0qM~ zL!YAXs{`3sUmTR{SkHVh zfL-DtA<-9jGUuX)%QyxZ=H?8(pqEyXJT51HI3F<%U;c0|&{thUvT1VbwZv0$@Tb7Zo}<(3 zRPO#6<);gVbL+a4Nih*4kmzGdT%To?Wjts}*$5+**$PL1$P=3?!* zT;g{$0fU(~T)ok5kQ{PNcK0swT+`egxMbdQoB8f@-{vbZ&I)$0aZqdh^~E+bOB6}+ zP%NDYL6$_79cp=L*!`_QRlHOCv9^I<$U_H=Tq{v#7v_xSZw}i>uE&(9sAsjEv(b)4RzT$g0$DqSNsgV|vxWO=0xgR+wDyNvbT z=Z{Y#O~kdOQH$W3YBouE_w)2g);4Lq35N7`zL&G-nTR^mBgU_()Uk%Yv zdcAk9!;keleBes;_B;{gdWa*KdNiqJVV*`2rZpDZ<;@61d(+SyR0=@K zF=y@y6V5A3rf5cPDZ)TV-Yg!#tR~E=Kb6FKETvFPuQ~T_P}0=5$#%b=Z9594?%hH# z4PE#?*dJ_>F{yaiDCF{I@A;{-7d_e44z1U`jHQ008l-yvx?$~%0TFW^7q2xGO_lt{ z_8ymDh=uDOy0z5(-F_?!r_!nv4=95b+1W4TD_iYs2kWZH2==+0LsBFu*jB?;)W%Nz zSfi{lQi_VXLKoKDSBcU~m4?@dG-k7oXN;tiy+ITX$%UejOEiKLvim%@n2c^c8(2KG z(3?0O@*)vEr15dDYL&8R6RT;24dJXFTs120%> zBdxFcLd%CvwONcCbd+p(fEu*apSn{?vftF5U;aKNby+_uAuP>p#q1X_Zn@Tq>XELd zcJ{dZ{h-#JH^H))o9mPh@xmWh;;n?6_37dD>>By))McgOhSXykLPIhm%af6=<$L`r zbt}#~^91Npx-pg-VJ^40R=4Kw1Gqm7AQomx9RU%i_q^;>K>2vttB2-vc8m(h@uR$O zb#gYM`gneIY<8ghhhts#jO@wE-q}B<-5S#@qRoDKot}0hN@^|Q(y0;!arc*PA;ki3 z@nknB%IAksp1%W0qokIeu{)KopY~>ri(X8u4)5b7yFX0#86dfagTr%rWxhuRb2f@~ z&%-|Q093rY_Bvo+XL7Ml{OOnFuE@ia{{)-)h-)DF5sT&mE{EN~tt%1!`X3>*(FF#f z`MA`o-_cI358J>zV^wBLvKGp$o77Ea=$5#%E#|DLaz4tT0}z3;*%5PA6I84EF3{Sk zdMYjLAMV{vu;W{+Oq{=>xEavn>59#@YgzKSRbJ(6iz8P7y_F$xb~uIRG@R%idVPNa zVyU_9L{_DTcU+bpJ1=CX?b5ijQ~ORl6%;?LTQpT%<(Qju)Kl28ilsbA-o~nlrKY;{ zX&u?^rX7V9uVBJ@WRoV&YGMcO@R42IIZ*Aa&o$2Z*je6I;_tr({iH(|@%TE*<7@C+ z%IL#p{X6?iq73Elrk|cF3oQV`KDoxWhL_u>Tffxp3`4pL;}dws{W? z*HpNt2N1Ga=;Abbe`vErwo<~E-uxbVUZOYm;mqJBB5HT$?ju`*W4i=z%pWntA3`3? zro$oA8TrKbrJ%hQj)8x7X%}AXu`sXa_1q{9YPM7)CMMcxND}eDM|m;|NGi?gM-+^^ z);W`Lgh*z$&I#z?#h+x%%1Pu5CeG}(k~gb#FK#VhOHX{6;*pwyMpRwQU5=sGlFyD( zd9{sg@0fMOrIO~Odml39+%Sn~bC(tb+WZ!E6>ck)a9g<%ZmTrHZOE!2+%}Hiu|~x0 z@v=HVi(R)1*`muwA-#0#U^&NB>NirZ-|_Y?>ufYWTH$@119w^1weB=y+Y7ua9r86L+c9viiRyVmR{djnPZ8?D z^PX%-Cz@E-~iW9ecnY$;x=Q(;L#(R!q6QeyxN#Zik(K9i^b6B+(;#eU$!&1o^ zmQ(8{x)!3C-?$MsG(#9RLm2jkkXfTG`r4(9YGhkeZgn&^4$Lr}r*~%=c4}zZR6sh&mbe`LBuUlG-+lz^WIW>+|w&vQu+}@5R#Zt^ccGXR(5+qp5F)tLj(Q z@|ZUB)nWaj{jq8K0F-?9GRff;~T+0BQ|Vunk32&Y9K#_nh+Gj zb^%<8Ih%Hsvsgb7YeeR-&Y(Z8HWy5#sRHL!2revMTMZut&>wv<7Yy&=z=}e(C*u&O zLnC`4vYdhl1N88}OMc1lr#{3VP0iJHq^=a}r?bLya#ko@@BPDy^R4;w0+f5%9WG^H)wA0&=QqP7- zGqA(G{8uD(OfE5O&tO8@sg&QTwIh}&nR{@ixt21aD9af%xUEpyO6Aw=#mP!kpVX0T8(&Bg9{de0H2W)HP zW;^(a*x12$+_N7g{7Zk01RIPPLjTRROJj}!?ib9Q`C+8h)PWj#EN;_f{-#!^&}Yx* z$Nl07`#aiJu=8a{GDK>h!9NWvXAG`bpsV~l%Hyd<{~8~qXRF{>6xoFfwh$%#X9JOq zDh1Od!rhxA&bLdW-GlzP>|OgM6B60GI{GCOSg&GbN3V8cTUJGxza!;My2wwY98<8a zmc^Gy-KPp6Cvi5~Ua7Lo?tnj#=s~^{MQg9$b&8!F9H`w9?UacinLqE4d36i`Z<-al z!@qAPu2)1Rai(44MW<3~99jj6+)^)z@iUPBP!q5fjKEM4B)=C{UbHDOSa`@|) z-e1o`x<`=#Ah|ufNFPdK32R7&x@#5gmFBj1ZiSm=)ruvlfP|g{S<4?7zrPOC2T>^z zdXLHwMg0`%?V63w8)ycoa$e?Cu;6+yQOcNTM;U^^SG+a-3iX8-=BrQm2Bwia)hAf> z{m5n4Rq;G9^yQ z?f(;#?dK(qw-!ZULNyf-Rl5Vk&i*+TSSHAc9P%>Nu46My1<8GK=YFB=C!`{%lWGc) zIZt1=1_huqV!gkS{uBCR8JP~-a{n*!t?~=s>icHaqk1`ETSYpo85ju(0jjPml2Kr#(8udZw5=>AHRAB~Gi`H#X6?^S-(k@;+m> zJ~}+`ckis<@)w%_K^?^x3%hjDk@(6?lrBBU?dKb_;gWOBa;~{%f!kZOZhm2aTbp3* zDNqSa>Y|MVB=;8};gK#ndnCy*&ENqc;75M`ubBK_A|#c|-&^@}8G9X;F^3J5|NbtWqus%>7N)ee}_w-V}yfsw(LplQ+0IQqeK% zW+cD+AE@|=HgM}w^J&;L>pkbXQVC;xF;&GKM=-%cE2!<2s^S5fDIwYbimvJl5=uO1 zM8ArIvfi?IM;$hI8qp^ens9>Cx4EC6Ij0c}4s?L!`CjfUii z`?Ck>Vyo954GT?%=ftGtIOrMs!f|(5sTXp;(NIXp!$zwkj>nCnLL9#}I>&MR(eUnZ z{Mqp3nE;eb_daY+_ST~~=WMrFrhd!ykLrUHJO z=uuw~K8L4>#mY*8-HuPO9a&Qw;7RtUVlUNP7Dh>91`(_ld+#R$*J4>Oh&1o~$4MMZ zRk8BsKPYhYFQH)afO|I@+EB-HH}2}xBE>@NdgnYVe9o&4g&@$g*7HGELAvL0tTkRk zg^L_Qc#?79m*(kuz2}#|REVOBPYJo;SVFAuX@4X^wX;i4r+O|H6#sk`O??4&SgkEp z!Rm%c>I*cfsW^Gygy~3kIRya4P;oP8xbAuYr z4JuF7DybU{%?)ZeH>d#8g$z;NpmMU*oH^{y%FsQjMW)_|sCVBpsP`f2-BGFrVAD*7 zbRwzi0+N#a=3(>MdS)7?g+~VwLzGHFS?{PkSh--@K_U)C7gToO{%pbML&}ZTh@WXy zS5<77-Rciwwhd|>{2A#|{wVdE%HM3tFR&U~NEAuc24weW3GUAI^gk~Drq7q({zbq1 z*G_>zL=t->X{u;|7^4fnDGvj4dY#%b!g^+GAUI;dskGoaq_8su(e$aOR8=gUy)D;5 z*|*H|v(QSSxl5c82x+OZp+kP5)qydf0-jrpF}Q$BawTgHE)$KYv8o2pAkmPvcw@YQWDcwB9DL z@{)AP@o{3ymGlWEO_wZJ3cG(37nt4b^q}s#D61pr;&kXoe8}is?ARQR`{Bg&J-o9<8 z=$+JygS8ernA7#_D9H}y)J@&A7OALsip~B)Y=wHFkNI61LNbnJxt!U|OKbC69F_=Wo3{1E6?IOG2V3ll_S#pnQt@#}W7QboL_hv0rrLQdGHTVAGta(N9s(A=4AYh>i4vsW!N7LKmp6<$U&tsS) za78X7_*mt`mi&h0rJP)3CB!Khh**2oINW6oP*YS-bEBFNQzb&%t!@gQ}oUj9yc znb5bqWcb$QK(5|hWleo|qBU+kFD<8TBzWA1WO-M?8}#$hL~Hy9#BU~Q{9k!o{Hdyg zH)7rPH$+0GyoqGecrWN)^@0jvg1ws8CG~*EXYLZ^+l^?-FJ2mBTqNNtUl|k zmQ5YTKf(&HCc&x4SuLwg3b2XN9Y?s;XSLOm;bCg8-X|(B^krL1`7^5l)8$5bc`*|> z%7yzlk!eURdrKqge4r_>)u7p~C6N4JCodn~j8uGT)i>!H2=qD{`)*KBMd!@q33G52 z$mM~Fjo_6lp8~Pm{1h*`KVI1tv)uetp+PMJp0W`>_RtG2)WWp*>{Z^o-(FTc*h(R@ z7iX`f6ya&%xzyLS@gtt%V>yG?S^d2*1C2Dc@Or}mkcXWfaEEI2(;u*Daupa{-e^5j zE>su9?5R*(wELR|^F_MvqUho|9|Qt*P^w?&PA4K8Kia83#?X1D@W@)(70YY?JG@RU}+o+s&W)_DghLT=56F}*y zNP~B?=KbwVt}i|=lm-C+maECrA}I9tMuTU?BWVxydf#l-Y?1~~rH2}vn)j_2SqEpoX6CJ#Yt*IWzpBzV2BQ@d zWQVhj+gUNalv#kI>9TW`UwIeJ99$qce-}tWbcleYfBBDrg#ICrLLbO@fT(oU!mmMI z9Dq$n6&ztLno!zpVx(yqRu^AH{4W44^1Ey?7r9+4 z8c8;Hqq~k;*&hE4Zgj|%>cI)XR7-Nh5d2%b=8a+2qG)N!#HLK~gAAglA3*r*f$Rk& z_s;(ic@1B|CmaxWI+$J_y`{wu63~+NaR6(dQ$q)+py?0>9KR6{Zr0*{BkQt|lN^8= zHskmQl*>AgauM0mFHgI0sLIhUL63G3;nMGO)XSewKa6_$oxGjYOWfJhm3Co8o^#D~ zv-mfOc!{(4GZYkOZ9Ku3(OheY7tr?%$w7cKv}Q!ic!&BY5XhvRiX)M7 zOk#wlj@-i5x`|8LTi4_hwG#drX$}$!u@kW-wUc_Q$Oq9yuP8^0d=Sfq4x%7vj+gkE zBuJu^CLbWnPVMW$S8TQ8mMYCAWqXs56^d$85O{3-DjegtgV35O&Co5keIl4s-qJSy ziqdYEcdfE-WgSgjNfA&{Cg+q~c98;xK!Ey?78Ow+c>>`T5eTaU&nQ@VSuSdO+tx6k zb{kqi&{vuo0(pfB)X#Xf s;##88&T{xyRsYWIN70TUSq*0%mBi7)$*>R%iQ}&oe`kTj5w)Xbk|%ZEl(8b8)bU81t2@t6IXXvl zh3Fiep8g(mba~)JU{xhYa>bHGj&Mdo_vQr3edyUGr;~D=q zlSqqIYaBGH^~pllA!M=+ifxA|kW(05`htw6WPBS){}~{>p#5Ia3bLl?2sobOVq2?H z?^6^9!nSq_ZB~?OMp08pGG&`eqipZ=<6#vp)}~Og+xAcuPHbL|Hl4@7DOPwdq3f*h zMuSJJ<_oH)6$T2d=F_V5Rh6+KJ?0e(6Gqkf>jT`NL~w;Q{x4SeL!!4utQ)A)_;+?& z*Fw%s{RBTMoOGHSPxutLv{Sd@R#iT*!V(2~gQDJ@sv=C1O)pKfHlJ2NnN(*Z0y898 zZZ-FO(If%6yoV^r4b5kvKvJC72`69@^s@gi1G&GG>8)O!z49`@)yQw5G8n#P=hE>GR|X!K2NfP zt?`Oic^?UbO3!XYadn;r|1S~c?>_28l#t{-om_W56(=fk7pP48UD z+_`0~bzYwf$t*(>lF_l|kL)A9&6qVhKkl|}kfO5z8lN0$eKdO(^)Pf_Bz2cLXWi|3 znwiP~WY};y{QYvlk0aqtrgR^UU=~Wd!aq zmvIu>{tZ(LY09eRJ*%ou{KY)=vvEYT>32;1xndmwPmH1dG%hqZ419^Xg$IXzT1(yBzC9 zV?Ud%r$pU1y}NB>n;p=0DgU|DQRD_tM@joW!KO`MvR|oW$pO zS4Y)9$4UH?7yduwBr*=d&=xD-BglE34M9%ONTHUiLHp3x5XnNRH|)gak=oiF@|;2K zjc^OKzdB#G6cF|KH@RE=cIK+!GGMuKB6o+Hle7`xB1Whu<0$)rDCaV z%6Pe;uRmnN6U9p&#eSrW0xWzdj-kg|G|WV?^q^V|Gm#&07TH03Hloj31mgll+`}#m zMI}25FVW{CzNW;R3~LdG7>Y;o5;sz?&r1|sO7 z$t#JWehMz$kngzDgdh}CbR`9Ba%ntNE1zCdymZnAf9L^VqPNHiKZK4xAnnO9Cwl$&k z0ll0{t%kv3+0loHg`uSfi9U4;jjW6~2O`P$+9TGJyQ3AGt@?*xilm34??GJcaOef= zyrP>Y76xAIn9UJDooUUhEm6N8V0)!wFS5DEEVmZjTsC;3Ghjv}{e$2T%CUGIB|s;3 z1$1T(kTvg8U>MFRPypMnfQ$td%DC{P&(~o4cl{bz^UggYV~C7}UdDGA;v=g5bZ5rn zj>y=Jj3F=Me||pWjLwXIHP4D^q+iuyG8QT0tZ7G-HoP;_+Af*6JM5-5_J~%DCD%8D zZ^mohF}H|6r+1GdQ{*{y@AN)wy+sB1A(V;^O)zp012%~KD2J>VTVA4z?OQfOpqz(| zuTK88f6IO)F`B*oVhHr62f#F1Y6p3i^np+JSc|&Fl1mE^dO(_O_@Q{k+qEBQ4)hb) zlLU6d7SSuYTl8F_eJ_b8)vY= z@l@M$UHfUKUrvty-~$?|j*m2PYekOF7dm@GHeou%;7{SsLBIiD8U&dhusH5~Xb1Or z2oiaKe!>a;=%hyL#nZvt$jP;Y;z6UdCgEh~Gj2_CS3ln62^_5TxeJus)d?4W^+j5SHJ!H{+H?PH zTp?Q2%1(rJFC1*WI27eRzcp+!UCiXKO(MbVhMYGyC%F@&IPO@9}eEput~468uAbmbLDfsVrVH@8MF-rTR4&U?iNkX#On z0OiJ}`zkOFYb~5k_FU1*J}f=J%Wl`~FjeVcs$#NnUG-!hQnw+>pZ*589vwN3JNp4E-lk7Q@NvL0w%n-P*IgLg`U5obzhA!@vi zWQIh1SqB}6L38zB?pyrZ6OJmM8h#~rD7rb(MGB7*Clv$J)x@-h(@5Aq#TTN z-qCf9&PieYdh!(i>UD{K53@pW^)p!_E#7U3sjZ0AE;k?EZHZ}?sv{cK5Bxh6 zU6?2WE}{;Vx;vrfI;}6?8lq~;ysHy2K@|j6fN5y1PIO_SAn^*#UCHsrD>mV>{M88w zw!l98U%ECK@R>H2{~esJnKi???*J|A~yOFKky@_=OXs`5jXk~*XJVoATt75)3*HPXffb?nLQ(~ zN4HHjr(mJvu97vA51NzkP);GJ* zr_X!IG9l3Z*@gn!X*IO!-S!faQB|0h5-T)9HmaZD4{q~i2|aEDFbpHJ3|vY)byb*sJY*IW(I?-2x{&>tbpYda54q( z{x11Z-&CIwyir0)ZVw(D^!46-TE8D#R>FC$1O=zH7Y|%pcVR^Dn5-W)*S$X*CGy=@ zbNDNbK+$s zaE$Tf;3o;GG+qPEe|^%}xEMmWtAewC=1)iV^IF6DaVDAV&Qne6$IadSmoOg4>{l~~ z>6iYe?{9c`bEbJXb6Rr0HNCH%`=vwQmUbqNyTMX=lXggE*?VuJ7t=?{(VHBISqInD z-C2#6q08fmZvHqt)7<5?5AQp!^j;{V6&6iaJWLX}V@(B$sK6b$_o{h2G&M-o4!uLn zDm(a^ot#}7K)?3vc%ZfiFN6vb=e3NC2Pej?TQXGp4(mjT`B8U7unJ4*X}#l=uID^G z6Hos~JCbx#_C8K3uO42%uOl_QL>k=33Dgq>wNFcXcH%dRUAVRnw@Q8Km2ljtJeGh4~W=yV!TdhPXx)!)34M9w`9_2+KB8Cf_V zYEtF!l`m`AsrOiwUb*2q`lYe4^ZngR8if+Stj281JQI#lkNQQL1xH6c#YFC>-RLHMdBrONa|Ob=c(($JR3XDu32iQzEhl=>FN4{ zM)(>shF+&$v(M22z(z{qu07}j*lE|G$G*=*n3+a1^f}+tBsH3}ZwK1N5og1a4zi_h zXO1<+u%+le+S=Zc{19>aCYvWxwb!#RFlSd)r=w4Y2Cfv)BBux1Qe=I`E>dYS$@5{H zb>*%1>*yh_`TBeUb8z5Fcgd7ok+qx9d~!rOAX7kz4}D_ep2~y4M9;lyO65@tdZ#M@ z;WNL-nD4JSZF6z|PA9qrMYiuQwTJzz5u)R39MUNy8ikRBaOd}P<` zrn)y$U7nX1*1B6{D!q(8ao@rz{bTiW085`mF`2qDxh-g?9uUyDXS6->EpOf#sELz6 z1axN6$W$oE`>{KZi8v+orq84;VQ1||X>Kvd#VjNBmuizZJY7pI`f`p)=WBiG%-cD2 zjVs?Di2453yee>Ba@K=K;?AqptdmfrB^VfTUHJBiyw1;I%c^2KRX3QC6dI_uJv3NY zvHo^sW8U7)j^hvpoTKxP76UNhILtJ^Id&7)_djD9l z^mg0VqF@(ZN8OXTy1&?^?q`A8+Ew9SOYtVJd>)nOXD!{Bx%pDichc3T`IO&Zgo^9y z81xuMjtz`VB4MYV(qe2_88KRsqE^+)=#Wdpw_l4+jp0TaC3Cz>*N*TuqQ1^XUW$VH z!KUtlLp)P-nuc5-zU>WfHha5__^8n?o0ylkws(HjCjmYYBvgL972Imfu1gUJLW(oBb(E}Pc?6yn`iuQ1tP!(GDa-}n}w|Q869?7Grkzu{|tUm)!YQEkLM>%DV ziYyjPnTO#nio2tDYC@Tvo*YbWE3|8tJ5PEKjOXitaclkj{M+LB{@db+WoIy(ZM^QE z3-z+t)TIqg8qy+EdjgwSrQWFWu-H8NrKQgFQj9PgBf74Q`88e^7pd~>1}1axok+#r zS-0wG@$Sz*Egs8-AZxZ1z)?LezE#B>kMByqm{7eIqpb(XKO(qXG;PB)$d0a6(F0+s zl2v$)AFlVsPu%|*s?B=Wz5k+mZ_Y9e;t>x%rNKL2R@9W$cCThY?mfKr)bkD5IUx1J zdTnoW>iDf_zAMBV{4X_R%u{VEwxVLytPqM+r#eZcG810=OLC5lH)vj|!&dJ3`0*f_ z%U)pyCKbU-pRP95OHU`!4T`ROb3f54W{C!rk&dmdxKChb{Rb*@er9Iu10Ehv{>Fnp zoLBJm0Eh~}$1it*KY-A46`Fk`2R3^(Jv9&`<{RB*%jqLim24s(_#}aCD?GjAqx5)Z;L{FX6%bspV({vKBr>K%=vh zBVziN;6r=8^Dw5!on|gv*F=MBIh*hpbhU$sT&KS`rkK_yFsZOI(bG=x8nXvk1lP&7 z6``M;{Hs2n{#ZMw80eB>_Qhz$#@aU!?+;d0teSau|3fpvk^To%se5jwdpx{Y)7RkY z9O;?*0f_%t>&g9G+HyMKT7AEJ`UU6((E{E{Q*5U&>eQ4N-Qcq_&WeX3dk@kFv;KtT zHC{E&x(%Z%v=s#{7!%IKQ^!V~jnJv{-!eZHub5xAy&oM?)7MH5p&?by7L*t)EXO%;Wm_M$ z%O`?m4X!CzvF5JRsEET`#3wVs6-Lp3cFWq0CUWKnf*P$D-k0}F{<~&#Ud_G_2^ewO zrHLTj^9y5{lx5uMCRcPA?Z928SL0#Y7D}CU5npf4DX~;ter^q7ZtY1FS6o#*^Cahb z?HhitOO1d>|E8`g!3c%*^X`A)!ssRb ze;7$-dCUC~|J#By9*a0{4cy`JIh?h!-SGX2_0~PYCk?dcud$k@D(97`726w2V}Y#y z8{GG%<9&=#2mkPpbc>@EyY6yj;DH-UXt|XU_LGiy|E&FBb$Y;x^u@tw|E(7I?&*+XettB ze~n^{y}GYcN~)>@pmIgpDeW z2v>Q|AB~;5Tq(awT`{BL>f+h=VqHp2bN-;#nEU$W+<~=NcgJa2*Z0u2^Ooyw(|*pa zEsxq;>iemLVB61WVfI_3?lM?7eSA9SqelSWseTA06zsYD8Vz|zQF2JsZ@qW8(oM7i zK8dqF(&U~VbzZ3ou86E@Prk?Q(m@qaU3l76qe21cK0NI^zN62lmxVBuQZVbbX!<*! zMV)3tE%NTTz^7~3)=)HqZo_czS0SwmQR&sq4z`0@!$>}c12}s1QtWHHtX^UMm!O-l zSLikL(t%cHqeR@B&;6U%w6kfpqx2ydY>r{p_CI9-W?{WovkPZZkHt(YBU`@`fEWBX zA*yT96daAxow$idRyxpz-$Rw)hv3hJdz8Tne^jv?MSOM*Y7j^NHELbDoHJx0YBbU% z$0_+5Y|xOZrMd>eW4}H!7pwCzaKmLylvmQkrAGKKTr`BU6g%c!sVkIYyM8v%PBb$T zS=K_9(cAbL`yM~N$gI#-e#dU*#|s#Js*;U;TLCz&(Ise<>{Zel53a6QKKtKQ3XhS) zFLO8z<_bb3>GbIO}+lHf3W>ntc7E729TA2roCITE9!KvzJlU z^?EB1UWRu}#_d1B(_SgT{qQpPWW4OLfZCA#J$M)am3j&3h#^e-i-ui_>i_ge3$2*1 z*!_2+5VHxpx?i;BNgb8!zbtGgb;AyCl$b+bAj2-}_|?{>?!b(*ea&{U_5fePwau7S zw3ctUgiD(-Ttr>{5&=krWWv(Ix6yHvTMltJO?+9CO3!hFbWr#>(-&4ReaU!r(ei4Q z(d(E_ZBX=_SrLC%XCw){6#>Qf2sQT4X+S@1q@WRh+6dp#=k0hXkUfaxH>$&b%7m=_ zG3iXnm-r>O)th;;+nUv9FhK(|Bq(7-nH;nTM_5BUhF1?)qmh##rj0?yc!N`nIvreQrrh$EYN1xs}{)P2T=H3e#iUNOqbKf5BPGA5>uU?A1hih@<^m>&n zsrcetE_AE#`PM1f!pK!1#Z^&#pBKT zw!&MoPx{OISXQoJ(fpn#TJwfU^x_*np8rMvK}m$Iv99Lkz1Q&wIaa(e>k8;KcFx1IG7-nD zA&n*^S@T&cmd`p9<}K6L!z4tX=qJ_JvaY7fds+W;Bm&^Geq#G;>>=OL=Rq9V2f88= z(j5c#Y9)e#k3q%dKn+5lXH0;n=|p`Xl_%j4lLy=FS0gjtD>UCn9~;e_$fFOVA5%14 zd8+8?H3b|RPzDlnUiR-NxFUh7l3hFBTxO%4Mhlf0OX;KP*U{%#REeVLQr3syf1NX` z9TnCW7D>NoVg9 zc7!3b?$1a96q&Ym=d|wc$liJch2!a;L~597<#aHUhcIIkhVbD0yRqaMU-ILe3A!>cARq=EE?K0(I`jRrp%^31 zYcXGa-Q;4C>!WyHqCa&1nzMgoaV0*Pjro0FLQ~fdMd4#*m9sCJ9)1u7!(kAHHUBbx zO>%busU}8}vql80`kM(I*wNNEM{h-}MI%O_^0lJfnkOk{@n;sJvqIme{O=R~_Ywd5 zp#N?3zGzFE=et_mnYegVcId<{Md1U-rJjpY8N-lmAzp{tx7T zsMG(U{7$D|=VkZKPJdSZDV_f9@{j5Cx5*#t^nWCOMW=s<{QW!qf0h3Wo&JyI@80R( zDgQoLH?&Lb`9yx1tj6!Ox|{tN1Ufz?rZP~6QTqBaogV@k^VW3oSQd#mee;s^wflQ7 zgZoRq4o@=>;?+3M*}j|K#BrT7zYl#W(dgsYx6-rN%_fwM8n`3kd>ThmSMZtcNH2|U zo8_NhBgunbvF^Ev<-|2$LnG{@k=opE}t6Sw7Ew`8>`MdG73zC)myv^iFqTKHJ!Qwr?Mi zZJ4qhqJmlh$XDLd?w;o-j+PB|&&<0k-IMa}sC%sMZgqpWVE85v_OcfK4D16acL(dw zboIg?5ppCpz}`Gh3bWrgsH&b(G9BVBCKISH`#cJb1mp?hFUUUT`yVv^AZAXy_yzJ8 zW~bq8OkeR{=d9=ey42K_2f^u8T*=HVD`%sbe-e7)7|O9yBUwkGQvTS;my@A3#3Swk zltQy)bRMwA)O{4-W?=963iSsZ>W-Lo)y`kz++1qT!JUhxA2vEiW9dIGlZJcv$!Auj zLSx=Rmk@C#Lagn;2?5`{29Ow#`$hId%Z>{thOOD2_@XrIrsJbH z-H87>vCw-C>x?>NSFEVzif+5Etp4^ab~nw&^G@yE*>=;xbwESPDe)of;(;sub>OUm z@nQ#?qXh-g1qG3clCtR^wRL%a;(iqpfI-k|)|z!skw2XjpOIP%nTgq==)dvh&4q{e z?hk9v_t$H7Jjm4JCu$EOYe#khb;@l>*{QzA#N3D{PlO#oudJX9(JLA)>0y0@FNZD9 z$cnTq^re$gfhb+OhqUDx;)O6wuIqQnU^WZ)Ln=ofmQ6a`%&5B=YC$@V1jKqKS~e-3 zo`eDO>7#~Lqqh%m)-zDlNNAQ#89D-Ww!kt_>-NR1`nkl{?Hg{@OE|o4KaM)$wQZ#M z3b6?6lGCY$^T|YKl-GT%o9!)Bh0Sxh`&}GO+lrk}g3H}8CeT{61H4ul+~LN&L?Al% zTRErgel6!5<@Pg9n9lAOaYdTmFE;m2&cd)_JUvAhTIhE0^^S!-bQ~Q@91&-8 z(|cScfU!T^IdRT=0n5F}L{wSN?9pHk#K(<{#+&m;W;-ITbKVbFk?zYP-PaGyOpJEl zofu^;LVlk2ELNCKkK?!>i&b8w|45++WKwop0`F(y)0bL!@=wN!VR@lLfi5`*unSpEF;A8C_Ol*cwTGtKm*^fz+v5(f+j2@xWm{2}i zo3l)4@339TAeslM#n9o18}qH(7p?7Hw|}rze+?uM=%=>tVuAy8Gt0hrsa1a$J0AU8 zU&}Yw=E$=k31$Q<&9>buzIQZa^a^`=F1?S8o(8Ozkf3L80iHRJGH!($gQ^AJJs7Xx z*>j2$L6;%85^r_}Judv!&v`52WCwC>G`6f1gK{Si=hQ68l0&cvyq-ZyfC3;2Cl)ed zQRhYsSZ0D5XIMyxIl5pNbQenmQOyOzdgjr@Zb*Ra>(q(qejEACbf1DFH#9;Q9-7!~ zM$$vG22}_}n7vCo!%YUIvH$|^DiR9i-&D8%>mKJyt!EbuEY^?d^JgfsZvSOg{qJyO zf69;7`TK3F;S+?x%_tb8X+@i}u9PHd6JgM`q15fa#QISt`=S!=yM(R-?9j`shNQ|+ zH`ndI(rWmX4<}+ZNX2sY*Z5TvP;$VSMb4H}E@p~J47BeP?Om=uM%U9HH|?Z~Od>3y$D# z;2+h`9x|%@c0|4Gz6gqkdWkh^JEM3xo#S_~8~C1js?Cf$@C#OtX;|9_;(x#}IX0`k z&%=i~IpZ7waRmLafrNJYf;&DekohxNl1cZR^0D}4>)bWJk)Y~M|6W@*PUalcB=qbT z#cB>lxBxUJPu_jD(!lAHEP)O7P((0$o?*a*4sn=vfBeV&9nyS%QLI(N6Tpat=8C?M z9_HKE|CajSe*U-I{|?p{7Mf2Ve(2tIkEE`;dGcpg{U3;SUtkh&E{0)SbVtuv>fE}! z0(V&T8;Odfu7ZhVHT(>BEOnfFzfz`WaGBdts5Z_20h1f%>qRiFo z9&$qC3_EYRdmOq<;kg+bDcE>+4`q;NhOPJGhjn?o3ui~4Zub_co-t=cvHSCjRPu;0 z`132VQ>5gGh(ts5&H2dVh`dRWutfu6 z!;!)*Y>9@(F<0nCO+ILke(oDfum;kq9pyeSL3(n>oX-qX^UGL$PK8=Lmaxyy?2()S z6Q!O}L|UZM%yR*&6r}Q4x(YR|qG5Cxiilk_fnvQw1Q)zipnZbXa1NzNcCFl`(AqI6 zG#Ae%5nm!qP{bI4cY70Rb_j4;oRe7j&>nH?1$Qwy195A(tGI}QyH78+trs$vrU#g? zVMhrYew482QNpT@5;o!}VIz+cMn8Y9F0rG8U3`?VOO6Qh$D)7dSbQ;udwWJxHZp=x z!prCgdroD)8DImcz4Qja9r_cA&0F=_tl|JTDxZR|t zFY6v4d8B1TX^;s5k0<7g=*ukj=GVt$s&;NE$JUS-tAT6_+noo{{f%HvV%mAzUppsQ zY^Qy~XYnyg`kq{@l0f!txrFAkugOJE1+pt~>6pFNtr46O!GR(SWS>$JPAGxwqjEuB z1+ovz1^+RST__jyMj*RDE*NWYN95A(kxj^DpiGp@RAZc62FkbPGS!I7WuSaZE>1~- z>|nVJl(Xexbp*0yxH{$a;44I&m*?!)I=1G&%rE9Us<#vbF!`1mv>AyitNs~8w{B51??eI-04?D7nJn^J#4mB`sTrthA*CYOo%nzUp#%?a){PB{VDtSjBCdX5;V#%E!gUA$g{$x9K zx#ak0|7GatUq*C4I~6IvEPZOQ+CgLU(mT3yC5AST>i%4iRyFLHaeSf((`~gQSWN>l zFuXCg7p5e+k`h7A+dVb1ft>+NU5=c&6xnkh;6~T9BOY8u6cgEP{xMffRMWr}P^wZL z%(gw6BYn)blO7ucJvQr|PI?UU58i!KcONGtzN(W9l7a2P+I|v?W5MR%qsR|omiK2< z6mR4Nk<8tw*g|frNYVE4VdZl_MW)VLAb8xT{cY6(<9767Z##9df9o|&9cN_nS*@(RhLv~r*t>CH##_z2?JL^L znFCoMq$5{xBV24hWbehmYx7ym9^RJhFJ_|&Vj*<{R<8EGRaKv{s`T8J1(Ffj{rP_^BxC!3luy2J?i^-S&$)$U{-K>%65fUM78^3z27d^Yd8{cH}$V~YBI zRoB1fkX&>(+t)5@Y*7he?md;VBs;q3H4`|dsKa~*WV)2|Y=HVYtNJ%PE37BiHto0i zuQsu{PS4BR&H1P=C`}S$(~Q9)T4@+%jh@5PdrXL@a1@7U5E{qho+5DxkZti2d&YK% z`m(_c`}HPE0k z2bNw;=(c^DF}GuYhdpa2oOW|n3g@a6&Q%GsJ*&OMxhip1-sy#SRf2?6b8{r52E{AS zpyRew-p^aT)RWUl8n1aW!6%x!XBmLl@){x_%1Ck_Hc;l{@(g1=D{SsweJ^?&jG-*g zzy59*&t66&dHfXVhoz(E1cr>9Vcj#vgM)aT!YfA3wC)~(BQ<mWxu0t zVmzJwHPmX!HcM|jV_f}g(a%nPdfi-hvpy5bKxNUrqvNS7_f94te5`(kqktp)1H^a2 z*Y@S-b`-aSZyLZ)%^-fR7^*ZkMfF<~Ct&!M4LhubPlrSrY>^@I$^gPM+lbC0eiAMb z&tjh>VDvNQ06(K&BY_EO&j+;<)DFzC9bOPJHXUT_P>}MFk)X{67D0y;v|mAc2|A=y zpXGx-Cg?K-9n1%PNYFtA?av3TCkPRfvCUo)))2nak%~{Od+uQP4U)?4X8T1Rqi7#o&+G?y48JK|^eg$_^!@H{zKg+n$Zip3>`iRS zeNrTFZ*K(YDR7kuEc$_RJwh&TpI97bZe$ztex~md#!X^BdpMH0uiw(q@obU+cYj#& zx>%9mnGP`$kr)hKge@}}kZ>4mQt4Z%!!X}+-`~&omx?%a*S-2#$Fo{d zt&ElmVeHFyn0yhW+=si^gOz&Uk={2XU!*LXiK9@@x5^8Xx=KFNz3(jfrmMfNwv9%Y z#X7hGaoa%NcuJOB(%&c4_Ww;{vbSU-ox=@ZqZ)`xxs+SWirLO|=wEmISQWLhWl@$Y zgVA2dlBMF~F6MtE{|5in&grDethX$nzS3o9ZosZq9^)~v(aZ{;OCQ#Jqft&Kb>YfmywUV!ydy=YNbhX zA0>S++hZAD=6ce5Z;tl`g?SI;-pnI{4`m(^e55$;1|gN|I-V?k*mdx$`erHMSt%g;Zxry4m0xWE;uRi>LYV>tMaN44jZ#3mpW6Z%%>P#(-1{{Jpqcb_ zeeh@0CD*2;fW`kt0cU?r0cab4T>({6K$8^koqwZ%Ex-RNia5!81;oiNJJCPcKmqHe zfQ^0sbrk*dYYI3gTRCw6tGbWnDK8E5crw`AYr{0keh0OU$Q+@3izJ5aw%YK z6)powf_-^zbA+GAeaAmv)?KZ6SvF*NOBq!xyrZ&(Ng;wRwJtTTr?88Gq*wIH|Nk0M z760S*NAChc*#ZPA1xQWPS5bgaY49&+;AgNl8nR6(eL7AtW2<0yhNI@9dx7zJ*Zs)V zExx4tdDZqkLNy zJxO-*hf{QWJ?G>e=OaDNFM6C|a`ocg+v9w<$9WFfdl8a7&R0Dr?b<+GG4v@L6W&5X zyk5pP10SC!-H)G6#5dXfJmP-7;Dbv44-h(~?#1}L;%a-G8+x3D&^#(a^P;ejKcs<) zuKvin3a20^Kmz$r_r6bf-yFize|bi<1YK$*+OjC_B@bImGAT*w}B z>La;1YexJFps3X#HR>5||6e1GvZQ19NQdzG7keUoE&_%eE)mydk(_;W(t(hX^5d3UE zB0Lq+t@(wSp3O9W}w*kQS2hr(S3i4QA(Y3|q&uKy7g-<{73*NkAi`~3ZU zbgbY@8{^6ylWrwmsyn}uphn!~TU?11x1HQ13`QX0jB!XKaMC_iU1Xuiea6Hu;Yrsw z+QtISNFhd%>guNl+v{E-N6E$5&vfP%s#~kSm8&LcT!(-uM9^sDVt~LkvzHlb)>ZF@ ztskbt)|?N+){T3)8_*h#FNA}{NWgxBYxS3Vd9m|7SNeOYTM#)4+QKHUQUyj&e>fNU z_YWgHm}O$|J8fr%sUyW)V|_o9;`OwO+!-yG4gsm8XM>n;3csJ~J&yX)KsZ^)ZR}vvozfZRp$t{+yMVnJy`Njj3JGq`i&9Hi)$`o(I zH15&JvrUf0bA{vg4ITbot~(HNpHY3SBky5_x`fG=M|2wYu;dzS4r>$l;*%cLgFJCN zu|r29IGSid=lk*EIAAS#HYqUEpxen}sf)<JfM$E$OpMy5!Y?sq&UWHToTR|5w!J62W;`GIP)M@#kb8;Gy=5QG0og zyU57-ml;}eBM0Wl`75L%TJkpx7d$e+keqToBUv-Fyf)zEqSf$$@hzAg6k3SM=g1t>shHh zMR=6BLnOGOOF_B=6ozJ#ZmEr1y=*^>wqf_;8!|3+Q^66Q#`cGn%q1vR(>UHPjEgR$ zZp}L}EV?Ow0N7XH)tFPlj0X>o*(Fe`zvN@CWv#Jl_5B9vbx^D; zLh=;(e!rVwmkY7wUGv#|oOKC0Dvo zw*V^i0)z>}t=%bHfVkdR5kJ%o@{)drr zO6-CtyJ5*@L^@Mlrx@35BGTzxf9h7@-A3v_Nl9w!9%JpBw|shWOIPzZFFrn++EZYp(!%sAMt#qCIh(eq@gfRL+3|9df-+v7cA@TgnW>yDS-C@ABl!G*fxWubyHUgo+`cf5QTg$OlXu5qF6cqvs-#!JkFy5prlK^ZUKbD{2d zsZvnJOOXq8$4i-lGF}F_PhEBoc7?+-XM`+5TEcy2u-fN1wj(5Y zh{KY5H05guUzA1gNr}K8PQii)?R6X!ba>ESCqu!D2kmu86a;zDUgt%@ln3o~bQF|% z&|arV!JP-~b)Xa^deCzicJfDk1)Cl;*#i}{deB#Upn_iy+UvL|i1whpPL6_c58CSx zDX90L+4E$J>H~rHjJs3Sb9+fuNzN1Mv{%Ua1Gmul>3r8M=e6{-=H3UV4?f85=RF5h zxCjwzYGKq}6!pX*R>k*d411t%SLCW?5i(|ds;dw8l42Lh+?hIbO0U(iHHy_vZ)tqM zD!fB2jNAX|!Z_ZWPBD}|&30>cxH-O@#`v&hJB(Zl7VeT&5ph}#UE`rxhZGHGB5jYCaZ1#ea@Au`N?|S)ylUdn5~$ z=^#aWXR#dTmdrbZ5NmS3ps$frJog;Tq!C0^ydC+bPbfZuDK?J8>X?m+dY`K7Y0;Hl z`*b1~X}-PgJX2*ap@*FlD5B?nBjKKVS?#MZ&VB5umKvZhicY@O`&8=;Cn^_lPu!ik zNO}If%s2@LpDdR1o7QkS4TA_?iN_;?oqbqm_s-!Evsk}X#B7HUv(vtnC1z0)!Dfaw zRS4QwA!d1AZ)%%!vr5ZZ;gg8@9uM7%Ld#q%)coWl`QdTXpCHt6%}e6pJn}Uty7m?H1!da`fD)RZv zm4h0WJ65i?YFtNHtlbM*%ZQ1!3XCVAPD8)7;%)CDB8M3F$Rv4;z#W%}Fz3>JA7z$3 zAmG_n#VF@0@R{LHkU_7@5$0NY)1xqYyu+6>|1-BgkH$mGxNT&e zlf{G@;Ed%~RJOfhe7=7E##`C3$`HPT?F|$jNX42WB2{+ zf<6)Z&YU=}24Ib77cyR$78Bber}KYh2ijH34v{pBDcj&?m%kd(CT_>#qqZoTj{pr3 zbiQ(UeEqImlr>+(BpbG;0G#;}06pdO!M<9Yq4YAu8RKl~hf!Y&`zb&+Xw4syWE;-E zYlZ8zz*}13cJ0J%95#PL+U3d~OJhK*eiOql+F)aEG?=Q}6Lyb6m@C2jv#;s%sCGI} z?@oPDih!1{t)%R4{Zv&3c`|B(l^8jhagOxI(F_Zw=AG`Azsq<4qgg$HNR$NI=M547 z#Gy*S8(?G6DCa@SPu}H!pT2*)VCpl4F1yh86^ylO%MK`vVG*T0gRu#l6~^u%AV>s@ zFPIV>{Q*1C5zO1x2tHosIcpDFV2Ps&&sG1Qn3_Wl-uV3*d^HKaTBT1FzF<8FzCemH zX0taOY*qLgq)RS=X15-^TI@d22)=Y*uu1U6^DWiygRhj}OTFLdj|;vwD}0GrLxry; zU|et|DtUT~KTb;-f8n@a91&|Qr?0U{k}IxP1hXX83fTqq)UJLCqa5e!c|ADCHQ*T0 zR*fxV$d;1h&M|g@$SX(e2V}vIXvTV-vpUay^^2J6BPB0L`kkV+Fhp7_K3aL@wqUEa zOt^{>`*L5fHQOOC@ZJ_<_+COJhVX~Lo)%ybZjG2?@JDsefMr}0*R<)W&OQ_D!n@^# zM4I2pgNVeCE^AXmxR7poRV!@QPHbcBz6U+7=BpOij8!(q?`w=-hTlbdD}!6>9Qs?T zs3&%R88NqpeQnYua1IprpaUzFwG$W`gZ?Dh@Xn@I{Z6b#%nzmH`6d6IVcYNl4+l5R z`wqocf_bfaeWFo1rd^^G-pLRjC<%nSGT46yI6o(1O23Fc;79uY9fF>;{OkzZ1u}?T zq`A|68(C}14uX;}c75>ZYh<5f; z;SOL^@o7CyeU9^c2x)IoXOB>u7+zW1WzUek$mz!c<7>jS*XSJCk`~gR7(-vdo$_1IfRn(9$iT8LGM=Mb10hU{=5cbS~-Y z?yft*Wp!xwpJ2#)91^%9&L7nc!Y7Rw+VYnDZQ7DM*j5;3(%lVhG+j_+zMvIum&NCsFB z-K-@KphZAIdB2fNNM5s<{*z!a4pnfcjs;HU@6s(qBbcxqVx-eu)!iseYet8*bd}0! zYAcV7$s{Sb+xaCB8Bydv{3O*7wPbW?ORiDD&IgV`cHn97=+oJLXy|FfjMg5jJ<$w0n|!UU<#56N4acb|!D z*@e_{jgY?1Nm>044Hv|i^U+62&tnK=wHsw9w3}L+oa1m2qn`leWZ@i^NO0niDH0c( zOpfD-OD3}OHZFHna~>d5H;-pO!KI4+D=yu2-YUT=ACo!Z=CeRtDxW%Wsq%g-E{Lrh zCy_1XddX0QUZXNp&JmKKQVO|TA}UpoDse$Z)NGiqfqjo@Tc5-mMN!dYEp_;;eVi$+~8k} zONHJiE>+9}(m+*AgSb>Bl3Cad5>FLfBQDkEsp3*inJ6yRln5?YGt3#N>Y&o(D5pyF z4_=Sg-Bf#&Qzd&_IaQgj;&e+tAlOxP`vjNnI{!wnj5LvNZ*u+u4&|w$-+_;eWWFaq z=-KB-`?NvsCO;+z@Ow96CvS${^3n~UEQJNl>o=-Y~YXT2lizpl#ASmm{ zZ!OBHJ5AYV;H?sQoR=f5r(1K>`!9wS9h%+`-X&q@%ga60mv5V!IPhIX9Sl!hH;_>e z>4y>*CH7U8$8wx?m<#RIB-b9ZSV?m&nWSGp(>rQzFzOpM5;w&`!o7Uk1wlur+d z^68u(p?G>Sm)31qtka*9Q(Jm6ZS-u(omFXem^(-pDc_e~y2#ZyExv}yw*`f+?jd=X z<-wt?y;iil&ZH$`?_@aNu(?-MA+QLi%shMNBzu_KJO>Y_=KzT*jw-*c(E+k(!x!pc$d zq1a}lzjS*l78WSI2x$btF)vL zK%!zrMxu~3Bc`otF(7bJ!z#PT9)|wf1|zuR=77?-O8!w|mo%Z&6fr-D)OXMSHh460 zCk(AUNo?g8f?Dixq!(S&)$JBbPBCAH*nG#qh}n-~-3Is7j*&-+b9!`>h@vj1ko3>U zLf8r7Aqna{ij0y0dmN#9RM8>Whl}bt27>B7 z6n(UDQB&HlCnBSKouM9nk5PlIb*y?+VibfaUHFn@BI=Xtk*JQEkuoM`?SPo=-xeji z+O_VhNHR5c*Bul)z-kJq*OBxete?3&Q+4MG8R^gP)7`nfd}rr_9@5?U@4eZf5YE{K z{a@G-CxcA6HLg!n1xr^5?kDIUf!!NQr20&|E3QAlJJXe;lv3)Sh$)B?Z2ULwO6$_H zu&ooDsoyry4magz#-UXt-7p{;99FC)n~5uE5(_Qw5t*#ZcPjkGtaEns^xHn^x3SV~ z7rNc1^IpIiV*^;}kbawxpZ+^JiJ7`r`9>*SYQu{9eY|eBdF5yNO)$5z7RB_l-To}! zCqh^zR&Shi2izKWDXbf^R(6?0^MLfpGTeguZr?^7-FfD|Y2vO~%S9{Ev#B33D@SSd z=Lp7so*m-)WR_ZH(vZO{Mr%W4nm!4fy2W5=gw@u;FH7aF^z%OwM5}EeVt)ZvqS<@nEB6jBK>* z5<~isd*}0%RCk(W`5&-m18z`WKM8uon=fjGU(XzR_Z7%? zunD4h*f{^k(ur{(VXSjvB#0;Hwbcb@!S0D4_^y^*M1uM)bAJS<2)iPMxqAHISz1z< z3ieN*58G3VLh&Qt)U`1$gh#g5og;Hjw4W0Px@*tlRIWcG%_YBnWLEc7mXPw^x{4E+ z6Cag(mf2K$Co=@z#;v?M^6uBh6V~)|RHO5_%zCe0?|RHlU$>W+ynapDUgb0ObuMKH zt8wDi<>;(?dY|_JF3oCikD#fK6ie-(5W$?hXV-$kBvw{lq0sJa%x}`_OJ%XBaach9 z`v4=>E|3)0o~{{RkUu_gFg z?Ho99%c*p?<-h;@v4NXE$Ue^Hy&&~E_L}NaG3$X=H+k*GSk1~d+!Qc>Edmk8dGlNB zY^7^|593u24olR1O!alszg*WMaBSEOgRj-y)3e_tH`Pt%ynNKICHpm*cet5r4b@bO z0tO3QI4;rPMr1|+X3E&ptBlSE-FC8&it!s(^JBB`jsEQWfd;0`W}C0a%#C65mGot& z%4XXnE5;4=`{rMl_#hC&7*y>~S)Z|_{zT^m8GR`tUAJYfbV_bj{=PB1`FO^@F-LxG!`)(FN0YU)^B+9a>oDRp3>+*~`s zN|TQQ&-2z9sKM(tx#b!8`*g~qr17k6n`--0oGNLdiS}cYKN@VWU1ebtFcg^6s!GD* zPRxoHMa@>->aSZNzq$F$YE~wmdkN+9@MNl^@8}PH@%@|yQ(Xp={Xa_09pTT>kaI$xi;{C_KGakd~GG-ri3^kbwq;MQcBUlo@BuB{!;ZJ^cd=A-EO zg&!_qOqK6L)ry)NWOu&?W%W=FdR_!=1%(&{h^nLzfoOk2wSr3GrbUh{I z=+8?xM9sGlQ4ZnaU&3l}GW@XEqZl&Kx5O$*BUK>) z5i6FARoc~s#PQdTpiWiCsVAjy6;28VH_s^)Sb>6(SHYx+NeY4GOE-y(kQei2=<~@0 zneAb7vx1q2w!UL-w;#-D#QN>7zFGt{t**|EADU5nqP7Zt<5sy~cM%ScYk0{H3HK*= z){fS(ij%+autIg2wrWr6aK5&x)5KKHvx4!GH?>u-5v9!c8dd^RhmXo-4<&*Z2*Jo! zbF10T`&)H=sbwsD3${CB;aU7n3*RD^5o!nO)(;A}d(YLLYNz(orC|e(M!*TMSNqfs zQvFh=x%-`tgq%WzEWBjYPpdZ}i}m=kWhYa;nE5$UemE+v`VatiE-m>we#7Q|RexUC zSuyiH>98_})JQVHIZ7T1s~0`=@mBJ%bRW-pYDt^OW33s_Ob-Wtm&9GW08>wWqLwW= z)AymF0B4fE3af|dzaSYY3-lyV`SSTo1c5h?;~mK^A_01x!_yZ2+t_>Kx1EzyJJ`A? zV2vp(;g)3;BAlA9)vL2u&nc5^FX7-fDt%jnSfy1JKq3^W&~Dm1nFS?ke#kXyQeB_( z3f@Qxw8Ka_2!)e(tq|N7@qDk73p+OPj~U|k%MPL?(|BSQ2cw8z)aY{bwbE;0%wd+= zRdJm|_!B_6YR#QoJR{K<=f29vn`f&-8m1gW1s6~~@&S?3;;v)GPsgkDAl9R4Y zOqnU}@Mzh~EC7JS5~Fn~A*-5G2ae-|w3~byQwOkpu{niU;Hsw7f&Qtk{_sMgR{bnc z9G{z)<1&4yYJt>Tt|?Vt9j385SJsaJh*%FPsR6{8Vau27jg;(2bri4%6htih9P&xM zU+{B1^-h6~%(bve^wa@f;d-d}VR7$25JBX8x#R;YLh{q`uTC@VjvXr&2c*US&pw%P_hy;?u~Hku$Mlscnm^Lf5n59_vB-IpOxEd z=EC*GW0Y|}v3o+N=hFhvpzy(zZj@G2RT^I3kNze!wW~myMg92ApAe75 zBB|t!wbj7dQO;QlE?vn5Q}1#G-7zrCu093&d(;E*gLV< z(sw@N2l-3w`NsX*+PhQ&FMkSUbS1@}sPiH}LTBo%R1xqSb2w4=lE;bJ^NK@|wr2CQ z?%H;cri2F3w6uOFv>etK%0f%T#4pdsnTL@u`8d12#fc>=nl

  • 8nU=TS9ws>G9n$l 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

    BitwiseXor = 6, + + MinAbs = 7, + + MaxAbs = 8 } public enum AnalogGeneratorWaveform @@ -395,6 +399,10 @@ public enum FilterProRollOff dB24 = 1, dB36 = 2, dB48 = 3, + dB60 = 4, + dB72 = 5, + dB84 = 6, + dB96 = 7, } /// @@ -517,6 +525,10 @@ public enum FmxModulationType /// Phase modulation with envelope applied to self-modulation and feedback. /// PhasePlus = 9, + + MinAbs = 10, + + MaxAbs = 11, } /// @@ -593,6 +605,8 @@ public enum LfoFrequencyUnit Line = 4, HalfLine = 5, OneThirdLine = 6, + Semitone = 7, + SemitoneDividedBy100 = 8, } /// @@ -736,6 +750,15 @@ public enum ModulationType /// inputs are silent) = 0ms; delay range: 40ms (mod.amp >= 1) ... 0ms (mod.amp = 0) ... /// 40ms (mod.amp <= -1). PhaseAbsolute = 2, + + Add = 3, + Sub = 4, + Min = 5, + Max = 6, + BitwiseAnd = 7, + BitwiseXor = 8, + MinAbs = 9, + MaxAbs = 10, } /// @@ -758,6 +781,8 @@ public enum PitchDetectorAlgorithm /// low frequencies and better at high frequencies. /// Cepstrum = 2, + + SpectralPeak = 3, } /// @@ -963,4 +988,78 @@ public enum VocalFilterVowel O = 3, U = 4, } + + public enum ModulatorMaxPhaseModulationDelay + { + /// + /// 0.04 seconds. + /// + FourHundredsOfSecond = 0, + + /// + /// 0.08 seconds. + /// + EightHundredsOfSecond = 1, + + /// + /// 0.2 seconds. + /// + TwoTenthsOfSecond = 2, + + /// + /// 0.5 seconds. + /// + HalfOfSecond = 3, + + /// + /// 1 second. + /// + OneSecond = 4, + + /// + /// 2 seconds. + /// + TwoSeconds = 5, + + /// + /// 4 seconds. + /// + FourSeconds = 6, + + /// + /// 8 seconds. + /// + EightSeconds = 7, + + /// + /// 16 seconds. + /// + SixteenSeconds = 8, + + /// + /// 32 seconds. + /// + ThirtyTwoSeconds = 9, + } + + public enum ModulatorPhaseModulationInterpolation + { + Off = 0, + Linear = 1, + Spline = 2, + } + + public enum SamplerRecordState + { + Stop = 0, + Pause = 1, + Start = 2, + } + + public enum ReverbAllPassFilter + { + Off, + On, + OnImproved + } } diff --git a/SunSharp/Modules/DelayModuleHandle.g.cs b/SunSharp/Modules/DelayModuleHandle.g.cs index cf3eaf3..fe494b3 100644 --- a/SunSharp/Modules/DelayModuleHandle.g.cs +++ b/SunSharp/Modules/DelayModuleHandle.g.cs @@ -138,6 +138,26 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// Original name: 10 'Feedback' /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 11 'Negative feedback' + /// + Toggle GetNegativeFeedback(); + + /// + /// Original name: 11 'Negative feedback' + /// + void SetNegativeFeedback(Toggle value); + + /// + /// Original name: 12 'All-pass filter' + /// + Toggle GetAllPassFilter(); + + /// + /// Original name: 12 'All-pass filter' + /// + void SetAllPassFilter(Toggle value); } /// @@ -237,6 +257,18 @@ public void AssertCorrectHandleType() /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public Toggle GetNegativeFeedback() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); + + /// + public void SetNegativeFeedback(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); + + /// + public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); } } #endif diff --git a/SunSharp/Modules/GlideModuleHandle.g.cs b/SunSharp/Modules/GlideModuleHandle.g.cs index a08cc1d..b01470e 100644 --- a/SunSharp/Modules/GlideModuleHandle.g.cs +++ b/SunSharp/Modules/GlideModuleHandle.g.cs @@ -90,6 +90,42 @@ public partial interface IGlideModuleHandle : ITypedModuleHandle /// Original name: 6 'Reset' /// void SetReset(Toggle value); + + /// + /// Value range: displayed: -10-10, real: 0-20 + /// Original name: 7 'Octave' + /// + int GetOctave(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -10-10, real: 0-20 + /// Original name: 7 'Octave' + /// + void SetOctave(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 8 'Freq multiply' + /// + int GetFreqMultiply(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 8 'Freq multiply' + /// + void SetFreqMultiply(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 9 'Freq divide' + /// + int GetFreqDivide(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 1-256 + /// Original name: 9 'Freq divide' + /// + void SetFreqDivide(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); } /// @@ -165,6 +201,24 @@ public void AssertCorrectHandleType() /// public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public int GetOctave(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); + + /// + public void SetOctave(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + + /// + public int GetFreqMultiply(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); + + /// + public void SetFreqMultiply(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public int GetFreqDivide(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetFreqDivide(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); } } #endif diff --git a/SunSharp/Modules/LfoModuleHandle.g.cs b/SunSharp/Modules/LfoModuleHandle.g.cs index 7696b0f..84bcb76 100644 --- a/SunSharp/Modules/LfoModuleHandle.g.cs +++ b/SunSharp/Modules/LfoModuleHandle.g.cs @@ -154,6 +154,30 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// Original name: 12 'Sine quality' ///
    void SetSineQuality(LfoSineQuality value); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 13 'Transpose' + /// + int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -128-128, real: 0-256 + /// Original name: 13 'Transpose' + /// + void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 14 'Finetune' + /// + int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: displayed: -256-256, real: 0-512 + /// Original name: 14 'Finetune' + /// + void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); } /// @@ -265,6 +289,18 @@ public void AssertCorrectHandleType() /// public void SetSineQuality(LfoSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); + + /// + public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + + /// + public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); } } #endif diff --git a/SunSharp/Modules/ModulatorModuleHandle.g.cs b/SunSharp/Modules/ModulatorModuleHandle.g.cs index a3f0694..ca7a11d 100644 --- a/SunSharp/Modules/ModulatorModuleHandle.g.cs +++ b/SunSharp/Modules/ModulatorModuleHandle.g.cs @@ -44,6 +44,26 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle /// Original name: 2 'Channels' ///
    void SetChannels(Channels value); + + /// + /// Original name: 3 'Max PM delay' + /// + ModulatorMaxPhaseModulationDelay GetMaxPhaseModulationDelay(); + + /// + /// Original name: 3 'Max PM delay' + /// + void SetMaxPhaseModulationDelay(ModulatorMaxPhaseModulationDelay value); + + /// + /// Original name: 4 'PM interpolation' + /// + ModulatorPhaseModulationInterpolation GetPhaseModulationInterpolation(); + + /// + /// Original name: 4 'PM interpolation' + /// + void SetPhaseModulationInterpolation(ModulatorPhaseModulationInterpolation value); } /// @@ -95,6 +115,18 @@ public void AssertCorrectHandleType() /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + + /// + public ModulatorMaxPhaseModulationDelay GetMaxPhaseModulationDelay() => (ModulatorMaxPhaseModulationDelay)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); + + /// + public void SetMaxPhaseModulationDelay(ModulatorMaxPhaseModulationDelay value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public ModulatorPhaseModulationInterpolation GetPhaseModulationInterpolation() => (ModulatorPhaseModulationInterpolation)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); + + /// + public void SetPhaseModulationInterpolation(ModulatorPhaseModulationInterpolation value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); } } #endif diff --git a/SunSharp/Modules/ReverbModuleHandle.g.cs b/SunSharp/Modules/ReverbModuleHandle.g.cs index b60e3a6..1e59512 100644 --- a/SunSharp/Modules/ReverbModuleHandle.g.cs +++ b/SunSharp/Modules/ReverbModuleHandle.g.cs @@ -96,12 +96,12 @@ public partial interface IReverbModuleHandle : ITypedModuleHandle /// /// Original name: 7 'All-pass filter' /// - Toggle GetAllPassFilter(); + ReverbAllPassFilter GetAllPassFilter(); /// /// Original name: 7 'All-pass filter' /// - void SetAllPassFilter(Toggle value); + void SetAllPassFilter(ReverbAllPassFilter value); /// /// Value range: 0-128 @@ -203,10 +203,10 @@ public void AssertCorrectHandleType() public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); /// - public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + public ReverbAllPassFilter GetAllPassFilter() => (ReverbAllPassFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// - public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + public void SetAllPassFilter(ReverbAllPassFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); /// public int GetRoomSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); diff --git a/SunSharp/Modules/SamplerModuleHandle.g.cs b/SunSharp/Modules/SamplerModuleHandle.g.cs index 47f8946..e794353 100644 --- a/SunSharp/Modules/SamplerModuleHandle.g.cs +++ b/SunSharp/Modules/SamplerModuleHandle.g.cs @@ -80,6 +80,62 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle /// Original name: 5 'Rec threshold' /// void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-2048 + /// Original name: 6 'Tick length (norm=128)' + /// + int GetTickLengthNorm128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-2048 + /// Original name: 6 'Tick length (norm=128)' + /// + void SetTickLengthNorm128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Original name: 7 'Record' + /// + SamplerRecordState GetRecord(); + + /// + /// Original name: 7 'Record' + /// + void SetRecord(SamplerRecordState value); + + /// + /// Original name: 8 'Reverse' + /// + Toggle GetReverse(); + + /// + /// Original name: 8 'Reverse' + /// + void SetReverse(Toggle value); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Attack' + /// + int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 9 'Attack' + /// + void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Release' + /// + int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// Value range: 0-32768 + /// Original name: 10 'Release' + /// + void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); } /// @@ -149,6 +205,36 @@ public void AssertCorrectHandleType() /// public void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public int GetTickLengthNorm128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); + + /// + public void SetTickLengthNorm128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public SamplerRecordState GetRecord() => (SamplerRecordState)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetRecord(SamplerRecordState value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetReverse() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); + + /// + public void SetReverse(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); + + /// + public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); + + /// + public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); } } #endif diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs b/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs index 23eb560..39a4fc9 100644 --- a/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs +++ b/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs @@ -90,6 +90,16 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle /// Original name: 6 'Repeat' ///
    void SetRepeat(Toggle value); + + /// + /// Original name: 7 'Ignore Note OFF' + /// + Toggle GetIgnoreNoteOff(); + + /// + /// Original name: 7 'Ignore Note OFF' + /// + void SetIgnoreNoteOff(Toggle value); } /// @@ -165,6 +175,12 @@ public void AssertCorrectHandleType() /// public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public Toggle GetIgnoreNoteOff() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); + + /// + public void SetIgnoreNoteOff(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); } } #endif diff --git a/SunSharp/Native/ISunVoxLibC.g.cs b/SunSharp/Native/ISunVoxLibC.g.cs index 7fb2768..f8367f1 100644 --- a/SunSharp/Native/ISunVoxLibC.g.cs +++ b/SunSharp/Native/ISunVoxLibC.g.cs @@ -79,6 +79,11 @@ public interface ISunVoxLibC /// int sv_save(int slot, IntPtr name); + /// + /// void* sv_save_to_memory( int slot, size_t* size ) ; + /// + IntPtr sv_save_to_memory(int slot, IntPtr size); + /// /// int sv_play( int slot ) ; /// @@ -169,6 +174,11 @@ public interface ISunVoxLibC /// int sv_set_song_name(int slot, IntPtr name); + /// + /// int sv_get_base_version( int slot ) ; + /// + int sv_get_base_version(int slot); + /// /// int sv_get_song_bpm( int slot ) ; /// @@ -234,6 +244,11 @@ public interface ISunVoxLibC /// int sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size, int sample_slot); + /// + /// int sv_sampler_par( int slot, int mod_num, int sample_slot, int par, int par_val, int set ) ; + /// + int sv_sampler_par(int slot, int mod_num, int sample_slot, int par, int par_val, int set); + /// /// int sv_metamodule_load( int slot, int mod_num, const char* file_name ) ; /// diff --git a/SunSharp/Native/Loader/NativeProxy.g.cs b/SunSharp/Native/Loader/NativeProxy.g.cs index 879f144..facba3e 100644 --- a/SunSharp/Native/Loader/NativeProxy.g.cs +++ b/SunSharp/Native/Loader/NativeProxy.g.cs @@ -18,6 +18,8 @@ public sealed partial class NativeProxy : ISunVoxLibC private delegate IntPtr ReturnsIntPtrTakesintintint(int arg1, int arg2, int arg3); + private delegate IntPtr ReturnsIntPtrTakesintIntPtr(int arg1, IntPtr arg2); + private delegate int ReturnsintTakesint(int arg1); private delegate int ReturnsintTakesintint(int arg1, int arg2); @@ -28,6 +30,8 @@ public sealed partial class NativeProxy : ISunVoxLibC private delegate int ReturnsintTakesintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5); + private delegate int ReturnsintTakesintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); private delegate int ReturnsintTakesintintintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); @@ -94,6 +98,8 @@ public sealed partial class NativeProxy : ISunVoxLibC private ReturnsintTakesint? sv_get_autostop; + private ReturnsintTakesint? sv_get_base_version; + private ReturnsintTakesint? sv_get_current_line; private ReturnsintTakesint? sv_get_current_line2; @@ -216,8 +222,12 @@ public sealed partial class NativeProxy : ISunVoxLibC private ReturnsintTakesintintIntPtruintint? sv_sampler_load_from_memory; + private ReturnsintTakesintintintintintint? sv_sampler_par; + private ReturnsintTakesintIntPtr? sv_save; + private ReturnsIntPtrTakesintIntPtr? sv_save_to_memory; + private ReturnsintTakesintintintintintintint? sv_send_event; private ReturnsintTakesintint? sv_set_autostop; @@ -284,6 +294,8 @@ public sealed partial class NativeProxy : ISunVoxLibC int ISunVoxLibC.sv_get_autostop(int slot) => sv_get_autostop?.Invoke(slot) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_get_base_version(int slot) => sv_get_base_version?.Invoke(slot) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_get_current_line(int slot) => sv_get_current_line?.Invoke(slot) ?? throw GetNoDelegateException(); int ISunVoxLibC.sv_get_current_line2(int slot) => sv_get_current_line2?.Invoke(slot) ?? throw GetNoDelegateException(); @@ -406,8 +418,12 @@ public sealed partial class NativeProxy : ISunVoxLibC int ISunVoxLibC.sv_sampler_load_from_memory(int slot, int mod_num, IntPtr data, uint data_size, int sample_slot) => sv_sampler_load_from_memory?.Invoke(slot, mod_num, data, data_size, sample_slot) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_sampler_par(int slot, int mod_num, int sample_slot, int par, int par_val, int set) => sv_sampler_par?.Invoke(slot, mod_num, sample_slot, par, par_val, set) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_save(int slot, IntPtr name) => sv_save?.Invoke(slot, name) ?? throw GetNoDelegateException(); + IntPtr ISunVoxLibC.sv_save_to_memory(int slot, IntPtr size) => sv_save_to_memory?.Invoke(slot, size) ?? throw GetNoDelegateException(); + int ISunVoxLibC.sv_send_event(int slot, int track_num, int note, int vel, int module, int ctl, int ctl_val) => sv_send_event?.Invoke(slot, track_num, note, vel, module, ctl, ctl_val) ?? throw GetNoDelegateException(); int ISunVoxLibC.sv_set_autostop(int slot, int autostop) => sv_set_autostop?.Invoke(slot, autostop) ?? throw GetNoDelegateException(); @@ -464,6 +480,7 @@ private void LoadInternal() sv_find_module = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_module", typeof(ReturnsintTakesintIntPtr)); sv_find_pattern = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsintTakesintIntPtr)); sv_get_autostop = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsintTakesint)); + sv_get_base_version = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_base_version", typeof(ReturnsintTakesint)); sv_get_current_line = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsintTakesint)); sv_get_current_line2 = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsintTakesint)); sv_get_current_signal_level = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsintTakesintint)); @@ -525,7 +542,9 @@ private void LoadInternal() sv_rewind = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_rewind", typeof(ReturnsintTakesintint)); sv_sampler_load = (ReturnsintTakesintintIntPtrint)_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsintTakesintintIntPtrint)); sv_sampler_load_from_memory = (ReturnsintTakesintintIntPtruintint)_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsintTakesintintIntPtruintint)); + sv_sampler_par = (ReturnsintTakesintintintintintint)_handler.GetFunctionByName("sv_sampler_par", typeof(ReturnsintTakesintintintintintint)); sv_save = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_save", typeof(ReturnsintTakesintIntPtr)); + sv_save_to_memory = (ReturnsIntPtrTakesintIntPtr)_handler.GetFunctionByName("sv_save_to_memory", typeof(ReturnsIntPtrTakesintIntPtr)); sv_send_event = (ReturnsintTakesintintintintintintint)_handler.GetFunctionByName("sv_send_event", typeof(ReturnsintTakesintintintintintintint)); sv_set_autostop = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsintTakesintint)); sv_set_event_t = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsintTakesintintint)); @@ -561,6 +580,7 @@ private void UnloadInternal() sv_find_module = null; sv_find_pattern = null; sv_get_autostop = null; + sv_get_base_version = null; sv_get_current_line = null; sv_get_current_line2 = null; sv_get_current_signal_level = null; @@ -622,7 +642,9 @@ private void UnloadInternal() sv_rewind = null; sv_sampler_load = null; sv_sampler_load_from_memory = null; + sv_sampler_par = null; sv_save = null; + sv_save_to_memory = null; sv_send_event = null; sv_set_autostop = null; sv_set_event_t = null; diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index 44a2e9c..9d266ea 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -159,7 +159,7 @@ public bool GetModuleExists(int slotId, int moduleId) /// public FineTunePair GetModuleFineTune(int slotId, int moduleId) { - var (fineTune, relativeNote) = Helper.UnpackTwoSignedShorts(_lib.sv_get_module_finetune(slotId, moduleId)); + var (fineTune, relativeNote) = UtilityHelper.UnpackTwoSignedShorts(_lib.sv_get_module_finetune(slotId, moduleId)); return new FineTunePair(fineTune, relativeNote); } @@ -181,7 +181,7 @@ public int[] GetModuleInputs(int slotId, int moduleId) // memory managed by SunVox var ptr = _lib.sv_get_module_inputs(slotId, moduleId); - return Helper.CopyIntArraySkipNegativeOnes(ptr, inputCount); + return UtilityHelper.CopyIntArraySkipNegativeOnes(ptr, inputCount); } /// @@ -202,13 +202,13 @@ public int[] GetModuleOutputs(int slotId, int moduleId) // memory managed by SunVox var ptr = _lib.sv_get_module_outputs(slotId, moduleId); - return Helper.CopyIntArraySkipNegativeOnes(ptr, outputCount); + return UtilityHelper.CopyIntArraySkipNegativeOnes(ptr, outputCount); } /// public (int x, int y) GetModulePosition(int slotId, int moduleId) { - return Helper.UnpackTwoSignedShorts(_lib.sv_get_module_xy(slotId, moduleId)); + return UtilityHelper.UnpackTwoSignedShorts(_lib.sv_get_module_xy(slotId, moduleId)); } /// diff --git a/SunSharp/Native/sunvox.h b/SunSharp/Native/sunvox.h index 87619c5..1e9e762 100644 --- a/SunSharp/Native/sunvox.h +++ b/SunSharp/Native/sunvox.h @@ -1,6 +1,6 @@ /* SunVox Library (modular synthesizer) - Copyright (c) 2008 - 2023, Alexander Zolotov , WarmPlace.ru + Copyright (c) 2008 - 2024, Alexander Zolotov , WarmPlace.ru */ /* @@ -206,8 +206,27 @@ int sv_load_from_memory( int slot, void* data, uint32_t data_size ) SUNVOX_FN_AT /* sv_save() - save project to the file; + sv_save_to_memory() - save project to memory; return value: memory block allocated with malloc(); + Parameters: + slot; + name - file name; + size - pointer to a variable in which the size of the data will be stored. + Example 1: + sv_save( slot, "proj.sunvox" ); + Example 2: + size_t data_size = 0; //in bytes + void* data = sv_save_to_memory( slot, &data_size ); + if( data ) + { + if( data_size ) + { + //do something with data + } + free( data ); + } */ int sv_save( int slot, const char* name ) SUNVOX_FN_ATTR; +void* sv_save_to_memory( int slot, size_t* size ) SUNVOX_FN_ATTR; /* sv_play() - play from the current position; @@ -283,6 +302,7 @@ int sv_get_current_signal_level( int slot, int channel ) SUNVOX_FN_ATTR; /* From */ const char* sv_get_song_name( int slot ) SUNVOX_FN_ATTR; int sv_set_song_name( int slot, const char* name ) SUNVOX_FN_ATTR; +int sv_get_base_version( int slot ) SUNVOX_FN_ATTR; int sv_get_song_bpm( int slot ) SUNVOX_FN_ATTR; int sv_get_song_tpl( int slot ) SUNVOX_FN_ATTR; @@ -320,7 +340,7 @@ int sv_connect_module( int slot, int source, int destination ) SUNVOX_FN_ATTR; / int sv_disconnect_module( int slot, int source, int destination ) SUNVOX_FN_ATTR; /* USE LOCK/UNLOCK! */ /* - sv_load_module() - load a module or sample; supported file formats: sunsynth, xi, wav, aiff; + sv_load_module() - load a module or sample; supported file formats: sunsynth, xi, wav, aiff, ogg, mp3, flac; return value: new module number or negative value in case of some error; sv_load_module_from_memory() - load a module or sample from the memory block; */ @@ -330,9 +350,20 @@ int sv_load_module_from_memory( int slot, void* data, uint32_t data_size, int x, /* sv_sampler_load() - load a sample into the Sampler; to replace the whole sampler - set sample_slot to -1; sv_sampler_load_from_memory() - load a sample from the memory block; + sv_sampler_par() - set/get sample parameter: + 0 - Loop begin: 0 ... (sample_length - 1); + 1 - Loop length: 0 ... (sample_length - loop_begin); + 2 - Loop type: 0 - none; 1 - fwd; 2 - bidirectional; + 3 - Loop release flag: 0 - none; 1 - loop will be finished after the note release; + 4 - Volume: 0 ... 64; + 5 - Panning: 0 (left) ... 128 (center) ... 255 (right); + 6 - Finetune: -128 ... 0 ... +127 (higher value = higher pitch); + 7 - Relative note: -128 ... 0 ... +127 (higher value = higher pitch); + 8 - Start position: 0 ... (sample_length - 1); */ int sv_sampler_load( int slot, int mod_num, const char* file_name, int sample_slot ) SUNVOX_FN_ATTR; int sv_sampler_load_from_memory( int slot, int mod_num, void* data, uint32_t data_size, int sample_slot ) SUNVOX_FN_ATTR; +int sv_sampler_par( int slot, int mod_num, int sample_slot, int par, int par_val, int set ) SUNVOX_FN_ATTR; /* sv_metamodule_load() - load a file into the MetaModule; supported file formats: sunvox, mod, xm, midi; @@ -623,6 +654,7 @@ typedef int (SUNVOX_FN_ATTR *tsv_update_input)( void ); typedef int (SUNVOX_FN_ATTR *tsv_load)( int slot, const char* name ); typedef int (SUNVOX_FN_ATTR *tsv_load_from_memory)( int slot, void* data, uint32_t data_size ); typedef int (SUNVOX_FN_ATTR *tsv_save)( int slot, const char* name ); +typedef void* (SUNVOX_FN_ATTR *tsv_save_to_memory)( int slot, size_t* size ); typedef int (SUNVOX_FN_ATTR *tsv_play)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_play_from_beginning)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_stop)( int slot ); @@ -641,6 +673,7 @@ typedef int (SUNVOX_FN_ATTR *tsv_get_current_line2)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_get_current_signal_level)( int slot, int channel ); typedef const char* (SUNVOX_FN_ATTR *tsv_get_song_name)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_set_song_name)( int slot, const char* name ); +typedef int (SUNVOX_FN_ATTR *tsv_get_base_version)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_get_song_bpm)( int slot ); typedef int (SUNVOX_FN_ATTR *tsv_get_song_tpl)( int slot ); typedef uint32_t (SUNVOX_FN_ATTR *tsv_get_song_length_frames)( int slot ); @@ -654,6 +687,7 @@ typedef int (SUNVOX_FN_ATTR *tsv_load_module)( int slot, const char* file_name, typedef int (SUNVOX_FN_ATTR *tsv_load_module_from_memory)( int slot, void* data, uint32_t data_size, int x, int y, int z ); typedef int (SUNVOX_FN_ATTR *tsv_sampler_load)( int slot, int mod_num, const char* file_name, int sample_slot ); typedef int (SUNVOX_FN_ATTR *tsv_sampler_load_from_memory)( int slot, int mod_num, void* data, uint32_t data_size, int sample_slot ); +typedef int (SUNVOX_FN_ATTR *tsv_sampler_par)( int slot, int mod_num, int sample_slot, int par, int par_val, int set ); typedef int (SUNVOX_FN_ATTR *tsv_metamodule_load)( int slot, int mod_num, const char* file_name ); typedef int (SUNVOX_FN_ATTR *tsv_metamodule_load_from_memory)( int slot, int mod_num, void* data, uint32_t data_size ); typedef int (SUNVOX_FN_ATTR *tsv_vplayer_load)( int slot, int mod_num, const char* file_name ); @@ -725,6 +759,7 @@ SV_FN_DECL tsv_update_input sv_update_input SV_FN_DECL2; SV_FN_DECL tsv_load sv_load SV_FN_DECL2; SV_FN_DECL tsv_load_from_memory sv_load_from_memory SV_FN_DECL2; SV_FN_DECL tsv_save sv_save SV_FN_DECL2; +SV_FN_DECL tsv_save_to_memory sv_save_to_memory SV_FN_DECL2; SV_FN_DECL tsv_play sv_play SV_FN_DECL2; SV_FN_DECL tsv_play_from_beginning sv_play_from_beginning SV_FN_DECL2; SV_FN_DECL tsv_stop sv_stop SV_FN_DECL2; @@ -743,6 +778,7 @@ SV_FN_DECL tsv_get_current_line2 sv_get_current_line2 SV_FN_DECL2; SV_FN_DECL tsv_get_current_signal_level sv_get_current_signal_level SV_FN_DECL2; SV_FN_DECL tsv_get_song_name sv_get_song_name SV_FN_DECL2; SV_FN_DECL tsv_set_song_name sv_set_song_name SV_FN_DECL2; +SV_FN_DECL tsv_get_base_version sv_get_base_version SV_FN_DECL2; SV_FN_DECL tsv_get_song_bpm sv_get_song_bpm SV_FN_DECL2; SV_FN_DECL tsv_get_song_tpl sv_get_song_tpl SV_FN_DECL2; SV_FN_DECL tsv_get_song_length_frames sv_get_song_length_frames SV_FN_DECL2; @@ -756,6 +792,7 @@ SV_FN_DECL tsv_load_module sv_load_module SV_FN_DECL2; SV_FN_DECL tsv_load_module_from_memory sv_load_module_from_memory SV_FN_DECL2; SV_FN_DECL tsv_sampler_load sv_sampler_load SV_FN_DECL2; SV_FN_DECL tsv_sampler_load_from_memory sv_sampler_load_from_memory SV_FN_DECL2; +SV_FN_DECL tsv_sampler_par sv_sampler_par SV_FN_DECL2; SV_FN_DECL tsv_metamodule_load sv_metamodule_load SV_FN_DECL2; SV_FN_DECL tsv_metamodule_load_from_memory sv_metamodule_load_from_memory SV_FN_DECL2; SV_FN_DECL tsv_vplayer_load sv_vplayer_load SV_FN_DECL2; @@ -869,6 +906,7 @@ int sv_load_dll2( LIBNAME_STR_TYPE filename ) IMPORT( g_sv_dll, tsv_load, "sv_load", sv_load ); IMPORT( g_sv_dll, tsv_load_from_memory, "sv_load_from_memory", sv_load_from_memory ); IMPORT( g_sv_dll, tsv_save, "sv_save", sv_save ); + IMPORT( g_sv_dll, tsv_save_to_memory, "sv_save_to_memory", sv_save_to_memory ); IMPORT( g_sv_dll, tsv_play, "sv_play", sv_play ); IMPORT( g_sv_dll, tsv_play_from_beginning, "sv_play_from_beginning", sv_play_from_beginning ); IMPORT( g_sv_dll, tsv_stop, "sv_stop", sv_stop ); @@ -887,6 +925,7 @@ int sv_load_dll2( LIBNAME_STR_TYPE filename ) IMPORT( g_sv_dll, tsv_get_current_signal_level, "sv_get_current_signal_level", sv_get_current_signal_level ); IMPORT( g_sv_dll, tsv_get_song_name, "sv_get_song_name", sv_get_song_name ); IMPORT( g_sv_dll, tsv_set_song_name, "sv_set_song_name", sv_set_song_name ); + IMPORT( g_sv_dll, tsv_get_base_version, "sv_get_base_version", sv_get_base_version ); IMPORT( g_sv_dll, tsv_get_song_bpm, "sv_get_song_bpm", sv_get_song_bpm ); IMPORT( g_sv_dll, tsv_get_song_tpl, "sv_get_song_tpl", sv_get_song_tpl ); IMPORT( g_sv_dll, tsv_get_song_length_frames, "sv_get_song_length_frames", sv_get_song_length_frames ); @@ -900,6 +939,7 @@ int sv_load_dll2( LIBNAME_STR_TYPE filename ) IMPORT( g_sv_dll, tsv_load_module_from_memory, "sv_load_module_from_memory", sv_load_module_from_memory ); IMPORT( g_sv_dll, tsv_sampler_load, "sv_sampler_load", sv_sampler_load ); IMPORT( g_sv_dll, tsv_sampler_load_from_memory, "sv_sampler_load_from_memory", sv_sampler_load_from_memory ); + IMPORT( g_sv_dll, tsv_sampler_par, "sv_sampler_par", sv_sampler_par ); IMPORT( g_sv_dll, tsv_metamodule_load, "sv_metamodule_load", sv_metamodule_load ); IMPORT( g_sv_dll, tsv_metamodule_load_from_memory, "sv_metamodule_load_from_memory", sv_metamodule_load_from_memory ); IMPORT( g_sv_dll, tsv_vplayer_load, "sv_vplayer_load", sv_vplayer_load ); diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 86cc728..2273075 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -3,40 +3,26 @@ namespace SunSharp { - public enum NoteName - { - C = 0, - Cs = 1, - D = 2, - Ds = 3, - E = 4, - F = 5, - Fs = 6, - G = 7, - Gs = 8, - A = 9, - As = 10, - B = 11, - Other = 12 - } - - public static class NoteNameExtensions - { - public static char GetNoteCharacter(this NoteName noteName) - { - const string notes = "CcDdEFfGgAaB"; - var i = (int)noteName; - if (i < 0 || i > 11) - { - return '?'; - } - return notes[i]; - } - } - + /// + /// Represents a musical note or command in the SunVox pattern format. + /// This structure encapsulates both standard musical notes (C0-F#10) and special commands + /// like note off, stop, play, etc. + /// + /// + /// The note value is stored as a single byte where: + /// + /// 0 = Nothing/Silence + /// 1-127 = Musical notes (C0 = 1, C#0 = 2, ..., F#10 = 127) + /// 128+ = Special commands (note off, stop, play, etc.) + /// + /// + /// [StructLayout(LayoutKind.Explicit, Size = 1)] public readonly struct Note : IEquatable { + /// + /// The raw byte value of the note. + /// [FieldOffset(0)] public readonly byte Value; private const byte NOTECMD_NOTE_OFF = 128; @@ -45,14 +31,18 @@ public static char GetNoteCharacter(this NoteName noteName) private const byte NOTECMD_STOP = 131; private const byte NOTECMD_PLAY = 132; private const byte NOTECMD_SET_PITCH = 133; + private const byte NOTECMD_PREVIOUS_TRACK = 134; private const byte NOTECMD_CLEAN_MODULE = 140; - public static Note Silence => new Note(0); + /// + /// Does nothing. + /// + public static Note Nothing => 0; /// /// Stops the note playing on its track. /// - public static Note Off => new Note(NOTECMD_NOTE_OFF); + public static Note Off => NOTECMD_NOTE_OFF; /// /// Sends "note off" to all modules. @@ -75,25 +65,33 @@ public static char GetNoteCharacter(this NoteName noteName) public static Note Play => NOTECMD_PLAY; /// - /// Sets the pitch specified in column XXYY, where 0x0000 - highest possible pitch, 0x7800 - lowest pitch (note C0); - /// one semitone = 0x100. + /// Sets the pitch specified in column XXYY, where 0x0000 - highest possible pitch, + /// 0x7800 -lowest pitch (note C0); one semitone = 0x100. /// + /// + /// Consider using the helper class for pitch conversions. + /// public static Note SetPitch => NOTECMD_SET_PITCH; /// - /// Stops the module: clear its internal buffers and put it into standby mode. + /// Stops the module, clears its internal buffers and puts it into standby mode. /// public static Note CleanModule => NOTECMD_CLEAN_MODULE; + /// + /// Used to apply effects to the previous track. + /// + public static Note PreviousTrack => NOTECMD_PREVIOUS_TRACK; + /// /// Get the name of the note. Returns valid values for notes in range C0 to F#10 inclusive. - /// Returns otherwise. + /// Returns otherwise. /// public NoteName Name { get { - if (IsNormal) + if (IsMusicalNote) { return (NoteName)((Value - 1) % 12); } @@ -103,78 +101,236 @@ public NoteName Name } /// - /// Get the name of the note. Returns valid values for notes in range C0 to F#10 inclusive. - /// Returns otherwise. + /// Gets the octave number of the musical note, if applicable. /// + /// + /// Returns -1 if the value does not represent a musical note. + /// public int Octave { get { - if (IsNormal) return (Value - 1) / 12; - + if (IsMusicalNote) + { + return (Value - 1) / 12; + } return -1; } } - /// public bool IsNoteOff => Value == NOTECMD_NOTE_OFF; - /// public bool IsAllNotesOff => Value == NOTECMD_ALL_NOTES_OFF; - /// public bool IsCleanSynths => Value == NOTECMD_CLEAN_SYNTHS; - /// public bool IsCleanModule => Value == NOTECMD_CLEAN_MODULE; - /// public bool IsStop => Value == NOTECMD_STOP; - /// public bool IsPlay => Value == NOTECMD_PLAY; - /// public bool IsSetPitch => Value == NOTECMD_SET_PITCH; - /// - public bool IsSilence => Value == 0; + public bool IsNothing => Value == 0; + + /// + /// Gets a value indicating whether this is a normal musical note (C0-F#10). + /// + public bool IsMusicalNote => Value > 0 && Value < 128; + + /// + /// Whether the note value can be displayed in SunVox's pattern editor. + /// Does not include commands that don't have a visual representation. + /// + public bool IsDisplayable => Value <= 128 // nothing, note or silence + || Value == NOTECMD_SET_PITCH + || Value == NOTECMD_PREVIOUS_TRACK + || Value == NOTECMD_CLEAN_MODULE; /// - /// Whether this is a normal note. + /// Gets a value indicating whether the value is considered a valid note or command in SunVox. /// - public bool IsNormal => Value > 0 && Value < 128; + public bool IsValid => IsDisplayable + || Value == NOTECMD_ALL_NOTES_OFF + || Value == NOTECMD_CLEAN_SYNTHS + || Value == NOTECMD_STOP + || Value == NOTECMD_PLAY; + /// + /// Initializes a new instance of the struct with the specified raw byte value. + /// public Note(byte value) { Value = value; } /// - /// Construct a note in range of C0 to F#10 inclusive. + /// Initializes a new instance of the struct with the specified note name and octave. + /// Valid range is C0 to F#10 inclusive. /// - /// The note value. - /// + /// + /// Thrown when is not a valid note name. + /// + /// + /// Thrown when the note and octave combination is out of the supported range (C0 to F#10). + /// public Note(NoteName name, int octave) { - if (name < NoteName.C || name > NoteName.B) + if (!name.IsValidNoteName()) { throw new ArgumentException($"Unsupported note '{name}'."); } - if (octave < 0 || octave > 10) + var i = 1 + (int)name + (octave * 12); + if (i < 1 || i > 127) { - throw new ArgumentOutOfRangeException(nameof(octave), octave, "Only values in range of 0 to 10 are supported."); + throw new ArgumentOutOfRangeException($"The note '{name}' at octave '{octave}' is out of supported range (C0 to F#10)."); } - if (octave == 10 && name > NoteName.Fs) - { - throw new ArgumentOutOfRangeException(nameof(name), name, "In the tenth octave, only notes up to F# are supported."); - } - - Value = unchecked((byte)(1 + name + octave * 12)); + Value = (byte)i; } + #region shorthand factory methods + + /// + /// Creates a C note at the specified octave. + /// + /// + /// + /// + public static Note C(int octave) => new Note(NoteName.C, octave); + + /// + /// Creates a C# note at the specified octave. + /// + /// + public static Note Cs(int octave) => new Note(NoteName.Cs, octave); + + /// + /// Creates a D♭ note at the specified octave. Enharmonic equivalent of C#. + /// + /// + public static Note Db(int octave) => new Note(NoteName.Db, octave); + + /// + /// Creates a D note at the specified octave. + /// + /// + public static Note D(int octave) => new Note(NoteName.D, octave); + + /// + /// Creates a D# note at the specified octave. + /// + /// + public static Note Ds(int octave) => new Note(NoteName.Ds, octave); + + /// + /// Creates an E♭ note at the specified octave. Enharmonic equivalent of D#. + /// + /// + public static Note Eb(int octave) => new Note(NoteName.Eb, octave); + + /// + /// Creates an E note at the specified octave. + /// + /// + public static Note E(int octave) => new Note(NoteName.E, octave); + + /// + /// Creates an E# note at the specified octave. Enharmonic equivalent of F. + /// + /// + public static Note Es(int octave) => new Note(NoteName.Es, octave); + + /// + /// Creates an F♭ note at the specified octave. Enharmonic equivalent of E. + /// + /// + public static Note Fb(int octave) => new Note(NoteName.Fb, octave); + + /// + /// Creates an F note at the specified octave. + /// + /// + public static Note F(int octave) => new Note(NoteName.F, octave); + + /// + /// Creates an F# note at the specified octave. + /// + /// + public static Note Fs(int octave) => new Note(NoteName.Fs, octave); + + /// + /// Creates a G♭ note at the specified octave. Enharmonic equivalent of F#. + /// + /// + public static Note Gb(int octave) => new Note(NoteName.Gb, octave); + + /// + /// Creates a G note at the specified octave. + /// + /// + public static Note G(int octave) => new Note(NoteName.G, octave); + + /// + /// Creates a G# note at the specified octave. + /// + /// + public static Note Gs(int octave) => new Note(NoteName.Gs, octave); + + /// + /// Creates an A♭ note at the specified octave. Enharmonic equivalent of G#. + /// + /// + public static Note Ab(int octave) => new Note(NoteName.Ab, octave); + + /// + /// Creates an A note at the specified octave. + /// + /// + public static Note A(int octave) => new Note(NoteName.A, octave); + + /// + /// Creates an A# note at the specified octave. + /// + /// + public static Note As(int octave) => new Note(NoteName.As, octave); + + /// + /// Creates a B♭ note at the specified octave. Enharmonic equivalent of A#. + /// + /// + public static Note Bb(int octave) => new Note(NoteName.Bb, octave); + + /// + /// Creates a B note at the specified octave. + /// + /// + public static Note B(int octave) => new Note(NoteName.B, octave); + + /// + /// Creates a B# note at the specified octave. Enharmonic equivalent of C in the next octave. + /// + /// + /// Since B♯ is a semitone above B, it actually belongs to the next octave. + /// For example, B♯3 = C4, B♯4 = C5, etc. + /// + /// + public static Note Bs(int octave) => new Note(NoteName.Bs, octave); + + /// + /// Creates a C♭ note at the specified octave. Enharmonic equivalent of B in the previous octave. + /// + /// + /// Since C♭ is a semitone below C, it actually belongs to the previous octave. + /// For example, C♭4 = B3, C♭5 = B4, etc. + /// + /// + public static Note Cb(int octave) => new Note(NoteName.Cb, octave); + + #endregion shorthand factory methods + public static implicit operator Note(byte value) { return new Note(value); @@ -185,6 +341,28 @@ public static implicit operator byte(Note note) return note.Value; } + /// + /// Returns a two-character string representation of the note. + /// + /// + /// The returns a two-character string representing the note or command, + /// even if SunVox does not display it in the pattern editor. + /// + /// + /// A two-character string representing the note: + /// + /// two empty spaces for nothing/silence + /// "--" for + /// "-!" for + /// "CS" for + /// "CM" for + /// "S!" for + /// "P!" for + /// "SP" for + /// Note name and octave (e.g., "C4", "d5") for musical notes + /// "??" for unknown/invalid values + /// + /// public override string ToString() { return Value switch @@ -197,24 +375,43 @@ public override string ToString() NOTECMD_STOP => "S!", NOTECMD_PLAY => "P!", NOTECMD_SET_PITCH => "SP", - _ => Value < 128 ? $"{Name.GetNoteCharacter()}{Octave}" : "??" + NOTECMD_PREVIOUS_TRACK => "<<", + _ => IsMusicalNote ? MusicalNoteToString() : "??" }; } + private string MusicalNoteToString() + { + return $"{Name.GetNoteCharacterAsDisplayed()}{OctaveToChar(Octave)}"; + } + + private static char OctaveToChar(int octave) + { + if (octave < 10) + { + return (char)('0' + octave); + } + return (char)('A' + octave); + } + + /// public bool Equals(Note other) { return Value == other.Value; } + /// public override bool Equals(object? obj) { return obj switch { Note other => Equals(other), + byte b => Equals(b), _ => false }; } + /// public override int GetHashCode() { return Value.GetHashCode(); diff --git a/SunSharp/NoteName.cs b/SunSharp/NoteName.cs new file mode 100644 index 0000000..a1ddab9 --- /dev/null +++ b/SunSharp/NoteName.cs @@ -0,0 +1,178 @@ +namespace SunSharp +{ + /// + /// Represents the name of a musical note within an octave. + /// + /// + /// Supports enharmonic equivalents with one accidental (sharp or flat). + /// + public enum NoteName : sbyte + { + #region normal notes + + /// + /// C note. + /// Enharmonic equivalent of B♯ in the previous octave. + /// + C = 0, + + /// + /// C♯ note. + /// + Cs = 1, + + /// + /// D note. + /// + D = 2, + + /// + /// D♯ note. + /// Enharmonic equivalent of E♭. + /// + Ds = 3, + + /// + /// E note. + /// Enharmonic equivalent of F♭. + /// + E = 4, + + /// + /// F note. + /// + F = 5, + + /// + /// F♯ note. + /// Enharmonic equivalent of G♭. + /// + Fs = 6, + + /// + /// G note. + /// + G = 7, + + /// + /// G♯ note. + /// Enharmonic equivalent of A♭. + /// + Gs = 8, + + /// + /// A note. + /// + A = 9, + + /// + /// A♯ note. + /// Enharmonic equivalent of B♭. + /// + As = 10, + + /// + /// B note. + /// Enharmonic equivalent of C♭ in the next octave. + /// + B = 11, + + #endregion normal notes + + #region additioanl enharmonic notes + + /// + /// D♭ note (flat). + /// Enharmonic equivalent of B in the previous octave. + /// + Cb = -1, + + /// + /// D♭ note. + /// Enharmonic equivalent of C♯. + /// + Db = Cs, + + /// + /// E♭ note (flat). + /// Enharmonic equivalent of D♯. + /// + Eb = Ds, + + /// + /// E♯ note (natural). + /// Enharmonic equivalent of F. + /// + Es = F, + + /// + /// E♭ note (flat). + /// Enharmonic equivalent of E. + /// + Fb = E, + + /// + /// G♭ note. + /// Enharmonic equivalent of F♯. + /// + Gb = Fs, + + /// + /// A♭ note. + /// Enharmonic equivalent of G♯. + /// + Ab = Gs, + + /// + /// B♭ note. + /// Enharmonic equivalent of A♯. + /// + Bb = As, + + /// + /// B♯ note. + /// Enharmonic equivalent of C in the next octave. + /// + Bs = 12, + + #endregion additioanl enharmonic notes + + /// + /// Unspecified, unknown or otherwise invalid note name. + /// + Other = -128 + } + + /// + /// Extension methods for the enum. + /// + public static class NoteNameExtensions + { + /// + /// Returns the character representation of the specified note as displayed in SunVox. + /// + /// + /// Only valid for note names in the range of C to B, and defaults to '?' for others. + /// In case of accidentals, returns the lowercase character for sharp notes. + /// You are likely looking for for full note representation. + /// + public static char GetNoteCharacterAsDisplayed(this NoteName noteName) + { + const string Mapping = "CcDdEFfGgAaB"; + var i = (int)noteName; + if (i < 0 || i > 11) // check if greater than B or less than C + { + return '?'; + } + return Mapping[(int)noteName]; + } + + /// + /// Returns whether the specified note name is a valid note name. + /// + public static bool IsValidNoteName(this NoteName noteName) + { + return noteName >= NoteName.Cb && noteName <= NoteName.Bs; + } + } +} diff --git a/SunSharp/PatternEvent.cs b/SunSharp/PatternEvent.cs index c9f0b58..8388659 100644 --- a/SunSharp/PatternEvent.cs +++ b/SunSharp/PatternEvent.cs @@ -3,90 +3,354 @@ namespace SunSharp { + /// + /// Represents a SunVox pattern event that encodes music commands such as notes, effects, and + /// controller changes in a compact 64-bit format. + /// + /// + /// For better readability, consider using the property accessors and factory methods provided. + /// [Serializable] [StructLayout(LayoutKind.Explicit, Size = 8)] public struct PatternEvent : IEquatable { /// - /// Gets or sets the raw 64-bit data value. + /// Raw 64-bit data representing the entire event. /// [field: FieldOffset(0)] public ulong Data { get; set; } + /// + /// Note number or special command. Consider using instead. + /// [field: FieldOffset(0)] public byte NN { get; set; } + /// + /// Raw velocity value (actual velocity + 1). A value of 0 indicates default velocity should be used. + /// Consider using property instead for automatic offset handling. + /// [field: FieldOffset(1)] public byte VV { get; set; } + /// + /// Raw module number (actual module ID + 1). A value of 0 indicates no module is targeted. + /// Consider using property instead for automatic offset handling. + /// [field: FieldOffset(2)] public ushort MM { get; set; } + /// + /// Combined controller and effect code as a 16-bit value (high byte = CC, low byte = EE). + /// Consider using and properties instead + /// for better readability. + /// [field: FieldOffset(4)] public ushort CCEE { get; set; } + /// + /// Raw effect code (low byte of CCEE). Consider using property instead + /// for type-safe effect handling. + /// [field: FieldOffset(4)] public byte EE { get; set; } + /// + /// Raw controller number (high byte of CCEE, actual controller + 1). + /// Consider using property instead for automatic offset handling. + /// [field: FieldOffset(5)] public byte CC { get; set; } + /// + /// Combined 16-bit parameter value (low byte = XX, high byte = YY). + /// [field: FieldOffset(6)] public ushort XXYY { get; set; } + /// + /// High byte of parameter value (upper 8 bits of XXYY). + /// [field: FieldOffset(7)] public byte YY { get; set; } + /// + /// Low byte of parameter value (lower 8 bits of XXYY). + /// [field: FieldOffset(6)] public byte XX { get; set; } + /// + /// Note value. Allows for explicit note commands. + /// + public Note Note + { + readonly get => NN; + set => NN = value; + } + + /// + /// Note velocity. Returns null when default velocity is used. Automatically handles the +1 + /// offset used in raw data. + /// + public byte? Velocity + { + readonly get => VV == 0 ? null : (byte?)(VV - 1); + set => VV = value == null ? (byte)0 : (byte)(value + 1); + } + + /// + /// Module identifier (0-based). Returns null when no module is specified. Automatically handles + /// the +1 offset used in raw data. + /// + public int? ModuleId + { + readonly get => MM == 0 ? null : (ushort?)(MM - 1); + set => MM = (value == null) ? (ushort)0 : (ushort)(value + 1); + } + + /// + /// Pattern event effect code. + /// public Effect Effect { readonly get => (Effect)EE; set => EE = (byte)value; } - public Note Note + /// + /// Controller identifier (0-based). Returns when no controller is specified. + /// Module controllers: 0-126 (raw data: 1-127). + /// MIDI controllers: 127+ (raw data: 0x80+). + /// Automatically handles the +1 offset used in raw data. + /// + public byte? ControllerId { - readonly get => NN; - set => NN = value; + readonly get => CC == 0 ? null : (byte?)(CC - 1); + set => CC = value == null ? (byte)0 : (byte)(value + 1); } + /// + /// Parameter value for controller or effect (16-bit unsigned integer). + /// Range: 0-32768 (0x8000) for controllers, 0-65535 (0xFFFF) for effects. + /// For pitch commands: 0x0000 = highest pitch, 0x7800 = C0, 0x100 = one semitone. + /// + public ushort Value + { + readonly get => XXYY; + set => XXYY = value; + } + + /// + /// Gets a value indicating whether this event contains a note command (musical note or special command). + /// + public readonly bool HasNote => NN != 0; + + /// + /// Gets a value indicating whether this event contains an explicit velocity value (not using default). + /// + public readonly bool HasVelocity => VV != 0; + + /// + /// Gets a value indicating whether this event targets a specific module. + /// + public readonly bool HasModule => MM != 0; + + /// + /// Gets a value indicating whether this event contains a controller change. + /// + public readonly bool HasController => CC != 0; + + /// + /// Gets a value indicating whether this event contains an effect command. + /// + public readonly bool HasEffect => EE != 0; + + /// + /// Gets a value indicating whether this event contains a non-zero parameter value. + /// + public readonly bool HasValue => XXYY != 0; + + /// + /// Whether this is an empty event (all fields zero). + /// + public readonly bool IsEmpty => Data == 0; + + /// + /// Gets an empty pattern event with all fields set to zero (represents a blank pattern cell). + /// + public static PatternEvent Empty => new PatternEvent(0); + + /// + /// Initializes a new instance of the struct from raw 64-bit data. + /// + /// The raw 64-bit value containing all event fields. public PatternEvent(ulong value) : this() { Data = value; } - public PatternEvent(Note nn, byte vv, ushort mm) : this() + /// + /// Initializes a pattern event with individual fields. Uses raw data format. + /// + /// + /// Consider using factory methods for better readability. + /// + /// + /// + /// + /// + /// + /// + public PatternEvent(byte nn, byte vv, ushort mm, byte cc, byte ee, ushort xxyy) : this() { NN = nn; VV = vv; MM = mm; + CC = cc; + EE = ee; + XXYY = xxyy; } - public PatternEvent(Effect ee, ushort xxyy) : this() + /// + /// Creates a note event that triggers a note on the specified module. + /// + /// + /// + /// + public static PatternEvent NoteEvent(Note note, int? moduleId, byte? velocity = null) { - EE = (byte)ee; - XXYY = xxyy; + return new PatternEvent() + { + Note = note, + ModuleId = moduleId, + Velocity = velocity + }; } - public PatternEvent(byte nn, byte vv, ushort mm, ushort ccee, ushort xxyy) : this() + /// + /// Creates a controller event that changes a module parameter. + /// + /// + /// + /// + /// + /// For better type safety and readability, consider using typed module handles and extension methods. + /// + public static PatternEvent ControllerEvent(int moduleId, byte controller, ushort value) { - NN = nn; - VV = vv; - MM = mm; - CCEE = ccee; - XXYY = xxyy; + return new PatternEvent() + { + ModuleId = moduleId, + ControllerId = controller, + Value = value + }; } - public PatternEvent(Note nn, byte vv, ushort mm, byte cc, Effect ee, ushort xxyy) : this() + /// + /// Creates an effect event that applies a pattern effect. + /// + /// + /// + /// + /// A new configured as an effect event. + public static PatternEvent EffectEvent(int? moduleId, Effect effect, ushort value) { - NN = nn; - VV = vv; - MM = mm; - CC = cc; - EE = (byte)ee; - XXYY = xxyy; + return new PatternEvent() + { + ModuleId = moduleId, + Effect = effect, + Value = value + }; } - public PatternEvent(Note nn, byte vv, ushort mm, byte cc, byte ee, ushort xxyy) : this() + /// + /// Creates a Set Pitch event with exact pitch value for microtonal or pitch-bend effects. + /// + /// Module number (0-based). + /// Pitch value where 0x0000 = highest pitch, 0x7800 = C0 (lowest), 0x100 = one semitone. + /// Velocity value (0-128). Use for default velocity. + /// A new configured as a set pitch event. + /// + /// + /// // Set pitch to middle C (C4 = 0x3C00) + /// var middleC = PatternEvent.SetPitchEvent(0, 0x3C00); + /// // Set pitch to A4 (440Hz reference = 0x4500) + /// var a440 = PatternEvent.SetPitchEvent(0, 0x4500, 100); + /// + /// + public static PatternEvent SetPitchEvent(int moduleId, ushort pitch, byte? velocity = null) { - NN = nn; - VV = vv; - MM = mm; - CC = cc; - EE = ee; - XXYY = xxyy; + return new PatternEvent() + { + Note = Note.SetPitch, + ModuleId = moduleId, + Velocity = velocity, + Value = pitch + }; + } + + /// + /// Creates a Set Pitch event by converting a frequency in Hz to the appropriate pitch value. + /// + /// Module number (0-based). + /// Frequency in Hz (e.g., 440.0 for A4). + /// Velocity value (0-128). Use for default velocity. + /// A new with the calculated pitch value. + /// + /// + /// // Set pitch to A4 (440 Hz) + /// var a440 = PatternEvent.SetFrequencyEvent(0, 440.0, 100); + /// // Set pitch to middle C (261.63 Hz) + /// var c4 = PatternEvent.SetFrequencyEvent(0, 261.63); + /// + /// + public static PatternEvent SetFrequencyEvent(int moduleId, double frequency, byte? velocity = null) + { + var pitch = (ushort)Microtones.FrequencyToPitch(frequency); + return SetPitchEvent(moduleId, pitch, velocity); + } + + /// + /// Creates a new generic pattern event with optional parameters for flexible event construction. + /// + /// + /// + /// + /// + /// + /// + /// A new with the specified fields. + /// + /// This method provides maximum flexibility for creating events. For common scenarios, + /// consider using specific factory methods like , , etc. + /// + public static PatternEvent NewEvent(Note note = default, byte? velocity = null, int? moduleId = null, byte? controller = null, Effect effect = Effect.None, ushort value = 0) + { + return new PatternEvent() + { + Note = note, + Velocity = velocity, + ModuleId = moduleId, + ControllerId = controller, + Effect = effect, + Value = value + }; + } + + /// + /// Merges two events, with non-zero values from overwriting + /// corresponding values in . + /// + /// The base event providing default values. + /// The event whose non-zero fields override the base event. + /// A merged combining both inputs. + /// + /// This performs a field-by-field merge where any non-zero field in + /// replaces the corresponding field in . Useful for layering + /// pattern data or applying partial updates. + /// + public static PatternEvent Merge(PatternEvent first, PatternEvent second) + { + return new PatternEvent() + { + NN = second.NN != 0 ? second.NN : first.NN, + VV = second.VV != 0 ? second.VV : first.VV, + MM = second.MM != 0 ? second.MM : first.MM, + EE = second.EE != 0 ? second.EE : first.EE, + CC = second.CC != 0 ? second.CC : first.CC, + XXYY = second.XXYY != 0 ? second.XXYY : first.XXYY + }; } public static implicit operator PatternEvent(ulong value) @@ -99,11 +363,39 @@ public static implicit operator ulong(PatternEvent @event) return @event.Data; } + /// + /// Column header string for pattern display: "NNVVMMMMCCEEXXYY". + /// + /// + /// Primarily used for formatting pattern output in tracker-style displays. + /// + public const string PatternEventHeaderString = "NNVVMMMMCCEEXXYY"; + + /// + /// Returns hexadecimal string representation that roughly follows the SunVox format. + /// Empty fields shown as spaces. + /// + /// + /// Some examples of the output format: + /// + /// "C4__00001________" - Note C4 on module 0, no velocity, no effect/controller/value. + /// "__64__0001_02_1000" - Velocity 100 on module 0, controller 2 set to 4096. + /// + /// + /// Keep in mind: + /// + /// Module number (MMMM) is as displayed in SunVox, incremented by one compared to library-side module IDs + /// CC and EE are independent, unlike in SunVox + /// CC is as displayed in SunVox, incremented by one compared to library-side module IDs + /// + /// + /// Note: spaces were replaced with underscores for better visibility in the examples. + /// public override readonly string ToString() { return $"{(Note)NN}" + - $"{(VV != 0 ? $"{VV:X2}" : " ")}" + - $"{(MM != 0 ? $"{MM:X4}" : " ")}" + + $"{(VV != 0 ? $"{VV - 1:X2}" : " ")}" + + $"{(MM != 0 ? $"{MM - 1:X4}" : " ")}" + $"{(CC != 0 ? $"{CC:X2}" : " ")}" + $"{(EE != 0 ? $"{EE:X2}" : " ")}" + $"{(XXYY != 0 ? $"{XXYY:X4}" : " ")}"; @@ -119,16 +411,19 @@ public override readonly string ToString() return a.Data != b.Data; } + /// public override readonly bool Equals(object? obj) { return obj is PatternEvent e && this == e; } + /// public readonly bool Equals(PatternEvent other) { return this == other; } + /// public override readonly int GetHashCode() { return Data.GetHashCode(); diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index cb39c00..4d42e6c 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -449,7 +449,7 @@ public int GetSongBpm() public void SetSongBpm(int value) { var xxyy = (ushort)Math.Min(Math.Max(0, value), 800); - VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetBpm, xxyy)); + VirtualPattern.SendEventImmediately(0, PatternEvent.EffectEvent(null, Effect.SetBpm, xxyy)); } /// @@ -462,7 +462,7 @@ public int GetSongTpl() public void SetSongTpl(int value) { var xxyy = (ushort)Math.Min(Math.Max(1, value), 31); - VirtualPattern.SendEventImmediately(0, new PatternEvent(Effect.SetPlayingSpeed, xxyy)); + VirtualPattern.SendEventImmediately(0, PatternEvent.EffectEvent(null, Effect.SetPlayingSpeed, xxyy)); } /// diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index 0114722..d5fb0e6 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -51,11 +51,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/SunSharp/SunVoxConstants.cs b/SunSharp/SunVoxConstants.cs deleted file mode 100644 index ba0707f..0000000 --- a/SunSharp/SunVoxConstants.cs +++ /dev/null @@ -1,16 +0,0 @@ -#pragma warning disable CA1707 // keep same naming as in official sunvox documentation - -namespace SunSharp -{ - public static class SunVoxConstants - { - public const uint SV_INIT_FLAG_NO_DEBUG_OUTPUT = 1 << 0; - public const uint SV_INIT_FLAG_USER_AUDIO_CALLBACK = 1 << 1; - public const uint SV_INIT_FLAG_AUDIO_INT16 = 1 << 2; - public const uint SV_INIT_FLAG_AUDIO_FLOAT32 = 1 << 3; - public const uint SV_INIT_FLAG_ONE_THREAD = 1 << 4; - - public const int SV_TIME_MAP_SPEED = 0; - public const int SV_TIME_MAP_FRAMECNT = 1; - } -} diff --git a/SunSharp/Helper.cs b/SunSharp/UtilityHelper.cs similarity index 61% rename from SunSharp/Helper.cs rename to SunSharp/UtilityHelper.cs index bedf28b..80cedb8 100644 --- a/SunSharp/Helper.cs +++ b/SunSharp/UtilityHelper.cs @@ -3,17 +3,11 @@ namespace SunSharp { - public static class Helper + public static class UtilityHelper { public static short ToShortBitwise(uint value) { - if ((value & 0x8000) == 0) - { - return (short)value; - } - - var val = (int)value; - return (short)(val - 0x10000); + return unchecked((short)(ushort)value); } public static int[] CopyIntArraySkipNegativeOnes(IntPtr address, int count) @@ -65,28 +59,6 @@ public static uint PackTwoSignedShorts(short lowerBytes, short upperBytes) return unchecked((ushort)lowerBytes) | ((uint)upperBytes << 16); } - public static float PitchToFrequency(float pitch) - { - return (float)PitchToFrequency((double)pitch); - } - - // from SunVox pitch to Hz: freq = pow( 2, ( 30720 - pitch ) / 3072 ) * 16.333984375 - public static double PitchToFrequency(double pitch) - { - return Math.Pow(2, (30720.0 - pitch) / 3072.0) * 16.333984375; - } - - public static float FrequencyToPitch(float frequency) - { - return (float)FrequencyToPitch((double)frequency); - } - - // from Hz to SunVox pitch: pitch = 30720 - log2( freq / 16.333984375 ) * 3072 - public static double FrequencyToPitch(double frequency) - { - return 30720.0 - (Math.Log(frequency / 16.333984375, 2) * 3072.0); - } - #endregion macros } } From 711d261c27caa6f62beef4155f6ba2cd6846ee14 Mon Sep 17 00:00:00 2001 From: Sotakebk Date: Sun, 25 Jan 2026 21:15:08 +0100 Subject: [PATCH 13/27] documentation, other improvements --- .../ModuleHandles/BasicModuleGenerator.cs | 2 +- .../Generators/NativeProxyGenerator.cs | 26 +- .../Generators/OwnData/ModuleDataGenerator.cs | 1 + Examples/Program.cs | 3 - .../SunSharp.IntegrationTests.csproj | 4 - SunSharp.Redistribution/LibraryLoader.cs | 2 +- SunSharp.Tests/LibraryVersionTests.cs | 33 -- .../Native/Loader/NativeProxyTests.cs | 186 ++++--- .../SunVoxLibNativeWrapperModulesTests.cs | 32 +- .../SunVoxLibNativeWrapperPatternsTests.cs | 8 +- .../Native/SunVoxLibNativeWrapperTests.cs | 32 +- SunSharp.Tests/NoteTests.cs | 7 +- SunSharp.Tests/PatternEventTests.cs | 28 +- SunSharp.Tests/SunVoxVersionTests.cs | 50 ++ SunSharp/Effects.cs | 10 +- SunSharp/LibraryVersion.cs | 59 --- SunSharp/Modules/TypedModuleHandle.cs | 4 + SunSharp/Modules/VorbisPlayerModuleHandle.cs | 12 +- .../Modules/{ => g}/AdsrModuleHandle.g.cs | 0 .../{ => g}/AmplifierModuleHandle.g.cs | 0 .../{ => g}/AnalogGeneratorModuleHandle.g.cs | 0 .../{ => g}/CompressorModuleHandle.g.cs | 0 .../{ => g}/ControlToNoteModuleHandle.g.cs | 0 .../{ => g}/DcBlockerModuleHandle.g.cs | 0 .../Modules/{ => g}/DelayModuleHandle.g.cs | 0 .../{ => g}/DistortionModuleHandle.g.cs | 0 .../{ => g}/DrumSynthModuleHandle.g.cs | 0 .../Modules/{ => g}/EchoModuleHandle.g.cs | 0 SunSharp/Modules/{ => g}/EqModuleHandle.g.cs | 0 .../Modules/{ => g}/FeedbackModuleHandle.g.cs | 0 SunSharp/Modules/{ => g}/FftModuleHandle.g.cs | 0 .../Modules/{ => g}/FilterModuleHandle.g.cs | 0 .../{ => g}/FilterProModuleHandle.g.cs | 0 .../Modules/{ => g}/FlangerModuleHandle.g.cs | 0 SunSharp/Modules/{ => g}/FmModuleHandle.g.cs | 0 SunSharp/Modules/{ => g}/FmxModuleHandle.g.cs | 0 .../{ => g}/GeneratorModuleHandle.g.cs | 0 .../Modules/{ => g}/GlideModuleHandle.g.cs | 0 .../Modules/{ => g}/GpioModuleHandle.g.cs | 0 .../Modules/{ => g}/InputModuleHandle.g.cs | 0 .../Modules/{ => g}/KickerModuleHandle.g.cs | 0 SunSharp/Modules/{ => g}/LfoModuleHandle.g.cs | 0 .../Modules/{ => g}/LoopModuleHandle.g.cs | 0 .../{ => g}/MetaModuleModuleHandle.g.cs | 0 .../{ => g}/ModulatorModuleHandle.g.cs | 0 .../{ => g}/MultiControlModuleHandle.g.cs | 0 .../{ => g}/MultiSynthModuleHandle.g.cs | 0 .../Modules/{ => g}/OutputModuleHandle.g.cs | 0 .../{ => g}/PitchDetectorModuleHandle.g.cs | 0 .../{ => g}/PitchShifterModuleHandle.g.cs | 0 .../{ => g}/PitchToControlModuleHandle.g.cs | 0 .../Modules/{ => g}/ReverbModuleHandle.g.cs | 0 .../Modules/{ => g}/SamplerModuleHandle.g.cs | 0 .../{ => g}/SoundToControlModuleHandle.g.cs | 0 .../{ => g}/SpectraVoiceModuleHandle.g.cs | 0 .../VelocityToControlModuleHandle.g.cs | 0 .../Modules/{ => g}/VibratoModuleHandle.g.cs | 0 .../{ => g}/VocalFilterModuleHandle.g.cs | 0 .../{ => g}/VorbisPlayerModuleHandle.g.cs | 0 .../{ => g}/WaveShaperModuleHandle.g.cs | 0 SunSharp/Native/ISunVoxLib.Modules.cs | 129 ++--- SunSharp/Native/ISunVoxLib.Patterns.cs | 102 +--- SunSharp/Native/ISunVoxLib.cs | 245 +++------ SunSharp/Native/Loader/ILibraryHandler.cs | 43 ++ SunSharp/Native/Loader/LibraryHandler.cs | 25 - SunSharp/Native/Loader/NativeProxy.cs | 145 ++++-- SunSharp/Native/Loader/NativeProxy.g.cs | 436 ++++++++-------- .../Native/SunVoxLibNativeWrapper.Modules.cs | 478 ++++++++++++++++-- .../Native/SunVoxLibNativeWrapper.Patterns.cs | 312 +++++++++++- SunSharp/Native/SunVoxLibNativeWrapper.cs | 457 +++++++++++++++-- SunSharp/Note.cs | 2 +- SunSharp/Slot.cs | 4 +- SunSharp/SunVox.cs | 11 +- SunSharp/SunVoxException.cs | 35 +- SunSharp/SunVoxVersion.cs | 73 +++ SunSharp/SynthModuleHandle.cs | 12 +- SunSharp/Synthesizer.cs | 8 +- 77 files changed, 1989 insertions(+), 1027 deletions(-) delete mode 100644 SunSharp.Tests/LibraryVersionTests.cs create mode 100644 SunSharp.Tests/SunVoxVersionTests.cs delete mode 100644 SunSharp/LibraryVersion.cs rename SunSharp/Modules/{ => g}/AdsrModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/AmplifierModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/AnalogGeneratorModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/CompressorModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/ControlToNoteModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/DcBlockerModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/DelayModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/DistortionModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/DrumSynthModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/EchoModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/EqModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FeedbackModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FftModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FilterModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FilterProModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FlangerModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FmModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/FmxModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/GeneratorModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/GlideModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/GpioModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/InputModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/KickerModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/LfoModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/LoopModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/MetaModuleModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/ModulatorModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/MultiControlModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/MultiSynthModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/OutputModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/PitchDetectorModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/PitchShifterModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/PitchToControlModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/ReverbModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/SamplerModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/SoundToControlModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/SpectraVoiceModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/VelocityToControlModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/VibratoModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/VocalFilterModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/VorbisPlayerModuleHandle.g.cs (100%) rename SunSharp/Modules/{ => g}/WaveShaperModuleHandle.g.cs (100%) create mode 100644 SunSharp/Native/Loader/ILibraryHandler.cs delete mode 100644 SunSharp/Native/Loader/LibraryHandler.cs create mode 100644 SunSharp/SunVoxVersion.cs diff --git a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs index 913517d..4f714dc 100644 --- a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs +++ b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs @@ -12,7 +12,7 @@ public class BasicModuleGenerator : BaseGenerator protected readonly string InterfaceName; protected readonly string StructName; - public override string FilePath => PathHelper.GetProjectFilePath($"SunSharp/Modules/{FriendlyName}ModuleHandle.g.cs"); + public override string FilePath => PathHelper.GetProjectFilePath($"SunSharp/Modules/g/{FriendlyName}ModuleHandle.g.cs"); public override string Name => $"{FriendlyName}ModuleHandle.g.cs"; diff --git a/CodeGeneration/Generators/NativeProxyGenerator.cs b/CodeGeneration/Generators/NativeProxyGenerator.cs index 5f46b03..06a6ef2 100644 --- a/CodeGeneration/Generators/NativeProxyGenerator.cs +++ b/CodeGeneration/Generators/NativeProxyGenerator.cs @@ -15,11 +15,27 @@ public static BaseGenerator[] GetGenerators() public override string Name => "NativeProxy.g.cs"; + private static string ToPascalCase(string value) + { + if (string.IsNullOrEmpty(value)) + { + return value; + } + if (value.Length == 1) + { + return value.ToUpperInvariant(); + } + return char.ToUpperInvariant(value[0]) + value[1..]; + } + private static string GetDelegateNameCode(ParsedFunction function) { var outName = TypeTranslator.TypeToCode(function.CSharpReturnType); - var inName = string.Join(null, function.Parameters.Select(p => TypeTranslator.TypeToCode(p.CSharpType))); - if (inName.Length == 0) inName = "Void"; + var inName = string.Join(null,function.Parameters.Select(p => ToPascalCase(TypeTranslator.TypeToCode(p.CSharpType)))); + if (inName.Length == 0) + { + inName = "Void"; + } return $"Returns{outName}Takes{inName}"; } @@ -119,14 +135,14 @@ private void AppendDelegateDefinitions(ParsedFunction[] functions) private void AppendLoadMethod(ParsedFunction[] functions) { - AppendLine("private void LoadInternal()"); + AppendLine("private void FetchAndAssignDelegates()"); AppendLine("{"); AddIndent(() => { foreach (var f in functions.OrderBy(f => f.Name)) { var delegateName = GetDelegateNameCode(f); - AppendLine($"{f.Name} = ({delegateName})_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{f.Name}\", typeof({delegateName}));"); + AppendLine($"{f.Name} = ({delegateName})(_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{f.Name}\", typeof({delegateName})) ?? throw new InvalidOperationException(\"Failed to load function {f.Name}\"));"); } }); AppendLine("}"); @@ -134,7 +150,7 @@ private void AppendLoadMethod(ParsedFunction[] functions) private void AppendUnloadMethod(ParsedFunction[] functions) { - AppendLine("private void UnloadInternal()"); + AppendLine("private void SetAllDelegatesToNull()"); AppendLine("{"); AddIndent(() => { diff --git a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs index 4bef948..83ed924 100644 --- a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs +++ b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -63,6 +63,7 @@ private static KnownModuleData ReadModuleDataFromSunVox() var modules = CreateModuleDescriptions(slot); slot.Close(); + Console.WriteLine("Logs: " + sunVox.GetLog(0xFFFF)); return new KnownModuleData() { diff --git a/Examples/Program.cs b/Examples/Program.cs index 20f2f0b..af84c70 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -37,8 +37,5 @@ private static void Main() Thread.Sleep(TimeSpan.FromSeconds(1)); slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); - - - slot.Save("file.sunvox"); } } diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index c42e98b..3f418d7 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -36,8 +36,4 @@ - - - - \ No newline at end of file diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index af6e030..59d2918 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -30,7 +30,7 @@ public static class LibraryLoader private static NativeProxy? _proxy; private static ISunVoxLib? _lib; - public static bool IsLoaded => _proxy?.IsLoaded ?? false; + public static bool IsLoaded => _proxy?.IsProxyLoaded ?? false; private static ILibraryHandler GetPlatformSpecificLibraryHandler() { diff --git a/SunSharp.Tests/LibraryVersionTests.cs b/SunSharp.Tests/LibraryVersionTests.cs deleted file mode 100644 index 1f2b02e..0000000 --- a/SunSharp.Tests/LibraryVersionTests.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace SunSharp.Tests; - -public class LibraryVersionTests -{ - [Test] - public void Constructor_ShouldSetPropertiesAsExpected() - { - const byte major = 1; - const byte minor = 2; - const byte minor2 = 3; - const int code = (major << 16) - | (minor << 8) - | minor2; - var anotherVersion = new LibraryVersion(code); - anotherVersion.Major.Should().Be(1); - anotherVersion.Minor.Should().Be(2); - anotherVersion.Minor2.Should().Be(3); - } - - [Test] - public void ToString_ShouldReturnExpectedFormat() - { - const byte major = 1; - const byte minor = 2; - const byte minor2 = 3; - const int code = (major << 16) - | (minor << 8) - | minor2; - var version = new LibraryVersion(code); - var value = $"SunVox Lib v{major}.{minor}.{minor2}"; - version.ToString().Should().Be(value); - } -} diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs index 7c41493..b3016be 100644 --- a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -83,6 +83,8 @@ public void Load_LibraryLoadedButProxyIsNot_ShouldNotCallHandlerLoad() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(true); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(x => Substitute.For([x.Arg()], [])); var proxy = new NativeProxy(handler); @@ -96,7 +98,7 @@ public void Load_LibraryLoadedButProxyIsNot_ShouldNotCallHandlerLoad() } [Test] - public void Load_HandlerLoadFails_ShouldCallHandlerUnload() + public void Load_HandlerLoadFails_ShouldNotCallHandlerUnload() { var handler = Substitute.For(); handler.IsLibraryLoaded.Returns(false); @@ -109,36 +111,33 @@ public void Load_HandlerLoadFails_ShouldCallHandlerUnload() proxy.Invoking(p => p.Load()) .Should().Throw() .Which.Should().BeEquivalentTo(innerException); - Received.InOrder(() => - { - handler.Received(1).LoadLibrary(); - handler.Received(1).UnloadLibrary(); - }); + + handler.Received(1).LoadLibrary(); + handler.Received(0).UnloadLibrary(); + AssertGetFunctionByNameWasCalledForNoMethods(handler); } [Test] - public void Unload_WhenLibraryFailed_ShouldCallUnloadLibraryAndRethrowException() + public void Unload_WhenLibraryNotLoaded_ShouldNotCallUnloadLibraryOrDeinit() { var handler = Substitute.For(); var delegates = PrepareHandlerAndGetDelegateDictionary(handler); - handler.IsLibraryLoaded.Returns(false); + handler.IsLibraryLoaded.Returns(true); var proxy = new NativeProxy(handler); - proxy.Load(); - _ = handler.Received().IsLibraryLoaded; - handler.Received(1).LoadLibrary(); - handler.ClearReceivedCalls(); - handler.IsLibraryLoaded.Returns(true); + handler.IsLibraryLoaded.Returns(false); proxy.Unload(); _ = handler.Received().IsLibraryLoaded; - handler.Received(1).UnloadLibrary(); - delegates[nameof(ISunVoxLibC.sv_deinit)].Received(1).DynamicInvoke(); + handler.Received(0).UnloadLibrary(); + delegates[nameof(ISunVoxLibC.sv_deinit)].Received(0).DynamicInvoke(); + + proxy.IsProxyLoaded.Should().BeFalse(); } [TestCase(false, true, "Missing delegate. Library is not loaded, proxy is loaded.")] @@ -148,6 +147,8 @@ public void Unload_WhenLibraryFailed_ShouldCallUnloadLibraryAndRethrowException( public void GetNoDelegateException_ShouldReturnExpectedMessage(bool libraryLoaded, bool proxyLoaded, string message) { var handler = Substitute.For(); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(x => Substitute.For([x.Arg()], [])); var proxy = new NativeProxy(handler); if (proxyLoaded) @@ -159,7 +160,7 @@ public void GetNoDelegateException_ShouldReturnExpectedMessage(bool libraryLoade proxy.Unload(); } - proxy.IsLoaded.Should().Be(proxyLoaded); + proxy.IsProxyLoaded.Should().Be(proxyLoaded); handler.IsLibraryLoaded.Returns(libraryLoaded); @@ -278,6 +279,7 @@ public void Unload_WhenDeinitFails_ShouldThrowExpectedExceptionAndCallExpectedMe // AND method.Received(1).DynamicInvoke(); libraryHandler.Received(0).UnloadLibrary(); + proxy.IsProxyLoaded.Should().BeFalse(); } [Test] @@ -314,71 +316,141 @@ public void Unload_WhenUnloadLibraryFails_ShouldThrowExpectedExceptionAndCallExp libraryHandler.Received(1).UnloadLibrary(); } +// Test 'Unload_WhenUnloadLibraryAndDeinitFail_ShouldThrowBothExpectedExceptionsAndCallExpectedMethods' removed as scenario is unreachable. + +// Test 'Unload_WhenDeinitDelegateWasNotProvided_ShouldThrow' removed as scenario is unreachable. + [Test] - public void Unload_WhenUnloadLibraryAndDeinitFail_ShouldThrowBothExpectedExceptionsAndCallExpectedMethods() + public async Task InterfaceCalls_BeforeLoadCalled_ShouldThrowInvalidOperationException() { var libraryHandler = Substitute.For(); + libraryHandler.IsLibraryLoaded.Returns(false); + var proxy = new NativeProxy(libraryHandler); - libraryHandler.IsLibraryLoaded.Returns(true); - var delegates = PrepareHandlerAndGetDelegateDictionary(libraryHandler); + var methods = typeof(ISunVoxLibC).GetMethods(); - var proxy = new NativeProxy(libraryHandler); - var exception = new Exception("A fun exception."); + await Parallel.ForEachAsync(methods, (method, _) => + { + var parameters = method.GetParameters().Select(static p => GetDefault(p.ParameterType)).ToArray(); + method.Invoking(m => m.Invoke(proxy, parameters)) + .Should().Throw() + .WithInnerException() + .WithMessage("Missing delegate. Library is not loaded, proxy is not loaded."); + return ValueTask.CompletedTask; + }); + } + + [Test] + public void Constructor_WithNullHandler_ShouldThrowArgumentNullException() + { + Action act = () => new NativeProxy(null!); + act.Should().Throw().WithParameterName("handler"); + } + + [Test] + public void AsNativeLibrary_ShouldReturnSameInstance() + { + var handler = Substitute.For(); + var proxy = new NativeProxy(handler); + proxy.AsNativeLibrary().Should().BeSameAs(proxy); + } + [Test] + public void IsReady_WhenProxyAndLibraryLoaded_ShouldBeTrue() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(x => Substitute.For([x.Arg()], [])); + var proxy = new NativeProxy(handler); proxy.Load(); - var method = delegates[nameof(ISunVoxLibC.sv_deinit)]; - method.DynamicInvoke().Throws(exception); + proxy.IsReady.Should().BeTrue(); + } - // WHEN - THEN - proxy.Invoking(p => p.Unload()) - .Should().Throw() - .Which.Should().BeEquivalentTo(exception); + [Test] + public void IsReady_WhenProxyNotLoaded_ShouldBeFalse() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); + var proxy = new NativeProxy(handler); - // AND - method.Received(1).DynamicInvoke(); - libraryHandler.Received(0).UnloadLibrary(); - proxy.IsLoaded.Should().BeTrue(); + proxy.IsReady.Should().BeFalse(); } [Test] - public void Unload_WhenDeinitDelegateWasNotProvided_ShouldThrow() + public void IsReady_WhenLibraryNotLoaded_ShouldBeFalse() { - var libraryHandler = Substitute.For(); + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(x => Substitute.For([x.Arg()], [])); + var proxy = new NativeProxy(handler); + proxy.Load(); - libraryHandler.IsLibraryLoaded.Returns(true); + handler.IsLibraryLoaded.Returns(false); + proxy.IsReady.Should().BeFalse(); + } - var proxy = new NativeProxy(libraryHandler); + [Test] + public void Load_WhenDelegateFetchFails_ShouldUnloadLibrary() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); - proxy.Load(); + var exception = new Exception("Delegate error"); + handler.GetFunctionByName(Arg.Any(), Arg.Any()).Returns(_ => throw exception); - // WHEN - THEN - proxy.Invoking(p => p.Unload()) - .Should().Throw() - .WithMessage($"{nameof(ISunVoxLibC.sv_deinit)} was null, but library and proxy are both loaded."); + var proxy = new NativeProxy(handler); - // AND - libraryHandler.Received(0).UnloadLibrary(); - proxy.IsLibraryLoaded.Should().BeTrue(); + proxy.Invoking(p => p.Load()) + .Should().Throw() + .Which.Should().Be(exception); + + handler.Received(1).UnloadLibrary(); + proxy.IsProxyLoaded.Should().BeFalse(); } [Test] - public async Task InterfaceCalls_BeforeLoadCalled_ShouldThrowInvalidOperationException() + public void Load_WhenDelegateFetchFailsAndUnloadFails_ShouldThrowAggregateException() { - var libraryHandler = Substitute.For(); - libraryHandler.IsLibraryLoaded.Returns(false); - var proxy = new NativeProxy(libraryHandler); + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); - var methods = typeof(ISunVoxLibC).GetMethods(); + var delegateEx = new Exception("Delegate error"); + handler.GetFunctionByName(Arg.Any(), Arg.Any()).Returns(_ => throw delegateEx); - await Parallel.ForEachAsync(methods, (method, _) => - { - var parameters = method.GetParameters().Select(static p => GetDefault(p.ParameterType)).ToArray(); - method.Invoking(m => m.Invoke(proxy, parameters)) - .Should().Throw() - .WithInnerException() - .WithMessage("Missing delegate. Library is not loaded, proxy is not loaded."); - return ValueTask.CompletedTask; - }); + var unloadEx = new Exception("Unload error"); + handler.When(h => h.UnloadLibrary()).Do(_ => throw unloadEx); + + var proxy = new NativeProxy(handler); + + proxy.Invoking(p => p.Load()) + .Should().Throw() + .Which.InnerExceptions.Should().Contain(delegateEx) + .And.Contain(unloadEx); + } + + [Test] + public void Load_WhenProxyLoadedButLibraryUnloaded_ShouldReload() + { + var handler = Substitute.For(); + + // Initial load + handler.IsLibraryLoaded.Returns(true); + handler.GetFunctionByName(Arg.Any(), Arg.Any()) + .Returns(x => Substitute.For([x.Arg()], [])); + var proxy = new NativeProxy(handler); + proxy.Load(); + proxy.IsProxyLoaded.Should().BeTrue(); + + // Library unloaded externally + handler.IsLibraryLoaded.Returns(false); + + // Reload + proxy.Load(); + + handler.Received(1).LoadLibrary(); + proxy.IsProxyLoaded.Should().BeTrue(); } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index 07d04f3..f48adfb 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -42,7 +42,7 @@ public void ConnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, } [Test, AutoData] - public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, string moduleName, string moduleType, int slotId, int x, int y, int z) + public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, string moduleName, SynthModuleType moduleType, int slotId, int x, int y, int z) { var receivedModuleName = string.Empty; var receivedModuleType = string.Empty; @@ -55,8 +55,8 @@ public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, strin Arg.Any(), Arg.Any())) .Do(callInfo => { - receivedModuleType = Marshal.PtrToStringAnsi(callInfo.ArgAt(1)); - receivedModuleName = Marshal.PtrToStringAnsi(callInfo.ArgAt(2)); + receivedModuleType = Marshal.PtrToStringUTF8(callInfo.ArgAt(1)); + receivedModuleName = Marshal.PtrToStringUTF8(callInfo.ArgAt(2)); }); // when @@ -64,11 +64,11 @@ public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, strin library.Received(1).sv_new_module(slotId, Arg.Any(), Arg.Any(), x, y, z); value.Should().Be(newModuleId); receivedModuleName.Should().Be(moduleName); - receivedModuleType.Should().Be(moduleType); + receivedModuleType.Should().Be(SynthModuleTypeHelper.InternalNameFromType(moduleType)); } [Test, AutoData] - public void CreateModule_NegativeReturnedValue_ShouldThrow(string moduleName, string moduleType, int slotId, int x, int y, int z) + public void CreateModule_NegativeReturnedValue_ShouldThrow(string moduleName, SynthModuleType moduleType, int slotId, int x, int y, int z) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); @@ -118,7 +118,7 @@ public void FindModule_Default_ShouldCallExpectedMethod(int foundModuleId, strin library.sv_find_module(Arg.Any(), Arg.Any()).Returns(foundModuleId); var receivedString = string.Empty; library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var value = wrapper.FindModule(slotId, moduleName); @@ -137,7 +137,7 @@ public void FindModule_ModuleNotFound_ShouldReturnNull(string moduleName, int sl library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-1); var receivedString = string.Empty; library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var value = wrapper.FindModule(slotId, moduleName); @@ -707,7 +707,7 @@ public void LoadIntoMetaModule_Default_ShouldCallExpectedMethod(int slotId, int var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.When(static l => l.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.LoadIntoMetaModule(slotId, moduleId, path); @@ -749,7 +749,7 @@ public void LoadIntoVorbisPlayerFromMemory_Default_ShouldCallExpectedMethod(int }); // when - wrapper.LoadIntoVorbisPLayer(slotId, moduleId, buffer); + wrapper.LoadIntoVorbisPlayer(slotId, moduleId, buffer); // then library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); @@ -765,7 +765,7 @@ public void LoadIntoVorbisPlayerFromMemory_NonZeroReturnCode_ShouldThrow(int slo .Returns(-1); // when - wrapper.Invoking(w => w.LoadIntoVorbisPLayer(slotId, moduleId, buffer)).Should().Throw(); + wrapper.Invoking(w => w.LoadIntoVorbisPlayer(slotId, moduleId, buffer)).Should().Throw(); // then library.Received(1).sv_vplayer_load_from_memory(slotId, moduleId, Arg.Any(), (uint)buffer.Length); @@ -779,10 +779,10 @@ public void LoadIntoVorbisPlayer_Default_ShouldCallExpectedMethod(int slotId, in var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.When(static l => l.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when - wrapper.LoadIntoVorbisPLayer(slotId, moduleId, path); + wrapper.LoadIntoVorbisPlayer(slotId, moduleId, path); // then library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); @@ -797,7 +797,7 @@ public void LoadIntoVorbisPlayer_NonZeroReturnCode_ShouldThrow(int slotId, int m library.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - wrapper.Invoking(w => w.LoadIntoVorbisPLayer(slotId, moduleId, path)).Should().Throw(); + wrapper.Invoking(w => w.LoadIntoVorbisPlayer(slotId, moduleId, path)).Should().Throw(); // then library.Received(1).sv_vplayer_load(slotId, moduleId, Arg.Any()); @@ -853,7 +853,7 @@ public void LoadModule_Default_ShouldCallExpectedMethod(int x, int y, int z, int .Returns(newModuleId); library.When(static l => l.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var value = wrapper.LoadModule(slotId, path, x, y, z); @@ -927,7 +927,7 @@ public void LoadSamplerSample_Default_ShouldCallExpectedMethod(int slotId, int m var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.When(static l => l.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.LoadSamplerSample(slotId, moduleId, path, sampleSlot); @@ -1142,7 +1142,7 @@ public void SetModuleName_Default_ShouldCallExpectedMethod(int slotId, int modul var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.When(static l => l.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.SetModuleName(slotId, moduleId, nameToSet); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs index f850557..05a88a5 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -519,7 +519,7 @@ public void CreatePattern_ShouldCallExpectedMethod(int slotId, int x, int y, int .Returns(newPatternId); library.When(static l => l.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => { receivedPatternName = Marshal.PtrToStringAnsi(callInfo.Arg()); }); + .Do(callInfo => { receivedPatternName = Marshal.PtrToStringUTF8(callInfo.Arg()); }); // when var value = wrapper.CreatePattern(slotId, x, y, tracks, lines, iconSeed, patternName); @@ -555,7 +555,7 @@ public void FindPattern_ShouldCallExpectedMethod(int slotId, string patternName, var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(foundPatternId); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var value = wrapper.FindPattern(slotId, patternName); @@ -574,7 +574,7 @@ public void FindPattern_ShouldReturnNull_WhenPatternNotFound(int slotId, string var wrapper = new SunVoxLibNativeWrapper(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-1); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var value = wrapper.FindPattern(slotId, patternName); @@ -876,7 +876,7 @@ public void SetPatternName_ShouldCallExpectedMethod(int slotId, int patternId, s var wrapper = new SunVoxLibNativeWrapper(library); var receivedString = string.Empty; library.When(static l => l.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.SetPatternName(slotId, patternId, nameToSet); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index e8bf4a9..bba2edc 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -126,17 +126,17 @@ public void GetCurrentLineWithTenthPart_ShouldReturnValue(int currentLineWithTen } [Test, AutoData] - public void GetCurrentSignalLevel_ShouldReturnValue(int signalLevel, int slotId, int channelId) + public void GetCurrentSignalLevel_ShouldReturnValue(int signalLevel, int slotId, AudioChannel channel) { var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); library.sv_get_current_signal_level(Arg.Any(), Arg.Any()).Returns(signalLevel); // when - var value = wrapper.GetCurrentSignalLevel(slotId, channelId); + var value = wrapper.GetCurrentSignalLevel(slotId, channel); // then - library.Received(1).sv_get_current_signal_level(slotId, channelId); + library.Received(1).sv_get_current_signal_level(slotId, (int)channel); value.Should().Be(signalLevel); } @@ -415,20 +415,23 @@ public void Initialize_ShouldCallInitAsExpected(int sampleRate, string config, A var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const int returnCode = 123454321; + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + const int returnCode = major << 16 | minor << 8 | minor2; library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnCode); string? receivedString = null; library.When(static l => l.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when var version = wrapper.Initialize(sampleRate, config, channels, sunVoxInitOptions); // then library.Received(1).sv_init(Arg.Any(), sampleRate, (int)channels, (uint)sunVoxInitOptions); - version.Should().Be(new LibraryVersion(returnCode)); + version.Should().Be(SunVoxVersion.FromLibraryVersion(returnCode)); receivedString.Should().Be(config); } @@ -438,7 +441,10 @@ public void Initialize_WithNullConfig_ShouldCallInitAsExpected(int sampleRate, A var library = Substitute.For(); var wrapper = new SunVoxLibNativeWrapper(library); - const int returnCode = 123454321; + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + const int returnCode = major << 16 | minor << 8 | minor2; library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnCode); @@ -447,7 +453,7 @@ public void Initialize_WithNullConfig_ShouldCallInitAsExpected(int sampleRate, A // then library.Received(1).sv_init(IntPtr.Zero, sampleRate, (int)channels, (uint)sunVoxInitOptions); - version.Should().Be(new LibraryVersion(returnCode)); + version.Should().Be(SunVoxVersion.FromLibraryVersion(returnCode)); } [Test, AutoData] @@ -523,7 +529,7 @@ public void Load_ShouldCallExpectedMethods(int slotId, string path) var receivedString = string.Empty; library.When(static l => l.sv_load(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.Load(slotId, path); @@ -723,10 +729,10 @@ public void Save_ShouldCallExpectedMethods(int slotId, string path) var receivedString = string.Empty; library.When(static l => l.sv_save(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when - wrapper.Save(slotId, path); + wrapper.SaveToFile(slotId, path); // then receivedString.Should().Be(path); @@ -742,7 +748,7 @@ public void Save_OnUnexpectedReturnCode_ShouldThrow(int slotId, string path) library.sv_save(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - wrapper.Invoking(w => w.Save(slotId, path)).Should().Throw(); + wrapper.Invoking(w => w.SaveToFile(slotId, path)).Should().Throw(); // then library.Received(1).sv_save(slotId, Arg.Any()); @@ -876,7 +882,7 @@ public void SetSongName_ShouldSendString(int slotId, string newSongName) string? receivedString = null; library.When(static l => l.sv_set_song_name(Arg.Any(), Arg.Any())) - .Do(callInfo => receivedString = Marshal.PtrToStringAnsi(callInfo.Arg())); + .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); // when wrapper.SetSongName(slotId, newSongName); diff --git a/SunSharp.Tests/NoteTests.cs b/SunSharp.Tests/NoteTests.cs index 2c6bf48..f1238e7 100644 --- a/SunSharp.Tests/NoteTests.cs +++ b/SunSharp.Tests/NoteTests.cs @@ -40,7 +40,6 @@ public void NameGetter_ShouldReturnExpectedValue(byte noteValue, NoteName expect } [TestCase(NoteName.C, 0, 1)] - [TestCase(NoteName.Cb, 1, 12)] [TestCase(NoteName.Cs, 0, 2)] [TestCase(NoteName.C, 1, 13)] [TestCase(NoteName.Fs, 10, 127)] @@ -65,7 +64,7 @@ public void NoteConstructor_FromOctaveAndName_ShouldThrowOnInvalidArguments(Note } [TestCase(NoteName.Other)] - [TestCase((NoteName)(-1))] + [TestCase((NoteName)(-2))] [TestCase((NoteName)13)] public void NoteConstructor_FromOctaveAndName_ShouldThrowOnInvalidNoteName(NoteName name) { @@ -141,7 +140,9 @@ public void SpecialProperties_ShouldReturnValueAsExpected() new(Note.Nothing, " "), new(Note.CleanSynths, "CS"), new(Note.CleanModule, "CM"), - new(new Note(255), "??") + new(new Note(255), "??"), + new(new Note(NoteName.C, 10), "CA"), + new(new Note(NoteName.Fs, 10), "fA") ]; [TestCaseSource(nameof(TestCases))] diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index 143ee4a..a378ad8 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -267,12 +267,13 @@ public void Setters_ShouldJustWork() public static TestCaseData[] TestCases => [ + // "NNVVMMMMCCEEXXYY" new(new PatternEvent(), " "), - new(new PatternEvent(Note.C(4), 0x81, 1, 0, 0, 0), "C4800001 "), - new(new PatternEvent(Note.C(10), 0x81, 1, 0, 0, 0), "C4800001 "), + new(new PatternEvent(Note.C(4), 0x81, 1, 0, 0, 0), "C4800000 "), + new(new PatternEvent(Note.C(10), 0x81, 1, 0, 0, 0), "CA800000 "), new(new PatternEvent(0, 0, 0, 0, 0, 1), " 0001"), new(new PatternEvent(0, 0, 0, 0, 0x08, 0x0704), " 080704"), - new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00100A987654321"), + new(new PatternEvent(3, 0x01, 0xA9, 0x87, 0x65, 0x4321), "D00000A887654321"), new(new PatternEvent(Note.Off, 0, 0, 0, 0, 0), "-- "), new(new PatternEvent(Note.AllNotesOff, 0, 0, 0, 0, 0), "-! ") ]; @@ -292,17 +293,16 @@ public void EqualityComparison_ShouldJustWork() a.Equals(b).Should().BeTrue(); a.Equals(a).Should().BeTrue(); - a.Equals(1).Should().BeFalse(); + a.Equals(1ul).Should().BeTrue(); a.Equals((object?)b).Should().BeTrue(); a.Equals((object?)a).Should().BeTrue(); a.Equals(null).Should().BeFalse(); a.Equals(new object()).Should().BeFalse(); b.Equals(c).Should().BeFalse(); - new Note(1).Equals(2).Should().BeFalse(); (a == b).Should().BeTrue(); (a != b).Should().BeFalse(); - (a == 1).Should().BeFalse(); + (a == 1).Should().BeTrue(); (a != 2).Should().BeTrue(); (a != c).Should().BeTrue(); (a == c).Should().BeFalse(); @@ -401,12 +401,13 @@ public void SetPitchEvent_ShouldWork() public void NewEvent_ShouldWork() { var note = new Note(NoteName.C, 4); - byte velocity = 100; + const byte velocity = 100; const int moduleId = 0; - byte controller = 1; - const ushort value = 1000; + const byte controller = 1; + const Effect effect = Effect.SlideUp; + const ushort value = 0x1000; - var patternEvent = PatternEvent.NewEvent(note, velocity, moduleId, controller, value); + var patternEvent = PatternEvent.NewEvent(note, velocity, moduleId, controller, effect, value); patternEvent.Note.Should().Be(note); patternEvent.Velocity.Should().Be(velocity); @@ -484,12 +485,5 @@ public void FriendlyProperties_ShouldWorkCorrectly() noteEvent.HasVelocity.Should().BeTrue(); noteEvent.HasModule.Should().BeTrue(); noteEvent.IsEmpty.Should().BeFalse(); - noteEvent.IsNormalNote.Should().BeTrue(); - - var noteOffEvent = PatternEvent.NoteEvent(Note.Off, 0); - noteOffEvent.IsNoteOff.Should().BeTrue(); - - var setPitchEvent = PatternEvent.SetPitchEvent(0, 0x3C00); - setPitchEvent.IsSetPitch.Should().BeTrue(); } } diff --git a/SunSharp.Tests/SunVoxVersionTests.cs b/SunSharp.Tests/SunVoxVersionTests.cs new file mode 100644 index 0000000..ec53758 --- /dev/null +++ b/SunSharp.Tests/SunVoxVersionTests.cs @@ -0,0 +1,50 @@ +namespace SunSharp.Tests; + +public class SunVoxVersionTests +{ + [Test] + public void FromProjectBaseVersion_ShouldSetPropertiesAsExpected() + { + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + const byte bugfix = 4; + const int code = (major << 24) + | (minor << 16) + | (minor2 << 8) + | bugfix; + var version = SunVoxVersion.FromProjectBaseVersion(code); + version.Major.Should().Be(1); + version.Minor.Should().Be(2); + version.Minor2.Should().Be(3); + version.Bugfix.Should().Be(4); + } + + [Test] + public void FromLibraryVersion_ShouldSetPropertiesAsExpected() + { + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + const int code = (major << 16) + | (minor << 8) + | minor2; + var version = SunVoxVersion.FromLibraryVersion(code); + version.Major.Should().Be(1); + version.Minor.Should().Be(2); + version.Minor2.Should().Be(3); + version.Bugfix.Should().Be(0); + } + + [Test] + public void ToString_ShouldReturnExpectedFormat() + { + const byte major = 1; + const byte minor = 2; + const byte minor2 = 3; + const byte bugfix = 4; + var version = new SunVoxVersion(major, minor, minor2, bugfix); + var value = $"version 1.2.3.4"; + version.ToString().Should().Be(value); + } +} diff --git a/SunSharp/Effects.cs b/SunSharp/Effects.cs index c49171c..298dc45 100644 --- a/SunSharp/Effects.cs +++ b/SunSharp/Effects.cs @@ -69,8 +69,8 @@ public enum Effect : byte /// /// Set playing speed or time grids. - /// XXYY: 0x0001..0x001F - number of ticks per line; 0x0020..0x00FF - BPM; - /// XXYY: 0xF001..0xF020 and 0xF100..0xF120 - time grids. + /// XXYY: 0x0001 to 0x001F - number of ticks per line; 0x0020 to 0x00FF - BPM; + /// XXYY: 0xF001 to 0xF020 and 0xF100 to 0xF120 - time grids. /// SetPlayingSpeed = 0x0F, @@ -145,7 +145,7 @@ public enum Effect : byte SetControllerRandomAbsolute = 0x22, /// - /// Set controller value to a random number with range from XX (0x00..0xFF) to YY (0x00..0xFF). + /// Set controller value to a random number with range from XX (0x00 to 0xFF) to YY (0x00 to 0xFF). /// SetControllerRandomRange = 0x23, @@ -221,7 +221,7 @@ public enum Effect : byte BindMidiOut = 0x35, /// - /// Delete an event on track XX with a probability of YY (0x00..0xFF (100%)). + /// Delete an event on track XX with a probability of YY (0x00 to 0xFF (100%)). /// Destructive effect - irreversibly changes the contents of the pattern. /// DeleteEventOnTrackWithProbability = 0x38, @@ -470,7 +470,7 @@ public static bool ChangesTempo(this Effect effect) /// Determines whether the specified effect is an event delay effect. /// /// - /// Event delay effects (0x40..0x5F) delay an event for a selected fraction of the line, + /// Event delay effects (0x40 to 0x5F) delay an event for a selected fraction of the line, /// from 0% to 96.875%. /// public static bool IsEventDelay(this Effect effect) diff --git a/SunSharp/LibraryVersion.cs b/SunSharp/LibraryVersion.cs deleted file mode 100644 index 4e1d097..0000000 --- a/SunSharp/LibraryVersion.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace SunSharp -{ - /// - /// Represents the version of the SunVox library. - /// - [StructLayout(LayoutKind.Explicit, Size = 4)] - public readonly struct LibraryVersion : IEquatable - { - [FieldOffset(0)] private readonly int _value; - [FieldOffset(2)] private readonly byte _major; - [FieldOffset(1)] private readonly byte _minor; - [FieldOffset(0)] private readonly byte _minor2; - - public byte Major => _major; - - public byte Minor => _minor; - - public byte Minor2 => _minor2; - - public LibraryVersion(int code) - { - _major = _minor = _minor2 = 0; // unfortunately required - _value = code; - } - - public override string ToString() - { - return $"SunVox Lib v{Major}.{Minor}.{Minor2}"; - } - - public bool Equals(LibraryVersion other) - { - return _value == other._value; - } - - public override bool Equals(object obj) - { - return obj is LibraryVersion other && Equals(other); - } - - public override int GetHashCode() - { - return _value; - } - - public static bool operator ==(LibraryVersion left, LibraryVersion right) - { - return left.Equals(right); - } - - public static bool operator !=(LibraryVersion left, LibraryVersion right) - { - return !left.Equals(right); - } - } -} diff --git a/SunSharp/Modules/TypedModuleHandle.cs b/SunSharp/Modules/TypedModuleHandle.cs index 6e2965a..a9f1c3d 100644 --- a/SunSharp/Modules/TypedModuleHandle.cs +++ b/SunSharp/Modules/TypedModuleHandle.cs @@ -7,6 +7,10 @@ public interface ITypedModuleHandle /// bool IsCorrectHandleType(); + /// + /// Throws an exception if the underlying module is not of the correct type. + /// + /// Thrown if the underlying module is not of the correct type. void AssertCorrectHandleType(); } } diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.cs b/SunSharp/Modules/VorbisPlayerModuleHandle.cs index e1e1df1..6a6d814 100644 --- a/SunSharp/Modules/VorbisPlayerModuleHandle.cs +++ b/SunSharp/Modules/VorbisPlayerModuleHandle.cs @@ -4,11 +4,11 @@ namespace SunSharp.Modules { public partial interface IVorbisPlayerModuleHandle { - /// + /// void LoadVorbis(string path); - /// - void LoadIntoVorbisPLayer(byte[] data); + /// + void LoadIntoVorbisPlayer(byte[] data); } public partial struct VorbisPlayerModuleHandle : IVorbisPlayerModuleHandle @@ -16,13 +16,13 @@ public partial struct VorbisPlayerModuleHandle : IVorbisPlayerModuleHandle /// public void LoadVorbis(string path) { - ModuleHandle.LoadIntoVorbisPLayer(path); + ModuleHandle.LoadIntoVorbisPlayer(path); } /// - public void LoadIntoVorbisPLayer(byte[] data) + public void LoadIntoVorbisPlayer(byte[] data) { - ModuleHandle.LoadIntoVorbisPLayer(data); + ModuleHandle.LoadIntoVorbisPlayer(data); } } } diff --git a/SunSharp/Modules/AdsrModuleHandle.g.cs b/SunSharp/Modules/g/AdsrModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/AdsrModuleHandle.g.cs rename to SunSharp/Modules/g/AdsrModuleHandle.g.cs diff --git a/SunSharp/Modules/AmplifierModuleHandle.g.cs b/SunSharp/Modules/g/AmplifierModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/AmplifierModuleHandle.g.cs rename to SunSharp/Modules/g/AmplifierModuleHandle.g.cs diff --git a/SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs b/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/AnalogGeneratorModuleHandle.g.cs rename to SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs diff --git a/SunSharp/Modules/CompressorModuleHandle.g.cs b/SunSharp/Modules/g/CompressorModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/CompressorModuleHandle.g.cs rename to SunSharp/Modules/g/CompressorModuleHandle.g.cs diff --git a/SunSharp/Modules/ControlToNoteModuleHandle.g.cs b/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/ControlToNoteModuleHandle.g.cs rename to SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs diff --git a/SunSharp/Modules/DcBlockerModuleHandle.g.cs b/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/DcBlockerModuleHandle.g.cs rename to SunSharp/Modules/g/DcBlockerModuleHandle.g.cs diff --git a/SunSharp/Modules/DelayModuleHandle.g.cs b/SunSharp/Modules/g/DelayModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/DelayModuleHandle.g.cs rename to SunSharp/Modules/g/DelayModuleHandle.g.cs diff --git a/SunSharp/Modules/DistortionModuleHandle.g.cs b/SunSharp/Modules/g/DistortionModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/DistortionModuleHandle.g.cs rename to SunSharp/Modules/g/DistortionModuleHandle.g.cs diff --git a/SunSharp/Modules/DrumSynthModuleHandle.g.cs b/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/DrumSynthModuleHandle.g.cs rename to SunSharp/Modules/g/DrumSynthModuleHandle.g.cs diff --git a/SunSharp/Modules/EchoModuleHandle.g.cs b/SunSharp/Modules/g/EchoModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/EchoModuleHandle.g.cs rename to SunSharp/Modules/g/EchoModuleHandle.g.cs diff --git a/SunSharp/Modules/EqModuleHandle.g.cs b/SunSharp/Modules/g/EqModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/EqModuleHandle.g.cs rename to SunSharp/Modules/g/EqModuleHandle.g.cs diff --git a/SunSharp/Modules/FeedbackModuleHandle.g.cs b/SunSharp/Modules/g/FeedbackModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FeedbackModuleHandle.g.cs rename to SunSharp/Modules/g/FeedbackModuleHandle.g.cs diff --git a/SunSharp/Modules/FftModuleHandle.g.cs b/SunSharp/Modules/g/FftModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FftModuleHandle.g.cs rename to SunSharp/Modules/g/FftModuleHandle.g.cs diff --git a/SunSharp/Modules/FilterModuleHandle.g.cs b/SunSharp/Modules/g/FilterModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FilterModuleHandle.g.cs rename to SunSharp/Modules/g/FilterModuleHandle.g.cs diff --git a/SunSharp/Modules/FilterProModuleHandle.g.cs b/SunSharp/Modules/g/FilterProModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FilterProModuleHandle.g.cs rename to SunSharp/Modules/g/FilterProModuleHandle.g.cs diff --git a/SunSharp/Modules/FlangerModuleHandle.g.cs b/SunSharp/Modules/g/FlangerModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FlangerModuleHandle.g.cs rename to SunSharp/Modules/g/FlangerModuleHandle.g.cs diff --git a/SunSharp/Modules/FmModuleHandle.g.cs b/SunSharp/Modules/g/FmModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FmModuleHandle.g.cs rename to SunSharp/Modules/g/FmModuleHandle.g.cs diff --git a/SunSharp/Modules/FmxModuleHandle.g.cs b/SunSharp/Modules/g/FmxModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/FmxModuleHandle.g.cs rename to SunSharp/Modules/g/FmxModuleHandle.g.cs diff --git a/SunSharp/Modules/GeneratorModuleHandle.g.cs b/SunSharp/Modules/g/GeneratorModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/GeneratorModuleHandle.g.cs rename to SunSharp/Modules/g/GeneratorModuleHandle.g.cs diff --git a/SunSharp/Modules/GlideModuleHandle.g.cs b/SunSharp/Modules/g/GlideModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/GlideModuleHandle.g.cs rename to SunSharp/Modules/g/GlideModuleHandle.g.cs diff --git a/SunSharp/Modules/GpioModuleHandle.g.cs b/SunSharp/Modules/g/GpioModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/GpioModuleHandle.g.cs rename to SunSharp/Modules/g/GpioModuleHandle.g.cs diff --git a/SunSharp/Modules/InputModuleHandle.g.cs b/SunSharp/Modules/g/InputModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/InputModuleHandle.g.cs rename to SunSharp/Modules/g/InputModuleHandle.g.cs diff --git a/SunSharp/Modules/KickerModuleHandle.g.cs b/SunSharp/Modules/g/KickerModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/KickerModuleHandle.g.cs rename to SunSharp/Modules/g/KickerModuleHandle.g.cs diff --git a/SunSharp/Modules/LfoModuleHandle.g.cs b/SunSharp/Modules/g/LfoModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/LfoModuleHandle.g.cs rename to SunSharp/Modules/g/LfoModuleHandle.g.cs diff --git a/SunSharp/Modules/LoopModuleHandle.g.cs b/SunSharp/Modules/g/LoopModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/LoopModuleHandle.g.cs rename to SunSharp/Modules/g/LoopModuleHandle.g.cs diff --git a/SunSharp/Modules/MetaModuleModuleHandle.g.cs b/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/MetaModuleModuleHandle.g.cs rename to SunSharp/Modules/g/MetaModuleModuleHandle.g.cs diff --git a/SunSharp/Modules/ModulatorModuleHandle.g.cs b/SunSharp/Modules/g/ModulatorModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/ModulatorModuleHandle.g.cs rename to SunSharp/Modules/g/ModulatorModuleHandle.g.cs diff --git a/SunSharp/Modules/MultiControlModuleHandle.g.cs b/SunSharp/Modules/g/MultiControlModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/MultiControlModuleHandle.g.cs rename to SunSharp/Modules/g/MultiControlModuleHandle.g.cs diff --git a/SunSharp/Modules/MultiSynthModuleHandle.g.cs b/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/MultiSynthModuleHandle.g.cs rename to SunSharp/Modules/g/MultiSynthModuleHandle.g.cs diff --git a/SunSharp/Modules/OutputModuleHandle.g.cs b/SunSharp/Modules/g/OutputModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/OutputModuleHandle.g.cs rename to SunSharp/Modules/g/OutputModuleHandle.g.cs diff --git a/SunSharp/Modules/PitchDetectorModuleHandle.g.cs b/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/PitchDetectorModuleHandle.g.cs rename to SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs diff --git a/SunSharp/Modules/PitchShifterModuleHandle.g.cs b/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/PitchShifterModuleHandle.g.cs rename to SunSharp/Modules/g/PitchShifterModuleHandle.g.cs diff --git a/SunSharp/Modules/PitchToControlModuleHandle.g.cs b/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/PitchToControlModuleHandle.g.cs rename to SunSharp/Modules/g/PitchToControlModuleHandle.g.cs diff --git a/SunSharp/Modules/ReverbModuleHandle.g.cs b/SunSharp/Modules/g/ReverbModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/ReverbModuleHandle.g.cs rename to SunSharp/Modules/g/ReverbModuleHandle.g.cs diff --git a/SunSharp/Modules/SamplerModuleHandle.g.cs b/SunSharp/Modules/g/SamplerModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/SamplerModuleHandle.g.cs rename to SunSharp/Modules/g/SamplerModuleHandle.g.cs diff --git a/SunSharp/Modules/SoundToControlModuleHandle.g.cs b/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/SoundToControlModuleHandle.g.cs rename to SunSharp/Modules/g/SoundToControlModuleHandle.g.cs diff --git a/SunSharp/Modules/SpectraVoiceModuleHandle.g.cs b/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/SpectraVoiceModuleHandle.g.cs rename to SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs diff --git a/SunSharp/Modules/VelocityToControlModuleHandle.g.cs b/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/VelocityToControlModuleHandle.g.cs rename to SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs diff --git a/SunSharp/Modules/VibratoModuleHandle.g.cs b/SunSharp/Modules/g/VibratoModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/VibratoModuleHandle.g.cs rename to SunSharp/Modules/g/VibratoModuleHandle.g.cs diff --git a/SunSharp/Modules/VocalFilterModuleHandle.g.cs b/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/VocalFilterModuleHandle.g.cs rename to SunSharp/Modules/g/VocalFilterModuleHandle.g.cs diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.g.cs b/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/VorbisPlayerModuleHandle.g.cs rename to SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs diff --git a/SunSharp/Modules/WaveShaperModuleHandle.g.cs b/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs similarity index 100% rename from SunSharp/Modules/WaveShaperModuleHandle.g.cs rename to SunSharp/Modules/g/WaveShaperModuleHandle.g.cs diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs index 06f8514..4c1e32e 100644 --- a/SunSharp/Native/ISunVoxLib.Modules.cs +++ b/SunSharp/Native/ISunVoxLib.Modules.cs @@ -2,161 +2,128 @@ namespace SunSharp.Native { public partial interface ISunVoxLib { - /// - /// Connect two specified modules. - /// Use or an alternative! - /// + /// void ConnectModule(int slotId, int source, int destination); - /// - /// Disconnect two specified modules. - /// Use or an alternative! - /// + /// void DisconnectModule(int slotId, int source, int destination); - /// - /// Find module by name. - /// - /// Identifier of found module, or if it was not found. + /// int? FindModule(int slotId, string name); + /// (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId); + /// void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b); + /// string? GetModuleControllerName(int slotId, int moduleId, int controllerId); - /// - /// Get module controller value. - /// + /// int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + /// int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + /// int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); + /// int GetModuleControllerOffset(int slotId, int moduleId, int controllerId); + /// ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId); + /// int GetModuleControllerGroup(int slotId, int moduleId, int controllerId); - /// - /// Send the value to the specified module controller. (sv_send_event() will be used internally, which may introduce - /// latency). - /// + /// void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode); + /// FineTunePair GetModuleFineTune(int slotId, int moduleId); + /// void SetModuleFineTune(int slotId, int moduleId, int fineTune); + /// void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote); + /// ModuleFlags GetModuleFlags(int slotId, int moduleId); + /// bool GetModuleExists(int slotId, int moduleId); - /// - /// Get an array of Ids of modules that are connected as inputs. - /// Does NOT return -1 for empty connection slots. - /// - /// + /// int[] GetModuleInputs(int slotId, int moduleId); + /// string? GetModuleName(int slotId, int moduleId); + /// void SetModuleName(int slotId, int moduleId, string name); + /// string? GetModuleType(int slotId, int moduleId); - /// - /// Get an array of Ids of modules. - /// Does NOT return -1 for empty connection slots. - /// + /// int[] GetModuleOutputs(int slotId, int moduleId); - /// - /// Read module scope view, and write it to a buffer. - /// - /// Number of samples successfully read. + /// int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer); + /// (int x, int y) GetModulePosition(int slotId, int moduleId); + /// void SetModulePosition(int slotId, int moduleId, int x, int y); - /// - /// Get the upper module count, which may be greater than the module count. - /// + /// int GetUpperModuleCount(int slotId); + /// int GetModuleControllerCount(int slotId, int moduleId); - /// - /// load a module or a sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// Created module identifier.. + /// int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0); - /// - /// load a module or a sample from memory. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// Created module id. + /// int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0); - int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data); + /// + int WriteModuleCurve(int slotId, int moduleId, int curveId, float[] data); - int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data); + /// + int ReadModuleCurve(int slotId, int moduleId, int curveId, float[] data); - /// - /// Create a new module. Type refers to the name visible on new module creation window. - /// Use or an alternative! - /// - /// Created module id. - int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, int z = 0); + /// + int CreateModule(int slotId, SynthModuleType type, string? name = null, int x = 0, int y = 0, int z = 0); - /// - /// Remove an existing module. - /// Use or an alternative! - /// + /// + int CreateModule(int slotId, string type, string? name = null, int x = 0, int y = 0, int z = 0); + + /// void RemoveModule(int slotId, int moduleId); - /// - /// Load a sample (xi, wav, aiff) to an existing module from file. - /// - /// - /// Set to to apply the sample to all sample slots. - /// + /// void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null); - /// - /// Load a sample (xi, wav, aiff) to an existing module from memory. - /// - /// - /// Set to to apply the sample to all sample slots. - /// + /// void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null); - /// - /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// + /// void LoadIntoMetaModule(int slotId, int moduleId, string path); - /// - /// load a file into the MetaModule from memory. Supported file formats: sunvox, mod, xm, midi. - /// + /// void LoadIntoMetaModule(int slotId, int moduleId, byte[] data); - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - void LoadIntoVorbisPLayer(int slotId, int moduleId, string path); + /// + void LoadIntoVorbisPlayer(int slotId, int moduleId, string path); - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// - void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data); + /// + void LoadIntoVorbisPlayer(int slotId, int moduleId, byte[] data); } } diff --git a/SunSharp/Native/ISunVoxLib.Patterns.cs b/SunSharp/Native/ISunVoxLib.Patterns.cs index 74267c8..7f1e0bc 100644 --- a/SunSharp/Native/ISunVoxLib.Patterns.cs +++ b/SunSharp/Native/ISunVoxLib.Patterns.cs @@ -2,134 +2,82 @@ namespace SunSharp.Native { public partial interface ISunVoxLib { - /// - /// Create a new pattern.
    - /// Use or an alternative! - ///
    + /// int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null); - /// - /// Clone a pattern.
    - /// Use or an alternative! - ///
    + /// int ClonePattern(int slotId, int originalPatternId, int x, int y); - /// - /// Delete a pattern.
    - /// Deleting the original pattern also deletes all clones.
    - /// Use or an alternative! - ///
    + /// void RemovePattern(int slotId, int patternId); - /// - /// Get the upper pattern count, which may be greater than the actual pattern count. - /// + /// int GetUpperPatternCount(int slotId); - /// - /// Find pattern by name. - /// - /// Pattern identifier, or if pattern was not found. + /// int? FindPattern(int slotId, string name); + /// int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column); + /// string? GetPatternName(int slotId, int patternId); - /// - /// Use or an alternative! - /// + /// void SetPatternName(int slotId, int patternId, string name); + /// bool GetPatternExists(int slotId, int patternId); + /// int GetPatternLines(int slotId, int patternId); + /// int GetPatternTracks(int slotId, int patternId); - /// - /// Use or an alternative! - /// + /// void SetPatternSize(int slotId, int patternId, int? tracks = null, int? lines = null); + /// (int x, int y) GetPatternPosition(int slotId, int patternId); + /// int GetPatternX(int slotId, int patternId); + /// int GetPatternY(int slotId, int patternId); - /// - /// Use or an alternative! - /// + /// void SetPatternPosition(int slotId, int patternId, int x, int y); - /// - /// Use or an alternative! - /// + /// (PatternEvent[] data, int tracks, int lines)? GetPatternData(int slotId, int patternId); - /// - /// Resizes the pattern and sets the pattern event data. Throws an exception if the pattern does not exist. - ///
    - /// Use or an alternative! - ///
    + /// void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines); - /// - /// Allows to read a section or all pattern data into a buffer. - ///
    - /// Use or an alternative! - ///
    - /// - /// - /// - /// Width of the buffer. - /// Height of the buffer. - /// Count of tracks in the buffer to be skipped. - /// Count of lines in the buffer to be skipped. - /// Count of tracks in the pattern to be skipped. - /// Count of lines in the pattern to be skipped. - /// Upper limit of tracks to be read. - /// Upper limit of lines to be read. - /// Number of read events. + /// public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, int? maxTracks = null, int? maxLines = null); - /// - /// Allows to write a section or all of a buffer into pattern data. - ///
    - /// Use or an alternative! - ///
    - /// - /// - /// - /// Width of the buffer. - /// Height of the buffer. - /// Count of tracks in the buffer to be skipped. - /// Count of lines in the buffer to be skipped. - /// Count of tracks in the pattern to be skipped. - /// Count of lines in the pattern to be skipped. - /// Upper limit of tracks to be written. - /// Upper limit of lines to be written. - /// Number of written events. + /// public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int writeOffsetTracks = 0, int writeOffsetLines = 0, int? maxTracks = null, int? maxLines = null); - /// - /// Use or an alternative! - /// + /// void SetPatternMuted(int slotId, int patternId, bool muted); - /// - /// Use or an alternative! - /// + /// bool GetPatternMuted(int slotId, int patternId); + /// void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + /// void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev); } } + diff --git a/SunSharp/Native/ISunVoxLib.cs b/SunSharp/Native/ISunVoxLib.cs index 46554f9..1980b79 100644 --- a/SunSharp/Native/ISunVoxLib.cs +++ b/SunSharp/Native/ISunVoxLib.cs @@ -1,278 +1,151 @@ namespace SunSharp.Native { + /// + /// Friendlier interface for SunVox native library functions. + /// See the for the default, preferred implementation. + /// public partial interface ISunVoxLib { - /// - /// Initialize the engine. May be called again to re-initialize the engine. - /// - /// Sample rate. If not using audio callback, may be set to -1. - /// - /// Configuration, which may include input and output devices. See SunVox Lib documentation for - /// details. - /// - /// Channels to be used. - /// Initialization options. - /// The version of underlying library. - LibraryVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None); - - /// - /// Deinitializes the library, frees resources. - /// + /// + SunVoxVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None); + + /// void Deinitialize(); - /// - /// Get first characters of engine logs. - /// - /// Character count to be read. - /// + /// string? GetLog(int size); - /// - /// Use this method to get the current tick counter (from 0 to 0xFFFFFFFF).
    - /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). - ///
    + /// uint GetTicks(); - /// - /// Use this method to get the number of system ticks per second.
    - /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). - ///
    + /// uint GetTicksPerSecond(); - /// - /// Get the current sample rate. - /// + /// int GetSampleRate(); - /// - /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the module - /// creation).
    - /// Call it from the main thread only, where the SunVox sound stream is not locked. - ///
    + /// + SunVoxVersion GetSongBaseVersion(int slotId); + + /// void UpdateInputDevices(); - /// - /// Get the next piece of audio.
    - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - ///
    - /// Buffer to write sound data to. - /// Channels the library was initialized with. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. + /// bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// - /// Get the next piece of audio.
    - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// Sends equal size buffer of an input device, which will be applied to any input modules. - ///
    - /// Buffer to write sound data to. - /// Channels the library was initialized with. - /// Buffer to read sound data from. - /// Input data channels. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). - /// if buffer was filled with zeros. + /// bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + /// bool IsPlaying(int slotId); - /// - /// Get current behaviour for reaching the end of project timeline. - /// - /// if project is set to stop after reaching the end. + /// bool GetAutomaticStop(int slotId); - /// - /// Get current line number on the timeline. - /// - /// - /// + /// int GetCurrentLine(int slotId); - /// - /// Get current line in fixed point format (with tenth part). - /// + /// int GetCurrentLineWithTenthPart(int slotId); - /// - /// Get current signal level from the output module. - /// - /// - /// - /// - int GetCurrentSignalLevel(int slotId, int channel); - - /// - /// Get the project BPM (Beats Per Minute). - /// - /// - /// + /// + int GetCurrentSignalLevel(int slotId, AudioChannel channel); + + /// int GetSongBpm(int slotId); - /// - /// Get the project length in frames.
    - /// A frame is a pair of audio signal samples (left and right channel amplitudes). - /// The sample rate 44100 Hz means that you hear 44100 frames per second. - ///
    - /// - /// + /// uint GetSongLengthInFrames(int slotId); - /// - /// Get the project length in frames or lines. - /// - /// - /// + /// uint GetSongLengthInLines(int slotId); + /// string? GetSongName(int slotId); + /// void SetSongName(int slotId, string newName); - /// - /// Get the project TPL (Ticks Per Line). - /// - /// - /// + /// int GetSongTpl(int slotId); - /// - /// Save the SunVox project. - /// - void Save(int slotId, string path); + /// + void SaveToFile(int slotId, string path); + + ///// + //byte[] SaveToMemory(int slotId); + /// void SendEvent(int slotId, int track, PatternEvent data); + /// void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); - /// - /// Set the timestamp of events to be sent. - ///
    - /// Every event you send has a timestamp - this is the time when the event was generated (for example, when a key was - /// pressed). - ///
    - /// If is zero, the event will be heard as soon as possible, which is delayed by double the sound - /// latency. - ///
    - /// If is nonzero, the event will be additionally delayed by this many ticks. - ///
    - /// See also: . - ///
    + /// void SetSendEventTimestamp(int slotId, bool reset, int t); - /// - /// Get and set volume. Call with = -1 to only get the value. - /// - /// - /// Value in range 0-256. - /// Previous volume in range 0-256. + /// int Volume(int slotId, int volume); - /// - /// Get the project time map. - ///
    - /// For = , Nth value equals speed at the beginning of Nth - /// line (BPM | TPL << 16). - ///
    - /// For = , Nth value equals frame counter at the - /// beginning of Nth line. - ///
    + /// uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type); - /// - /// Load a project from file. - /// - /// Target slot ID. - /// Path to the file; may be relative or absolute. + /// void Load(int slotId, string path); - /// - /// Load a project from memory. - /// + /// void Load(int slotId, byte[] data); - /// - /// Open slot. Each slot can contain one independent implementation of the SunVox engine. - /// You can use several slots simultaneously (for example, one slot for music and another for effects). - /// Max number of slots: 16. - /// - /// A value between 0 and 15. + /// void OpenSlot(int slotId); - /// - /// Close the slot. - /// - /// + /// void CloseSlot(int slotId); - /// - /// Enter a lock block. - /// Use to send multiple events at the same time, read or write data from multiple threads. - /// Remember to call ! - /// + /// void LockSlot(int slotId); - /// - /// Leave a lock block. - /// + /// void UnlockSlot(int slotId); - /// - /// Set/get autostop mode. When autostop is off, the project plays endlessly in a loop. - /// + /// void SetAutomaticStop(int slotId, bool autoStop); - /// - /// First call - stop playing; second call - reset all SunVox activity and switch the engine to standby mode. - /// + /// void StopPlayback(int slotId); - /// - /// Start playing the project from the current position. - /// + /// void StartPlayback(int slotId); - /// - /// Start playing the project from the beginning (line 0). - /// + /// void StartPlaybackFromBeginning(int slotId); - /// - /// Jump to the specified position (line number on the timeline). - /// + /// void Rewind(int slotId, int line); - /// - /// Pause the audio stream on the specified slot. - /// + /// void PauseAudioStream(int slotId); - /// - /// Resume the audio stream on the specified slot. - /// + /// void ResumeAudioStream(int slotId); - /// - /// Wait for sync (pattern effect 0x33 on any slot) and resume the audio stream on the specified slot. - /// + /// void ResumeStreamOnSyncEffect(int slotId); } } diff --git a/SunSharp/Native/Loader/ILibraryHandler.cs b/SunSharp/Native/Loader/ILibraryHandler.cs new file mode 100644 index 0000000..ebe4d6f --- /dev/null +++ b/SunSharp/Native/Loader/ILibraryHandler.cs @@ -0,0 +1,43 @@ +using System; + +namespace SunSharp.Native.Loader +{ + /// + /// Provides an abstraction for loading and managing native library handles. + /// Used to load native libraries, retrieve function pointers, and unload libraries when no longer needed. + /// Used by the class. + /// + /// + /// You may implement this interface to create custom library loading mechanisms, + /// if necessary for your platform or application requirements. + /// See the implementation in the SunSharp.Redistribution package for reference. + /// + /// + public interface ILibraryHandler + { + /// + /// Whether the native library is currently loaded. + /// + public bool IsLibraryLoaded { get; } + + /// + /// Loads the native library from the file system and prepares it for use. + /// + void LoadLibrary(); + + /// + /// Unloads the native library if it is currently loaded and releases any associated unmanaged resources. + /// + void UnloadLibrary(); + + /// + /// Retrieves a managed delegate for an exported function from the loaded library. + /// + /// The name of the exported function to retrieve. + /// The delegate type that matches the function signature. + /// + /// A delegate instance that can be used to invoke the native function. + /// + Delegate GetFunctionByName(string name, Type delegateType); + } +} diff --git a/SunSharp/Native/Loader/LibraryHandler.cs b/SunSharp/Native/Loader/LibraryHandler.cs deleted file mode 100644 index 469115f..0000000 --- a/SunSharp/Native/Loader/LibraryHandler.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; - -namespace SunSharp.Native.Loader -{ - public interface ILibraryHandler - { - public bool IsLibraryLoaded { get; } - - /// - /// A method to be called to load a library and prepare everything. - /// - void LoadLibrary(); - - /// - /// A method to unload the library if loaded, and destroy unmanaged objects. - /// - void UnloadLibrary(); - - /// - /// A method that returns a delegate from a function pointer, found in the loaded library by name. - /// Should fail immediately if the method is not found. - /// - Delegate GetFunctionByName(string name, Type delegateType); - } -} diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 109a07b..594b3ba 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -2,19 +2,35 @@ namespace SunSharp.Native.Loader { - public sealed partial class NativeProxy + /// + /// Provides a thread-safe proxy for loading and managing native library function delegates. + /// + public sealed partial class NativeProxy : ISunVoxLibC { private readonly ILibraryHandler _handler; private readonly object _lock = new object(); + /// + /// Initializes a new instance of the class. + /// + /// The library handler responsible for loading and unloading the native library. + /// + /// Thrown when is . + /// public NativeProxy(ILibraryHandler handler) { - _handler = handler; + _handler = handler ?? throw new ArgumentNullException(nameof(handler)); } - public bool IsLoaded { get; private set; } + /// + /// Whether the proxy has loaded all function delegates from the native library. + /// + public bool IsProxyLoaded { get; private set; } + /// + /// Whether the underlying native library is currently loaded. + /// public bool IsLibraryLoaded { get @@ -27,85 +43,110 @@ public bool IsLibraryLoaded } /// - /// Loads the library if necessary. - /// Loads the library functions and sets the IsLoaded flag. - /// Nothing will be done if the library and proxy were already loaded. + /// Whether the proxy is fully ready to use, i.e., both the native library and all function delegates are loaded. /// + public bool IsReady + { + get + { + lock (_lock) + { + return IsProxyLoaded && _handler.IsLibraryLoaded; + } + } + } + + /// + /// Returns the current instance as an object implementing the ISunVoxLibC interface. + /// + public ISunVoxLibC AsNativeLibrary() => this; + + /// + /// Loads the native library if necessary and initializes all function delegates. + /// + /// Thrown when both loading and cleanup fail. + /// + /// This operation is thread-safe and idempotent. If both the library and proxy are already loaded, + /// this method returns immediately. + /// public void Load() { lock (_lock) { - if (IsLoaded && _handler.IsLibraryLoaded) + if (IsProxyLoaded && _handler.IsLibraryLoaded) { + // don't need to do anything return; } try { - if (!_handler.IsLibraryLoaded) + if (IsProxyLoaded) { - // make sure that all delegates are null, do so ASAP so we don't hard fail for any reason - // this should never matter... probably - UnloadInternal(); - - // library is loaded, so we need to reload those delegates - _handler.LoadLibrary(); - LoadInternal(); + // library got unloaded somehow, so we need to unload the delegates too + IsProxyLoaded = false; + SetAllDelegatesToNull(); } - else if (!IsLoaded) + + if (!_handler.IsLibraryLoaded) { - LoadInternal(); + _handler.LoadLibrary(); } + FetchAndAssignDelegates(); + IsProxyLoaded = true; } - catch (Exception) + catch (Exception ex) { - _handler.UnloadLibrary(); - UnloadInternal(); + // null delegates before unloading the library to avoid inconsistent state + // this way, in multithreaded scenarios, we prevent memory access violations + IsProxyLoaded = false; + SetAllDelegatesToNull(); + try + { + if (_handler.IsLibraryLoaded) + { + _handler.UnloadLibrary(); + } + } + catch (Exception ex1) + { + throw new AggregateException("Failed to load native library and initialize delegates. Additionally, unloading the library also failed.", ex, ex1); + } throw; } - - IsLoaded = true; } } /// - /// Unloads the SunVox engine if possible. - /// Unloads the library functions and sets the IsLoaded flag. - /// Unloads the library if possible. - /// If an unexpected exception is thrown, it will be rethrown, as this is a potentially dangerous situation where - /// memory was probably leaked. + /// Deinitializes the SunVox engine, unloads all function delegates, and unloads the native library if loaded. /// + /// + /// + /// This operation is thread-safe. Delegates are set to null before calling to prevent access from other threads. + /// + /// + /// This method passes exceptions thrown during deinitialization or unloading to the caller. This requires careful handling, as there is risk of unmanaged resources not being released properly. If fails, the issue may be unrecoverable. + /// + /// public void Unload() { lock (_lock) { - var handlerIsLibraryLoaded = _handler.IsLibraryLoaded; - - switch (IsLoaded) - { - // nothing to unload - case false when !handlerIsLibraryLoaded: - return; - // sunvox might need to be unloaded - case true when handlerIsLibraryLoaded: - if (sv_deinit == null) - { - throw new InvalidOperationException($"{nameof(sv_deinit)} was null, but library and proxy are both loaded."); - } - - sv_deinit.Invoke(); - break; - } - - // unload delegates if applies - if (IsLoaded) + // null delegates before unloading the library to avoid inconsistent state + // this way, in multithreaded scenarios, we prevent memory access violations + var deinitDelegate = sv_deinit; + IsProxyLoaded = false; + SetAllDelegatesToNull(); // makes sure that all delegates are null, regardless of previous state + + // at this point other threads cannot call delegates anymore + // if possible, deinitialize sunvox first + bool isLibraryLoaded = _handler.IsLibraryLoaded; + if (deinitDelegate != null && isLibraryLoaded) { - UnloadInternal(); - IsLoaded = false; + deinitDelegate.Invoke(); } - // unload library if applies - if (handlerIsLibraryLoaded) + if (isLibraryLoaded) { _handler.UnloadLibrary(); } @@ -120,7 +161,7 @@ internal Exception GetNoDelegateException() lock (_lock) { var isLibraryLoaded = _handler.IsLibraryLoaded; - var isProxyLoaded = IsLoaded; + var isProxyLoaded = IsProxyLoaded; message = (isLibraryLoaded, isProxyLoaded) switch { (true, true) => "Missing delegate. Library is loaded, proxy is loaded.", diff --git a/SunSharp/Native/Loader/NativeProxy.g.cs b/SunSharp/Native/Loader/NativeProxy.g.cs index facba3e..799546f 100644 --- a/SunSharp/Native/Loader/NativeProxy.g.cs +++ b/SunSharp/Native/Loader/NativeProxy.g.cs @@ -12,65 +12,65 @@ public sealed partial class NativeProxy : ISunVoxLibC { #region delegate definitions - private delegate IntPtr ReturnsIntPtrTakesint(int arg1); + private delegate IntPtr ReturnsIntPtrTakesInt(int arg1); - private delegate IntPtr ReturnsIntPtrTakesintint(int arg1, int arg2); + private delegate IntPtr ReturnsIntPtrTakesIntInt(int arg1, int arg2); - private delegate IntPtr ReturnsIntPtrTakesintintint(int arg1, int arg2, int arg3); + private delegate IntPtr ReturnsIntPtrTakesIntIntInt(int arg1, int arg2, int arg3); - private delegate IntPtr ReturnsIntPtrTakesintIntPtr(int arg1, IntPtr arg2); + private delegate IntPtr ReturnsIntPtrTakesIntIntPtr(int arg1, IntPtr arg2); - private delegate int ReturnsintTakesint(int arg1); + private delegate int ReturnsintTakesInt(int arg1); - private delegate int ReturnsintTakesintint(int arg1, int arg2); + private delegate int ReturnsintTakesIntInt(int arg1, int arg2); - private delegate int ReturnsintTakesintintint(int arg1, int arg2, int arg3); + private delegate int ReturnsintTakesIntIntInt(int arg1, int arg2, int arg3); - private delegate int ReturnsintTakesintintintint(int arg1, int arg2, int arg3, int arg4); + private delegate int ReturnsintTakesIntIntIntInt(int arg1, int arg2, int arg3, int arg4); - private delegate int ReturnsintTakesintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5); + private delegate int ReturnsintTakesIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5); - private delegate int ReturnsintTakesintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6); - private delegate int ReturnsintTakesintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); + private delegate int ReturnsintTakesIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7); - private delegate int ReturnsintTakesintintintintintintintintint(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); + private delegate int ReturnsintTakesIntIntIntIntIntIntIntIntInt(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9); - private delegate int ReturnsintTakesintintintintintintintIntPtr(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, IntPtr arg8); + private delegate int ReturnsintTakesIntIntIntIntIntIntIntIntPtr(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, IntPtr arg8); - private delegate int ReturnsintTakesintintintIntPtrint(int arg1, int arg2, int arg3, IntPtr arg4, int arg5); + private delegate int ReturnsintTakesIntIntIntIntPtrInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5); - private delegate int ReturnsintTakesintintintIntPtrintint(int arg1, int arg2, int arg3, IntPtr arg4, int arg5, int arg6); + private delegate int ReturnsintTakesIntIntIntIntPtrIntInt(int arg1, int arg2, int arg3, IntPtr arg4, int arg5, int arg6); - private delegate int ReturnsintTakesintintIntPtr(int arg1, int arg2, IntPtr arg3); + private delegate int ReturnsintTakesIntIntIntPtr(int arg1, int arg2, IntPtr arg3); - private delegate int ReturnsintTakesintintIntPtrint(int arg1, int arg2, IntPtr arg3, int arg4); + private delegate int ReturnsintTakesIntIntIntPtrInt(int arg1, int arg2, IntPtr arg3, int arg4); - private delegate int ReturnsintTakesintintIntPtruint(int arg1, int arg2, IntPtr arg3, uint arg4); + private delegate int ReturnsintTakesIntIntIntPtrUint(int arg1, int arg2, IntPtr arg3, uint arg4); - private delegate int ReturnsintTakesintintIntPtruintint(int arg1, int arg2, IntPtr arg3, uint arg4, int arg5); + private delegate int ReturnsintTakesIntIntIntPtrUintInt(int arg1, int arg2, IntPtr arg3, uint arg4, int arg5); - private delegate int ReturnsintTakesintIntPtr(int arg1, IntPtr arg2); + private delegate int ReturnsintTakesIntIntPtr(int arg1, IntPtr arg2); - private delegate int ReturnsintTakesintIntPtrintintint(int arg1, IntPtr arg2, int arg3, int arg4, int arg5); + private delegate int ReturnsintTakesIntIntPtrIntIntInt(int arg1, IntPtr arg2, int arg3, int arg4, int arg5); - private delegate int ReturnsintTakesintIntPtrIntPtrintintint(int arg1, IntPtr arg2, IntPtr arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesIntIntPtrIntPtrIntIntInt(int arg1, IntPtr arg2, IntPtr arg3, int arg4, int arg5, int arg6); - private delegate int ReturnsintTakesintIntPtruint(int arg1, IntPtr arg2, uint arg3); + private delegate int ReturnsintTakesIntIntPtrUint(int arg1, IntPtr arg2, uint arg3); - private delegate int ReturnsintTakesintIntPtruintintintint(int arg1, IntPtr arg2, uint arg3, int arg4, int arg5, int arg6); + private delegate int ReturnsintTakesIntIntPtrUintIntIntInt(int arg1, IntPtr arg2, uint arg3, int arg4, int arg5, int arg6); - private delegate int ReturnsintTakesIntPtrintintuint(IntPtr arg1, int arg2, int arg3, uint arg4); + private delegate int ReturnsintTakesIntPtrIntIntUint(IntPtr arg1, int arg2, int arg3, uint arg4); - private delegate int ReturnsintTakesIntPtrintintuintintintIntPtr(IntPtr arg1, int arg2, int arg3, uint arg4, int arg5, int arg6, IntPtr arg7); + private delegate int ReturnsintTakesIntPtrIntIntUintIntIntIntPtr(IntPtr arg1, int arg2, int arg3, uint arg4, int arg5, int arg6, IntPtr arg7); private delegate int ReturnsintTakesVoid(); - private delegate uint ReturnsuintTakesint(int arg1); + private delegate uint ReturnsuintTakesInt(int arg1); - private delegate uint ReturnsuintTakesintint(int arg1, int arg2); + private delegate uint ReturnsuintTakesIntInt(int arg1, int arg2); - private delegate uint ReturnsuintTakesintintintIntPtruint(int arg1, int arg2, int arg3, IntPtr arg4, uint arg5); + private delegate uint ReturnsuintTakesIntIntIntIntPtrUint(int arg1, int arg2, int arg3, IntPtr arg4, uint arg5); private delegate uint ReturnsuintTakesVoid(); @@ -78,197 +78,197 @@ public sealed partial class NativeProxy : ISunVoxLibC #region delegates - private ReturnsintTakesIntPtrintintuint? sv_audio_callback; + private ReturnsintTakesIntPtrIntIntUint? sv_audio_callback; - private ReturnsintTakesIntPtrintintuintintintIntPtr? sv_audio_callback2; + private ReturnsintTakesIntPtrIntIntUintIntIntIntPtr? sv_audio_callback2; - private ReturnsintTakesint? sv_close_slot; + private ReturnsintTakesInt? sv_close_slot; - private ReturnsintTakesintintint? sv_connect_module; + private ReturnsintTakesIntIntInt? sv_connect_module; private ReturnsintTakesVoid? sv_deinit; - private ReturnsintTakesintintint? sv_disconnect_module; + private ReturnsintTakesIntIntInt? sv_disconnect_module; - private ReturnsintTakesint? sv_end_of_song; + private ReturnsintTakesInt? sv_end_of_song; - private ReturnsintTakesintIntPtr? sv_find_module; + private ReturnsintTakesIntIntPtr? sv_find_module; - private ReturnsintTakesintIntPtr? sv_find_pattern; + private ReturnsintTakesIntIntPtr? sv_find_pattern; - private ReturnsintTakesint? sv_get_autostop; + private ReturnsintTakesInt? sv_get_autostop; - private ReturnsintTakesint? sv_get_base_version; + private ReturnsintTakesInt? sv_get_base_version; - private ReturnsintTakesint? sv_get_current_line; + private ReturnsintTakesInt? sv_get_current_line; - private ReturnsintTakesint? sv_get_current_line2; + private ReturnsintTakesInt? sv_get_current_line2; - private ReturnsintTakesintint? sv_get_current_signal_level; + private ReturnsintTakesIntInt? sv_get_current_signal_level; - private ReturnsIntPtrTakesint? sv_get_log; + private ReturnsIntPtrTakesInt? sv_get_log; - private ReturnsintTakesintint? sv_get_module_color; + private ReturnsintTakesIntInt? sv_get_module_color; - private ReturnsintTakesintintint? sv_get_module_ctl_group; + private ReturnsintTakesIntIntInt? sv_get_module_ctl_group; - private ReturnsintTakesintintintint? sv_get_module_ctl_max; + private ReturnsintTakesIntIntIntInt? sv_get_module_ctl_max; - private ReturnsintTakesintintintint? sv_get_module_ctl_min; + private ReturnsintTakesIntIntIntInt? sv_get_module_ctl_min; - private ReturnsIntPtrTakesintintint? sv_get_module_ctl_name; + private ReturnsIntPtrTakesIntIntInt? sv_get_module_ctl_name; - private ReturnsintTakesintintint? sv_get_module_ctl_offset; + private ReturnsintTakesIntIntInt? sv_get_module_ctl_offset; - private ReturnsintTakesintintint? sv_get_module_ctl_type; + private ReturnsintTakesIntIntInt? sv_get_module_ctl_type; - private ReturnsintTakesintintintint? sv_get_module_ctl_value; + private ReturnsintTakesIntIntIntInt? sv_get_module_ctl_value; - private ReturnsuintTakesintint? sv_get_module_finetune; + private ReturnsuintTakesIntInt? sv_get_module_finetune; - private ReturnsuintTakesintint? sv_get_module_flags; + private ReturnsuintTakesIntInt? sv_get_module_flags; - private ReturnsIntPtrTakesintint? sv_get_module_inputs; + private ReturnsIntPtrTakesIntInt? sv_get_module_inputs; - private ReturnsIntPtrTakesintint? sv_get_module_name; + private ReturnsIntPtrTakesIntInt? sv_get_module_name; - private ReturnsIntPtrTakesintint? sv_get_module_outputs; + private ReturnsIntPtrTakesIntInt? sv_get_module_outputs; - private ReturnsuintTakesintintintIntPtruint? sv_get_module_scope2; + private ReturnsuintTakesIntIntIntIntPtrUint? sv_get_module_scope2; - private ReturnsIntPtrTakesintint? sv_get_module_type; + private ReturnsIntPtrTakesIntInt? sv_get_module_type; - private ReturnsuintTakesintint? sv_get_module_xy; + private ReturnsuintTakesIntInt? sv_get_module_xy; - private ReturnsintTakesintint? sv_get_number_of_module_ctls; + private ReturnsintTakesIntInt? sv_get_number_of_module_ctls; - private ReturnsintTakesint? sv_get_number_of_modules; + private ReturnsintTakesInt? sv_get_number_of_modules; - private ReturnsintTakesint? sv_get_number_of_patterns; + private ReturnsintTakesInt? sv_get_number_of_patterns; - private ReturnsIntPtrTakesintint? sv_get_pattern_data; + private ReturnsIntPtrTakesIntInt? sv_get_pattern_data; - private ReturnsintTakesintintintintint? sv_get_pattern_event; + private ReturnsintTakesIntIntIntIntInt? sv_get_pattern_event; - private ReturnsintTakesintint? sv_get_pattern_lines; + private ReturnsintTakesIntInt? sv_get_pattern_lines; - private ReturnsIntPtrTakesintint? sv_get_pattern_name; + private ReturnsIntPtrTakesIntInt? sv_get_pattern_name; - private ReturnsintTakesintint? sv_get_pattern_tracks; + private ReturnsintTakesIntInt? sv_get_pattern_tracks; - private ReturnsintTakesintint? sv_get_pattern_x; + private ReturnsintTakesIntInt? sv_get_pattern_x; - private ReturnsintTakesintint? sv_get_pattern_y; + private ReturnsintTakesIntInt? sv_get_pattern_y; private ReturnsintTakesVoid? sv_get_sample_rate; - private ReturnsintTakesint? sv_get_song_bpm; + private ReturnsintTakesInt? sv_get_song_bpm; - private ReturnsuintTakesint? sv_get_song_length_frames; + private ReturnsuintTakesInt? sv_get_song_length_frames; - private ReturnsuintTakesint? sv_get_song_length_lines; + private ReturnsuintTakesInt? sv_get_song_length_lines; - private ReturnsIntPtrTakesint? sv_get_song_name; + private ReturnsIntPtrTakesInt? sv_get_song_name; - private ReturnsintTakesint? sv_get_song_tpl; + private ReturnsintTakesInt? sv_get_song_tpl; private ReturnsuintTakesVoid? sv_get_ticks; private ReturnsuintTakesVoid? sv_get_ticks_per_second; - private ReturnsintTakesintintintIntPtrint? sv_get_time_map; + private ReturnsintTakesIntIntIntIntPtrInt? sv_get_time_map; - private ReturnsintTakesIntPtrintintuint? sv_init; + private ReturnsintTakesIntPtrIntIntUint? sv_init; - private ReturnsintTakesintIntPtr? sv_load; + private ReturnsintTakesIntIntPtr? sv_load; - private ReturnsintTakesintIntPtruint? sv_load_from_memory; + private ReturnsintTakesIntIntPtrUint? sv_load_from_memory; - private ReturnsintTakesintIntPtrintintint? sv_load_module; + private ReturnsintTakesIntIntPtrIntIntInt? sv_load_module; - private ReturnsintTakesintIntPtruintintintint? sv_load_module_from_memory; + private ReturnsintTakesIntIntPtrUintIntIntInt? sv_load_module_from_memory; - private ReturnsintTakesint? sv_lock_slot; + private ReturnsintTakesInt? sv_lock_slot; - private ReturnsintTakesintintIntPtr? sv_metamodule_load; + private ReturnsintTakesIntIntIntPtr? sv_metamodule_load; - private ReturnsintTakesintintIntPtruint? sv_metamodule_load_from_memory; + private ReturnsintTakesIntIntIntPtrUint? sv_metamodule_load_from_memory; - private ReturnsintTakesintintintIntPtrintint? sv_module_curve; + private ReturnsintTakesIntIntIntIntPtrIntInt? sv_module_curve; - private ReturnsintTakesintIntPtrIntPtrintintint? sv_new_module; + private ReturnsintTakesIntIntPtrIntPtrIntIntInt? sv_new_module; - private ReturnsintTakesintintintintintintintIntPtr? sv_new_pattern; + private ReturnsintTakesIntIntIntIntIntIntIntIntPtr? sv_new_pattern; - private ReturnsintTakesint? sv_open_slot; + private ReturnsintTakesInt? sv_open_slot; - private ReturnsintTakesintintint? sv_pattern_mute; + private ReturnsintTakesIntIntInt? sv_pattern_mute; - private ReturnsintTakesint? sv_pause; + private ReturnsintTakesInt? sv_pause; - private ReturnsintTakesint? sv_play; + private ReturnsintTakesInt? sv_play; - private ReturnsintTakesint? sv_play_from_beginning; + private ReturnsintTakesInt? sv_play_from_beginning; - private ReturnsintTakesintint? sv_remove_module; + private ReturnsintTakesIntInt? sv_remove_module; - private ReturnsintTakesintint? sv_remove_pattern; + private ReturnsintTakesIntInt? sv_remove_pattern; - private ReturnsintTakesint? sv_resume; + private ReturnsintTakesInt? sv_resume; - private ReturnsintTakesintint? sv_rewind; + private ReturnsintTakesIntInt? sv_rewind; - private ReturnsintTakesintintIntPtrint? sv_sampler_load; + private ReturnsintTakesIntIntIntPtrInt? sv_sampler_load; - private ReturnsintTakesintintIntPtruintint? sv_sampler_load_from_memory; + private ReturnsintTakesIntIntIntPtrUintInt? sv_sampler_load_from_memory; - private ReturnsintTakesintintintintintint? sv_sampler_par; + private ReturnsintTakesIntIntIntIntIntInt? sv_sampler_par; - private ReturnsintTakesintIntPtr? sv_save; + private ReturnsintTakesIntIntPtr? sv_save; - private ReturnsIntPtrTakesintIntPtr? sv_save_to_memory; + private ReturnsIntPtrTakesIntIntPtr? sv_save_to_memory; - private ReturnsintTakesintintintintintintint? sv_send_event; + private ReturnsintTakesIntIntIntIntIntIntInt? sv_send_event; - private ReturnsintTakesintint? sv_set_autostop; + private ReturnsintTakesIntInt? sv_set_autostop; - private ReturnsintTakesintintint? sv_set_event_t; + private ReturnsintTakesIntIntInt? sv_set_event_t; - private ReturnsintTakesintintint? sv_set_module_color; + private ReturnsintTakesIntIntInt? sv_set_module_color; - private ReturnsintTakesintintintintint? sv_set_module_ctl_value; + private ReturnsintTakesIntIntIntIntInt? sv_set_module_ctl_value; - private ReturnsintTakesintintint? sv_set_module_finetune; + private ReturnsintTakesIntIntInt? sv_set_module_finetune; - private ReturnsintTakesintintIntPtr? sv_set_module_name; + private ReturnsintTakesIntIntIntPtr? sv_set_module_name; - private ReturnsintTakesintintint? sv_set_module_relnote; + private ReturnsintTakesIntIntInt? sv_set_module_relnote; - private ReturnsintTakesintintintint? sv_set_module_xy; + private ReturnsintTakesIntIntIntInt? sv_set_module_xy; - private ReturnsintTakesintintintintintintintintint? sv_set_pattern_event; + private ReturnsintTakesIntIntIntIntIntIntIntIntInt? sv_set_pattern_event; - private ReturnsintTakesintintIntPtr? sv_set_pattern_name; + private ReturnsintTakesIntIntIntPtr? sv_set_pattern_name; - private ReturnsintTakesintintintint? sv_set_pattern_size; + private ReturnsintTakesIntIntIntInt? sv_set_pattern_size; - private ReturnsintTakesintintintint? sv_set_pattern_xy; + private ReturnsintTakesIntIntIntInt? sv_set_pattern_xy; - private ReturnsintTakesintIntPtr? sv_set_song_name; + private ReturnsintTakesIntIntPtr? sv_set_song_name; - private ReturnsintTakesint? sv_stop; + private ReturnsintTakesInt? sv_stop; - private ReturnsintTakesint? sv_sync_resume; + private ReturnsintTakesInt? sv_sync_resume; - private ReturnsintTakesint? sv_unlock_slot; + private ReturnsintTakesInt? sv_unlock_slot; private ReturnsintTakesVoid? sv_update_input; - private ReturnsintTakesintint? sv_volume; + private ReturnsintTakesIntInt? sv_volume; - private ReturnsintTakesintintIntPtr? sv_vplayer_load; + private ReturnsintTakesIntIntIntPtr? sv_vplayer_load; - private ReturnsintTakesintintIntPtruint? sv_vplayer_load_from_memory; + private ReturnsintTakesIntIntIntPtrUint? sv_vplayer_load_from_memory; #endregion delegates @@ -468,107 +468,107 @@ public sealed partial class NativeProxy : ISunVoxLibC #endregion interface - private void LoadInternal() + private void FetchAndAssignDelegates() { - sv_audio_callback = (ReturnsintTakesIntPtrintintuint)_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsintTakesIntPtrintintuint)); - sv_audio_callback2 = (ReturnsintTakesIntPtrintintuintintintIntPtr)_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsintTakesIntPtrintintuintintintIntPtr)); - sv_close_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsintTakesint)); - sv_connect_module = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsintTakesintintint)); - sv_deinit = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_deinit", typeof(ReturnsintTakesVoid)); - sv_disconnect_module = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsintTakesintintint)); - sv_end_of_song = (ReturnsintTakesint)_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsintTakesint)); - sv_find_module = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_module", typeof(ReturnsintTakesintIntPtr)); - sv_find_pattern = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsintTakesintIntPtr)); - sv_get_autostop = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsintTakesint)); - sv_get_base_version = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_base_version", typeof(ReturnsintTakesint)); - sv_get_current_line = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsintTakesint)); - sv_get_current_line2 = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsintTakesint)); - sv_get_current_signal_level = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsintTakesintint)); - sv_get_log = (ReturnsIntPtrTakesint)_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesint)); - sv_get_module_color = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsintTakesintint)); - sv_get_module_ctl_group = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsintTakesintintint)); - sv_get_module_ctl_max = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsintTakesintintintint)); - sv_get_module_ctl_min = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsintTakesintintintint)); - sv_get_module_ctl_name = (ReturnsIntPtrTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesintintint)); - sv_get_module_ctl_offset = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsintTakesintintint)); - sv_get_module_ctl_type = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsintTakesintintint)); - sv_get_module_ctl_value = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsintTakesintintintint)); - sv_get_module_finetune = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsuintTakesintint)); - sv_get_module_flags = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsuintTakesintint)); - sv_get_module_inputs = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesintint)); - sv_get_module_name = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesintint)); - sv_get_module_outputs = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesintint)); - sv_get_module_scope2 = (ReturnsuintTakesintintintIntPtruint)_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsuintTakesintintintIntPtruint)); - sv_get_module_type = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesintint)); - sv_get_module_xy = (ReturnsuintTakesintint)_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsuintTakesintint)); - sv_get_number_of_module_ctls = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsintTakesintint)); - sv_get_number_of_modules = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsintTakesint)); - sv_get_number_of_patterns = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsintTakesint)); - sv_get_pattern_data = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesintint)); - sv_get_pattern_event = (ReturnsintTakesintintintintint)_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsintTakesintintintintint)); - sv_get_pattern_lines = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsintTakesintint)); - sv_get_pattern_name = (ReturnsIntPtrTakesintint)_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesintint)); - sv_get_pattern_tracks = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsintTakesintint)); - sv_get_pattern_x = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsintTakesintint)); - sv_get_pattern_y = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsintTakesintint)); - sv_get_sample_rate = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsintTakesVoid)); - sv_get_song_bpm = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsintTakesint)); - sv_get_song_length_frames = (ReturnsuintTakesint)_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsuintTakesint)); - sv_get_song_length_lines = (ReturnsuintTakesint)_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsuintTakesint)); - sv_get_song_name = (ReturnsIntPtrTakesint)_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesint)); - sv_get_song_tpl = (ReturnsintTakesint)_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsintTakesint)); - sv_get_ticks = (ReturnsuintTakesVoid)_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsuintTakesVoid)); - sv_get_ticks_per_second = (ReturnsuintTakesVoid)_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsuintTakesVoid)); - sv_get_time_map = (ReturnsintTakesintintintIntPtrint)_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsintTakesintintintIntPtrint)); - sv_init = (ReturnsintTakesIntPtrintintuint)_handler.GetFunctionByName("sv_init", typeof(ReturnsintTakesIntPtrintintuint)); - sv_load = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_load", typeof(ReturnsintTakesintIntPtr)); - sv_load_from_memory = (ReturnsintTakesintIntPtruint)_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsintTakesintIntPtruint)); - sv_load_module = (ReturnsintTakesintIntPtrintintint)_handler.GetFunctionByName("sv_load_module", typeof(ReturnsintTakesintIntPtrintintint)); - sv_load_module_from_memory = (ReturnsintTakesintIntPtruintintintint)_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsintTakesintIntPtruintintintint)); - sv_lock_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsintTakesint)); - sv_metamodule_load = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsintTakesintintIntPtr)); - sv_metamodule_load_from_memory = (ReturnsintTakesintintIntPtruint)_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsintTakesintintIntPtruint)); - sv_module_curve = (ReturnsintTakesintintintIntPtrintint)_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsintTakesintintintIntPtrintint)); - sv_new_module = (ReturnsintTakesintIntPtrIntPtrintintint)_handler.GetFunctionByName("sv_new_module", typeof(ReturnsintTakesintIntPtrIntPtrintintint)); - sv_new_pattern = (ReturnsintTakesintintintintintintintIntPtr)_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsintTakesintintintintintintintIntPtr)); - sv_open_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsintTakesint)); - sv_pattern_mute = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsintTakesintintint)); - sv_pause = (ReturnsintTakesint)_handler.GetFunctionByName("sv_pause", typeof(ReturnsintTakesint)); - sv_play = (ReturnsintTakesint)_handler.GetFunctionByName("sv_play", typeof(ReturnsintTakesint)); - sv_play_from_beginning = (ReturnsintTakesint)_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsintTakesint)); - sv_remove_module = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsintTakesintint)); - sv_remove_pattern = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsintTakesintint)); - sv_resume = (ReturnsintTakesint)_handler.GetFunctionByName("sv_resume", typeof(ReturnsintTakesint)); - sv_rewind = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_rewind", typeof(ReturnsintTakesintint)); - sv_sampler_load = (ReturnsintTakesintintIntPtrint)_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsintTakesintintIntPtrint)); - sv_sampler_load_from_memory = (ReturnsintTakesintintIntPtruintint)_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsintTakesintintIntPtruintint)); - sv_sampler_par = (ReturnsintTakesintintintintintint)_handler.GetFunctionByName("sv_sampler_par", typeof(ReturnsintTakesintintintintintint)); - sv_save = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_save", typeof(ReturnsintTakesintIntPtr)); - sv_save_to_memory = (ReturnsIntPtrTakesintIntPtr)_handler.GetFunctionByName("sv_save_to_memory", typeof(ReturnsIntPtrTakesintIntPtr)); - sv_send_event = (ReturnsintTakesintintintintintintint)_handler.GetFunctionByName("sv_send_event", typeof(ReturnsintTakesintintintintintintint)); - sv_set_autostop = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsintTakesintint)); - sv_set_event_t = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsintTakesintintint)); - sv_set_module_color = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsintTakesintintint)); - sv_set_module_ctl_value = (ReturnsintTakesintintintintint)_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsintTakesintintintintint)); - sv_set_module_finetune = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsintTakesintintint)); - sv_set_module_name = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsintTakesintintIntPtr)); - sv_set_module_relnote = (ReturnsintTakesintintint)_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsintTakesintintint)); - sv_set_module_xy = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsintTakesintintintint)); - sv_set_pattern_event = (ReturnsintTakesintintintintintintintintint)_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsintTakesintintintintintintintintint)); - sv_set_pattern_name = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsintTakesintintIntPtr)); - sv_set_pattern_size = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsintTakesintintintint)); - sv_set_pattern_xy = (ReturnsintTakesintintintint)_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsintTakesintintintint)); - sv_set_song_name = (ReturnsintTakesintIntPtr)_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsintTakesintIntPtr)); - sv_stop = (ReturnsintTakesint)_handler.GetFunctionByName("sv_stop", typeof(ReturnsintTakesint)); - sv_sync_resume = (ReturnsintTakesint)_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsintTakesint)); - sv_unlock_slot = (ReturnsintTakesint)_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsintTakesint)); - sv_update_input = (ReturnsintTakesVoid)_handler.GetFunctionByName("sv_update_input", typeof(ReturnsintTakesVoid)); - sv_volume = (ReturnsintTakesintint)_handler.GetFunctionByName("sv_volume", typeof(ReturnsintTakesintint)); - sv_vplayer_load = (ReturnsintTakesintintIntPtr)_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsintTakesintintIntPtr)); - sv_vplayer_load_from_memory = (ReturnsintTakesintintIntPtruint)_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsintTakesintintIntPtruint)); + sv_audio_callback = (ReturnsintTakesIntPtrIntIntUint)(_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsintTakesIntPtrIntIntUint)) ?? throw new InvalidOperationException("Failed to load function sv_audio_callback")); + sv_audio_callback2 = (ReturnsintTakesIntPtrIntIntUintIntIntIntPtr)(_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsintTakesIntPtrIntIntUintIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_audio_callback2")); + sv_close_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_close_slot")); + sv_connect_module = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_connect_module")); + sv_deinit = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_deinit", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_deinit")); + sv_disconnect_module = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_disconnect_module")); + sv_end_of_song = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_end_of_song")); + sv_find_module = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_find_module", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_find_module")); + sv_find_pattern = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_find_pattern")); + sv_get_autostop = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_autostop")); + sv_get_base_version = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_base_version", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_base_version")); + sv_get_current_line = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_line")); + sv_get_current_line2 = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_line2")); + sv_get_current_signal_level = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_signal_level")); + sv_get_log = (ReturnsIntPtrTakesInt)(_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_log")); + sv_get_module_color = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_color")); + sv_get_module_ctl_group = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_group")); + sv_get_module_ctl_max = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_max")); + sv_get_module_ctl_min = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_min")); + sv_get_module_ctl_name = (ReturnsIntPtrTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_name")); + sv_get_module_ctl_offset = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_offset")); + sv_get_module_ctl_type = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_type")); + sv_get_module_ctl_value = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_value")); + sv_get_module_finetune = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_finetune")); + sv_get_module_flags = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_flags")); + sv_get_module_inputs = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_inputs")); + sv_get_module_name = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_name")); + sv_get_module_outputs = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_outputs")); + sv_get_module_scope2 = (ReturnsuintTakesIntIntIntIntPtrUint)(_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsuintTakesIntIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_scope2")); + sv_get_module_type = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_type")); + sv_get_module_xy = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_xy")); + sv_get_number_of_module_ctls = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_module_ctls")); + sv_get_number_of_modules = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_modules")); + sv_get_number_of_patterns = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_patterns")); + sv_get_pattern_data = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_data")); + sv_get_pattern_event = (ReturnsintTakesIntIntIntIntInt)(_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsintTakesIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_event")); + sv_get_pattern_lines = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_lines")); + sv_get_pattern_name = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_name")); + sv_get_pattern_tracks = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_tracks")); + sv_get_pattern_x = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_x")); + sv_get_pattern_y = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_y")); + sv_get_sample_rate = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_sample_rate")); + sv_get_song_bpm = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_bpm")); + sv_get_song_length_frames = (ReturnsuintTakesInt)(_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsuintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_length_frames")); + sv_get_song_length_lines = (ReturnsuintTakesInt)(_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsuintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_length_lines")); + sv_get_song_name = (ReturnsIntPtrTakesInt)(_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_name")); + sv_get_song_tpl = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_tpl")); + sv_get_ticks = (ReturnsuintTakesVoid)(_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsuintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_ticks")); + sv_get_ticks_per_second = (ReturnsuintTakesVoid)(_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsuintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_ticks_per_second")); + sv_get_time_map = (ReturnsintTakesIntIntIntIntPtrInt)(_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsintTakesIntIntIntIntPtrInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_time_map")); + sv_init = (ReturnsintTakesIntPtrIntIntUint)(_handler.GetFunctionByName("sv_init", typeof(ReturnsintTakesIntPtrIntIntUint)) ?? throw new InvalidOperationException("Failed to load function sv_init")); + sv_load = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_load", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_load")); + sv_load_from_memory = (ReturnsintTakesIntIntPtrUint)(_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsintTakesIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_load_from_memory")); + sv_load_module = (ReturnsintTakesIntIntPtrIntIntInt)(_handler.GetFunctionByName("sv_load_module", typeof(ReturnsintTakesIntIntPtrIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_load_module")); + sv_load_module_from_memory = (ReturnsintTakesIntIntPtrUintIntIntInt)(_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsintTakesIntIntPtrUintIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_load_module_from_memory")); + sv_lock_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_lock_slot")); + sv_metamodule_load = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_metamodule_load")); + sv_metamodule_load_from_memory = (ReturnsintTakesIntIntIntPtrUint)(_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_metamodule_load_from_memory")); + sv_module_curve = (ReturnsintTakesIntIntIntIntPtrIntInt)(_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsintTakesIntIntIntIntPtrIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_module_curve")); + sv_new_module = (ReturnsintTakesIntIntPtrIntPtrIntIntInt)(_handler.GetFunctionByName("sv_new_module", typeof(ReturnsintTakesIntIntPtrIntPtrIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_new_module")); + sv_new_pattern = (ReturnsintTakesIntIntIntIntIntIntIntIntPtr)(_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsintTakesIntIntIntIntIntIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_new_pattern")); + sv_open_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_open_slot")); + sv_pattern_mute = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_pattern_mute")); + sv_pause = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_pause", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_pause")); + sv_play = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_play", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_play")); + sv_play_from_beginning = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_play_from_beginning")); + sv_remove_module = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_remove_module")); + sv_remove_pattern = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_remove_pattern")); + sv_resume = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_resume", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_resume")); + sv_rewind = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_rewind", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_rewind")); + sv_sampler_load = (ReturnsintTakesIntIntIntPtrInt)(_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsintTakesIntIntIntPtrInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_load")); + sv_sampler_load_from_memory = (ReturnsintTakesIntIntIntPtrUintInt)(_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUintInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_load_from_memory")); + sv_sampler_par = (ReturnsintTakesIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_sampler_par", typeof(ReturnsintTakesIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_par")); + sv_save = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_save", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_save")); + sv_save_to_memory = (ReturnsIntPtrTakesIntIntPtr)(_handler.GetFunctionByName("sv_save_to_memory", typeof(ReturnsIntPtrTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_save_to_memory")); + sv_send_event = (ReturnsintTakesIntIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_send_event", typeof(ReturnsintTakesIntIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_send_event")); + sv_set_autostop = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_autostop")); + sv_set_event_t = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_event_t")); + sv_set_module_color = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_color")); + sv_set_module_ctl_value = (ReturnsintTakesIntIntIntIntInt)(_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsintTakesIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_ctl_value")); + sv_set_module_finetune = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_finetune")); + sv_set_module_name = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_name")); + sv_set_module_relnote = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_relnote")); + sv_set_module_xy = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_xy")); + sv_set_pattern_event = (ReturnsintTakesIntIntIntIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsintTakesIntIntIntIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_event")); + sv_set_pattern_name = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_name")); + sv_set_pattern_size = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_size")); + sv_set_pattern_xy = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_xy")); + sv_set_song_name = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_song_name")); + sv_stop = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_stop", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_stop")); + sv_sync_resume = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_sync_resume")); + sv_unlock_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_unlock_slot")); + sv_update_input = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_update_input", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_update_input")); + sv_volume = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_volume", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_volume")); + sv_vplayer_load = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_vplayer_load")); + sv_vplayer_load_from_memory = (ReturnsintTakesIntIntIntPtrUint)(_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_vplayer_load_from_memory")); } - private void UnloadInternal() + private void SetAllDelegatesToNull() { sv_audio_callback = null; sv_audio_callback2 = null; diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs index 9d266ea..f39cda9 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs @@ -5,7 +5,17 @@ namespace SunSharp.Native { public partial class SunVoxLibNativeWrapper { - /// + /// + /// Connect the source module to the destination module. + /// + /// slot number (0 to 15). + /// Source module number (0-based). + /// Destination module number (0-based). + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void ConnectModule(int slotId, int source, int destination) { var ret = _lib.sv_connect_module(slotId, source, destination); @@ -16,12 +26,40 @@ public void ConnectModule(int slotId, int source, int destination) } } - /// - public int CreateModule(int slotId, string type, string name, int x = 0, int y = 0, - int z = 0) + /// + /// Thrown when the module type is not valid. + public int CreateModule(int slotId, SynthModuleType type, string? name = null, int x = 0, int y = 0, int z = 0) + { + if (!SynthModuleTypeHelper.IsValid(type)) + { + throw new ArgumentOutOfRangeException(nameof(type), "The ModuleType value is not defined."); + } + return CreateModule(slotId, SynthModuleTypeHelper.InternalNameFromType(type), name, x, y, z); + } + + /// + /// Create a new module. + /// + /// slot number (0 to 15). + /// Type of module to create. + /// Name of the module. + /// X coordinate (0 to 1024, center: 512). + /// Y coordinate (0 to 1024, center: 512). + /// Layer number (0 to 7). + /// The identifier of the newly created module (0-based). + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// + public int CreateModule(int slotId, string type, string? name = null, int x = 0, int y = 0, int z = 0) { var typePtr = Marshal.StringToCoTaskMemUTF8(type); - var namePtr = Marshal.StringToCoTaskMemUTF8(name); + IntPtr namePtr = IntPtr.Zero; + if (name != null) + { + namePtr = Marshal.StringToCoTaskMemUTF8(name); + } int ret; try { @@ -30,18 +68,31 @@ public int CreateModule(int slotId, string type, string name, int x = 0, int y = finally { Marshal.ZeroFreeCoTaskMemUTF8(typePtr); - Marshal.ZeroFreeCoTaskMemUTF8(namePtr); + if (namePtr != IntPtr.Zero) + { + Marshal.ZeroFreeCoTaskMemUTF8(namePtr); + } } if (ret < 0) { - var details = $"{nameof(slotId)}: {slotId}, {nameof(type)}: '{type ?? ""}', {nameof(name)}: '{name ?? ""}', {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(z)}: {z}."; + var details = $"{nameof(slotId)}: {slotId}, {nameof(type)}: '{type}', {nameof(name)}: '{name ?? ""}', {nameof(x)}: {x}, {nameof(y)}: {y}, {nameof(z)}: {z}."; throw new SunVoxException(ret, nameof(_lib.sv_new_module), details); } return ret; } - /// + /// + /// Disconnect the source module from the destination module. + /// + /// slot number (0 to 15). + /// Source module number (0-based). + /// Destination module number (0-based). + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void DisconnectModule(int slotId, int source, int destination) { var ret = _lib.sv_disconnect_module(slotId, source, destination); @@ -52,7 +103,14 @@ public void DisconnectModule(int slotId, int source, int destination) } } - /// + /// + /// Find a module by name. + /// + /// slot number (0 to 15). + /// Module name to search for. + /// module number (0-based) if found. + /// Thrown when an error occurs during the search. + /// Calls . public int? FindModule(int slotId, string name) { var ptr = Marshal.StringToCoTaskMemUTF8(name); @@ -77,7 +135,13 @@ public void DisconnectModule(int slotId, int source, int destination) return null; } - /// + /// + /// Get the module color. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// RGB color tuple (r, g, b). + /// Calls . public (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId) { var ret = _lib.sv_get_module_color(slotId, moduleId); @@ -87,7 +151,14 @@ public void DisconnectModule(int slotId, int source, int destination) return (red, green, blue); } - /// + /// + /// Get the number of controllers in the module. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Number of controllers. + /// Thrown when the operation fails. + /// Calls . public int GetModuleControllerCount(int slotId, int moduleId) { var ret = _lib.sv_get_number_of_module_ctls(slotId, moduleId); @@ -99,25 +170,55 @@ public int GetModuleControllerCount(int slotId, int moduleId) return ret; } - /// + /// + /// Get the controller group number. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// controller number (0-based). + /// Controller group number. + /// Calls . public int GetModuleControllerGroup(int slotId, int moduleId, int controllerId) { return _lib.sv_get_module_ctl_group(slotId, moduleId, controllerId); } - /// + /// + /// Get the controller maximum value. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Value scaling mode. + /// Maximum controller value. + /// Calls . public int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_max(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// + /// Get the controller minimum value. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Value scaling mode. + /// Minimum controller value. + /// Calls . public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_min(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// + /// Get the controller name. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Controller name, or if unavailable. + /// Calls . public string? GetModuleControllerName(int slotId, int moduleId, int controllerId) { // memory managed by SunVox @@ -125,13 +226,28 @@ public int GetModuleControllerMinValue(int slotId, int moduleId, int controllerI return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the controller display value offset. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Display value offset. + /// Calls . public int GetModuleControllerOffset(int slotId, int moduleId, int controllerId) { return _lib.sv_get_module_ctl_offset(slotId, moduleId, controllerId); } - /// + /// + /// Get the controller type. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Controller type. + /// Thrown when the operation fails. + /// Calls . public ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId) { var ret = _lib.sv_get_module_ctl_type(slotId, moduleId, controllerId); @@ -144,32 +260,66 @@ public ControllerType GetModuleControllerType(int slotId, int moduleId, int cont return (ControllerType)ret; } - /// + /// + /// Get the controller value. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Controller number (0-based). + /// Value scaling mode. + /// Controller value. + /// Calls . public int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode) { return _lib.sv_get_module_ctl_value(slotId, moduleId, controllerId, (int)scalingMode); } - /// + /// + /// Check if a module exists. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// if module exists. + /// + /// Calls . + /// public bool GetModuleExists(int slotId, int moduleId) { return GetModuleFlags(slotId, moduleId).Exists; } - /// + /// + /// Get the module fine tune and relative note values. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Fine tune pair containing fine tune value and relative note. + /// Calls . public FineTunePair GetModuleFineTune(int slotId, int moduleId) { var (fineTune, relativeNote) = UtilityHelper.UnpackTwoSignedShorts(_lib.sv_get_module_finetune(slotId, moduleId)); return new FineTunePair(fineTune, relativeNote); } - /// + /// + /// Get the module flags. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Module flags indicating existence, type, state, and connections. + /// Calls . public ModuleFlags GetModuleFlags(int slotId, int moduleId) { return _lib.sv_get_module_flags(slotId, moduleId); } - /// + /// + /// Get the array of input module numbers connected to this module. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Array of connected input module numbers. + /// Calls . public int[] GetModuleInputs(int slotId, int moduleId) { var moduleFlags = GetModuleFlags(slotId, moduleId); @@ -184,7 +334,13 @@ public int[] GetModuleInputs(int slotId, int moduleId) return UtilityHelper.CopyIntArraySkipNegativeOnes(ptr, inputCount); } - /// + /// + /// Get the module name. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Module name, or if unavailable. + /// Calls . public string? GetModuleName(int slotId, int moduleId) { // memory managed by SunVox @@ -192,7 +348,13 @@ public int[] GetModuleInputs(int slotId, int moduleId) return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the array of output module numbers connected from this module. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Array of connected output module numbers. + /// Calls . public int[] GetModuleOutputs(int slotId, int moduleId) { var moduleFlags = GetModuleFlags(slotId, moduleId); @@ -205,20 +367,38 @@ public int[] GetModuleOutputs(int slotId, int moduleId) return UtilityHelper.CopyIntArraySkipNegativeOnes(ptr, outputCount); } - /// + /// + /// Get the module position on the canvas. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Tuple containing X and Y coordinates. + /// Calls . public (int x, int y) GetModulePosition(int slotId, int moduleId) { return UtilityHelper.UnpackTwoSignedShorts(_lib.sv_get_module_xy(slotId, moduleId)); } - /// + /// + /// Get the module type string. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Module type string, or if unavailable. + /// Calls . public string? GetModuleType(int slotId, int moduleId) { var ptr = _lib.sv_get_module_type(slotId, moduleId); return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the upper limit of module count (one more than the highest module number). + /// + /// slot number (0 to 15). + /// Upper limit of module count. + /// Thrown when the operation fails. + /// Calls . public int GetUpperModuleCount(int slotId) { var ret = _lib.sv_get_number_of_modules(slotId); @@ -229,7 +409,15 @@ public int GetUpperModuleCount(int slotId) return ret; } - /// + /// + /// Load a file into a MetaModule. + /// Supported file formats: sunvox, mod, xm, midi. + /// + /// slot number (0 to 15). + /// Metamodule number (0-based). + /// File path (relative or absolute). + /// Thrown when the operation fails. + /// Calls . public void LoadIntoMetaModule(int slotId, int moduleId, string path) { var ptr = Marshal.StringToCoTaskMemUTF8(path); @@ -250,7 +438,15 @@ public void LoadIntoMetaModule(int slotId, int moduleId, string path) } } - /// + /// + /// Load a file into a MetaModule from memory. + /// Supported file formats: sunvox, mod, xm, midi. + /// + /// slot number (0 to 15). + /// Metamodule number (0-based). + /// Byte array with project data. + /// Thrown when the operation fails. + /// Calls . public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -271,8 +467,16 @@ public void LoadIntoMetaModule(int slotId, int moduleId, byte[] data) } } - /// - public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) + /// + /// Load a file into a Vorbis Player module. + /// Supported file formats: ogg. + /// + /// slot number (0 to 15). + /// Vorbis Player module number (0-based). + /// File path (relative or absolute). + /// Thrown when the operation fails. + /// Calls . + public void LoadIntoVorbisPlayer(int slotId, int moduleId, string path) { var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; @@ -292,8 +496,16 @@ public void LoadIntoVorbisPLayer(int slotId, int moduleId, string path) } } - /// - public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) + /// + /// Load a file into a Vorbis Player module from memory. + /// Supported file formats: ogg. + /// + /// slot number (0 to 15). + /// Vorbis Player module number (0-based). + /// Byte array with audio file data. + /// Thrown when the operation fails. + /// Calls . + public void LoadIntoVorbisPlayer(int slotId, int moduleId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); int ret; @@ -314,7 +526,18 @@ public void LoadIntoVorbisPLayer(int slotId, int moduleId, byte[] data) } } - /// + /// + /// Load a module or sample from file. + /// Supported file formats: sunsynth, xi, wav, aiff. + /// + /// slot number (0 to 15). + /// File path (relative or absolute). + /// X coordinate (0 to 1024, center: 512). + /// Y coordinate (0 to 1024, center: 512). + /// Layer number (0 to 7). + /// The number of the loaded module. + /// Thrown when the operation fails. + /// Calls . public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) { var ptr = Marshal.StringToCoTaskMemUTF8(path); @@ -336,7 +559,18 @@ public int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0) return ret; } - /// + /// + /// Load a module or sample from memory. + /// Supported file formats: sunsynth, xi, wav, aiff. + /// + /// slot number (0 to 15). + /// Byte array with module data. + /// X coordinate (0 to 1024, center: 512). + /// Y coordinate (0 to 1024, center: 512). + /// Layer number (0 to 7). + /// The number of the loaded module. + /// Thrown when the operation fails. + /// Calls . public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -358,7 +592,17 @@ public int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0) return ret; } - /// + /// + /// Load a sample into a Sampler module. + /// Supported file formats: xi, wav, aiff. + /// Set to to apply the sample to all sample slots. + /// + /// slot number (0 to 15). + /// Sampler module number (0-based). + /// File path (relative or absolute). + /// Sample slot number (-1 for auto/all slots). + /// Thrown when the operation fails. + /// Calls . public void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null) { var ptr = Marshal.StringToCoTaskMemUTF8(path); @@ -379,7 +623,17 @@ public void LoadSamplerSample(int slotId, int moduleId, string path, int? sample } } - /// + /// + /// Load a sample into a Sampler module from memory. + /// Supported file formats: xi, wav, aiff. + /// Set to to apply the sample to all sample slots. + /// + /// slot number (0 to 15). + /// Sampler module number (0-based). + /// Byte array with sample data. + /// Sample slot number (-1 for auto/all slots). + /// Thrown when the operation fails. + /// Calls . public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -401,19 +655,36 @@ public void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sample } } - /// - public int ReadModuleCurve(int slotId, int moduleId, int curve, float[] data) + /// + /// Read data from a module curve. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Curve number. + /// Array to receive curveId data. + /// Number of values read. + /// Thrown when the operation fails. + /// Calls . + public int ReadModuleCurve(int slotId, int moduleId, int curveId, float[] data) { - var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, false); + var ret = ModuleCurveOperationInternal(slotId, moduleId, curveId, data, false); if (ret < 0) { - var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curve)}: {curve}, data length: {data.Length}."; + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curveId)}: {curveId}, data length: {data.Length}."; throw new SunVoxException(ret, nameof(_lib.sv_module_curve), details); } return ret; } - /// + /// + /// Read oscilloscope data from a module. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Audio channel. + /// Buffer to receive scope data. + /// Number of samples read. + /// Calls . public int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer) { var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); @@ -428,7 +699,16 @@ public int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short } } - /// + /// + /// Remove (delete) a module. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void RemoveModule(int slotId, int moduleId) { var ret = _lib.sv_remove_module(slotId, moduleId); @@ -438,7 +718,16 @@ public void RemoveModule(int slotId, int moduleId) } } - /// + /// + /// Set the module color. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Red component (0 to 255). + /// Green component (0 to 255). + /// Blue component (0 to 255). + /// Thrown when the operation fails. + /// Calls . public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) { var color = r | (g << 8) | (b << 16); @@ -450,7 +739,17 @@ public void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b) } } - /// + /// + /// Set a controller value. + /// Note: will be used internally, which may introduce latency. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// controller number (0-based). + /// Controller value. + /// Value scaling mode. + /// Thrown when the operation fails. + /// Calls . public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode) { @@ -462,7 +761,14 @@ public void SetModuleControllerValue(int slotId, int moduleId, int controllerId, } } - /// + /// + /// Set the module fine tune value. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Fine tune value (-256 to 256, 1/256 of a semitone). + /// Thrown when the operation fails. + /// Calls . public void SetModuleFineTune(int slotId, int moduleId, int fineTune) { var ret = _lib.sv_set_module_finetune(slotId, moduleId, fineTune); @@ -473,7 +779,14 @@ public void SetModuleFineTune(int slotId, int moduleId, int fineTune) } } - /// + /// + /// Set the module name. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// New module name. + /// Thrown when the operation fails. + /// Calls . public void SetModuleName(int slotId, int moduleId, string name) { var ptr = Marshal.StringToCoTaskMemUTF8(name); @@ -492,7 +805,15 @@ public void SetModuleName(int slotId, int moduleId, string name) } } - /// + /// + /// Set the module position. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// X coordinate (center: 512, working area: 0 to 1024). + /// Y coordinate (center: 512, working area: 0 to 1024). + /// Thrown when the operation fails. + /// Calls . public void SetModulePosition(int slotId, int moduleId, int x, int y) { var ret = _lib.sv_set_module_xy(slotId, moduleId, x, y); @@ -503,7 +824,14 @@ public void SetModulePosition(int slotId, int moduleId, int x, int y) } } - /// + /// + /// Set the module relative note value. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Relative note in semitones. + /// Thrown when the operation fails. + /// Calls . public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) { var ret = _lib.sv_set_module_relnote(slotId, moduleId, relativeNote); @@ -514,13 +842,57 @@ public void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote) } } - /// - public int WriteModuleCurve(int slotId, int moduleId, int curve, float[] data) + /// + /// Get a Sampler sample parameter value. + /// + /// slot number (0 to 15). + /// Sampler module number (0-based). + /// Sample slot number. + /// Parameter number. + /// Parameter value. + /// Calls . + public int GetSamplerSampleParameter(int slotId, int moduleId, int sampleSlot, int parameter) { - var ret = ModuleCurveOperationInternal(slotId, moduleId, curve, data, true); + var ret = _lib.sv_sampler_par(slotId, moduleId, sampleSlot, parameter, 0, 0); + return ret; + } + + /// + /// Set a Sampler sample parameter value. + /// + /// slot number (0 to 15). + /// Sampler module number (0-based). + /// Sample slot number. + /// Parameter number. + /// Parameter value. + /// + /// + /// This method does not throw exceptions on failure. Ensure that the provided parameters are valid. + /// + /// Calls . + public void SetSamplerSampleParameter(int slotId, int moduleId, int sampleSlot, int parameter, int parameterValue) + { + // the library returns 0 on error, but that could be a valid parameter value, so we do not check the return value here + // TODO maybe that could be changed to return 0xFFFFFFFF on error? + _lib.sv_sampler_par(slotId, moduleId, sampleSlot, parameter, parameterValue, 1); + } + + /// + /// Write data to a module curve. + /// + /// slot number (0 to 15). + /// module number (0-based). + /// Curve number. + /// Array containing curveId data to write. + /// Number of values written. + /// Thrown when the operation fails. + /// Calls . + public int WriteModuleCurve(int slotId, int moduleId, int curveId, float[] data) + { + var ret = ModuleCurveOperationInternal(slotId, moduleId, curveId, data, true); if (ret < 0) { - var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curve)}: {curve}, data length: {data.Length}."; + var details = $"{nameof(slotId)}: {slotId}, {nameof(moduleId)}: {moduleId}, {nameof(curveId)}: {curveId}, data length: {data.Length}."; throw new SunVoxException(ret, nameof(_lib.sv_module_curve), details); } return ret; diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs index 0c77177..b9bd334 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs @@ -5,8 +5,20 @@ namespace SunSharp.Native { public partial class SunVoxLibNativeWrapper { - /// - public int ClonePattern(int slotId, int originalPatternId, int x, int y) + /// + /// Clone a pattern. + /// + /// Slot number (0 to 15). + /// Pattern to clone. + /// Line number on which the pattern starts (horizontal). + /// Vertical position on the timeline. + /// The number of the newly created pattern. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// + public int ClonePattern(int slotId, int originalPatternId, int x, int y) { var ret = _lib.sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); @@ -19,7 +31,22 @@ public int ClonePattern(int slotId, int originalPatternId, int x, int y) return ret; } - /// + /// + /// Create a new pattern. + /// + /// Slot number (0 to 15). + /// Line number on which the pattern starts. + /// Y coordinate on timeline. + /// Number of tracks. + /// Number of lines. + /// Icon seed for pattern appearance. + /// Pattern name. + /// The number of the newly created pattern. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null) { var ptr = Marshal.StringToCoTaskMemUTF8(name); @@ -42,7 +69,14 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic return ret; } - /// + /// + /// Find a pattern by name. + /// + /// Slot number (0 to 15). + /// Pattern name to search for. + /// Pattern number if found. + /// Thrown when an error occurs during the search. + /// Calls . public int? FindPattern(int slotId, string name) { var ptr = Marshal.StringToCoTaskMemUTF8(name); @@ -70,7 +104,16 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic return null; } - /// + /// + /// Get the pattern data (all events). + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Tuple containing event data array, number of tracks, and number of lines if pattern exists. + /// + /// Requires / . + /// Calls . + /// public (PatternEvent[] data, int tracks, int lines)? GetPatternData(int slotId, int patternId) { var lines = GetPatternLines(slotId, patternId); @@ -97,7 +140,17 @@ public int CreatePattern(int slotId, int x, int y, int tracks, int lines, int ic return (arr, tracks, lines); } - /// + /// + /// Get a specific column value from a pattern event. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Track number. + /// Line number. + /// Column to read. + /// Column value. + /// Thrown when the operation fails. + /// Calls . public int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column) { var ret = _lib.sv_get_pattern_event(slotId, patternId, track, line, (int)column); @@ -110,14 +163,28 @@ public int GetPatternEventValue(int slotId, int patternId, int track, int line, return ret; } - /// + /// + /// Check if a pattern exists. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// if pattern exists; otherwise. + /// Calls . public bool GetPatternExists(int slotId, int patternId) { return GetPatternLines(slotId, patternId) > 0; } - /// - public int GetPatternLines(int slotId, int patternId) + /// + /// Get the number of lines in the pattern. + /// Can be used to check if a pattern exists (lines > 0). + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Number of lines. + /// Thrown when the operation fails. + /// Calls . + public int GetPatternLines(int slotId, int patternId) { var ret = _lib.sv_get_pattern_lines(slotId, patternId); if (ret < 0) @@ -129,7 +196,17 @@ public int GetPatternLines(int slotId, int patternId) return ret; } - /// + /// + /// Get the pattern mute state. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// if pattern is muted; otherwise. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public bool GetPatternMuted(int slotId, int patternId) { var ret = _lib.sv_pattern_mute(slotId, patternId, -1); @@ -142,14 +219,32 @@ public bool GetPatternMuted(int slotId, int patternId) return ret == 1; } - /// + /// + /// Get the pattern name. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Pattern name, or if unavailable. + /// Calls . public string? GetPatternName(int slotId, int patternId) { var ptr = _lib.sv_get_pattern_name(slotId, patternId); return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the pattern position on the timeline. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Tuple containing X and Y coordinates. + /// + /// Calls: + /// + /// + /// + /// + /// public (int x, int y) GetPatternPosition(int slotId, int patternId) { var x = _lib.sv_get_pattern_x(slotId, patternId); @@ -157,7 +252,14 @@ public bool GetPatternMuted(int slotId, int patternId) return (x, y); } - /// + /// + /// Get the number of tracks in the pattern. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Number of tracks. + /// Thrown when the operation fails. + /// Calls . public int GetPatternTracks(int slotId, int patternId) { var ret = _lib.sv_get_pattern_tracks(slotId, patternId); @@ -170,19 +272,37 @@ public int GetPatternTracks(int slotId, int patternId) return ret; } - /// + /// + /// Get the pattern X coordinate on the timeline. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// X coordinate. + /// Calls . public int GetPatternX(int slotId, int patternId) { return _lib.sv_get_pattern_x(slotId, patternId); } - /// + /// + /// Get the pattern Y coordinate on the timeline. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Y coordinate. + /// Calls . public int GetPatternY(int slotId, int patternId) { return _lib.sv_get_pattern_y(slotId, patternId); } - /// + /// + /// Get the upper limit of pattern count (one more than the highest pattern number). + /// + /// Slot number (0 to 15). + /// Upper limit of pattern count. + /// Thrown when the operation fails. + /// Calls . public int GetUpperPatternCount(int slotId) { var ret = _lib.sv_get_number_of_patterns(slotId); @@ -194,8 +314,20 @@ public int GetUpperPatternCount(int slotId) return ret; } - /// - public void RemovePattern(int slotId, int patternId) + /// + /// Delete a pattern. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Thrown when the operation fails. + /// + /// + /// Deleting the original pattern also deletes all its clones. + /// + /// Requires / . + /// Calls . + /// + public void RemovePattern(int slotId, int patternId) { var ret = _lib.sv_remove_pattern(slotId, patternId); if (ret != 0) @@ -205,7 +337,26 @@ public void RemovePattern(int slotId, int patternId) } } - /// + /// + /// Set the pattern data (all events). + /// Resizes the pattern and sets all event data. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Event data array (length must equal tracks * lines). + /// Number of tracks. + /// Number of lines. + /// Thrown if tracks or lines are negative. + /// Thrown if data length doesn't match tracks * lines. + /// Thrown when the operation fails or pattern doesn't exist. + /// + /// Requires / . + /// Calls: + /// + /// + /// + /// + /// public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines) { if (tracks < 0) @@ -240,8 +391,29 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t } } - /// - public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + /// + /// Read a section or all of the pattern data into a buffer. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Buffer to receive pattern data. + /// Width of the buffer. + /// Height of the buffer. + /// Number of tracks in the buffer to skip. + /// Number of lines in the buffer to skip. + /// Number of tracks in the pattern to skip. + /// Number of lines in the pattern to skip. + /// Maximum number of tracks to read. + /// Maximum number of lines to read. + /// Number of events read. + /// Thrown if any offset or size parameter is negative. + /// Thrown if buffer length doesn't match bufferTracks * bufferLines. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// + public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, int? maxTracks = null, int? maxLines = null) { @@ -316,7 +488,27 @@ public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int return readEventCount; } - /// + /// + /// Write a section or all of a buffer into the pattern data. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Buffer containing pattern data to write. + /// Width of the buffer. + /// Height of the buffer. + /// Number of tracks in the buffer to skip. + /// Number of lines in the buffer to skip. + /// Number of tracks in the pattern to skip. + /// Number of lines in the pattern to skip. + /// Maximum number of tracks to write. + /// Maximum number of lines to write. + /// Number of events written. + /// Thrown if any offset or size parameter is negative. + /// Thrown if buffer length doesn't match bufferTracks * bufferLines. + /// + /// Requires / . + /// Calls . + /// public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int writeOffsetTracks = 0, int writeOffsetLines = 0, int? maxTracks = null, int? maxLines = null) @@ -392,7 +584,20 @@ public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, in return writeEventCount; } - /// + /// + /// Set a pattern event at a specific location. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Track number. + /// Line number. + /// Note: 0 - nothing; 1 to 127 - note; 128 - note off; 129+ - see NOTECMD_*. + /// Velocity: 1 to 129; 0 - default. + /// Module: 0 (empty) or module number + 1 (1 to 65535). + /// Controller/effect: 0xCCEE. CC - controller (1 to 255); EE - effect. + /// Value: 0xXXYY. Controller value (0 to 32768) or effect parameter (0 to 65535). + /// Thrown when the operation fails. + /// Calls . public void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { @@ -404,7 +609,16 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, int } } - /// + /// + /// Set a pattern event at a specific location. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Track number. + /// Line number. + /// Pattern event data. + /// Thrown when the operation fails. + /// Calls . public void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev) { var ret = _lib.sv_set_pattern_event(slotId, patternId, track, line, ev.NN, ev.VV, ev.MM, ev.CCEE, ev.XXYY); @@ -415,7 +629,17 @@ public void SetPatternEvent(int slotId, int patternId, int track, int line, Patt } } - /// + /// + /// Set the pattern mute state. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// to mute; to unmute. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void SetPatternMuted(int slotId, int patternId, bool muted) { var ret = _lib.sv_pattern_mute(slotId, patternId, muted ? 1 : 0); @@ -426,7 +650,17 @@ public void SetPatternMuted(int slotId, int patternId, bool muted) } } - /// + /// + /// Set the pattern name. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// New pattern name. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void SetPatternName(int slotId, int patternId, string name) { var ptr = Marshal.StringToCoTaskMemUTF8(name); @@ -445,7 +679,18 @@ public void SetPatternName(int slotId, int patternId, string name) } } - /// + /// + /// Set the pattern position on the timeline. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Line number on which the pattern starts. + /// Y coordinate on timeline. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void SetPatternPosition(int slotId, int patternId, int x, int y) { var ret = _lib.sv_set_pattern_xy(slotId, patternId, x, y); @@ -456,7 +701,18 @@ public void SetPatternPosition(int slotId, int patternId, int x, int y) } } - /// + /// + /// Set the pattern size (number of tracks and/or lines). + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Number of tracks (null to keep current). + /// Number of lines (null to keep current). + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// public void SetPatternSize(int slotId, int patternId, int? tracks = null, int? lines = null) { var ret = _lib.sv_set_pattern_size(slotId, patternId, tracks ?? -1, lines ?? -1); diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLibNativeWrapper.cs index 9604f65..9ccc5c6 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLibNativeWrapper.cs @@ -12,47 +12,89 @@ public SunVoxLibNativeWrapper(ISunVoxLibC nativeLibrary) _lib = nativeLibrary; } - /// + /// + /// Get the next piece of audio from the Output module. + /// + /// Output buffer to write audio data to. + /// Number of channels the library was initialized with. + /// Audio latency in frames. + /// Buffer output time in system ticks. See . + /// + /// if buffer contains any non-0 samples. + /// + /// Thrown when buffer size is invalid for the channel count. + /// Thrown when the operation fails. + /// + /// + /// must be set in to use this function. + /// + /// + /// Make sure to call the correct overload for the buffer data type. + /// + /// Calls . + /// public bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, channels, latency, outTime); } - /// + /// + /// Send audio to the Input module and get the next piece of audio from the Output module. + /// + /// Output buffer to write audio data to. + /// Number of channels the library was initialized with. + /// Input buffer. Stereo data must be interleaved. + /// Number of input channels. + /// Audio latency in frames. + /// Buffer output time in system ticks. See . + /// + /// if buffer contains any non-0 samples. + /// + /// + /// + /// must be set in to use this function. + /// + /// Calls . + /// public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// + /// public bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 1); } - /// + /// public bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { return AudioCallbackInternal(outputBuffer, outputChannels, inputBuffer, inputChannels, latency, outTime, 0); } - /// + /// + /// Close the slot and free its resources. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void CloseSlot(int slotId) { var ret = _lib.sv_close_slot(slotId); @@ -62,7 +104,12 @@ public void CloseSlot(int slotId) } } - /// + /// + /// Deinitialize the SunVox engine and free all resources. + /// May be safely called multiple times. + /// + /// Thrown when the operation fails. + /// Calls . public void Deinitialize() { var retCode = _lib.sv_deinit(); @@ -72,7 +119,15 @@ public void Deinitialize() } } - /// + /// + /// Get the autostop mode. When , the project loops endlessly. + /// + /// Slot number (0 to 15). + /// + /// if automatic stop is enabled. + /// + /// Thrown when the operation fails. + /// Calls . public bool GetAutomaticStop(int slotId) { var ret = _lib.sv_get_autostop(slotId); @@ -83,41 +138,72 @@ public bool GetAutomaticStop(int slotId) return ret == 1; } - /// + /// + /// Get the current line number on the timeline. + /// + /// Slot number (0 to 15). + /// Current line number (playback position). + /// Calls . public int GetCurrentLine(int slotId) { return _lib.sv_get_current_line(slotId); } - /// + /// + /// Get the current line number in fixed point format. + /// The value contains the tenth part of the line for higher precision. + /// + /// Slot number (0 to 15). + /// Current line number in fixed point format. + /// Calls . public int GetCurrentLineWithTenthPart(int slotId) { return _lib.sv_get_current_line2(slotId); } - /// - public int GetCurrentSignalLevel(int slotId, int channel) + /// + /// Get the current signal level from the Output module. + /// + /// Slot number (0 to 15). + /// Audio channel. + /// Signal level (0 to 255). + /// Thrown when the operation fails. + /// Calls . + public int GetCurrentSignalLevel(int slotId, AudioChannel channel) { - var ret = _lib.sv_get_current_signal_level(slotId, channel); + var ret = _lib.sv_get_current_signal_level(slotId, (int)channel); if (ret < 0 || ret > 255) { - throw new SunVoxException(ret, nameof(_lib.sv_get_current_signal_level), - $"{nameof(slotId)}: {slotId}, {nameof(channel)}: {channel}."); + throw new SunVoxException(ret, nameof(_lib.sv_get_current_signal_level), $"{nameof(slotId)}: {slotId}, {nameof(channel)}: {channel}."); } return ret; } - /// + /// + /// Get the latest log messages from the SunVox engine. + /// + /// Maximum number of characters to read. + /// Log messages, or if unavailable. + /// + /// + /// Log messages are typically written when a call to another function fails. + /// + /// Calls . public string? GetLog(int size) { - // memory managed by SunVox + // memory managed by SunVox, should not be freed var ptr = _lib.sv_get_log(size); return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the current sampling rate (may differ from the value specified in ). + /// + /// Current sample rate in Hz. + /// Thrown when the operation fails. + /// Calls . public int GetSampleRate() { var ret = _lib.sv_get_sample_rate(); @@ -129,7 +215,30 @@ public int GetSampleRate() return ret; } - /// + /// + /// Get the SunVox version used to create this project. + /// + /// Slot number (0 to 15). + /// SunVox version used to create the project. + /// Thrown when the operation fails. + /// Calls . + public SunVoxVersion GetSongBaseVersion(int slotId) + { + var ret = _lib.sv_get_base_version(slotId); + if (ret < 0) + { + throw new SunVoxException(ret, nameof(_lib.sv_get_base_version), $"{nameof(slotId)}: {slotId}."); + } + return SunVoxVersion.FromProjectBaseVersion(ret); + } + + /// + /// Get the project BPM (Beats Per Minute). + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . + /// public int GetSongBpm(int slotId) { var ret = _lib.sv_get_song_bpm(slotId); @@ -141,19 +250,37 @@ public int GetSongBpm(int slotId) return ret; } - /// + /// + /// Get the project length in frames. + /// + /// Slot number (0 to 15). + /// + /// + /// A frame is a pair of samples for stereo audio, or a single sample for mono audio. + /// + /// Calls . + /// public uint GetSongLengthInFrames(int slotId) { return _lib.sv_get_song_length_frames(slotId); } - /// + /// + /// Get the project length in lines. + /// + /// Slot number (0 to 15). + /// Calls . public uint GetSongLengthInLines(int slotId) { return _lib.sv_get_song_length_lines(slotId); } - /// + /// + /// Get the project name. + /// + /// Slot number (0 to 15). + /// Project name, or if unavailable. + /// Calls . public string? GetSongName(int slotId) { // memory managed by SunVox @@ -161,7 +288,12 @@ public uint GetSongLengthInLines(int slotId) return Marshal.PtrToStringUTF8(ptr); } - /// + /// + /// Get the project TPL (Ticks Per Line). + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public int GetSongTpl(int slotId) { var ret = _lib.sv_get_song_tpl(slotId); @@ -173,19 +305,41 @@ public int GetSongTpl(int slotId) return ret; } - /// + /// + /// Get the current system tick counter. + /// + /// + /// + /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). System ticks are used for timing in functions like and . + /// + /// Calls . public uint GetTicks() { return _lib.sv_get_ticks(); } - /// + /// + /// Get the number of system ticks per second. + /// + /// Calls . public uint GetTicksPerSecond() { return _lib.sv_get_ticks_per_second(); } - /// + /// + /// Get the project time map. + /// + /// Slot number (0 to 15). + /// First line to read (usually 0). + /// Number of lines to read. + /// + /// : array[X] = BPM | (TPL << 16); + /// : array[X] = frame counter. + /// + /// Array with time map values. + /// Thrown when the operation fails. + /// Calls . public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) { var arr = new uint[length]; @@ -209,8 +363,21 @@ public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type return arr; } - /// - public LibraryVersion Initialize(int sampleRate, string? config = null, + /// + /// Initialize the SunVox engine. May be called again to re-initialize. + /// + /// + /// Desired sample rate (Hz); minimum 44100. The actual rate may differ if offline mode is not set. + /// + /// + /// Configuration string in pipe-separated format (e.g., "param1=value1|param2=value2"). + /// Use for automatic configuration. + /// + /// Number of audio channels. + /// Initialization flags. + /// Thrown when initialization fails. + /// Calls . + public SunVoxVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None) { var ptr = Marshal.StringToCoTaskMemUTF8(config); @@ -223,7 +390,7 @@ public LibraryVersion Initialize(int sampleRate, string? config = null, throw new SunVoxException(ret, nameof(_lib.sv_init), details); } - return new LibraryVersion(ret); + return SunVoxVersion.FromLibraryVersion(ret); } finally { @@ -231,7 +398,12 @@ public LibraryVersion Initialize(int sampleRate, string? config = null, } } - /// + /// + /// Check if the project is currently playing. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public bool IsPlaying(int slotId) { var ret = _lib.sv_end_of_song(slotId); @@ -243,7 +415,13 @@ public bool IsPlaying(int slotId) return ret == 0; } - /// + /// + /// Load a SunVox project from file. + /// + /// Slot number (0 to 15). + /// File path (relative or absolute). + /// Thrown when the operation fails. + /// Calls . public void Load(int slotId, string path) { var ptr = Marshal.StringToCoTaskMemUTF8(path); @@ -264,7 +442,13 @@ public void Load(int slotId, string path) } } - /// + /// + /// Load a SunVox project from memory. + /// + /// Slot number (0 to 15). + /// Byte array with project data. + /// Thrown when the operation fails. + /// Calls . public void Load(int slotId, byte[] data) { var handle = GCHandle.Alloc(data, GCHandleType.Pinned); @@ -281,11 +465,22 @@ public void Load(int slotId, byte[] data) if (ret != 0) { throw new SunVoxException(ret, nameof(_lib.sv_load_from_memory), - $"{nameof(slotId)}: {slotId}, data length: {data.Length}."); - } - } - - /// + $"{nameof(slotId)}: {slotId}, data length: {data.Length}."); + } + } + + /// + /// Lock the slot for thread-safe access. + /// Use when reading/modifying SunVox data from different threads on the same slot. + /// Some functions require lock/unlock. Remember to call ! + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// + /// + /// The library uses a recursive mutex, so the same thread may call multiple times without deadlocking itself. + /// + /// Calls . public void LockSlot(int slotId) { var ret = _lib.sv_lock_slot(slotId); @@ -295,7 +490,12 @@ public void LockSlot(int slotId) } } - /// + /// + /// Open a slot. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void OpenSlot(int slotId) { var ret = _lib.sv_open_slot(slotId); @@ -305,7 +505,12 @@ public void OpenSlot(int slotId) } } - /// + /// + /// Pause the audio stream from a slot. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void PauseAudioStream(int slotId) { var ret = _lib.sv_pause(slotId); @@ -315,7 +520,12 @@ public void PauseAudioStream(int slotId) } } - /// + /// + /// Resume the audio stream from a slot. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void ResumeAudioStream(int slotId) { var ret = _lib.sv_resume(slotId); @@ -325,6 +535,12 @@ public void ResumeAudioStream(int slotId) } } + /// + /// Wait for sync (pattern effect 0x33 in any slot) and resume the audio stream. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void ResumeStreamOnSyncEffect(int slotId) { var ret = _lib.sv_sync_resume(slotId); @@ -334,7 +550,13 @@ public void ResumeStreamOnSyncEffect(int slotId) } } - /// + /// + /// Jump to the specified line on the timeline. + /// + /// Slot number (0 to 15). + /// Line number on the timeline. + /// Thrown when the operation fails. + /// Calls . public void Rewind(int slotId, int line) { var ret = _lib.sv_rewind(slotId, line); @@ -344,8 +566,14 @@ public void Rewind(int slotId, int line) } } - /// - public void Save(int slotId, string path) + /// + /// Save the SunVox project to a file. + /// + /// Slot number (0 to 15). + /// File path where the project will be saved. + /// Thrown when the operation fails. + /// Calls . + public void SaveToFile(int slotId, string path) { var ptr = Marshal.StringToCoTaskMemUTF8(path); int ret; @@ -365,11 +593,72 @@ public void Save(int slotId, string path) } } + // TODO FIXME + // issues with deallocating memory allocated by native code + // additionally - size_t vs long issues on 32/64 bit platforms + /* + /// + /// Save the SunVox project to memory. + /// + /// Slot number (0 to 15). + /// Byte array containing the saved project data. + /// Thrown when the operation fails. + /// Calls . + public byte[] SaveToMemory(int slotId) + { + long[] lengthArray = new long[1]; + var handle = GCHandle.Alloc(lengthArray, GCHandleType.Pinned); + try + { + var ptr = handle.AddrOfPinnedObject(); + var buffer = _lib.sv_save_to_memory(slotId, ptr); + if (buffer == IntPtr.Zero) + { + throw new SunVoxException(buffer.ToInt64(), nameof(_lib.sv_save_to_memory), $"{nameof(slotId)}: {slotId}."); + } + + long length = lengthArray[0]; + byte[] result = new byte[length]; + Marshal.Copy(buffer, result, 0, (int)length); + Marshal.FreeHGlobal(buffer); + return result; + } + finally + { + handle.Free(); + } + }*/ + + /// + /// Send an event to the SunVox engine. + /// + /// Slot number (0 to 15). + /// Track number within the virtual pattern. + /// Pattern event data. + /// Calls . + /// public void SendEvent(int slotId, int track, PatternEvent data) { SendEvent(slotId, track, data.NN, data.VV, data.MM, data.CCEE, data.XXYY); } + /// + /// Send an event to the SunVox engine. + /// + /// Slot number (0 to 15). + /// Track number within the virtual pattern. + /// Note. + /// Velocity. + /// Module. + /// Controller and effect. + /// Value. + /// Thrown when the operation fails. + /// + /// + /// Consider using and the overload that accepts it for better readability. + /// + /// Calls . + /// public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0) { @@ -381,6 +670,15 @@ public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, } } + /// + /// Set autostop mode. When OFF, the project loops endlessly. + /// + /// Slot number (0 to 15). + /// + /// - stop at the end. + /// + /// Thrown when the operation fails. + /// Calls . public void SetAutomaticStop(int slotId, bool autoStop) { var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); @@ -391,6 +689,23 @@ public void SetAutomaticStop(int slotId, bool autoStop) } } + /// + /// Set the timestamp of events sent by . + /// Every event has a timestamp (when it was generated, e.g., key press time). + /// If timestamp is zero: event is heard as quickly as possible. + /// If nonzero: event is heard at timestamp + sound latency * 2. + /// + /// Slot number (0 to 15). + /// + /// - set timestamp; + /// - reset (ignores ). + /// + /// + /// Timestamp (in system ticks) for future events. + /// If not zero, must be ≥ previous value for same slot. See . + /// + /// Thrown when the operation fails. + /// Calls . public void SetSendEventTimestamp(int slotId, bool reset, int t) { var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); @@ -401,7 +716,13 @@ public void SetSendEventTimestamp(int slotId, bool reset, int t) } } - /// + /// + /// Set the project name. + /// + /// Slot number (0 to 15). + /// New project name. + /// Thrown when the operation fails. + /// Calls . public void SetSongName(int slotId, string newName) { var ptr = Marshal.StringToCoTaskMemUTF8(newName); @@ -420,7 +741,12 @@ public void SetSongName(int slotId, string newName) } } - /// + /// + /// Play from the current position. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void StartPlayback(int slotId) { var ret = _lib.sv_play(slotId); @@ -430,7 +756,12 @@ public void StartPlayback(int slotId) } } - /// + /// + /// Play from the beginning (line 0). + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void StartPlaybackFromBeginning(int slotId) { var ret = _lib.sv_play_from_beginning(slotId); @@ -440,7 +771,14 @@ public void StartPlaybackFromBeginning(int slotId) } } - /// + /// + /// Stop playing. + /// First call stops playback. The sound engine continues working (e.g., reverb tail may be heard). + /// Second call resets all activity and enters standby mode. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void StopPlayback(int slotId) { var ret = _lib.sv_stop(slotId); @@ -450,7 +788,12 @@ public void StopPlayback(int slotId) } } - /// + /// + /// Unlock the slot. Must be called after . + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . public void UnlockSlot(int slotId) { var ret = _lib.sv_unlock_slot(slotId); @@ -460,7 +803,12 @@ public void UnlockSlot(int slotId) } } - /// + /// + /// Handle input ON/OFF requests to enable/disable sound card input ports (e.g., after Input module creation). + /// Call from the main thread only, where the SunVox sound stream is not locked. + /// + /// Thrown when the operation fails. + /// Calls . public void UpdateInputDevices() { var ret = _lib.sv_update_input(); @@ -470,7 +818,14 @@ public void UpdateInputDevices() } } - /// + /// + /// Set the project volume. + /// + /// Slot number (0 to 15). + /// Volume: 0 (min) to 256 (max/100%). Negative values are ignored. + /// Previous volume (0 to 256). + /// Thrown when the operation fails. + /// Calls . public int Volume(int slotId, int volume) { var ret = _lib.sv_volume(slotId, volume); diff --git a/SunSharp/Note.cs b/SunSharp/Note.cs index 2273075..29069fa 100644 --- a/SunSharp/Note.cs +++ b/SunSharp/Note.cs @@ -391,7 +391,7 @@ private static char OctaveToChar(int octave) { return (char)('0' + octave); } - return (char)('A' + octave); + return (char)('A' + (octave-10)); } /// diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index 4d42e6c..c06aeaa 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -313,7 +313,7 @@ public void Save(string path) { using (AcquireLock()) { - Library.Save(Id, path); + Library.SaveToFile(Id, path); } } @@ -420,7 +420,7 @@ public int GetCurrentLineWithTenthPart() /// public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) { - return Library.GetCurrentSignalLevel(Id, (int)channel); + return Library.GetCurrentSignalLevel(Id, channel); } #endregion playing, stopping diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs index 1f9e85f..e1d9540 100644 --- a/SunSharp/SunVox.cs +++ b/SunSharp/SunVox.cs @@ -14,7 +14,7 @@ public interface ISunVox : IDisposable bool NeedsUserCallback { get; } bool SingleThreaded { get; } OutputType? OutputType { get; } - LibraryVersion Version { get; } + SunVoxVersion Version { get; } int SampleRate { get; } AudioChannels Channels { get; } @@ -59,6 +59,8 @@ public interface ISunVox : IDisposable uint GetTicks(); uint GetTicksPerSecond(); + + string? GetLog(int length); } /// @@ -85,7 +87,7 @@ public sealed class SunVox : ISunVox public OutputType? OutputType { get; } /// - public LibraryVersion Version { get; } + public SunVoxVersion Version { get; } /// public int SampleRate { get; } @@ -317,5 +319,10 @@ public uint GetTicksPerSecond() { return Library.GetTicksPerSecond(); } + + public string? GetLog(int length) + { + return Library.GetLog(length); + } } } diff --git a/SunSharp/SunVoxException.cs b/SunSharp/SunVoxException.cs index 31074fe..a347397 100644 --- a/SunSharp/SunVoxException.cs +++ b/SunSharp/SunVoxException.cs @@ -12,9 +12,6 @@ namespace SunSharp /// public sealed class SunVoxException : Exception { - public uint? Code { get; } - public string? Method { get; } - public SunVoxException() { } @@ -30,24 +27,40 @@ public SunVoxException(string message, Exception innerException) } public SunVoxException(uint code, string? method = null) - : base(ConstructMessage(code, method, null)) + : this(ConstructMessage(code, method, null)) { - Code = code; - Method = method; } public SunVoxException(int code, string? method = null) - : base(ConstructMessage(unchecked((uint)code), method, null)) + : this(ConstructMessage(unchecked((uint)code), method, null)) { - Code = unchecked((uint)code); - Method = method; } public SunVoxException(int code, string method, string message) : base(ConstructMessage(unchecked((uint)code), method, message)) { - Code = unchecked((uint)code); - Method = method; + } + + public SunVoxException(long code, string method, string message) + : base(ConstructMessage(unchecked((ulong)code), method, message)) + { + } + + public SunVoxException(ulong code, string method, string message) + : base(ConstructMessage(code, method, message)) + { + } + + private static string ConstructMessage(ulong code, string? method, string? details) + { + if (details == null) + { + return $"Received error code {code:X} from method: {method ?? "unknown"}."; + } + else + { + return $"Received error code {code:X} from method: {method ?? "unknown"}. {details}"; + } } private static string ConstructMessage(uint code, string? method, string? details) diff --git a/SunSharp/SunVoxVersion.cs b/SunSharp/SunVoxVersion.cs new file mode 100644 index 0000000..8cd7d77 --- /dev/null +++ b/SunSharp/SunVoxVersion.cs @@ -0,0 +1,73 @@ +using System; + +namespace SunSharp +{ + /// + /// Represents the version of the SunVox library. + /// + public readonly struct SunVoxVersion : IEquatable + { + public byte Major { get; } + + public byte Minor { get; } + + public byte Minor2 { get; } + + public byte Bugfix { get; } + + public SunVoxVersion(byte major, byte minor, byte minor2, byte bugfix) + { + Major = major; + Minor = minor; + Minor2 = minor2; + Bugfix = bugfix; + } + + public static SunVoxVersion FromLibraryVersion(int code) + { + var major = (byte)((code >> 16) & 0xFF); + var minor = (byte)((code >> 8) & 0xFF); + var minor2 = (byte)(code & 0xFF); + return new SunVoxVersion(major, minor, minor2, 0); + } + + public static SunVoxVersion FromProjectBaseVersion(int code) + { + var major = (byte)((code >> 24) & 0xFF); + var minor = (byte)((code >> 16) & 0xFF); + var minor2 = (byte)((code >> 8) & 0xFF); + var bugfix = (byte)(code & 0xFF); + return new SunVoxVersion(major, minor, minor2, bugfix); + } + + public override string ToString() + { + return $"version {Major}.{Minor}.{Minor2}.{Bugfix}"; + } + + public bool Equals(SunVoxVersion other) + { + return Major == other.Major && Minor == other.Minor && Minor2 == other.Minor2 && Bugfix == other.Bugfix; + } + + public override bool Equals(object obj) + { + return obj is SunVoxVersion other && Equals(other); + } + + public override int GetHashCode() + { + return HashCode.Combine(Major, Minor, Minor2, Bugfix); + } + + public static bool operator ==(SunVoxVersion left, SunVoxVersion right) + { + return left.Equals(right); + } + + public static bool operator !=(SunVoxVersion left, SunVoxVersion right) + { + return !left.Equals(right); + } + } +} diff --git a/SunSharp/SynthModuleHandle.cs b/SunSharp/SynthModuleHandle.cs index 49cd4d8..ae9c22d 100644 --- a/SunSharp/SynthModuleHandle.cs +++ b/SunSharp/SynthModuleHandle.cs @@ -90,12 +90,12 @@ public partial interface ISynthModuleHandle : IGenericSynthModuleHandle /// /// load a file into the Vorbis Player. Supported file formats: ogg. /// - void LoadIntoVorbisPLayer(string path); + void LoadIntoVorbisPlayer(string path); /// /// load a file into the Vorbis Player. Supported file formats: ogg. /// - void LoadIntoVorbisPLayer(byte[] data); + void LoadIntoVorbisPlayer(byte[] data); int WriteCurve(int curveId, float[] buffer); @@ -324,15 +324,15 @@ public void LoadIntoMetaModule(byte[] data) } /// - public void LoadIntoVorbisPLayer(string path) + public void LoadIntoVorbisPlayer(string path) { - _lib.LoadIntoVorbisPLayer(_slotId, Id, path); + _lib.LoadIntoVorbisPlayer(_slotId, Id, path); } /// - public void LoadIntoVorbisPLayer(byte[] data) + public void LoadIntoVorbisPlayer(byte[] data) { - _lib.LoadIntoVorbisPLayer(_slotId, Id, data); + _lib.LoadIntoVorbisPlayer(_slotId, Id, data); } /// diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index a6d435e..a30a5d4 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -1,4 +1,3 @@ -using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; @@ -145,14 +144,9 @@ bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out ISynthModule /// public SynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0) { - if (!Enum.IsDefined(typeof(SynthModuleType), type)) - { - throw new ArgumentOutOfRangeException(nameof(type), "The specified ModuleType is not defined."); - } - using (Slot.AcquireLock()) { - var moduleId = _lib.CreateModule(_id, SynthModuleTypeHelper.InternalNameFromType(type), name, x, y, z); + var moduleId = _lib.CreateModule(_id, type, name, x, y, z); return new SynthModuleHandle(Slot, moduleId); } } From 4a5c5d7a1f689503c0ede5d851479da876e75a8f Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:14:44 +0100 Subject: [PATCH 14/27] Move documentation, make the friendly wrapper a struct with a shorter name; improve some API --- .gitignore | 1 + .../SunVoxLibTests/PatternTests.cs | 135 -------- SunSharp.Redistribution/LibraryLoader.cs | 2 +- SunSharp.Tests/Data/DataTests.cs | 33 -- SunSharp.Tests/Data/SongDataReaderTests.cs | 86 ----- SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs | 91 ----- ...unVoxLibNativeWrapperAudioCallbackTests.cs | 42 +-- .../SunVoxLibNativeWrapperModulesTests.cs | 144 ++++---- .../SunVoxLibNativeWrapperPatternsTests.cs | 102 +++--- .../Native/SunVoxLibNativeWrapperTests.cs | 298 ++++++++++++----- SunSharp/Data/ControllerData.cs | 30 -- SunSharp/Data/IDeepCopyable.cs | 7 - SunSharp/Data/ModuleData.cs | 39 --- SunSharp/Data/PatternData.cs | 38 --- SunSharp/Data/SongData.cs | 49 --- SunSharp/Data/SongDataReader.cs | 183 ---------- SunSharp/Native/ISunVoxLib.Modules.cs | 82 ++--- SunSharp/Native/ISunVoxLib.Patterns.cs | 48 +-- SunSharp/Native/ISunVoxLib.cs | 109 +++--- ...rapper.Modules.cs => SunVoxLib.Modules.cs} | 2 +- ...pper.Patterns.cs => SunVoxLib.Patterns.cs} | 122 +++---- ...SunVoxLibNativeWrapper.cs => SunVoxLib.cs} | 106 ++++-- SunSharp/PatternHandle.cs | 70 ++-- SunSharp/Slot.cs | 313 ++++++++---------- SunSharp/Speed.cs | 71 ++++ SunSharp/SunSharp.csproj | 4 + SunSharp/SunVox.cs | 26 +- SunSharp/SynthModuleHandle.cs | 201 ++++++----- SunSharp/Synthesizer.cs | 86 +++-- SunSharp/Timeline.cs | 38 ++- SunSharp/VirtualPattern.cs | 112 +++---- 31 files changed, 1141 insertions(+), 1529 deletions(-) delete mode 100644 SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs delete mode 100644 SunSharp.Tests/Data/DataTests.cs delete mode 100644 SunSharp.Tests/Data/SongDataReaderTests.cs delete mode 100644 SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs delete mode 100644 SunSharp/Data/ControllerData.cs delete mode 100644 SunSharp/Data/IDeepCopyable.cs delete mode 100644 SunSharp/Data/ModuleData.cs delete mode 100644 SunSharp/Data/PatternData.cs delete mode 100644 SunSharp/Data/SongData.cs delete mode 100644 SunSharp/Data/SongDataReader.cs rename SunSharp/Native/{SunVoxLibNativeWrapper.Modules.cs => SunVoxLib.Modules.cs} (99%) rename SunSharp/Native/{SunVoxLibNativeWrapper.Patterns.cs => SunVoxLib.Patterns.cs} (88%) rename SunSharp/Native/{SunVoxLibNativeWrapper.cs => SunVoxLib.cs} (91%) create mode 100644 SunSharp/Speed.cs diff --git a/.gitignore b/.gitignore index 49789ab..98288f8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .vs .editorconfig *.DotSettings.user +[Tt]est[Rr]esults diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs deleted file mode 100644 index 8c87be9..0000000 --- a/SunSharp.IntegrationTests/SunVoxLibTests/PatternTests.cs +++ /dev/null @@ -1,135 +0,0 @@ -using System.Linq; -using SunSharp.Data; - -namespace SunSharp.IntegrationTests.SunVoxLibTests; - -internal class PatternTests : BaseIntegrationTests -{ - [Test] - public void OpenSlot_ProjectStartsWithOneEmptyPattern() - { - // Should be reported as a possible bug - - const int slotId = 0; - - var lib = GetLoadedLibrary(); - - lib.OpenSlot(slotId); - lib.LockSlot(slotId); - - var data = SongDataReader.ReadSongData(lib, slotId); - - lib.UnlockSlot(slotId); - lib.CloseSlot(slotId); - - data.Patterns.Should().ContainSingle(); - data.Patterns.First().Data.Should().OnlyContain(e => e == 0); - } - - [Test] - public void PatternCreation_CloningThenReadingPropertiesWorksAsExpected() - { - const int slotId = 0; - - var firstPattern = new PatternData - { - Data = - [ - 1, 0, 0, 0, - 2, 2, 0, 0, - 0, 3, 3, 0, - 0, 0, 4, 4, - 0, 0, 0, 5 - ], - Lines = 5, - Tracks = 4, - Position = (0, 0), - Name = "One" - }; - - var secondPattern = new PatternData - { - Data = - [ - 0, 1, - 2, 0, - 0, 3, - 4, 0 - ], - Lines = 4, - Tracks = 2, - Position = (5, 4), - Name = "Another" - }; - - var lib = GetLoadedLibrary(); - - lib.OpenSlot(slotId); - lib.LockSlot(slotId); - - var onePatternId = lib.CreatePattern(slotId, firstPattern.Position.X, firstPattern.Position.Y, - firstPattern.Tracks, firstPattern.Lines, name: firstPattern.Name); - lib.SetPatternData(slotId, onePatternId, [.. firstPattern.Data], firstPattern.Tracks, firstPattern.Lines); - - var clonePatternId = lib.ClonePattern(slotId, onePatternId, 8, 0); - var anotherPatternId = lib.CreatePattern(slotId, secondPattern.Position.X, secondPattern.Position.Y, - secondPattern.Tracks, secondPattern.Lines, name: secondPattern.Name); - lib.SetPatternData(slotId, anotherPatternId, [.. secondPattern.Data], secondPattern.Tracks, - secondPattern.Lines); - - var data = SongDataReader.ReadSongData(lib, slotId); - - lib.RemovePattern(slotId, onePatternId); - - var dataAfterRemoval = SongDataReader.ReadSongData(lib, slotId); - - lib.UnlockSlot(slotId); - lib.CloseSlot(slotId); - - // pattern has expected data - data.Patterns.FirstOrDefault(p => p.Id == onePatternId) - .Should() - .BeEquivalentTo(firstPattern, options => options - .Excluding(p => p.Id) - .Excluding(p => p.IsDestructive) - .Excluding(p => p.IsLinear) - .Excluding(p => p.IsMuted) - .Excluding(p => p.HasDynamicTempo)); - - // clone has expected data - data.Patterns.FirstOrDefault(p => p.Id == clonePatternId) - .Should() - .BeEquivalentTo(firstPattern, options => options - .Excluding(p => p.Id) - .Excluding(p => p.IsDestructive) - .Excluding(p => p.IsLinear) - .Excluding(p => p.IsMuted) - .Excluding(p => p.HasDynamicTempo) - .Excluding(p => p.Position)); - data.Patterns.Should() - .Contain(p => p.Position.X == 8 && - p.Position.Y == 0); - - // clone doesn't exist - dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == clonePatternId).Should().Be(null); - - // the other pattern has expected data in both cases - data.Patterns.FirstOrDefault(p => p.Id == anotherPatternId) - .Should() - .BeEquivalentTo(secondPattern, options => options - .Excluding(p => p.Id) - .Excluding(p => p.IsDestructive) - .Excluding(p => p.IsLinear) - .Excluding(p => p.IsMuted) - .Excluding(p => p.HasDynamicTempo)); - - dataAfterRemoval.Patterns.FirstOrDefault(p => p.Id == anotherPatternId) - .Should() - .BeEquivalentTo(secondPattern, options => options - .Excluding(p => p.Id) - .Excluding(p => p.IsDestructive) - .Excluding(p => p.IsLinear) - .Excluding(p => p.IsMuted) - .Excluding(p => p.HasDynamicTempo)); - } -} diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index 59d2918..c2538cb 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -100,7 +100,7 @@ public static ISunVoxLib GetLibraryInstance() throw new InvalidOperationException("The library was not loaded yet."); } - return _lib ??= new SunVoxLibNativeWrapper(new SunVoxLibWithLogger(_proxy, new ConsoleLogger())); + return _lib ??= new SunVoxLib(new SunVoxLibWithLogger(_proxy, new ConsoleLogger())); } } diff --git a/SunSharp.Tests/Data/DataTests.cs b/SunSharp.Tests/Data/DataTests.cs deleted file mode 100644 index 28bbf32..0000000 --- a/SunSharp.Tests/Data/DataTests.cs +++ /dev/null @@ -1,33 +0,0 @@ -using SunSharp.Data; - -namespace SunSharp.Tests.Data; - -public class DataTests -{ - [Test, AutoData] - public void SongData_DeepCopy_ShouldBeEquivalent(SongData songData, SongData anotherSongData) - { - var clone = songData.DeepCopy(); - - clone.Should().BeEquivalentTo(songData); - clone.Should().NotBeEquivalentTo(anotherSongData); - } - - [Test, AutoData] - public void PatternData_DeepCopy_ShouldBeEquivalent(PatternData patternData, PatternData anotherPatternData) - { - var clone = patternData.DeepCopy(); - - clone.Should().BeEquivalentTo(patternData); - clone.Should().NotBeEquivalentTo(anotherPatternData); - } - - [Test, AutoData] - public void ModuleData_DeepCopy_ShouldBeEquivalent(ModuleData moduleData, ModuleData anotherModuleData) - { - var clone = moduleData.DeepCopy(); - - clone.Should().BeEquivalentTo(moduleData); - clone.Should().NotBeEquivalentTo(anotherModuleData); - } -} diff --git a/SunSharp.Tests/Data/SongDataReaderTests.cs b/SunSharp.Tests/Data/SongDataReaderTests.cs deleted file mode 100644 index 6a49794..0000000 --- a/SunSharp.Tests/Data/SongDataReaderTests.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System.Linq; -using SunSharp.Data; -using SunSharp.Tests.Mocks; - -namespace SunSharp.Tests.Data; - -public class SongDataReaderTests -{ - private static ModuleData CreateValidModuleData(ModuleData moduleData) - { - for (var i = 0; i < moduleData.Controllers.Count; i++) - { - moduleData.Controllers.ElementAt(i).Id = i; - } - - return moduleData; - } - - private static PatternData CreateValidPatternData(PatternData patternData) - { - patternData.IsDestructive = patternData.Data.Any(static e => e.Effect.IsDestructive()); - patternData.IsLinear = patternData.Data.All(static e => !e.Effect.IsNonLinear()); - patternData.HasDynamicTempo = patternData.Data.Any(static e => e.Effect.ChangesTempo()); - patternData.Lines = patternData.Data.Count; - patternData.Tracks = 1; - return patternData; - } - - private static SongData CreateValidSongData(SongData songData) - { - foreach (var pattern in songData.Patterns) - { - pattern.IsDestructive = pattern.Data.Any(static e => e.Effect.IsDestructive()); - pattern.IsLinear = pattern.Data.All(static e => !e.Effect.IsNonLinear()); - pattern.HasDynamicTempo = pattern.Data.Any(static e => e.Effect.ChangesTempo()); - pattern.Lines = pattern.Data.Count; - pattern.Tracks = 1; - } - - foreach (var module in songData.Modules) - { - for (var i = 0; i < module.Controllers.Count; i++) - { - module.Controllers.ElementAt(i).Id = i; - } - } - - songData.FirstLine = songData.Patterns.Min(static p => p.Position.X); - songData.LastLine = songData.Patterns.Max(static p => p.Position.X + p.Lines); - songData.Lines = (uint)(songData.LastLine - songData.FirstLine); - return songData; - } - - [Test, AutoData] - public void ReadSongData_ShouldReturnEquivalentDataAsPutInMock(SongData songData) - { - var validSongData = CreateValidSongData(songData); - var libraryMock = SunVoxLibMockBuilder.BuildMock() - .WithSongData(0, validSongData) - .Build(); - var data = SongDataReader.ReadSongData(libraryMock, 0); - data.Should().BeEquivalentTo(validSongData); - } - - [Test, AutoData] - public void ReadModule_ShouldReturnEquivalentDataAsPutInMock(ModuleData moduleData) - { - var validModuleData = CreateValidModuleData(moduleData); - var libraryMock = SunVoxLibMockBuilder.BuildMock() - .WithModuleData(0, [validModuleData]) - .Build(); - var data = SongDataReader.ReadModule(libraryMock, 0, validModuleData.Id); - data.Should().BeEquivalentTo(validModuleData); - } - - [Test, AutoData] - public void ReadPattern_ShouldReturnEquivalentDataAsPutInMock(PatternData patternData) - { - var validPatternData = CreateValidPatternData(patternData); - var libraryMock = SunVoxLibMockBuilder.BuildMock() - .WithPatternData(0, [validPatternData]) - .Build(); - var data = SongDataReader.ReadPattern(libraryMock, 0, validPatternData.Id); - data.Should().BeEquivalentTo(validPatternData); - } -} diff --git a/SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs b/SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs deleted file mode 100644 index ffc4e1c..0000000 --- a/SunSharp.Tests/Mocks/SunVoxLibMockBuilder.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System.Linq; -using SunSharp.Data; -using SunSharp.Native; - -namespace SunSharp.Tests.Mocks; - -public class SunVoxLibMockBuilder -{ - private readonly ISunVoxLib _mock = Substitute.For(); - - public static SunVoxLibMockBuilder BuildMock() - { - return new SunVoxLibMockBuilder(); - } - - public SunVoxLibMockBuilder WithSongData(int slotId, SongData songData) - { - _mock.GetSongName(slotId).Returns(songData.Name); - _mock.GetSongBpm(slotId).Returns(songData.BPM); - _mock.GetSongTpl(slotId).Returns(songData.TPL); - _mock.GetCurrentLine(slotId).Returns(songData.CurrentLine); - _mock.GetCurrentLineWithTenthPart(slotId).Returns(songData.CurrentLine * 10); - _mock.GetSongLengthInLines(slotId).Returns(songData.Lines); - - WithModuleData(slotId, [.. songData.Modules]); - - WithPatternData(slotId, [.. songData.Patterns]); - - return this; - } - - public SunVoxLibMockBuilder WithPatternData(int slotId, PatternData[] patternData) - { - _mock.GetPatternExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); - _mock.GetUpperPatternCount(slotId).Returns(patternData.Max(static p => p.Id) + 1); - - foreach (var pattern in patternData) - { - _mock.GetPatternExists(slotId, pattern.Id).Returns(true); - _mock.GetPatternName(slotId, pattern.Id).Returns(pattern.Name); - _mock.GetPatternPosition(slotId, pattern.Id).Returns(pattern.Position); - _mock.GetPatternX(slotId, pattern.Id).Returns(pattern.Position.X); - _mock.GetPatternY(slotId, pattern.Id).Returns(pattern.Position.Y); - _mock.GetPatternData(slotId, pattern.Id).Returns((pattern.Data.ToArray(), pattern.Tracks, pattern.Lines)); - _mock.GetPatternMuted(slotId, pattern.Id).Returns(pattern.IsMuted); - } - - return this; - } - - public SunVoxLibMockBuilder WithModuleData(int slotId, ModuleData[] moduleData) - { - _mock.GetModuleExists(Arg.Any(), Arg.Any()).ReturnsForAnyArgs(false); - _mock.GetUpperModuleCount(slotId).Returns(moduleData.Max(static m => m.Id) + 1); - - foreach (var module in moduleData) - { - _mock.GetModuleExists(slotId, module.Id).Returns(true); - _mock.GetModuleName(slotId, module.Id).Returns(module.Name); - _mock.GetModuleColor(slotId, module.Id).Returns(module.Color); - _mock.GetModuleFineTune(slotId, module.Id).Returns(module.FineTune); - _mock.GetModulePosition(slotId, module.Id).Returns(module.Position); - _mock.GetModuleFlags(slotId, module.Id).Returns(new ModuleFlags(module.Flags)); - _mock.GetModuleType(slotId, module.Id).Returns(module.Type); - _mock.GetModuleInputs(slotId, module.Id).Returns([.. module.Inputs]); - _mock.GetModuleOutputs(slotId, module.Id).Returns([.. module.Outputs]); - - _mock.GetModuleControllerCount(slotId, module.Id).Returns(module.Controllers.Count); - foreach (var controller in module.Controllers) - { - _mock.GetModuleControllerName(slotId, module.Id, controller.Id).Returns(controller.Name); - _mock.GetModuleControllerGroup(slotId, module.Id, controller.Id).Returns(controller.Group); - _mock.GetModuleControllerValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) - .Returns(controller.Value); - _mock.GetModuleControllerMaxValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) - .Returns(controller.MaxValue); - _mock.GetModuleControllerMinValue(slotId, module.Id, controller.Id, ValueScalingMode.Real) - .Returns(controller.MinValue); - _mock.GetModuleControllerType(slotId, module.Id, controller.Id).Returns(controller.ControllerType); - _mock.GetModuleControllerOffset(slotId, module.Id, controller.Id).Returns(controller.Offset); - } - } - - return this; - } - - public ISunVoxLib Build() - { - return _mock; - } -} diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs index 9e4b730..084b80e 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs @@ -15,7 +15,7 @@ public void AudioCallback_WithOutputShortInStereoInputShortInStereo_ShouldCallEx var library = Substitute.For(); var outputBuffer = new short[256]; var inputBuffer = new short[256]; - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -49,7 +49,7 @@ public void AudioCallback_WithOutputShortInStereoInputFloatInStereo_ShouldCallEx var outputBuffer = new short[256]; var inputBuffer = new float[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -83,7 +83,7 @@ public void AudioCallback_WithOutputFloatInStereoInputShortInStereo_ShouldCallEx var outputBuffer = new float[256]; var inputBuffer = new short[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -116,7 +116,7 @@ public void AudioCallback_WithFloatInMono_ShouldCallExpectedMethodAndReturnBoole { var buffer = new float[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); var copiedBuffer = Array.Empty(); @@ -141,7 +141,7 @@ public void AudioCallback_WithFloatInMono_ShouldCallExpectedMethodAndReturnBoole public void AudioCallback_WithFloatInMonoOnReturnCodeNotOneOrZero_ShouldThrow(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); // when @@ -160,7 +160,7 @@ public void AudioCallback_WithFloatInStereo_ShouldCallExpectedMethodWithHalfFram { var buffer = new float[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); var copiedBuffer = Array.Empty(); @@ -185,7 +185,7 @@ public void AudioCallback_WithFloatInStereo_ShouldCallExpectedMethodWithHalfFram public void AudioCallback_WithFloatInStereoOnBufferSizeNotMultipleOfTwo_ShouldThrow(float[] buffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw().WithMessage("Buffer size is not a multiple of two."); @@ -198,7 +198,7 @@ public void AudioCallback_WithFloatInStereoOnReturnCodeNotOneOrZero_ShouldThrow( { var buffer = new float[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); // when @@ -216,7 +216,7 @@ public void AudioCallback_WithShortInMono_ShouldCallExpectedMethodAndReturnBoole { var buffer = new short[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); var copiedBuffer = Array.Empty(); @@ -242,7 +242,7 @@ public void AudioCallback_WithShortInMonoOnReturnCodeNotOneOrZero_ShouldThrow(in { var buffer = new short[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); // when @@ -261,7 +261,7 @@ public void AudioCallback_WithShortInStereo_ShouldCallExpectedMethodWithHalfFram { var buffer = new short[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); var copiedBuffer = Array.Empty(); @@ -286,7 +286,7 @@ public void AudioCallback_WithShortInStereo_ShouldCallExpectedMethodWithHalfFram public void AudioCallback_WithShortInStereoOnBufferSizeNotMultipleOfTwo_ShouldThrow(short[] buffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when wrapper.Invoking(w => w.AudioCallback(buffer, AudioChannels.Stereo, latency, outTime)).Should().Throw().WithMessage("Buffer size is not a multiple of two."); @@ -299,7 +299,7 @@ public void AudioCallback_WithShortInStereoOnReturnCodeNotOneOrZero_ShouldThrow( { var buffer = new short[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); // when @@ -317,7 +317,7 @@ public void AudioCallback_WithOutputFloatInMonoInputFloatInMono_ShouldCallExpect bool expectedValue, float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -347,7 +347,7 @@ public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnBufferSizeMisma var outputBuffer = new float[10]; var inputBuffer = new float[11]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(1); // when @@ -361,7 +361,7 @@ public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnBufferSizeMisma public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnReturnCodeNotOneOrZero_ShouldThrow(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); // when @@ -380,7 +380,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInMono_ShouldCallExpe var outputBuffer = new float[256]; var inputBuffer = new float[128]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -408,7 +408,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInMono_ShouldCallExpe public void AudioCallback_WithOutputFloatInStereoInputFloatInMonoOnBufferSizeMismatch_ShouldThrow(float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(1); @@ -430,7 +430,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInStereo_ShouldCallEx var outputBuffer = new float[256]; var inputBuffer = new float[256]; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(expectedValue ? 1 : 0); @@ -458,7 +458,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInStereo_ShouldCallEx public void AudioCallback_WithOutputFloatInStereoInputFloatInStereoOnInputBufferSizeNotDivisibleByTwo_ShouldThrow(int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // Use provided parameters, but ensure inputBuffer is not divisible by two and outputBuffer is divisible by two var outputBuffer = new float[256]; var inputBuffer = new float[255]; @@ -474,7 +474,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInStereoOnInputBuffer public void AudioCallback_WithOutputFloatInStereoInputFloatInStereoOnOutputBufferSizeNotDivisibleByTwo_ShouldThrow(int latency, uint outTime) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // Use provided parameters, but ensure outputBuffer is not divisible by two and inputBuffer is divisible by two var outputBuffer = new float[31]; var inputBuffer = new float[32]; diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index f48adfb..d6595aa 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -17,7 +17,7 @@ public class SunVoxLibNativeWrapperModulesTests public void ConnectModule_Default_ShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -31,7 +31,7 @@ public void ConnectModule_Default_ShouldCallExpectedMethod(int slotId, int sourc public void ConnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, int destination) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - then @@ -48,7 +48,7 @@ public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, strin var receivedModuleType = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(newModuleId); library.When(static l => l.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -71,7 +71,7 @@ public void CreateModule_Default_ShouldCallExpectedMethod(int newModuleId, strin public void CreateModule_NegativeReturnedValue_ShouldThrow(string moduleName, SynthModuleType moduleType, int slotId, int x, int y, int z) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); @@ -86,7 +86,7 @@ public void CreateModule_NegativeReturnedValue_ShouldThrow(string moduleName, Sy public void DisconnectModule_Default_ShouldCallExpectedMethod(int slotId, int source, int destination) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -100,7 +100,7 @@ public void DisconnectModule_Default_ShouldCallExpectedMethod(int slotId, int so public void DisconnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, int destination) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - then @@ -114,7 +114,7 @@ public void DisconnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int sourc public void FindModule_Default_ShouldCallExpectedMethod(int foundModuleId, string moduleName, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(foundModuleId); var receivedString = string.Empty; library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) @@ -133,7 +133,7 @@ public void FindModule_Default_ShouldCallExpectedMethod(int foundModuleId, strin public void FindModule_ModuleNotFound_ShouldReturnNull(string moduleName, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-1); var receivedString = string.Empty; library.When(static l => l.sv_find_module(Arg.Any(), Arg.Any())) @@ -152,7 +152,7 @@ public void FindModule_ModuleNotFound_ShouldReturnNull(string moduleName, int sl public void FindModule_UnexpectedValue_ShouldThrow(string moduleName, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_module(Arg.Any(), Arg.Any()).Returns(-2); // when @@ -168,7 +168,7 @@ public void GetModuleColor_Default_ShouldReturnValue(byte r, byte g, byte b, int var code = r | (g << 8) | (b << 16); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); // when @@ -183,7 +183,7 @@ public void GetModuleColor_Default_ShouldReturnValue(byte r, byte g, byte b, int public void GetModuleControllerCount_Default_ShouldReturnValue(int moduleId, int slotId, int moduleCount) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(moduleCount); // when @@ -198,7 +198,7 @@ public void GetModuleControllerCount_Default_ShouldReturnValue(int moduleId, int public void GetModuleControllerCount_NegativeValue_ShouldThrow(int slotId, int moduleId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_module_ctls(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -212,7 +212,7 @@ public void GetModuleControllerCount_NegativeValue_ShouldThrow(int slotId, int m public void GetModuleControllerGroup_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_group(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); // when @@ -227,7 +227,7 @@ public void GetModuleControllerGroup_Default_ShouldReturnValue(int moduleId, int public void GetModuleControllerMaxValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_max(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -243,7 +243,7 @@ public void GetModuleControllerMaxValue_Default_ShouldReturnValue(int moduleId, public void GetModuleControllerMinValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_min(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -259,7 +259,7 @@ public void GetModuleControllerMinValue_Default_ShouldReturnValue(int moduleId, public void GetModuleControllerName_NullPointer_ShouldReturnNull(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when @@ -274,7 +274,7 @@ public void GetModuleControllerName_NullPointer_ShouldReturnNull(int moduleId, i public void GetModuleControllerName_Default_ShouldReturnString(string controllerName, int moduleId, int controllerId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var stringPointer = IntPtr.Zero; string? receivedControllerName; @@ -300,7 +300,7 @@ public void GetModuleControllerName_Default_ShouldReturnString(string controller public void GetModuleControllerOffset_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_offset(Arg.Any(), Arg.Any(), Arg.Any()).Returns(returnedValue); // when @@ -315,7 +315,7 @@ public void GetModuleControllerOffset_Default_ShouldReturnValue(int moduleId, in public void GetModuleControllerType_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, ControllerType returnedValue) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns((int)returnedValue); // when @@ -330,7 +330,7 @@ public void GetModuleControllerType_Default_ShouldReturnValue(int moduleId, int public void GetModuleControllerType_UnexpectedValue_ShouldThrow(int moduleId, int controllerId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_type(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -344,7 +344,7 @@ public void GetModuleControllerType_UnexpectedValue_ShouldThrow(int moduleId, in public void GetModuleControllerValue_Default_ShouldReturnValue(int moduleId, int controllerId, int slotId, int returnedValue, ValueScalingMode scalingMode) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(returnedValue); @@ -363,7 +363,7 @@ public void GetModuleExists_Default_ShouldReturnValue(bool exists) var fixture = new Fixture(); var flagsValue = (uint)(ModuleFlags.SV_MODULE_FLAG_EXISTS * (exists ? 1 : 0)); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var moduleId = fixture.Create(); var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); @@ -380,7 +380,7 @@ public void GetModuleExists_Default_ShouldReturnValue(bool exists) public void GetModuleFineTune_Default_ShouldReturnValue(FineTunePair moduleFineTune, int moduleId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_finetune(Arg.Any(), Arg.Any()).Returns(moduleFineTune.RawValue); // when @@ -395,7 +395,7 @@ public void GetModuleFineTune_Default_ShouldReturnValue(FineTunePair moduleFineT public void GetModuleFlags_Default_ShouldReturnValue(uint flagsValue, int moduleId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -413,7 +413,7 @@ public void GetModuleInputs_Default_ShouldReturnValue(int[] nativeData, int[] ex var flagsValue = unchecked((uint)((nativeData.Length << ModuleFlags.SV_MODULE_INPUTS_OFF) | ModuleFlags.SV_MODULE_FLAG_EXISTS)); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var moduleId = fixture.Create(); var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); @@ -438,7 +438,7 @@ public void GetModuleInputs_ModuleDoesNotExist_ShouldSkipCalls() new ModuleFlags(flagsValue).Exists.Should().BeFalse(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var moduleId = fixture.Create(); var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); @@ -460,7 +460,7 @@ public void GetModuleInputs_ZeroInputs_ShouldSkipCalls() new ModuleFlags(flagsValue).InputUpperCount.Should().Be(0); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var moduleId = fixture.Create(); var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); @@ -478,7 +478,7 @@ public void GetModuleInputs_ZeroInputs_ShouldSkipCalls() public void GetModuleName_NullPointer_ShouldReturnNull(int moduleId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when @@ -492,7 +492,7 @@ public void GetModuleName_NullPointer_ShouldReturnNull(int moduleId, int slotId) public void GetModuleName_Default_ShouldReturnString(int moduleId, int slotId, string moduleName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var stringPointer = IntPtr.Zero; string? receivedModuleName; @@ -521,7 +521,7 @@ public void GetModuleOutputs_Default_ShouldReturnValue(int[] nativeData, int[] e var flagsValue = (uint)((nativeData.Length << ModuleFlags.SV_MODULE_OUTPUTS_OFF) | ModuleFlags.SV_MODULE_FLAG_EXISTS); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var moduleId = fixture.Create(); var slotId = fixture.Create(); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); @@ -545,7 +545,7 @@ public void GetModuleOutputs_ModuleDoesNotExist_ShouldSkipCalls(int moduleId, in new ModuleFlags(flagsValue).Exists.Should().BeFalse(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -564,7 +564,7 @@ public void GetModuleOutputs_ZeroOutputs_ShouldSkipCalls(int moduleId, int slotI new ModuleFlags(flagsValue).InputUpperCount.Should().Be(0); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_flags(Arg.Any(), Arg.Any()).Returns(flagsValue); // when @@ -580,7 +580,7 @@ public void GetModuleOutputs_ZeroOutputs_ShouldSkipCalls(int moduleId, int slotI public void GetModulePosition_Default_ShouldReturnValue(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_xy(Arg.Any(), Arg.Any()).Returns(UtilityHelper.PackTwoSignedShorts(x, y)); // when var value = wrapper.GetModulePosition(slotId, moduleId); @@ -594,7 +594,7 @@ public void GetModulePosition_Default_ShouldReturnValue(int moduleId, int slotId public void GetModuleType_NullPointer_ShouldReturnNull(int moduleId, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_type(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when @@ -608,7 +608,7 @@ public void GetModuleType_NullPointer_ShouldReturnNull(int moduleId, int slotId) public void GetModuleType_Default_ShouldReturnString(int moduleId, int slotId, string moduleType) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var stringPointer = IntPtr.Zero; string? receivedModuleType; @@ -634,7 +634,7 @@ public void GetModuleType_Default_ShouldReturnString(int moduleId, int slotId, s public void GetUpperModuleCount_Default_ShouldReturnValue(int slotId, int moduleCount) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_modules(Arg.Any()).Returns(moduleCount); // when @@ -649,7 +649,7 @@ public void GetUpperModuleCount_Default_ShouldReturnValue(int slotId, int module public void GetUpperModuleCount_NegativeValue_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_modules(Arg.Any()).Returns(-1); // when @@ -665,7 +665,7 @@ public void LoadIntoMetaModuleFromMemory_Default_ShouldCallExpectedMethod(int sl var receivedBuffer = Array.Empty(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); library.When(static l => @@ -688,7 +688,7 @@ public void LoadIntoMetaModuleFromMemory_Default_ShouldCallExpectedMethod(int sl public void LoadIntoMetaModuleFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, byte[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -705,7 +705,7 @@ public void LoadIntoMetaModule_Default_ShouldCallExpectedMethod(int slotId, int var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.When(static l => l.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -721,7 +721,7 @@ public void LoadIntoMetaModule_Default_ShouldCallExpectedMethod(int slotId, int public void LoadIntoMetaModule_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_metamodule_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -737,7 +737,7 @@ public void LoadIntoVorbisPlayerFromMemory_Default_ShouldCallExpectedMethod(int var receivedBuffer = Array.Empty(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_metamodule_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); library.When(static l => @@ -760,7 +760,7 @@ public void LoadIntoVorbisPlayerFromMemory_Default_ShouldCallExpectedMethod(int public void LoadIntoVorbisPlayerFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, byte[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_vplayer_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -777,7 +777,7 @@ public void LoadIntoVorbisPlayer_Default_ShouldCallExpectedMethod(int slotId, in var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.When(static l => l.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -793,7 +793,7 @@ public void LoadIntoVorbisPlayer_Default_ShouldCallExpectedMethod(int slotId, in public void LoadIntoVorbisPlayer_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_vplayer_load(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -809,7 +809,7 @@ public void LoadModuleFromMemory_Default_ShouldCallExpectedMethod(int x, int y, var receivedBuffer = Array.Empty(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(newModuleId); library.When(static l => l.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), @@ -831,7 +831,7 @@ public void LoadModuleFromMemory_Default_ShouldCallExpectedMethod(int x, int y, public void LoadModuleFromMemory_NonZeroReturnCode_ShouldThrow(int x, int y, int z, int slotId, byte[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load_module_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); @@ -848,7 +848,7 @@ public void LoadModule_Default_ShouldCallExpectedMethod(int x, int y, int z, int var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(newModuleId); library.When(static l => @@ -866,7 +866,7 @@ public void LoadModule_Default_ShouldCallExpectedMethod(int x, int y, int z, int public void LoadModule_NonZeroReturnCode_ShouldThrow(int x, int y, int z, int slotId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load_module(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -883,7 +883,7 @@ public void LoadSamplerSampleFromMemory_Default_ShouldCallExpectedMethod(int slo var receivedBuffer = Array.Empty(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -906,7 +906,7 @@ public void LoadSamplerSampleFromMemory_Default_ShouldCallExpectedMethod(int slo public void LoadSamplerSampleFromMemory_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int sampleSlot, byte[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_sampler_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -925,7 +925,7 @@ public void LoadSamplerSample_Default_ShouldCallExpectedMethod(int slotId, int m var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.When(static l => l.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -939,7 +939,7 @@ public void LoadSamplerSample_Default_ShouldCallExpectedMethod(int slotId, int m public void LoadSamplerSample_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int sampleSlot, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_sampler_load(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -955,7 +955,7 @@ public void ReadModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int mod var samplesWritten = buffer.Length; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(samplesWritten); library.When(static l => l.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -976,7 +976,7 @@ public void ReadModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int mod public void ReadModuleCurve_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int curveId, float[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); @@ -993,7 +993,7 @@ public void ReadModuleScope_Default_ShouldCallExpectedMethod(int moduleId, int s var receivedBuffer = Array.Empty(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_scope2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(readSamples); @@ -1020,7 +1020,7 @@ public void ReadModuleScope_Default_ShouldCallExpectedMethod(int moduleId, int s public void RemoveModule_Default_ShouldCallExpectedMethod(int slotId, int moduleId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(0); // when @@ -1034,7 +1034,7 @@ public void RemoveModule_Default_ShouldCallExpectedMethod(int slotId, int module public void RemoveModule_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_remove_module(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1050,7 +1050,7 @@ public void SetModuleColor_Default_ShouldCallExpectedMethod(byte r, byte g, byte var code = r | (g << 8) | (b << 16); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_module_color(Arg.Any(), Arg.Any()).Returns(code); // when @@ -1066,7 +1066,7 @@ public void SetModuleColor_NonZeroReturnCode_ShouldThrow(byte r, byte g, byte b, var code = r | (g << 8) | (b << 16); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_color(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1080,7 +1080,7 @@ public void SetModuleColor_NonZeroReturnCode_ShouldThrow(byte r, byte g, byte b, public void SetModuleControllerValue_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -1095,7 +1095,7 @@ public void SetModuleControllerValue_Default_ShouldCallExpectedMethod(int slotId public void SetModuleControllerValue_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int controllerId, int valueToSet, ValueScalingMode scalingMode) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_ctl_value(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -1110,7 +1110,7 @@ public void SetModuleControllerValue_NonZeroReturnCode_ShouldThrow(int slotId, i public void SetModuleFineTune_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -1124,7 +1124,7 @@ public void SetModuleFineTune_Default_ShouldCallExpectedMethod(int slotId, int m public void SetModuleFineTune_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_finetune(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1140,7 +1140,7 @@ public void SetModuleName_Default_ShouldCallExpectedMethod(int slotId, int modul var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.When(static l => l.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -1156,7 +1156,7 @@ public void SetModuleName_Default_ShouldCallExpectedMethod(int slotId, int modul public void SetModuleName_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, string nameToSet) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1170,7 +1170,7 @@ public void SetModuleName_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId public void SetModulePosition_Default_ShouldCallExpectedMethod(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when wrapper.SetModulePosition(slotId, moduleId, x, y); @@ -1183,7 +1183,7 @@ public void SetModulePosition_Default_ShouldCallExpectedMethod(int moduleId, int public void SetModulePosition_NonZeroReturnCode_ShouldThrow(int moduleId, int slotId, short x, short y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1197,7 +1197,7 @@ public void SetModulePosition_NonZeroReturnCode_ShouldThrow(int moduleId, int sl public void SetModuleRelativeNote_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -1211,7 +1211,7 @@ public void SetModuleRelativeNote_Default_ShouldCallExpectedMethod(int slotId, i public void SetModuleRelativeNote_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int fineTune) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_module_relnote(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -1227,7 +1227,7 @@ public void WriteModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int mo var samplesWritten = buffer.Length; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(samplesWritten); library.When(static l => l.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), @@ -1248,7 +1248,7 @@ public void WriteModuleCurve_Default_ShouldCallExpectedMethod(int slotId, int mo public void WriteModuleCurve_NonZeroReturnCode_ShouldThrow(int slotId, int moduleId, int curveId, float[] buffer) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_module_curve(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs index 05a88a5..74f7689 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs @@ -465,7 +465,7 @@ public class SunVoxLibNativeWrapperPatternsTests public void ClonePattern_ShouldThrow_WhenNegativeValueReturned(int slotId, int originalPatternId, int x, int y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -481,7 +481,7 @@ public void ClonePattern_ShouldThrow_WhenNegativeValueReturned(int slotId, int o public void ClonePattern_ShouldCallExpectedMethod(int slotId, int originalPatternId, int x, int y, int newPatternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(newPatternId); @@ -496,7 +496,7 @@ public void ClonePattern_ShouldCallExpectedMethod(int slotId, int originalPatter public void CreatePattern_ShouldThrow_WhenNegativeValueReturned(int slotId, int x, int y, int tracks, int lines, int iconSeed, string patternName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -513,7 +513,7 @@ public void CreatePattern_ShouldCallExpectedMethod(int slotId, int x, int y, int { var receivedPatternName = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(newPatternId); @@ -534,7 +534,7 @@ public void CreatePattern_ShouldCallExpectedMethod(int slotId, int x, int y, int public void CreatePattern_WithDefaultValues_ShouldCallExpectedMethod(int slotId, int x, int y, int tracks, int lines, int newPatternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_new_pattern(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(newPatternId); @@ -552,7 +552,7 @@ public void FindPattern_ShouldCallExpectedMethod(int slotId, string patternName, { var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(foundPatternId); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -571,7 +571,7 @@ public void FindPattern_ShouldReturnNull_WhenPatternNotFound(int slotId, string { var receivedString = string.Empty; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-1); library.When(static l => l.sv_find_pattern(Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -589,7 +589,7 @@ public void FindPattern_ShouldReturnNull_WhenPatternNotFound(int slotId, string public void FindPattern_ShouldThrow_WhenReturnCodeLessThanNegativeOne(int slotId, string patternName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_find_pattern(Arg.Any(), Arg.Any()).Returns(-2); // when @@ -604,7 +604,7 @@ public void FindPattern_ShouldThrow_WhenReturnCodeLessThanNegativeOne(int slotId public void GetPatternEventValue_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, Column column) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -619,7 +619,7 @@ public void GetPatternEventValue_ShouldCallExpectedMethod(int slotId, int patter public void GetPatternEventValue_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, Column column) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -639,7 +639,7 @@ public void GetPatternExists_ShouldReturnValue(bool exists) var slotId = fixture.Create(); var patternId = fixture.Create(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(exists ? 1 : 0); // when @@ -654,7 +654,7 @@ public void GetPatternExists_ShouldReturnValue(bool exists) public void GetPatternExists_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -669,7 +669,7 @@ public void GetPatternExists_ShouldThrow_WhenErrorReturnCode(int slotId, int pat public void GetPatternLines_ShouldReturnValue(int slotId, int patternId, int lines) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); // when @@ -684,7 +684,7 @@ public void GetPatternLines_ShouldReturnValue(int slotId, int patternId, int lin public void GetPatternLines_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -699,7 +699,7 @@ public void GetPatternLines_ShouldThrow_WhenErrorReturnCode(int slotId, int patt public void GetPatternName_ShouldReturnNull_WhenNullPointer(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_name(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); // when @@ -713,7 +713,7 @@ public void GetPatternName_ShouldReturnNull_WhenNullPointer(int slotId, int patt public void GetPatternName_ShouldReturnString(int slotId, int patternId, string patternName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var stringPointer = Marshal.StringToHGlobalAnsi(patternName); string? receivedPatternName; @@ -738,7 +738,7 @@ public void GetPatternName_ShouldReturnString(int slotId, int patternId, string public void GetPatternPosition_ShouldReturnValue(int slotId, int patternId, int x, int y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); library.sv_get_pattern_y(Arg.Any(), Arg.Any()).Returns(y); @@ -755,7 +755,7 @@ public void GetPatternPosition_ShouldReturnValue(int slotId, int patternId, int public void GetPatternTracks_ShouldReturnValue(int slotId, int patternId, int tracks) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); // when @@ -770,7 +770,7 @@ public void GetPatternTracks_ShouldReturnValue(int slotId, int patternId, int tr public void GetPatternTracks_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -785,7 +785,7 @@ public void GetPatternTracks_ShouldThrow_WhenErrorReturnCode(int slotId, int pat public void GetPatternX_ShouldReturnValue(int slotId, int patternId, int x) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_x(Arg.Any(), Arg.Any()).Returns(x); // when @@ -800,7 +800,7 @@ public void GetPatternX_ShouldReturnValue(int slotId, int patternId, int x) public void GetPatternY_ShouldReturnValue(int slotId, int patternId, int y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_y(Arg.Any(), Arg.Any()).Returns(y); // when @@ -815,7 +815,7 @@ public void GetPatternY_ShouldReturnValue(int slotId, int patternId, int y) public void GetUpperPatternCount_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_patterns(Arg.Any()).Returns(0); // when @@ -829,7 +829,7 @@ public void GetUpperPatternCount_ShouldCallExpectedMethod(int slotId) public void GetUpperPatternCount_ShouldThrow_WhenNegativeReturnCode(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_number_of_patterns(Arg.Any()).Returns(-1); // when @@ -844,7 +844,7 @@ public void GetUpperPatternCount_ShouldThrow_WhenNegativeReturnCode(int slotId) public void RemovePattern_ShouldCallExpectedMethod(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(0); // when @@ -858,7 +858,7 @@ public void RemovePattern_ShouldCallExpectedMethod(int slotId, int patternId) public void RemovePattern_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_remove_pattern(Arg.Any(), Arg.Any()).Returns(-1); // when @@ -873,7 +873,7 @@ public void RemovePattern_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patt public void SetPatternName_ShouldCallExpectedMethod(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var receivedString = string.Empty; library.When(static l => l.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any())) .Do(callInfo => receivedString = Marshal.PtrToStringUTF8(callInfo.Arg())); @@ -890,7 +890,7 @@ public void SetPatternName_ShouldCallExpectedMethod(int slotId, int patternId, s public void SetPatternName_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, string nameToSet) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_name(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -904,7 +904,7 @@ public void SetPatternName_ShouldThrow_WhenNonZeroReturnCode(int slotId, int pat public void SetPatternPosition_ShouldCallExpectedMethod(int slotId, int patternId, int x, int y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -918,7 +918,7 @@ public void SetPatternPosition_ShouldCallExpectedMethod(int slotId, int patternI public void SetPatternPosition_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId, int x, int y) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_xy(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -933,7 +933,7 @@ public void SetPatternPosition_ShouldThrow_WhenErrorReturnCode(int slotId, int p public void SetPatternSize_ShouldCallExpectedMethod(int slotId, int patternId, int tracks, int lines) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(0); // when @@ -947,7 +947,7 @@ public void SetPatternSize_ShouldCallExpectedMethod(int slotId, int patternId, i public void SetPatternSize_WithDefaultValues_ShouldCallExpectedMethod(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when @@ -961,7 +961,7 @@ public void SetPatternSize_WithDefaultValues_ShouldCallExpectedMethod(int slotId public void SetPatternSize_ShouldThrow_WhenErrorReturnCode(int slotId, int patternId, int tracks, int lines) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when @@ -976,7 +976,7 @@ public void SetPatternSize_ShouldThrow_WhenErrorReturnCode(int slotId, int patte public void GetPatternMuted_ShouldReturnValue(bool muted, int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(muted ? 1 : 0); // when @@ -991,7 +991,7 @@ public void GetPatternMuted_ShouldReturnValue(bool muted, int slotId, int patter public void SetPatternMuted_ShouldCallExpectedMethod(bool muted, int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_pattern_mute(Arg.Any(), Arg.Any(), Arg.Any()).Returns(muted ? 1 : 0); // when @@ -1005,7 +1005,7 @@ public void SetPatternMuted_ShouldCallExpectedMethod(bool muted, int slotId, int public void SetPatternEvent_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -1021,7 +1021,7 @@ public void SetPatternEvent_ShouldCallExpectedMethod(int slotId, int patternId, public void SetPatternEvent_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -1038,7 +1038,7 @@ public void SetPatternEvent_ShouldThrow_WhenNonZeroReturnCode(int slotId, int pa public void SetPatternEventWithStruct_ShouldCallExpectedMethod(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(0); @@ -1055,7 +1055,7 @@ public void SetPatternEventWithStruct_ShouldCallExpectedMethod(int slotId, int p public void SetPatternEventWithStruct_ShouldThrow_WhenNonZeroReturnCode(int slotId, int patternId, int track, int line, PatternEvent patternEvent) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_pattern_event(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(-1); @@ -1091,7 +1091,7 @@ public void GetPatternData_ShouldReturnData(int slotId, int patternId) var handle = GCHandle.Alloc(patternData, GCHandleType.Pinned); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); @@ -1121,7 +1121,7 @@ public void GetPatternData_ShouldReturnData(int slotId, int patternId) public void GetPatternData_ShouldReturnNull_WhenLengthEqualsZero(int slotId, int patternId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(0); // when var receivedPatternData = wrapper.GetPatternData(slotId, patternId); @@ -1139,7 +1139,7 @@ public void GetPatternData_ShouldReturnNull_WhenPtrIsNullPtr(int slotId, int pat const int tracks = 5; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); @@ -1167,7 +1167,7 @@ public void ReadPatternData_ShouldReturnZeroAndNotChangeData_WhenLengthEqualsZer var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(0); // when @@ -1195,7 +1195,7 @@ public void ReadPatternData_ShouldReturnZeroAndNotChangeData_WhenPtrIsNullPtr(in var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); @@ -1225,7 +1225,7 @@ public void WritePatternData_ShouldReturnZeroAndNotChangeData_WhenPtrIsNullPtr(i var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(lines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(tracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(IntPtr.Zero); @@ -1255,7 +1255,7 @@ public void ReadPatternData_ShouldThrow_WhenBufferSizeDifferentFromRequestedSize var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when wrapper.Invoking(w => w.ReadPatternData(slotId, patternId, buffer, tracksToRead, linesToRead)) @@ -1286,7 +1286,7 @@ public void ReadPatternData_ShouldThrow_WhenAnyOffsetValueIsNegative(int bufferO var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when wrapper.Invoking(w => w.ReadPatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, bufferOffsetLines, readOffsetTracks, readOffsetLines)) @@ -1318,7 +1318,7 @@ public void WritePatternData_ShouldThrow_WhenAnyOffsetValueIsNegative(int buffer var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when wrapper.Invoking(w => w.WritePatternData(slotId, patternId, buffer, bufferTracks, bufferLines, bufferOffsetTracks, bufferOffsetLines, writeOffsetTracks, writeOffsetLines)) @@ -1348,7 +1348,7 @@ public void WritePatternData_ShouldThrow_WhenBufferSizeDifferentFromRequestedSiz var buffer = (PatternEvent[])originalData.Clone(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when wrapper.Invoking(w => w.WritePatternData(slotId, patternId, buffer, tracksToRead, linesToRead)) @@ -1384,7 +1384,7 @@ public void ReadPatternData_ShouldWorkAsExpected(PatternDataCase testCase) var handle = GCHandle.Alloc(testCase.FromData, GCHandleType.Pinned); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(testCase.FromLines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(testCase.FromTracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); @@ -1424,7 +1424,7 @@ public void WritePatternData_ShouldWorkAsExpected(PatternDataCase testCase) var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_lines(Arg.Any(), Arg.Any()).Returns(testCase.ToLines); library.sv_get_pattern_tracks(Arg.Any(), Arg.Any()).Returns(testCase.ToTracks); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); @@ -1469,7 +1469,7 @@ public void SetPatternData_ShouldSetData(int slotId, int patternId) var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_pattern_data(Arg.Any(), Arg.Any()).Returns(handle.AddrOfPinnedObject()); library.sv_set_pattern_size(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); try diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs index bba2edc..4ee0e28 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs @@ -12,7 +12,7 @@ public class SunVoxLibNativeWrapperTests public void CloseSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_close_slot(Arg.Any()).Returns(0); // when @@ -26,7 +26,7 @@ public void CloseSlot_ShouldCallExpectedMethod(int slotId) public void CloseSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_close_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -40,7 +40,7 @@ public void CloseSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) public void Deinitialize_ShouldCallDeinitAsExpected() { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_deinit().Returns(0); @@ -55,7 +55,7 @@ public void Deinitialize_ShouldCallDeinitAsExpected() public void Deinitialize_OnNonzeroCode_ShouldThrow() { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_deinit().Returns(ErrorResponseCode); @@ -66,11 +66,13 @@ public void Deinitialize_OnNonzeroCode_ShouldThrow() library.Received(1).sv_deinit(); } - [Test, AutoData] - public void GetAutomaticStop_ShouldReturnValue(bool automaticStop, int slotId) + [TestCase(true)] + [TestCase(false)] + public void GetAutomaticStop_ShouldReturnValue(bool automaticStop) { + const int slotId = 0; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_autostop(Arg.Any()).Returns(automaticStop ? 1 : 0); // when @@ -85,7 +87,7 @@ public void GetAutomaticStop_ShouldReturnValue(bool automaticStop, int slotId) public void GetAutomaticStop_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_autostop(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -99,7 +101,7 @@ public void GetAutomaticStop_OnInvalidValue_ShouldThrow(int slotId) public void GetCurrentLine_ShouldReturnValue(int currentLine, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_current_line(Arg.Any()).Returns(currentLine); // when @@ -114,7 +116,7 @@ public void GetCurrentLine_ShouldReturnValue(int currentLine, int slotId) public void GetCurrentLineWithTenthPart_ShouldReturnValue(int currentLineWithTenthPart, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_current_line2(Arg.Any()).Returns(currentLineWithTenthPart); // when @@ -126,10 +128,11 @@ public void GetCurrentLineWithTenthPart_ShouldReturnValue(int currentLineWithTen } [Test, AutoData] - public void GetCurrentSignalLevel_ShouldReturnValue(int signalLevel, int slotId, AudioChannel channel) + public void GetCurrentSignalLevel_ShouldReturnValue(int slotId, AudioChannel channel) { + const int signalLevel = 128; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_current_signal_level(Arg.Any(), Arg.Any()).Returns(signalLevel); // when @@ -140,11 +143,27 @@ public void GetCurrentSignalLevel_ShouldReturnValue(int signalLevel, int slotId, value.Should().Be(signalLevel); } + [TestCase(-1)] + [TestCase(256)] + public void GetCurrentSignalLevel_OnInvalidValue_ShouldThrow(int signalLevel) + { + const int slotId = 0; + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + library.sv_get_current_signal_level(Arg.Any(), Arg.Any()).Returns(signalLevel); + + // when - then + wrapper.Invoking(w => w.GetCurrentSignalLevel(slotId, AudioChannel.Left)).Should().Throw(); + + // then + library.Received(1).sv_get_current_signal_level(slotId, (int)AudioChannel.Left); + } + [Test, AutoData] public void GetLog_OnNullPtr_ShouldReturnNull(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_log(Arg.Any()).Returns(IntPtr.Zero); @@ -159,7 +178,7 @@ public void GetLog_OnNullPtr_ShouldReturnNull(int slotId) public void GetLog_OnValidPointer_ShouldReturnString(string log) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var logLength = log.Length; library.sv_get_log(logLength).Returns(_ => Marshal.StringToHGlobalAnsi(log)); @@ -174,7 +193,7 @@ public void GetLog_OnValidPointer_ShouldReturnString(string log) public void GetSampleRate_ShouldReturnValue(int ticks) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_sample_rate().Returns(ticks); // when @@ -189,18 +208,48 @@ public void GetSampleRate_ShouldReturnValue(int ticks) public void GetSampleRate_OnNonsenseValue_ShouldThrow(int sampleRate) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_sample_rate().Returns(sampleRate); // when - then wrapper.Invoking(w => w.GetSampleRate()).Should().Throw(); } + [Test, AutoData] + public void GetSongBaseVersion_ShouldReturnValue(int slotId) + { + const int versionCode = 0x020102; // 2.1.2 + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + library.sv_get_base_version(Arg.Any()).Returns(versionCode); + + // when + var value = wrapper.GetSongBaseVersion(slotId); + + // then + library.Received(1).sv_get_base_version(slotId); + value.Should().Be(SunVoxVersion.FromProjectBaseVersion(versionCode)); + } + + [Test, AutoData] + public void GetSongBaseVersion_OnInvalidValue_ShouldThrow(int slotId) + { + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + library.sv_get_base_version(Arg.Any()).Returns(ErrorResponseCode); + + // when - then + wrapper.Invoking(w => w.GetSongBaseVersion(slotId)).Should().Throw(); + + // then + library.Received(1).sv_get_base_version(slotId); + } + [Test, AutoData] public void GetSongBpm_ShouldReturnValue(int songBpm, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_bpm(Arg.Any()).Returns(songBpm); // when @@ -215,7 +264,7 @@ public void GetSongBpm_ShouldReturnValue(int songBpm, int slotId) public void GetSongBpm_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_bpm(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -229,7 +278,7 @@ public void GetSongBpm_OnInvalidValue_ShouldThrow(int slotId) public void GetSongLengthInFrames_ShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_length_frames(Arg.Any()).Returns(songLength); // when @@ -244,7 +293,7 @@ public void GetSongLengthInFrames_ShouldReturnValue(uint songLength, int slotId) public void GetSongLengthInLines_ShouldReturnValue(uint songLength, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_length_lines(Arg.Any()).Returns(songLength); // when @@ -259,7 +308,7 @@ public void GetSongLengthInLines_ShouldReturnValue(uint songLength, int slotId) public void GetSongName_OnNullPtr_ShouldReturnNull(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_name(Arg.Any()).Returns(IntPtr.Zero); @@ -275,7 +324,7 @@ public void GetSongName_OnNullPtr_ShouldReturnNull(int slotId) public void GetSongName_ShouldReturnValue(string songName, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var ptr = Marshal.StringToHGlobalAnsi(songName); try { @@ -298,7 +347,7 @@ public void GetSongName_ShouldReturnValue(string songName, int slotId) public void GetSongTpl_ShouldReturnValue(int songTpl, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_tpl(Arg.Any()).Returns(songTpl); // when @@ -313,7 +362,7 @@ public void GetSongTpl_ShouldReturnValue(int songTpl, int slotId) public void GetSongTpl_OnInvalidValue_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_song_tpl(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -327,7 +376,7 @@ public void GetSongTpl_OnInvalidValue_ShouldThrow(int slotId) public void GetTicksPerSecond_ShouldReturnValue(uint ticks) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_ticks_per_second().Returns(ticks); // when @@ -341,7 +390,7 @@ public void GetTicksPerSecond_ShouldReturnValue(uint ticks) public void GetTicks_ShouldReturnValue(uint ticks) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_ticks().Returns(ticks); // when @@ -352,12 +401,12 @@ public void GetTicks_ShouldReturnValue(uint ticks) } [Test, AutoData] - public void GetTimeMap_ShouldReturnExpectedValue(int slotId, int startLine, TimeMapType mapType) + public void GetTimeMapFrames_ShouldReturnExpectedValue(int slotId, int startLine) { const int length = 32; var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); - var timeMap = Enumerable.Range(0, length).ToArray(); + var wrapper = new SunVoxLib(library); + var timeMap = Enumerable.Range(0, length).Select(i => (uint)i).ToArray(); library .When(static l => @@ -367,37 +416,78 @@ public void GetTimeMap_ShouldReturnExpectedValue(int slotId, int startLine, Time var intPtr = callInfo.Arg(); for (var i = 0; i < timeMap.Length; i++) { - Marshal.WriteInt32(intPtr + i * 4, timeMap[i]); + Marshal.WriteInt32(intPtr + i * 4, (int)timeMap[i]); } }); // when - var value = wrapper.GetTimeMap(slotId, startLine, length, mapType); + var value = wrapper.GetTimeMapFrames(slotId, startLine, length); // then - library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)mapType); + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)TimeMapType.FrameCount); value.Should().BeEquivalentTo(timeMap); } [Test, AutoData] - public void GetTimeMap_OnNonZeroReturnCode_ShouldThrow(int slotId, int startLine, int length, TimeMapType mapType) + public void GetTimeMapFrames_OnNonZeroReturnCode_ShouldThrow(int slotId, int startLine, int length) + { + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + library.sv_get_time_map(0, 0, 0, default, 0).ReturnsForAnyArgs(ErrorResponseCode); + + // when - then + wrapper.Invoking(w => w.GetTimeMapFrames(slotId, startLine, length)).Should().Throw(); + + // then + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)TimeMapType.FrameCount); + } + + [Test, AutoData] + public void GetTimeMapSpeed_ShouldReturnExpectedValue(int slotId, int startLine) + { + const int length = 32; + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + + library + .When(static l => + l.sv_get_time_map(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())) + .Do(callInfo => + { + var intPtr = callInfo.Arg(); + for (var i = 0; i < length; i++) + { + Marshal.WriteInt32(intPtr + i * 4, i); + } + }); + + // when + var value = wrapper.GetTimeMapSpeed(slotId, startLine, length); + + // then + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)TimeMapType.Speed); + value.Should().HaveCount(length); + } + + [Test, AutoData] + public void GetTimeMapSpeed_OnNonZeroReturnCode_ShouldThrow(int slotId, int startLine, int length) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_get_time_map(0, 0, 0, default, 0).ReturnsForAnyArgs(ErrorResponseCode); // when - then - wrapper.Invoking(w => w.GetTimeMap(slotId, startLine, length, mapType)).Should().Throw(); + wrapper.Invoking(w => w.GetTimeMapSpeed(slotId, startLine, length)).Should().Throw(); // then - library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)mapType); + library.Received(1).sv_get_time_map(slotId, startLine, length, Arg.Any(), (int)TimeMapType.Speed); } [Test, AutoData] public void Initialize_OnUnhandledValue_ShouldThrow(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_init(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) .Returns(ErrorResponseCode); @@ -413,7 +503,7 @@ public void Initialize_OnUnhandledValue_ShouldThrow(int sampleRate, AudioChannel public void Initialize_ShouldCallInitAsExpected(int sampleRate, string config, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); const byte major = 1; const byte minor = 2; @@ -439,7 +529,7 @@ public void Initialize_ShouldCallInitAsExpected(int sampleRate, string config, A public void Initialize_WithNullConfig_ShouldCallInitAsExpected(int sampleRate, AudioChannels channels, SunVoxInitOptions sunVoxInitOptions) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); const byte major = 1; const byte minor = 2; @@ -460,7 +550,7 @@ public void Initialize_WithNullConfig_ShouldCallInitAsExpected(int sampleRate, A public void IsPlaying_ShouldReturnExpectedValue(bool isPlaying, int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_end_of_song(Arg.Any()).Returns(isPlaying ? 0 : 1); // when @@ -475,7 +565,7 @@ public void IsPlaying_ShouldReturnExpectedValue(bool isPlaying, int slotId) public void IsPlaying_OnUnexpectedValue_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_end_of_song(Arg.Any()).Returns(ErrorResponseCode); // when @@ -489,7 +579,7 @@ public void IsPlaying_OnUnexpectedValue_ShouldThrow(int slotId) public void LoadFromMemory_ShouldCallExpectedMethods(int slotId, byte[] data) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var receivedArray = Array.Empty(); library.When(static l => l.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any())) @@ -511,7 +601,7 @@ public void LoadFromMemory_ShouldCallExpectedMethods(int slotId, byte[] data) public void LoadFromMemory_OnNonzeroReturnCode_ShouldThrow(int slotId, byte[] data) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load_from_memory(Arg.Any(), Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when @@ -525,7 +615,7 @@ public void LoadFromMemory_OnNonzeroReturnCode_ShouldThrow(int slotId, byte[] da public void Load_ShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var receivedString = string.Empty; library.When(static l => l.sv_load(Arg.Any(), Arg.Any())) @@ -543,7 +633,7 @@ public void Load_ShouldCallExpectedMethods(int slotId, string path) public void Load_OnNonzeroReturnCode_ShouldThrow(int slotId, string fileName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_load(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when @@ -557,7 +647,7 @@ public void Load_OnNonzeroReturnCode_ShouldThrow(int slotId, string fileName) public void LockSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_lock_slot(Arg.Any()).Returns(0); // when @@ -571,7 +661,7 @@ public void LockSlot_ShouldCallExpectedMethod(int slotId) public void LockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_lock_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -585,7 +675,7 @@ public void LockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) public void OpenSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_open_slot(Arg.Any()).Returns(0); // when @@ -599,7 +689,7 @@ public void OpenSlot_ShouldCallExpectedMethod(int slotId) public void OpenSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_open_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -613,7 +703,7 @@ public void OpenSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) public void PauseAudioStream_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_pause(Arg.Any()).Returns(0); // when @@ -627,7 +717,7 @@ public void PauseAudioStream_ShouldCallExpectedMethod(int slotId) public void PauseAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_pause(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -641,7 +731,7 @@ public void PauseAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) public void ResumeStreamOnSyncEffect_ShouldCallMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_sync_resume(Arg.Any()).Returns(0); // when @@ -655,7 +745,7 @@ public void ResumeStreamOnSyncEffect_ShouldCallMethod(int slotId) public void ResumeStreamOnSyncEffect_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_sync_resume(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -669,7 +759,7 @@ public void ResumeStreamOnSyncEffect_OnNonZeroReturnCode_ShouldThrow(int slotId) public void ResumeAudioStream_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_resume(Arg.Any()).Returns(0); // when @@ -683,7 +773,7 @@ public void ResumeAudioStream_ShouldCallExpectedMethod(int slotId) public void ResumeAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_resume(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -697,7 +787,7 @@ public void ResumeAudioStream_OnNonZeroReturnCode_ShouldThrow(int slotId) public void Rewind_ShouldCallExpectedMethod(int slotId, int line) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_rewind(Arg.Any(), Arg.Any()).Returns(0); // when @@ -711,7 +801,7 @@ public void Rewind_ShouldCallExpectedMethod(int slotId, int line) public void Rewind_OnNonZeroReturnCode_ShouldThrow(int slotId, int line) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_rewind(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -725,7 +815,7 @@ public void Rewind_OnNonZeroReturnCode_ShouldThrow(int slotId, int line) public void Save_ShouldCallExpectedMethods(int slotId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); var receivedString = string.Empty; library.When(static l => l.sv_save(Arg.Any(), Arg.Any())) @@ -743,7 +833,7 @@ public void Save_ShouldCallExpectedMethods(int slotId, string path) public void Save_OnUnexpectedReturnCode_ShouldThrow(int slotId, string path) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_save(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); @@ -758,7 +848,7 @@ public void Save_OnUnexpectedReturnCode_ShouldThrow(int slotId, string path) public void SendEvent_WithPatternEventStruct_ShouldSendArgumentsAsExpected(int slotId, int track, PatternEvent patternEvent) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(0); @@ -773,7 +863,7 @@ public void SendEvent_WithPatternEventStruct_ShouldSendArgumentsAsExpected(int s public void SendEvent_WithRawData_ShouldSendArgumentsAsExpected(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(0); @@ -788,7 +878,7 @@ public void SendEvent_WithRawData_ShouldSendArgumentsAsExpected(int slotId, int public void SendEvent_WithPatternEvent_ShouldThrow(int slotId, int track, PatternEvent patternEvent) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); // when library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(ErrorResponseCode); @@ -802,7 +892,7 @@ public void SendEvent_WithPatternEvent_ShouldThrow(int slotId, int track, Patter public void SendEvent_WithRawData_ShouldThrow(int slotId, int track, int nn, int vv, int mm, int ccee, int xxyy) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_send_event(0, 0, 0, 0, 0, 0, 0).ReturnsForAnyArgs(-1); @@ -817,7 +907,7 @@ public void SetAutomaticStop_ShouldCallWithArgument(bool autoStop) { var fixture = new Fixture(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(0); var slotId = fixture.Create(); @@ -832,7 +922,7 @@ public void SetAutomaticStop_ShouldCallWithArgument(bool autoStop) public void SetAutomaticStop_OnInvalidReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_autostop(Arg.Any(), Arg.Any()).Returns(-1); // when - then @@ -842,43 +932,67 @@ public void SetAutomaticStop_OnInvalidReturnCode_ShouldThrow(int slotId) library.Received(1).sv_set_autostop(slotId, 0); } - [TestCase(true)] - [TestCase(false)] - public void SetSendEventTimestamp_ShouldCallWithArgument(bool reset) + [Test, AutoData] + public void SetEventTiming_ShouldCallWithArgument(int slotId, int timestamp) { - var fixture = new Fixture(); var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); + library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); + + // when + wrapper.SetEventTiming(slotId, timestamp); + + // then + library.Received(1).sv_set_event_t(slotId, 0, timestamp); + } + + [Test, AutoData] + public void SetEventTiming_OnInvalidReturnCode_ShouldThrow(int slotId, int timestamp) + { + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); + + // when - then + wrapper.Invoking(w => w.SetEventTiming(slotId, timestamp)).Should().Throw(); + + // then + library.Received(1).sv_set_event_t(slotId, 0, timestamp); + } + + [Test, AutoData] + public void ResetEventTiming_ShouldCallWithArgument(int slotId) + { + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); - var slotId = fixture.Create(); - var t = fixture.Create(); // when - wrapper.SetSendEventTimestamp(slotId, reset, t); + wrapper.ResetEventTiming(slotId); // then - library.Received(1).sv_set_event_t(slotId, reset ? 0 : 1, t); + library.Received(1).sv_set_event_t(slotId, 1, 0); } [Test, AutoData] - public void SetSendEventTimestamp_OnInvalidReturnCode_ShouldThrow(int slotId, int t) + public void ResetEventTiming_OnInvalidReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_event_t(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - then - wrapper.Invoking(w => w.SetSendEventTimestamp(slotId, false, t)).Should().Throw(); + wrapper.Invoking(w => w.ResetEventTiming(slotId)).Should().Throw(); // then - library.Received(1).sv_set_event_t(slotId, 1, t); + library.Received(1).sv_set_event_t(slotId, 1, 0); } [Test, AutoData] public void SetSongName_ShouldSendString(int slotId, string newSongName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); string? receivedString = null; library.When(static l => l.sv_set_song_name(Arg.Any(), Arg.Any())) @@ -896,7 +1010,7 @@ public void SetSongName_ShouldSendString(int slotId, string newSongName) public void SetSongName_OnNonzeroReturnCode_ShouldThrow(int slotId, string newSongName) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_set_song_name(Arg.Any(), Arg.Any()).Returns(-1); @@ -911,7 +1025,7 @@ public void SetSongName_OnNonzeroReturnCode_ShouldThrow(int slotId, string newSo public void StartPlaybackFromBeginning_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_play_from_beginning(Arg.Any()).Returns(0); // when @@ -925,7 +1039,7 @@ public void StartPlaybackFromBeginning_ShouldCallExpectedMethod(int slotId) public void StartPlaybackFromBeginning_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_play_from_beginning(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -939,7 +1053,7 @@ public void StartPlaybackFromBeginning_OnNonZeroReturnCode_ShouldThrow(int slotI public void StartPlayback_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_play(Arg.Any()).Returns(0); // when @@ -953,7 +1067,7 @@ public void StartPlayback_ShouldCallExpectedMethod(int slotId) public void StartPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_play(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -967,7 +1081,7 @@ public void StartPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) public void StopPlayback_ShouldCallMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_stop(Arg.Any()).Returns(0); // when @@ -981,7 +1095,7 @@ public void StopPlayback_ShouldCallMethod(int slotId) public void StopPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_stop(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -995,7 +1109,7 @@ public void StopPlayback_OnNonZeroReturnCode_ShouldThrow(int slotId) public void UnlockSlot_ShouldCallExpectedMethod(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_unlock_slot(Arg.Any()).Returns(0); // when @@ -1009,7 +1123,7 @@ public void UnlockSlot_ShouldCallExpectedMethod(int slotId) public void UnlockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_unlock_slot(Arg.Any()).Returns(ErrorResponseCode); // when - then @@ -1023,7 +1137,7 @@ public void UnlockSlot_OnNonZeroReturnCode_ShouldThrow(int slotId) public void UpdateInputDevices_ShouldCallExpectedMethod() { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_update_input().Returns(0); // when @@ -1037,7 +1151,7 @@ public void UpdateInputDevices_ShouldCallExpectedMethod() public void UpdateInputDevices_OnNonZeroReturnCode_ShouldThrow() { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_update_input().Returns(ErrorResponseCode); // when - then @@ -1048,7 +1162,7 @@ public void UpdateInputDevices_OnNonZeroReturnCode_ShouldThrow() public void Volume_ShouldReturnExpectedValue(int slotId, int volume, int otherVolume) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_volume(Arg.Any(), Arg.Any()).Returns(volume); // when @@ -1063,7 +1177,7 @@ public void Volume_ShouldReturnExpectedValue(int slotId, int volume, int otherVo public void Volume_OnNonZeroReturnCode_ShouldThrow(int slotId, int otherVolume) { var library = Substitute.For(); - var wrapper = new SunVoxLibNativeWrapper(library); + var wrapper = new SunVoxLib(library); library.sv_volume(Arg.Any(), Arg.Any()).Returns(ErrorResponseCode); // when - then diff --git a/SunSharp/Data/ControllerData.cs b/SunSharp/Data/ControllerData.cs deleted file mode 100644 index 643c05b..0000000 --- a/SunSharp/Data/ControllerData.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace SunSharp.Data -{ - public class ControllerData : IDeepCopyable - { - public int Id { get; set; } - public string Name { get; set; } = string.Empty; - public int Value { get; set; } - public int Offset { get; set; } - public int MinValue { get; set; } - public int MaxValue { get; set; } - public int Group { get; set; } - public ControllerType ControllerType { get; set; } - - public ControllerData DeepCopy() - { - var clone = new ControllerData - { - Id = Id, - Name = Name, - Value = Value, - MinValue = MinValue, - MaxValue = MaxValue, - Offset = Offset, - Group = Group, - ControllerType = ControllerType - }; - return clone; - } - } -} diff --git a/SunSharp/Data/IDeepCopyable.cs b/SunSharp/Data/IDeepCopyable.cs deleted file mode 100644 index e82df76..0000000 --- a/SunSharp/Data/IDeepCopyable.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SunSharp.Data -{ - public interface IDeepCopyable - { - T DeepCopy(); - } -} diff --git a/SunSharp/Data/ModuleData.cs b/SunSharp/Data/ModuleData.cs deleted file mode 100644 index b131f0d..0000000 --- a/SunSharp/Data/ModuleData.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Data -{ - public sealed class ModuleData : IDeepCopyable - { - public int Id { get; set; } - public string? Name { get; set; } - public string? Type { get; set; } - public (int X, int Y) Position { get; set; } = (0, 0); - public FineTunePair FineTune { get; set; } - public (byte r, byte g, byte b) Color { get; set; } = (0, 0, 0); - public ICollection Controllers { get; set; } = Array.Empty(); - public uint Flags { get; set; } - public ICollection Inputs { get; set; } = Array.Empty(); - public ICollection Outputs { get; set; } = Array.Empty(); - - public ModuleData DeepCopy() - { - var copy = new ModuleData - { - Id = Id, - Name = Name, - Type = Type, - Position = Position, - FineTune = FineTune, - Flags = Flags, - Color = Color, - Controllers = Controllers.Select(c => c.DeepCopy()).ToArray(), - Inputs = Inputs.Select(i => i).ToArray(), - Outputs = Outputs.Select(o => o).ToArray() - }; - - return copy; - } - } -} diff --git a/SunSharp/Data/PatternData.cs b/SunSharp/Data/PatternData.cs deleted file mode 100644 index af4bd78..0000000 --- a/SunSharp/Data/PatternData.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Data -{ - public class PatternData : IDeepCopyable - { - public int Id { get; set; } - public string? Name { get; set; } - public (int X, int Y) Position { get; set; } - public int Lines { get; set; } - public int Tracks { get; set; } - public bool IsMuted { get; set; } - public bool IsLinear { get; set; } - public bool IsDestructive { get; set; } - public bool HasDynamicTempo { get; set; } - public ICollection Data { get; set; } = Array.Empty(); - - public PatternData DeepCopy() - { - var copy = new PatternData - { - Id = Id, - Name = Name, - Position = Position, - Lines = Lines, - Tracks = Tracks, - IsMuted = IsMuted, - IsLinear = IsLinear, - IsDestructive = IsDestructive, - HasDynamicTempo = HasDynamicTempo, - Data = Data.Select(e => e).ToArray() - }; - return copy; - } - } -} diff --git a/SunSharp/Data/SongData.cs b/SunSharp/Data/SongData.cs deleted file mode 100644 index 094e233..0000000 --- a/SunSharp/Data/SongData.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace SunSharp.Data -{ - public class SongData : IDeepCopyable - { - public string? Name { get; set; } - - /// - /// Beats per minute. - /// - public int BPM { get; set; } - - /// - /// Ticks per line. - /// - public int TPL { get; set; } - - public uint Lines { get; set; } - public int CurrentLine { get; set; } - public int FirstLine { get; set; } - public int LastLine { get; set; } - public ICollection Modules { get; set; } = Array.Empty(); - public ICollection Patterns { get; set; } = Array.Empty(); - - public bool IsLinear => Patterns.All(p => p.IsLinear); - public bool IsDestructive => Patterns.Any(p => p.IsDestructive); - public bool HasDynamicTempo => Patterns.Any(p => p.HasDynamicTempo); - - public SongData DeepCopy() - { - var copy = new SongData - { - Name = Name, - BPM = BPM, - TPL = TPL, - Lines = Lines, - CurrentLine = CurrentLine, - FirstLine = FirstLine, - LastLine = LastLine, - Modules = Modules.Select(m => m.DeepCopy()).ToArray(), - Patterns = Patterns.Select(p => p.DeepCopy()).ToArray() - }; - return copy; - } - } -} diff --git a/SunSharp/Data/SongDataReader.cs b/SunSharp/Data/SongDataReader.cs deleted file mode 100644 index 09dc14b..0000000 --- a/SunSharp/Data/SongDataReader.cs +++ /dev/null @@ -1,183 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using SunSharp.Native; - -namespace SunSharp.Data -{ - public static class SongDataReader - { - public static SongData ReadSongData(Slot slot) - { - return ReadSongData(slot.Library, slot.Id); - } - - public static SongData ReadSongData(ISunVoxLib lib, int slotId) - { - lib.LockSlot(slotId); - try - { - return ReadSongDataInternal(lib, slotId); - } - finally - { - lib.UnlockSlot(slotId); - } - } - - internal static SongData ReadSongDataInternal(ISunVoxLib lib, int slotId) - { - var modules = ReadModules(lib, slotId); - var patterns = ReadPatterns(lib, slotId); - - var songData = new SongData - { - Name = lib.GetSongName(slotId), - TPL = lib.GetSongTpl(slotId), - BPM = lib.GetSongBpm(slotId), - - Lines = lib.GetSongLengthInLines(slotId), - CurrentLine = lib.GetCurrentLine(slotId), - FirstLine = patterns.Length == 0 ? 0 : patterns.Min(p => p.Position.X), - LastLine = patterns.Length == 0 ? 0 : patterns.Max(p => p.Position.X + p.Lines), - - Modules = modules, - Patterns = patterns - }; - return songData; - } - - #region module data - - internal static ModuleData[] ReadModules(ISunVoxLib lib, int slotId) - { - var moduleCount = lib.GetUpperModuleCount(slotId); - var modules = new List(moduleCount); - - for (var i = 0; i < moduleCount; i++) - { - if (!lib.GetModuleExists(slotId, i)) - { - continue; - } - - var m = ReadModule(lib, slotId, i); - modules.Add(m); - } - - return modules.ToArray(); - } - - internal static ModuleData ReadModule(ISunVoxLib lib, int slotId, int moduleId) - { - var flags = lib.GetModuleFlags(slotId, moduleId); - - var controllerCount = lib.GetModuleControllerCount(slotId, moduleId); - var controllers = new ControllerData[controllerCount]; - - for (var controllerId = 0; controllerId < controllerCount; controllerId++) - { - var controllerData = ReadControllerData(lib, slotId, moduleId, controllerId); - controllers[controllerId] = controllerData; - } - - var moduleData = new ModuleData - { - Id = moduleId, - Name = lib.GetModuleName(slotId, moduleId), - Type = lib.GetModuleType(slotId, moduleId), - - Position = lib.GetModulePosition(slotId, moduleId), - Color = lib.GetModuleColor(slotId, moduleId), - FineTune = lib.GetModuleFineTune(slotId, moduleId), - Flags = flags, - Controllers = controllers, - - Inputs = lib.GetModuleInputs(slotId, moduleId), - Outputs = lib.GetModuleOutputs(slotId, moduleId) - }; - return moduleData; - } - - #region controller data - - internal static ControllerData ReadControllerData(ISunVoxLib lib, int slotId, int moduleId, int controllerId) - { - var controllerData = new ControllerData - { - Id = controllerId, - Name = lib.GetModuleControllerName(slotId, moduleId, controllerId) ?? "undefined", - - Value = lib.GetModuleControllerValue(slotId, moduleId, controllerId, ValueScalingMode.Real), - MinValue = lib.GetModuleControllerMinValue(slotId, moduleId, controllerId, ValueScalingMode.Real), - MaxValue = lib.GetModuleControllerMaxValue(slotId, moduleId, controllerId, ValueScalingMode.Real), - Offset = lib.GetModuleControllerOffset(slotId, moduleId, controllerId), - - ControllerType = lib.GetModuleControllerType(slotId, moduleId, controllerId), - Group = lib.GetModuleControllerGroup(slotId, moduleId, controllerId) - }; - return controllerData; - } - - #endregion controller data - - #endregion module data - - #region pattern data - - internal static PatternData[] ReadPatterns(ISunVoxLib lib, int slotId) - { - var patternCount = lib.GetUpperPatternCount(slotId); - var patterns = new List(patternCount); - - for (var i = 0; i < patternCount; i++) - { - if (!lib.GetPatternExists(slotId, i)) - { - continue; - } - - var p = ReadPattern(lib, slotId, i); - patterns.Add(p); - } - - return patterns.ToArray(); - } - - internal static PatternData ReadPattern(ISunVoxLib lib, int slotId, int patternId) - { - var (data, tracks, lines) = lib.GetPatternData(slotId, patternId) ?? - throw new ArgumentException($"The slot {slotId} does not exist."); - var isDestructive = false; - var isLinear = true; - var hasDynamicTempo = false; - - for (var i = 0; i < data.Length; i++) - { - var e = data[i]; - isDestructive = isDestructive || e.Effect.IsDestructive(); - isLinear = isLinear && !e.Effect.IsNonLinear(); - hasDynamicTempo = hasDynamicTempo || e.Effect.ChangesTempo(); - } - - return new PatternData - { - Id = patternId, - Name = lib.GetPatternName(slotId, patternId), - - HasDynamicTempo = hasDynamicTempo, - IsDestructive = isDestructive, - IsLinear = isLinear, - IsMuted = lib.GetPatternMuted(slotId, patternId), - - Position = lib.GetPatternPosition(slotId, patternId), - Lines = lines, - Tracks = tracks, - - Data = data - }; - } - - #endregion pattern data - } -} diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs index 4c1e32e..ee49f23 100644 --- a/SunSharp/Native/ISunVoxLib.Modules.cs +++ b/SunSharp/Native/ISunVoxLib.Modules.cs @@ -2,128 +2,128 @@ namespace SunSharp.Native { public partial interface ISunVoxLib { - /// + /// void ConnectModule(int slotId, int source, int destination); - /// + /// void DisconnectModule(int slotId, int source, int destination); - /// + /// int? FindModule(int slotId, string name); - /// + /// (byte r, byte g, byte b) GetModuleColor(int slotId, int moduleId); - /// + /// void SetModuleColor(int slotId, int moduleId, byte r, byte g, byte b); - /// + /// string? GetModuleControllerName(int slotId, int moduleId, int controllerId); - /// + /// int GetModuleControllerValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); - /// + /// int GetModuleControllerMinValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); - /// + /// int GetModuleControllerMaxValue(int slotId, int moduleId, int controllerId, ValueScalingMode scalingMode); - /// + /// int GetModuleControllerOffset(int slotId, int moduleId, int controllerId); - /// + /// ControllerType GetModuleControllerType(int slotId, int moduleId, int controllerId); - /// + /// int GetModuleControllerGroup(int slotId, int moduleId, int controllerId); - /// + /// void SetModuleControllerValue(int slotId, int moduleId, int controllerId, int value, ValueScalingMode scalingMode); - /// + /// FineTunePair GetModuleFineTune(int slotId, int moduleId); - /// + /// void SetModuleFineTune(int slotId, int moduleId, int fineTune); - /// + /// void SetModuleRelativeNote(int slotId, int moduleId, int relativeNote); - /// + /// ModuleFlags GetModuleFlags(int slotId, int moduleId); - /// + /// bool GetModuleExists(int slotId, int moduleId); - /// + /// int[] GetModuleInputs(int slotId, int moduleId); - /// + /// string? GetModuleName(int slotId, int moduleId); - /// + /// void SetModuleName(int slotId, int moduleId, string name); - /// + /// string? GetModuleType(int slotId, int moduleId); - /// + /// int[] GetModuleOutputs(int slotId, int moduleId); - /// + /// int ReadModuleScope(int slotId, int moduleId, AudioChannel channel, short[] buffer); - /// + /// (int x, int y) GetModulePosition(int slotId, int moduleId); - /// + /// void SetModulePosition(int slotId, int moduleId, int x, int y); - /// + /// int GetUpperModuleCount(int slotId); - /// + /// int GetModuleControllerCount(int slotId, int moduleId); - /// + /// int LoadModule(int slotId, string path, int x = 0, int y = 0, int z = 0); - /// + /// int LoadModule(int slotId, byte[] data, int x = 0, int y = 0, int z = 0); - /// + /// int WriteModuleCurve(int slotId, int moduleId, int curveId, float[] data); - /// + /// int ReadModuleCurve(int slotId, int moduleId, int curveId, float[] data); - /// + /// int CreateModule(int slotId, SynthModuleType type, string? name = null, int x = 0, int y = 0, int z = 0); - /// + /// int CreateModule(int slotId, string type, string? name = null, int x = 0, int y = 0, int z = 0); - /// + /// void RemoveModule(int slotId, int moduleId); - /// + /// void LoadSamplerSample(int slotId, int moduleId, string path, int? sampleSlot = null); - /// + /// void LoadSamplerSample(int slotId, int moduleId, byte[] data, int? sampleSlot = null); - /// + /// void LoadIntoMetaModule(int slotId, int moduleId, string path); - /// + /// void LoadIntoMetaModule(int slotId, int moduleId, byte[] data); - /// + /// void LoadIntoVorbisPlayer(int slotId, int moduleId, string path); - /// + /// void LoadIntoVorbisPlayer(int slotId, int moduleId, byte[] data); } } diff --git a/SunSharp/Native/ISunVoxLib.Patterns.cs b/SunSharp/Native/ISunVoxLib.Patterns.cs index 7f1e0bc..f12117b 100644 --- a/SunSharp/Native/ISunVoxLib.Patterns.cs +++ b/SunSharp/Native/ISunVoxLib.Patterns.cs @@ -2,81 +2,81 @@ namespace SunSharp.Native { public partial interface ISunVoxLib { - /// + /// int CreatePattern(int slotId, int x, int y, int tracks, int lines, int iconSeed = 0, string? name = null); - /// + /// int ClonePattern(int slotId, int originalPatternId, int x, int y); - /// + /// void RemovePattern(int slotId, int patternId); - /// + /// int GetUpperPatternCount(int slotId); - /// + /// int? FindPattern(int slotId, string name); - /// + /// int GetPatternEventValue(int slotId, int patternId, int track, int line, Column column); - /// + /// string? GetPatternName(int slotId, int patternId); - /// + /// void SetPatternName(int slotId, int patternId, string name); - /// + /// bool GetPatternExists(int slotId, int patternId); - /// + /// int GetPatternLines(int slotId, int patternId); - /// + /// int GetPatternTracks(int slotId, int patternId); - /// + /// void SetPatternSize(int slotId, int patternId, int? tracks = null, int? lines = null); - /// + /// (int x, int y) GetPatternPosition(int slotId, int patternId); - /// + /// int GetPatternX(int slotId, int patternId); - /// + /// int GetPatternY(int slotId, int patternId); - /// + /// void SetPatternPosition(int slotId, int patternId, int x, int y); - /// + /// (PatternEvent[] data, int tracks, int lines)? GetPatternData(int slotId, int patternId); - /// + /// void SetPatternData(int slotId, int patternId, PatternEvent[] data, int tracks, int lines); - /// + /// public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, int? maxTracks = null, int? maxLines = null); - /// + /// public int WritePatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int writeOffsetTracks = 0, int writeOffsetLines = 0, int? maxTracks = null, int? maxLines = null); - /// + /// void SetPatternMuted(int slotId, int patternId, bool muted); - /// + /// bool GetPatternMuted(int slotId, int patternId); - /// + /// void SetPatternEvent(int slotId, int patternId, int track, int line, int nn, int vv, int mm, int ccee, int xxyy); - /// + /// void SetPatternEvent(int slotId, int patternId, int track, int line, PatternEvent ev); } } diff --git a/SunSharp/Native/ISunVoxLib.cs b/SunSharp/Native/ISunVoxLib.cs index 1980b79..e3ec0b3 100644 --- a/SunSharp/Native/ISunVoxLib.cs +++ b/SunSharp/Native/ISunVoxLib.cs @@ -1,151 +1,154 @@ namespace SunSharp.Native { - /// - /// Friendlier interface for SunVox native library functions. - /// See the for the default, preferred implementation. - /// + /// public partial interface ISunVoxLib { - /// + /// SunVoxVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None); - /// + /// void Deinitialize(); - /// + /// string? GetLog(int size); - /// + /// uint GetTicks(); - /// + /// uint GetTicksPerSecond(); - /// + /// int GetSampleRate(); - /// + /// SunVoxVersion GetSongBaseVersion(int slotId); - /// + /// void UpdateInputDevices(); - /// + /// bool AudioCallback(float[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels channels, int latency, uint outTime); - /// + /// bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(float[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, AudioChannels outputChannels, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool IsPlaying(int slotId); - /// + /// bool GetAutomaticStop(int slotId); - /// + /// int GetCurrentLine(int slotId); - /// + /// int GetCurrentLineWithTenthPart(int slotId); - /// + /// int GetCurrentSignalLevel(int slotId, AudioChannel channel); - /// + /// int GetSongBpm(int slotId); - /// + /// uint GetSongLengthInFrames(int slotId); - /// + /// uint GetSongLengthInLines(int slotId); - /// + /// string? GetSongName(int slotId); - /// - void SetSongName(int slotId, string newName); + /// + void SetSongName(int slotId, string value); - /// + /// int GetSongTpl(int slotId); - /// + /// void SaveToFile(int slotId, string path); ///// //byte[] SaveToMemory(int slotId); - /// + /// void SendEvent(int slotId, int track, PatternEvent data); - /// + /// void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); - /// - void SetSendEventTimestamp(int slotId, bool reset, int t); + /// + void SetEventTiming(int slotId, int timestamp); - /// + /// + public void ResetEventTiming(int slotId); + + /// int Volume(int slotId, int volume); - /// - uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type); + /// + uint[] GetTimeMapFrames(int slotId, int startLine, int length); + + /// + Speed[] GetTimeMapSpeed(int slotId, int startLine, int length); - /// + /// void Load(int slotId, string path); - /// + /// void Load(int slotId, byte[] data); - /// + /// void OpenSlot(int slotId); - /// + /// void CloseSlot(int slotId); - /// + /// void LockSlot(int slotId); - /// + /// void UnlockSlot(int slotId); - /// - void SetAutomaticStop(int slotId, bool autoStop); + /// + void SetAutomaticStop(int slotId, bool enable); - /// + /// void StopPlayback(int slotId); - /// + /// void StartPlayback(int slotId); - /// + /// void StartPlaybackFromBeginning(int slotId); - /// + /// void Rewind(int slotId, int line); - /// + /// void PauseAudioStream(int slotId); - /// + /// void ResumeAudioStream(int slotId); - /// + /// void ResumeStreamOnSyncEffect(int slotId); } } diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs b/SunSharp/Native/SunVoxLib.Modules.cs similarity index 99% rename from SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs rename to SunSharp/Native/SunVoxLib.Modules.cs index f39cda9..2334893 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Modules.cs +++ b/SunSharp/Native/SunVoxLib.Modules.cs @@ -3,7 +3,7 @@ namespace SunSharp.Native { - public partial class SunVoxLibNativeWrapper + public partial struct SunVoxLib : ISunVoxLib { /// /// Connect the source module to the destination module. diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs b/SunSharp/Native/SunVoxLib.Patterns.cs similarity index 88% rename from SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs rename to SunSharp/Native/SunVoxLib.Patterns.cs index b9bd334..0a57cc0 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.Patterns.cs +++ b/SunSharp/Native/SunVoxLib.Patterns.cs @@ -3,22 +3,22 @@ namespace SunSharp.Native { - public partial class SunVoxLibNativeWrapper + public partial struct SunVoxLib : ISunVoxLib { - /// - /// Clone a pattern. - /// - /// Slot number (0 to 15). - /// Pattern to clone. - /// Line number on which the pattern starts (horizontal). - /// Vertical position on the timeline. - /// The number of the newly created pattern. - /// Thrown when the operation fails. - /// - /// Requires / . - /// Calls . - /// - public int ClonePattern(int slotId, int originalPatternId, int x, int y) + /// + /// Clone a pattern. + /// + /// Slot number (0 to 15). + /// Pattern to clone. + /// Line number on which the pattern starts (horizontal). + /// Vertical position on the timeline. + /// The number of the newly created pattern. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// + public int ClonePattern(int slotId, int originalPatternId, int x, int y) { var ret = _lib.sv_new_pattern(slotId, originalPatternId, x, y, -1, -1, -1, IntPtr.Zero); @@ -175,16 +175,16 @@ public bool GetPatternExists(int slotId, int patternId) return GetPatternLines(slotId, patternId) > 0; } - /// - /// Get the number of lines in the pattern. - /// Can be used to check if a pattern exists (lines > 0). - /// - /// Slot number (0 to 15). - /// Pattern number. - /// Number of lines. - /// Thrown when the operation fails. - /// Calls . - public int GetPatternLines(int slotId, int patternId) + /// + /// Get the number of lines in the pattern. + /// Can be used to check if a pattern exists (lines > 0). + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Number of lines. + /// Thrown when the operation fails. + /// Calls . + public int GetPatternLines(int slotId, int patternId) { var ret = _lib.sv_get_pattern_lines(slotId, patternId); if (ret < 0) @@ -314,20 +314,20 @@ public int GetUpperPatternCount(int slotId) return ret; } - /// - /// Delete a pattern. - /// - /// Slot number (0 to 15). - /// Pattern number. - /// Thrown when the operation fails. - /// - /// - /// Deleting the original pattern also deletes all its clones. + /// + /// Delete a pattern. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Thrown when the operation fails. + /// + /// + /// Deleting the original pattern also deletes all its clones. /// - /// Requires / . - /// Calls . - /// - public void RemovePattern(int slotId, int patternId) + /// Requires / . + /// Calls . + /// + public void RemovePattern(int slotId, int patternId) { var ret = _lib.sv_remove_pattern(slotId, patternId); if (ret != 0) @@ -391,29 +391,29 @@ public void SetPatternData(int slotId, int patternId, PatternEvent[] data, int t } } - /// - /// Read a section or all of the pattern data into a buffer. - /// - /// Slot number (0 to 15). - /// Pattern number. - /// Buffer to receive pattern data. - /// Width of the buffer. - /// Height of the buffer. - /// Number of tracks in the buffer to skip. - /// Number of lines in the buffer to skip. - /// Number of tracks in the pattern to skip. - /// Number of lines in the pattern to skip. - /// Maximum number of tracks to read. - /// Maximum number of lines to read. - /// Number of events read. - /// Thrown if any offset or size parameter is negative. - /// Thrown if buffer length doesn't match bufferTracks * bufferLines. - /// Thrown when the operation fails. - /// - /// Requires / . - /// Calls . - /// - public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, + /// + /// Read a section or all of the pattern data into a buffer. + /// + /// Slot number (0 to 15). + /// Pattern number. + /// Buffer to receive pattern data. + /// Width of the buffer. + /// Height of the buffer. + /// Number of tracks in the buffer to skip. + /// Number of lines in the buffer to skip. + /// Number of tracks in the pattern to skip. + /// Number of lines in the pattern to skip. + /// Maximum number of tracks to read. + /// Maximum number of lines to read. + /// Number of events read. + /// Thrown if any offset or size parameter is negative. + /// Thrown if buffer length doesn't match bufferTracks * bufferLines. + /// Thrown when the operation fails. + /// + /// Requires / . + /// Calls . + /// + public int ReadPatternData(int slotId, int patternId, PatternEvent[] buffer, int bufferTracks, int bufferLines, int bufferOffsetTracks = 0, int bufferOffsetLines = 0, int readOffsetTracks = 0, int readOffsetLines = 0, int? maxTracks = null, int? maxLines = null) { diff --git a/SunSharp/Native/SunVoxLibNativeWrapper.cs b/SunSharp/Native/SunVoxLib.cs similarity index 91% rename from SunSharp/Native/SunVoxLibNativeWrapper.cs rename to SunSharp/Native/SunVoxLib.cs index 9ccc5c6..b4df78b 100644 --- a/SunSharp/Native/SunVoxLibNativeWrapper.cs +++ b/SunSharp/Native/SunVoxLib.cs @@ -3,11 +3,15 @@ namespace SunSharp.Native { - public sealed partial class SunVoxLibNativeWrapper : ISunVoxLib + /// + /// Friendlier interface for SunVox native library functions. + /// + + public readonly partial struct SunVoxLib : ISunVoxLib { - private readonly ISunVoxLibC _lib; + internal readonly ISunVoxLibC _lib; - public SunVoxLibNativeWrapper(ISunVoxLibC nativeLibrary) + public SunVoxLib(ISunVoxLibC nativeLibrary) { _lib = nativeLibrary; } @@ -237,7 +241,12 @@ public SunVoxVersion GetSongBaseVersion(int slotId) /// /// Slot number (0 to 15). /// Thrown when the operation fails. - /// Calls . + /// + /// + /// The value can be set using pattern effects. + /// + /// Calls . + /// /// public int GetSongBpm(int slotId) { @@ -293,7 +302,12 @@ public uint GetSongLengthInLines(int slotId) /// /// Slot number (0 to 15). /// Thrown when the operation fails. - /// Calls . + /// + /// + /// The value can be set using pattern effects. + /// + /// Calls . + /// public int GetSongTpl(int slotId) { var ret = _lib.sv_get_song_tpl(slotId); @@ -310,7 +324,7 @@ public int GetSongTpl(int slotId) /// /// /// - /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). System ticks are used for timing in functions like and . + /// SunVox engine uses system-provided time space, measured in system ticks (don't confuse it with the project ticks). System ticks are used for timing in functions like and . /// /// Calls . public uint GetTicks() @@ -333,16 +347,32 @@ public uint GetTicksPerSecond() /// Slot number (0 to 15). /// First line to read (usually 0). /// Number of lines to read. - /// - /// : array[X] = BPM | (TPL << 16); - /// : array[X] = frame counter. - /// - /// Array with time map values. + /// Array with frame counts for each line. /// Thrown when the operation fails. /// Calls . - public uint[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) + public uint[] GetTimeMapFrames(int slotId, int startLine, int length) { - var arr = new uint[length]; + return GetTimeMap(slotId, startLine, length, TimeMapType.FrameCount); + } + + /// + /// Get the project time map. + /// + /// Slot number (0 to 15). + /// First line to read (usually 0). + /// Number of lines to read. + /// Array with information about speed for each line. + /// Thrown when the operation fails. + /// Calls . + public Speed[] GetTimeMapSpeed(int slotId, int startLine, int length) + { + return GetTimeMap(slotId, startLine, length, TimeMapType.Speed); + } + + private T[] GetTimeMap(int slotId, int startLine, int length, TimeMapType type) + where T : unmanaged + { + var arr = new T[length]; var handle = GCHandle.Alloc(arr, GCHandleType.Pinned); int ret; try @@ -631,6 +661,7 @@ public byte[] SaveToMemory(int slotId) /// /// Send an event to the SunVox engine. + /// Sends the specified pattern event to the given track. The event will be processed according to the last set timing. /// /// Slot number (0 to 15). /// Track number within the virtual pattern. @@ -643,7 +674,7 @@ public void SendEvent(int slotId, int track, PatternEvent data) } /// - /// Send an event to the SunVox engine. + /// /// /// Slot number (0 to 15). /// Track number within the virtual pattern. @@ -674,45 +705,56 @@ public void SendEvent(int slotId, int track, int nn = 0, int vv = 0, int mm = 0, /// Set autostop mode. When OFF, the project loops endlessly. /// /// Slot number (0 to 15). - /// + /// /// - stop at the end. /// /// Thrown when the operation fails. /// Calls . - public void SetAutomaticStop(int slotId, bool autoStop) + public void SetAutomaticStop(int slotId, bool enable) { - var ret = _lib.sv_set_autostop(slotId, autoStop ? 1 : 0); + var ret = _lib.sv_set_autostop(slotId, enable ? 1 : 0); if (ret != 0) { throw new SunVoxException(ret, nameof(_lib.sv_set_autostop), - $"{nameof(slotId)}: {slotId}, {nameof(autoStop)}: {autoStop}."); + $"{nameof(slotId)}: {slotId}, {nameof(enable)}: {enable}."); } } /// /// Set the timestamp of events sent by . /// Every event has a timestamp (when it was generated, e.g., key press time). - /// If timestamp is zero: event is heard as quickly as possible. /// If nonzero: event is heard at timestamp + sound latency * 2. /// /// Slot number (0 to 15). - /// - /// - set timestamp; - /// - reset (ignores ). - /// - /// + /// /// Timestamp (in system ticks) for future events. - /// If not zero, must be ≥ previous value for same slot. See . + /// If not zero, must be ≥ previous value for same slot. See and . /// /// Thrown when the operation fails. /// Calls . - public void SetSendEventTimestamp(int slotId, bool reset, int t) + public void SetEventTiming(int slotId, int timestamp) { - var ret = _lib.sv_set_event_t(slotId, reset ? 0 : 1, t); + var ret = _lib.sv_set_event_t(slotId, 0, timestamp); if (ret != 0) { throw new SunVoxException(ret, nameof(_lib.sv_set_event_t), - $"{nameof(slotId)}: {slotId}, {nameof(reset)}: {reset}, {nameof(t)}: {t}."); + $"{nameof(slotId)}: {slotId}, {nameof(timestamp)}: {timestamp}."); + } + } + + /// + /// Reset the timestamp of events sent by . + /// If timestamp is zero: event is heard as quickly as possible. + /// + /// Slot number (0 to 15). + /// Thrown when the operation fails. + /// Calls . + public void ResetEventTiming(int slotId) + { + var ret = _lib.sv_set_event_t(slotId, 1, 0); + if (ret != 0) + { + throw new SunVoxException(ret, nameof(_lib.sv_set_event_t), $"{nameof(slotId)}: {slotId}."); } } @@ -720,19 +762,19 @@ public void SetSendEventTimestamp(int slotId, bool reset, int t) /// Set the project name. /// /// Slot number (0 to 15). - /// New project name. + /// New project name. /// Thrown when the operation fails. /// Calls . - public void SetSongName(int slotId, string newName) + public void SetSongName(int slotId, string value) { - var ptr = Marshal.StringToCoTaskMemUTF8(newName); + var ptr = Marshal.StringToCoTaskMemUTF8(value); try { var ret = _lib.sv_set_song_name(slotId, ptr); if (ret != 0) { throw new SunVoxException(ret, nameof(_lib.sv_set_song_name), - $"{nameof(slotId)}: {slotId}, {nameof(newName)}: '{newName ?? ""}'."); + $"{nameof(slotId)}: {slotId}, {nameof(value)}: '{value ?? ""}'."); } } finally diff --git a/SunSharp/PatternHandle.cs b/SunSharp/PatternHandle.cs index 191f6b9..ac58463 100644 --- a/SunSharp/PatternHandle.cs +++ b/SunSharp/PatternHandle.cs @@ -2,55 +2,74 @@ namespace SunSharp { - /// - /// Represents a handle to a pattern. The handle may be invalid if the pattern does not exist. - /// + /// public interface IPatternHandle { + /// int Id { get; } + /// bool GetExists(); + /// string? GetName(); + /// void SetName(string name); + /// (int x, int y) GetPosition(); + /// void SetPosition(int x, int y); + /// int GetTrackCount(); + /// int GetLength(); - /// - /// Resize the pattern. - /// - /// to leave as is. - /// to leave as is. + /// void Resize(int? tracks = null, int? lines = null); + /// (PatternEvent[] data, int tracks, int lines)? GetData(); + /// void SetData(PatternEvent[] data, int tracks, int lines); + /// void SetMuted(int id, bool mute); + /// bool GetMuted(int id); + /// void SetEvent(int track, int line, PatternEvent patternEvent); + /// void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int xxyy); + /// int GetEventValue(int track, int line, Column column); } + /// + /// Represents a handle to a pattern. The handle may be invalid if the pattern does not exist. + /// public readonly struct PatternHandle : IPatternHandle { +#if RELEASE + private readonly SunVoxLib _lib; +#else private readonly ISunVoxLib _lib; +#endif private readonly int _slotId; private readonly Slot _slot; + /// + /// Gets the pattern ID. + /// public int Id { get; } public PatternHandle(Timeline timeline, int id) @@ -61,19 +80,19 @@ public PatternHandle(Timeline timeline, int id) Id = id; } - /// + /// public bool GetExists() { return _lib.GetPatternExists(_slotId, Id); } - /// + /// public string? GetName() { return _lib.GetPatternName(_slotId, Id); } - /// + /// public void SetName(string name) { var lib = _lib; @@ -85,13 +104,13 @@ public void SetName(string name) } } - /// + /// public (int x, int y) GetPosition() { return _lib.GetPatternPosition(_slotId, Id); } - /// + /// public void SetPosition(int x, int y) { var lib = _lib; @@ -103,13 +122,18 @@ public void SetPosition(int x, int y) } } - /// + /// public int GetTrackCount() => _lib.GetPatternTracks(_slotId, Id); - /// + /// public int GetLength() => _lib.GetPatternLines(_slotId, Id); - /// + /// + /// Resize the pattern. + /// + /// to leave as is. + /// to leave as is. + /// public void Resize(int? tracks = null, int? lines = null) { var lib = _lib; @@ -122,7 +146,7 @@ public void Resize(int? tracks = null, int? lines = null) } } - /// + /// public (PatternEvent[] data, int tracks, int lines)? GetData() { var slotId = _slotId; @@ -134,7 +158,7 @@ public void Resize(int? tracks = null, int? lines = null) } } - /// + /// public void SetData(PatternEvent[] data, int tracks, int lines) { var slotId = _slotId; @@ -146,7 +170,7 @@ public void SetData(PatternEvent[] data, int tracks, int lines) } } - /// + /// public void SetMuted(int id, bool mute) { var lib = _lib; @@ -157,7 +181,7 @@ public void SetMuted(int id, bool mute) } } - /// + /// public bool GetMuted(int id) { using (_slot.AcquireLock()) @@ -166,7 +190,7 @@ public bool GetMuted(int id) } } - /// + /// public void SetEvent(int track, int line, PatternEvent patternEvent) { var lib = _lib; @@ -179,7 +203,7 @@ public void SetEvent(int track, int line, PatternEvent patternEvent) } } - /// + /// public void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { var lib = _lib; @@ -192,7 +216,7 @@ public void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int } } - /// + /// public int GetEventValue(int track, int line, Column column) { var lib = _lib; diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index c06aeaa..2f5e542 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -41,167 +41,149 @@ public SlotAlreadyClosedException(string message, Exception innerException) : ba } } - /// - /// Represents a SunVox slot. - /// + /// public interface ISlot { + /// int Id { get; } - /// - /// Virtual, 16-track pattern for sending events to the engine. - /// + /// IVirtualPattern VirtualPattern { get; } - /// - /// Project timeline, containing all the existing patterns. - /// + /// ITimeline Timeline { get; } - /// - /// Project synthesizer, containing all the existing modules. - /// + /// ISynthesizer Synthesizer { get; } - /// - /// SunVox instance this slot belongs to. - /// + /// ISunVox SunVox { get; } - /// - /// Underlying library instance. - /// - ISunVoxLib Library { get; } - - /// - /// Gets a value indicating whether the slot is currently open. - /// + /// bool IsOpen { get; } - /// - /// Can be used instead of the and methods, - /// taking advantage of the keyword. - /// + /// IDisposable AcquireLock(); - /// - /// Locks the library-side reentrant mutex once. - /// + /// void Lock(); - /// - /// Unlocks the library-side reentrant mutex once. - /// + /// void Unlock(); - /// - /// Opens the slot for use. Uses the shared slot management lock for thread safety. - /// + /// void Open(); - /// - /// Closes the slot. Uses the shared slot management lock for thread safety. - /// + /// void Close(); - /// - /// Load a project from file. - /// + /// void Load(string path); - /// - /// load a project from memory. - /// + /// void Load(byte[] data); - /// - /// Save a project to file. - /// + /// void Save(string path); + /// void StartPlayback(); + /// void StartPlaybackFromBeginning(); + /// void StopPlayback(); + /// void ResumeStreamOnSyncEffect(); + /// void PauseAudioStream(); + /// void ResumeAudioStream(); + /// void SetAutomaticStop(bool enable); + /// bool GetAutomaticStop(); + /// bool IsPlaying(); + /// void Rewind(int lineNumber); + /// int GetCurrentLine(); - /// - /// Get current line in fixed point format (with tenth part). - /// + /// int GetCurrentLineWithTenthPart(); - int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono); + /// + int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Left); + /// int GetVolume(); + /// void SetVolume(int value); + /// int GetSongBpm(); - /// - /// Sets the beats per minute (BPM) for the current song. - /// The value is clamped to the range [0, 800]. - /// - void SetSongBpm(int value); - + /// int GetSongTpl(); - /// - /// Sets song TPL (ticks per line) by sending a event. - /// The value is clamped to the range [1, 31]. - /// - void SetSongTpl(int value); - + /// uint GetSongLengthInLines(); + /// uint GetSongLengthInFrames(); + /// string? GetSongName(); - void SetSongName(string name); + /// + void SetSongName(string value); - /// - /// Get the project time map. - /// - /// - /// For = , n-th value equals speed at the beginning of n-th line (Bpm | Tpl << 16). - /// For = , n-th value equals frame counter at the beginning of Nth line. - /// - uint[] GetTimeMap(int startLine, int length, TimeMapType type); + /// + uint[] GetTimeMapFrames(int startLine, int length); + + /// + Speed[] GetTimeMapSpeed(int startLine, int length); } - /// + /// + /// Represents a SunVox slot. + /// public sealed class Slot : ISlot { - /// + /// + /// Gets the slot ID. + /// public int Id { get; } - /// + /// + /// Virtual, 16-track pattern for sending events to the engine. + /// public VirtualPattern VirtualPattern { get; } - /// + /// + /// Project timeline, containing all the existing patterns. + /// public Timeline Timeline { get; } - /// + /// + /// Project synthesizer, containing all the existing modules. + /// public Synthesizer Synthesizer { get; } - /// + /// + /// SunVox instance this slot belongs to. + /// public SunVox SunVox { get; } /// @@ -216,10 +198,18 @@ public sealed class Slot : ISlot /// ISunVox ISlot.SunVox => SunVox; - /// + /// + /// Underlying library instance. + /// +#if RELEASE + public SunVoxLib Library { get; } +#else public ISunVoxLib Library { get; } +#endif - /// + /// + /// Gets a value indicating whether the slot is currently open. + /// public bool IsOpen { get; private set; } private readonly object _slotManagementLock; @@ -237,13 +227,16 @@ internal Slot(int id, object slotManagementLock, SunVox sunVox) #region locks - /// + /// public void Lock() => Library.LockSlot(Id); - /// + /// public void Unlock() => Library.UnlockSlot(Id); - /// + /// + /// Can be used instead of the and methods, + /// taking advantage of the keyword. + /// public IDisposable AcquireLock() { return new SlotLock(SunVox, Id); @@ -253,7 +246,12 @@ public IDisposable AcquireLock() #region open, close - /// + /// + /// Opens the slot for use. Uses the shared slot management lock for thread safety. + /// + /// + /// Calls . + /// public void Open() { lock (_slotManagementLock) @@ -271,7 +269,12 @@ public void Open() } } - /// + /// + /// Closes the slot. Uses the shared slot management lock for thread safety. + /// + /// + /// Calls . + /// public void Close() { lock (_slotManagementLock) @@ -290,135 +293,105 @@ public void Close() #region loading, saving - /// + /// public void Load(string path) { - using (AcquireLock()) - { - Library.Load(Id, path); - } + Library.Load(Id, path); } - /// + /// public void Load(byte[] data) { - using (AcquireLock()) - { - Library.Load(Id, data); - } + Library.Load(Id, data); } - /// + /// public void Save(string path) { - using (AcquireLock()) - { - Library.SaveToFile(Id, path); - } + Library.SaveToFile(Id, path); } #endregion loading, saving #region playing, stopping - /// + /// public void StartPlayback() { - using (AcquireLock()) - { - Library.StartPlayback(Id); - } + Library.StartPlayback(Id); } - /// + /// public void StartPlaybackFromBeginning() { - using (AcquireLock()) - { - Library.StartPlaybackFromBeginning(Id); - } + Library.StartPlaybackFromBeginning(Id); } - /// + /// public void StopPlayback() { - using (AcquireLock()) - { - Library.StopPlayback(Id); - } + Library.StopPlayback(Id); } - /// + /// public void ResumeStreamOnSyncEffect() { - using (AcquireLock()) - { - Library.ResumeStreamOnSyncEffect(Id); - } + Library.ResumeStreamOnSyncEffect(Id); } - /// + /// public void PauseAudioStream() { - using (AcquireLock()) - { - Library.PauseAudioStream(Id); - } + Library.PauseAudioStream(Id); } - /// + /// public void ResumeAudioStream() { - using (AcquireLock()) - { - Library.ResumeAudioStream(Id); - } + Library.ResumeAudioStream(Id); } - /// + /// public void SetAutomaticStop(bool enable) { - using (AcquireLock()) - { - Library.SetAutomaticStop(Id, enable); - } + Library.SetAutomaticStop(Id, enable); } - /// + /// public bool GetAutomaticStop() { return Library.GetAutomaticStop(Id); } - /// + /// public bool IsPlaying() { return Library.IsPlaying(Id); } - /// + /// public void Rewind(int lineNumber) { - using (AcquireLock()) - { - Library.Rewind(Id, lineNumber); - } + Library.Rewind(Id, lineNumber); } - /// + /// public int GetCurrentLine() { return Library.GetCurrentLine(Id); } - /// + /// + /// Get current line in fixed point format (with tenth part). + /// + /// public int GetCurrentLineWithTenthPart() { return Library.GetCurrentLineWithTenthPart(Id); } - /// - public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) + /// + public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Left) { return Library.GetCurrentSignalLevel(Id, channel); } @@ -427,72 +400,64 @@ public int GetCurrentSignalLevel(AudioChannel channel = AudioChannel.Mono) #region song properties - /// + /// public int GetVolume() { return Library.Volume(Id, -1); } - /// + /// public void SetVolume(int value) { Library.Volume(Id, value); } - /// + /// public int GetSongBpm() { return Library.GetSongBpm(Id); } - /// - public void SetSongBpm(int value) - { - var xxyy = (ushort)Math.Min(Math.Max(0, value), 800); - VirtualPattern.SendEventImmediately(0, PatternEvent.EffectEvent(null, Effect.SetBpm, xxyy)); - } - - /// + /// public int GetSongTpl() { return Library.GetSongTpl(Id); } - /// - public void SetSongTpl(int value) - { - var xxyy = (ushort)Math.Min(Math.Max(1, value), 31); - VirtualPattern.SendEventImmediately(0, PatternEvent.EffectEvent(null, Effect.SetPlayingSpeed, xxyy)); - } - - /// + /// public uint GetSongLengthInLines() { return Library.GetSongLengthInLines(Id); } - /// + /// public uint GetSongLengthInFrames() { return Library.GetSongLengthInFrames(Id); } - /// + /// public string? GetSongName() { return Library.GetSongName(Id); } - /// - public void SetSongName(string name) + /// + public void SetSongName(string value) { - Library.SetSongName(Id, name); + Library.SetSongName(Id, value); } - /// - public uint[] GetTimeMap(int startLine, int length, TimeMapType type) + /// + public uint[] GetTimeMapFrames(int startLine, int length) + { + return Library.GetTimeMapFrames(Id, startLine, length); + } + + /// + public Speed[] GetTimeMapSpeed(int startLine, int length) { - return Library.GetTimeMap(Id, startLine, length, type); + return Library.GetTimeMapSpeed(Id, startLine, length); } #endregion song properties diff --git a/SunSharp/Speed.cs b/SunSharp/Speed.cs new file mode 100644 index 0000000..e37d66d --- /dev/null +++ b/SunSharp/Speed.cs @@ -0,0 +1,71 @@ +using System.Runtime.InteropServices; + +namespace SunSharp +{ + /// + /// Contains beats per minute and ticks per line. + /// + [StructLayout(LayoutKind.Explicit, Size = 4)] + public readonly struct Speed + { + /// + /// Beats per minute. + /// + [field: FieldOffset(0)] + public short Bpm { get; } + + /// + /// Ticks per line. + /// + [field: FieldOffset(2)] + public short Tpl { get; } + + [field: FieldOffset(0)] + public uint Value { get; } + + public Speed(short bpm, short tpl) + { + Value = 0; + Bpm = bpm; + Tpl = tpl; + } + + public Speed(uint value) + { + Bpm = 0; + Tpl = 0; + Value = value; + } + + public static implicit operator Speed(uint value) => new Speed(value); + + public static implicit operator uint(Speed speed) => speed.Value; + + public override string ToString() => $"BPM: {Bpm}, TPL: {Tpl}"; + + public override bool Equals(object? obj) + { + return obj is Speed other && Equals(other); + } + + public bool Equals(Speed other) + { + return Value == other.Value; + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + + public static bool operator ==(Speed left, Speed right) + { + return left.Equals(right); + } + + public static bool operator !=(Speed left, Speed right) + { + return !(left == right); + } + } +} diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index d5fb0e6..f3a744f 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -34,6 +34,10 @@ GENERATION + + + RELEASE + diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs index e1d9540..fa8ccfd 100644 --- a/SunSharp/SunVox.cs +++ b/SunSharp/SunVox.cs @@ -69,7 +69,11 @@ public sealed class SunVox : ISunVox /// /// The underlying library interface. Direct use may break existing abstractions. /// +#if RELEASE + public SunVoxLib Library { get; } +#else public ISunVoxLib Library { get; } +#endif /// public Slots Slots { get; } @@ -105,8 +109,12 @@ public sealed class SunVox : ISunVox /// Leave for the value to be assigned by the engine. /// Leave for the value to be assigned by the engine. /// Limit information sent to Standard Output. - public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, - string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) +#if RELEASE + + public SunVox(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) +#else + public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) +#endif { var flags = SunVoxInitOptions.None; if (noDebugOutput) @@ -116,7 +124,11 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, var configuration = AssembleConfigurationParams(bufferSize, deviceIn, deviceOut, driver); +#if RELEASE + Library = new SunVoxLib(library); +#else Library = library; +#endif Version = Library.Initialize(sampleRate: -1, config: configuration, channels: channels, options: flags); SampleRate = Library.GetSampleRate(); SingleThreaded = false; @@ -135,8 +147,14 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, /// Use to promise that audio callback and other methods will be called from one thread. /// Limit information sent to Standard Output. /// +#if RELEASE + + public SunVox(ISunVoxLibC library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, + bool singleThreaded = false, bool noDebugOutput = true) +#else public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) +#endif { var flags = ConstructInitFlags(SunVoxInitOptions.UserAudioCallback, noDebugOutput, outputType, singleThreaded); @@ -145,7 +163,11 @@ public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioCh throw new ArgumentException($"Invalid value: {sampleRate}", nameof(sampleRate)); } +#if RELEASE + Library = new SunVoxLib(library); +#else Library = library; +#endif Version = Library.Initialize(sampleRate: sampleRate, channels: channels, options: flags); SampleRate = Library.GetSampleRate(); SingleThreaded = false; diff --git a/SunSharp/SynthModuleHandle.cs b/SunSharp/SynthModuleHandle.cs index ae9c22d..c565c14 100644 --- a/SunSharp/SynthModuleHandle.cs +++ b/SunSharp/SynthModuleHandle.cs @@ -2,133 +2,139 @@ namespace SunSharp { - /// - /// Represents a handle to a generic synthesizer module, providing access to module properties - /// and operations regardless of the underlying module type. - /// + /// public interface IGenericSynthModuleHandle { - /// - /// Gets the ID of the synthessizer module. - /// + /// int Id { get; } - /// - /// Gets the slot associated with this instance. - /// + /// ISlot Slot { get; } + /// ModuleFlags GetFlags(); - /// - /// Returns the module type. If the module does not exist, returns . - /// If the module type is unknown (due to library mismatch or otherwise), returns . - /// - /// + /// SynthModuleType? GetModuleType(); + /// bool GetExists(); + /// FineTunePair GetFineTune(); + /// void SetFineTune(FineTunePair fineTune); - /// - /// Read module scope view, and write it to a buffer. - /// - /// Number of samples successfully read. + /// int ReadScope(AudioChannel channel, short[] buffer); + /// string? GetName(); + /// void SetName(string name); + /// (int x, int y) GetPosition(); + /// void SetPosition(int x, int y); + /// (byte R, byte G, byte B) GetColor(); + /// void SetColor(byte r, byte g, byte b); + /// int[] GetInputs(); + /// ISynthModuleHandle[] GetInputModules(); + /// int[] GetOutputs(); + /// ISynthModuleHandle[] GetOutputModules(); } public partial interface ISynthModuleHandle : IGenericSynthModuleHandle { - /// - /// Load a sample (xi, wav, aiff) to a Sampler module from file. - /// - /// - /// Set to to apply the sample to all - /// sample slots. - /// + /// void LoadSamplerSample(string path, int? sampleSlot = null); - /// - /// Load a sample (xi, wav, aiff) to a Sampler module from memory. Set to -1 to apply the sample to all sample slots. - /// + /// void LoadSamplerSample(byte[] data, int? sampleSlot = null); - /// - /// load a file into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// + /// void LoadIntoMetaModule(string path); - /// - /// load a file from memory into the MetaModule. Supported file formats: sunvox, mod, xm, midi. - /// + /// void LoadIntoMetaModule(byte[] data); - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// + /// void LoadIntoVorbisPlayer(string path); - /// - /// load a file into the Vorbis Player. Supported file formats: ogg. - /// + /// void LoadIntoVorbisPlayer(byte[] data); + /// int WriteCurve(int curveId, float[] buffer); + /// int ReadCurve(int curveId, float[] buffer); + /// int GetControllerCount(); + /// string? GetControllerName(int controllerId); + /// int GetControllerValue(int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed); + /// void SetControllerValue(int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed); + /// int GetControllerMinValue(int controllerId, ValueScalingMode scaling); + /// int GetControllerMaxValue(int controllerId, ValueScalingMode scaling); + /// int GetControllerOffset(int controllerId); + /// ControllerType GetControllerType(int controllerId); + /// int GetControllerGroup(int controllerId); } - /// + /// + /// Represents a handle to a generic synthesizer module, providing access to module properties + /// and operations regardless of the underlying module type. + /// public readonly partial struct SynthModuleHandle : ISynthModuleHandle { +#if RELEASE + private readonly SunVoxLib _lib; +#else private readonly ISunVoxLib _lib; +#endif private readonly int _slotId; - /// + /// + /// Gets the ID of the synthesizer module. + /// public int Id { get; } + /// + /// Gets the slot associated with this instance. + /// public Slot Slot { get; } ISlot IGenericSynthModuleHandle.Slot => Slot; @@ -143,13 +149,16 @@ public SynthModuleHandle(Slot slot, int id) #region general - /// + /// public ModuleFlags GetFlags() { return _lib.GetModuleFlags(_slotId, Id); } - /// + /// + /// Returns the module type. If the module does not exist, returns . + /// If the module type is unknown (due to library mismatch or otherwise), returns . + /// public SynthModuleType? GetModuleType() { var moduleType = _lib.GetModuleType(_slotId, Id); @@ -160,26 +169,32 @@ public ModuleFlags GetFlags() return SynthModuleTypeHelper.TypeFromInternalName(moduleType); } - /// + /// public bool GetExists() { return _lib.GetModuleExists(_slotId, Id); } - /// + /// public FineTunePair GetFineTune() { return _lib.GetModuleFineTune(_slotId, Id); } - /// + /// + /// Sets the fine tune for the module. + /// public void SetFineTune(FineTunePair fineTune) { _lib.SetModuleRelativeNote(_slotId, Id, fineTune.RelativeNote); _lib.SetModuleFineTune(_slotId, Id, fineTune.FineTune); } - /// + /// + /// Read module scope view, and write it to a buffer. + /// + /// Number of samples successfully read. + /// public int ReadScope(AudioChannel channel, short[] buffer) { return _lib.ReadModuleScope(_slotId, Id, channel, buffer); @@ -189,37 +204,37 @@ public int ReadScope(AudioChannel channel, short[] buffer) #region cosmetic - /// + /// public string? GetName() { return _lib.GetModuleName(_slotId, Id); } - /// + /// public void SetName(string name) { _lib.SetModuleName(_slotId, Id, name); } - /// + /// public (int x, int y) GetPosition() { return _lib.GetModulePosition(_slotId, Id); } - /// + /// public void SetPosition(int x, int y) { _lib.SetModulePosition(_slotId, Id, x, y); } - /// + /// public (byte R, byte G, byte B) GetColor() { return _lib.GetModuleColor(_slotId, Id); } - /// + /// public void SetColor(byte r, byte g, byte b) { _lib.SetModuleColor(_slotId, Id, r, g, b); @@ -229,13 +244,15 @@ public void SetColor(byte r, byte g, byte b) #region connections - /// + /// public int[] GetInputs() { return _lib.GetModuleInputs(_slotId, Id); } - /// + /// + /// Gets the input modules connected to this module. + /// public SynthModuleHandle[] GetInputModules() { return ToHandles(GetInputs()); @@ -246,14 +263,16 @@ ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() return ToInterfaceHandles(GetInputs()); } - /// + /// public int[] GetOutputs() { return _lib.GetModuleInputs(_slotId, Id); } - /// - public SynthModuleHandle[] GetModuleOutputs() + /// + /// Gets the output modules connected to this module. + /// + public SynthModuleHandle[] GetOutputModules() { return ToHandles(GetOutputs()); } @@ -287,7 +306,13 @@ private ISynthModuleHandle[] ToInterfaceHandles(int[] connections) #region specific data IO - /// + /// + /// Load a sample (xi, wav, aiff) to a Sampler module from file. + /// + /// + /// Set to to apply the sample to all sample slots. + /// + /// public void LoadSamplerSample(string path, int? sampleSlot = null) { var lib = _lib; @@ -299,43 +324,49 @@ public void LoadSamplerSample(string path, int? sampleSlot = null) } } - /// + /// + /// Load a sample (xi, wav, aiff) to a Sampler module from memory. + /// + /// + /// Set to to apply the sample to all sample slots. + /// + /// public void LoadSamplerSample(byte[] data, int? sampleSlot = null) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (Slot.AcquireLock()) - { - lib.LoadSamplerSample(slotId, id, data, sampleSlot); - } + _lib.LoadSamplerSample(_slotId, Id, data, sampleSlot); } - /// + /// public void LoadIntoMetaModule(string path) { _lib.LoadIntoMetaModule(_slotId, Id, path); } - /// + /// public void LoadIntoMetaModule(byte[] data) { _lib.LoadIntoMetaModule(_slotId, Id, data); } - /// + /// + /// Load a file into the Vorbis Player. Supported file formats: ogg. + /// + /// public void LoadIntoVorbisPlayer(string path) { _lib.LoadIntoVorbisPlayer(_slotId, Id, path); } - /// + /// + /// Load a file into the Vorbis Player. Supported file formats: ogg. + /// + /// public void LoadIntoVorbisPlayer(byte[] data) { _lib.LoadIntoVorbisPlayer(_slotId, Id, data); } - /// + /// public int WriteCurve(int curveId, float[] buffer) { var lib = _lib; @@ -347,7 +378,7 @@ public int WriteCurve(int curveId, float[] buffer) } } - /// + /// public int ReadCurve(int curveId, float[] buffer) { var lib = _lib; @@ -363,55 +394,55 @@ public int ReadCurve(int curveId, float[] buffer) #region controllers - /// + /// public int GetControllerCount() { return _lib.GetModuleControllerCount(_slotId, Id); } - /// + /// public string? GetControllerName(int controllerId) { return _lib.GetModuleControllerName(_slotId, Id, controllerId); } - /// + /// public int GetControllerValue(int controllerId, ValueScalingMode scaling = ValueScalingMode.Displayed) { return _lib.GetModuleControllerValue(_slotId, Id, controllerId, scaling); } - /// + /// public void SetControllerValue(int controller, int value, ValueScalingMode scaling = ValueScalingMode.Displayed) { _lib.SetModuleControllerValue(_slotId, Id, controller, value, scaling); } - /// + /// public int GetControllerMinValue(int controllerId, ValueScalingMode scaling) { return _lib.GetModuleControllerMinValue(_slotId, Id, controllerId, scaling); } - /// + /// public int GetControllerMaxValue(int controllerId, ValueScalingMode scaling) { return _lib.GetModuleControllerMaxValue(_slotId, Id, controllerId, scaling); } - /// + /// public int GetControllerOffset(int controllerId) { return _lib.GetModuleControllerOffset(_slotId, Id, controllerId); } - /// + /// public ControllerType GetControllerType(int controllerId) { return _lib.GetModuleControllerType(_slotId, Id, controllerId); } - /// + /// public int GetControllerGroup(int controllerId) { return _lib.GetModuleControllerGroup(_slotId, Id, controllerId); diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index a30a5d4..3e794c6 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -5,60 +5,70 @@ namespace SunSharp { + /// public interface ISynthesizer : IEnumerable { + /// ISlot Slot { get; } + /// int GetUpperModuleCount(); + /// bool GetModuleExists(int moduleId); + /// ModuleFlags GetModuleFlags(int moduleId); + /// bool TryGetModule(int moduleId, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle); + /// bool TryGetModule(string name, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle); + /// ISynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0); - /// - /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// - /// - /// - /// - /// + /// ISynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0); - /// - /// load a module or sample. Supported file formats: sunsynth, xi, wav, aiff. - /// - /// - /// - /// - /// - /// + /// ISynthModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0); + /// void RemoveModule(int moduleId); + /// void RemoveModule(ISynthModuleHandle moduleHandle); + /// void ConnectModule(int sourceId, int destinationId); + /// void ConnectModule(ISynthModuleHandle source, ISynthModuleHandle destination); + /// void DisconnectModule(int sourceId, int destinationId); + /// void DisconnectModule(ISynthModuleHandle source, ISynthModuleHandle destination); } + /// + /// Project synthesizer, containing all the existing modules. + /// public class Synthesizer : ISynthesizer, IEnumerable { +#if RELEASE + private readonly SunVoxLib _lib; +#else private readonly ISunVoxLib _lib; +#endif private readonly int _id; + /// + /// Gets the slot this synthesizer belongs to. + /// public Slot Slot { get; } ISlot ISynthesizer.Slot => Slot; @@ -70,25 +80,27 @@ internal Synthesizer(Slot slot) _id = slot.Id; } - /// + /// public int GetUpperModuleCount() { return _lib.GetUpperModuleCount(_id); } - /// + /// public bool GetModuleExists(int moduleId) { return _lib.GetModuleExists(_id, moduleId); } - /// + /// public ModuleFlags GetModuleFlags(int moduleId) { return _lib.GetModuleFlags(_id, moduleId); } - /// + /// + /// Tries to get a module by ID. + /// public bool TryGetModule(int moduleId, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { if (_lib.GetModuleExists(_id, moduleId)) @@ -101,7 +113,9 @@ public bool TryGetModule(int moduleId, [NotNullWhen(true)] out SynthModuleHandle return false; } - /// + /// + /// Tries to get a module by name. + /// public bool TryGetModule(string name, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { var moduleId = _lib.FindModule(_id, name); @@ -141,7 +155,7 @@ bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out ISynthModule return false; } - /// + /// public SynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0) { using (Slot.AcquireLock()) @@ -157,7 +171,10 @@ ISynthModuleHandle ISynthesizer.CreateModule(SynthModuleType type, string name, return CreateModule(type, name, x, y, z); } - /// + /// + /// Load a module or sample from memory. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// public SynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) { using (Slot.AcquireLock()) @@ -167,7 +184,10 @@ public SynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0 } } - /// + /// + /// Load a module or sample from file. Supported file formats: sunsynth, xi, wav, aiff. + /// + /// public SynthModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) { using (Slot.AcquireLock()) @@ -189,7 +209,7 @@ ISynthModuleHandle ISynthesizer.LoadModule(string path, int x, int y, int z) return LoadModule(path, x, y, z); } - /// + /// public void RemoveModule(int moduleId) { using (Slot.AcquireLock()) @@ -198,7 +218,9 @@ public void RemoveModule(int moduleId) } } - /// + /// + /// Removes a module from the synthesizer. + /// public void RemoveModule(SynthModuleHandle moduleHandle) { RemoveModule(moduleHandle.Id); @@ -210,7 +232,7 @@ void ISynthesizer.RemoveModule(ISynthModuleHandle moduleHandle) RemoveModule(moduleHandle.Id); } - /// + /// public void ConnectModule(int sourceId, int destinationId) { using (Slot.AcquireLock()) @@ -219,7 +241,9 @@ public void ConnectModule(int sourceId, int destinationId) } } - /// + /// + /// Connects two modules. + /// public void ConnectModule(SynthModuleHandle source, SynthModuleHandle destination) { ConnectModule(source.Id, destination.Id); @@ -231,7 +255,7 @@ void ISynthesizer.ConnectModule(ISynthModuleHandle source, ISynthModuleHandle de ConnectModule(source.Id, destination.Id); } - /// + /// public void DisconnectModule(int sourceId, int destinationId) { using (Slot.AcquireLock()) @@ -240,7 +264,9 @@ public void DisconnectModule(int sourceId, int destinationId) } } - /// + /// + /// Disconnects two modules. + /// public void DisconnectModule(SynthModuleHandle source, SynthModuleHandle destination) { DisconnectModule(source.Id, destination.Id); diff --git a/SunSharp/Timeline.cs b/SunSharp/Timeline.cs index 460ed5c..cd16e09 100644 --- a/SunSharp/Timeline.cs +++ b/SunSharp/Timeline.cs @@ -5,34 +5,52 @@ namespace SunSharp { + /// public interface ITimeline : IEnumerable { + /// ISlot Slot { get; } + /// int GetUpperPatternCount(); + /// bool GetPatternExists(int patternId); + /// bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern); + /// bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? pattern); + /// IPatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null); + /// int ClonePattern(int id, int x, int y); + /// IPatternHandle ClonePattern(IPatternHandle original, int x, int y); } + /// + /// Project timeline, containing all the existing patterns. + /// public sealed class Timeline : ITimeline, IEnumerable { - /// + /// + /// Gets the slot this timeline belongs to. + /// public Slot Slot { get; } /// ISlot ITimeline.Slot => Slot; +#if RELEASE + private readonly SunVoxLib _lib; +#else private readonly ISunVoxLib _lib; +#endif private readonly int _slotId; internal Timeline(Slot slot) @@ -42,19 +60,21 @@ internal Timeline(Slot slot) _slotId = slot.Id; } - /// + /// public int GetUpperPatternCount() { return _lib.GetUpperPatternCount(_slotId); } - /// + /// public bool GetPatternExists(int patternId) { return _lib.GetPatternExists(_slotId, patternId); } - /// + /// + /// Tries to get a pattern by name. + /// public bool TryGetPattern(string name, [NotNullWhen(true)] out PatternHandle? pattern) { var id = _lib.FindPattern(_slotId, name); @@ -69,7 +89,9 @@ public bool TryGetPattern(string name, [NotNullWhen(true)] out PatternHandle? pa return false; } - /// + /// + /// Tries to get a pattern by ID. + /// public bool TryGetPattern(int id, [NotNullWhen(true)] out PatternHandle? pattern) { if (_lib.GetPatternExists(_slotId, id)) @@ -112,7 +134,7 @@ public bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? patter } } - /// + /// public PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null) { using (Slot.AcquireLock()) @@ -127,6 +149,7 @@ IPatternHandle ITimeline.CreatePattern(int lines, int tracks, int x, int y, int return CreatePattern(lines, tracks, x, y, iconSeed, name); } + /// public int ClonePattern(int id, int x, int y) { using (Slot.AcquireLock()) @@ -135,6 +158,9 @@ public int ClonePattern(int id, int x, int y) } } + /// + /// Clones a pattern and returns a handle to the new pattern. + /// public PatternHandle ClonePattern(PatternHandle original, int x, int y) { return new PatternHandle(this, ClonePattern(original.Id, x, y)); diff --git a/SunSharp/VirtualPattern.cs b/SunSharp/VirtualPattern.cs index 111e613..1662f85 100644 --- a/SunSharp/VirtualPattern.cs +++ b/SunSharp/VirtualPattern.cs @@ -2,133 +2,107 @@ namespace SunSharp { + /// public interface IVirtualPattern { + /// ISlot Slot { get; } + /// uint GetCurrentTick(); + /// uint GetTicksPerSecond(); - /// - /// Send an event to be processed as fast as possible. This ignores any previously set timing. - /// - void SendEventImmediately(int track, PatternEvent e); - - /// - /// Set the tick timestamp of future events. This will make future events be processed at - /// the specified timestamp. - /// + /// void SetEventTiming(int timestamp); - /// - /// Reset the tick timestamp of future events. This will make future events be processed as - /// soon as possible. - /// + /// void ResetEventTiming(); - /// - /// Sends the specified pattern event to the given track. The event will be processed - /// according to the last set timing. - /// + /// void SendEvent(int track, PatternEvent e); - /// - /// Sends the specified pattern event to the given track. The event will be processed - /// according to the last set timing. - /// + /// void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0); } + /// + /// Virtual, 16-track pattern for sending events to the engine. + /// public sealed class VirtualPattern : IVirtualPattern { - /// + /// + /// Gets the slot this virtual pattern belongs to. + /// public Slot Slot { get; } /// ISlot IVirtualPattern.Slot => Slot; - public int? LastSetTimestamp { get; private set; } - +#if RELEASE + private readonly SunVoxLib _lib; +#else private readonly ISunVoxLib _lib; +#endif private readonly int _id; - private readonly object _lock; internal VirtualPattern(Slot slot) { Slot = slot; _lib = slot.SunVox.Library; _id = slot.Id; - _lock = new object(); } - /// + /// public uint GetCurrentTick() { return _lib.GetTicks(); } - /// + /// public uint GetTicksPerSecond() { return _lib.GetTicksPerSecond(); } - /// - public void SendEventImmediately(int track, PatternEvent e) - { - lock (_lock) - { - if (LastSetTimestamp != null) - { - var previous = LastSetTimestamp; - _lib.SetSendEventTimestamp(_id, true, 0); - _lib.SendEvent(_id, track, e); - _lib.SetSendEventTimestamp(_id, false, previous.Value); - } - else - { - _lib.SendEvent(_id, track, e); - } - } - } - - /// + /// + /// Set the timestamp of events sent by . + /// Every event has a timestamp (when it was generated, e.g., key press time). + /// If nonzero: event is heard at timestamp + sound latency * 2. + /// + /// + /// Timestamp (in system ticks) for future events. + /// If not zero, must be ≥ previous value for same slot. See and . + /// + /// Thrown when the operation fails. + /// Calls . public void SetEventTiming(int timestamp) { - lock (_lock) - { - _lib.SetSendEventTimestamp(_id, false, timestamp); - LastSetTimestamp = timestamp; - } + _lib.SetEventTiming(_id, timestamp); } - /// + /// + /// Reset the timestamp of events sent by . + /// Event is heard as quickly as possible. + /// + /// Thrown when the operation fails. + /// Calls . public void ResetEventTiming() { - lock (_lock) - { - _lib.SetSendEventTimestamp(_id, true, 0); - LastSetTimestamp = null; - } + _lib.ResetEventTiming(_id); } - /// + /// public void SendEvent(int track, PatternEvent e) { - lock (_lock) - { - _lib.SendEvent(_id, track, e); - } + _lib.SendEvent(_id, track, e); } - /// + /// public void SendEvent(int track, int nn = 0, int vv = 0, int mm = 0, int ccee = 0, int xxyy = 0) { - lock (_lock) - { - _lib.SendEvent(_id, track, nn, vv, mm, ccee, xxyy); - } + _lib.SendEvent(_id, track, nn, vv, mm, ccee, xxyy); } } } From 1b22ef3d79e9d2e65bd25f9e6683205b80d7599c Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:57:12 +0100 Subject: [PATCH 15/27] more shortcuts for ease of use --- .../ModuleHandles/BasicModuleGenerator.cs | 153 ++++++++++++++ .../Generators/NativeProxyGenerator.cs | 12 +- .../SunVoxHeaderInterfaceGenerator.cs | 4 +- .../SunVoxLibWithLoggerGenerator.cs | 4 +- CodeGeneration/Logic/CodeGenerationHelper.cs | 127 ++++++++++++ CodeGeneration/Logic/TypeTranslator.cs | 24 --- Examples/Program.cs | 8 +- .../SunVoxLibNativeWrapperModulesTests.cs | 8 +- SunSharp/Modules/TypedModuleHandle.cs | 2 +- SunSharp/Modules/g/AdsrModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/AmplifierModuleHandle.g.cs | 113 ++++++++++ .../g/AnalogGeneratorModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/CompressorModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/ControlToNoteModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/DcBlockerModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/DelayModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/DistortionModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/DrumSynthModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/EchoModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/EqModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FeedbackModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FftModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FilterModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FilterProModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FlangerModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FmModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/FmxModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/GeneratorModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/GlideModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/GpioModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/InputModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/KickerModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/LfoModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/LoopModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/MetaModuleModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/ModulatorModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/MultiControlModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/MultiSynthModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/OutputModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/PitchDetectorModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/PitchShifterModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/PitchToControlModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/ReverbModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/SamplerModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/SoundToControlModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/SpectraVoiceModuleHandle.g.cs | 113 ++++++++++ .../g/VelocityToControlModuleHandle.g.cs | 113 ++++++++++ SunSharp/Modules/g/VibratoModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/VocalFilterModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/VorbisPlayerModuleHandle.g.cs | 113 ++++++++++ .../Modules/g/WaveShaperModuleHandle.g.cs | 113 ++++++++++ SunSharp/Native/ISunVoxLib.Modules.cs | 8 +- SunSharp/Native/SunVoxLib.Modules.cs | 4 +- SunSharp/SynthModuleHandle.cs | 193 +++++++++++++++--- SunSharp/Synthesizer.cs | 8 +- 55 files changed, 5227 insertions(+), 74 deletions(-) delete mode 100644 CodeGeneration/Logic/TypeTranslator.cs diff --git a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs index 4f714dc..a472305 100644 --- a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs +++ b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs @@ -204,12 +204,165 @@ public virtual void GenerateModuleStructCode() }); AppendLine("}"); GenerateOperatorsAndStuff(); + GenerateGenericSynthModuleHandleImplementation(); GenerateModuleStructMembers(); GenerateStructCurveWritesReads(); }); AppendLine("}"); } + protected virtual void GenerateGenericSynthModuleHandleImplementation() + { + AppendLine(); + AppendLine("#region IGenericSynthModuleHandle implementation"); + AppendLine(); + + var interfaceType = typeof(IGenericSynthModuleHandle); + var nullabilityContext = new System.Reflection.NullabilityInfoContext(); + + foreach (var property in interfaceType.GetProperties()) + { + var nullabilityInfo = nullabilityContext.Create(property); + var returnType = CodeGenerationHelper.GetTypeName(property.PropertyType, nullabilityInfo); + AppendLine($"public {returnType} {property.Name} => ModuleHandle.{property.Name};"); + AppendLine(); + } + + var methodImplementations = BuildMethodImplementationDescriptors(); + + foreach (var impl in methodImplementations) + { + GenerateMethodImplementation(impl); + } + + AppendLine("#endregion"); + } + + private record MethodImplementationDescriptor( + System.Reflection.MethodInfo Method, + bool IsExplicitInterfaceImplementation, + bool RequiresCastToInterface, + string? InheritDocTarget = null + ) + { + private System.Reflection.NullabilityInfoContext? _nullabilityContext; + + public System.Reflection.NullabilityInfoContext NullabilityContext => + _nullabilityContext ??= new System.Reflection.NullabilityInfoContext(); + }; + + private List BuildMethodImplementationDescriptors() + { + var descriptors = new List(); + var interfaceType = typeof(IGenericSynthModuleHandle); + + var additionalOverloads = GetAdditionalMethodOverloads(); + var collidingMethodNames = new HashSet(additionalOverloads.Select(o => o.MethodName)); + + foreach (var method in interfaceType.GetMethods().Where(m => !m.IsSpecialName)) + { + var parameters = method.GetParameters(); + var parameterTypes = parameters.Select(p => p.ParameterType).ToArray(); + + var matchingOnStruct = typeof(SynthModuleHandle).GetMethod(method.Name, parameterTypes); + bool requiresCast = matchingOnStruct == null || matchingOnStruct.ReturnType != method.ReturnType; + + bool hasCollision = collidingMethodNames.Contains(method.Name); + + descriptors.Add(new MethodImplementationDescriptor( + Method: method, + IsExplicitInterfaceImplementation: hasCollision, + RequiresCastToInterface: requiresCast + )); + } + + foreach (var (methodName, parameterTypes) in additionalOverloads) + { + var method = typeof(SynthModuleHandle).GetMethod(methodName, parameterTypes); + if (method == null) + { + throw new InvalidOperationException($"Method {methodName} with specified parameters not found on {nameof(SynthModuleHandle)}"); + } + + descriptors.Add(new MethodImplementationDescriptor( + Method: method, + IsExplicitInterfaceImplementation: false, + RequiresCastToInterface: false, + InheritDocTarget: $"{nameof(SynthModuleHandle)}.{methodName}" + )); + } + + return descriptors; + } + + private (string MethodName, Type[] ParameterTypes)[] GetAdditionalMethodOverloads() + { + return + [ + (nameof(SynthModuleHandle.GetInputModules), []), + (nameof(SynthModuleHandle.GetOutputModules), []), + (nameof(SynthModuleHandle.ConnectInput), [typeof(SynthModuleHandle)]), + (nameof(SynthModuleHandle.ConnectOutput), [typeof(SynthModuleHandle)]), + (nameof(SynthModuleHandle.DisconnectInput), [typeof(SynthModuleHandle)]), + (nameof(SynthModuleHandle.DisconnectOutput), [typeof(SynthModuleHandle)]) + ]; + } + + private void GenerateMethodImplementation(MethodImplementationDescriptor descriptor) + { + var method = descriptor.Method; + var returnNullability = descriptor.NullabilityContext.Create(method.ReturnParameter); + var returnType = CodeGenerationHelper.GetTypeName(method.ReturnType, returnNullability); + var parameters = method.GetParameters(); + var paramList = string.Join(", ", parameters.Select(p => + { + var paramNullability = descriptor.NullabilityContext.Create(p); + var paramType = CodeGenerationHelper.GetTypeName(p.ParameterType, paramNullability); + var paramDecl = $"{paramType} {p.Name}"; + + if (p.HasDefaultValue) + { + paramDecl += $" = {CodeGenerationHelper.FormatDefaultValue(p.DefaultValue, p.ParameterType)}"; + } + + return paramDecl; + })); + var argList = string.Join(", ", parameters.Select(p => p.Name)); + + if (descriptor.InheritDocTarget != null) + { + AppendLine($"/// "); + } + else + { + AppendLine($"/// "); + } + + if (descriptor.IsExplicitInterfaceImplementation) + { + if (descriptor.RequiresCastToInterface) + { + AppendLine($"{returnType} {nameof(IGenericSynthModuleHandle)}.{method.Name}({paramList}) => (ModuleHandle as {nameof(IGenericSynthModuleHandle)}).{method.Name}({argList});"); + } + else + { + AppendLine($"{returnType} {nameof(IGenericSynthModuleHandle)}.{method.Name}({paramList}) => ModuleHandle.{method.Name}({argList});"); + } + } + else + { + if (descriptor.RequiresCastToInterface) + { + AppendLine($"public {returnType} {method.Name}({paramList}) => (ModuleHandle as {nameof(IGenericSynthModuleHandle)}).{method.Name}({argList});"); + } + else + { + AppendLine($"public {returnType} {method.Name}({paramList}) => ModuleHandle.{method.Name}({argList});"); + } + } + AppendLine(); + } + protected virtual void GenerateStructCurveWritesReads() { if (ModuleDescription.Curves.Count == 0) diff --git a/CodeGeneration/Generators/NativeProxyGenerator.cs b/CodeGeneration/Generators/NativeProxyGenerator.cs index 06a6ef2..1f0db33 100644 --- a/CodeGeneration/Generators/NativeProxyGenerator.cs +++ b/CodeGeneration/Generators/NativeProxyGenerator.cs @@ -30,8 +30,8 @@ private static string ToPascalCase(string value) private static string GetDelegateNameCode(ParsedFunction function) { - var outName = TypeTranslator.TypeToCode(function.CSharpReturnType); - var inName = string.Join(null,function.Parameters.Select(p => ToPascalCase(TypeTranslator.TypeToCode(p.CSharpType)))); + var outName = CodeGenerationHelper.TypeToCode(function.CSharpReturnType); + var inName = string.Join(null,function.Parameters.Select(p => ToPascalCase(CodeGenerationHelper.TypeToCode(p.CSharpType)))); if (inName.Length == 0) { inName = "Void"; @@ -43,16 +43,16 @@ private record DelegateDefinitionCode(string DelegateName, string Code); private static DelegateDefinitionCode GetDelegateDefinitionCode(ParsedFunction function) { - var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); - var args = string.Join(", ", function.Parameters.Select((p, i) => $"{TypeTranslator.TypeToCode(p.CSharpType)} arg{i + 1}")); + var ret = CodeGenerationHelper.TypeToCode(function.CSharpReturnType); + var args = string.Join(", ", function.Parameters.Select((p, i) => $"{CodeGenerationHelper.TypeToCode(p.CSharpType)} arg{i + 1}")); var name = GetDelegateNameCode(function); return new DelegateDefinitionCode(name, $"private delegate {ret} {name}({args});"); } private static string GetInterfaceMethodCode(ParsedFunction function) { - var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); - var pars = string.Join(", ", function.Parameters.Select(p => $"{TypeTranslator.TypeToCode(p.CSharpType)} {p.Name}")); + var ret = CodeGenerationHelper.TypeToCode(function.CSharpReturnType); + var pars = string.Join(", ", function.Parameters.Select(p => $"{CodeGenerationHelper.TypeToCode(p.CSharpType)} {p.Name}")); var forwarded = string.Join(", ", function.Parameters.Select(p => p.Name)); return $"{ret} ISunVoxLibC.{function.Name}({pars}) => {function.Name}?.Invoke({forwarded}) ?? throw GetNoDelegateException();"; } diff --git a/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs b/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs index 4ce6c77..64ba2ae 100644 --- a/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs +++ b/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs @@ -57,9 +57,9 @@ private static string GetCSharpSignature(ParsedFunction function) { var parameters = string.Join( ", ", - function.Parameters.Select(p => TypeTranslator.TypeToCode(p.CSharpType) + " " + p.Name) + function.Parameters.Select(p => CodeGenerationHelper.TypeToCode(p.CSharpType) + " " + p.Name) ); - return $"{TypeTranslator.TypeToCode(function.CSharpReturnType)} {function.Name}({parameters});"; + return $"{CodeGenerationHelper.TypeToCode(function.CSharpReturnType)} {function.Name}({parameters});"; } private static string EscapeForXmlDoc(string value) diff --git a/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs b/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs index 3d5e4e8..6990b9f 100644 --- a/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs +++ b/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs @@ -16,8 +16,8 @@ public static BaseGenerator[] GetGenerators() private static string GetMethodSignature(ParsedFunction function) { - var ret = TypeTranslator.TypeToCode(function.CSharpReturnType); - var pars = string.Join(", ", function.Parameters.Select(p => $"{TypeTranslator.TypeToCode(p.CSharpType)} {p.Name}")); + var ret = CodeGenerationHelper.TypeToCode(function.CSharpReturnType); + var pars = string.Join(", ", function.Parameters.Select(p => $"{CodeGenerationHelper.TypeToCode(p.CSharpType)} {p.Name}")); return $"{ret} ISunVoxLibC.{function.Name}({pars})"; } diff --git a/CodeGeneration/Logic/CodeGenerationHelper.cs b/CodeGeneration/Logic/CodeGenerationHelper.cs index 97bec3c..e7c2468 100644 --- a/CodeGeneration/Logic/CodeGenerationHelper.cs +++ b/CodeGeneration/Logic/CodeGenerationHelper.cs @@ -1,3 +1,5 @@ +using System.Collections.Frozen; + namespace CodeGeneration.Logic; public static class CodeGenerationHelper @@ -11,4 +13,129 @@ public static void AppendHeader(CodeGenerationContext context) context.AppendLine("#nullable enable"); context.AppendLine(); } + + internal static readonly FrozenDictionary TypeToCodeDictionary = new Dictionary + { + [typeof(int)] = "int", + [typeof(uint)] = "uint", + [typeof(float)] = "float", + [typeof(double)] = "double", + [typeof(void)] = "void", + [typeof(string)] = "string", + [typeof(bool)] = "bool", + [typeof(byte)] = "byte", + [typeof(ushort)] = "ushort", + [typeof(short)] = "short", + [typeof(long)] = "long", + [typeof(ulong)] = "ulong", + }.ToFrozenDictionary(); + + public static string TypeToCode(Type type) + { + return TypeToCodeDictionary.TryGetValue(type, out var value) + ? value + : type.Name; + } + + public static string GetTypeName(Type type, System.Reflection.NullabilityInfo? nullabilityInfo = null) + { + if (TypeToCodeDictionary.TryGetValue(type, out var typeName)) + { + if (nullabilityInfo != null && !type.IsValueType && + nullabilityInfo.ReadState == System.Reflection.NullabilityState.Nullable) + { + return typeName + "?"; + } + return typeName; + } + + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + var underlyingType = Nullable.GetUnderlyingType(type); + return GetTypeName(underlyingType!) + "?"; + } + + if (type.IsArray) + { + var elementType = type.GetElementType(); + var elementNullability = nullabilityInfo?.ElementType; + var arrayTypeName = GetTypeName(elementType!, elementNullability) + "[]"; + + if (nullabilityInfo != null && nullabilityInfo.ReadState == System.Reflection.NullabilityState.Nullable) + { + return arrayTypeName + "?"; + } + return arrayTypeName; + } + + if (type.IsGenericType && type.Name.StartsWith("ValueTuple")) + { + var genericArgs = type.GetGenericArguments(); + var typeNames = string.Join(", ", genericArgs.Select(t => GetTypeName(t))); + return $"({typeNames})"; + } + + var simpleName = type.Name; + + if (nullabilityInfo != null && !type.IsValueType && + nullabilityInfo.ReadState == System.Reflection.NullabilityState.Nullable) + { + return simpleName + "?"; + } + + return simpleName; + } + + public static string FormatDefaultValue(object? defaultValue, Type parameterType) + { + if (defaultValue == null) + { + // For value types, null in reflection means 'default' + if (parameterType.IsValueType) + { + return "default"; + } + return "null"; + } + + if (parameterType.IsEnum) + { + return $"{parameterType.Name}.{defaultValue}"; + } + + if (defaultValue is string str) + { + return $"\"{str.Replace("\"", "\\\"")}\""; + } + + if (defaultValue is bool b) + { + return b ? "true" : "false"; + } + + if (defaultValue is byte || defaultValue is sbyte || + defaultValue is short || defaultValue is ushort || + defaultValue is int || defaultValue is uint || + defaultValue is long || defaultValue is ulong) + { + return defaultValue.ToString()!; + } + + if (defaultValue is float f) + { + return f.ToString(System.Globalization.CultureInfo.InvariantCulture) + "f"; + } + + if (defaultValue is double d) + { + return d.ToString(System.Globalization.CultureInfo.InvariantCulture); + } + + if (defaultValue is decimal dec) + { + return dec.ToString(System.Globalization.CultureInfo.InvariantCulture) + "m"; + } + + return defaultValue.ToString() ?? "default"; + } } diff --git a/CodeGeneration/Logic/TypeTranslator.cs b/CodeGeneration/Logic/TypeTranslator.cs deleted file mode 100644 index d1c607e..0000000 --- a/CodeGeneration/Logic/TypeTranslator.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Frozen; - -namespace CodeGeneration.Logic; - -public static class TypeTranslator -{ - private static readonly FrozenDictionary TypeToCodeDictionary = new Dictionary - { - [typeof(int)] = "int", - [typeof(uint)] = "uint", - [typeof(float)] = "float", - [typeof(double)] = "double", - [typeof(void)] = "void", - [typeof(string)] = "string", - [typeof(bool)] = "bool" - }.ToFrozenDictionary(); - - public static string TypeToCode(Type type) - { - return TypeToCodeDictionary.TryGetValue(type, out var value) - ? value - : type.Name; - } -} diff --git a/Examples/Program.cs b/Examples/Program.cs index af84c70..bdf8a07 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -1,14 +1,19 @@ +#if !GENERATION + using System; using System.Threading; using SunSharp; using SunSharp.Redistribution; +#endif + namespace Examples; internal sealed class Program { private static void Main() { +#if !GENERATION LibraryLoader.Load(); var libraryInstance = LibraryLoader.GetLibraryInstance(); @@ -32,10 +37,11 @@ private static void Main() slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); - slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.A(4), generator.ModuleHandle.Id)); + slot.VirtualPattern.SendEvent(0, generator.MakeNoteEvent(Note.A(4))); Thread.Sleep(TimeSpan.FromSeconds(1)); slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); +#endif } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs index d6595aa..f08162d 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs @@ -21,7 +21,7 @@ public void ConnectModule_Default_ShouldCallExpectedMethod(int slotId, int sourc library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when - wrapper.ConnectModule(slotId, source, destination); + wrapper.ConnectModules(slotId, source, destination); // then library.Received(1).sv_connect_module(slotId, source, destination); @@ -35,7 +35,7 @@ public void ConnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int source, library.sv_connect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - then - wrapper.Invoking(w => w.ConnectModule(slotId, source, destination)).Should().Throw(); + wrapper.Invoking(w => w.ConnectModules(slotId, source, destination)).Should().Throw(); // then library.Received(1).sv_connect_module(slotId, source, destination); @@ -90,7 +90,7 @@ public void DisconnectModule_Default_ShouldCallExpectedMethod(int slotId, int so library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(0); // when - wrapper.DisconnectModule(slotId, source, destination); + wrapper.DisconnectModules(slotId, source, destination); // then library.Received(1).sv_disconnect_module(slotId, source, destination); @@ -104,7 +104,7 @@ public void DisconnectModule_NonZeroReturnCode_ShouldThrow(int slotId, int sourc library.sv_disconnect_module(Arg.Any(), Arg.Any(), Arg.Any()).Returns(-1); // when - then - wrapper.Invoking(w => w.DisconnectModule(slotId, source, destination)).Should().Throw(); + wrapper.Invoking(w => w.DisconnectModules(slotId, source, destination)).Should().Throw(); // then library.Received(1).sv_disconnect_module(slotId, source, destination); diff --git a/SunSharp/Modules/TypedModuleHandle.cs b/SunSharp/Modules/TypedModuleHandle.cs index a9f1c3d..0c749f0 100644 --- a/SunSharp/Modules/TypedModuleHandle.cs +++ b/SunSharp/Modules/TypedModuleHandle.cs @@ -1,6 +1,6 @@ namespace SunSharp.Modules { - public interface ITypedModuleHandle + public interface ITypedModuleHandle : IGenericSynthModuleHandle { ///
    /// Determines whether the underlying module is of the correct type. diff --git a/SunSharp/Modules/g/AdsrModuleHandle.g.cs b/SunSharp/Modules/g/AdsrModuleHandle.g.cs index fff9371..302ba3d 100644 --- a/SunSharp/Modules/g/AdsrModuleHandle.g.cs +++ b/SunSharp/Modules/g/AdsrModuleHandle.g.cs @@ -206,6 +206,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs b/SunSharp/Modules/g/AmplifierModuleHandle.g.cs index 2ef3084..2699196 100644 --- a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs +++ b/SunSharp/Modules/g/AmplifierModuleHandle.g.cs @@ -150,6 +150,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs b/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs index 5c27a49..c3ba7a0 100644 --- a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs +++ b/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs @@ -324,6 +324,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/CompressorModuleHandle.g.cs b/SunSharp/Modules/g/CompressorModuleHandle.g.cs index e8a1bba..c5cc8f7 100644 --- a/SunSharp/Modules/g/CompressorModuleHandle.g.cs +++ b/SunSharp/Modules/g/CompressorModuleHandle.g.cs @@ -128,6 +128,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs b/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs index 6ea3962..e9bd6c9 100644 --- a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs +++ b/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs @@ -158,6 +158,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs b/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs index 92e8a22..0e99582 100644 --- a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs +++ b/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs @@ -56,6 +56,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/DelayModuleHandle.g.cs b/SunSharp/Modules/g/DelayModuleHandle.g.cs index fe494b3..49fee57 100644 --- a/SunSharp/Modules/g/DelayModuleHandle.g.cs +++ b/SunSharp/Modules/g/DelayModuleHandle.g.cs @@ -192,6 +192,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/DistortionModuleHandle.g.cs b/SunSharp/Modules/g/DistortionModuleHandle.g.cs index 5f47bca..f78f6fd 100644 --- a/SunSharp/Modules/g/DistortionModuleHandle.g.cs +++ b/SunSharp/Modules/g/DistortionModuleHandle.g.cs @@ -116,6 +116,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs b/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs index a945368..6234835 100644 --- a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs +++ b/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs @@ -226,6 +226,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/EchoModuleHandle.g.cs b/SunSharp/Modules/g/EchoModuleHandle.g.cs index 19a6c38..7161eb1 100644 --- a/SunSharp/Modules/g/EchoModuleHandle.g.cs +++ b/SunSharp/Modules/g/EchoModuleHandle.g.cs @@ -152,6 +152,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/EqModuleHandle.g.cs b/SunSharp/Modules/g/EqModuleHandle.g.cs index 23749be..e33768c 100644 --- a/SunSharp/Modules/g/EqModuleHandle.g.cs +++ b/SunSharp/Modules/g/EqModuleHandle.g.cs @@ -92,6 +92,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetLow(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs b/SunSharp/Modules/g/FeedbackModuleHandle.g.cs index 19637f5..3c29e24 100644 --- a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs +++ b/SunSharp/Modules/g/FeedbackModuleHandle.g.cs @@ -68,6 +68,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FftModuleHandle.g.cs b/SunSharp/Modules/g/FftModuleHandle.g.cs index f55e813..320d5aa 100644 --- a/SunSharp/Modules/g/FftModuleHandle.g.cs +++ b/SunSharp/Modules/g/FftModuleHandle.g.cs @@ -242,6 +242,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public FftSampleRate GetSampleRate() => (FftSampleRate)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/FilterModuleHandle.g.cs b/SunSharp/Modules/g/FilterModuleHandle.g.cs index 91c9cfb..c7c7883 100644 --- a/SunSharp/Modules/g/FilterModuleHandle.g.cs +++ b/SunSharp/Modules/g/FilterModuleHandle.g.cs @@ -214,6 +214,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FilterProModuleHandle.g.cs b/SunSharp/Modules/g/FilterProModuleHandle.g.cs index a5ca57b..cd8e4bf 100644 --- a/SunSharp/Modules/g/FilterProModuleHandle.g.cs +++ b/SunSharp/Modules/g/FilterProModuleHandle.g.cs @@ -238,6 +238,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FlangerModuleHandle.g.cs b/SunSharp/Modules/g/FlangerModuleHandle.g.cs index be22d64..fd6f996 100644 --- a/SunSharp/Modules/g/FlangerModuleHandle.g.cs +++ b/SunSharp/Modules/g/FlangerModuleHandle.g.cs @@ -162,6 +162,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FmModuleHandle.g.cs b/SunSharp/Modules/g/FmModuleHandle.g.cs index 62ad434..d8cdf15 100644 --- a/SunSharp/Modules/g/FmModuleHandle.g.cs +++ b/SunSharp/Modules/g/FmModuleHandle.g.cs @@ -248,6 +248,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetCarrierVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/FmxModuleHandle.g.cs b/SunSharp/Modules/g/FmxModuleHandle.g.cs index 0622139..2bf1ef1 100644 --- a/SunSharp/Modules/g/FmxModuleHandle.g.cs +++ b/SunSharp/Modules/g/FmxModuleHandle.g.cs @@ -222,6 +222,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs b/SunSharp/Modules/g/GeneratorModuleHandle.g.cs index d1ecf9e..ba71d2e 100644 --- a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs +++ b/SunSharp/Modules/g/GeneratorModuleHandle.g.cs @@ -176,6 +176,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/GlideModuleHandle.g.cs b/SunSharp/Modules/g/GlideModuleHandle.g.cs index b01470e..5d24c84 100644 --- a/SunSharp/Modules/g/GlideModuleHandle.g.cs +++ b/SunSharp/Modules/g/GlideModuleHandle.g.cs @@ -160,6 +160,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/GpioModuleHandle.g.cs b/SunSharp/Modules/g/GpioModuleHandle.g.cs index 5146073..99d2378 100644 --- a/SunSharp/Modules/g/GpioModuleHandle.g.cs +++ b/SunSharp/Modules/g/GpioModuleHandle.g.cs @@ -126,6 +126,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public Toggle GetOut() => (Toggle)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/InputModuleHandle.g.cs b/SunSharp/Modules/g/InputModuleHandle.g.cs index d1b8bbc..96891ee 100644 --- a/SunSharp/Modules/g/InputModuleHandle.g.cs +++ b/SunSharp/Modules/g/InputModuleHandle.g.cs @@ -68,6 +68,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/KickerModuleHandle.g.cs b/SunSharp/Modules/g/KickerModuleHandle.g.cs index 9562546..685e1da 100644 --- a/SunSharp/Modules/g/KickerModuleHandle.g.cs +++ b/SunSharp/Modules/g/KickerModuleHandle.g.cs @@ -150,6 +150,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/LfoModuleHandle.g.cs b/SunSharp/Modules/g/LfoModuleHandle.g.cs index 84bcb76..436ebc6 100644 --- a/SunSharp/Modules/g/LfoModuleHandle.g.cs +++ b/SunSharp/Modules/g/LfoModuleHandle.g.cs @@ -212,6 +212,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/LoopModuleHandle.g.cs b/SunSharp/Modules/g/LoopModuleHandle.g.cs index 78ff612..9b6b466 100644 --- a/SunSharp/Modules/g/LoopModuleHandle.g.cs +++ b/SunSharp/Modules/g/LoopModuleHandle.g.cs @@ -138,6 +138,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs b/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs index e3bcaca..0fd519e 100644 --- a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs +++ b/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs @@ -104,6 +104,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs b/SunSharp/Modules/g/ModulatorModuleHandle.g.cs index ca7a11d..d05acf2 100644 --- a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs +++ b/SunSharp/Modules/g/ModulatorModuleHandle.g.cs @@ -98,6 +98,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs b/SunSharp/Modules/g/MultiControlModuleHandle.g.cs index be2a39e..898bf46 100644 --- a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/MultiControlModuleHandle.g.cs @@ -134,6 +134,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetValue(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs b/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs index dcd924a..31d826f 100644 --- a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs +++ b/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs @@ -190,6 +190,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/OutputModuleHandle.g.cs b/SunSharp/Modules/g/OutputModuleHandle.g.cs index 78ed258..3ac5292 100644 --- a/SunSharp/Modules/g/OutputModuleHandle.g.cs +++ b/SunSharp/Modules/g/OutputModuleHandle.g.cs @@ -45,6 +45,119 @@ public void AssertCorrectHandleType() throw new IncorrectSynthHandleTypeException(expected, actual); } } + + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion } } #endif diff --git a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs b/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs index b5837d5..4a68522 100644 --- a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs @@ -178,6 +178,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public PitchDetectorAlgorithm GetAlgorithm() => (PitchDetectorAlgorithm)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs b/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs index d2aa3ab..d204ed2 100644 --- a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs @@ -126,6 +126,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs b/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs index 320e69b..80d6936 100644 --- a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs @@ -126,6 +126,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public PitchToControlMode GetMode() => (PitchToControlMode)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/ReverbModuleHandle.g.cs b/SunSharp/Modules/g/ReverbModuleHandle.g.cs index 1e59512..9c3463c 100644 --- a/SunSharp/Modules/g/ReverbModuleHandle.g.cs +++ b/SunSharp/Modules/g/ReverbModuleHandle.g.cs @@ -160,6 +160,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/SamplerModuleHandle.g.cs b/SunSharp/Modules/g/SamplerModuleHandle.g.cs index e794353..1a9ba3b 100644 --- a/SunSharp/Modules/g/SamplerModuleHandle.g.cs +++ b/SunSharp/Modules/g/SamplerModuleHandle.g.cs @@ -170,6 +170,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs b/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs index 8234ebd..52bb031 100644 --- a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs @@ -148,6 +148,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs b/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs index 3604004..bc24dbd 100644 --- a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs +++ b/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs @@ -194,6 +194,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs b/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs index 0593ab8..1fabede 100644 --- a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs @@ -104,6 +104,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public VelocityToControlOnNoteOff GetOnNoteoff() => (VelocityToControlOnNoteOff)ModuleHandle.GetControllerValue(0, ValueScalingMode.Displayed); diff --git a/SunSharp/Modules/g/VibratoModuleHandle.g.cs b/SunSharp/Modules/g/VibratoModuleHandle.g.cs index 5e5ceaa..d75666d 100644 --- a/SunSharp/Modules/g/VibratoModuleHandle.g.cs +++ b/SunSharp/Modules/g/VibratoModuleHandle.g.cs @@ -124,6 +124,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs b/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs index 4f65865..3dc5348 100644 --- a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs +++ b/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs @@ -200,6 +200,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs b/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs index 39a4fc9..2e21ee2 100644 --- a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs +++ b/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs @@ -134,6 +134,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs b/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs index c1804dc..51f1bf9 100644 --- a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs +++ b/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs @@ -128,6 +128,119 @@ public void AssertCorrectHandleType() } } + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// + public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); + + /// + public void ConnectInput(SynthModuleHandle targetModule) => ModuleHandle.ConnectInput(targetModule); + + /// + public void ConnectOutput(SynthModuleHandle targetModule) => ModuleHandle.ConnectOutput(targetModule); + + /// + public void DisconnectInput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectInput(targetModule); + + /// + public void DisconnectOutput(SynthModuleHandle targetModule) => ModuleHandle.DisconnectOutput(targetModule); + + #endregion + /// public int GetInputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(0, valueScalingMode); diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/SunSharp/Native/ISunVoxLib.Modules.cs index ee49f23..4ab1e79 100644 --- a/SunSharp/Native/ISunVoxLib.Modules.cs +++ b/SunSharp/Native/ISunVoxLib.Modules.cs @@ -2,11 +2,11 @@ namespace SunSharp.Native { public partial interface ISunVoxLib { - /// - void ConnectModule(int slotId, int source, int destination); + /// + void ConnectModules(int slotId, int source, int destination); - /// - void DisconnectModule(int slotId, int source, int destination); + /// + void DisconnectModules(int slotId, int source, int destination); /// int? FindModule(int slotId, string name); diff --git a/SunSharp/Native/SunVoxLib.Modules.cs b/SunSharp/Native/SunVoxLib.Modules.cs index 2334893..3f41fa3 100644 --- a/SunSharp/Native/SunVoxLib.Modules.cs +++ b/SunSharp/Native/SunVoxLib.Modules.cs @@ -16,7 +16,7 @@ public partial struct SunVoxLib : ISunVoxLib /// Requires / . /// Calls . /// - public void ConnectModule(int slotId, int source, int destination) + public void ConnectModules(int slotId, int source, int destination) { var ret = _lib.sv_connect_module(slotId, source, destination); if (ret != 0) @@ -93,7 +93,7 @@ public int CreateModule(int slotId, string type, string? name = null, int x = 0, /// Requires / . /// Calls . /// - public void DisconnectModule(int slotId, int source, int destination) + public void DisconnectModules(int slotId, int source, int destination) { var ret = _lib.sv_disconnect_module(slotId, source, destination); if (ret != 0) diff --git a/SunSharp/SynthModuleHandle.cs b/SunSharp/SynthModuleHandle.cs index c565c14..339f618 100644 --- a/SunSharp/SynthModuleHandle.cs +++ b/SunSharp/SynthModuleHandle.cs @@ -58,6 +58,45 @@ public interface IGenericSynthModuleHandle /// ISynthModuleHandle[] GetOutputModules(); + + /// + void ConnectInput(int targetModuleId); + + /// + void ConnectInput(ISynthModuleHandle targetModule); + + /// + void ConnectOutput(int targetModuleId); + + /// + void ConnectOutput(ISynthModuleHandle targetModule); + + /// + void DisconnectInput(int targetModuleId); + + /// + void DisconnectInput(ISynthModuleHandle targetModule); + + /// + void DisconnectOutput(int targetModuleId); + + /// + void DisconnectOutput(ISynthModuleHandle targetModule); + + /// + PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value); + + /// + PatternEvent MakeNoteEvent(Note note, byte? velocity = null); + + /// + PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = null); + + /// + PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = null); + + /// + PatternEvent MakeEvent(Note note = default, byte? velocity = null, byte? controller = null, Effect effect = Effect.None, ushort value = 0); } public partial interface ISynthModuleHandle : IGenericSynthModuleHandle @@ -251,8 +290,9 @@ public int[] GetInputs() } /// - /// Gets the input modules connected to this module. + /// Get the array of input modules connected to this module. /// + /// public SynthModuleHandle[] GetInputModules() { return ToHandles(GetInputs()); @@ -266,12 +306,13 @@ ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() /// public int[] GetOutputs() { - return _lib.GetModuleInputs(_slotId, Id); + return _lib.GetModuleOutputs(_slotId, Id); } /// - /// Gets the output modules connected to this module. + /// Gets the array of output modules connected to this module. /// + /// public SynthModuleHandle[] GetOutputModules() { return ToHandles(GetOutputs()); @@ -302,6 +343,98 @@ private ISynthModuleHandle[] ToInterfaceHandles(int[] connections) return handles; } + /// + /// Connect the input of this module to the output of another module. + /// + /// + public void ConnectInput(int targetModuleId) + { + _lib.ConnectModules(_slotId, targetModuleId, Id); + } + + /// + /// Connect the input of this module to the output of another module. + /// + /// + public void ConnectInput(SynthModuleHandle targetModule) + { + ConnectInput(targetModule.Id); + } + + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) + { + ConnectInput(targetModule.Id); + } + + /// + /// Connect the output of this module to the input of another module. + /// + /// + public void ConnectOutput(int targetModuleId) + { + _lib.ConnectModules(_slotId, Id, targetModuleId); + } + + /// + /// Connect the output of this module to the input of another module. + /// + /// + public void ConnectOutput(SynthModuleHandle targetModule) + { + ConnectOutput(targetModule.Id); + } + + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) + { + ConnectOutput(targetModule.Id); + } + + /// + /// Disconnect the input of this module from the output of another module. + /// + /// + public void DisconnectInput(int targetModuleId) + { + _lib.DisconnectModules(_slotId, targetModuleId, Id); + } + + /// + /// Disconnect the input of this module from the output of another module. + /// + /// + public void DisconnectInput(SynthModuleHandle targetModule) + { + DisconnectInput(targetModule.Id); + } + + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) + { + DisconnectInput(targetModule.Id); + } + + /// + /// Disconnect the output of this module from the input of another module. + /// + /// + public void DisconnectOutput(int targetModuleId) + { + _lib.DisconnectModules(_slotId, Id, targetModuleId); + } + + /// + /// Disconnect the output of this module from the input of another module. + /// + /// + public void DisconnectOutput(SynthModuleHandle targetModule) + { + DisconnectOutput(targetModule.Id); + } + + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) + { + DisconnectOutput(targetModule.Id); + } + #endregion connections #region specific data IO @@ -315,13 +448,7 @@ private ISynthModuleHandle[] ToInterfaceHandles(int[] connections) /// public void LoadSamplerSample(string path, int? sampleSlot = null) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (Slot.AcquireLock()) - { - lib.LoadSamplerSample(slotId, id, path, sampleSlot); - } + _lib.LoadSamplerSample(_slotId, Id, path, sampleSlot); } /// @@ -369,25 +496,13 @@ public void LoadIntoVorbisPlayer(byte[] data) /// public int WriteCurve(int curveId, float[] buffer) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (Slot.AcquireLock()) - { - return lib.WriteModuleCurve(slotId, id, curveId, buffer); - } + return _lib.WriteModuleCurve(_slotId, Id, curveId, buffer); } /// public int ReadCurve(int curveId, float[] buffer) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (Slot.AcquireLock()) - { - return lib.ReadModuleCurve(slotId, id, curveId, buffer); - } + return _lib.ReadModuleCurve(_slotId, Id, curveId, buffer); } #endregion specific data IO @@ -449,5 +564,35 @@ public int GetControllerGroup(int controllerId) } #endregion controllers + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) + { + return PatternEvent.ControllerEvent(Id, controllerId, value); + } + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = null) + { + return PatternEvent.NoteEvent(note, Id, velocity); + } + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = null) + { + return PatternEvent.SetPitchEvent(Id, pitch, velocity); + } + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = null) + { + return PatternEvent.SetFrequencyEvent(Id, frequency, velocity); + } + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = null, byte? controller = null, Effect effect = Effect.None, ushort value = 0) + { + return PatternEvent.NewEvent(note, velocity, Id, controller, effect, value); + } } } diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index 3e794c6..4f458e8 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -232,12 +232,12 @@ void ISynthesizer.RemoveModule(ISynthModuleHandle moduleHandle) RemoveModule(moduleHandle.Id); } - /// + /// public void ConnectModule(int sourceId, int destinationId) { using (Slot.AcquireLock()) { - _lib.ConnectModule(_id, sourceId, destinationId); + _lib.ConnectModules(_id, sourceId, destinationId); } } @@ -255,12 +255,12 @@ void ISynthesizer.ConnectModule(ISynthModuleHandle source, ISynthModuleHandle de ConnectModule(source.Id, destination.Id); } - /// + /// public void DisconnectModule(int sourceId, int destinationId) { using (Slot.AcquireLock()) { - _lib.DisconnectModule(_id, sourceId, destinationId); + _lib.DisconnectModules(_id, sourceId, destinationId); } } From 0c3812e77e105c4e3c8d7977d94898ced554f2c6 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sun, 1 Feb 2026 15:14:45 +0100 Subject: [PATCH 16/27] MakeControllerEvent pattern --- .../ModuleHandles/BasicModuleGenerator.cs | 124 +- .../ModuleHandles/FmxModuleGenerator.cs | 245 +- .../ModuleHandles/MetaModuleGenerator.cs | 6 +- .../Generators/OwnData/ModuleDataGenerator.cs | 26 +- CodeGeneration/Logic/KnownModuleData.cs | 17 +- CodeGeneration/Logic/ModuleData.g.json | 2614 ++++++++++++++--- CodeGeneration/Logic/ModuleData.g.schema.json | 25 +- SunSharp/Enums.cs | 13 +- SunSharp/Modules/MetaModuleModuleHandle.cs | 148 + SunSharp/Modules/VorbisPlayerModuleHandle.cs | 8 +- SunSharp/Modules/g/AdsrModuleHandle.g.cs | 223 +- SunSharp/Modules/g/AmplifierModuleHandle.g.cs | 158 +- .../g/AnalogGeneratorModuleHandle.g.cs | 365 ++- .../Modules/g/CompressorModuleHandle.g.cs | 122 +- .../Modules/g/ControlToNoteModuleHandle.g.cs | 167 +- SunSharp/Modules/g/DcBlockerModuleHandle.g.cs | 16 + SunSharp/Modules/g/DelayModuleHandle.g.cs | 209 +- .../Modules/g/DistortionModuleHandle.g.cs | 103 +- SunSharp/Modules/g/DrumSynthModuleHandle.g.cs | 274 +- SunSharp/Modules/g/EchoModuleHandle.g.cs | 152 +- SunSharp/Modules/g/EqModuleHandle.g.cs | 70 +- SunSharp/Modules/g/FeedbackModuleHandle.g.cs | 34 +- SunSharp/Modules/g/FftModuleHandle.g.cs | 287 +- SunSharp/Modules/g/FilterModuleHandle.g.cs | 243 +- SunSharp/Modules/g/FilterProModuleHandle.g.cs | 293 +- SunSharp/Modules/g/FlangerModuleHandle.g.cs | 174 +- SunSharp/Modules/g/FmModuleHandle.g.cs | 302 +- SunSharp/Modules/g/FmxModuleHandle.g.cs | 1660 ++++++++++- SunSharp/Modules/g/GeneratorModuleHandle.g.cs | 166 +- SunSharp/Modules/g/GlideModuleHandle.g.cs | 161 +- SunSharp/Modules/g/GpioModuleHandle.g.cs | 110 +- SunSharp/Modules/g/InputModuleHandle.g.cs | 34 +- SunSharp/Modules/g/KickerModuleHandle.g.cs | 153 +- SunSharp/Modules/g/LfoModuleHandle.g.cs | 249 +- SunSharp/Modules/g/LoopModuleHandle.g.cs | 123 +- .../Modules/g/MetaModuleModuleHandle.g.cs | 79 +- SunSharp/Modules/g/ModulatorModuleHandle.g.cs | 73 +- .../Modules/g/MultiControlModuleHandle.g.cs | 113 +- .../Modules/g/MultiSynthModuleHandle.g.cs | 157 +- SunSharp/Modules/g/OutputModuleHandle.g.cs | 3 + .../Modules/g/PitchDetectorModuleHandle.g.cs | 202 +- .../Modules/g/PitchShifterModuleHandle.g.cs | 120 +- .../Modules/g/PitchToControlModuleHandle.g.cs | 110 +- SunSharp/Modules/g/ReverbModuleHandle.g.cs | 165 +- SunSharp/Modules/g/SamplerModuleHandle.g.cs | 179 +- .../Modules/g/SoundToControlModuleHandle.g.cs | 148 +- .../Modules/g/SpectraVoiceModuleHandle.g.cs | 203 +- .../g/VelocityToControlModuleHandle.g.cs | 86 +- SunSharp/Modules/g/VibratoModuleHandle.g.cs | 115 +- .../Modules/g/VocalFilterModuleHandle.g.cs | 217 +- .../Modules/g/VorbisPlayerModuleHandle.g.cs | 146 +- .../Modules/g/WaveShaperModuleHandle.g.cs | 96 +- SunSharp/SunSharp.csproj | 2 +- 53 files changed, 10210 insertions(+), 1078 deletions(-) diff --git a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs index a472305..5d885a8 100644 --- a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs +++ b/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs @@ -32,6 +32,9 @@ protected override string GenerateBody() CodeGenerationHelper.AppendHeader(Context); AppendLine("#if !GENERATION"); + AppendLine(); + AppendLine("using System;"); + AppendLine(); AppendLine("namespace SunSharp.Modules"); AppendLine("{"); AddIndent(() => @@ -57,7 +60,7 @@ protected virtual void GenerateModuleInterfaceCode() AppendLine("{"); AddIndent(() => { - GenerateInterfaceControllerGettersSetters(); + GenerateInterfaceControllerGettersSettersEvents(); GenerateInterfaceCurveWritesReads(); }); AppendLine("}"); @@ -118,7 +121,7 @@ protected virtual void GenerateInterfaceCurveXmlDoc(int i, CurveDescription c, b AppendLine("/// "); } - protected virtual void GenerateInterfaceControllerGettersSetters() + protected virtual void GenerateInterfaceControllerGettersSettersEvents() { foreach (var (i, c) in ModuleDescription.Controllers) { @@ -126,12 +129,55 @@ protected virtual void GenerateInterfaceControllerGettersSetters() GenerateInterfaceGetter(i, c); AppendLine(); GenerateInterfaceSetter(i, c); + AppendLine(); + GenerateInterfaceMakeEvent(i, c); } } + protected virtual void GenerateInterfaceMakeEvent(int i, ControllerDescription c) + { + GenerateMakeEventXmlDoc(i, c); + if (c.EnumName != null) + { + AppendLine($"{nameof(PatternEvent)} Make{c.FriendlyName}Event({c.EnumName} value);"); + } + else + { + AppendLine($"{nameof(PatternEvent)} Make{c.FriendlyName}Event(int value);"); + } + } + + private void GenerateMakeEventXmlDoc(int i, ControllerDescription c) + { + AppendLine("/// "); + if (c.Description is not null) + { + var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); + for (int l = 0; l < descriptionLines.Length; l++) + { + var line = descriptionLines[l]; + AppendLine($"/// {line}"); + if (l == descriptionLines.Length - 1) + { + AppendLine("///
    "); + } + } + } + AppendLine($"/// This is a helper method to automatically handle turning target controller values into column values."); + if (c.ControllerType == ControllerType.Selector) + { + AppendLine($"/// For this controller the input value is taken as is, only clamped to column value range."); + } + else + { + AppendLine($"/// For this controller the input value is mapped from displayed range ({c.MinDisplayedValue} to {c.MaxDisplayedValue}) to column range (0 to 0x8000). Out of range values are clamped."); + } + AppendLine("///
    "); + } + protected virtual void GenerateInterfaceGetter(int i, ControllerDescription c) { - GenerateGetterSetterXmlDoc(i, c); + GenerateGetterSetterXmlDoc(i, c, false); if (c.EnumName != null) { AppendLine($"{c.EnumName} Get{c.FriendlyName}();"); @@ -144,7 +190,7 @@ protected virtual void GenerateInterfaceGetter(int i, ControllerDescription c) protected virtual void GenerateInterfaceSetter(int i, ControllerDescription c) { - GenerateGetterSetterXmlDoc(i, c); + GenerateGetterSetterXmlDoc(i, c, true); if (c.EnumName != null) { AppendLine($"void Set{c.FriendlyName}({c.EnumName} value);"); @@ -155,7 +201,7 @@ protected virtual void GenerateInterfaceSetter(int i, ControllerDescription c) } } - protected virtual void GenerateGetterSetterXmlDoc(int i, ControllerDescription c) + protected virtual void GenerateGetterSetterXmlDoc(int i, ControllerDescription c, bool setter) { AppendLine("/// "); if (c.Description is not null) @@ -171,18 +217,15 @@ protected virtual void GenerateGetterSetterXmlDoc(int i, ControllerDescription c } } } - if (c.EnumName == null) + if (c.ControllerType == ControllerType.Normal) { - if (c.MinDisplayedValue is not null) - { - AppendLine($"/// Value range: displayed: {c.MinDisplayedValue}-{c.MaxDisplayedValue}, real: {c.MinValue}-{c.MaxValue}"); - } - else - { - AppendLine($"/// Value range: {c.MinValue}-{c.MaxValue}"); - } + AppendLine($"/// Value range: displayed: {c.MinDisplayedValue} to {c.MaxDisplayedValue}, real: {c.MinValue} to {c.MaxValue}"); } AppendLine($"/// Original name: {i} '{c.InternalName}'"); + if (setter) + { + AppendLine($"/// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set."); + } AppendLine("/// "); } @@ -319,12 +362,12 @@ private void GenerateMethodImplementation(MethodImplementationDescriptor descrip var paramNullability = descriptor.NullabilityContext.Create(p); var paramType = CodeGenerationHelper.GetTypeName(p.ParameterType, paramNullability); var paramDecl = $"{paramType} {p.Name}"; - + if (p.HasDefaultValue) { paramDecl += $" = {CodeGenerationHelper.FormatDefaultValue(p.DefaultValue, p.ParameterType)}"; } - + return paramDecl; })); var argList = string.Join(", ", parameters.Select(p => p.Name)); @@ -431,6 +474,55 @@ protected virtual void GenerateModuleControllerGettersSetters() GenerateStructGetter(i, c); AppendLine(); GenerateStructSetter(i, c); + AppendLine(); + GenerateStructMakeEvent(i, c); + } + } + + protected virtual void GenerateStructMakeEvent(int i, ControllerDescription c) + { + AppendLine($"/// "); + if (c.EnumName != null) + { + AppendLine($"public {nameof(PatternEvent)} Make{c.FriendlyName}Event({c.EnumName} value)"); + AppendLine("{"); + AddIndent(() => + { + if (c.MinValue != 0 || c.MinDisplayedValue != 0 || c.Offset != 0 || c.MinValue != c.MinDisplayedValue) + { + throw new Exception("Assumption about enum-controller values was violated."); + } + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, {i}, (ushort)Math.Clamp((int)value, 0, 0x8000));"); + }); + AppendLine("}"); + } + else + { + AppendLine($"public {nameof(PatternEvent)} Make{c.FriendlyName}Event(int value)"); + AppendLine("{"); + AddIndent(() => + { + if (c.ControllerType == ControllerType.Selector) + { + // value can be set as is + // note: min may not be 0, but it's fine + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, {i}, (ushort)Math.Clamp(value, 0, 0x8000));"); + return; + } + // follow the code from the library + if (c.Offset != 0) + { + AppendLine($"value -= {c.Offset};"); + } + if (c.MinValue != 0) + { + AppendLine($"value -= {c.MinValue};"); + } + AppendLine($"value = value * 0x8000 / ({c.MaxValue - c.MinValue});"); + + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, {i}, (ushort)Math.Clamp(value, 0, 0x8000));"); + }); + AppendLine("}"); } } diff --git a/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs index 5625ea8..366b80e 100644 --- a/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs +++ b/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs @@ -1,4 +1,5 @@ using CodeGeneration.Logic; +using SunSharp; namespace CodeGeneration.Generators.ModuleHandles; @@ -9,7 +10,34 @@ public FmxModuleGenerator(string internalName, KnownModuleData moduleData) { } - protected override void GenerateInterfaceControllerGettersSetters() + private record GroupedControllerInfo(int firstIndex, string Name); + + private static readonly GroupedControllerInfo[] _groupedControllers = new[] + { + new GroupedControllerInfo(9, "Volume"), + new GroupedControllerInfo(14,"Attack"), + new GroupedControllerInfo(19,"Decay"), + new GroupedControllerInfo(24,"SustainLevel"), + new GroupedControllerInfo(29,"Release"), + new GroupedControllerInfo(34,"AttackCurve"), + new GroupedControllerInfo(39,"DecayCurve"), + new GroupedControllerInfo(44,"ReleaseCurve"), + new GroupedControllerInfo(49,"Sustain"), + new GroupedControllerInfo(54,"SustainPedal"), + new GroupedControllerInfo(59,"EnvelopeScalingPerKey"), + new GroupedControllerInfo(64,"VolumeScalingPerKey"), + new GroupedControllerInfo(69,"VelocitySensitivity"), + new GroupedControllerInfo(74,"Waveform"), + new GroupedControllerInfo(79,"Noise"), + new GroupedControllerInfo(84,"Phase"), + new GroupedControllerInfo(89,"FrequencyMultiply"), + new GroupedControllerInfo(94,"ConstantPitch"), + new GroupedControllerInfo(99,"SelfModulation"), + new GroupedControllerInfo(104,"Feedback"), + new GroupedControllerInfo(109,"ModulationType"), + }; + + protected override void GenerateInterfaceControllerGettersSettersEvents() { foreach (var (i, c) in ModuleDescription.Controllers) { @@ -22,9 +50,109 @@ protected override void GenerateInterfaceControllerGettersSetters() GenerateInterfaceGetter(i, c); AppendLine(); GenerateInterfaceSetter(i, c); + AppendLine(); + GenerateInterfaceMakeEvent(i, c); + } + + foreach(var group in _groupedControllers) + { + AppendLine(); + GenerateInterfaceGroupedGetter(group.firstIndex, group.Name); + AppendLine(); + GenerateInterfaceGroupedSetter(group.firstIndex, group.Name); + AppendLine(); + GenerateInterfaceGroupedMakeEvent(group.firstIndex, group.Name); + } + } + + private void GenerateInterfaceGroupedMakeEvent(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + GenerateGroupedXmlDoc(firstIndex, name, c, isSetter: false, isEvent: true); + + if (c.EnumName != null) + { + AppendLine($"{nameof(PatternEvent)} Make{name}Event(int index, {c.EnumName} value);"); + } + else + { + AppendLine($"{nameof(PatternEvent)} Make{name}Event(int index, int value);"); + } + } + + private void GenerateInterfaceGroupedSetter(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + GenerateGroupedXmlDoc(firstIndex, name, c, isSetter: true, isEvent: false); + + if (c.EnumName != null) + { + AppendLine($"void Set{name}(int index, {c.EnumName} value);"); + } + else + { + AppendLine($"void Set{name}(int index, int value, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + } + } + private void GenerateInterfaceGroupedGetter(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + GenerateGroupedXmlDoc(firstIndex, name, c, isSetter: false, isEvent: false); + + if (c.EnumName != null) + { + AppendLine($"{c.EnumName} Get{name}(int index);"); + } + else + { + AppendLine($"int Get{name}(int index, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + } + } + + private void GenerateGroupedXmlDoc(int firstIndex, string name, ControllerDescription c, bool isSetter, bool isEvent) + { + AppendLine("/// "); + if (c.Description is not null) + { + var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); + for (int l = 0; l < descriptionLines.Length; l++) + { + var line = descriptionLines[l]; + AppendLine($"/// {line}"); + if (l == descriptionLines.Length - 1) + { + AppendLine("///
    "); + } + } + AppendLine("///
    "); + } + AppendLine($"/// This method accesses one of 5 grouped controllers starting at controller {firstIndex}."); + AppendLine("///
    "); + if (c.ControllerType == ControllerType.Normal) + { + AppendLine($"/// Value range: displayed: {c.MinDisplayedValue} to {c.MaxDisplayedValue}, real: {c.MinValue} to {c.MaxValue}"); } + AppendLine($"/// Original name pattern: {firstIndex}-{firstIndex + 4} '{c.InternalName}'"); + if (isSetter || isEvent) + { + AppendLine($"/// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set."); + } + AppendLine("///
    "); + AppendLine("/// Index of the controller in the group (0-4)"); + } + + private void GenerateIndexValidation() + { + AppendLine("if (index < 0 || index > 4)"); + AppendLine("{"); + AddIndent(() => + { + AppendLine($"throw new {nameof(ArgumentOutOfRangeException)}(nameof(index));"); + }); + AppendLine("}"); } + protected override void GenerateModuleControllerGettersSetters() { foreach (var (i, c) in ModuleDescription.Controllers) @@ -38,6 +166,121 @@ protected override void GenerateModuleControllerGettersSetters() GenerateStructGetter(i, c); AppendLine(); GenerateStructSetter(i, c); + AppendLine(); + GenerateStructMakeEvent(i, c); + } + + foreach (var group in _groupedControllers) + { + AppendLine(); + GenerateStructGroupedGetter(group.firstIndex, group.Name); + AppendLine(); + GenerateStructGroupedSetter(group.firstIndex, group.Name); + AppendLine(); + GenerateStructGroupedMakeEvent(group.firstIndex, group.Name); + } + } + + private void GenerateStructGroupedMakeEvent(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + AppendLine($"/// "); + + if (c.EnumName != null) + { + AppendLine($"public {nameof(PatternEvent)} Make{name}Event(int index, {c.EnumName} value)"); + AppendLine("{"); + AddIndent(() => + { + if (c.MinValue != 0 || c.MinDisplayedValue != 0 || c.Offset != 0 || c.MinValue != c.MinDisplayedValue) + { + throw new Exception("Assumption about enum-controller values was violated."); + } + GenerateIndexValidation(); + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, (byte)({firstIndex} + index), (ushort)Math.Clamp((int)value, 0, 0x8000));"); + }); + AppendLine("}"); + } + else + { + AppendLine($"public {nameof(PatternEvent)} Make{name}Event(int index, int value)"); + AppendLine("{"); + AddIndent(() => + { + GenerateIndexValidation(); + if (c.ControllerType == ControllerType.Selector) + { + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, (byte)({firstIndex} + index), (ushort)Math.Clamp(value, 0, 0x8000));"); + return; + } + if (c.Offset != 0) + { + AppendLine($"value -= {c.Offset};"); + } + if (c.MinValue != 0) + { + AppendLine($"value -= {c.MinValue};"); + } + AppendLine($"value = value * 0x8000 / ({c.MaxValue - c.MinValue});"); + AppendLine($"return {nameof(PatternEvent)}.{nameof(PatternEvent.ControllerEvent)}(ModuleHandle.{nameof(SynthModuleHandle.Id)}, (byte)({firstIndex} + index), (ushort)Math.Clamp(value, 0, 0x8000));"); + }); + AppendLine("}"); + } + } + private void GenerateStructGroupedSetter(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + AppendLine($"/// "); + + if (c.EnumName != null) + { + AppendLine($"public void Set{name}(int index, {c.EnumName} value)"); + AppendLine("{"); + AddIndent(() => + { + GenerateIndexValidation(); + AppendLine($"ModuleHandle.SetControllerValue((byte)({firstIndex} + index), (int)value, {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed});"); + }); + AppendLine("}"); + } + else + { + AppendLine($"public void Set{name}(int index, int value, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed})"); + AppendLine("{"); + AddIndent(() => + { + GenerateIndexValidation(); + AppendLine($"ModuleHandle.SetControllerValue((byte)({firstIndex} + index), value, valueScalingMode);"); + }); + AppendLine("}"); + } + } + private void GenerateStructGroupedGetter(int firstIndex, string name) + { + var c = ModuleDescription.Controllers[firstIndex]; + AppendLine($"/// "); + + if (c.EnumName != null) + { + AppendLine($"public {c.EnumName} Get{name}(int index)"); + AppendLine("{"); + AddIndent(() => + { + GenerateIndexValidation(); + AppendLine($"return ({c.EnumName})ModuleHandle.GetControllerValue((byte)({firstIndex} + index), ValueScalingMode.Displayed);"); + }); + AppendLine("}"); + } + else + { + AppendLine($"public int Get{name}(int index, {nameof(ValueScalingMode)} valueScalingMode = {nameof(ValueScalingMode)}.{ValueScalingMode.Displayed})"); + AppendLine("{"); + AddIndent(() => + { + GenerateIndexValidation(); + AppendLine($"return ModuleHandle.GetControllerValue((byte)({firstIndex} + index), valueScalingMode);"); + }); + AppendLine("}"); } } } diff --git a/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs b/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs index afc115e..a624498 100644 --- a/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs +++ b/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs @@ -9,7 +9,7 @@ public MetaModuleGenerator(string internalName, KnownModuleData moduleData) { } - protected override void GenerateInterfaceControllerGettersSetters() + protected override void GenerateInterfaceControllerGettersSettersEvents() { foreach (var (i, c) in ModuleDescription.Controllers) { @@ -22,6 +22,8 @@ protected override void GenerateInterfaceControllerGettersSetters() GenerateInterfaceGetter(i, c); AppendLine(); GenerateInterfaceSetter(i, c); + AppendLine(); + GenerateInterfaceMakeEvent(i, c); } } @@ -38,6 +40,8 @@ protected override void GenerateModuleControllerGettersSetters() GenerateStructGetter(i, c); AppendLine(); GenerateStructSetter(i, c); + AppendLine(); + GenerateStructMakeEvent(i, c); } } } diff --git a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs index 83ed924..be79c87 100644 --- a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs +++ b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -173,19 +173,21 @@ private static Dictionary CreateControllersDescripti var maxValue = module.GetControllerMaxValue(id, ValueScalingMode.Real); var maxDisplayedValue = module.GetControllerMaxValue(id, ValueScalingMode.Displayed); var minDisplayedValue = module.GetControllerMinValue(id, ValueScalingMode.Displayed); - var isControllerEnum = controllerType == ControllerType.Enum; + var offset = module.GetControllerOffset(id); return new ControllerDescription() { InternalName = internalName, FriendlyName = MakeControllerNameFriendly(internalName), Description = null, - EnumName = isControllerEnum ? "CHANGEME" : null, - IgnoreActualType = null, - MaxDisplayedValue = maxValue == maxDisplayedValue ? null : maxDisplayedValue, + EnumName = (controllerType == ControllerType.Selector) ? "CHANGEME" : null, + SelectorIsNotEnum = false, + MaxDisplayedValue = maxDisplayedValue, MaxValue = maxValue, - MinDisplayedValue = minValue == minDisplayedValue ? null : minDisplayedValue, + MinDisplayedValue = minDisplayedValue, MinValue = minValue, + ControllerType = controllerType, + Offset = offset, }; } @@ -291,17 +293,27 @@ private static ModuleDescription MergeModuleData(ModuleDescription sunVoxData, M private static ControllerDescription MergeControllerData(ControllerDescription sunVoxController, ControllerDescription matching) { + var selectorIsNotEnum = (sunVoxController.ControllerType == ControllerType.Normal) + ? null + : matching.SelectorIsNotEnum; + + var enumName = selectorIsNotEnum != true + ? matching.EnumName ?? sunVoxController.EnumName + : null; + return new ControllerDescription() { Description = matching.Description, FriendlyName = matching.FriendlyName, InternalName = sunVoxController.InternalName, - IgnoreActualType = matching.IgnoreActualType, MinValue = sunVoxController.MinValue, MaxValue = sunVoxController.MaxValue, MinDisplayedValue = sunVoxController.MinDisplayedValue, MaxDisplayedValue = sunVoxController.MaxDisplayedValue, - EnumName = matching.EnumName ?? (matching.IgnoreActualType == true ? matching.EnumName : sunVoxController.EnumName) + SelectorIsNotEnum = selectorIsNotEnum, + EnumName = enumName, + ControllerType = sunVoxController.ControllerType, + Offset = sunVoxController.Offset, }; } diff --git a/CodeGeneration/Logic/KnownModuleData.cs b/CodeGeneration/Logic/KnownModuleData.cs index 10ff777..675a38a 100644 --- a/CodeGeneration/Logic/KnownModuleData.cs +++ b/CodeGeneration/Logic/KnownModuleData.cs @@ -1,5 +1,6 @@ using System.ComponentModel; using System.Text.Json.Serialization; +using SunSharp; namespace CodeGeneration.Logic; @@ -31,16 +32,16 @@ public class ControllerDescription public required int MinValue { get; init; } public required int MaxValue { get; init; } + public required int MinDisplayedValue { get; init; } + public required int MaxDisplayedValue { get; init; } + public required int Offset { get; init; } - [Description("The minimum displayed value of the controller. Available if different to MinValue.")] - public int? MinDisplayedValue { get; init; } + [Description("The type of controller this is, as defined in the SunVox API.")] + [JsonConverter(typeof(JsonStringEnumConverter))] + public required ControllerType ControllerType { get; init; } - [Description("The maximum displayed value of the controller. Available if different to MaxValue.")] - public int? MaxDisplayedValue { get; init; } - - [Description("Whether the underlying type of the controller should be ignored. " + - "If true, the data should not be overwritten by the generator code.")] - public bool? IgnoreActualType { get; init; } + [Description("Whether the selector is an enum.")] + public bool? SelectorIsNotEnum { get; init; } [Description("The name of the enum this controller uses.")] public string? EnumName { get; init; } diff --git a/CodeGeneration/Logic/ModuleData.g.json b/CodeGeneration/Logic/ModuleData.g.json index d7a9042..29ae899 100644 --- a/CodeGeneration/Logic/ModuleData.g.json +++ b/CodeGeneration/Logic/ModuleData.g.json @@ -10,13 +10,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Waveform", "InternalName": "Waveform", "MinValue": 0, "MaxValue": 16, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AnalogGeneratorWaveform" }, "2": { @@ -25,25 +33,39 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Sustain", "InternalName": "Sustain", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "6": { @@ -51,13 +73,21 @@ "InternalName": "Exponential envelope", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "7": { "FriendlyName": "DutyCycle", "InternalName": "Duty cycle", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "SecondaryOscillatorPitch", @@ -66,51 +96,81 @@ "MinValue": 0, "MaxValue": 2000, "MinDisplayedValue": -1000, - "MaxDisplayedValue": 1000 + "MaxDisplayedValue": 1000, + "Offset": -1000, + "ControllerType": "Normal" }, "9": { "FriendlyName": "Filter", "InternalName": "Filter", "MinValue": 0, "MaxValue": 8, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 8, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AnalogGeneratorFilterType" }, "10": { "FriendlyName": "FilterFrequency", "InternalName": "F.freq", "MinValue": 0, - "MaxValue": 14000 + "MaxValue": 14000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 14000, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "FilterResonance", "InternalName": "F.resonance", "MinValue": 0, - "MaxValue": 1530 + "MaxValue": 1530, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1530, + "Offset": 0, + "ControllerType": "Normal" }, "12": { "FriendlyName": "FilterExponentialFrequency", "InternalName": "F.exponential freq", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "13": { "FriendlyName": "FilterAttack", "InternalName": "F.attack", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "14": { "FriendlyName": "FilterRelease", "InternalName": "F.release", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "15": { "FriendlyName": "FilterEnvelope", "InternalName": "F.envelope", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AnalogGeneratorEnvelopeMode" }, "16": { @@ -118,7 +178,11 @@ "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 32, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "17": { "FriendlyName": "Mode", @@ -126,6 +190,10 @@ "Description": "Quality mode of the module.", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" }, "18": { @@ -133,26 +201,42 @@ "InternalName": "Noise", "Description": "Amount of white noise added to the signal.", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "19": { "FriendlyName": "SecondaryOscillatorVolume", "InternalName": "Osc2 volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "20": { "FriendlyName": "SecondaryOscillatorMode", "InternalName": "Osc2 mode", "MinValue": 0, "MaxValue": 8, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 8, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AnalogGeneratorSecondaryOscillatorMode" }, "21": { "FriendlyName": "SecondaryOscillatorPhase", "InternalName": "Osc2 phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": { @@ -171,7 +255,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Panning", @@ -179,68 +267,110 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Polyphony", "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 8, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 8, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "3": { "FriendlyName": "BassVolume", "InternalName": "Bass volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "BassPower", "InternalName": "Bass power", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "BassTone", "InternalName": "Bass tone", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "BassLength", "InternalName": "Bass length", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "HihatVolume", "InternalName": "Hihat volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "HihatLength", "InternalName": "Hihat length", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "SnareVolume", "InternalName": "Snare volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "SnareTone", "InternalName": "Snare tone", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "SnareLength", "InternalName": "Snare length", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "12": { "FriendlyName": "BassPanning", @@ -248,7 +378,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "13": { "FriendlyName": "HihatPanning", @@ -256,7 +388,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "14": { "FriendlyName": "SnarePanning", @@ -264,7 +398,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" } }, "Curves": {} @@ -275,13 +411,21 @@ "FriendlyName": "CarrierVolume", "InternalName": "C.Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "ModulatorVolume", "InternalName": "M.Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Panning", @@ -289,92 +433,150 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "3": { "FriendlyName": "CarrierFrequencyRatio", "InternalName": "C.Freq ratio", "MinValue": 0, - "MaxValue": 16 + "MaxValue": 16, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "ModulatorFrequencyRatio", "InternalName": "M.Freq ratio", "MinValue": 0, - "MaxValue": 16 + "MaxValue": 16, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "ModulatorSelfModulation", "InternalName": "M.Self-modulation", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "CarrierAttack", "InternalName": "C.Attack", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "CarrierDecay", "InternalName": "C.Decay", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "CarrierSustain", "InternalName": "C.Sustain", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "CarrierRelease", "InternalName": "C.Release", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "ModulatorAttack", "InternalName": "M.Attack", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "ModulatorDecay", "InternalName": "M.Decay", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "12": { "FriendlyName": "ModulatorSustain", "InternalName": "M.Sustain", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "13": { "FriendlyName": "ModulatorRelease", "InternalName": "M.Release", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "14": { "FriendlyName": "ModulatorScalingPerKey", "InternalName": "M.Scaling per key", "MinValue": 0, - "MaxValue": 4 + "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Normal" }, "15": { "FriendlyName": "Polyphony", "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 16, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "16": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" } }, @@ -386,7 +588,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Panning", @@ -394,13 +600,19 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "2": { "FriendlyName": "SampleRate", "InternalName": "Sample rate", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxSampleRate" }, "3": { @@ -408,13 +620,21 @@ "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 32, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ChannelsInverted" }, "5": { @@ -422,13 +642,21 @@ "InternalName": "Input -\u003E Operator #", "MinValue": 0, "MaxValue": 5, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 5, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "6": { "FriendlyName": "InputCustomWaveform", "InternalName": "Input -\u003E Custom waveform", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxCustomWaveform" }, "7": { @@ -436,169 +664,281 @@ "InternalName": "ADSR smooth transitions", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSmoothTransitions" }, "8": { "FriendlyName": "NoiseFilterOff32768", "InternalName": "Noise filter (32768 - OFF)", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "Volume1", "InternalName": "1 Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "Volume2", "InternalName": "2 Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "Volume3", "InternalName": "3 Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "12": { "FriendlyName": "Volume4", "InternalName": "4 Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "13": { "FriendlyName": "Volume5", "InternalName": "5 Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "14": { "FriendlyName": "Attack1", "InternalName": "1 Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "15": { "FriendlyName": "Attack2", "InternalName": "2 Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "16": { "FriendlyName": "Attack3", "InternalName": "3 Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "17": { "FriendlyName": "Attack4", "InternalName": "4 Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "18": { "FriendlyName": "Attack5", "InternalName": "5 Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "19": { "FriendlyName": "Decay1", "InternalName": "1 Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "20": { "FriendlyName": "Decay2", "InternalName": "2 Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "21": { "FriendlyName": "Decay3", "InternalName": "3 Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "22": { "FriendlyName": "Decay4", "InternalName": "4 Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "23": { "FriendlyName": "Decay5", "InternalName": "5 Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "24": { "FriendlyName": "SustainLevel1", "InternalName": "1 Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "25": { "FriendlyName": "SustainLevel2", "InternalName": "2 Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "26": { "FriendlyName": "SustainLevel3", "InternalName": "3 Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "27": { "FriendlyName": "SustainLevel4", "InternalName": "4 Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "28": { "FriendlyName": "SustainLevel5", "InternalName": "5 Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "29": { "FriendlyName": "Release1", "InternalName": "1 Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "30": { "FriendlyName": "Release2", "InternalName": "2 Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "31": { "FriendlyName": "Release3", "InternalName": "3 Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "32": { "FriendlyName": "Release4", "InternalName": "4 Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "33": { "FriendlyName": "Release5", "InternalName": "5 Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "34": { "FriendlyName": "AttackCurve1", "InternalName": "1 Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "35": { @@ -606,6 +946,10 @@ "InternalName": "2 Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "36": { @@ -613,6 +957,10 @@ "InternalName": "3 Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "37": { @@ -620,6 +968,10 @@ "InternalName": "4 Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "38": { @@ -627,6 +979,10 @@ "InternalName": "5 Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "39": { @@ -634,6 +990,10 @@ "InternalName": "1 Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "40": { @@ -641,6 +1001,10 @@ "InternalName": "2 Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "41": { @@ -648,6 +1012,10 @@ "InternalName": "3 Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "42": { @@ -655,6 +1023,10 @@ "InternalName": "4 Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "43": { @@ -662,6 +1034,10 @@ "InternalName": "5 Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "44": { @@ -669,6 +1045,10 @@ "InternalName": "1 Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "45": { @@ -676,6 +1056,10 @@ "InternalName": "2 Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "46": { @@ -683,6 +1067,10 @@ "InternalName": "3 Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "47": { @@ -690,6 +1078,10 @@ "InternalName": "4 Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "48": { @@ -697,6 +1089,10 @@ "InternalName": "5 Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "49": { @@ -704,6 +1100,10 @@ "InternalName": "1 Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "50": { @@ -711,6 +1111,10 @@ "InternalName": "2 Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "51": { @@ -718,6 +1122,10 @@ "InternalName": "3 Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "52": { @@ -725,6 +1133,10 @@ "InternalName": "4 Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "53": { @@ -732,6 +1144,10 @@ "InternalName": "5 Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "54": { @@ -739,6 +1155,10 @@ "InternalName": "1 Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "55": { @@ -746,6 +1166,10 @@ "InternalName": "2 Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "56": { @@ -753,6 +1177,10 @@ "InternalName": "3 Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "57": { @@ -760,6 +1188,10 @@ "InternalName": "4 Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "58": { @@ -767,6 +1199,10 @@ "InternalName": "5 Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "59": { @@ -775,7 +1211,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "60": { "FriendlyName": "EnvelopeScalingPerKey2", @@ -783,7 +1221,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "61": { "FriendlyName": "EnvelopeScalingPerKey3", @@ -791,7 +1231,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "62": { "FriendlyName": "EnvelopeScalingPerKey4", @@ -799,7 +1241,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "63": { "FriendlyName": "EnvelopeScalingPerKey5", @@ -807,7 +1251,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "64": { "FriendlyName": "VolumeScalingPerKey1", @@ -815,7 +1261,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "65": { "FriendlyName": "VolumeScalingPerKey2", @@ -823,7 +1271,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "66": { "FriendlyName": "VolumeScalingPerKey3", @@ -831,7 +1281,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "67": { "FriendlyName": "VolumeScalingPerKey4", @@ -839,7 +1291,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "68": { "FriendlyName": "VolumeScalingPerKey5", @@ -847,7 +1301,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "69": { "FriendlyName": "VelocitySensitivity1", @@ -855,7 +1311,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "70": { "FriendlyName": "VelocitySensitivity2", @@ -863,7 +1321,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "71": { "FriendlyName": "VelocitySensitivity3", @@ -871,7 +1331,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "72": { "FriendlyName": "VelocitySensitivity4", @@ -879,7 +1341,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "73": { "FriendlyName": "VelocitySensitivity5", @@ -887,13 +1351,19 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "74": { "FriendlyName": "Waveform1", "InternalName": "1 Waveform", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxWaveform" }, "75": { @@ -901,6 +1371,10 @@ "InternalName": "2 Waveform", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxWaveform" }, "76": { @@ -908,6 +1382,10 @@ "InternalName": "3 Waveform", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxWaveform" }, "77": { @@ -915,6 +1393,10 @@ "InternalName": "4 Waveform", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxWaveform" }, "78": { @@ -922,97 +1404,161 @@ "InternalName": "5 Waveform", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxWaveform" }, "79": { "FriendlyName": "Noise1", "InternalName": "1 Noise", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "80": { "FriendlyName": "Noise2", "InternalName": "2 Noise", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "81": { "FriendlyName": "Noise3", "InternalName": "3 Noise", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "82": { "FriendlyName": "Noise4", "InternalName": "4 Noise", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "83": { "FriendlyName": "Noise5", "InternalName": "5 Noise", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "84": { "FriendlyName": "Phase1", "InternalName": "1 Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "85": { "FriendlyName": "Phase2", "InternalName": "2 Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "86": { "FriendlyName": "Phase3", "InternalName": "3 Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "87": { "FriendlyName": "Phase4", "InternalName": "4 Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "88": { "FriendlyName": "Phase5", "InternalName": "5 Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "89": { "FriendlyName": "FreqMultiply1", "InternalName": "1 Freq multiply", "MinValue": 0, - "MaxValue": 32000 + "MaxValue": 32000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32000, + "Offset": 0, + "ControllerType": "Normal" }, "90": { "FriendlyName": "FreqMultiply2", "InternalName": "2 Freq multiply", "MinValue": 0, - "MaxValue": 32000 + "MaxValue": 32000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32000, + "Offset": 0, + "ControllerType": "Normal" }, "91": { "FriendlyName": "FreqMultiply3", "InternalName": "3 Freq multiply", "MinValue": 0, - "MaxValue": 32000 + "MaxValue": 32000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32000, + "Offset": 0, + "ControllerType": "Normal" }, "92": { "FriendlyName": "FreqMultiply4", "InternalName": "4 Freq multiply", "MinValue": 0, - "MaxValue": 32000 + "MaxValue": 32000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32000, + "Offset": 0, + "ControllerType": "Normal" }, "93": { "FriendlyName": "FreqMultiply5", "InternalName": "5 Freq multiply", "MinValue": 0, - "MaxValue": 32000 + "MaxValue": 32000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32000, + "Offset": 0, + "ControllerType": "Normal" }, "94": { "FriendlyName": "ConstantPitch1", @@ -1020,7 +1566,9 @@ "MinValue": 0, "MaxValue": 16384, "MinDisplayedValue": -8192, - "MaxDisplayedValue": 8192 + "MaxDisplayedValue": 8192, + "Offset": -8192, + "ControllerType": "Normal" }, "95": { "FriendlyName": "ConstantPitch2", @@ -1028,7 +1576,9 @@ "MinValue": 0, "MaxValue": 16384, "MinDisplayedValue": -8192, - "MaxDisplayedValue": 8192 + "MaxDisplayedValue": 8192, + "Offset": -8192, + "ControllerType": "Normal" }, "96": { "FriendlyName": "ConstantPitch3", @@ -1036,7 +1586,9 @@ "MinValue": 0, "MaxValue": 16384, "MinDisplayedValue": -8192, - "MaxDisplayedValue": 8192 + "MaxDisplayedValue": 8192, + "Offset": -8192, + "ControllerType": "Normal" }, "97": { "FriendlyName": "ConstantPitch4", @@ -1044,7 +1596,9 @@ "MinValue": 0, "MaxValue": 16384, "MinDisplayedValue": -8192, - "MaxDisplayedValue": 8192 + "MaxDisplayedValue": 8192, + "Offset": -8192, + "ControllerType": "Normal" }, "98": { "FriendlyName": "ConstantPitch5", @@ -1052,73 +1606,119 @@ "MinValue": 0, "MaxValue": 16384, "MinDisplayedValue": -8192, - "MaxDisplayedValue": 8192 + "MaxDisplayedValue": 8192, + "Offset": -8192, + "ControllerType": "Normal" }, "99": { "FriendlyName": "SelfModulation1", "InternalName": "1 Self-modulation", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "100": { "FriendlyName": "SelfModulation2", "InternalName": "2 Self-modulation", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "101": { "FriendlyName": "SelfModulation3", "InternalName": "3 Self-modulation", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "102": { "FriendlyName": "SelfModulation4", "InternalName": "4 Self-modulation", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "103": { "FriendlyName": "SelfModulation5", "InternalName": "5 Self-modulation", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "104": { "FriendlyName": "Feedback1", "InternalName": "1 Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "105": { "FriendlyName": "Feedback2", "InternalName": "2 Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "106": { "FriendlyName": "Feedback3", "InternalName": "3 Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "107": { "FriendlyName": "Feedback4", "InternalName": "4 Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "108": { "FriendlyName": "Feedback5", "InternalName": "5 Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "109": { "FriendlyName": "ModulationType1", "InternalName": "1 Modulation type", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxModulationType" }, "110": { @@ -1126,6 +1726,10 @@ "InternalName": "2 Modulation type", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxModulationType" }, "111": { @@ -1133,6 +1737,10 @@ "InternalName": "3 Modulation type", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxModulationType" }, "112": { @@ -1140,6 +1748,10 @@ "InternalName": "4 Modulation type", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxModulationType" }, "113": { @@ -1147,6 +1759,10 @@ "InternalName": "5 Modulation type", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FmxModulationType" }, "114": { @@ -1154,34 +1770,54 @@ "InternalName": "1 Output mode", "MinValue": 0, "MaxValue": 31, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 31, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "115": { "FriendlyName": "OutputMode2", "InternalName": "2 Output mode", "MinValue": 0, "MaxValue": 15, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 15, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "116": { "FriendlyName": "OutputMode3", "InternalName": "3 Output mode", "MinValue": 0, "MaxValue": 7, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 7, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "117": { "FriendlyName": "OutputMode4", "InternalName": "4 Output mode", "MinValue": 0, "MaxValue": 3, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "118": { "FriendlyName": "EnvelopeGain", "InternalName": "Envelope gain", "MinValue": 0, - "MaxValue": 8000 + "MaxValue": 8000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 8000, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": { @@ -1200,13 +1836,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Waveform", "InternalName": "Waveform", "MinValue": 0, "MaxValue": 8, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 8, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "GeneratorWaveform" }, "2": { @@ -1215,32 +1859,50 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Polyphony", "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 16, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "6": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "7": { @@ -1248,19 +1910,31 @@ "InternalName": "Sustain", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "8": { "FriendlyName": "FreqModulationByInput", "InternalName": "Freq.modulation by input", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "DutyCycle", "InternalName": "Duty cycle", "MinValue": 0, - "MaxValue": 1022 + "MaxValue": 1022, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1022, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": { @@ -1279,13 +1953,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ChannelsInverted" } }, @@ -1297,13 +1979,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Waveform", "InternalName": "Waveform", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "KickerWaveform" }, "2": { @@ -1312,44 +2002,70 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Boost", "InternalName": "Boost", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "Acceleration", "InternalName": "Acceleration", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Polyphony", "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 4, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "8": { "FriendlyName": "NoClick", "InternalName": "No click", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -1361,35 +2077,53 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "OriginalSpeed", "InternalName": "Original speed", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "2": { - "FriendlyName": "Finetune", + "FriendlyName": "AudioFineTune", "InternalName": "Finetune", "MinValue": -128, - "MaxValue": 128 + "MaxValue": 128, + "MinDisplayedValue": -128, + "MaxDisplayedValue": 128, + "Offset": 0, + "ControllerType": "Normal" }, "3": { - "FriendlyName": "Transpose", + "FriendlyName": "AudioTranspose", "InternalName": "Transpose", "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, "MaxDisplayedValue": 128, - "IgnoreActualType": true + "Offset": -128, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "Interpolation", "InternalName": "Interpolation", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "5": { @@ -1397,13 +2131,21 @@ "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 4, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "6": { "FriendlyName": "Repeat", "InternalName": "Repeat", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "7": { @@ -1411,6 +2153,10 @@ "InternalName": "Ignore Note OFF", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -1422,7 +2168,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Panning", @@ -1430,13 +2180,19 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "2": { "FriendlyName": "SampleInterpolation", "InternalName": "Sample interpolation", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SamplerInterpolation" }, "3": { @@ -1444,6 +2200,10 @@ "InternalName": "Envelope interpolation", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SamplerEnvelopeInterpolation" }, "4": { @@ -1451,25 +2211,41 @@ "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 32, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "5": { "FriendlyName": "RecThreshold", "InternalName": "Rec threshold", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "TickLengthNorm128", "InternalName": "Tick length (norm=128)", "MinValue": 0, - "MaxValue": 2048 + "MaxValue": 2048, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2048, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Record", "InternalName": "Record", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SamplerRecordState" }, "8": { @@ -1477,19 +2253,31 @@ "InternalName": "Reverse", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "9": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -1500,7 +2288,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Panning", @@ -1508,32 +2300,50 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Polyphony", "InternalName": "Polyphony", "MinValue": 1, "MaxValue": 32, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "5": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SpectraVoiceMode" }, "6": { @@ -1541,6 +2351,10 @@ "InternalName": "Sustain", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "7": { @@ -1548,6 +2362,10 @@ "InternalName": "Spectrum resolution", "MinValue": 0, "MaxValue": 5, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 5, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SpectraVoiceResolution" }, "8": { @@ -1555,34 +2373,54 @@ "InternalName": "Harmonic", "MinValue": 0, "MaxValue": 15, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 15, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "9": { "FriendlyName": "HFreq", "InternalName": "H.freq", "MinValue": 0, "MaxValue": 22050, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 22050, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "10": { "FriendlyName": "HVolume", "InternalName": "H.volume", "MinValue": 0, "MaxValue": 255, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 255, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "11": { "FriendlyName": "HWidth", "InternalName": "H.width", "MinValue": 0, "MaxValue": 255, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 255, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "12": { "FriendlyName": "HType", "InternalName": "H.type", "MinValue": 0, "MaxValue": 18, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 18, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SpectraVoiceHarmonicType" } }, @@ -1594,7 +2432,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Balance", @@ -1602,7 +2444,9 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "2": { "FriendlyName": "DcOffset", @@ -1610,39 +2454,61 @@ "MinValue": 0, "MaxValue": 256, "MinDisplayedValue": -128, - "MaxDisplayedValue": 128 + "MaxDisplayedValue": 128, + "Offset": -128, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Inverse", "InternalName": "Inverse", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "4": { "FriendlyName": "StereoWidth", "InternalName": "Stereo width", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Absolute", "InternalName": "Absolute", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "6": { "FriendlyName": "FineVolume", "InternalName": "Fine volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Gain", "InternalName": "Gain", "MinValue": 0, - "MaxValue": 5000 + "MaxValue": 5000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 5000, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "BipolarDcOffset", @@ -1650,7 +2516,9 @@ "MinValue": 0, "MaxValue": 32768, "MinDisplayedValue": -16384, - "MaxDisplayedValue": 16384 + "MaxDisplayedValue": 16384, + "Offset": -16384, + "ControllerType": "Normal" } }, "Curves": {} @@ -1661,37 +2529,61 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Threshold", "InternalName": "Threshold", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Slope", "InternalName": "Slope", "MinValue": 0, - "MaxValue": 200 + "MaxValue": 200, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 200, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 500 + "MaxValue": 500, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 500, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 1, - "MaxValue": 1000 + "MaxValue": 1000, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "CompressorMode" }, "6": { @@ -1699,7 +2591,11 @@ "InternalName": "Side-chain input", "MinValue": 0, "MaxValue": 32, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} @@ -1711,6 +2607,10 @@ "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" } }, @@ -1722,43 +2622,71 @@ "FriendlyName": "Dry", "InternalName": "Dry", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Wet", "InternalName": "Wet", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "DelayL", "InternalName": "Delay L", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "DelayR", "InternalName": "Delay R", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "VolumeL", "InternalName": "Volume L", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "VolumeR", "InternalName": "Volume R", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "7": { @@ -1766,6 +2694,10 @@ "InternalName": "Inverse", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "8": { @@ -1773,6 +2705,10 @@ "InternalName": "Delay unit", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "DelayUnit" }, "9": { @@ -1780,19 +2716,31 @@ "InternalName": "Delay multiplier", "MinValue": 1, "MaxValue": 15, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 15, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "10": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "NegativeFeedback", "InternalName": "Negative feedback", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "12": { @@ -1800,6 +2748,10 @@ "InternalName": "All-pass filter", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -1811,39 +2763,63 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "DistortionType", "InternalName": "Type", "MinValue": 0, "MaxValue": 10, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "DistortionType" }, "2": { "FriendlyName": "Power", "InternalName": "Power", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "BitDepth", "InternalName": "Bit depth", "MinValue": 1, "MaxValue": 16, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 16, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "Freq", "InternalName": "Freq", "MinValue": 0, - "MaxValue": 44100 + "MaxValue": 44100, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 44100, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Noise", "InternalName": "Noise", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -1854,31 +2830,51 @@ "FriendlyName": "Dry", "InternalName": "Dry", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Wet", "InternalName": "Wet", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Delay", "InternalName": "Delay", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "RightChannelOffset", "InternalName": "Right channel offset", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "5": { @@ -1886,6 +2882,10 @@ "InternalName": "Delay unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "EchoDelayUnit" }, "6": { @@ -1893,20 +2893,32 @@ "InternalName": "Right channel offset", "Description": "Expressed as Delay/32768.", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Filter", "InternalName": "Filter", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "EchoFilter" }, "8": { "FriendlyName": "FFreq", "InternalName": "F.freq", "MinValue": 0, - "MaxValue": 22000 + "MaxValue": 22000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 22000, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -1917,25 +2929,41 @@ "FriendlyName": "Low", "InternalName": "Low", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Middle", "InternalName": "Middle", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "High", "InternalName": "High", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" } }, @@ -1948,6 +2976,10 @@ "InternalName": "Sample rate", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FftSampleRate" }, "1": { @@ -1955,6 +2987,10 @@ "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ChannelsInverted" }, "2": { @@ -1962,6 +2998,10 @@ "InternalName": "Buffer (samples)", "MinValue": 0, "MaxValue": 7, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 7, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FftBufferSize" }, "3": { @@ -1969,50 +3009,82 @@ "InternalName": "Buf overlap", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FftBufferOverlap" }, "4": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "NoiseReduction", "InternalName": "Noise reduction", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "PhaseGainNorm16384", "InternalName": "Phase gain (norm=16384)", "MinValue": 0, "MaxValue": 32768, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "7": { "FriendlyName": "AllPassFilter", "InternalName": "All-pass filter", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "FrequencySpread", "InternalName": "Frequency spread", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "RandomPhase", "InternalName": "Random phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "RandomPhaseLite", "InternalName": "Random phase (lite)", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "FreqShift", @@ -2020,37 +3092,59 @@ "MinValue": 0, "MaxValue": 8192, "MinDisplayedValue": -4096, - "MaxDisplayedValue": 4096 + "MaxDisplayedValue": 4096, + "Offset": -4096, + "ControllerType": "Normal" }, "12": { "FriendlyName": "Deform1", "InternalName": "Deform1", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "13": { "FriendlyName": "Deform2", "InternalName": "Deform2", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "14": { "FriendlyName": "HpCutoff", "InternalName": "HP cutoff", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "15": { "FriendlyName": "LpCutoff", "InternalName": "LP cutoff", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "16": { "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -2061,75 +3155,123 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Freq", "InternalName": "Freq", "MinValue": 0, - "MaxValue": 14000 + "MaxValue": 14000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 14000, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Resonance", "InternalName": "Resonance", "MinValue": 0, - "MaxValue": 1530 + "MaxValue": 1530, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1530, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "FilterType", "InternalName": "Type", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterType" }, "4": { "FriendlyName": "Response", "InternalName": "Response", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" }, "6": { "FriendlyName": "Impulse", "InternalName": "Impulse", "MinValue": 0, - "MaxValue": 14000 + "MaxValue": 14000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 14000, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Mix", "InternalName": "Mix", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "LfoFreq", "InternalName": "LFO freq", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "LfoAmp", "InternalName": "LFO amp", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "SetLfoPhase", "InternalName": "Set LFO phase", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "ExponentialFreq", "InternalName": "Exponential freq", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "12": { @@ -2137,6 +3279,10 @@ "InternalName": "Roll-off", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterRollOff" }, "13": { @@ -2144,6 +3290,10 @@ "InternalName": "LFO freq unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterLfoFrequencyUnit" }, "14": { @@ -2151,6 +3301,10 @@ "InternalName": "LFO waveform", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterLfoWaveform" } }, @@ -2162,47 +3316,73 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "FilterType", "InternalName": "Type", "MinValue": 0, "MaxValue": 10, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterProType" }, "2": { "FriendlyName": "Freq", "InternalName": "Freq", "MinValue": 0, - "MaxValue": 22000 + "MaxValue": 22000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 22000, + "Offset": 0, + "ControllerType": "Normal" }, "3": { - "FriendlyName": "FreqFinetune", + "FriendlyName": "FreqFineTune", "InternalName": "Freq finetune", "MinValue": 0, "MaxValue": 2000, "MinDisplayedValue": -1000, - "MaxDisplayedValue": 1000 + "MaxDisplayedValue": 1000, + "Offset": -1000, + "ControllerType": "Normal" }, "4": { "FriendlyName": "FreqScale", "InternalName": "Freq scale", "MinValue": 0, - "MaxValue": 200 + "MaxValue": 200, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 200, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "ExponentialFreq", "InternalName": "Exponential freq", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "6": { "FriendlyName": "Q", "InternalName": "Q", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Gain", @@ -2210,64 +3390,102 @@ "MinValue": 0, "MaxValue": 32768, "MinDisplayedValue": -16384, - "MaxDisplayedValue": 16384 + "MaxDisplayedValue": 16384, + "Offset": -16384, + "ControllerType": "Normal" }, "8": { "FriendlyName": "RollOff", "InternalName": "Roll-off", "MinValue": 0, "MaxValue": 7, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 7, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterProRollOff" }, "9": { "FriendlyName": "Response", "InternalName": "Response", "MinValue": 0, - "MaxValue": 1000 + "MaxValue": 1000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterProMode" }, "11": { "FriendlyName": "Mix", "InternalName": "Mix", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "12": { "FriendlyName": "LfoFreq", "InternalName": "LFO freq", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "13": { "FriendlyName": "LfoAmp", "InternalName": "LFO amp", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "14": { "FriendlyName": "LfoWaveform", "InternalName": "LFO waveform", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterLfoWaveform" }, "15": { "FriendlyName": "SetLfoPhase", "InternalName": "Set LFO phase", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "16": { "FriendlyName": "LfoFreqUnit", "InternalName": "LFO freq unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterLfoFrequencyUnit" } }, @@ -2279,62 +3497,102 @@ "FriendlyName": "Dry", "InternalName": "Dry", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Wet", "InternalName": "Wet", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Delay", "InternalName": "Delay", "MinValue": 8, - "MaxValue": 1000 + "MaxValue": 1000, + "MinDisplayedValue": 8, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Response", "InternalName": "Response", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "LfoFreq", "InternalName": "LFO freq", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "LfoAmp", "InternalName": "LFO amp", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "LfoWaveform", "InternalName": "LFO waveform", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FlangerLfoWaveform" }, "8": { "FriendlyName": "SetLfoPhase", "InternalName": "Set LFO phase", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "LfoFreqUnit", "InternalName": "LFO freq unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FlangerLfoFrequencyUnit" } }, @@ -2346,45 +3604,73 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "FilterType", "InternalName": "Type", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LfoType" }, "2": { "FriendlyName": "Amplitude", "InternalName": "Amplitude", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Freq", "InternalName": "Freq", "MinValue": 1, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Waveform", "InternalName": "Waveform", "MinValue": 0, "MaxValue": 7, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 7, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LfoWaveform" }, "5": { "FriendlyName": "SetPhase", "InternalName": "Set phase", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "7": { @@ -2392,32 +3678,52 @@ "InternalName": "Frequency unit", "MinValue": 0, "MaxValue": 8, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 8, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LfoFrequencyUnit" }, "8": { "FriendlyName": "DutyCycle", "InternalName": "Duty cycle", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "Generator", "InternalName": "Generator", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "10": { "FriendlyName": "FreqScale", "InternalName": "Freq scale", "MinValue": 0, - "MaxValue": 200 + "MaxValue": 200, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 200, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "SmoothTransitions", "InternalName": "Smooth transitions", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LfoSmoothTransitions" }, "12": { @@ -2425,6 +3731,10 @@ "InternalName": "Sine quality", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LfoSineQuality" }, "13": { @@ -2434,15 +3744,19 @@ "MaxValue": 256, "MinDisplayedValue": -128, "MaxDisplayedValue": 128, - "IgnoreActualType": true + "Offset": -128, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "14": { - "FriendlyName": "Finetune", + "FriendlyName": "FineTune", "InternalName": "Finetune", "MinValue": 0, "MaxValue": 512, "MinDisplayedValue": -256, - "MaxDisplayedValue": 256 + "MaxDisplayedValue": 256, + "Offset": -256, + "ControllerType": "Normal" } }, "Curves": {} @@ -2453,19 +3767,31 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Length", "InternalName": "Length", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ChannelsInverted" }, "3": { @@ -2473,13 +3799,21 @@ "InternalName": "Repeat (128=endless)", "MinValue": 0, "MaxValue": 128, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 128, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LoopMode" }, "5": { @@ -2487,6 +3821,10 @@ "InternalName": "Length unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LoopTimeUnit" }, "6": { @@ -2495,13 +3833,21 @@ "Description": "Max buffer size in seconds", "MinValue": 1, "MaxValue": 240, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 240, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "7": { "FriendlyName": "OnNoteon", "InternalName": "On NoteON", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "LoopOnNoteOn" } }, @@ -2513,13 +3859,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "ModulationType", "InternalName": "Modulation type", "MinValue": 0, "MaxValue": 10, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ModulationType" }, "2": { @@ -2527,6 +3881,10 @@ "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "3": { @@ -2534,6 +3892,10 @@ "InternalName": "Max PM delay", "MinValue": 0, "MaxValue": 9, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 9, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ModulatorMaxPhaseModulationDelay" }, "4": { @@ -2541,6 +3903,10 @@ "InternalName": "PM interpolation", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ModulatorPhaseModulationInterpolation" } }, @@ -2552,7 +3918,11 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Pitch", @@ -2560,31 +3930,49 @@ "MinValue": 0, "MaxValue": 1200, "MinDisplayedValue": -600, - "MaxDisplayedValue": 600 + "MaxDisplayedValue": 600, + "Offset": -600, + "ControllerType": "Normal" }, "2": { "FriendlyName": "PitchScale", "InternalName": "Pitch scale", "MinValue": 0, - "MaxValue": 200 + "MaxValue": 200, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 200, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "GrainSize", "InternalName": "Grain size", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" }, "6": { @@ -2592,6 +3980,10 @@ "InternalName": "Bypass if pitch=0", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchShifterBypassMode" } }, @@ -2603,37 +3995,61 @@ "FriendlyName": "Dry", "InternalName": "Dry", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Wet", "InternalName": "Wet", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Feedback", "InternalName": "Feedback", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Damp", "InternalName": "Damp", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "StereoWidth", "InternalName": "Stereo width", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Freeze", "InternalName": "Freeze", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "6": { @@ -2641,6 +4057,10 @@ "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" }, "7": { @@ -2648,20 +4068,32 @@ "InternalName": "All-pass filter", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ReverbAllPassFilter" }, "8": { "FriendlyName": "RoomSize", "InternalName": "Room size", "MinValue": 0, - "MaxValue": 128 + "MaxValue": 128, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 128, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "RandomSeed", "InternalName": "Random seed", "MinValue": 0, "MaxValue": 32768, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} @@ -2672,38 +4104,62 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "FormantWidth", "InternalName": "Formant width", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Intensity", "InternalName": "Intensity", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Formants", "InternalName": "Formants", "MinValue": 1, "MaxValue": 5, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 5, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "VowelAEIOU", "InternalName": "Vowel (a,e,i,o,u)", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "VoiceType", "InternalName": "Voice type", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVoiceType" }, "6": { @@ -2711,25 +4167,41 @@ "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "7": { "FriendlyName": "RandomFrequency", "InternalName": "Random frequency", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "RandomSeed", "InternalName": "Random seed", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "9": { "FriendlyName": "Vowel1", "InternalName": "Vowel1", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVowel" }, "10": { @@ -2737,6 +4209,10 @@ "InternalName": "Vowel2", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVowel" }, "11": { @@ -2744,6 +4220,10 @@ "InternalName": "Vowel3", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVowel" }, "12": { @@ -2751,6 +4231,10 @@ "InternalName": "Vowel4", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVowel" }, "13": { @@ -2758,6 +4242,10 @@ "InternalName": "Vowel5", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VocalFilterVowel" } }, @@ -2769,38 +4257,62 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Amplitude", "InternalName": "Amplitude", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Freq", "InternalName": "Freq", "MinValue": 1, - "MaxValue": 2048 + "MaxValue": 2048, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 2048, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" }, "4": { "FriendlyName": "SetPhase", "InternalName": "Set phase", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "FrequencyUnit", "InternalName": "Frequency unit", "MinValue": 0, "MaxValue": 6, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 6, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VibratoFrequencyUnit" }, "6": { @@ -2808,6 +4320,10 @@ "InternalName": "Exponential amplitude", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -2819,25 +4335,41 @@ "FriendlyName": "InputVolume", "InternalName": "Input volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Mix", "InternalName": "Mix", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "OutputVolume", "InternalName": "Output volume", "MinValue": 0, - "MaxValue": 512 + "MaxValue": 512, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 512, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Symmetric", "InternalName": "Symmetric", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "4": { @@ -2845,6 +4377,10 @@ "InternalName": "Mode", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Quality" }, "5": { @@ -2852,6 +4388,10 @@ "InternalName": "DC blocker", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -2871,37 +4411,61 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Attack", "InternalName": "Attack", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Decay", "InternalName": "Decay", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "SustainLevel", "InternalName": "Sustain level", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Release", "InternalName": "Release", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "AttackCurve", "InternalName": "Attack curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "6": { @@ -2909,6 +4473,10 @@ "InternalName": "Decay curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "7": { @@ -2916,6 +4484,10 @@ "InternalName": "Release curve", "MinValue": 0, "MaxValue": 11, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 11, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrCurveType" }, "8": { @@ -2923,6 +4495,10 @@ "InternalName": "Sustain", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSustainMode" }, "9": { @@ -2930,6 +4506,10 @@ "InternalName": "Sustain pedal", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "10": { @@ -2937,6 +4517,10 @@ "InternalName": "State", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "11": { @@ -2944,6 +4528,10 @@ "InternalName": "On NoteON", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrOnNoteOnBehaviour" }, "12": { @@ -2951,6 +4539,10 @@ "InternalName": "On NoteOFF", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrOnNoteOffBehaviour" }, "13": { @@ -2958,6 +4550,10 @@ "InternalName": "Mode", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrMode" }, "14": { @@ -2965,6 +4561,10 @@ "InternalName": "Smooth transitions", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "AdsrSmoothTransitions" } }, @@ -2976,21 +4576,33 @@ "FriendlyName": "Pitch", "InternalName": "Pitch", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "FirstNote", "InternalName": "First note", "MinValue": 0, "MaxValue": 120, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 120, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "2": { "FriendlyName": "RangeNumberOfSemitones", "InternalName": "Range (number of semitones)", "MinValue": 0, "MaxValue": 120, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 120, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "3": { "FriendlyName": "Transpose", @@ -2999,27 +4611,39 @@ "MaxValue": 256, "MinDisplayedValue": -128, "MaxDisplayedValue": 128, - "IgnoreActualType": true + "Offset": -128, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { - "FriendlyName": "Finetune", + "FriendlyName": "FineTune", "InternalName": "Finetune", "MinValue": 0, "MaxValue": 512, "MinDisplayedValue": -256, - "MaxDisplayedValue": 256 + "MaxDisplayedValue": 256, + "Offset": -256, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Velocity", "InternalName": "Velocity", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "State", "InternalName": "State", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "7": { @@ -3027,6 +4651,10 @@ "InternalName": "NoteON", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ControlToNoteOnBehaviour" }, "8": { @@ -3034,6 +4662,10 @@ "InternalName": "NoteOFF", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ControlToNoteOffBehaviour" }, "9": { @@ -3041,6 +4673,10 @@ "InternalName": "Record notes", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -3052,13 +4688,21 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Channels" } }, @@ -3070,19 +4714,31 @@ "FriendlyName": "Response", "InternalName": "Response", "MinValue": 0, - "MaxValue": 1000 + "MaxValue": 1000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "SampleRate", "InternalName": "Sample rate", "MinValue": 1, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "ResetOnStNote1", "InternalName": "Reset on 1st note", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "3": { @@ -3090,6 +4746,10 @@ "InternalName": "Polyphony", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "4": { @@ -3098,19 +4758,29 @@ "MinValue": 0, "MaxValue": 1200, "MinDisplayedValue": -600, - "MaxDisplayedValue": 600 + "MaxDisplayedValue": 600, + "Offset": -600, + "ControllerType": "Normal" }, "5": { "FriendlyName": "PitchScale", "InternalName": "Pitch scale", "MinValue": 0, - "MaxValue": 200 + "MaxValue": 200, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 200, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "Reset", "InternalName": "Reset", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "7": { @@ -3120,21 +4790,31 @@ "MaxValue": 20, "MinDisplayedValue": -10, "MaxDisplayedValue": 10, - "IgnoreActualType": true + "Offset": -10, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "8": { "FriendlyName": "FreqMultiply", "InternalName": "Freq multiply", "MinValue": 1, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "9": { "FriendlyName": "FreqDivide", "InternalName": "Freq divide", "MinValue": 1, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} @@ -3146,6 +4826,10 @@ "InternalName": "Out", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "1": { @@ -3153,19 +4837,31 @@ "InternalName": "Out pin", "MinValue": 0, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "2": { "FriendlyName": "OutThreshold", "InternalName": "Out threshold", "MinValue": 0, - "MaxValue": 100 + "MaxValue": 100, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 100, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "In", "InternalName": "In", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "4": { @@ -3173,20 +4869,32 @@ "InternalName": "In pin", "MinValue": 0, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "5": { "FriendlyName": "InNote", "InternalName": "In note", "MinValue": 0, "MaxValue": 128, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 128, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "6": { "FriendlyName": "InAmplitude", "InternalName": "In amplitude", "MinValue": 0, - "MaxValue": 100 + "MaxValue": 100, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 100, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -3197,20 +4905,32 @@ "FriendlyName": "Volume", "InternalName": "Volume", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "InputModule", "InternalName": "Input module", "MinValue": 1, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "2": { "FriendlyName": "PlayPatterns", "InternalName": "Play patterns", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "MetaModulePatternMode" }, "3": { @@ -3218,32 +4938,52 @@ "InternalName": "BPM (Beats Per Minute)", "MinValue": 1, "MaxValue": 1000, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "TicksPerLine", "InternalName": "TPL (Ticks Per Line)", "MinValue": 1, "MaxValue": 31, - "IgnoreActualType": true + "MinDisplayedValue": 1, + "MaxDisplayedValue": 31, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "5": { "FriendlyName": "", "InternalName": "...", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "", "InternalName": "...", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "", "InternalName": "...", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": {} @@ -3254,19 +4994,31 @@ "FriendlyName": "Value", "InternalName": "Value", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Gain", "InternalName": "Gain", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Quantization", "InternalName": "Quantization", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "OutOffset", @@ -3274,19 +5026,29 @@ "MinValue": 0, "MaxValue": 32768, "MinDisplayedValue": -16384, - "MaxDisplayedValue": 16384 + "MaxDisplayedValue": 16384, + "Offset": -16384, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Response", "InternalName": "Response", "MinValue": 0, - "MaxValue": 1000 + "MaxValue": 1000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1000, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "SampleRate", "InternalName": "Sample rate", "MinValue": 1, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": { @@ -3308,51 +5070,79 @@ "MaxValue": 256, "MinDisplayedValue": -128, "MaxDisplayedValue": 128, - "IgnoreActualType": true + "Offset": -128, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "1": { "FriendlyName": "RandomPitch", "InternalName": "Random pitch", "MinValue": 0, - "MaxValue": 4096 + "MaxValue": 4096, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4096, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Velocity", "InternalName": "Velocity", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { - "FriendlyName": "Finetune", + "FriendlyName": "FineTune", "InternalName": "Finetune", "MinValue": 0, "MaxValue": 512, "MinDisplayedValue": -256, - "MaxDisplayedValue": 256 + "MaxDisplayedValue": 256, + "Offset": -256, + "ControllerType": "Normal" }, "4": { "FriendlyName": "RandomPhase", "InternalName": "Random phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "RandomVelocity", "InternalName": "Random velocity", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "Phase", "InternalName": "Phase", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "Curve2Influence", "InternalName": "Curve2 influence", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" } }, "Curves": { @@ -3386,6 +5176,10 @@ "InternalName": "Mode", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchToControlMode" }, "1": { @@ -3393,6 +5187,10 @@ "InternalName": "On NoteOFF", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchToControlOnNoteOff" }, "2": { @@ -3400,33 +5198,53 @@ "InternalName": "First note", "MinValue": 0, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "3": { "FriendlyName": "Range", "InternalName": "Range (number of semitones)", "MinValue": 0, "MaxValue": 256, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true }, "4": { "FriendlyName": "OutMin", "InternalName": "OUT min", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "OutMax", "InternalName": "OUT max", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "OutController", "InternalName": "OUT controller", "MinValue": 0, "MaxValue": 255, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 255, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} @@ -3438,46 +5256,72 @@ "InternalName": "Algorithm", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchDetectorAlgorithm" }, "1": { "FriendlyName": "Threshold", "InternalName": "Threshold", "MinValue": 0, - "MaxValue": 10000 + "MaxValue": 10000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 10000, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "Gain", "InternalName": "Gain", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "Microtones", "InternalName": "Microtones", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "4": { - "FriendlyName": "DetectorFinetune", + "FriendlyName": "DetectorFineTune", "InternalName": "Detector finetune", "MinValue": 0, "MaxValue": 512, "MinDisplayedValue": -256, - "MaxDisplayedValue": 256 + "MaxDisplayedValue": 256, + "Offset": -256, + "ControllerType": "Normal" }, "5": { "FriendlyName": "LpFilterFreqOff0", "InternalName": "LP filter freq (0 - OFF)", "MinValue": 0, - "MaxValue": 4000 + "MaxValue": 4000, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4000, + "Offset": 0, + "ControllerType": "Normal" }, "6": { "FriendlyName": "LpFilterRollOff", "InternalName": "LP filter roll-off", "MinValue": 0, "MaxValue": 3, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 3, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "FilterRollOff" }, "7": { @@ -3485,6 +5329,10 @@ "InternalName": "Alg1-2 Sample rate (Hz)", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchDetectorAlgSampleRate" }, "8": { @@ -3492,25 +5340,41 @@ "InternalName": "Alg1-2 Buffer (ms)", "MinValue": 0, "MaxValue": 4, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 4, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "PitchDetectorBufferSize" }, "9": { "FriendlyName": "AlgBufOverlap12", "InternalName": "Alg1-2 Buf overlap", "MinValue": 0, - "MaxValue": 100 + "MaxValue": 100, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 100, + "Offset": 0, + "ControllerType": "Normal" }, "10": { "FriendlyName": "AlgSensitivityAbsoluteThreshold1", "InternalName": "Alg1 Sensitivity (absolute threshold)", "MinValue": 0, - "MaxValue": 100 + "MaxValue": 100, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 100, + "Offset": 0, + "ControllerType": "Normal" }, "11": { "FriendlyName": "RecordNotes", "InternalName": "Record notes", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" } }, @@ -3522,13 +5386,21 @@ "FriendlyName": "SampleRate", "InternalName": "Sample rate", "MinValue": 1, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 1, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "1": { "FriendlyName": "Channels", "InternalName": "Channels", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "ChannelsInverted" }, "2": { @@ -3536,45 +5408,73 @@ "InternalName": "Absolute", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "Toggle" }, "3": { "FriendlyName": "Gain", "InternalName": "Gain", "MinValue": 0, - "MaxValue": 1024 + "MaxValue": 1024, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1024, + "Offset": 0, + "ControllerType": "Normal" }, "4": { "FriendlyName": "Smooth", "InternalName": "Smooth", "MinValue": 0, - "MaxValue": 256 + "MaxValue": 256, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 256, + "Offset": 0, + "ControllerType": "Normal" }, "5": { "FriendlyName": "Mode", "InternalName": "Mode", "MinValue": 0, "MaxValue": 1, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 1, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "SoundToControlMode" }, "6": { "FriendlyName": "OutMin", "InternalName": "OUT min", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "7": { "FriendlyName": "OutMax", "InternalName": "OUT max", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "8": { "FriendlyName": "OutController", "InternalName": "OUT controller", "MinValue": 0, "MaxValue": 255, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 255, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} @@ -3586,19 +5486,31 @@ "InternalName": "On NoteOFF", "MinValue": 0, "MaxValue": 2, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 2, + "Offset": 0, + "ControllerType": "Selector", "EnumName": "VelocityToControlOnNoteOff" }, "1": { "FriendlyName": "OutMin", "InternalName": "OUT min", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "2": { "FriendlyName": "OutMax", "InternalName": "OUT max", "MinValue": 0, - "MaxValue": 32768 + "MaxValue": 32768, + "MinDisplayedValue": 0, + "MaxDisplayedValue": 32768, + "Offset": 0, + "ControllerType": "Normal" }, "3": { "FriendlyName": "OutOffset", @@ -3606,14 +5518,20 @@ "MinValue": 0, "MaxValue": 32768, "MinDisplayedValue": -16384, - "MaxDisplayedValue": 16384 + "MaxDisplayedValue": 16384, + "Offset": -16384, + "ControllerType": "Normal" }, "4": { "FriendlyName": "OutController", "InternalName": "OUT controller", "MinValue": 0, "MaxValue": 255, - "IgnoreActualType": true + "MinDisplayedValue": 0, + "MaxDisplayedValue": 255, + "Offset": 0, + "ControllerType": "Selector", + "SelectorIsNotEnum": true } }, "Curves": {} diff --git a/CodeGeneration/Logic/ModuleData.g.schema.json b/CodeGeneration/Logic/ModuleData.g.schema.json index 4c34a25..109a425 100644 --- a/CodeGeneration/Logic/ModuleData.g.schema.json +++ b/CodeGeneration/Logic/ModuleData.g.schema.json @@ -39,18 +39,21 @@ "type": "integer" }, "MinDisplayedValue": { - "type": [ - "integer", - "null" - ] + "type": "integer" }, "MaxDisplayedValue": { - "type": [ - "integer", - "null" + "type": "integer" + }, + "Offset": { + "type": "integer" + }, + "ControllerType": { + "enum": [ + "Normal", + "Selector" ] }, - "IgnoreActualType": { + "SelectorIsNotEnum": { "type": [ "boolean", "null" @@ -67,7 +70,11 @@ "FriendlyName", "InternalName", "MinValue", - "MaxValue" + "MaxValue", + "MinDisplayedValue", + "MaxDisplayedValue", + "Offset", + "ControllerType" ] } }, diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 1478152..29a1bee 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -59,8 +59,17 @@ public enum ValueScalingMode public enum ControllerType { - Real = 0, - Enum = 1 + /// + /// Volume, frequency, resonance and other parameters with a continuous scale. + /// In pattern events the value takes the whole range that is then mapped to the real parameter range. + /// + Normal = 0, + + /// + /// Number of harmonics, waveform type, etc. + /// In pattern events the value is an index of a discrete set of values. + /// + Selector = 1 } [Flags] diff --git a/SunSharp/Modules/MetaModuleModuleHandle.cs b/SunSharp/Modules/MetaModuleModuleHandle.cs index e94b7ed..50fb3e2 100644 --- a/SunSharp/Modules/MetaModuleModuleHandle.cs +++ b/SunSharp/Modules/MetaModuleModuleHandle.cs @@ -1,5 +1,7 @@ #if !GENERATION +using System; + namespace SunSharp.Modules { public partial interface IMetaModuleModuleHandle @@ -9,6 +11,96 @@ public partial interface IMetaModuleModuleHandle /// void LoadFile(byte[] data); + + /// + /// + /// Set the value of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + void SetUserControllerValue(int index, int value, ValueScalingMode scalingMode); + + /// + /// + /// Get the value of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + void GetUserControllerValue(int index, ValueScalingMode scalingMode); + + /// + /// + /// Get the minimum value of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + void GetUserControllerMinValue(int index, ValueScalingMode scalingMode); + + /// + /// + /// Get the maximum value of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + void GetUserControllerMaxValue(int index, ValueScalingMode scalingMode); + + /// + /// + /// Get the offset value of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + void GetUserControllerOffset(int index); + + /// + /// + /// Get the name of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + string? GetUserControllerName(int index); + + /// + /// + /// Get the type of a user-defined controller. User-defined controllers start at index 5. + /// + /// + /// + /// + ControllerType GetUserControllerType(int index); + + /// + /// + /// Get the count of a user-defined controllers. User-defined controllers start at index 5. + /// + /// + /// + /// + int GetUserControllerCount(); + + /// + /// Make a pattern event that sets a user-defined controller value. User-defined controllers start at index 5. + /// This overload allows for any enum value to be used. + /// + PatternEvent MakeUserControllerEvent(int index, T value) where T : Enum, IConvertible; + + /// + /// Make a pattern event that sets a user-defined controller value. User-defined controllers start at index 5. + /// This overload allows for raw column values to be used. Values are clamped to the 0x0 to 0x8000 range. + /// + PatternEvent MakeUserControllerEvent(int index, ushort value); + + /// + /// Make a pattern event that sets a user-defined controller value. User-defined controllers start at index 5. + /// This overload allows for using display-values, as long as offset, min and max values of the controller are known.. + /// + PatternEvent MakeUserControllerEvent(int index, int value, int offset, int minValue, int maxValue); } public partial struct MetaModuleModuleHandle : IMetaModuleModuleHandle @@ -18,6 +110,62 @@ public partial struct MetaModuleModuleHandle : IMetaModuleModuleHandle /// public void LoadFile(byte[] data) => ModuleHandle.LoadIntoMetaModule(data); + + /// + public void SetUserControllerValue(int index, int value, ValueScalingMode scalingMode) => ModuleHandle.SetControllerValue(5 + index, value, scalingMode); + + /// + public void GetUserControllerValue(int index, ValueScalingMode scalingMode) => ModuleHandle.GetControllerValue(5 + index, scalingMode); + + /// + public void GetUserControllerMinValue(int index, ValueScalingMode scalingMode) => ModuleHandle.GetControllerMinValue(5 + index, scalingMode); + + /// + public void GetUserControllerMaxValue(int index, ValueScalingMode scalingMode) => ModuleHandle.GetControllerMaxValue(5 + index, scalingMode); + + /// + public void GetUserControllerOffset(int index) => ModuleHandle.GetControllerOffset(5 + index); + + /// + public int GetUserControllerCount() => ModuleHandle.GetControllerCount() - 5; + + /// + public string? GetUserControllerName(int index) => ModuleHandle.GetControllerName(5 + index); + + /// + public ControllerType GetUserControllerType(int index) => ModuleHandle.GetControllerType(5 + index); + + /// + public PatternEvent MakeUserControllerEvent(int index, T value) + where T : Enum, IConvertible + { + return PatternEvent.ControllerEvent( + moduleId: ModuleHandle.Id, + controller: (byte)(5 + index), + value: value.ToUInt16(null) + ); + } + + /// + public PatternEvent MakeUserControllerEvent(int index, ushort value) + { + return PatternEvent.ControllerEvent( + moduleId: ModuleHandle.Id, + controller: (byte)(5 + index), + value: value + ); + } + + /// + public PatternEvent MakeUserControllerEvent(int index, int value, int offset, int minValue, int maxValue) + { + value = (value - offset) * 0x8000 / (maxValue - minValue); + return PatternEvent.ControllerEvent( + moduleId: ModuleHandle.Id, + controller: (byte)(5 + index), + value: (ushort)Math.Clamp(value, 0, 0x8000) + ); + } } } diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.cs b/SunSharp/Modules/VorbisPlayerModuleHandle.cs index 6a6d814..87a5e00 100644 --- a/SunSharp/Modules/VorbisPlayerModuleHandle.cs +++ b/SunSharp/Modules/VorbisPlayerModuleHandle.cs @@ -5,22 +5,22 @@ namespace SunSharp.Modules public partial interface IVorbisPlayerModuleHandle { /// - void LoadVorbis(string path); + void LoadAudio(string path); /// - void LoadIntoVorbisPlayer(byte[] data); + void LoadAudio(byte[] data); } public partial struct VorbisPlayerModuleHandle : IVorbisPlayerModuleHandle { /// - public void LoadVorbis(string path) + public void LoadAudio(string path) { ModuleHandle.LoadIntoVorbisPlayer(path); } /// - public void LoadIntoVorbisPlayer(byte[] data) + public void LoadAudio(byte[] data) { ModuleHandle.LoadIntoVorbisPlayer(data); } diff --git a/SunSharp/Modules/g/AdsrModuleHandle.g.cs b/SunSharp/Modules/g/AdsrModuleHandle.g.cs index 302ba3d..a934969 100644 --- a/SunSharp/Modules/g/AdsrModuleHandle.g.cs +++ b/SunSharp/Modules/g/AdsrModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { ///
    @@ -14,65 +17,100 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 1 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 1 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 2 'Decay' /// int GetDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 2 'Decay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDecayEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 3 'Sustain level' /// int GetSustainLevel(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 3 'Sustain level' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustainLevel(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSustainLevelEvent(int value); + + /// + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 4 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 4 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + /// /// Original name: 5 'Attack curve' /// @@ -80,9 +118,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Attack curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttackCurve(AdsrCurveType value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAttackCurveEvent(AdsrCurveType value); + /// /// Original name: 6 'Decay curve' /// @@ -90,9 +135,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Decay curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDecayCurve(AdsrCurveType value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDecayCurveEvent(AdsrCurveType value); + /// /// Original name: 7 'Release curve' /// @@ -100,9 +152,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Release curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetReleaseCurve(AdsrCurveType value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeReleaseCurveEvent(AdsrCurveType value); + /// /// Original name: 8 'Sustain' /// @@ -110,9 +169,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 8 'Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustain(AdsrSustainMode value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSustainEvent(AdsrSustainMode value); + /// /// Original name: 9 'Sustain pedal' /// @@ -120,9 +186,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 9 'Sustain pedal' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustainPedal(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSustainPedalEvent(Toggle value); + /// /// Original name: 10 'State' /// @@ -130,9 +203,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 10 'State' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetState(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeStateEvent(Toggle value); + /// /// Original name: 11 'On NoteON' /// @@ -140,9 +220,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 11 'On NoteON' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOnNoteon(AdsrOnNoteOnBehaviour value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOnNoteonEvent(AdsrOnNoteOnBehaviour value); + /// /// Original name: 12 'On NoteOFF' /// @@ -150,9 +237,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 12 'On NoteOFF' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOnNoteoff(AdsrOnNoteOffBehaviour value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOnNoteoffEvent(AdsrOnNoteOffBehaviour value); + /// /// Original name: 13 'Mode' /// @@ -160,9 +254,16 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 13 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(AdsrMode value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(AdsrMode value); + /// /// Original name: 14 'Smooth transitions' /// @@ -170,8 +271,15 @@ public partial interface IAdsrModuleHandle : ITypedModuleHandle /// /// Original name: 14 'Smooth transitions' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSmoothTransitions(AdsrSmoothTransitions value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSmoothTransitionsEvent(AdsrSmoothTransitions value); } /// @@ -325,89 +433,184 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeDecayEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSustainLevel(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetSustainLevel(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeSustainLevelEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public AdsrCurveType GetAttackCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetAttackCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAttackCurveEvent(AdsrCurveType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrCurveType GetDecayCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetDecayCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeDecayCurveEvent(AdsrCurveType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrCurveType GetReleaseCurve() => (AdsrCurveType)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetReleaseCurve(AdsrCurveType value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeReleaseCurveEvent(AdsrCurveType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrSustainMode GetSustain() => (AdsrSustainMode)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetSustain(AdsrSustainMode value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSustainEvent(AdsrSustainMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetSustainPedal() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetSustainPedal(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSustainPedalEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); /// public void SetState(Toggle value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeStateEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrOnNoteOnBehaviour GetOnNoteon() => (AdsrOnNoteOnBehaviour)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetOnNoteon(AdsrOnNoteOnBehaviour value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeOnNoteonEvent(AdsrOnNoteOnBehaviour value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrOnNoteOffBehaviour GetOnNoteoff() => (AdsrOnNoteOffBehaviour)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetOnNoteoff(AdsrOnNoteOffBehaviour value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeOnNoteoffEvent(AdsrOnNoteOffBehaviour value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrMode GetMode() => (AdsrMode)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); /// public void SetMode(AdsrMode value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(AdsrMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrSmoothTransitions GetSmoothTransitions() => (AdsrSmoothTransitions)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); /// public void SetSmoothTransitions(AdsrSmoothTransitions value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeSmoothTransitionsEvent(AdsrSmoothTransitions value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs b/SunSharp/Modules/g/AmplifierModuleHandle.g.cs index 2699196..9404e45 100644 --- a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs +++ b/SunSharp/Modules/g/AmplifierModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,41 +17,62 @@ public partial interface IAmplifierModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Balance' /// int GetBalance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Balance' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBalance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBalanceEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'DC Offset' /// int GetDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'DC Offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDcOffsetEvent(int value); + /// /// Original name: 3 'Inverse' /// @@ -56,21 +80,35 @@ public partial interface IAmplifierModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Inverse' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInverse(Toggle value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInverseEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Stereo width' /// int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Stereo width' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeStereoWidthEvent(int value); + /// /// Original name: 5 'Absolute' /// @@ -78,44 +116,72 @@ public partial interface IAmplifierModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Absolute' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAbsolute(Toggle value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAbsoluteEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Fine volume' /// int GetFineVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Fine volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFineVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-5000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFineVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 5000, real: 0 to 5000 /// Original name: 7 'Gain' /// int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-5000 + /// Value range: displayed: 0 to 5000, real: 0 to 5000 /// Original name: 7 'Gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 5000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGainEvent(int value); + + /// + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 8 'Bipolar DC Offset' /// int GetBipolarDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 8 'Bipolar DC Offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBipolarDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-16384 to 16384) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBipolarDcOffsetEvent(int value); } /// @@ -269,53 +335,117 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBalance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetBalance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeBalanceEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeDcOffsetEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeInverseEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeStereoWidthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAbsoluteEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFineVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetFineVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeFineVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeGainEvent(int value) + { + value = value * 0x8000 / (5000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBipolarDcOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetBipolarDcOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public PatternEvent MakeBipolarDcOffsetEvent(int value) + { + value -= -16384; + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs b/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs index c3ba7a0..07ddc5d 100644 --- a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs +++ b/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Waveform' /// @@ -32,45 +42,73 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWaveform(AnalogGeneratorWaveform value); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeWaveformEvent(AnalogGeneratorWaveform value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + /// /// Original name: 5 'Sustain' /// @@ -78,9 +116,16 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustain(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSustainEvent(Toggle value); + /// /// Original name: 6 'Exponential envelope' /// @@ -88,26 +133,40 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Exponential envelope' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetExponentialEnvelope(Toggle value); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeExponentialEnvelopeEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 7 'Duty cycle' /// int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 7 'Duty cycle' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDutyCycleEvent(int value); + /// /// Pitch deviation of the additional oscillator (off in the zero position). /// One semitone = 64. ///
    - /// Value range: displayed: -1000-1000, real: 0-2000 + /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 8 'Osc2' ///
    int GetSecondaryOscillatorPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); @@ -116,11 +175,21 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// Pitch deviation of the additional oscillator (off in the zero position). /// One semitone = 64. ///
    - /// Value range: displayed: -1000-1000, real: 0-2000 + /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 8 'Osc2' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    void SetSecondaryOscillatorPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// Pitch deviation of the additional oscillator (off in the zero position). + /// One semitone = 64. + ///
    + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-1000 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + ///
    + PatternEvent MakeSecondaryOscillatorPitchEvent(int value); + /// /// Original name: 9 'Filter' /// @@ -128,33 +197,54 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 9 'Filter' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilter(AnalogGeneratorFilterType value); /// - /// Value range: 0-14000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterEvent(AnalogGeneratorFilterType value); + + /// + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 10 'F.freq' /// int GetFilterFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-14000 + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 10 'F.freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1530 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 14000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFilterFrequencyEvent(int value); + + /// + /// Value range: displayed: 0 to 1530, real: 0 to 1530 /// Original name: 11 'F.resonance' /// int GetFilterResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1530 + /// Value range: displayed: 0 to 1530, real: 0 to 1530 /// Original name: 11 'F.resonance' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1530) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFilterResonanceEvent(int value); + /// /// Original name: 12 'F.exponential freq' /// @@ -162,33 +252,54 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 12 'F.exponential freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterExponentialFrequency(Toggle value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterExponentialFrequencyEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 13 'F.attack' /// int GetFilterAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 13 'F.attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFilterAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 14 'F.release' /// int GetFilterRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 14 'F.release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFilterReleaseEvent(int value); + /// /// Original name: 15 'F.envelope' /// @@ -196,21 +307,33 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 15 'F.envelope' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterEnvelope(AnalogGeneratorEnvelopeMode value); /// - /// Value range: 1-32 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterEnvelopeEvent(AnalogGeneratorEnvelopeMode value); + + /// /// Original name: 16 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32 /// Original name: 16 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Quality mode of the module. ///
    @@ -222,13 +345,22 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// Quality mode of the module. ///
    /// Original name: 17 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    void SetMode(Quality value); + /// + /// Quality mode of the module. + ///
    + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + ///
    + PatternEvent MakeModeEvent(Quality value); + /// /// Amount of white noise added to the signal. ///
    - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 18 'Noise' ///
    int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); @@ -236,23 +368,39 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Amount of white noise added to the signal. ///
    - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 18 'Noise' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Amount of white noise added to the signal. + ///
    + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + ///
    + PatternEvent MakeNoiseEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 19 'Osc2 volume' /// int GetSecondaryOscillatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 19 'Osc2 volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSecondaryOscillatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSecondaryOscillatorVolumeEvent(int value); + /// /// Original name: 20 'Osc2 mode' /// @@ -260,21 +408,35 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 20 'Osc2 mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSecondaryOscillatorMode(AnalogGeneratorSecondaryOscillatorMode value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSecondaryOscillatorModeEvent(AnalogGeneratorSecondaryOscillatorMode value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 21 'Osc2 phase' /// int GetSecondaryOscillatorPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 21 'Osc2 phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSecondaryOscillatorPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSecondaryOscillatorPhaseEvent(int value); + ///
    /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. ///
    @@ -443,132 +605,279 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public AnalogGeneratorWaveform GetWaveform() => (AnalogGeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetWaveform(AnalogGeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeWaveformEvent(AnalogGeneratorWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSustainEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetExponentialEnvelope() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetExponentialEnvelope(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeExponentialEnvelopeEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeDutyCycleEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSecondaryOscillatorPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetSecondaryOscillatorPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeSecondaryOscillatorPitchEvent(int value) + { + value -= -1000; + value = value * 0x8000 / (2000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public AnalogGeneratorFilterType GetFilter() => (AnalogGeneratorFilterType)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetFilter(AnalogGeneratorFilterType value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterEvent(AnalogGeneratorFilterType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFilterFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetFilterFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeFilterFrequencyEvent(int value) + { + value = value * 0x8000 / (14000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFilterResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetFilterResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeFilterResonanceEvent(int value) + { + value = value * 0x8000 / (1530); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetFilterExponentialFrequency() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetFilterExponentialFrequency(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterExponentialFrequencyEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFilterAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetFilterAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + /// + public PatternEvent MakeFilterAttackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFilterRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); /// public void SetFilterRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + /// + public PatternEvent MakeFilterReleaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public AnalogGeneratorEnvelopeMode GetFilterEnvelope() => (AnalogGeneratorEnvelopeMode)ModuleHandle.GetControllerValue(15, ValueScalingMode.Displayed); /// public void SetFilterEnvelope(AnalogGeneratorEnvelopeMode value) => ModuleHandle.SetControllerValue(15, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterEnvelopeEvent(AnalogGeneratorEnvelopeMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 15, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(16, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(16, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 16, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(17, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(17, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 17, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(18, valueScalingMode); /// public void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(18, value, valueScalingMode); + /// + public PatternEvent MakeNoiseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 18, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSecondaryOscillatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(19, valueScalingMode); /// public void SetSecondaryOscillatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(19, value, valueScalingMode); + /// + public PatternEvent MakeSecondaryOscillatorVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 19, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public AnalogGeneratorSecondaryOscillatorMode GetSecondaryOscillatorMode() => (AnalogGeneratorSecondaryOscillatorMode)ModuleHandle.GetControllerValue(20, ValueScalingMode.Displayed); /// public void SetSecondaryOscillatorMode(AnalogGeneratorSecondaryOscillatorMode value) => ModuleHandle.SetControllerValue(20, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSecondaryOscillatorModeEvent(AnalogGeneratorSecondaryOscillatorMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 20, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSecondaryOscillatorPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(21, valueScalingMode); /// public void SetSecondaryOscillatorPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(21, value, valueScalingMode); + /// + public PatternEvent MakeSecondaryOscillatorPhaseEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 21, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/Modules/g/CompressorModuleHandle.g.cs b/SunSharp/Modules/g/CompressorModuleHandle.g.cs index c5cc8f7..d0a858b 100644 --- a/SunSharp/Modules/g/CompressorModuleHandle.g.cs +++ b/SunSharp/Modules/g/CompressorModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { ///
    @@ -14,65 +17,100 @@ public partial interface ICompressorModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Threshold' /// int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Threshold' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeThresholdEvent(int value); + + /// + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 2 'Slope' /// int GetSlope(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 2 'Slope' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSlope(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-500 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 200) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSlopeEvent(int value); + + /// + /// Value range: displayed: 0 to 500, real: 0 to 500 /// Original name: 3 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-500 + /// Value range: displayed: 0 to 500, real: 0 to 500 /// Original name: 3 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-1000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 500) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 1 to 1000, real: 1 to 1000 /// Original name: 4 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-1000 + /// Value range: displayed: 1 to 1000, real: 1 to 1000 /// Original name: 4 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + /// /// Original name: 5 'Mode' /// @@ -80,20 +118,32 @@ public partial interface ICompressorModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(CompressorMode value); /// - /// Value range: 0-32 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(CompressorMode value); + + /// /// Original name: 6 'Side-chain input' /// int GetSideChainInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32 /// Original name: 6 'Side-chain input' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSideChainInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSideChainInputEvent(int value); } /// @@ -247,41 +297,89 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeThresholdEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSlope(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetSlope(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeSlopeEvent(int value) + { + value = value * 0x8000 / (200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (500); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value -= 1; + value = value * 0x8000 / (999); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public CompressorMode GetMode() => (CompressorMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetMode(CompressorMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(CompressorMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSideChainInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetSideChainInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public PatternEvent MakeSideChainInputEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs b/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs index e9bd6c9..9aa2983 100644 --- a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs +++ b/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,77 +17,113 @@ public partial interface IControlToNoteModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Pitch' /// int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-120 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePitchEvent(int value); + + /// /// Original name: 1 'First note' /// int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-120 /// Original name: 1 'First note' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-120 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFirstNoteEvent(int value); + + /// /// Original name: 2 'Range (number of semitones)' /// int GetRangeNumberOfSemitones(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-120 /// Original name: 2 'Range (number of semitones)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRangeNumberOfSemitones(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRangeNumberOfSemitonesEvent(int value); + + /// /// Original name: 3 'Transpose' /// int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 3 'Transpose' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeTransposeEvent(int value); + + /// + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 4 'Finetune' /// - int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 4 'Finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// - void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-256 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFineTuneEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Velocity' /// int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Velocity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVelocityEvent(int value); + /// /// Original name: 6 'State' /// @@ -92,9 +131,16 @@ public partial interface IControlToNoteModuleHandle : ITypedModuleHandle /// /// Original name: 6 'State' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetState(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeStateEvent(Toggle value); + /// /// Original name: 7 'NoteON' /// @@ -102,9 +148,16 @@ public partial interface IControlToNoteModuleHandle : ITypedModuleHandle /// /// Original name: 7 'NoteON' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoteon(ControlToNoteOnBehaviour value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeNoteonEvent(ControlToNoteOnBehaviour value); + /// /// Original name: 8 'NoteOFF' /// @@ -112,9 +165,16 @@ public partial interface IControlToNoteModuleHandle : ITypedModuleHandle /// /// Original name: 8 'NoteOFF' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoteoff(ControlToNoteOffBehaviour value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeNoteoffEvent(ControlToNoteOffBehaviour value); + /// /// Original name: 9 'Record notes' /// @@ -122,8 +182,15 @@ public partial interface IControlToNoteModuleHandle : ITypedModuleHandle /// /// Original name: 9 'Record notes' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRecordNotes(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRecordNotesEvent(Toggle value); } /// @@ -277,29 +344,62 @@ public void AssertCorrectHandleType() /// public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakePitchEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeFirstNoteEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRangeNumberOfSemitones(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetRangeNumberOfSemitones(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeRangeNumberOfSemitonesEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); - /// - public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + /// + public PatternEvent MakeTransposeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + + /// + public void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); - /// - public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeFineTuneEvent(int value) + { + value -= -256; + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } /// public int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); @@ -307,29 +407,60 @@ public void AssertCorrectHandleType() /// public void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeVelocityEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetState() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetState(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeStateEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ControlToNoteOnBehaviour GetNoteon() => (ControlToNoteOnBehaviour)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetNoteon(ControlToNoteOnBehaviour value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeNoteonEvent(ControlToNoteOnBehaviour value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ControlToNoteOffBehaviour GetNoteoff() => (ControlToNoteOffBehaviour)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetNoteoff(ControlToNoteOffBehaviour value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeNoteoffEvent(ControlToNoteOffBehaviour value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeRecordNotesEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs b/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs index 0e99582..04f6584 100644 --- a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs +++ b/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,8 +23,15 @@ public partial interface IDcBlockerModuleHandle : ITypedModuleHandle /// /// Original name: 0 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); } /// @@ -174,6 +184,12 @@ public void AssertCorrectHandleType() /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/DelayModuleHandle.g.cs b/SunSharp/Modules/g/DelayModuleHandle.g.cs index 49fee57..fcc853b 100644 --- a/SunSharp/Modules/g/DelayModuleHandle.g.cs +++ b/SunSharp/Modules/g/DelayModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,77 +17,119 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Dry' /// int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Dry' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDryEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Wet' /// int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Wet' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeWetEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Delay L' /// int GetDelayL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Delay L' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelayL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDelayLEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Delay R' /// int GetDelayR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Delay R' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelayR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDelayREvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Volume L' /// int GetVolumeL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Volume L' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolumeL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeLEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Volume R' /// int GetVolumeR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Volume R' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolumeR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeREvent(int value); + /// /// Original name: 6 'Channels' /// @@ -92,9 +137,16 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); + /// /// Original name: 7 'Inverse' /// @@ -102,9 +154,16 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Inverse' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInverse(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInverseEvent(Toggle value); + /// /// Original name: 8 'Delay unit' /// @@ -112,33 +171,52 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// /// Original name: 8 'Delay unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelayUnit(DelayUnit value); /// - /// Value range: 1-15 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDelayUnitEvent(DelayUnit value); + + /// /// Original name: 9 'Delay multiplier' /// int GetDelayMultiplier(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-15 /// Original name: 9 'Delay multiplier' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelayMultiplier(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDelayMultiplierEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + /// /// Original name: 11 'Negative feedback' /// @@ -146,9 +224,16 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// /// Original name: 11 'Negative feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNegativeFeedback(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeNegativeFeedbackEvent(Toggle value); + /// /// Original name: 12 'All-pass filter' /// @@ -156,8 +241,15 @@ public partial interface IDelayModuleHandle : ITypedModuleHandle /// /// Original name: 12 'All-pass filter' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAllPassFilter(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAllPassFilterEvent(Toggle value); } /// @@ -311,77 +403,162 @@ public void AssertCorrectHandleType() /// public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeDryEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeWetEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDelayL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetDelayL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeDelayLEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDelayR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetDelayR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeDelayREvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetVolumeL(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetVolumeL(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeVolumeLEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetVolumeR(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetVolumeR(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeVolumeREvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetInverse() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetInverse(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeInverseEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public DelayUnit GetDelayUnit() => (DelayUnit)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetDelayUnit(DelayUnit value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeDelayUnitEvent(DelayUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetDelayMultiplier(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetDelayMultiplier(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeDelayMultiplierEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetNegativeFeedback() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetNegativeFeedback(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeNegativeFeedbackEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetAllPassFilter() => (Toggle)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetAllPassFilter(Toggle value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeAllPassFilterEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/DistortionModuleHandle.g.cs b/SunSharp/Modules/g/DistortionModuleHandle.g.cs index f78f6fd..e00b85c 100644 --- a/SunSharp/Modules/g/DistortionModuleHandle.g.cs +++ b/SunSharp/Modules/g/DistortionModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IDistortionModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Type' /// @@ -32,56 +42,89 @@ public partial interface IDistortionModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDistortionType(DistortionType value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDistortionTypeEvent(DistortionType value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Power' /// int GetPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Power' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePowerEvent(int value); + + /// /// Original name: 3 'Bit depth' /// int GetBitDepth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 /// Original name: 3 'Bit depth' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBitDepth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-44100 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeBitDepthEvent(int value); + + /// + /// Value range: displayed: 0 to 44100, real: 0 to 44100 /// Original name: 4 'Freq' /// int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-44100 + /// Value range: displayed: 0 to 44100, real: 0 to 44100 /// Original name: 4 'Freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 44100) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Noise' /// int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Noise' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeNoiseEvent(int value); } /// @@ -235,35 +278,75 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public DistortionType GetDistortionType() => (DistortionType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetDistortionType(DistortionType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeDistortionTypeEvent(DistortionType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePowerEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBitDepth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetBitDepth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeBitDepthEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeFreqEvent(int value) + { + value = value * 0x8000 / (44100); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetNoise(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetNoise(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + + /// + public PatternEvent MakeNoiseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs b/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs index 6234835..25ec275 100644 --- a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs +++ b/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,184 +17,287 @@ public partial interface IDrumSynthModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-8 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// /// Original name: 2 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-8 /// Original name: 2 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Bass volume' /// int GetBassVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Bass volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBassVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBassVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Bass power' /// int GetBassPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Bass power' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBassPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBassPowerEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Bass tone' /// int GetBassTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Bass tone' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBassTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBassToneEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 6 'Bass length' /// int GetBassLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 6 'Bass length' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBassLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBassLengthEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 7 'Hihat volume' /// int GetHihatVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 7 'Hihat volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHihatVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeHihatVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Hihat length' /// int GetHihatLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Hihat length' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHihatLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeHihatLengthEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 9 'Snare volume' /// int GetSnareVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 9 'Snare volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSnareVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSnareVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 10 'Snare tone' /// int GetSnareTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 10 'Snare tone' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSnareTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSnareToneEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 11 'Snare length' /// int GetSnareLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 11 'Snare length' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSnareLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSnareLengthEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 12 'Bass panning' /// int GetBassPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 12 'Bass panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBassPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBassPanningEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 13 'Hihat panning' /// int GetHihatPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 13 'Hihat panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHihatPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeHihatPanningEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 14 'Snare panning' /// int GetSnarePanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 14 'Snare panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSnarePanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSnarePanningEvent(int value); } /// @@ -345,89 +451,197 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBassVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetBassVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeBassVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBassPower(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetBassPower(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeBassPowerEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBassTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetBassTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeBassToneEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBassLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetBassLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeBassLengthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHihatVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetHihatVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeHihatVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHihatLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetHihatLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeHihatLengthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSnareVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetSnareVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeSnareVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSnareTone(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetSnareTone(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeSnareToneEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSnareLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetSnareLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeSnareLengthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBassPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); /// public void SetBassPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + /// + public PatternEvent MakeBassPanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHihatPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetHihatPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + /// + public PatternEvent MakeHihatPanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSnarePanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); /// public void SetSnarePanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + + /// + public PatternEvent MakeSnarePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/EchoModuleHandle.g.cs b/SunSharp/Modules/g/EchoModuleHandle.g.cs index 7161eb1..9208a2d 100644 --- a/SunSharp/Modules/g/EchoModuleHandle.g.cs +++ b/SunSharp/Modules/g/EchoModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,53 +17,81 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' /// int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDryEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' /// int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeWetEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Delay' /// int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Delay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDelayEvent(int value); + /// /// Original name: 4 'Right channel offset' /// @@ -68,9 +99,16 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Right channel offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRightChannelOffset(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRightChannelOffsetEvent(Toggle value); + /// /// Original name: 5 'Delay unit' /// @@ -78,13 +116,20 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Delay unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelayUnit(EchoDelayUnit value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDelayUnitEvent(EchoDelayUnit value); + /// /// Expressed as Delay/32768. ///
    - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Right channel offset' ///
    int GetRightChannelOffsetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); @@ -92,11 +137,20 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Expressed as Delay/32768. ///
    - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Right channel offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    void SetRightChannelOffsetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// Expressed as Delay/32768. + ///
    + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + ///
    + PatternEvent MakeRightChannelOffsetDelayEvent(int value); + /// /// Original name: 7 'Filter' /// @@ -104,20 +158,34 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Filter' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilter(EchoFilter value); /// - /// Value range: 0-22000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterEvent(EchoFilter value); + + /// + /// Value range: displayed: 0 to 22000, real: 0 to 22000 /// Original name: 8 'F.freq' /// int GetFFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-22000 + /// Value range: displayed: 0 to 22000, real: 0 to 22000 /// Original name: 8 'F.freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 22000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFFreqEvent(int value); } /// @@ -271,53 +339,113 @@ public void AssertCorrectHandleType() /// public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeDryEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeWetEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeDelayEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetRightChannelOffset() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetRightChannelOffset(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeRightChannelOffsetEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public EchoDelayUnit GetDelayUnit() => (EchoDelayUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetDelayUnit(EchoDelayUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeDelayUnitEvent(EchoDelayUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetRightChannelOffsetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetRightChannelOffsetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeRightChannelOffsetDelayEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public EchoFilter GetFilter() => (EchoFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetFilter(EchoFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterEvent(EchoFilter value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetFFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public PatternEvent MakeFFreqEvent(int value) + { + value = value * 0x8000 / (22000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/EqModuleHandle.g.cs b/SunSharp/Modules/g/EqModuleHandle.g.cs index e33768c..e84e4d8 100644 --- a/SunSharp/Modules/g/EqModuleHandle.g.cs +++ b/SunSharp/Modules/g/EqModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,41 +17,62 @@ public partial interface IEqModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Low' /// int GetLow(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Low' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLow(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLowEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Middle' /// int GetMiddle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 1 'Middle' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMiddle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeMiddleEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'High' /// int GetHigh(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'High' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHigh(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeHighEvent(int value); + /// /// Original name: 3 'Channels' /// @@ -56,8 +80,15 @@ public partial interface IEqModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); } /// @@ -211,23 +242,50 @@ public void AssertCorrectHandleType() /// public void SetLow(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeLowEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetMiddle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetMiddle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeMiddleEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHigh(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetHigh(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeHighEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs b/SunSharp/Modules/g/FeedbackModuleHandle.g.cs index 3c29e24..cb3cc0b 100644 --- a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs +++ b/SunSharp/Modules/g/FeedbackModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IFeedbackModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Channels' /// @@ -32,8 +42,15 @@ public partial interface IFeedbackModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); } /// @@ -187,11 +204,24 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FftModuleHandle.g.cs b/SunSharp/Modules/g/FftModuleHandle.g.cs index 320d5aa..56f7a26 100644 --- a/SunSharp/Modules/g/FftModuleHandle.g.cs +++ b/SunSharp/Modules/g/FftModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,9 +23,16 @@ public partial interface IFftModuleHandle : ITypedModuleHandle /// /// Original name: 0 'Sample rate' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleRate(FftSampleRate value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSampleRateEvent(FftSampleRate value); + /// /// Original name: 1 'Channels' /// @@ -30,9 +40,16 @@ public partial interface IFftModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(ChannelsInverted value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(ChannelsInverted value); + /// /// Original name: 2 'Buffer (samples)' /// @@ -40,9 +57,16 @@ public partial interface IFftModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Buffer (samples)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBufferSamples(FftBufferSize value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeBufferSamplesEvent(FftBufferSize value); + /// /// Original name: 3 'Buf overlap' /// @@ -50,164 +74,260 @@ public partial interface IFftModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Buf overlap' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBufOverlap(FftBufferOverlap value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeBufOverlapEvent(FftBufferOverlap value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'Noise reduction' /// int GetNoiseReduction(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'Noise reduction' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoiseReduction(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeNoiseReductionEvent(int value); + + /// /// Original name: 6 'Phase gain (norm=16384)' /// int GetPhaseGainNorm16384(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 /// Original name: 6 'Phase gain (norm=16384)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPhaseGainNorm16384(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePhaseGainNorm16384Event(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 7 'All-pass filter' /// int GetAllPassFilter(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 7 'All-pass filter' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAllPassFilter(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAllPassFilterEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Frequency spread' /// int GetFrequencySpread(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Frequency spread' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFrequencySpread(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFrequencySpreadEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 9 'Random phase' /// int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 9 'Random phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomPhaseEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Random phase (lite)' /// int GetRandomPhaseLite(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Random phase (lite)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomPhaseLite(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -4096-4096, real: 0-8192 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomPhaseLiteEvent(int value); + + /// + /// Value range: displayed: -4096 to 4096, real: 0 to 8192 /// Original name: 11 'Freq shift' /// int GetFreqShift(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -4096-4096, real: 0-8192 + /// Value range: displayed: -4096 to 4096, real: 0 to 8192 /// Original name: 11 'Freq shift' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqShift(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-4096 to 4096) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqShiftEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 12 'Deform1' /// int GetDeform1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 12 'Deform1' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDeform1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDeform1Event(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 13 'Deform2' /// int GetDeform2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 13 'Deform2' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDeform2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDeform2Event(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 14 'HP cutoff' /// int GetHpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 14 'HP cutoff' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeHpCutoffEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 15 'LP cutoff' /// int GetLpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 15 'LP cutoff' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLpCutoffEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 16 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 16 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); } /// @@ -361,101 +481,216 @@ public void AssertCorrectHandleType() /// public void SetSampleRate(FftSampleRate value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSampleRateEvent(FftSampleRate value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(ChannelsInverted value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public FftBufferSize GetBufferSamples() => (FftBufferSize)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetBufferSamples(FftBufferSize value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeBufferSamplesEvent(FftBufferSize value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public FftBufferOverlap GetBufOverlap() => (FftBufferOverlap)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetBufOverlap(FftBufferOverlap value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeBufOverlapEvent(FftBufferOverlap value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetNoiseReduction(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetNoiseReduction(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeNoiseReductionEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPhaseGainNorm16384(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetPhaseGainNorm16384(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakePhaseGainNorm16384Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAllPassFilter(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetAllPassFilter(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeAllPassFilterEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFrequencySpread(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetFrequencySpread(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeFrequencySpreadEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeRandomPhaseEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomPhaseLite(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetRandomPhaseLite(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeRandomPhaseLiteEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreqShift(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetFreqShift(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeFreqShiftEvent(int value) + { + value -= -4096; + value = value * 0x8000 / (8192); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDeform1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); /// public void SetDeform1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + /// + public PatternEvent MakeDeform1Event(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDeform2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetDeform2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + /// + public PatternEvent MakeDeform2Event(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); /// public void SetHpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + /// + public PatternEvent MakeHpCutoffEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLpCutoff(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); /// public void SetLpCutoff(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + /// + public PatternEvent MakeLpCutoffEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 15, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(16, valueScalingMode); /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(16, value, valueScalingMode); + + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 16, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FilterModuleHandle.g.cs b/SunSharp/Modules/g/FilterModuleHandle.g.cs index c7c7883..a581de6 100644 --- a/SunSharp/Modules/g/FilterModuleHandle.g.cs +++ b/SunSharp/Modules/g/FilterModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,41 +17,62 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-14000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 1 'Freq' /// int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-14000 + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 1 'Freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1530 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 14000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqEvent(int value); + + /// + /// Value range: displayed: 0 to 1530, real: 0 to 1530 /// Original name: 2 'Resonance' /// int GetResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1530 + /// Value range: displayed: 0 to 1530, real: 0 to 1530 /// Original name: 2 'Resonance' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1530) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResonanceEvent(int value); + /// /// Original name: 3 'Type' /// @@ -56,21 +80,35 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterType(FilterType value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterTypeEvent(FilterType value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Response' /// int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Response' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResponseEvent(int value); + /// /// Original name: 5 'Mode' /// @@ -78,69 +116,111 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Quality value); /// - /// Value range: 0-14000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Quality value); + + /// + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 6 'Impulse' /// int GetImpulse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-14000 + /// Value range: displayed: 0 to 14000, real: 0 to 14000 /// Original name: 6 'Impulse' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetImpulse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 14000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeImpulseEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 7 'Mix' /// int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 7 'Mix' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeMixEvent(int value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 8 'LFO freq' /// int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 8 'LFO freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoFreqEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 9 'LFO amp' /// int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 9 'LFO amp' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoAmpEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 10 'Set LFO phase' /// int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 10 'Set LFO phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSetLfoPhaseEvent(int value); + /// /// Original name: 11 'Exponential freq' /// @@ -148,9 +228,16 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 11 'Exponential freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetExponentialFreq(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeExponentialFreqEvent(Toggle value); + /// /// Original name: 12 'Roll-off' /// @@ -158,9 +245,16 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 12 'Roll-off' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRollOff(FilterRollOff value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRollOffEvent(FilterRollOff value); + /// /// Original name: 13 'LFO freq unit' /// @@ -168,9 +262,16 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 13 'LFO freq unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreqUnit(FilterLfoFrequencyUnit value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoFreqUnitEvent(FilterLfoFrequencyUnit value); + /// /// Original name: 14 'LFO waveform' /// @@ -178,8 +279,15 @@ public partial interface IFilterModuleHandle : ITypedModuleHandle /// /// Original name: 14 'LFO waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoWaveform(FilterLfoWaveform value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoWaveformEvent(FilterLfoWaveform value); } /// @@ -333,89 +441,188 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeFreqEvent(int value) + { + value = value * 0x8000 / (14000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetResonance(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetResonance(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeResonanceEvent(int value) + { + value = value * 0x8000 / (1530); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterType GetFilterType() => (FilterType)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetFilterType(FilterType value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterTypeEvent(FilterType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeResponseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetImpulse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetImpulse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeImpulseEvent(int value) + { + value = value * 0x8000 / (14000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeMixEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeLfoFreqEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeLfoAmpEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeSetLfoPhaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeExponentialFreqEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public FilterRollOff GetRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeRollOffEvent(FilterRollOff value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public FilterLfoFrequencyUnit GetLfoFreqUnit() => (FilterLfoFrequencyUnit)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); /// public void SetLfoFreqUnit(FilterLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeLfoFreqUnitEvent(FilterLfoFrequencyUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public FilterLfoWaveform GetLfoWaveform() => (FilterLfoWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); /// public void SetLfoWaveform(FilterLfoWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeLfoWaveformEvent(FilterLfoWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FilterProModuleHandle.g.cs b/SunSharp/Modules/g/FilterProModuleHandle.g.cs index cd8e4bf..42cdae8 100644 --- a/SunSharp/Modules/g/FilterProModuleHandle.g.cs +++ b/SunSharp/Modules/g/FilterProModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Type' /// @@ -32,45 +42,73 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterType(FilterProType value); /// - /// Value range: 0-22000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterTypeEvent(FilterProType value); + + /// + /// Value range: displayed: 0 to 22000, real: 0 to 22000 /// Original name: 2 'Freq' /// int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-22000 + /// Value range: displayed: 0 to 22000, real: 0 to 22000 /// Original name: 2 'Freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -1000-1000, real: 0-2000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 22000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqEvent(int value); + + /// + /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 3 'Freq finetune' /// - int GetFreqFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetFreqFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -1000-1000, real: 0-2000 + /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 3 'Freq finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + /// + void SetFreqFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-1000 to 1000) to column range (0 to 0x8000). Out of range values are clamped. /// - void SetFreqFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + PatternEvent MakeFreqFineTuneEvent(int value); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 4 'Freq scale' /// int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 4 'Freq scale' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 200) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqScaleEvent(int value); + /// /// Original name: 5 'Exponential freq' /// @@ -78,33 +116,54 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Exponential freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetExponentialFreq(Toggle value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeExponentialFreqEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Q' /// int GetQ(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Q' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetQ(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeQEvent(int value); + + /// + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 7 'Gain' /// int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 7 'Gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-16384 to 16384) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGainEvent(int value); + /// /// Original name: 8 'Roll-off' /// @@ -112,21 +171,35 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 8 'Roll-off' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRollOff(FilterProRollOff value); /// - /// Value range: 0-1000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRollOffEvent(FilterProRollOff value); + + /// + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 9 'Response' /// int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1000 + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 9 'Response' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResponseEvent(int value); + /// /// Original name: 10 'Mode' /// @@ -134,45 +207,73 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 10 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(FilterProMode value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(FilterProMode value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 11 'Mix' /// int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 11 'Mix' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeMixEvent(int value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 12 'LFO freq' /// int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 12 'LFO freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoFreqEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 13 'LFO amp' /// int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 13 'LFO amp' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoAmpEvent(int value); + /// /// Original name: 14 'LFO waveform' /// @@ -180,21 +281,35 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 14 'LFO waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoWaveform(FilterLfoWaveform value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoWaveformEvent(FilterLfoWaveform value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 15 'Set LFO phase' /// int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 15 'Set LFO phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSetLfoPhaseEvent(int value); + /// /// Original name: 16 'LFO freq unit' /// @@ -202,8 +317,15 @@ public partial interface IFilterProModuleHandle : ITypedModuleHandle /// /// Original name: 16 'LFO freq unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreqUnit(FilterLfoFrequencyUnit value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoFreqUnitEvent(FilterLfoFrequencyUnit value); } /// @@ -357,23 +479,51 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterProType GetFilterType() => (FilterProType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetFilterType(FilterProType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterTypeEvent(FilterProType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); - /// - public int GetFreqFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + /// + public PatternEvent MakeFreqEvent(int value) + { + value = value * 0x8000 / (22000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFreqFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); - /// - public void SetFreqFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public void SetFreqFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public PatternEvent MakeFreqFineTuneEvent(int value) + { + value -= -1000; + value = value * 0x8000 / (2000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } /// public int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); @@ -381,77 +531,164 @@ public void AssertCorrectHandleType() /// public void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeFreqScaleEvent(int value) + { + value = value * 0x8000 / (200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetExponentialFreq() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetExponentialFreq(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeExponentialFreqEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetQ(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetQ(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeQEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeGainEvent(int value) + { + value -= -16384; + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterProRollOff GetRollOff() => (FilterProRollOff)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetRollOff(FilterProRollOff value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeRollOffEvent(FilterProRollOff value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeResponseEvent(int value) + { + value = value * 0x8000 / (1000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterProMode GetMode() => (FilterProMode)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); /// public void SetMode(FilterProMode value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(FilterProMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeMixEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); /// public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + /// + public PatternEvent MakeLfoFreqEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + /// + public PatternEvent MakeLfoAmpEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterLfoWaveform GetLfoWaveform() => (FilterLfoWaveform)ModuleHandle.GetControllerValue(14, ValueScalingMode.Displayed); /// public void SetLfoWaveform(FilterLfoWaveform value) => ModuleHandle.SetControllerValue(14, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeLfoWaveformEvent(FilterLfoWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); /// public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + /// + public PatternEvent MakeSetLfoPhaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 15, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterLfoFrequencyUnit GetLfoFreqUnit() => (FilterLfoFrequencyUnit)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); /// public void SetLfoFreqUnit(FilterLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeLfoFreqUnitEvent(FilterLfoFrequencyUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 16, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FlangerModuleHandle.g.cs b/SunSharp/Modules/g/FlangerModuleHandle.g.cs index fd6f996..45ba1f7 100644 --- a/SunSharp/Modules/g/FlangerModuleHandle.g.cs +++ b/SunSharp/Modules/g/FlangerModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,89 +17,138 @@ public partial interface IFlangerModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' /// int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDryEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' /// int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeWetEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 8-1000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + + /// + /// Value range: displayed: 8 to 1000, real: 8 to 1000 /// Original name: 3 'Delay' /// int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 8-1000 + /// Value range: displayed: 8 to 1000, real: 8 to 1000 /// Original name: 3 'Delay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (8 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDelayEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Response' /// int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Response' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResponseEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 5 'LFO freq' /// int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 5 'LFO freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoFreqEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 6 'LFO amp' /// int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 6 'LFO amp' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLfoAmpEvent(int value); + /// /// Original name: 7 'LFO waveform' /// @@ -104,21 +156,35 @@ public partial interface IFlangerModuleHandle : ITypedModuleHandle /// /// Original name: 7 'LFO waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoWaveform(FlangerLfoWaveform value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoWaveformEvent(FlangerLfoWaveform value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Set LFO phase' /// int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Set LFO phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSetLfoPhaseEvent(int value); + /// /// Original name: 9 'LFO freq unit' /// @@ -126,8 +192,15 @@ public partial interface IFlangerModuleHandle : ITypedModuleHandle /// /// Original name: 9 'LFO freq unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLfoFreqUnit(FlangerLfoFrequencyUnit value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLfoFreqUnitEvent(FlangerLfoFrequencyUnit value); } /// @@ -281,59 +354,128 @@ public void AssertCorrectHandleType() /// public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeDryEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeWetEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDelay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetDelay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeDelayEvent(int value) + { + value -= 8; + value = value * 0x8000 / (992); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeResponseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetLfoFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeLfoFreqEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLfoAmp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetLfoAmp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeLfoAmpEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FlangerLfoWaveform GetLfoWaveform() => (FlangerLfoWaveform)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetLfoWaveform(FlangerLfoWaveform value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeLfoWaveformEvent(FlangerLfoWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSetLfoPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetSetLfoPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeSetLfoPhaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FlangerLfoFrequencyUnit GetLfoFreqUnit() => (FlangerLfoFrequencyUnit)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetLfoFreqUnit(FlangerLfoFrequencyUnit value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeLfoFreqUnitEvent(FlangerLfoFrequencyUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FmModuleHandle.g.cs b/SunSharp/Modules/g/FmModuleHandle.g.cs index d8cdf15..25dc055 100644 --- a/SunSharp/Modules/g/FmModuleHandle.g.cs +++ b/SunSharp/Modules/g/FmModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,197 +17,307 @@ public partial interface IFmModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'C.Volume' /// int GetCarrierVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'C.Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'M.Volume' /// int GetModulatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'M.Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-16 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// + /// Value range: displayed: 0 to 16, real: 0 to 16 /// Original name: 3 'C.Freq ratio' /// int GetCarrierFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-16 + /// Value range: displayed: 0 to 16, real: 0 to 16 /// Original name: 3 'C.Freq ratio' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-16 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 16) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierFrequencyRatioEvent(int value); + + /// + /// Value range: displayed: 0 to 16, real: 0 to 16 /// Original name: 4 'M.Freq ratio' /// int GetModulatorFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-16 + /// Value range: displayed: 0 to 16, real: 0 to 16 /// Original name: 4 'M.Freq ratio' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 16) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorFrequencyRatioEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'M.Self-modulation' /// int GetModulatorSelfModulation(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'M.Self-modulation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorSelfModulation(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorSelfModulationEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 6 'C.Attack' /// int GetCarrierAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 6 'C.Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 7 'C.Decay' /// int GetCarrierDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 7 'C.Decay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierDecayEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'C.Sustain' /// int GetCarrierSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'C.Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierSustainEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 9 'C.Release' /// int GetCarrierRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 9 'C.Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCarrierRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCarrierReleaseEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 10 'M.Attack' /// int GetModulatorAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 10 'M.Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 11 'M.Decay' /// int GetModulatorDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 11 'M.Decay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorDecayEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 12 'M.Sustain' /// int GetModulatorSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 12 'M.Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorSustainEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 13 'M.Release' /// int GetModulatorRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 13 'M.Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorReleaseEvent(int value); + + /// + /// Value range: displayed: 0 to 4, real: 0 to 4 /// Original name: 14 'M.Scaling per key' /// int GetModulatorScalingPerKey(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4 + /// Value range: displayed: 0 to 4, real: 0 to 4 /// Original name: 14 'M.Scaling per key' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulatorScalingPerKey(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 4) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeModulatorScalingPerKeyEvent(int value); + + /// /// Original name: 15 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 /// Original name: 15 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 16 'Mode' /// @@ -212,8 +325,15 @@ public partial interface IFmModuleHandle : ITypedModuleHandle /// /// Original name: 16 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Quality value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Quality value); } /// @@ -367,101 +487,219 @@ public void AssertCorrectHandleType() /// public void SetCarrierVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeCarrierVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetModulatorVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeModulatorVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCarrierFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetCarrierFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeCarrierFrequencyRatioEvent(int value) + { + value = value * 0x8000 / (16); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorFrequencyRatio(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetModulatorFrequencyRatio(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeModulatorFrequencyRatioEvent(int value) + { + value = value * 0x8000 / (16); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorSelfModulation(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetModulatorSelfModulation(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeModulatorSelfModulationEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCarrierAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetCarrierAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeCarrierAttackEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCarrierDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetCarrierDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeCarrierDecayEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCarrierSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetCarrierSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeCarrierSustainEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCarrierRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetCarrierRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeCarrierReleaseEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetModulatorAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeModulatorAttackEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorDecay(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetModulatorDecay(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeModulatorDecayEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorSustain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(12, valueScalingMode); /// public void SetModulatorSustain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(12, value, valueScalingMode); + /// + public PatternEvent MakeModulatorSustainEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetModulatorRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); + /// + public PatternEvent MakeModulatorReleaseEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetModulatorScalingPerKey(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); /// public void SetModulatorScalingPerKey(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + /// + public PatternEvent MakeModulatorScalingPerKeyEvent(int value) + { + value = value * 0x8000 / (4); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(15, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(15, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 15, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(16, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(16, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 16, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/FmxModuleHandle.g.cs b/SunSharp/Modules/g/FmxModuleHandle.g.cs index 2bf1ef1..c8472d9 100644 --- a/SunSharp/Modules/g/FmxModuleHandle.g.cs +++ b/SunSharp/Modules/g/FmxModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,29 +17,43 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + /// /// Original name: 2 'Sample rate' /// @@ -44,21 +61,33 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Sample rate' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleRate(FmxSampleRate value); /// - /// Value range: 1-32 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSampleRateEvent(FmxSampleRate value); + + /// /// Original name: 3 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32 /// Original name: 3 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 4 'Channels' /// @@ -66,21 +95,33 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(ChannelsInverted value); /// - /// Value range: 0-5 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(ChannelsInverted value); + + /// /// Original name: 5 'Input -> Operator #' /// int GetInputOperator(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-5 /// Original name: 5 'Input -> Operator #' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInputOperator(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInputOperatorEvent(int value); + /// /// Original name: 6 'Input -> Custom waveform' /// @@ -88,9 +129,16 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Input -> Custom waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInputCustomWaveform(FmxCustomWaveform value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInputCustomWaveformEvent(FmxCustomWaveform value); + /// /// Original name: 7 'ADSR smooth transitions' /// @@ -98,227 +146,856 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// Original name: 7 'ADSR smooth transitions' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAdsrSmoothTransitions(AdsrSmoothTransitions value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAdsrSmoothTransitionsEvent(AdsrSmoothTransitions value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Noise filter (32768 - OFF)' /// int GetNoiseFilterOff32768(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Noise filter (32768 - OFF)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoiseFilterOff32768(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-31 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeNoiseFilterOff32768Event(int value); + + /// /// Original name: 114 '1 Output mode' /// int GetOutputMode1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-31 /// Original name: 114 '1 Output mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutputMode1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-15 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutputMode1Event(int value); + + /// /// Original name: 115 '2 Output mode' /// int GetOutputMode2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-15 /// Original name: 115 '2 Output mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutputMode2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-7 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutputMode2Event(int value); + + /// /// Original name: 116 '3 Output mode' /// int GetOutputMode3(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-7 /// Original name: 116 '3 Output mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutputMode3(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-3 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutputMode3Event(int value); + + /// /// Original name: 117 '4 Output mode' /// int GetOutputMode4(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-3 /// Original name: 117 '4 Output mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutputMode4(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-8000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutputMode4Event(int value); + + /// + /// Value range: displayed: 0 to 8000, real: 0 to 8000 /// Original name: 118 'Envelope gain' /// int GetEnvelopeGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-8000 + /// Value range: displayed: 0 to 8000, real: 0 to 8000 /// Original name: 118 'Envelope gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetEnvelopeGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Used as a waveform where 'Custom' waveform type was applied. - ///
    - ///
    Write to curve 0 of Fmx. - ///
    The curve contains 256 values in range of -1 to 1. + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 8000) to column range (0 to 0x8000). Out of range values are clamped. ///
    - int WriteCurveCustomWaveform(float[] buffer); + PatternEvent MakeEnvelopeGainEvent(int value); /// - /// Used as a waveform where 'Custom' waveform type was applied. + /// This method accesses one of 5 grouped controllers starting at controller 9. ///
    - ///
    Read from curve 0 of Fmx. - ///
    The curve contains 256 values in range of -1 to 1. + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 9-13 '1 Volume' ///
    - int ReadCurveCustomWaveform(float[] buffer); - } + /// Index of the controller in the group (0-4) + int GetVolume(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public readonly partial struct FmxModuleHandle : IFmxModuleHandle - { - public SynthModuleHandle ModuleHandle { get; } + /// + /// This method accesses one of 5 grouped controllers starting at controller 9. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 9-13 '1 Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetVolume(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - public FmxModuleHandle(SynthModuleHandle moduleHandle) - { - ModuleHandle = moduleHandle; - } + /// + /// This method accesses one of 5 grouped controllers starting at controller 9. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 9-13 '1 Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeVolumeEvent(int index, int value); - public static implicit operator SynthModuleHandle(FmxModuleHandle handle) - { - return handle.ModuleHandle; - } + /// + /// This method accesses one of 5 grouped controllers starting at controller 14. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 14-18 '1 Attack' + ///
    + /// Index of the controller in the group (0-4) + int GetAttack(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public bool IsCorrectHandleType() - { - return ModuleHandle.GetModuleType() == SynthModuleType.Fmx; - } + /// + /// This method accesses one of 5 grouped controllers starting at controller 14. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 14-18 '1 Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetAttack(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public void AssertCorrectHandleType() - { - const SynthModuleType expected = SynthModuleType.Fmx; - var actual = ModuleHandle.GetModuleType(); - if(actual != expected) - { - throw new IncorrectSynthHandleTypeException(expected, actual); - } - } + /// + /// This method accesses one of 5 grouped controllers starting at controller 14. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 14-18 '1 Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeAttackEvent(int index, int value); - #region IGenericSynthModuleHandle implementation + /// + /// This method accesses one of 5 grouped controllers starting at controller 19. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 19-23 '1 Decay' + ///
    + /// Index of the controller in the group (0-4) + int GetDecay(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - public int Id => ModuleHandle.Id; + /// + /// This method accesses one of 5 grouped controllers starting at controller 19. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 19-23 '1 Decay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetDecay(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - public ISlot Slot => ModuleHandle.Slot; + /// + /// This method accesses one of 5 grouped controllers starting at controller 19. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 19-23 '1 Decay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeDecayEvent(int index, int value); - /// - public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 24. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 24-28 '1 Sustain level' + ///
    + /// Index of the controller in the group (0-4) + int GetSustainLevel(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 24. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 24-28 '1 Sustain level' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetSustainLevel(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public bool GetExists() => ModuleHandle.GetExists(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 24. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 24-28 '1 Sustain level' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeSustainLevelEvent(int index, int value); - /// - public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 29. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 29-33 '1 Release' + ///
    + /// Index of the controller in the group (0-4) + int GetRelease(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + /// + /// This method accesses one of 5 grouped controllers starting at controller 29. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 29-33 '1 Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetRelease(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + /// + /// This method accesses one of 5 grouped controllers starting at controller 29. + ///
    + /// Value range: displayed: 0 to 10000, real: 0 to 10000 + /// Original name pattern: 29-33 '1 Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeReleaseEvent(int index, int value); - /// - public string? GetName() => ModuleHandle.GetName(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 34. + ///
    + /// Original name pattern: 34-38 '1 Attack curve' + ///
    + /// Index of the controller in the group (0-4) + AdsrCurveType GetAttackCurve(int index); - /// - public void SetName(string name) => ModuleHandle.SetName(name); + /// + /// This method accesses one of 5 grouped controllers starting at controller 34. + ///
    + /// Original name pattern: 34-38 '1 Attack curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetAttackCurve(int index, AdsrCurveType value); - /// - public (int, int) GetPosition() => ModuleHandle.GetPosition(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 34. + ///
    + /// Original name pattern: 34-38 '1 Attack curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeAttackCurveEvent(int index, AdsrCurveType value); - /// - public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + /// + /// This method accesses one of 5 grouped controllers starting at controller 39. + ///
    + /// Original name pattern: 39-43 '1 Decay curve' + ///
    + /// Index of the controller in the group (0-4) + AdsrCurveType GetDecayCurve(int index); - /// - public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 39. + ///
    + /// Original name pattern: 39-43 '1 Decay curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetDecayCurve(int index, AdsrCurveType value); - /// - public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + /// + /// This method accesses one of 5 grouped controllers starting at controller 39. + ///
    + /// Original name pattern: 39-43 '1 Decay curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeDecayCurveEvent(int index, AdsrCurveType value); - /// - public int[] GetInputs() => ModuleHandle.GetInputs(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 44. + ///
    + /// Original name pattern: 44-48 '1 Release curve' + ///
    + /// Index of the controller in the group (0-4) + AdsrCurveType GetReleaseCurve(int index); - /// - ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 44. + ///
    + /// Original name pattern: 44-48 '1 Release curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetReleaseCurve(int index, AdsrCurveType value); - /// - public int[] GetOutputs() => ModuleHandle.GetOutputs(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 44. + ///
    + /// Original name pattern: 44-48 '1 Release curve' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeReleaseCurveEvent(int index, AdsrCurveType value); - /// - ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 49. + ///
    + /// Original name pattern: 49-53 '1 Sustain' + ///
    + /// Index of the controller in the group (0-4) + AdsrSustainMode GetSustain(int index); - /// - void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + /// + /// This method accesses one of 5 grouped controllers starting at controller 49. + ///
    + /// Original name pattern: 49-53 '1 Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetSustain(int index, AdsrSustainMode value); - /// - void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + /// + /// This method accesses one of 5 grouped controllers starting at controller 49. + ///
    + /// Original name pattern: 49-53 '1 Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeSustainEvent(int index, AdsrSustainMode value); - /// - void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + /// + /// This method accesses one of 5 grouped controllers starting at controller 54. + ///
    + /// Original name pattern: 54-58 '1 Sustain pedal' + ///
    + /// Index of the controller in the group (0-4) + Toggle GetSustainPedal(int index); - /// - void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + /// + /// This method accesses one of 5 grouped controllers starting at controller 54. + ///
    + /// Original name pattern: 54-58 '1 Sustain pedal' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetSustainPedal(int index, Toggle value); - /// - void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + /// + /// This method accesses one of 5 grouped controllers starting at controller 54. + ///
    + /// Original name pattern: 54-58 '1 Sustain pedal' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeSustainPedalEvent(int index, Toggle value); - /// - void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + /// + /// This method accesses one of 5 grouped controllers starting at controller 59. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 59-63 '1 Envelope scaling per key' + ///
    + /// Index of the controller in the group (0-4) + int GetEnvelopeScalingPerKey(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + /// + /// This method accesses one of 5 grouped controllers starting at controller 59. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 59-63 '1 Envelope scaling per key' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetEnvelopeScalingPerKey(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + /// + /// This method accesses one of 5 grouped controllers starting at controller 59. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 59-63 '1 Envelope scaling per key' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeEnvelopeScalingPerKeyEvent(int index, int value); - /// - public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + /// + /// This method accesses one of 5 grouped controllers starting at controller 64. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 64-68 '1 Volume scaling per key' + ///
    + /// Index of the controller in the group (0-4) + int GetVolumeScalingPerKey(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + /// + /// This method accesses one of 5 grouped controllers starting at controller 64. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 64-68 '1 Volume scaling per key' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetVolumeScalingPerKey(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + /// + /// This method accesses one of 5 grouped controllers starting at controller 64. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 64-68 '1 Volume scaling per key' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeVolumeScalingPerKeyEvent(int index, int value); - /// - public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + /// + /// This method accesses one of 5 grouped controllers starting at controller 69. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 69-73 '1 Velocity sensitivity' + ///
    + /// Index of the controller in the group (0-4) + int GetVelocitySensitivity(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + /// + /// This method accesses one of 5 grouped controllers starting at controller 69. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 69-73 '1 Velocity sensitivity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetVelocitySensitivity(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); - /// - public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + /// + /// This method accesses one of 5 grouped controllers starting at controller 69. + ///
    + /// Value range: displayed: -128 to 128, real: 0 to 256 + /// Original name pattern: 69-73 '1 Velocity sensitivity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeVelocitySensitivityEvent(int index, int value); - /// + /// + /// This method accesses one of 5 grouped controllers starting at controller 74. + ///
    + /// Original name pattern: 74-78 '1 Waveform' + ///
    + /// Index of the controller in the group (0-4) + FmxWaveform GetWaveform(int index); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 74. + ///
    + /// Original name pattern: 74-78 '1 Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetWaveform(int index, FmxWaveform value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 74. + ///
    + /// Original name pattern: 74-78 '1 Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeWaveformEvent(int index, FmxWaveform value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 79. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 79-83 '1 Noise' + ///
    + /// Index of the controller in the group (0-4) + int GetNoise(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 79. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 79-83 '1 Noise' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetNoise(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 79. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 79-83 '1 Noise' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeNoiseEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 84. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 84-88 '1 Phase' + ///
    + /// Index of the controller in the group (0-4) + int GetPhase(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 84. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 84-88 '1 Phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetPhase(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 84. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 84-88 '1 Phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakePhaseEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 89. + ///
    + /// Value range: displayed: 0 to 32000, real: 0 to 32000 + /// Original name pattern: 89-93 '1 Freq multiply' + ///
    + /// Index of the controller in the group (0-4) + int GetFrequencyMultiply(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 89. + ///
    + /// Value range: displayed: 0 to 32000, real: 0 to 32000 + /// Original name pattern: 89-93 '1 Freq multiply' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetFrequencyMultiply(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 89. + ///
    + /// Value range: displayed: 0 to 32000, real: 0 to 32000 + /// Original name pattern: 89-93 '1 Freq multiply' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeFrequencyMultiplyEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 94. + ///
    + /// Value range: displayed: -8192 to 8192, real: 0 to 16384 + /// Original name pattern: 94-98 '1 Constant pitch' + ///
    + /// Index of the controller in the group (0-4) + int GetConstantPitch(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 94. + ///
    + /// Value range: displayed: -8192 to 8192, real: 0 to 16384 + /// Original name pattern: 94-98 '1 Constant pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetConstantPitch(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 94. + ///
    + /// Value range: displayed: -8192 to 8192, real: 0 to 16384 + /// Original name pattern: 94-98 '1 Constant pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeConstantPitchEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 99. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 99-103 '1 Self-modulation' + ///
    + /// Index of the controller in the group (0-4) + int GetSelfModulation(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 99. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 99-103 '1 Self-modulation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetSelfModulation(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 99. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 99-103 '1 Self-modulation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeSelfModulationEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 104. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 104-108 '1 Feedback' + ///
    + /// Index of the controller in the group (0-4) + int GetFeedback(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 104. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 104-108 '1 Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetFeedback(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 104. + ///
    + /// Value range: displayed: 0 to 32768, real: 0 to 32768 + /// Original name pattern: 104-108 '1 Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeFeedbackEvent(int index, int value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 109. + ///
    + /// Original name pattern: 109-113 '1 Modulation type' + ///
    + /// Index of the controller in the group (0-4) + FmxModulationType GetModulationType(int index); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 109. + ///
    + /// Original name pattern: 109-113 '1 Modulation type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + void SetModulationType(int index, FmxModulationType value); + + /// + /// This method accesses one of 5 grouped controllers starting at controller 109. + ///
    + /// Original name pattern: 109-113 '1 Modulation type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + ///
    + /// Index of the controller in the group (0-4) + PatternEvent MakeModulationTypeEvent(int index, FmxModulationType value); + + /// + /// Used as a waveform where 'Custom' waveform type was applied. + ///
    + ///
    Write to curve 0 of Fmx. + ///
    The curve contains 256 values in range of -1 to 1. + ///
    + int WriteCurveCustomWaveform(float[] buffer); + + /// + /// Used as a waveform where 'Custom' waveform type was applied. + ///
    + ///
    Read from curve 0 of Fmx. + ///
    The curve contains 256 values in range of -1 to 1. + ///
    + int ReadCurveCustomWaveform(float[] buffer); + } + + /// + public readonly partial struct FmxModuleHandle : IFmxModuleHandle + { + public SynthModuleHandle ModuleHandle { get; } + + public FmxModuleHandle(SynthModuleHandle moduleHandle) + { + ModuleHandle = moduleHandle; + } + + public static implicit operator SynthModuleHandle(FmxModuleHandle handle) + { + return handle.ModuleHandle; + } + + /// + public bool IsCorrectHandleType() + { + return ModuleHandle.GetModuleType() == SynthModuleType.Fmx; + } + + /// + public void AssertCorrectHandleType() + { + const SynthModuleType expected = SynthModuleType.Fmx; + var actual = ModuleHandle.GetModuleType(); + if(actual != expected) + { + throw new IncorrectSynthHandleTypeException(expected, actual); + } + } + + #region IGenericSynthModuleHandle implementation + + public int Id => ModuleHandle.Id; + + public ISlot Slot => ModuleHandle.Slot; + + /// + public ModuleFlags GetFlags() => ModuleHandle.GetFlags(); + + /// + public SynthModuleType? GetModuleType() => ModuleHandle.GetModuleType(); + + /// + public bool GetExists() => ModuleHandle.GetExists(); + + /// + public FineTunePair GetFineTune() => ModuleHandle.GetFineTune(); + + /// + public void SetFineTune(FineTunePair fineTune) => ModuleHandle.SetFineTune(fineTune); + + /// + public int ReadScope(AudioChannel channel, short[] buffer) => ModuleHandle.ReadScope(channel, buffer); + + /// + public string? GetName() => ModuleHandle.GetName(); + + /// + public void SetName(string name) => ModuleHandle.SetName(name); + + /// + public (int, int) GetPosition() => ModuleHandle.GetPosition(); + + /// + public void SetPosition(int x, int y) => ModuleHandle.SetPosition(x, y); + + /// + public (byte, byte, byte) GetColor() => ModuleHandle.GetColor(); + + /// + public void SetColor(byte r, byte g, byte b) => ModuleHandle.SetColor(r, g, b); + + /// + public int[] GetInputs() => ModuleHandle.GetInputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetInputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetInputModules(); + + /// + public int[] GetOutputs() => ModuleHandle.GetOutputs(); + + /// + ISynthModuleHandle[] IGenericSynthModuleHandle.GetOutputModules() => (ModuleHandle as IGenericSynthModuleHandle).GetOutputModules(); + + /// + void IGenericSynthModuleHandle.ConnectInput(int targetModuleId) => ModuleHandle.ConnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.ConnectOutput(int targetModuleId) => ModuleHandle.ConnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.ConnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).ConnectOutput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectInput(int targetModuleId) => ModuleHandle.DisconnectInput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectInput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectInput(targetModule); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(int targetModuleId) => ModuleHandle.DisconnectOutput(targetModuleId); + + /// + void IGenericSynthModuleHandle.DisconnectOutput(ISynthModuleHandle targetModule) => (ModuleHandle as IGenericSynthModuleHandle).DisconnectOutput(targetModule); + + /// + public PatternEvent MakeSetControllerValueEvent(byte controllerId, ushort value) => ModuleHandle.MakeSetControllerValueEvent(controllerId, value); + + /// + public PatternEvent MakeNoteEvent(Note note, byte? velocity = default) => ModuleHandle.MakeNoteEvent(note, velocity); + + /// + public PatternEvent MakeSetPitchEvent(ushort pitch, byte? velocity = default) => ModuleHandle.MakeSetPitchEvent(pitch, velocity); + + /// + public PatternEvent MakeSetFrequencyEvent(double frequency, byte? velocity = default) => ModuleHandle.MakeSetFrequencyEvent(frequency, velocity); + + /// + public PatternEvent MakeEvent(Note note = default, byte? velocity = default, byte? controller = default, Effect effect = Effect.None, ushort value = 0) => ModuleHandle.MakeEvent(note, velocity, controller, effect, value); + + /// + public SynthModuleHandle[] GetInputModules() => ModuleHandle.GetInputModules(); + + /// public SynthModuleHandle[] GetOutputModules() => ModuleHandle.GetOutputModules(); /// @@ -341,84 +1018,821 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FmxSampleRate GetSampleRate() => (FmxSampleRate)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetSampleRate(FmxSampleRate value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSampleRateEvent(FmxSampleRate value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); - /// - public int GetInputOperator(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); + /// + public PatternEvent MakeChannelsEvent(ChannelsInverted value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public int GetInputOperator(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetInputOperator(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeInputOperatorEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FmxCustomWaveform GetInputCustomWaveform() => (FmxCustomWaveform)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetInputCustomWaveform(FmxCustomWaveform value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeInputCustomWaveformEvent(FmxCustomWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public AdsrSmoothTransitions GetAdsrSmoothTransitions() => (AdsrSmoothTransitions)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetAdsrSmoothTransitions(AdsrSmoothTransitions value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAdsrSmoothTransitionsEvent(AdsrSmoothTransitions value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetNoiseFilterOff32768(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetNoiseFilterOff32768(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeNoiseFilterOff32768Event(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutputMode1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(114, valueScalingMode); /// public void SetOutputMode1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(114, value, valueScalingMode); + /// + public PatternEvent MakeOutputMode1Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 114, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutputMode2(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(115, valueScalingMode); /// public void SetOutputMode2(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(115, value, valueScalingMode); + /// + public PatternEvent MakeOutputMode2Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 115, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutputMode3(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(116, valueScalingMode); /// public void SetOutputMode3(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(116, value, valueScalingMode); + /// + public PatternEvent MakeOutputMode3Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 116, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutputMode4(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(117, valueScalingMode); /// public void SetOutputMode4(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(117, value, valueScalingMode); + /// + public PatternEvent MakeOutputMode4Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 117, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetEnvelopeGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(118, valueScalingMode); /// public void SetEnvelopeGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(118, value, valueScalingMode); + /// + public PatternEvent MakeEnvelopeGainEvent(int value) + { + value = value * 0x8000 / (8000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 118, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetVolume(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(9 + index), valueScalingMode); + } + + /// + public void SetVolume(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(9 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeVolumeEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(9 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetAttack(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(14 + index), valueScalingMode); + } + + /// + public void SetAttack(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(14 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeAttackEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(14 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetDecay(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(19 + index), valueScalingMode); + } + + /// + public void SetDecay(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(19 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeDecayEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(19 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetSustainLevel(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(24 + index), valueScalingMode); + } + + /// + public void SetSustainLevel(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(24 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeSustainLevelEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(24 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetRelease(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(29 + index), valueScalingMode); + } + + /// + public void SetRelease(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(29 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeReleaseEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(29 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public AdsrCurveType GetAttackCurve(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (AdsrCurveType)ModuleHandle.GetControllerValue((byte)(34 + index), ValueScalingMode.Displayed); + } + + /// + public void SetAttackCurve(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(34 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeAttackCurveEvent(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(34 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public AdsrCurveType GetDecayCurve(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (AdsrCurveType)ModuleHandle.GetControllerValue((byte)(39 + index), ValueScalingMode.Displayed); + } + + /// + public void SetDecayCurve(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(39 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeDecayCurveEvent(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(39 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public AdsrCurveType GetReleaseCurve(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (AdsrCurveType)ModuleHandle.GetControllerValue((byte)(44 + index), ValueScalingMode.Displayed); + } + + /// + public void SetReleaseCurve(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(44 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeReleaseCurveEvent(int index, AdsrCurveType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(44 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public AdsrSustainMode GetSustain(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (AdsrSustainMode)ModuleHandle.GetControllerValue((byte)(49 + index), ValueScalingMode.Displayed); + } + + /// + public void SetSustain(int index, AdsrSustainMode value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(49 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeSustainEvent(int index, AdsrSustainMode value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(49 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public Toggle GetSustainPedal(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (Toggle)ModuleHandle.GetControllerValue((byte)(54 + index), ValueScalingMode.Displayed); + } + + /// + public void SetSustainPedal(int index, Toggle value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(54 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeSustainPedalEvent(int index, Toggle value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(54 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public int GetEnvelopeScalingPerKey(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(59 + index), valueScalingMode); + } + + /// + public void SetEnvelopeScalingPerKey(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(59 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeEnvelopeScalingPerKeyEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(59 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetVolumeScalingPerKey(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(64 + index), valueScalingMode); + } + + /// + public void SetVolumeScalingPerKey(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(64 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeVolumeScalingPerKeyEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(64 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetVelocitySensitivity(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(69 + index), valueScalingMode); + } + + /// + public void SetVelocitySensitivity(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(69 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeVelocitySensitivityEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(69 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public FmxWaveform GetWaveform(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (FmxWaveform)ModuleHandle.GetControllerValue((byte)(74 + index), ValueScalingMode.Displayed); + } + + /// + public void SetWaveform(int index, FmxWaveform value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(74 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeWaveformEvent(int index, FmxWaveform value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(74 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public int GetNoise(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(79 + index), valueScalingMode); + } + + /// + public void SetNoise(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(79 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeNoiseEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(79 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetPhase(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(84 + index), valueScalingMode); + } + + /// + public void SetPhase(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(84 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakePhaseEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(84 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFrequencyMultiply(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(89 + index), valueScalingMode); + } + + /// + public void SetFrequencyMultiply(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(89 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeFrequencyMultiplyEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(89 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetConstantPitch(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(94 + index), valueScalingMode); + } + + /// + public void SetConstantPitch(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(94 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeConstantPitchEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value -= -8192; + value = value * 0x8000 / (16384); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(94 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetSelfModulation(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(99 + index), valueScalingMode); + } + + /// + public void SetSelfModulation(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(99 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeSelfModulationEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(99 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFeedback(int index, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return ModuleHandle.GetControllerValue((byte)(104 + index), valueScalingMode); + } + + /// + public void SetFeedback(int index, int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(104 + index), value, valueScalingMode); + } + + /// + public PatternEvent MakeFeedbackEvent(int index, int value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(104 + index), (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public FmxModulationType GetModulationType(int index) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return (FmxModulationType)ModuleHandle.GetControllerValue((byte)(109 + index), ValueScalingMode.Displayed); + } + + /// + public void SetModulationType(int index, FmxModulationType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + ModuleHandle.SetControllerValue((byte)(109 + index), (int)value, ValueScalingMode.Displayed); + } + + /// + public PatternEvent MakeModulationTypeEvent(int index, FmxModulationType value) + { + if (index < 0 || index > 4) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(109 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs b/SunSharp/Modules/g/GeneratorModuleHandle.g.cs index ba71d2e..0674a31 100644 --- a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs +++ b/SunSharp/Modules/g/GeneratorModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IGeneratorModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Waveform' /// @@ -32,57 +42,90 @@ public partial interface IGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWaveform(GeneratorWaveform value); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeWaveformEvent(GeneratorWaveform value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 4 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 4 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + + /// /// Original name: 5 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-16 /// Original name: 5 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 6 'Mode' /// @@ -90,9 +133,16 @@ public partial interface IGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Channels value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Channels value); + /// /// Original name: 7 'Sustain' /// @@ -100,33 +150,54 @@ public partial interface IGeneratorModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustain(Toggle value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSustainEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Freq.modulation by input' /// int GetFreqModulationByInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Freq.modulation by input' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqModulationByInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1022 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqModulationByInputEvent(int value); + + /// + /// Value range: displayed: 0 to 1022, real: 0 to 1022 /// Original name: 9 'Duty cycle' /// int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1022 + /// Value range: displayed: 0 to 1022, real: 0 to 1022 /// Original name: 9 'Duty cycle' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1022) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDutyCycleEvent(int value); + /// /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. ///
    @@ -295,60 +366,127 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public GeneratorWaveform GetWaveform() => (GeneratorWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetWaveform(GeneratorWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeWaveformEvent(GeneratorWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetMode() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetMode(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSustainEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFreqModulationByInput(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetFreqModulationByInput(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeFreqModulationByInputEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeDutyCycleEvent(int value) + { + value = value * 0x8000 / (1022); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/Modules/g/GlideModuleHandle.g.cs b/SunSharp/Modules/g/GlideModuleHandle.g.cs index 5d24c84..716157f 100644 --- a/SunSharp/Modules/g/GlideModuleHandle.g.cs +++ b/SunSharp/Modules/g/GlideModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,29 +17,43 @@ public partial interface IGlideModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-1000 + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 0 'Response' /// int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1000 + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 0 'Response' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResponseEvent(int value); + + /// + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 1 'Sample rate' /// int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32768 + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 1 'Sample rate' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSampleRateEvent(int value); + /// /// Original name: 2 'Reset on 1st note' /// @@ -44,9 +61,16 @@ public partial interface IGlideModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Reset on 1st note' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResetOnStNote1(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeResetOnStNote1Event(Toggle value); + /// /// Original name: 3 'Polyphony' /// @@ -54,33 +78,54 @@ public partial interface IGlideModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(Toggle value); /// - /// Value range: displayed: -600-600, real: 0-1200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(Toggle value); + + /// + /// Value range: displayed: -600 to 600, real: 0 to 1200 /// Original name: 4 'Pitch' /// int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -600-600, real: 0-1200 + /// Value range: displayed: -600 to 600, real: 0 to 1200 /// Original name: 4 'Pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-600 to 600) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePitchEvent(int value); + + /// + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 5 'Pitch scale' /// int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 5 'Pitch scale' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 200) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePitchScaleEvent(int value); + /// /// Original name: 6 'Reset' /// @@ -88,44 +133,66 @@ public partial interface IGlideModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Reset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetReset(Toggle value); /// - /// Value range: displayed: -10-10, real: 0-20 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeResetEvent(Toggle value); + + /// /// Original name: 7 'Octave' /// int GetOctave(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -10-10, real: 0-20 /// Original name: 7 'Octave' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOctave(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOctaveEvent(int value); + + /// /// Original name: 8 'Freq multiply' /// int GetFreqMultiply(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 /// Original name: 8 'Freq multiply' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqMultiply(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFreqMultiplyEvent(int value); + + /// /// Original name: 9 'Freq divide' /// int GetFreqDivide(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 /// Original name: 9 'Freq divide' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqDivide(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFreqDivideEvent(int value); } /// @@ -279,59 +346,125 @@ public void AssertCorrectHandleType() /// public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeResponseEvent(int value) + { + value = value * 0x8000 / (1000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeSampleRateEvent(int value) + { + value -= 1; + value = value * 0x8000 / (32767); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetResetOnStNote1() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetResetOnStNote1(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeResetOnStNote1Event(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetPolyphony() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetPolyphony(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakePolyphonyEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakePitchEvent(int value) + { + value -= -600; + value = value * 0x8000 / (1200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakePitchScaleEvent(int value) + { + value = value * 0x8000 / (200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetReset() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetReset(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeResetEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetOctave(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetOctave(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeOctaveEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreqMultiply(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetFreqMultiply(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeFreqMultiplyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreqDivide(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetFreqDivide(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public PatternEvent MakeFreqDivideEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/GpioModuleHandle.g.cs b/SunSharp/Modules/g/GpioModuleHandle.g.cs index 99d2378..8a5c1ab 100644 --- a/SunSharp/Modules/g/GpioModuleHandle.g.cs +++ b/SunSharp/Modules/g/GpioModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,33 +23,52 @@ public partial interface IGpioModuleHandle : ITypedModuleHandle /// /// Original name: 0 'Out' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOut(Toggle value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutEvent(Toggle value); + + /// /// Original name: 1 'Out pin' /// int GetOutPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 /// Original name: 1 'Out pin' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutPinEvent(int value); + + /// + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 2 'Out threshold' /// int GetOutThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 2 'Out threshold' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 100) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutThresholdEvent(int value); + /// /// Original name: 3 'In' /// @@ -54,44 +76,68 @@ public partial interface IGpioModuleHandle : ITypedModuleHandle /// /// Original name: 3 'In' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetIn(Toggle value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInEvent(Toggle value); + + /// /// Original name: 4 'In pin' /// int GetInPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 /// Original name: 4 'In pin' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-128 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInPinEvent(int value); + + /// /// Original name: 5 'In note' /// int GetInNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-128 /// Original name: 5 'In note' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInNoteEvent(int value); + + /// + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 6 'In amplitude' /// int GetInAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 6 'In amplitude' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 100) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeInAmplitudeEvent(int value); } /// @@ -245,41 +291,85 @@ public void AssertCorrectHandleType() /// public void SetOut(Toggle value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeOutEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetOutPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetOutPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeOutPinEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetOutThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeOutThresholdEvent(int value) + { + value = value * 0x8000 / (100); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetIn() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetIn(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeInEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetInPin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetInPin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeInPinEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetInNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetInNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeInNoteEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetInAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetInAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public PatternEvent MakeInAmplitudeEvent(int value) + { + value = value * 0x8000 / (100); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/InputModuleHandle.g.cs b/SunSharp/Modules/g/InputModuleHandle.g.cs index 96891ee..a850a2a 100644 --- a/SunSharp/Modules/g/InputModuleHandle.g.cs +++ b/SunSharp/Modules/g/InputModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IInputModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Channels' /// @@ -32,8 +42,15 @@ public partial interface IInputModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(ChannelsInverted value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(ChannelsInverted value); } /// @@ -187,11 +204,24 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeChannelsEvent(ChannelsInverted value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/KickerModuleHandle.g.cs b/SunSharp/Modules/g/KickerModuleHandle.g.cs index 685e1da..aa49168 100644 --- a/SunSharp/Modules/g/KickerModuleHandle.g.cs +++ b/SunSharp/Modules/g/KickerModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IKickerModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Waveform' /// @@ -32,81 +42,128 @@ public partial interface IKickerModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWaveform(KickerWaveform value); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeWaveformEvent(KickerWaveform value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 2 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 4 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 4 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 5 'Boost' /// int GetBoost(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 5 'Boost' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBoost(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeBoostEvent(int value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 6 'Acceleration' /// int GetAcceleration(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 6 'Acceleration' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAcceleration(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-4 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAccelerationEvent(int value); + + /// /// Original name: 7 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-4 /// Original name: 7 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 8 'No click' /// @@ -114,8 +171,15 @@ public partial interface IKickerModuleHandle : ITypedModuleHandle /// /// Original name: 8 'No click' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetNoClick(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeNoClickEvent(Toggle value); } /// @@ -269,53 +333,114 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public KickerWaveform GetWaveform() => (KickerWaveform)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetWaveform(KickerWaveform value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeWaveformEvent(KickerWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetBoost(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetBoost(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeBoostEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAcceleration(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetAcceleration(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeAccelerationEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetNoClick() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetNoClick(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeNoClickEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/LfoModuleHandle.g.cs b/SunSharp/Modules/g/LfoModuleHandle.g.cs index 436ebc6..4e18926 100644 --- a/SunSharp/Modules/g/LfoModuleHandle.g.cs +++ b/SunSharp/Modules/g/LfoModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Type' /// @@ -32,33 +42,54 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFilterType(LfoType value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFilterTypeEvent(LfoType value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Amplitude' /// int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Amplitude' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAmplitudeEvent(int value); + + /// + /// Value range: displayed: 1 to 256, real: 1 to 256 /// Original name: 3 'Freq' /// int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 + /// Value range: displayed: 1 to 256, real: 1 to 256 /// Original name: 3 'Freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqEvent(int value); + /// /// Original name: 4 'Waveform' /// @@ -66,21 +97,35 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Waveform' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWaveform(LfoWaveform value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeWaveformEvent(LfoWaveform value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Set phase' /// int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 5 'Set phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSetPhaseEvent(int value); + /// /// Original name: 6 'Channels' /// @@ -88,9 +133,16 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); + /// /// Original name: 7 'Frequency unit' /// @@ -98,21 +150,35 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Frequency unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFrequencyUnit(LfoFrequencyUnit value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFrequencyUnitEvent(LfoFrequencyUnit value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Duty cycle' /// int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 8 'Duty cycle' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDutyCycleEvent(int value); + /// /// Original name: 9 'Generator' /// @@ -120,21 +186,35 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 9 'Generator' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGenerator(Toggle value); /// - /// Value range: 0-200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeGeneratorEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 10 'Freq scale' /// int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 10 'Freq scale' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 200) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqScaleEvent(int value); + /// /// Original name: 11 'Smooth transitions' /// @@ -142,9 +222,16 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 11 'Smooth transitions' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSmoothTransitions(LfoSmoothTransitions value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSmoothTransitionsEvent(LfoSmoothTransitions value); + /// /// Original name: 12 'Sine quality' /// @@ -152,32 +239,51 @@ public partial interface ILfoModuleHandle : ITypedModuleHandle /// /// Original name: 12 'Sine quality' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSineQuality(LfoSineQuality value); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSineQualityEvent(LfoSineQuality value); + + /// /// Original name: 13 'Transpose' /// int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 13 'Transpose' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeTransposeEvent(int value); + + /// + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 14 'Finetune' /// - int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 14 'Finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + /// + void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-256 to 256) to column range (0 to 0x8000). Out of range values are clamped. /// - void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + PatternEvent MakeFineTuneEvent(int value); } /// @@ -331,89 +437,188 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public LfoType GetFilterType() => (LfoType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetFilterType(LfoType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFilterTypeEvent(LfoType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeAmplitudeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeFreqEvent(int value) + { + value -= 1; + value = value * 0x8000 / (255); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public LfoWaveform GetWaveform() => (LfoWaveform)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetWaveform(LfoWaveform value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeWaveformEvent(LfoWaveform value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeSetPhaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public LfoFrequencyUnit GetFrequencyUnit() => (LfoFrequencyUnit)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetFrequencyUnit(LfoFrequencyUnit value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFrequencyUnitEvent(LfoFrequencyUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetDutyCycle(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetDutyCycle(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeDutyCycleEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetGenerator() => (Toggle)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetGenerator(Toggle value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeGeneratorEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFreqScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetFreqScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeFreqScaleEvent(int value) + { + value = value * 0x8000 / (200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public LfoSmoothTransitions GetSmoothTransitions() => (LfoSmoothTransitions)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetSmoothTransitions(LfoSmoothTransitions value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSmoothTransitionsEvent(LfoSmoothTransitions value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public LfoSineQuality GetSineQuality() => (LfoSineQuality)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetSineQuality(LfoSineQuality value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSineQualityEvent(LfoSineQuality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(13, valueScalingMode); /// public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(13, value, valueScalingMode); - /// - public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + /// + public PatternEvent MakeTransposeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(14, valueScalingMode); + + /// + public void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); - /// - public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(14, value, valueScalingMode); + /// + public PatternEvent MakeFineTuneEvent(int value) + { + value -= -256; + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 14, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/LoopModuleHandle.g.cs b/SunSharp/Modules/g/LoopModuleHandle.g.cs index 9b6b466..829df92 100644 --- a/SunSharp/Modules/g/LoopModuleHandle.g.cs +++ b/SunSharp/Modules/g/LoopModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,29 +17,43 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Length' /// int GetLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Length' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLengthEvent(int value); + /// /// Original name: 2 'Channels' /// @@ -44,21 +61,33 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(ChannelsInverted value); /// - /// Value range: 0-128 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(ChannelsInverted value); + + /// /// Original name: 3 'Repeat (128=endless)' /// int GetRepeatEndless128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-128 /// Original name: 3 'Repeat (128=endless)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRepeatEndless128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRepeatEndless128Event(int value); + /// /// Original name: 4 'Mode' /// @@ -66,9 +95,16 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(LoopMode value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(LoopMode value); + /// /// Original name: 5 'Length unit' /// @@ -76,13 +112,19 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Length unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLengthUnit(LoopTimeUnit value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLengthUnitEvent(LoopTimeUnit value); + /// /// Max buffer size in seconds ///
    - /// Value range: 1-240 /// Original name: 6 'Max buffer size' ///
    int GetMaxBufferSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); @@ -90,11 +132,19 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Max buffer size in seconds ///
    - /// Value range: 1-240 /// Original name: 6 'Max buffer size' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    void SetMaxBufferSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// Max buffer size in seconds + ///
    + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + ///
    + PatternEvent MakeMaxBufferSizeEvent(int value); + /// /// Original name: 7 'On NoteON' /// @@ -102,8 +152,15 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Original name: 7 'On NoteON' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOnNoteon(LoopOnNoteOn value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOnNoteonEvent(LoopOnNoteOn value); } /// @@ -257,47 +314,97 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetLength(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetLength(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeLengthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(ChannelsInverted value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetRepeatEndless128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetRepeatEndless128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeRepeatEndless128Event(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public LoopMode GetMode() => (LoopMode)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetMode(LoopMode value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(LoopMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public LoopTimeUnit GetLengthUnit() => (LoopTimeUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetLengthUnit(LoopTimeUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeLengthUnitEvent(LoopTimeUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetMaxBufferSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetMaxBufferSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeMaxBufferSizeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public LoopOnNoteOn GetOnNoteon() => (LoopOnNoteOn)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetOnNoteon(LoopOnNoteOn value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeOnNoteonEvent(LoopOnNoteOn value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs b/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs index 0fd519e..3d6305b 100644 --- a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs +++ b/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,29 +17,41 @@ public partial interface IMetaModuleModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// /// Original name: 1 'Input module' /// int GetInputModule(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-256 /// Original name: 1 'Input module' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInputModule(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInputModuleEvent(int value); + /// /// Original name: 2 'Play patterns' /// @@ -44,32 +59,49 @@ public partial interface IMetaModuleModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Play patterns' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPlayPatterns(MetaModulePatternMode value); /// - /// Value range: 1-1000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePlayPatternsEvent(MetaModulePatternMode value); + + /// /// Original name: 3 'BPM (Beats Per Minute)' /// int GetBeatsPerMinute(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-1000 /// Original name: 3 'BPM (Beats Per Minute)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBeatsPerMinute(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-31 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeBeatsPerMinuteEvent(int value); + + /// /// Original name: 4 'TPL (Ticks Per Line)' /// int GetTicksPerLine(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-31 /// Original name: 4 'TPL (Ticks Per Line)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetTicksPerLine(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeTicksPerLineEvent(int value); } /// @@ -223,29 +255,60 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetInputModule(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetInputModule(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeInputModuleEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public MetaModulePatternMode GetPlayPatterns() => (MetaModulePatternMode)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetPlayPatterns(MetaModulePatternMode value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakePlayPatternsEvent(MetaModulePatternMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetBeatsPerMinute(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetBeatsPerMinute(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeBeatsPerMinuteEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetTicksPerLine(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetTicksPerLine(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public PatternEvent MakeTicksPerLineEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs b/SunSharp/Modules/g/ModulatorModuleHandle.g.cs index d05acf2..83ba183 100644 --- a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs +++ b/SunSharp/Modules/g/ModulatorModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Modulation type' /// @@ -32,9 +42,16 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Modulation type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetModulationType(ModulationType value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModulationTypeEvent(ModulationType value); + /// /// Original name: 2 'Channels' /// @@ -42,9 +59,16 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); + /// /// Original name: 3 'Max PM delay' /// @@ -52,9 +76,16 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Max PM delay' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMaxPhaseModulationDelay(ModulatorMaxPhaseModulationDelay value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeMaxPhaseModulationDelayEvent(ModulatorMaxPhaseModulationDelay value); + /// /// Original name: 4 'PM interpolation' /// @@ -62,8 +93,15 @@ public partial interface IModulatorModuleHandle : ITypedModuleHandle /// /// Original name: 4 'PM interpolation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPhaseModulationInterpolation(ModulatorPhaseModulationInterpolation value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePhaseModulationInterpolationEvent(ModulatorPhaseModulationInterpolation value); } /// @@ -217,29 +255,60 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public ModulationType GetModulationType() => (ModulationType)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetModulationType(ModulationType value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModulationTypeEvent(ModulationType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ModulatorMaxPhaseModulationDelay GetMaxPhaseModulationDelay() => (ModulatorMaxPhaseModulationDelay)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetMaxPhaseModulationDelay(ModulatorMaxPhaseModulationDelay value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeMaxPhaseModulationDelayEvent(ModulatorMaxPhaseModulationDelay value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ModulatorPhaseModulationInterpolation GetPhaseModulationInterpolation() => (ModulatorPhaseModulationInterpolation)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetPhaseModulationInterpolation(ModulatorPhaseModulationInterpolation value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakePhaseModulationInterpolationEvent(ModulatorPhaseModulationInterpolation value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs b/SunSharp/Modules/g/MultiControlModuleHandle.g.cs index 898bf46..ba05486 100644 --- a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/MultiControlModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,77 +17,119 @@ public partial interface IMultiControlModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Value' /// int GetValue(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 0 'Value' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetValue(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeValueEvent(int value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 1 'Gain' /// int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 1 'Gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGainEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 2 'Quantization' /// int GetQuantization(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 2 'Quantization' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetQuantization(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeQuantizationEvent(int value); + + /// + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 3 'OUT offset' /// int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 3 'OUT offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-16384 to 16384) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutOffsetEvent(int value); + + /// + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 4 'Response' /// int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1000 + /// Value range: displayed: 0 to 1000, real: 0 to 1000 /// Original name: 4 'Response' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeResponseEvent(int value); + + /// + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 5 'Sample rate' /// int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32768 + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 5 'Sample rate' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSampleRateEvent(int value); + /// /// Modifies values. ///
    @@ -253,36 +298,80 @@ public void AssertCorrectHandleType() /// public void SetValue(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeValueEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeGainEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetQuantization(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetQuantization(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeQuantizationEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeOutOffsetEvent(int value) + { + value -= -16384; + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetResponse(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetResponse(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeResponseEvent(int value) + { + value = value * 0x8000 / (1000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeSampleRateEvent(int value) + { + value -= 1; + value = value * 0x8000 / (32767); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs b/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs index 31d826f..4e0e01b 100644 --- a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs +++ b/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,101 +17,155 @@ public partial interface IMultiSynthModuleHandle : ITypedModuleHandle { /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 0 'Transpose' /// int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 0 'Transpose' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4096 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeTransposeEvent(int value); + + /// + /// Value range: displayed: 0 to 4096, real: 0 to 4096 /// Original name: 1 'Random pitch' /// int GetRandomPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4096 + /// Value range: displayed: 0 to 4096, real: 0 to 4096 /// Original name: 1 'Random pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 4096) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomPitchEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Velocity' /// int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Velocity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVelocityEvent(int value); + + /// + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 3 'Finetune' /// - int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 3 'Finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// - void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-256 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFineTuneEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'Random phase' /// int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'Random phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomPhaseEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'Random velocity' /// int GetRandomVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'Random velocity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomVelocityEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Phase' /// int GetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePhaseEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 7 'Curve2 influence' /// int GetCurve2Influence(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 7 'Curve2 influence' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetCurve2Influence(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeCurve2InfluenceEvent(int value); + /// /// Velocity to apply to arriving note. ///
    @@ -309,23 +366,51 @@ public void AssertCorrectHandleType() /// public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeTransposeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetRandomPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeRandomPitchEvent(int value) + { + value = value * 0x8000 / (4096); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); - /// - public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + /// + public PatternEvent MakeVelocityEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); - /// - public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public void SetFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public PatternEvent MakeFineTuneEvent(int value) + { + value -= -256; + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } /// public int GetRandomPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); @@ -333,24 +418,52 @@ public void AssertCorrectHandleType() /// public void SetRandomPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeRandomPhaseEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomVelocity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetRandomVelocity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeRandomVelocityEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakePhaseEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetCurve2Influence(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetCurve2Influence(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeCurve2InfluenceEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/Modules/g/OutputModuleHandle.g.cs b/SunSharp/Modules/g/OutputModuleHandle.g.cs index 3ac5292..e5eb36b 100644 --- a/SunSharp/Modules/g/OutputModuleHandle.g.cs +++ b/SunSharp/Modules/g/OutputModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// diff --git a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs b/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs index 4a68522..a2e10e1 100644 --- a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,33 +23,54 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 0 'Algorithm' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAlgorithm(PitchDetectorAlgorithm value); /// - /// Value range: 0-10000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAlgorithmEvent(PitchDetectorAlgorithm value); + + /// + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 1 'Threshold' /// int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 1 'Threshold' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeThresholdEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Gain' /// int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGainEvent(int value); + /// /// Original name: 3 'Microtones' /// @@ -54,33 +78,54 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Microtones' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMicrotones(Toggle value); /// - /// Value range: displayed: -256-256, real: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeMicrotonesEvent(Toggle value); + + /// + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 4 'Detector finetune' /// - int GetDetectorFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetDetectorFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -256-256, real: 0-512 + /// Value range: displayed: -256 to 256, real: 0 to 512 /// Original name: 4 'Detector finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// - void SetDetectorFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + void SetDetectorFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-256 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDetectorFineTuneEvent(int value); + + /// + /// Value range: displayed: 0 to 4000, real: 0 to 4000 /// Original name: 5 'LP filter freq (0 - OFF)' /// int GetLpFilterFreqOff0(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-4000 + /// Value range: displayed: 0 to 4000, real: 0 to 4000 /// Original name: 5 'LP filter freq (0 - OFF)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLpFilterFreqOff0(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 4000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeLpFilterFreqOff0Event(int value); + /// /// Original name: 6 'LP filter roll-off' /// @@ -88,9 +133,16 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 6 'LP filter roll-off' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetLpFilterRollOff(FilterRollOff value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeLpFilterRollOffEvent(FilterRollOff value); + /// /// Original name: 7 'Alg1-2 Sample rate (Hz)' /// @@ -98,9 +150,16 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Alg1-2 Sample rate (Hz)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAlgSampleRateHz12(PitchDetectorAlgSampleRate value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAlgSampleRateHz12Event(PitchDetectorAlgSampleRate value); + /// /// Original name: 8 'Alg1-2 Buffer (ms)' /// @@ -108,33 +167,54 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 8 'Alg1-2 Buffer (ms)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAlgBufferMs12(PitchDetectorBufferSize value); /// - /// Value range: 0-100 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAlgBufferMs12Event(PitchDetectorBufferSize value); + + /// + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 9 'Alg1-2 Buf overlap' /// int GetAlgBufOverlap12(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 9 'Alg1-2 Buf overlap' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAlgBufOverlap12(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 100) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAlgBufOverlap12Event(int value); + + /// + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 10 'Alg1 Sensitivity (absolute threshold)' /// int GetAlgSensitivityAbsoluteThreshold1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-100 + /// Value range: displayed: 0 to 100, real: 0 to 100 /// Original name: 10 'Alg1 Sensitivity (absolute threshold)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAlgSensitivityAbsoluteThreshold1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 100) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAlgSensitivityAbsoluteThreshold1Event(int value); + /// /// Original name: 11 'Record notes' /// @@ -142,8 +222,15 @@ public partial interface IPitchDetectorModuleHandle : ITypedModuleHandle /// /// Original name: 11 'Record notes' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRecordNotes(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRecordNotesEvent(Toggle value); } /// @@ -297,29 +384,63 @@ public void AssertCorrectHandleType() /// public void SetAlgorithm(PitchDetectorAlgorithm value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAlgorithmEvent(PitchDetectorAlgorithm value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeThresholdEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeGainEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetMicrotones() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetMicrotones(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); - /// - public int GetDetectorFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); + /// + public PatternEvent MakeMicrotonesEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + + /// + public int GetDetectorFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); - /// - public void SetDetectorFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public void SetDetectorFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public PatternEvent MakeDetectorFineTuneEvent(int value) + { + value -= -256; + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } /// public int GetLpFilterFreqOff0(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); @@ -327,41 +448,86 @@ public void AssertCorrectHandleType() /// public void SetLpFilterFreqOff0(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeLpFilterFreqOff0Event(int value) + { + value = value * 0x8000 / (4000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public FilterRollOff GetLpFilterRollOff() => (FilterRollOff)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetLpFilterRollOff(FilterRollOff value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeLpFilterRollOffEvent(FilterRollOff value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public PitchDetectorAlgSampleRate GetAlgSampleRateHz12() => (PitchDetectorAlgSampleRate)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetAlgSampleRateHz12(PitchDetectorAlgSampleRate value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAlgSampleRateHz12Event(PitchDetectorAlgSampleRate value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public PitchDetectorBufferSize GetAlgBufferMs12() => (PitchDetectorBufferSize)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetAlgBufferMs12(PitchDetectorBufferSize value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAlgBufferMs12Event(PitchDetectorBufferSize value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetAlgBufOverlap12(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetAlgBufOverlap12(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeAlgBufOverlap12Event(int value) + { + value = value * 0x8000 / (100); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAlgSensitivityAbsoluteThreshold1(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetAlgSensitivityAbsoluteThreshold1(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeAlgSensitivityAbsoluteThreshold1Event(int value) + { + value = value * 0x8000 / (100); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetRecordNotes() => (Toggle)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetRecordNotes(Toggle value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeRecordNotesEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs b/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs index d204ed2..08a7cd3 100644 --- a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,65 +17,100 @@ public partial interface IPitchShifterModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -600-600, real: 0-1200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -600 to 600, real: 0 to 1200 /// Original name: 1 'Pitch' /// int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -600-600, real: 0-1200 + /// Value range: displayed: -600 to 600, real: 0 to 1200 /// Original name: 1 'Pitch' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-600 to 600) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePitchEvent(int value); + + /// + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 2 'Pitch scale' /// int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-200 + /// Value range: displayed: 0 to 200, real: 0 to 200 /// Original name: 2 'Pitch scale' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 200) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePitchScaleEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Grain size' /// int GetGrainSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Grain size' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGrainSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGrainSizeEvent(int value); + /// /// Original name: 5 'Mode' /// @@ -80,9 +118,16 @@ public partial interface IPitchShifterModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Quality value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Quality value); + /// /// Original name: 6 'Bypass if pitch=0' /// @@ -90,8 +135,15 @@ public partial interface IPitchShifterModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Bypass if pitch=0' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetBypassIfPitch0(PitchShifterBypassMode value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeBypassIfPitch0Event(PitchShifterBypassMode value); } /// @@ -245,41 +297,89 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPitch(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetPitch(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakePitchEvent(int value) + { + value -= -600; + value = value * 0x8000 / (1200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPitchScale(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetPitchScale(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakePitchScaleEvent(int value) + { + value = value * 0x8000 / (200); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetGrainSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetGrainSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeGrainSizeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public PitchShifterBypassMode GetBypassIfPitch0() => (PitchShifterBypassMode)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetBypassIfPitch0(PitchShifterBypassMode value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeBypassIfPitch0Event(PitchShifterBypassMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs b/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs index 80d6936..70801b6 100644 --- a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,9 +23,16 @@ public partial interface IPitchToControlModuleHandle : ITypedModuleHandle /// /// Original name: 0 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(PitchToControlMode value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(PitchToControlMode value); + /// /// Original name: 1 'On NoteOFF' /// @@ -30,68 +40,104 @@ public partial interface IPitchToControlModuleHandle : ITypedModuleHandle /// /// Original name: 1 'On NoteOFF' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOnNoteoff(PitchToControlOnNoteOff value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOnNoteoffEvent(PitchToControlOnNoteOff value); + + /// /// Original name: 2 'First note' /// int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 /// Original name: 2 'First note' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFirstNoteEvent(int value); + + /// /// Original name: 3 'Range (number of semitones)' /// int GetRange(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 /// Original name: 3 'Range (number of semitones)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRange(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRangeEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'OUT min' /// int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 4 'OUT min' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMinEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'OUT max' /// int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 5 'OUT max' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMaxEvent(int value); + + /// /// Original name: 6 'OUT controller' /// int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 /// Original name: 6 'OUT controller' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutControllerEvent(int value); } /// @@ -245,41 +291,85 @@ public void AssertCorrectHandleType() /// public void SetMode(PitchToControlMode value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(PitchToControlMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public PitchToControlOnNoteOff GetOnNoteoff() => (PitchToControlOnNoteOff)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetOnNoteoff(PitchToControlOnNoteOff value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeOnNoteoffEvent(PitchToControlOnNoteOff value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetFirstNote(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFirstNote(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeFirstNoteEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRange(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetRange(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeRangeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeOutMinEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeOutMaxEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + + /// + public PatternEvent MakeOutControllerEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/ReverbModuleHandle.g.cs b/SunSharp/Modules/g/ReverbModuleHandle.g.cs index 9c3463c..666ddf9 100644 --- a/SunSharp/Modules/g/ReverbModuleHandle.g.cs +++ b/SunSharp/Modules/g/ReverbModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,65 +17,100 @@ public partial interface IReverbModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' /// int GetDry(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Dry' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDryEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' /// int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Wet' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeWetEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' /// int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Feedback' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFeedbackEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Damp' /// int GetDamp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 3 'Damp' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDamp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeDampEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Stereo width' /// int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Stereo width' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeStereoWidthEvent(int value); + /// /// Original name: 5 'Freeze' /// @@ -80,9 +118,16 @@ public partial interface IReverbModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Freeze' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreeze(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFreezeEvent(Toggle value); + /// /// Original name: 6 'Mode' /// @@ -90,9 +135,16 @@ public partial interface IReverbModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Quality value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Quality value); + /// /// Original name: 7 'All-pass filter' /// @@ -100,32 +152,51 @@ public partial interface IReverbModuleHandle : ITypedModuleHandle /// /// Original name: 7 'All-pass filter' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAllPassFilter(ReverbAllPassFilter value); /// - /// Value range: 0-128 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAllPassFilterEvent(ReverbAllPassFilter value); + + /// + /// Value range: displayed: 0 to 128, real: 0 to 128 /// Original name: 8 'Room size' /// int GetRoomSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-128 + /// Value range: displayed: 0 to 128, real: 0 to 128 /// Original name: 8 'Room size' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRoomSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRoomSizeEvent(int value); + + /// /// Original name: 9 'Random seed' /// int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 /// Original name: 9 'Random seed' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRandomSeedEvent(int value); } /// @@ -279,59 +350,125 @@ public void AssertCorrectHandleType() /// public void SetDry(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeDryEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetWet(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetWet(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeWetEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFeedback(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFeedback(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeFeedbackEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetDamp(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetDamp(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeDampEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetStereoWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetStereoWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeStereoWidthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetFreeze() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetFreeze(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFreezeEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public ReverbAllPassFilter GetAllPassFilter() => (ReverbAllPassFilter)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetAllPassFilter(ReverbAllPassFilter value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAllPassFilterEvent(ReverbAllPassFilter value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetRoomSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetRoomSize(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeRoomSizeEvent(int value) + { + value = value * 0x8000 / (128); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + + /// + public PatternEvent MakeRandomSeedEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/SamplerModuleHandle.g.cs b/SunSharp/Modules/g/SamplerModuleHandle.g.cs index 1a9ba3b..cd7a0bb 100644 --- a/SunSharp/Modules/g/SamplerModuleHandle.g.cs +++ b/SunSharp/Modules/g/SamplerModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,29 +17,43 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + /// /// Original name: 2 'Sample interpolation' /// @@ -44,9 +61,16 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Sample interpolation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleInterpolation(SamplerInterpolation value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSampleInterpolationEvent(SamplerInterpolation value); + /// /// Original name: 3 'Envelope interpolation' /// @@ -54,45 +78,71 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Envelope interpolation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value); /// - /// Value range: 1-32 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeEnvelopeInterpolationEvent(SamplerEnvelopeInterpolation value); + + /// /// Original name: 4 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32 /// Original name: 4 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + + /// + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 5 'Rec threshold' /// int GetRecThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-10000 + /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name: 5 'Rec threshold' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-2048 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 10000) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRecThresholdEvent(int value); + + /// + /// Value range: displayed: 0 to 2048, real: 0 to 2048 /// Original name: 6 'Tick length (norm=128)' /// int GetTickLengthNorm128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-2048 + /// Value range: displayed: 0 to 2048, real: 0 to 2048 /// Original name: 6 'Tick length (norm=128)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetTickLengthNorm128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 2048) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeTickLengthNorm128Event(int value); + /// /// Original name: 7 'Record' /// @@ -100,9 +150,16 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Record' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRecord(SamplerRecordState value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRecordEvent(SamplerRecordState value); + /// /// Original name: 8 'Reverse' /// @@ -110,32 +167,53 @@ public partial interface ISamplerModuleHandle : ITypedModuleHandle /// /// Original name: 8 'Reverse' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetReverse(Toggle value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeReverseEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 9 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 9 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 10 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); } /// @@ -289,65 +367,138 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public SamplerInterpolation GetSampleInterpolation() => (SamplerInterpolation)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetSampleInterpolation(SamplerInterpolation value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSampleInterpolationEvent(SamplerInterpolation value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public SamplerEnvelopeInterpolation GetEnvelopeInterpolation() => (SamplerEnvelopeInterpolation)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetEnvelopeInterpolation(SamplerEnvelopeInterpolation value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeEnvelopeInterpolationEvent(SamplerEnvelopeInterpolation value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRecThreshold(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetRecThreshold(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakeRecThresholdEvent(int value) + { + value = value * 0x8000 / (10000); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetTickLengthNorm128(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetTickLengthNorm128(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeTickLengthNorm128Event(int value) + { + value = value * 0x8000 / (2048); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public SamplerRecordState GetRecord() => (SamplerRecordState)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetRecord(SamplerRecordState value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeRecordEvent(SamplerRecordState value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetReverse() => (Toggle)ModuleHandle.GetControllerValue(8, ValueScalingMode.Displayed); /// public void SetReverse(Toggle value) => ModuleHandle.SetControllerValue(8, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeReverseEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs b/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs index 52bb031..94ca438 100644 --- a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface ISoundToControlModuleHandle : ITypedModuleHandle { /// - /// Value range: 1-32768 + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 0 'Sample rate' /// int GetSampleRate(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32768 + /// Value range: displayed: 1 to 32768, real: 1 to 32768 /// Original name: 0 'Sample rate' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSampleRateEvent(int value); + /// /// Original name: 1 'Channels' /// @@ -32,9 +42,16 @@ public partial interface ISoundToControlModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(ChannelsInverted value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(ChannelsInverted value); + /// /// Original name: 2 'Absolute' /// @@ -42,33 +59,54 @@ public partial interface ISoundToControlModuleHandle : ITypedModuleHandle /// /// Original name: 2 'Absolute' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAbsolute(Toggle value); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAbsoluteEvent(Toggle value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 3 'Gain' /// int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 3 'Gain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeGainEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Smooth' /// int GetSmooth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Smooth' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSmooth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSmoothEvent(int value); + /// /// Original name: 5 'Mode' /// @@ -76,44 +114,70 @@ public partial interface ISoundToControlModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(SoundToControlMode value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(SoundToControlMode value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'OUT min' /// int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'OUT min' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMinEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 7 'OUT max' /// int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 7 'OUT max' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMaxEvent(int value); + + /// /// Original name: 8 'OUT controller' /// int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 /// Original name: 8 'OUT controller' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutControllerEvent(int value); } /// @@ -267,53 +331,113 @@ public void AssertCorrectHandleType() /// public void SetSampleRate(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeSampleRateEvent(int value) + { + value -= 1; + value = value * 0x8000 / (32767); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public ChannelsInverted GetChannels() => (ChannelsInverted)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetChannels(ChannelsInverted value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(ChannelsInverted value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetAbsolute() => (Toggle)ModuleHandle.GetControllerValue(2, ValueScalingMode.Displayed); /// public void SetAbsolute(Toggle value) => ModuleHandle.SetControllerValue(2, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeAbsoluteEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetGain(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetGain(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeGainEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetSmooth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetSmooth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeSmoothEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public SoundToControlMode GetMode() => (SoundToControlMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetMode(SoundToControlMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(SoundToControlMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(6, valueScalingMode); /// public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(6, value, valueScalingMode); + /// + public PatternEvent MakeOutMinEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeOutMaxEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + + /// + public PatternEvent MakeOutControllerEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs b/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs index bc24dbd..dea9434 100644 --- a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs +++ b/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,65 +17,98 @@ public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' /// int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 + /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name: 1 'Panning' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakePanningEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'Attack' /// int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'Attack' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAttackEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Release' /// int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 3 'Release' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeReleaseEvent(int value); + + /// /// Original name: 4 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-32 /// Original name: 4 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 5 'Mode' /// @@ -80,9 +116,16 @@ public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(SpectraVoiceMode value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(SpectraVoiceMode value); + /// /// Original name: 6 'Sustain' /// @@ -90,9 +133,16 @@ public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Sustain' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSustain(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSustainEvent(Toggle value); + /// /// Original name: 7 'Spectrum resolution' /// @@ -100,57 +150,84 @@ public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Spectrum resolution' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSpectrumResolution(SpectraVoiceResolution value); /// - /// Value range: 0-15 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSpectrumResolutionEvent(SpectraVoiceResolution value); + + /// /// Original name: 8 'Harmonic' /// int GetHarmonic(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-15 /// Original name: 8 'Harmonic' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHarmonic(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-22050 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeHarmonicEvent(int value); + + /// /// Original name: 9 'H.freq' /// int GetHFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-22050 /// Original name: 9 'H.freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeHFreqEvent(int value); + + /// /// Original name: 10 'H.volume' /// int GetHVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 /// Original name: 10 'H.volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeHVolumeEvent(int value); + + /// /// Original name: 11 'H.width' /// int GetHWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 /// Original name: 11 'H.width' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeHWidthEvent(int value); + /// /// Original name: 12 'H.type' /// @@ -158,8 +235,15 @@ public partial interface ISpectraVoiceModuleHandle : ITypedModuleHandle /// /// Original name: 12 'H.type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetHType(SpectraVoiceHarmonicType value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeHTypeEvent(SpectraVoiceHarmonicType value); } /// @@ -313,77 +397,160 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPanning(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetPanning(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakePanningEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAttack(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetAttack(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeAttackEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRelease(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetRelease(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeReleaseEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public SpectraVoiceMode GetMode() => (SpectraVoiceMode)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetMode(SpectraVoiceMode value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(SpectraVoiceMode value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetSustain() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetSustain(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSustainEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public SpectraVoiceResolution GetSpectrumResolution() => (SpectraVoiceResolution)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetSpectrumResolution(SpectraVoiceResolution value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSpectrumResolutionEvent(SpectraVoiceResolution value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetHarmonic(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetHarmonic(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeHarmonicEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(9, valueScalingMode); /// public void SetHFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(9, value, valueScalingMode); + /// + public PatternEvent MakeHFreqEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(10, valueScalingMode); /// public void SetHVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(10, value, valueScalingMode); + /// + public PatternEvent MakeHVolumeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetHWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(11, valueScalingMode); /// public void SetHWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(11, value, valueScalingMode); + /// + public PatternEvent MakeHWidthEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public SpectraVoiceHarmonicType GetHType() => (SpectraVoiceHarmonicType)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetHType(SpectraVoiceHarmonicType value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeHTypeEvent(SpectraVoiceHarmonicType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs b/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs index 1fabede..16a6709 100644 --- a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs +++ b/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -20,56 +23,89 @@ public partial interface IVelocityToControlModuleHandle : ITypedModuleHandle /// /// Original name: 0 'On NoteOFF' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOnNoteoff(VelocityToControlOnNoteOff value); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOnNoteoffEvent(VelocityToControlOnNoteOff value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 1 'OUT min' /// int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 1 'OUT min' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMinEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 2 'OUT max' /// int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 2 'OUT max' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutMaxEvent(int value); + + /// + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 3 'OUT offset' /// int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -16384-16384, real: 0-32768 + /// Value range: displayed: -16384 to 16384, real: 0 to 32768 /// Original name: 3 'OUT offset' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-16384 to 16384) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutOffsetEvent(int value); + + /// /// Original name: 4 'OUT controller' /// int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-255 /// Original name: 4 'OUT controller' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOutControllerEvent(int value); } /// @@ -223,29 +259,63 @@ public void AssertCorrectHandleType() /// public void SetOnNoteoff(VelocityToControlOnNoteOff value) => ModuleHandle.SetControllerValue(0, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeOnNoteoffEvent(VelocityToControlOnNoteOff value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetOutMin(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetOutMin(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeOutMinEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutMax(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetOutMax(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeOutMaxEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutOffset(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetOutOffset(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeOutOffsetEvent(int value) + { + value -= -16384; + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutController(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetOutController(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + + /// + public PatternEvent MakeOutControllerEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/VibratoModuleHandle.g.cs b/SunSharp/Modules/g/VibratoModuleHandle.g.cs index d75666d..31b32d3 100644 --- a/SunSharp/Modules/g/VibratoModuleHandle.g.cs +++ b/SunSharp/Modules/g/VibratoModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,41 +17,62 @@ public partial interface IVibratoModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Amplitude' /// int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Amplitude' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-2048 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeAmplitudeEvent(int value); + + /// + /// Value range: displayed: 1 to 2048, real: 1 to 2048 /// Original name: 2 'Freq' /// int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-2048 + /// Value range: displayed: 1 to 2048, real: 1 to 2048 /// Original name: 2 'Freq' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (1 to 2048) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFreqEvent(int value); + /// /// Original name: 3 'Channels' /// @@ -56,21 +80,35 @@ public partial interface IVibratoModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Set phase' /// int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Set phase' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeSetPhaseEvent(int value); + /// /// Original name: 5 'Frequency unit' /// @@ -78,9 +116,16 @@ public partial interface IVibratoModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Frequency unit' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFrequencyUnit(VibratoFrequencyUnit value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFrequencyUnitEvent(VibratoFrequencyUnit value); + /// /// Original name: 6 'Exponential amplitude' /// @@ -88,8 +133,15 @@ public partial interface IVibratoModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Exponential amplitude' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetExponentialAmplitude(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeExponentialAmplitudeEvent(Toggle value); } /// @@ -243,41 +295,88 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetAmplitude(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetAmplitude(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeAmplitudeEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFreq(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetFreq(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeFreqEvent(int value) + { + value -= 1; + value = value * 0x8000 / (2047); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetSetPhase(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetSetPhase(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeSetPhaseEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public VibratoFrequencyUnit GetFrequencyUnit() => (VibratoFrequencyUnit)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetFrequencyUnit(VibratoFrequencyUnit value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeFrequencyUnitEvent(VibratoFrequencyUnit value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetExponentialAmplitude() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetExponentialAmplitude(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeExponentialAmplitudeEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs b/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs index 3dc5348..fd5ba56 100644 --- a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs +++ b/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,65 +17,98 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Formant width' /// int GetFormantWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Formant width' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFormantWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeFormantWidthEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Intensity' /// int GetIntensity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 2 'Intensity' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetIntensity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-5 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeIntensityEvent(int value); + + /// /// Original name: 3 'Formants' /// int GetFormants(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-5 /// Original name: 3 'Formants' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetFormants(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeFormantsEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Vowel (a,e,i,o,u)' /// int GetVowelAEIOU(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 4 'Vowel (a,e,i,o,u)' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowelAEIOU(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVowelAEIOUEvent(int value); + /// /// Original name: 5 'Voice type' /// @@ -80,9 +116,16 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 5 'Voice type' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVoiceType(VocalFilterVoiceType value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVoiceTypeEvent(VocalFilterVoiceType value); + /// /// Original name: 6 'Channels' /// @@ -90,33 +133,54 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Channels' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetChannels(Channels value); /// - /// Value range: 0-1024 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeChannelsEvent(Channels value); + + /// + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 7 'Random frequency' /// int GetRandomFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-1024 + /// Value range: displayed: 0 to 1024, real: 0 to 1024 /// Original name: 7 'Random frequency' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 1024) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomFrequencyEvent(int value); + + /// + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Random seed' /// int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-32768 + /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 8 'Random seed' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeRandomSeedEvent(int value); + /// /// Original name: 9 'Vowel1' /// @@ -124,9 +188,16 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 9 'Vowel1' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowel1(VocalFilterVowel value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVowel1Event(VocalFilterVowel value); + /// /// Original name: 10 'Vowel2' /// @@ -134,9 +205,16 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 10 'Vowel2' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowel2(VocalFilterVowel value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVowel2Event(VocalFilterVowel value); + /// /// Original name: 11 'Vowel3' /// @@ -144,9 +222,16 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 11 'Vowel3' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowel3(VocalFilterVowel value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVowel3Event(VocalFilterVowel value); + /// /// Original name: 12 'Vowel4' /// @@ -154,9 +239,16 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 12 'Vowel4' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowel4(VocalFilterVowel value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVowel4Event(VocalFilterVowel value); + /// /// Original name: 13 'Vowel5' /// @@ -164,8 +256,15 @@ public partial interface IVocalFilterModuleHandle : ITypedModuleHandle /// /// Original name: 13 'Vowel5' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVowel5(VocalFilterVowel value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeVowel5Event(VocalFilterVowel value); } /// @@ -319,83 +418,173 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFormantWidth(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetFormantWidth(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeFormantWidthEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetIntensity(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetIntensity(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeIntensityEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetFormants(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); /// public void SetFormants(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeFormantsEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetVowelAEIOU(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(4, valueScalingMode); /// public void SetVowelAEIOU(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(4, value, valueScalingMode); + /// + public PatternEvent MakeVowelAEIOUEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public VocalFilterVoiceType GetVoiceType() => (VocalFilterVoiceType)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetVoiceType(VocalFilterVoiceType value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeVoiceTypeEvent(VocalFilterVoiceType value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Channels GetChannels() => (Channels)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetChannels(Channels value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeChannelsEvent(Channels value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetRandomFrequency(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(7, valueScalingMode); /// public void SetRandomFrequency(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(7, value, valueScalingMode); + /// + public PatternEvent MakeRandomFrequencyEvent(int value) + { + value = value * 0x8000 / (1024); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetRandomSeed(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(8, valueScalingMode); /// public void SetRandomSeed(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(8, value, valueScalingMode); + /// + public PatternEvent MakeRandomSeedEvent(int value) + { + value = value * 0x8000 / (32768); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 8, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public VocalFilterVowel GetVowel1() => (VocalFilterVowel)ModuleHandle.GetControllerValue(9, ValueScalingMode.Displayed); /// public void SetVowel1(VocalFilterVowel value) => ModuleHandle.SetControllerValue(9, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeVowel1Event(VocalFilterVowel value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public VocalFilterVowel GetVowel2() => (VocalFilterVowel)ModuleHandle.GetControllerValue(10, ValueScalingMode.Displayed); /// public void SetVowel2(VocalFilterVowel value) => ModuleHandle.SetControllerValue(10, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeVowel2Event(VocalFilterVowel value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 10, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public VocalFilterVowel GetVowel3() => (VocalFilterVowel)ModuleHandle.GetControllerValue(11, ValueScalingMode.Displayed); /// public void SetVowel3(VocalFilterVowel value) => ModuleHandle.SetControllerValue(11, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeVowel3Event(VocalFilterVowel value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 11, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public VocalFilterVowel GetVowel4() => (VocalFilterVowel)ModuleHandle.GetControllerValue(12, ValueScalingMode.Displayed); /// public void SetVowel4(VocalFilterVowel value) => ModuleHandle.SetControllerValue(12, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeVowel4Event(VocalFilterVowel value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 12, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public VocalFilterVowel GetVowel5() => (VocalFilterVowel)ModuleHandle.GetControllerValue(13, ValueScalingMode.Displayed); /// public void SetVowel5(VocalFilterVowel value) => ModuleHandle.SetControllerValue(13, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeVowel5Event(VocalFilterVowel value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 13, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs b/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs index 2e21ee2..b8bd2ed 100644 --- a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs +++ b/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,17 +17,24 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' /// int GetVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeVolumeEvent(int value); + /// /// Original name: 1 'Original speed' /// @@ -32,32 +42,51 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle /// /// Original name: 1 'Original speed' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOriginalSpeed(Toggle value); /// - /// Value range: -128-128 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeOriginalSpeedEvent(Toggle value); + + /// + /// Value range: displayed: -128 to 128, real: -128 to 128 /// Original name: 2 'Finetune' /// - int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetAudioFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: -128-128 + /// Value range: displayed: -128 to 128, real: -128 to 128 /// Original name: 2 'Finetune' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. + /// + void SetAudioFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (-128 to 128) to column range (0 to 0x8000). Out of range values are clamped. /// - void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + PatternEvent MakeAudioFineTuneEvent(int value); /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 3 'Transpose' /// - int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + int GetAudioTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: displayed: -128-128, real: 0-256 /// Original name: 3 'Transpose' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// - void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + void SetAudioTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeAudioTransposeEvent(int value); /// /// Original name: 4 'Interpolation' @@ -66,21 +95,33 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Interpolation' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInterpolation(Toggle value); /// - /// Value range: 1-4 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeInterpolationEvent(Toggle value); + + /// /// Original name: 5 'Polyphony' /// int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 1-4 /// Original name: 5 'Polyphony' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakePolyphonyEvent(int value); + /// /// Original name: 6 'Repeat' /// @@ -88,9 +129,16 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle /// /// Original name: 6 'Repeat' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetRepeat(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeRepeatEvent(Toggle value); + /// /// Original name: 7 'Ignore Note OFF' /// @@ -98,8 +146,15 @@ public partial interface IVorbisPlayerModuleHandle : ITypedModuleHandle /// /// Original name: 7 'Ignore Note OFF' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetIgnoreNoteOff(Toggle value); + + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeIgnoreNoteOffEvent(Toggle value); } /// @@ -253,23 +308,50 @@ public void AssertCorrectHandleType() /// public void SetVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetOriginalSpeed() => (Toggle)ModuleHandle.GetControllerValue(1, ValueScalingMode.Displayed); /// public void SetOriginalSpeed(Toggle value) => ModuleHandle.SetControllerValue(1, (int)value, ValueScalingMode.Displayed); - /// - public int GetFinetune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); + /// + public PatternEvent MakeOriginalSpeedEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } - /// - public void SetFinetune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public int GetAudioFineTune(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); - /// - public int GetTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + /// + public void SetAudioFineTune(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); - /// - public void SetTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + /// + public PatternEvent MakeAudioFineTuneEvent(int value) + { + value -= -128; + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + + /// + public int GetAudioTranspose(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(3, valueScalingMode); + + /// + public void SetAudioTranspose(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(3, value, valueScalingMode); + + /// + public PatternEvent MakeAudioTransposeEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp(value, 0, 0x8000)); + } /// public Toggle GetInterpolation() => (Toggle)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); @@ -277,23 +359,47 @@ public void AssertCorrectHandleType() /// public void SetInterpolation(Toggle value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeInterpolationEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public int GetPolyphony(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(5, valueScalingMode); /// public void SetPolyphony(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(5, value, valueScalingMode); + /// + public PatternEvent MakePolyphonyEvent(int value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetRepeat() => (Toggle)ModuleHandle.GetControllerValue(6, ValueScalingMode.Displayed); /// public void SetRepeat(Toggle value) => ModuleHandle.SetControllerValue(6, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeRepeatEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 6, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetIgnoreNoteOff() => (Toggle)ModuleHandle.GetControllerValue(7, ValueScalingMode.Displayed); /// public void SetIgnoreNoteOff(Toggle value) => ModuleHandle.SetControllerValue(7, (int)value, ValueScalingMode.Displayed); + + /// + public PatternEvent MakeIgnoreNoteOffEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } } } #endif diff --git a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs b/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs index 51f1bf9..9d98b9e 100644 --- a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs +++ b/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs @@ -5,6 +5,9 @@ #nullable enable #if !GENERATION + +using System; + namespace SunSharp.Modules { /// @@ -14,41 +17,62 @@ public partial interface IWaveShaperModuleHandle : ITypedModuleHandle { /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Input volume' /// int GetInputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 0 'Input volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetInputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeInputVolumeEvent(int value); + + /// + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Mix' /// int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-256 + /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 1 'Mix' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeMixEvent(int value); + + /// + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'Output volume' /// int GetOutputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// - /// Value range: 0-512 + /// Value range: displayed: 0 to 512, real: 0 to 512 /// Original name: 2 'Output volume' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetOutputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is mapped from displayed range (0 to 512) to column range (0 to 0x8000). Out of range values are clamped. + /// + PatternEvent MakeOutputVolumeEvent(int value); + /// /// Original name: 3 'Symmetric' /// @@ -56,9 +80,16 @@ public partial interface IWaveShaperModuleHandle : ITypedModuleHandle /// /// Original name: 3 'Symmetric' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetSymmetric(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeSymmetricEvent(Toggle value); + /// /// Original name: 4 'Mode' /// @@ -66,9 +97,16 @@ public partial interface IWaveShaperModuleHandle : ITypedModuleHandle /// /// Original name: 4 'Mode' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetMode(Quality value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeModeEvent(Quality value); + /// /// Original name: 5 'DC blocker' /// @@ -76,9 +114,16 @@ public partial interface IWaveShaperModuleHandle : ITypedModuleHandle /// /// Original name: 5 'DC blocker' + /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. /// void SetDcBlocker(Toggle value); + /// + /// This is a helper method to automatically handle turning target controller values into column values. + /// For this controller the input value is taken as is, only clamped to column value range. + /// + PatternEvent MakeDcBlockerEvent(Toggle value); + /// /// Maps input to output. ///
    @@ -247,36 +292,75 @@ public void AssertCorrectHandleType() /// public void SetInputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(0, value, valueScalingMode); + /// + public PatternEvent MakeInputVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 0, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetMix(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(1, valueScalingMode); /// public void SetMix(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(1, value, valueScalingMode); + /// + public PatternEvent MakeMixEvent(int value) + { + value = value * 0x8000 / (256); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 1, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public int GetOutputVolume(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.GetControllerValue(2, valueScalingMode); /// public void SetOutputVolume(int value, ValueScalingMode valueScalingMode = ValueScalingMode.Displayed) => ModuleHandle.SetControllerValue(2, value, valueScalingMode); + /// + public PatternEvent MakeOutputVolumeEvent(int value) + { + value = value * 0x8000 / (512); + return PatternEvent.ControllerEvent(ModuleHandle.Id, 2, (ushort)Math.Clamp(value, 0, 0x8000)); + } + /// public Toggle GetSymmetric() => (Toggle)ModuleHandle.GetControllerValue(3, ValueScalingMode.Displayed); /// public void SetSymmetric(Toggle value) => ModuleHandle.SetControllerValue(3, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeSymmetricEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 3, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Quality GetMode() => (Quality)ModuleHandle.GetControllerValue(4, ValueScalingMode.Displayed); /// public void SetMode(Quality value) => ModuleHandle.SetControllerValue(4, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeModeEvent(Quality value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 4, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// public Toggle GetDcBlocker() => (Toggle)ModuleHandle.GetControllerValue(5, ValueScalingMode.Displayed); /// public void SetDcBlocker(Toggle value) => ModuleHandle.SetControllerValue(5, (int)value, ValueScalingMode.Displayed); + /// + public PatternEvent MakeDcBlockerEvent(Toggle value) + { + return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); + } + /// ModuleHandle.ReadCurve(0, buffer); diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index f3a744f..1b7303a 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -13,7 +13,7 @@ https://github.com/Sotakebk/SunSharp.git git sunvox;music;wrapper - 2.0.0-alpha0 + 2.0.0-dev0 0.0.0.0 True True From 83693c8f173d656c25cea55521f3bc8947aafc5e Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sun, 1 Feb 2026 15:58:48 +0100 Subject: [PATCH 17/27] api cleaning --- SunSharp.Redistribution/LibraryLoader.cs | 26 +----- SunSharp/PatternHandle.cs | 84 +++-------------- SunSharp/Slot.cs | 17 +++- SunSharp/SlotLock.cs | 33 +++++-- SunSharp/SunVox.cs | 8 +- SunSharp/Synthesizer.cs | 111 ++++++++++++----------- SunSharp/Timeline.cs | 39 +++++--- 7 files changed, 139 insertions(+), 179 deletions(-) diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index c2538cb..57dec20 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -1,7 +1,6 @@ using System; using System.IO; using System.Runtime.InteropServices; -using SunSharp.Diagnostics; using SunSharp.Native; using SunSharp.Native.Loader; @@ -12,7 +11,7 @@ namespace SunSharp.Redistribution ///
    /// /// - /// the library once, then . + /// the library to use it through the preferred wrapper. /// After that, you may either use the returned instance, or construct a instance with it. /// /// @@ -28,9 +27,6 @@ public static class LibraryLoader private static readonly object Lock = new object(); private static NativeProxy? _proxy; - private static ISunVoxLib? _lib; - - public static bool IsLoaded => _proxy?.IsProxyLoaded ?? false; private static ILibraryHandler GetPlatformSpecificLibraryHandler() { @@ -77,7 +73,7 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() throw new PlatformNotSupportedException(errorMessage); } - public static void Load() + public static ISunVoxLibC Load() { lock (Lock) { @@ -88,19 +84,8 @@ public static void Load() } _proxy.Load(); - } - } - - public static ISunVoxLib GetLibraryInstance() - { - lock (Lock) - { - if (!IsLoaded || _proxy == null) - { - throw new InvalidOperationException("The library was not loaded yet."); - } - return _lib ??= new SunVoxLib(new SunVoxLibWithLogger(_proxy, new ConsoleLogger())); + return _proxy; } } @@ -108,11 +93,6 @@ public static void Unload() { lock (Lock) { - if (!IsLoaded) - { - throw new InvalidOperationException("The library was not loaded yet."); - } - _proxy?.Unload(); } } diff --git a/SunSharp/PatternHandle.cs b/SunSharp/PatternHandle.cs index ac58463..8c9992a 100644 --- a/SunSharp/PatternHandle.cs +++ b/SunSharp/PatternHandle.cs @@ -39,10 +39,10 @@ public interface IPatternHandle void SetData(PatternEvent[] data, int tracks, int lines); /// - void SetMuted(int id, bool mute); + void SetMuted(bool mute); /// - bool GetMuted(int id); + bool GetMuted(); /// void SetEvent(int track, int line, PatternEvent patternEvent); @@ -95,13 +95,7 @@ public bool GetExists() /// public void SetName(string name) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (_slot.AcquireLock()) - { - lib.SetPatternName(slotId, id, name); - } + _lib.SetPatternName(_slotId, Id, name); } /// @@ -113,13 +107,7 @@ public void SetName(string name) /// public void SetPosition(int x, int y) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - using (_slot.AcquireLock()) - { - lib.SetPatternPosition(slotId, id, x, y); - } + _lib.SetPatternPosition(_slotId, Id, x, y); } /// @@ -136,93 +124,49 @@ public void SetPosition(int x, int y) /// public void Resize(int? tracks = null, int? lines = null) { - var lib = _lib; - var slotId = _slotId; - var id = Id; - - using (_slot.AcquireLock()) - { - lib.SetPatternSize(slotId, id, tracks, lines); - } + _lib.SetPatternSize(_slotId, Id, tracks, lines); } /// public (PatternEvent[] data, int tracks, int lines)? GetData() { - var slotId = _slotId; - var id = Id; - var lib = _lib; - using (_slot.AcquireLock()) - { - return lib.GetPatternData(slotId, id); - } + return _lib.GetPatternData(_slotId, Id); } /// public void SetData(PatternEvent[] data, int tracks, int lines) { - var slotId = _slotId; - var id = Id; - var lib = _lib; - using (_slot.AcquireLock()) - { - lib.SetPatternData(slotId, id, data, tracks, lines); - } + _lib.SetPatternData(_slotId, Id, data, tracks, lines); } /// - public void SetMuted(int id, bool mute) + public void SetMuted(bool mute) { - var lib = _lib; - var slotId = Id; - using (_slot.AcquireLock()) - { - lib.SetPatternMuted(slotId, id, mute); - } + _lib.SetPatternMuted(_slotId, Id, mute); } /// - public bool GetMuted(int id) + public bool GetMuted() { - using (_slot.AcquireLock()) - { - return _lib.GetPatternMuted(Id, id); - } + return _lib.GetPatternMuted(_slotId, Id); } /// public void SetEvent(int track, int line, PatternEvent patternEvent) { - var lib = _lib; - var slotId = Id; - var id = Id; - - using (_slot.AcquireLock()) - { - lib.SetPatternEvent(slotId, id, track, line, patternEvent); - } + _lib.SetPatternEvent(_slotId, Id, track, line, patternEvent); } /// public void SetEvent(int track, int line, int nn, int vv, int mm, int ccee, int xxyy) { - var lib = _lib; - var slotId = Id; - var id = Id; - - using (_slot.AcquireLock()) - { - lib.SetPatternEvent(slotId, id, track, line, nn, vv, mm, ccee, xxyy); - } + _lib.SetPatternEvent(_slotId, Id, track, line, nn, vv, mm, ccee, xxyy); } /// public int GetEventValue(int track, int line, Column column) { - var lib = _lib; - var slotId = Id; - var id = Id; - return lib.GetPatternEventValue(slotId, id, track, line, column); + return _lib.GetPatternEventValue(_slotId, Id, track, line, column); } } } diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index 2f5e542..5ab2c05 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -1,4 +1,5 @@ using System; +using SunSharp.Modules; using SunSharp.Native; namespace SunSharp @@ -166,6 +167,11 @@ public sealed class Slot : ISlot ///
    public int Id { get; } + /// + /// The number of times this slot has been opened. + /// + internal uint OpenCount { get; private set; } + /// /// Virtual, 16-track pattern for sending events to the engine. /// @@ -239,7 +245,11 @@ internal Slot(int id, object slotManagementLock, SunVox sunVox) ///
    public IDisposable AcquireLock() { - return new SlotLock(SunVox, Id); + lock (_slotManagementLock) + { + return new SlotLock(this, OpenCount); + } + } #endregion locks @@ -261,11 +271,8 @@ public void Open() throw new SlotAlreadyOpenException(Id); } Library.OpenSlot(Id); + OpenCount = unchecked(OpenCount + 1); IsOpen = true; - using (AcquireLock()) - { - VirtualPattern.ResetEventTiming(); - } } } diff --git a/SunSharp/SlotLock.cs b/SunSharp/SlotLock.cs index edbb5f8..cf4a4b0 100644 --- a/SunSharp/SlotLock.cs +++ b/SunSharp/SlotLock.cs @@ -2,22 +2,25 @@ namespace SunSharp { - public sealed class SlotLock : IDisposable + internal sealed class SlotLock : IDisposable { - private readonly SunVox _instance; - private readonly int _slotId; + private readonly Slot _slot; + private readonly uint _openCount; private bool _disposed; - public SlotLock(SunVox sunVox, int slotId) + /// + /// This object should only be created under a lock on SlotManagementLock. + /// + internal SlotLock(Slot slot, uint openCount) { - _instance = sunVox; - _slotId = slotId; - sunVox.Library.LockSlot(slotId); + _slot = slot; + _openCount = openCount; + slot.Library.LockSlot(slot.Id); } private void ReleaseUnmanagedResources() { - _instance.Library.UnlockSlot(_slotId); + _slot.Library.UnlockSlot(_slot.Id); } private void Dispose(bool disposing) @@ -27,7 +30,19 @@ private void Dispose(bool disposing) return; } - ReleaseUnmanagedResources(); + lock (_slot.SunVox.Slots.SlotManagementLock) + { + if (_slot.SunVox.Deinitialized) + { + _disposed = true; + return; + } + + if (_slot.OpenCount == _openCount) + { + ReleaseUnmanagedResources(); + } + } if (disposing) { diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs index fa8ccfd..cf9525c 100644 --- a/SunSharp/SunVox.cs +++ b/SunSharp/SunVox.cs @@ -113,6 +113,7 @@ public sealed class SunVox : ISunVox public SunVox(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #else + public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #endif { @@ -152,6 +153,7 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, public SunVox(ISunVoxLibC library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) #else + public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) #endif @@ -226,11 +228,11 @@ private static SunVoxInitOptions ConstructInitFlags(SunVoxInitOptions initial, b #region disposable - private bool _deinitialized; + internal bool Deinitialized { get; private set; } private void Dispose(bool disposing) { - if (!_deinitialized) + if (!Deinitialized) { if (disposing) { @@ -239,7 +241,7 @@ private void Dispose(bool disposing) } Library.Deinitialize(); - _deinitialized = true; + Deinitialized = true; } } diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index 4f458e8..40a867e 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -20,6 +20,9 @@ public interface ISynthesizer : IEnumerable /// ModuleFlags GetModuleFlags(int moduleId); + /// + ISynthModuleHandle GetModule(int moduleId); + /// bool TryGetModule(int moduleId, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle); @@ -64,7 +67,7 @@ public class Synthesizer : ISynthesizer, IEnumerable #else private readonly ISunVoxLib _lib; #endif - private readonly int _id; + private readonly int _slotId; /// /// Gets the slot this synthesizer belongs to. @@ -77,33 +80,49 @@ internal Synthesizer(Slot slot) { Slot = slot; _lib = slot.SunVox.Library; - _id = slot.Id; + _slotId = slot.Id; } /// public int GetUpperModuleCount() { - return _lib.GetUpperModuleCount(_id); + return _lib.GetUpperModuleCount(_slotId); } /// public bool GetModuleExists(int moduleId) { - return _lib.GetModuleExists(_id, moduleId); + return _lib.GetModuleExists(_slotId, moduleId); } /// public ModuleFlags GetModuleFlags(int moduleId) { - return _lib.GetModuleFlags(_id, moduleId); + return _lib.GetModuleFlags(_slotId, moduleId); } /// - /// Tries to get a module by ID. + /// Returns a handle to the module with the specified ID. + /// The underlying module may not exist. /// + public SynthModuleHandle GetModule(int moduleId) + { + return new SynthModuleHandle(Slot, moduleId); + } + + /// + ISynthModuleHandle ISynthesizer.GetModule(int moduleId) + { + return GetModule(moduleId); + } + + /// + /// Returns a handle to the module with the specified ID, if it exists. + /// + /// public bool TryGetModule(int moduleId, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { - if (_lib.GetModuleExists(_id, moduleId)) + if (_lib.GetModuleExists(_slotId, moduleId)) { moduleHandle = new SynthModuleHandle(Slot, moduleId); return true; @@ -113,12 +132,10 @@ public bool TryGetModule(int moduleId, [NotNullWhen(true)] out SynthModuleHandle return false; } - /// - /// Tries to get a module by name. - /// + /// public bool TryGetModule(string name, [NotNullWhen(true)] out SynthModuleHandle? moduleHandle) { - var moduleId = _lib.FindModule(_id, name); + var moduleId = _lib.FindModule(_slotId, name); if (moduleId != null) { moduleHandle = new SynthModuleHandle(Slot, moduleId.Value); @@ -142,7 +159,7 @@ bool ISynthesizer.TryGetModule(int moduleId, [NotNullWhen(true)] out ISynthModul return false; } - /// + /// bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out ISynthModuleHandle? moduleHandle) { if (TryGetModule(name, out var foundModuleHandle)) @@ -158,43 +175,42 @@ bool ISynthesizer.TryGetModule(string name, [NotNullWhen(true)] out ISynthModule /// public SynthModuleHandle CreateModule(SynthModuleType type, string name, int x = 0, int y = 0, int z = 0) { - using (Slot.AcquireLock()) + bool lockAcquired = false; + try { - var moduleId = _lib.CreateModule(_id, type, name, x, y, z); + _lib.LockSlot(_slotId); + lockAcquired = true; + + var moduleId = _lib.CreateModule(_slotId, type, name, x, y, z); return new SynthModuleHandle(Slot, moduleId); } + finally + { + if (lockAcquired) + { + _lib.UnlockSlot(_slotId); + } + } } - /// + /// ISynthModuleHandle ISynthesizer.CreateModule(SynthModuleType type, string name, int x, int y, int z) { return CreateModule(type, name, x, y, z); } - /// - /// Load a module or sample from memory. Supported file formats: sunsynth, xi, wav, aiff. - /// /// public SynthModuleHandle LoadModule(byte[] data, int x = 0, int y = 0, int z = 0) { - using (Slot.AcquireLock()) - { - var moduleId = _lib.LoadModule(_id, data, x, y, z); - return new SynthModuleHandle(Slot, moduleId); - } + var moduleId = _lib.LoadModule(_slotId, data, x, y, z); + return new SynthModuleHandle(Slot, moduleId); } - /// - /// Load a module or sample from file. Supported file formats: sunsynth, xi, wav, aiff. - /// /// public SynthModuleHandle LoadModule(string path, int x = 0, int y = 0, int z = 0) { - using (Slot.AcquireLock()) - { - var moduleId = _lib.LoadModule(_id, path, x, y, z); - return new SynthModuleHandle(Slot, moduleId); - } + var moduleId = _lib.LoadModule(_slotId, path, x, y, z); + return new SynthModuleHandle(Slot, moduleId); } /// @@ -212,21 +228,16 @@ ISynthModuleHandle ISynthesizer.LoadModule(string path, int x, int y, int z) /// public void RemoveModule(int moduleId) { - using (Slot.AcquireLock()) - { - _lib.RemoveModule(_id, moduleId); - } + _lib.RemoveModule(_slotId, moduleId); } - /// - /// Removes a module from the synthesizer. - /// + /// public void RemoveModule(SynthModuleHandle moduleHandle) { RemoveModule(moduleHandle.Id); } - /// + /// void ISynthesizer.RemoveModule(ISynthModuleHandle moduleHandle) { RemoveModule(moduleHandle.Id); @@ -235,21 +246,16 @@ void ISynthesizer.RemoveModule(ISynthModuleHandle moduleHandle) /// public void ConnectModule(int sourceId, int destinationId) { - using (Slot.AcquireLock()) - { - _lib.ConnectModules(_id, sourceId, destinationId); - } + _lib.ConnectModules(_slotId, sourceId, destinationId); } - /// - /// Connects two modules. - /// + /// public void ConnectModule(SynthModuleHandle source, SynthModuleHandle destination) { ConnectModule(source.Id, destination.Id); } - /// + /// void ISynthesizer.ConnectModule(ISynthModuleHandle source, ISynthModuleHandle destination) { ConnectModule(source.Id, destination.Id); @@ -258,21 +264,16 @@ void ISynthesizer.ConnectModule(ISynthModuleHandle source, ISynthModuleHandle de /// public void DisconnectModule(int sourceId, int destinationId) { - using (Slot.AcquireLock()) - { - _lib.DisconnectModules(_id, sourceId, destinationId); - } + _lib.DisconnectModules(_slotId, sourceId, destinationId); } - /// - /// Disconnects two modules. - /// + /// public void DisconnectModule(SynthModuleHandle source, SynthModuleHandle destination) { DisconnectModule(source.Id, destination.Id); } - /// + /// void ISynthesizer.DisconnectModule(ISynthModuleHandle source, ISynthModuleHandle destination) { DisconnectModule(source.Id, destination.Id); diff --git a/SunSharp/Timeline.cs b/SunSharp/Timeline.cs index cd16e09..8fae8b7 100644 --- a/SunSharp/Timeline.cs +++ b/SunSharp/Timeline.cs @@ -17,17 +17,19 @@ public interface ITimeline : IEnumerable /// bool GetPatternExists(int patternId); + IPatternHandle GetPattern(int patternId); + /// bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern); /// - bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? pattern); + bool TryGetPattern(int patternId, [NotNullWhen(true)] out IPatternHandle? pattern); /// IPatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null); /// - int ClonePattern(int id, int x, int y); + int ClonePattern(int patternId, int x, int y); /// IPatternHandle ClonePattern(IPatternHandle original, int x, int y); @@ -72,6 +74,21 @@ public bool GetPatternExists(int patternId) return _lib.GetPatternExists(_slotId, patternId); } + /// + /// Returns a handle to a pattern by ID. + /// The underlying pattern may not exist. + /// + public PatternHandle GetPattern(int patternId) + { + return new PatternHandle(this, patternId); + } + + /// + IPatternHandle ITimeline.GetPattern(int patternId) + { + return GetPattern(patternId); + } + /// /// Tries to get a pattern by name. /// @@ -120,9 +137,9 @@ public bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? p } } - public bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? pattern) + public bool TryGetPattern(int patternId, [NotNullWhen(true)] out IPatternHandle? pattern) { - if (TryGetPattern(id, out PatternHandle? p)) + if (TryGetPattern(patternId, out PatternHandle? p)) { pattern = p; return true; @@ -137,11 +154,8 @@ public bool TryGetPattern(int id, [NotNullWhen(true)] out IPatternHandle? patter /// public PatternHandle CreatePattern(int lines, int tracks, int x, int y, int iconSeed = 0, string? name = null) { - using (Slot.AcquireLock()) - { - var id = _lib.CreatePattern(_slotId, x, y, tracks, lines, iconSeed, name); - return new PatternHandle(this, id); - } + var id = _lib.CreatePattern(_slotId, x, y, tracks, lines, iconSeed, name); + return new PatternHandle(this, id); } IPatternHandle ITimeline.CreatePattern(int lines, int tracks, int x, int y, int iconSeed, string? name) @@ -150,12 +164,9 @@ IPatternHandle ITimeline.CreatePattern(int lines, int tracks, int x, int y, int } /// - public int ClonePattern(int id, int x, int y) + public int ClonePattern(int patternId, int x, int y) { - using (Slot.AcquireLock()) - { - return _lib.ClonePattern(_slotId, id, x, y); - } + return _lib.ClonePattern(_slotId, patternId, x, y); } /// From b2f68be3140b48e06336e7f844ee3aaa56a6be9a Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Sun, 1 Feb 2026 18:18:51 +0100 Subject: [PATCH 18/27] update redistribution package --- .../Generators/OwnData/ModuleDataGenerator.cs | 12 ++++--- Examples/Program.cs | 23 ++++++++----- .../BaseIntegrationTests.cs | 20 +++++------ .../SunVoxLibTests/NoteTests.cs | 9 +++-- .../SunVoxLibTests/OtherTests.cs | 3 +- SunSharp.Redistribution/LibraryLoader.cs | 31 ++++++++++++++---- .../SunSharp.Redistribution.csproj | 21 ++++++------ .../runtimes/linux-arm/native/sunvox.so | Bin 0 -> 934704 bytes .../runtimes/linux-arm64/native/sunvox.so | Bin 814216 -> 1126672 bytes .../native/sunvox.so | Bin .../runtimes/macos-arm64/native/sunvox.dylib | Bin 767225 -> 0 bytes .../runtimes/macos-x86-64/native/sunvox.dylib | Bin 859976 -> 0 bytes .../runtimes/osx-arm64/native/sunvox.dylib | Bin 0 -> 1011184 bytes .../runtimes/osx-x64/native/sunvox.dylib | Bin 0 -> 1060928 bytes .../{win-x86-64 => win-x86}/native/sunvox.dll | Bin SunSharp/PatternHandle.cs | 2 -- SunSharp/SunSharp.csproj | 10 ++++-- 17 files changed, 81 insertions(+), 50 deletions(-) create mode 100644 SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so rename SunSharp.Redistribution/runtimes/{linux-x86-64 => linux-x64}/native/sunvox.so (100%) delete mode 100644 SunSharp.Redistribution/runtimes/macos-arm64/native/sunvox.dylib delete mode 100644 SunSharp.Redistribution/runtimes/macos-x86-64/native/sunvox.dylib create mode 100644 SunSharp.Redistribution/runtimes/osx-arm64/native/sunvox.dylib create mode 100644 SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib rename SunSharp.Redistribution/runtimes/{win-x86-64 => win-x86}/native/sunvox.dll (100%) diff --git a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs index be79c87..6617f72 100644 --- a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs +++ b/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -2,6 +2,7 @@ using System.Text.RegularExpressions; using CodeGeneration.Logic; using SunSharp; +using SunSharp.Native; using SunSharp.Redistribution; namespace CodeGeneration.Generators.OwnData; @@ -48,17 +49,20 @@ private static KnownModuleData ReadModuleDataFromSunVox() bool loaded = false; try { - LibraryLoader.Load(); + var instance = LibraryLoader.Load(); loaded = true; - - var instance = LibraryLoader.GetLibraryInstance(); + var thinWrapper = new SunVoxLib(instance); +#if RELEASE using var sunVox = new SunVox(instance, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); +#else + using var sunVox = new SunVox(thinWrapper, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); +#endif var slot = sunVox.Slots[0]; slot.Open(); foreach (var module in KnownModuleTypes.ModuleTypes.Where(m => m.Index > 0)) { - instance.CreateModule(0, module.InternalName, module.InternalName); + thinWrapper.CreateModule(0, module.InternalName, module.InternalName); } var modules = CreateModuleDescriptions(slot); diff --git a/Examples/Program.cs b/Examples/Program.cs index bdf8a07..653d2ce 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -1,22 +1,19 @@ -#if !GENERATION +#if RELEASE using System; using System.Threading; using SunSharp; +using SunSharp.Diagnostics; +using SunSharp.Native; using SunSharp.Redistribution; -#endif - namespace Examples; internal sealed class Program { private static void Main() { -#if !GENERATION - LibraryLoader.Load(); - var libraryInstance = LibraryLoader.GetLibraryInstance(); - + var libraryInstance = LibraryLoader.Load(); using var sunVox = new SunVox(libraryInstance, noDebugOutput: false); if (!sunVox.Slots.TryOpenNewSlot(out var slot)) @@ -42,6 +39,16 @@ private static void Main() Thread.Sleep(TimeSpan.FromSeconds(1)); slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); -#endif } } +#else + +namespace Examples; + +internal sealed class Program +{ + private static void Main() + { + } +} +#endif \ No newline at end of file diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTests.cs index 3edbae8..db7c494 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTests.cs @@ -6,18 +6,18 @@ namespace SunSharp.IntegrationTests; public abstract class BaseIntegrationTests { - private ISunVoxLib? _lib; + public ISunVoxLibC? _libc; + public SunVoxLib Lib { get; protected set; } - protected ISunVoxLib GetLoadedLibrary() + protected ISunVoxLibC GetLoadedLibrary() { - return _lib ?? throw new InvalidOperationException(); + return _libc ?? throw new InvalidOperationException(); } [OneTimeSetUp] protected virtual void OneTimeSetUp() { - LibraryLoader.Load(); - _lib = LibraryLoader.GetLibraryInstance(); + _libc = LibraryLoader.Load(); } [OneTimeTearDown] @@ -31,8 +31,8 @@ protected virtual void SetUp() { try { - _lib = LibraryLoader.GetLibraryInstance(); - _lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + Lib = new SunVoxLib(_libc!); + Lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); } catch (Exception e) { @@ -46,13 +46,13 @@ protected virtual void TearDown() { try { - var log = _lib?.GetLog(0x10000); + var log = Lib.GetLog(0x10000); TestContext.Out.WriteLine(log); } finally { - _lib?.Deinitialize(); - _lib = null; + Lib.Deinitialize(); + _libc = null; } } diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs index 26d11b7..a5387d8 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs @@ -10,12 +10,11 @@ internal class NoteTests : BaseIntegrationTests public void AllNotes_ShouldBeReadAsExpected() { const int slotId = 0; - var lib = GetLoadedLibrary(); - lib.OpenSlot(slotId); - lib.Load(slotId, TestFilePath); - lib.LockSlot(slotId); + Lib.OpenSlot(slotId); + Lib.Load(slotId, TestFilePath); + Lib.LockSlot(slotId); - var result = lib.GetPatternData(slotId, 0); + var result = Lib.GetPatternData(slotId, 0); result.Should().NotBeNull(); var (data, tracks, lines) = result.Value; diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs index f37c0d7..128c795 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs @@ -9,8 +9,7 @@ protected override void SetUp() [Test] public void Initialize_ShouldReturnExpectedVersion() { - var lib = GetLoadedLibrary(); - var version = lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + var version = Lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); version.Major.Should().Be(2); version.Minor.Should().Be(1); diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/SunSharp.Redistribution/LibraryLoader.cs index 57dec20..0d6adb8 100644 --- a/SunSharp.Redistribution/LibraryLoader.cs +++ b/SunSharp.Redistribution/LibraryLoader.cs @@ -37,11 +37,16 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/win-x64/native/sunvox.dll"), - Architecture.X86 => Path.Combine(Environment.CurrentDirectory, "runtimes/win-x86-64/native/sunvox.dll"), + Architecture.X64 => Path.Combine(AppContext.BaseDirectory, "runtimes/win-x64/native/sunvox.dll"), + Architecture.X86 => Path.Combine(AppContext.BaseDirectory, "runtimes/win-x86/native/sunvox.dll"), _ => throw new PlatformNotSupportedException(errorMessage) }; + if(!File.Exists(path)) + { + throw new DllNotFoundException($"The SunVox library was not found at the expected location: {path}"); + } + return new WindowsLibraryHandler(path); } @@ -49,12 +54,18 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-x86-64/native/sunvox.so"), - Architecture.X86 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-x86/native/sunvox.so"), - Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, "runtimes/linux-arm64/native/sunvox.so"), + Architecture.X64 => Path.Combine(AppContext.BaseDirectory, "runtimes/linux-x64/native/sunvox.so"), + Architecture.X86 => Path.Combine(AppContext.BaseDirectory, "runtimes/linux-x86/native/sunvox.so"), + Architecture.Arm => Path.Combine(AppContext.BaseDirectory, "runtimes/linux-arm/native/sunvox.so"), + Architecture.Arm64 => Path.Combine(AppContext.BaseDirectory, "runtimes/linux-arm64/native/sunvox.so"), _ => throw new PlatformNotSupportedException(errorMessage) }; + if (!File.Exists(path)) + { + throw new DllNotFoundException($"The SunVox library was not found at the expected location: {path}"); + } + return new UnixLibraryHandler(path); } @@ -62,17 +73,23 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() { var path = RuntimeInformation.ProcessArchitecture switch { - Architecture.X64 => Path.Combine(Environment.CurrentDirectory, "runtimes/macos-x86-64/native/sunvox.so"), - Architecture.Arm64 => Path.Combine(Environment.CurrentDirectory, "runtimes/macos-arm64/native/sunvox.so"), + Architecture.X64 => Path.Combine(AppContext.BaseDirectory, "runtimes/osx-x64/native/sunvox.dylib"), + Architecture.Arm64 => Path.Combine(AppContext.BaseDirectory, "runtimes/osx-arm64/native/sunvox.dylib"), _ => throw new PlatformNotSupportedException(errorMessage) }; + if (!File.Exists(path)) + { + throw new DllNotFoundException($"The SunVox library was not found at the expected location: {path}"); + } + return new UnixLibraryHandler(path); } throw new PlatformNotSupportedException(errorMessage); } + /// Thrown when the library fails to load. public static ISunVoxLibC Load() { lock (Lock) diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/SunSharp.Redistribution/SunSharp.Redistribution.csproj index 80d0ba5..b3e04d9 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -6,7 +6,7 @@ True Sotakebk.SunSharp.Redistribution SunSharp.Redistribution - 2.0.0-alpha0 + 2.0.0-dev0 0.0.0.0 Sotakebk SunSharp.Redistribution @@ -39,15 +39,6 @@ - - - Always - - - Always - - - True @@ -61,6 +52,16 @@ \ True + + + + + + + + + + diff --git a/SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so b/SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so new file mode 100644 index 0000000000000000000000000000000000000000..b5a5fa4b4f71301ae7182e5abffdd2fce57d1631 GIT binary patch literal 934704 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 z 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%0D}o~UkU%bjVIZs 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≪QZ>Z1WQi<%dG|$Vu)nX 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 z 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

    (A8jYE4bCSX48zE`mc?16WRf%;(nnhJf2ebWrt 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 z%0D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%0DD|cr6N5M?{ zWAV%&QMt?}GnGuSP_4`{*dVj3!Yp&*woRr~uT$oo5s%EoFMgR3ze6%h*P=4_w{e+O zd#Ra8d-%*#+aPmj^-QMgVnHVBY;h*TaAl@h&$Y~lE%liZWj8aOiFY#bK@T#&89&K9 zBh;4}ebAqIe*9hLO3R1LLgZ6sqSKem5`nqQt;OG&SK9w&=45VVw(1^a@*Y50Z#uDA z&r<2LcH~&I(!X7wR_PoOHd>vtLScImV-fjme)XXR;y!Xmdh9^%giGuD|b9Ei^Zid>))G_EPm6f ztm=o?vZAHyv+^pNvvx6USx<2Hvqr}|vvhTOvbL*VWMTIQv*JD9XGz{2%hIHp%DU?J zCCj_@XIA{-V%A6NzgbsGHnJW~?Pkdf9%mf{VesPrQRADZ8Sr@=Z20H)+<2c;0(gh} zqWGF0Qg{a@1-!40D!xBh3txOjAK%?%g0~s4#B0pi;ZGksX z5?R6ii>JT8fiFtm#h=qS!tbo32s5o%f@UNgftsJ0;5y7sV9VwqI4BAdP@hE!O1V;m zk23Ov{UK$-46Ge?- z;tTOpL}scpMB0UX;{BHwh_tmuL>7D*anPxXs3d-sXubU(k+r{`SXA0X>IhMOe*+F zOjZ9$RG*$Fc7P?~rpRC7M&BCoe$WQeVUk*<7^$B_iX>hlOLC-FB$=O9AyMtCld5pqq}?xiBuPgj zlEf2J(x!wZsr;f1iE7K9Wbfllig@Bia^dqLvEhA5E#mzfw}>R{Izrmf$RYJ-o*|_@$|s?>3P_2{mq^_)C8U+wa?*9q1wMtS!*Nzx za1f&|95AL2M^qTWcrR1

    nhP7k^5 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 literal 0 HcmV?d00001 diff --git a/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so b/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so index 6ab3698f5484af90151d3db5cc3ed6afe52c456f..0e001b907fc947794d849aa6621db87c6b561777 100644 GIT binary patch literal 1126672 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�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%0Ao!MhsXceX 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 z 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 z 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�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%0AcWGC8WX%MBL2$aiAeFLj0z(oy%)c3x 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%0AAKMGF^|f&dW7muR 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 literal 814216 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�>Y(S@z+Z3v@P2&nrIsgy+{zA~v!sJB`uG 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Ð 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

    TNluy=W*t()a)&4^J7_%XQt!%6> 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 z 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࿮rL%<`}WRt zzEJzLwgvt3;!XDV65Ehp3f-t&!ufi0E}bU+ZNz%t;C}y#`t8sI-3CbHS|Zb0hD@Uk ze8gU|;fB(m)>}rBK0nCMV=v4;BI{5}tgB(frN|-ht-FzTWV^`G&B)MAwRedO9hm5L zLniX4&UbgHUzTbA4RmUmAt|kq+S0`_9Hqtp<&V=6~Ct=4xNrAXuenv zw+Cs~FR`6fSR1aF`k`MtnHy=)8JWAHdqMscFZ(^APs_z{W=}nV&A~$ zf0L-mTCXhU3}910=9jDulJ7-$12?p(d`arYk(4hqg8p<4GPqLCO@3-^p!UnR!=*q~! zHdfMvF8-MGYVs-O5N%X#z9?wtqtvHRM(=N?k{2UmLfK!FJqo1Rt$b z&-nEFp)GAZn>>rs%|drMSHKpRvmhFu@5fm$rEJ*;yN5O)-D-Kp82m4lMg2C~xw5(1z3u5O-j?)MZ)^Ht z@8R@SYMiwWpGf@AthuVex*vPeSk407Mf=58312nq?W)zvd6xkfuoQn-__Ag%^;rj& zr~B~N2zUeO8AhwD<=Q+?wJLD~n7_*6vUN4!qPAX!*2b;8Bd_T!#K$)S9c~MIXcfr}5?E@NXNO?1XyV6+W=dogV|>Qie1eU(m;(aAV$GA0HL z(ALSG9qEq6Q5%nVkEAbzk4#pF_$<(%1+S(0e}RpRjDhGR_k0E}8S&8=YV!ey=`*a# zn)S>J(dV`ye>>{SqI}M{r7qEzN&S+yo_tjr?)9(jL_gg__rF^1

    K62Ey}Xx8%In+G-W~MmjXu56_l7sT zA?Q<``?mFN3Hn-TLSIi;mri8v>1x$!gH9CCz3H`_#%av9mhPanr>iZXdR%sH>fzM3 zl@p)jL{V0Q?oC(fjVtkQ0J^@dJzIm{Zs}?Bgz3rI;ZavxDEutMWINwe%sCj)lEG!z zrtTERDeq6{&x|8S#8c&DGA{_kW2ir2eg>R4a*de9R&yufelQ9c0=}1it6kla!cy#e zq+NpR3fcW*Ok8*`0zq8J&|dTx=7vJoIMuqGJ&_des(RCm&BU9{6#CZ5EVgK9g;EdQ zie!mg9lk}fxqXW=J2B(>FWc1D($OA0mgR{X;fnsDyZ{}@z7JZ^=dwdtcutw+X2)>} zq;_Yc7p><0&D>c3&|t86LY93YtQ){�j(`JDSCuGaE2B3Iy^PCYikCBF0alJ^)v` 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

    n;(D2 z_}{$K6rtQ+zfe=86PQ9vZ@WKe0;9JO49S3u%`?~_;EJ*=+9_Cw8Bq+ty{lq7q;d2pFPvu z!Fk(+{wEn4{#r->`^olL{~2%Fj{J@PobcCn`uzb4vw!isGeP)K;I%&;8^Tlm0)s_S z0ue>2s8N)T9z{7?pJ=XiufzEpFproRrrlF;yXJBMvW?^Mx=iuVzbD*;7EZKEj1+(57~vq z6Dg@_=^2?>**Up+`L{OKSC^N*FMOSy`84%m@|~ctsJNuGtUP>#Rb5kCSO3kc@v)KT zPlq1&_x3!vcem5f*woz8+ScCD+11_C+twn8whn(^Z%=nuXGeQmYfJddwqfVpdk=bg`yUTIeLgZa z{_4%U$q!SXW@f)Gd|z5#UEkP(et_mczb&-Kxc+eLT1;>%BeQUgNwMB54%a%;9o2wa zSk&eAL$yAVj*G<0??n?e3M}KP>@jb)E|+ucWt^`Hipp*jX1Gw2Z`EI6z5#BSC_iGz zuWOnY^UVnexccQvNy#Bo?C03nlqU=qPRtd@ym{niNorEgxj~H@v_I2e1Hfr>%(E!8 zHiqqP+ViNY4fG)MK8J7gA-A*g1cT0f%J+YqW;qWY8A(3uMT0JJNPf>5^UL`Bc=u4{ zPCQ$DT=D@r-Qy>B9DkSU@iDJb@puals(9z6mK$hy7#Vq3__eN{qc*)H(qrATjJ@>0 zVpb?F%bNdYgHu7qkfZe&7&Z{OzaN#jqAN|xB?C#b_Fk)ek4AgZkJ%tFXf9~av5GPT z8!MiQGTp0=EADw!hI){4M>;4dLrQ0I>KkP+0yKumrEye*yPs+`riF|6jm!;dMc^3VR;KDF)m# z@Wms@X^2e-TNsEag?I+RMuf2(2$=p?zD~HmZ{tr2h50uArXKia8-LUGd~M@z+Mc&< z{7rxT!@s#8j)Zrm(PeOFafETAOr!wW3weej#9xs!f6NfY0yQJOJBuzHH4~}a9t*<- z*ZA!jr^onG?)cSK7q;E5&xEyxa5tcZRK1H4#L?4?!M5fwQWXk&-U(|h;o8p%+nQn8 zuzRVuYn5Rz;yiNgSI?3N{#Va`rG?ao@-0v|(*3V|wNN@Zfye=jA#pGD2ik4<9RDL9 zBebrzYyB~&VQuQKG5(eQckOTawtN0pK5w{lZQB;x@=a20*ZwP?A?$hkoBubJU^VgH z)UGtmwEsJQ$uN?}3gtUZl%z&!H|Tzk@q30;5JPy8xe#HDJ)GTU+UInV|ID8pA_(g! zVOv3*B=rLI4I0T`^Y^>0BW$}p!~PggIDf7*A7~}v{QaGKF1X{Wz}o*NPb?$8m+~N0 z2emHr-QwXK6~L>I49D|^qa47v5(B9gsCi*8+t=vt74(K<2qNpq2$X&X+8O^|UrIPb ztZjm1P^$qwWi1$>)q#_! zhv-AQ&k%-Wjp15q3PZ8xFbr!6L$KB`{Avr`TloJm;50eGfU64(wz|PUs|O6Sdcmpm zfx%Tj7+4KJ0%1rs7=}|rApyc+7&Q`xP@`e^G!}+V<6+n|5r#~YVYoCEhDy_6m^2fH zNVA~}l?zuk5?p#vBp+U)LZk>OMs`4z*@f&zN{~HJE%za%$bRGiQidEv%8?4>5LCy* z$PwfyQiU8tjw2_KYNQ4^iPR!>$SLGBat5hK8j!QdIjCM2kVd2lxrkgsE+bcvX5=bV zxa&v@(u&+bZX&m!t=)#SBOP!b=tR1ZyGS>354n##fcFi0kVi-_(uedT1IS}!5E(+A zAWxBJ$a7>E89_#oG2{g@j=V%(A+M1)$XnzcGJ#AY?~xD4M`Q|_Mm`~*ks0I*GK_Q>G zP{=S8atwtmLm|&l$TSpk4TWq&A>UBQI23XYg{(s%?@-7*6mk!R>_Z{{P{=?Oau9_q zL?I7R$V3!!5ru3-As_j0yQOHmfaukIuMIle2Un_?~ zuA-2wDC8@Q!ziJUvnXUO3VDk{=Aw|hC}b~;b!)=CNDGA=hCY@K3VDn|CZmwcaMd?J zA)ismXcTf9g{+2qktqt94dXoKC}cPEjVw{fa1?SJg)E1$A6pbM9fe#+A=^>NcN8)n zg`7tr>ru#i6fz%$+(#k%QOJK3Y5)p#0EJqBLOnpCCZJFkP^b+k)CUx51PXNmg<63^ zy+EO6pinnZs2wQO4-{$$3Uvg9T7p77L7}FgP*+f>Ehy9%6lx3#bq0l6gF?MQq2{1a zcTlK3DAXSmY7h!_2!&dNLOnvECZSN5P^e8P_(KB72Vjzq!uk0>%M0Yp{~nf5zcve{I6`=-{qfV z_~*SL{?D7g`S1SL{){(d_{`Nd?CyL)0+%SG8fj>DU!mkAW z?scR>Er z0Sxp1`JDVW|JA{^E&2QW-yOj6uMS}Ts{@!D{Hg!d0WAOS;8!p31%oG0Qqj_FV>>>8 zgInT}z3iAC6&&vL`?rMPL#L@Y-I3natN9Zgv@b9)f|o4KlFnq(FAxHbZvq=|UUj&%mjz# z+r(PUYRZ((8`P3@RCMjjr3||&%$c)k<=J@88gs@)=JUKDO!NDFOAsb_aEkW}y^`8O zTIDDcPAhfYtWl$-J+0M}*{GLFyk>N{?YbG&l}0NWwhFs;(+DTQXF_ggj@d^J| z>pv7Q+Vn6u^v+<|t)~|v398;P7aCv0(G^K0YLcvy8^^R#mCb&pQNJ(EAgM2Bato+r z5A<8)uwPTpJ(!Qp6i)IdoGTFc$Q@aSH^a^^bNsC^2Uji-QZ`*(1F zavf+5Zi2=*GQiA{!9949ITtWUcp?*09j}Od`{<8|4<1MM2+klg1Lhde(~Nn$C5N5! zy@74-bHV|obzDT!75ssi48p4o8{+FNd5UWmf|TFR2~cG$$x{1$x1f0%ok&X-tf!lQ z_K7}CUz3rYqk?IfVS~A6B!TrV>pWX&d=`g85j|Jsw<zAsW=_z)Y&k4{);e$Tn61@fiGAPkR7dk*PiNj+ zYOYEGwC>JKFFnfG>by?11p25Iv-@drcKfT-g$M4SBnKV3zAuF1Ayb&@N=f)-inR!e zyFO7nSDK@}^S5FS80yEd^C!n&r>;s^-MXI0{_}p)0I@e&Pw8$-^MQ-0X~z50ilal* zeO2T$P7cgwj3%7SWO293I^H#%Rk50rU1>(l@mSfBV;Z=X!!{C|8-L|#Zjzm1o;$^k zJfi;dye20elG`aC5~<=4>GqCCBmvYZXavDi?Evr7 z50YKRz)|i=P`2_Jc*-q+>h&dX;OHtiZ}1cB;oAiL{#)Rk6d5emkik=U+iql;42HJI z0ETS=F&F+m06KlaytIgI8wZlDBZ0Ub)kb)Sosj9dSmfN~9z?qNB0}dgjP$=GBQ47E zm>+(Dm|~wwjF!|8=GHwrY@v(;cFMZ~i+6mDeMTXT;{w^Z_~yqrjcRfH1^ohi|NaSl z+&)u+l*$D{WG)-gKeUiYF||Y#+lZntubrf58}z5F$$vxHe>sTiz56FB^SESczBw|r z?cf2LELt&IniFlb;#nSa=a2lL(^#ye7e{p%_N%{VFs3VI>|NJkiup0iB)WK#x$(0H zOX6cD)+3dVS+N?WY^J9j+0Q>^VkF6oI?4;O(6~M_rhOK^of*qT^H@VRx9=`e80H;Ly|=Qy#z@S z`(UY2CwFPp4jUQAd}CRb-P&@>-74~GeDVsJMN*1#Q({U%3L?rIwn8d*Wdv2dZwRP4 zycJMq+$X59(j=s5B`>0-yDqA|yeY0zE+(Zbk#Qvr#jjc&%bVu2-@Ic$2c)e7O2ll42?DltGMsjgn;7hU-V+>L zZmm0P3VwB*AiQ(x^%!#QCERh*AzyHPsB+jXtQ>U@rjPXSJ7nkS%%$X2xrf>N_3Llm z+SoxKi7)4T^Y;|^?Hlp*-?$?i@L6Xo;H~~Z;CTDdAhU}h!C0b9Ncipf5QF)I>NrkIZ{m=A60OsIqJ2ce{}33G3M!w#u&wY4zc2K^Rds}_QpLo z6^}R6Y>#h}cS?|#m`rdGN=)S7`d1Giw-z~`i_ zEdH*n#4ft*yDvSmyV7g2DUN^0j&YO7!8S$Y@HCyt(GHx*;e5iKTTShpJHfFtR|tPA zw|jgh*P($cFFwsY@1tW<-a)gfyr_V#yrlC}d7aACq%6EF>7k4*>E*R((&r01NuqqG zNFA*0q}SEMq*D)PNkYf4z*~$17$i%B^ZRsxU!fg90{j4vY%Jhd&H~y!J3w92L12F6 z1Xz6C0L=BTfXlCLg4pgZP`J?p9+nM)r+bG1c4Zu7y?6_F^*(?-(w~6T`7eO^-dDhj zegh*P7r~B=A3&;a1tfT`fm`R-0e{a=5ZJN-7PB|OI`>6k->qh z@RtGb9{ni1+h6&e3^v!`Eq{3bKMv~s90c5&0T%As^c)yOlmdqs&Jz%?K`JDofgbVC zU`6B&c#xhgVT7|q2B8d7L-J`1k;rp4$Vq)qgt{*bDY8#RW_k({R_zL8y!H%qeQzMU zT>B8lnzu;$+a;ukjRu1;62>$KX=A)HTre&9ahRRxE=+OCX-t%N7iLQJE#?Y#3zN~! zhn-H>$DZR2#D-rhz;@}?WBqRQVn;+4uzi3X_pDD3S4a_#OH|&Eld`>u({}xUlecEX z?~&8P4{t`}_ue{+mkW7>S6x}dv!%-r%-{MEG?dE-F7fvX#PW4QON}D&et873JidmQ zt1w1-R=n2YJtN&8#wVUrNv7)~cA~9(SJg z1@Bfm2`zMX3o*v33rkm?6E@T16A26`6UkmDi0-A$5#3$BAR4wWT#R=0l~}|R7jb`% zKJlT4#uC-QlkWH<~Au zofiXDa3Swh{K)~TtM}ik244$MlkRz|_HHXcox%N`x=CN42Elhi16q}u9uFope^iBN z>F0mYYDo{%exEs|ZBZPd6L$2IPFHi3?yJW$x*A_%^gIZ2dbhdb^`|7~^}Xd14XVVx z8AvfC8}6R|ZfMY$Vl?EvWOR2S)wn9=hw;0fG!s7JvdK%qbkj5J%cfKx)66P%|1cZD zq?rfXESdL(q*&Bjezz!HNwnmSpSS#UF3#%k*)LW-5mDAcAE&G>_(N?zGEUeu-14(E z;2O6Lkao9g|MJ9+&BxAOB)!M}oVJNWY<;_fYO99hVDuG7`a9B2_ph9CdThw+OpLB@ zc9fxYIapBWawBftHR>qeQco9T@wZcdTr?g}SwxqtDK_c&5h>){;2>Z#GN z!!s^w)sy#ZlvhU3xYxCEYi|aQa*}b5Bu!Qes%@{0duub_bE9K8YYn#zG}w~huz9YcbcUWNzV%;*o|NK^`*zI!NmHhwMm zTe5FR&p=0r4M{N6yD&fW&C7|Ozf5bivhK(JyIVM@wH&jG5h67*l_3IA)Sx zB38XWBUZ2NVeGN5>~TMX!{V5@uErf@MB?47Y~z`_569Q!O~${-luf9+mX`2Au_K{u zj*wV8W1Gk>S)RChW-QSolrPC9Bq(XI?sQU`$aE6&Q8Kw_Ix3l3_Ixr`^XFvdY{``L zqVSacPfn$@1-(lNSL01xxAjQTWJRso-e^VLl|_&6m^Vb}SztljU@Se~(^ zH-uTIe>5Vc7e!u4HynST{^~GWhESb(#_P58jH#OX4Aw)#8CK)C%;-d=%pgzyOu_P! z%;Q2WnS=O=%-ec2S)l`}S;N=-viN=!XF2X~%Gy!%JnPNydRAtUV0KQKSvK=lRCa9N zzUDeGN3EU7N^{c6pOsq^v z5lb$lPR$U~Fh?>;rW_?%HI|ZELywbI+s~0IZnlsZy}C*BCk9C^yI+z%^G%bee7}>9 zm~E2SUr_*@5Honi#tQ`6#DE2x0vHh11Ts^GU?k8Am{d4{>3lDsBohS6$|6B(O9C)E zmJVW#@_^I%Lf|pF8@zqAA6OP10`vG|K;H2r@CrWz9$KCU4_7aOhK#G=>VsCGJbfEP zjNbv3wcTJ{?;&`6xffXf8~`Wzp8$mSIjCG30lUw=0A!t4fTQUR_`3NHoKScVG)z8% z$6C`Mmi05>c|HSPXU&3U;#W|SGY@iJEC5fT?|{Q~5u8e10`KyEfX4J?@ZN6)c&o00 z59_PIrg;r``mBS2<#iBQ{1Z%4Y=Ak^2GIPn0pjd7fl~b@5L(^@V|rU)CT|N&w`>8g z&s*Rg8~lZyE*YTyWYC!d?e_{YkULKXQf&}@WUylt{`PKy3{Jsc<*my z8b8T^8}9dh(AJlNd;Lj>*AOcZ+k5{up!@$F{Jl=_%BOX9L z=N>`&6>AX(;qyq0(^Z7KqYZJ7e1LE}4j}<)Y}(n2<+|7~ue3 zjIy#MX0Nd-M&f`W<|nru2K(L%qx2~pQy`s+nLU?}2@Btk`515l6H<8rGeUI>qk5|c zlh!bb+4p1$lcKqd;eSQI7PPTp55Ew@I;yB+Pdzfn?l|s&ox2c;?O(~la-(~&k4#Ts zADdmm@)dSr&u=`#Mm0}iZBMUZEuYfj9CQV7Zj&lFn|l^Gu}L4?uudY*?nx02tvibI zzjP7zVx=4RA?F1yUS}Q`txmxA#PZ-X-zec@_gLb~Qv&d>E7S2hKlb5|m7c+W4Q|Ja zBoE^y+vf0dhD1UjB0xx7*C0?UI1%`(qX|bWiU<)h)r3r|8-yFRPYJB5bA&8}lK6}$ zLS(SeCvtUp5nrdK5iNqth(^1ch&MhzA|5WBBKElBDAYp)Df-UpQ6x+FP_Vttq&PlU zNwK(kjRNEIjN;0VZxmm87%2}wSD>usbfElP5l`uFRZ2Ofc9AmD`!QvI%U8-(YX+)k z?21&T+)h-AZpl>OVL26B(simar%|elQEODWH+ZPU_4TRC)&r^Q<_f8GIU1-v5-U~AbE;r9n(YO#WY95>&{FoHl#u82K;FEg%r|W%soeY zxOb3N+HRTF6wgQZaNdOOAVUmYVaP$ctS>j|oEs+SzE)DvOWjhUpJeo=U#=>kH}bqd zUuXH8eko>?p7pLc!y9Wy26o%GW32HW-P6-V_e&j$@sD66r=3S zW5)Whbw)X6ai*$yC#L(Gc}zQX&oi}L7-5pN!7+DoD>7Sh`!OH0Dq$`=+saH<|HyoM ziJ9g2gdt1XW;_eOp{OoKxM02)c zo^-aWe)Vie`$yP_kreC$3YzS9M55R)m{hR`@9$&3PTXWqIVaB%lM%=fpLmeNs^T6; z-{dk!w~rJjdCP~>w!f4!tGkQS`NIJawDwYA< zl9$T47xj9$1D7_qHJ&Q*n2v_?*yE1#2)RGuDHk`Gv zxAVR=U$=Qa-@t4uUu^4FzKD7;{(_sn{KX69{3=m|4 zeIPt(frxl&Ym3C$q>8-Hz9^E}^GRe@MMQM7%}+Ec0Y2j=g@J9cgtfE(dulHJo}v_8x@Xp~vy~tW-datVPgk+4XcDxs@6(xgReN%UzHjksI8@D$h=KmRBz-lmEy) zB>&KpV=~8wfVN}lX8>!6pqAHIII#sadh^iK=p{m3jP$doBQC(;!tIA(D zP@BCD)W+}JQ9J*Xtj6%wK>a2Ys_w1VseU>U(XhN=sIfAOY6PowX=oQ=G?iW$X|AXg zXzEqm)x5Tb)uIbE(OP|4s3mTGPs_3$uT8IMrY+r4tZl9FKwI!OQODQFLg(V6ojMO) zdUQPAQtC3qTItrT?bdDC*{e%nr_s|pZKFr8yjM@+PQRYE4W0h-u$?|_K&igW)MI@@ z41{6`L;G}BE-mUTEgdU`dX;cw4Zmxl#-s^%=Cww znc~w!X5jR&+4~qab9zZP^X9P%^MbtR<_her7IAeh7V|>o7U307Eq1OkS>m0XEX%46 zSWXNNS~g%Atd0oUTZJp^vwA4sZWgR@Q%bIiVL+dFmqD|q5sZCu_q0Rbu zmyMAzVk>)C-!}0@uI+uw+qM&;Yqr^P8g>@KX?6(is-5@Xf*r$7dHWHmSo`qSbM~1E z)AskuL>;hif*fX9Y8-S_UOAlA;c}dlb$9G0mOFmz8FZvep>2fL% z-*Rem)pibwN_UnGZFYWP`qf#SM%rblCCsJVqSi&B{gq1~2dC>tHy78u%u?4W(j(W2 zNW7b@x`ErysVujvS=ZbW=fAoE3n};7{1ErUCr-GF9vgM1&SvtU*0%BZJYM7x<=f$5 z*RkT^jVO7#3P*b)qNhBC39mfCeO9kGp>|$`_r+ef3_85JvzNU-m&<#9FA4Xq52*Hj z%rxSyQcLG^g3iom)IHbdT<%q$H>4RKBR?VE6C9qt9ZjXa2?F6|Aqsv{Yyic1FkVy1k4=H3Bayg3V1C4AwbZ8 zGq7L6Hn9E^2t@O*1}c1?3f!&D9Te)_t@+~6ba z7lUic-v!??U=Hc(G6~twl@>xauMe5E8VykvrVMQw)C|>hjtaec?r7-R@T1U~k+sl} zMyW6pcdxMM=expgh~EgKx0?>Lv0x8(W-|-Nx2A-f%GQN1r4EI!9@q+3L1iOKjJ+c! zMt4RC7+#N%$eE0o*u@a38l@Xa;EjsZuRRp`aJ4IPr|{RvNPg}p*IBbDwY^DEKQ@m? z0i&L%PWQ#AQ+oW-Y|EC>STrTt`{jvfO3I$-O~UtR@nN2rv^2Arv8nhNL#ZP%HM(6f z9|dP(2qVm~-+Xjpk2iR5{ajm0Hao&@eaS`n`anB+j z#2xuC8`q@B5>IQV6@O7HAb#I+QG8wD`S_W4gYo|KKjJrNxD)QY&`&s>5t4BB?|<)H*$#-)V*4vs`uJ)OiKd;AkGozG7!I(j-W)$?Iu;q>RkW^>vkLb`ksNOMdQ zF-uNb{!pH@>3Tg$|IkQM`kf86j&Zl=yoekxm)>?d$5*?00q@>tqh z^2-;TDGBtNDJNMxQZhfMrQi-!q}WniO$l;%lHw3KpCar`m-?AjCiTh@%hcUJ!cy}^ z3RBMtpG>7+Y)kE~c#%3rv78!U%bXS&ET2ZOwobFbg{N7U=BKfLIi7Zp>qc5Q_p>zS zxw*7gWt8dTlp^Uu&U)!RaUSU(e3H`l^6p80ap`pWJGPGW+xDaB1>Otkc3M;!YF~sh zTobi3?)5ll)GS43AWH=qn1@vv?QzW+PM;oSjHyp#BzUc6C_6G_8t{l`Hs8|CJTLE( zX_gU{d9ngzzT9yrlg<7@X536?CeC*xbEWP}X5<|tE9(kdmQ|K?)=zeWtV<;>S-YM` zWSw2g$x`~VKg;~asVr*W)~wo*-Yj{^H(A4u-?DBy;CMjKdX+uJI+uO+^Jey^!}K`=0s=V&`3gC5 z?FKn(PaSd?x&v~K>`TaLR|YxfnoDzv>8f+`Oqz0Ty0+zn8};Q}q#Dm@Yx;X&Qp7@mM6br znD^m}P2R39_dLtYpgdQ`*u0m!)AQ&*qIo>Rd-7C_4(07IuE{eIKbLoGwmGl;P+Q)( z(1SdYvcbFu@5l0%xhC@_RleliQd-Kp#Il+9{RM$^t%#l^%F01X-6cSJJ|RI$6;vec zG}R>O+8dJY=~ACQC&^^;_4pOUB#kCA55-;g#9Kaf&> zd?w{p%#&>Re~{?P*Gb>MlSwlA1n?=98h9RN0F7r@0n14)(6)mgjCqNGLtK(T z5}*X)r_?}+w>D5|(+5XrOu)3I1#nEY0hm$;AXVuCe(d!C<;gxk*&+ZSG$BByBOJU9 zj0QG~ao|{564;tf1t+aD!KD*9z4=Tfj!uMDVjSAe&l zDnZk^qoB|CI0(bmfHPIK;JVmp&~>UFEV7;hsaY35!jmRI$9EZI`Zj|X`>z4-))pZ0 z>;~|Ae+wvmY6A}^I)KGcCwOu7E;zII9(d;c0PN!L0bfTS0qLE6AVhWm+XGTELEw~i>4(RNg0QB{f zz^3&*VC{l2?Cy`?X~z_xzB&!uPJRNt;0qXFo&^DKXTkk5b3icsE7&JE z4`heu0dLU)$d>yCLZ5sCYYE?h8`UDHJh2E~$Swh`)+O*<_XoJ&{sTyAF9VL|WpGJs z1yCPa0Vc>QNQqbl*Lqihkn|dOQoIJq1%3P~2r`5{^y_y+T!nZFF$J** zu@12X@z?j?&f)D}B#8+=BMYBO_~DNrtHBHHE@h><=e^3aS5>G!2Z91Cd>*PFD+=oTF^=E8t@++al9WSNmC zmspTqV>ZO-BRisYm=kI6q zkko2-O0bVWCi)bzKLX=#$w!z zC^5U|=rAnjSTKtzTo?&^0n8;0F-(b~45n3638Utyfx%|zVFa2?FuT87VT>#sF{T&X zF$ekmFw(Ul7#fvmjLP#w%&DRbjHf9H~X1ClW zj7dZbM)PtzCW7)lW+$tA2* z^cGeELy41WV8Y4y^5B#N#c-;N@;KFDO`PHbW1QFnTO9MSJ8t=VAnvh14DP5;8qTdA z;4nxDt}3zuC-|-!w?F(GZtCY%oao68oQ2CHoE_V9oXXT2+}i!mxMSCra9qt~Tv7)$ z{^Scb{281OK2KK`FIl94uNybU&luR_H?Ml(U#f@U(Vj&7m&jZ^H|H)q%}6=Et*!1q7f=ptT+8zET7&=T-{oP=;KF+zNc5`o)TpAh-V zn&4LKL3pbhO2Ffi2wkIj1h(5Hgw4jog!HD<1kiScz&hSRP$TveUK_q3(3DIO+9wtX z3llxL^V-}?`@-yZ||cB*chj1wVI(&IkQIbgr16W?+#ANU|LB^ zr;{3#ZpIdrG2h)O%PxmgcIT#3Zn^KEG%%>7EK;kd?9pnWq_%xPX%;&|nNc-Gd17Rl z@~R*ORcj^()tNUERN2m&R4UIcsro~_s7x@?R27ZcRJX(SP_@V&rz*fSQE`80r^=_PIf}YdCWm^qc`x-Xi)w1o znM>4CRbABG9?z)fg+EeX__<8|ZGw`fbC{ckc~q9><41iORjd=urc4NpPDmQfmxi4* zlrS6A@#hc+3mMX^My=FTYHIzwmw##c3Itsc0au}chS`v9;Z8jzf4y?+)amG9iCgu+JJ27I52de5 z$)wM_zn5M_w3fbX|8@Gi6utCU_P(L_;a{Y`)keY47s1Q0OF)U?>w7bXm22J%Cl4kt zyw5FSXiGWDAf9oNfq!Q=!--R447L4p3?f(@qkt(VW7$DD#?(1u#%@Ewuo>9@3z?3S?!}J5M#MHQG&UEOjFVlq|$xNRqcQaW_ z)-d(DTxSa2)5pXxIKkA%zshtVo1WQwQj}TLU5EMeuoLsCph#x>H4^jt zl)ZM+m;HD|8hiQ5K6dnAJ-e^w9d_Z*qwM{s7ua26s5q|a3Uhqq)Zv&UyKtQO7Rw>= zwU{ILM>U5d#SM-xB2PHvY-TtZ^KhK|Zt`+gBkG*G&JLU*7b7{T*$OyicO2uqhq=!A zXy;>2b@It*{l$@7A6*K#(qxZwX*0BN$!!dBSuB3$DpqOs4EM1OENh>nNEiZZqC7AHjkR>bXIut{M1RU{1WJ4qn-6C||y_DM{RUXWOvc_a~n|0E$LN|e;M7L`1l zZY(KxE>Lo1f+YDx@Ps5T{I;a(l^2p}*j33+FLo)aR#ho0ZWpP{!X&9Z-}g)9L|l~8 zpX`_F3;rU-^O;IoBu!HK712Ukw>nH(OQ%SB;B}q!Y;l+LewBC9O;cOax;1<sMMlOylEjP^Mdc3#n#f

    T)~hw(aBGHY4{W$UH*&D>v&aGS187j5ceQA$d$iTw=AFmZIZq8@E-Y=>y>u}2|IWPTSxRUVk%&~O`d9PPf zi%!iPQ&-RPGWOt}=G*C+M|Qt>Q=1y?;L2cA_Uifk)x?JIC{wF3 z#>9OErqdPkOtE42IgnvTeZ?G87WX53G--pWnL8MoE20yB6JBqs=lS(X^(NuVn%g-S z0=`t;p1w2hVAncco=)bl}Eg*POnt{b>$J2^N1{AN<#Hj$5tMPcWbUX zzEU5i%r7Hs?N#rt47<)$JW|m)wuOb8ZcySKe^A0r+wPpfUrijo7bU zuZuH%0?$&Nmw8$g?85LY?!w6Ao8VI%Hh}wAja&Ku4ehi+jdsRPy=kw)Zrm5`zYge^ zAMEc={15uO-f{k&{;qeNf2Y6e9q0d5e;1l=Xg~Br{oVJ)`Jw*q`{Mjae`kJ+^P>K5 z`n!;P|6lia_CsCY+fPW}8|?3tKXrBYcjY1dT|uw@?)4-6y&qwJucFUeL!Wp3L#vx_ zc(k&)>dl72#y1-aUw(5-;k$2cEj*|1qyJ;Bq1lMBmv^)spbvvz_LW^Fl2!rZ1CJ@X z+ZKI_zOWg4w9|cRT4`?UbcJ-C?%z!FFivO=?46c$8usIl%6S?>qs$SoVa&sRy^OWN zd8bHs2|i<6v&$r^E#fl@w|=aZ9Koi^D8{R!t;%J ztL`Q4$z z3&T=I6pl<8SvWIgR3UfM6t3gHjsGkB%h*@Gj{i3PTjQ1Hz4FZd@)bJ&Si$lQGDR7y zUiR~<>gFC^Nm&=euNcNJ+?81;yb3M*T6f2^bIJ=3L(9B&=x~i5p<%6i=QPG9e!en3 z(dy@ST_r06d<{+a{{x;bg{Mp5=~8&Q^nc3Jwio<7Ri^gv^#78d8ZF<)Pv>+0hq-r; zi|RTT{`a2YGQ$9J@d^e8jR^yqMB|M{!vH2xFc?R2Gd&eFjSQn0uuWsVFoGvVM-xZW zrj0!n%tb*-HJ8@uiAOYP;x%nTnx1od5j2Sxax*u@sQkXqp1om2Oq0In{NDGE{n>l3 zz1FkVde*a^wf3`~OJ~tD9i0O{pY|V|pQ{ZQg8tJR@!g%JprcW-S9!b`efI@&N8f$E z+|hUU$o*&}y1+TC_j|X@-OK+FIs=nK;;o>Uo@n!~aMhw`E3uVlsWy*?{e(lkdb$xa zB_kyE%9Lkp$yQ?3W)OQNQRcsQl@@npHS4Jrz2^)g?n>(#iK)^RccnKNHhim#K1~KO zKdqTQm$lTr(*_I=Frw!<10S+C-e`4J)Un5mse8oroEq(!MBC;O6J{zgVGb?bwqZ3f zVPcBCt~G&}AUi`?C3zy`8da@NL*c z*;vYM+Yy@_eeb-Tv9#x~8dI<)?QqgI;=ru7?te0-)Eij6G-kt^3wbRcbo}bAd1Wtu zy6p!opROMG?x#&l4*_FR%ZLg1SAW$R_=xuI*4rCPd;g%uXzexX{4k`>=XS*=$KG4M z^NnGLwf25Odq1MRoobxc-dNfzZ7HX{g|zp%rO$16gZB2Jy@y}wqxH29?fpoNEqE^N zjikf0w~6+~HhTk2OJiwQUQ1W|9;SVRbN=6G-@xUUx9>&T_k;gO+V@~D?fZoG9m)w9 zV;jZT7V2Yb%#i~jbEF_(OSatW*%`$gF=+8r2rWi2w)u>$5f8UOj|DAsT-Fdn*|MEc zjIG4Ojbd(0W^65tt##jW_Vd;a7RJ^B?OC9`^xj$tgT}A z@(OySJ?&mr0k5ac%d70mFD$+Vd`$vxdEhS>Jm&Dv_1YF0JF$1Ll$MT1?_rz;{*10w zg^z#x{ou{9#F}iK?C?dQ7nQN3af3}6;MewD_z1S}f9w=~sNOpsxkW_@`>x^NcLt^^ z@Huzc&TYe@ZS&k2J4IJstA{bkN0(|cIGC~{-;tr3ru)!kZROt>TjD^h-RmO$ZUM3i z&ZK-ZH}dV!jx|a1(Q{pmp6hPvI81%Jbv@VJx}NK9UC(t5I;2hLp7Q^C$zAkZ(Ulo3 zK=fP%27A2m45orQ}rwjPb@_zv>h6?p<|Rv zdMWl;qU*W}9oJ08obsakv6BAfcj>r_UT}1>ga3L%$Mq!bwW{JDF=#&~?G-)ODPfKcQFhjO z`c#HKXuhWBnz13OOV4$cEgku!(8Px~{+54!6@5Ju`g&&QG7S0*hfX7)*GT5KrQw3v zc!?=8ISjj?QP@BYY1pvE9CtPun;nI@?@*Xq$V2eXTXB;8z!4kqt$UxCa2l%%V$aw0a(uY0PXy4Jth{sB-uF|KbWNn$Dj!VbKvm0H~bb!B=tR~925%5l3Vq&;ovlSWKP(YsIM94HgG zC5wW-dXRCox4}O+I3Z>gG8XJQORq;3Ggk?e&fxCjPR!OS;*6GV;NHT0H+TGEl^)}s ztOiOW)j(A?_e}2icPpL7{U_WPa^K4R3GRR3{_osB<9>wu028rUO@XSLxL?avU<%lU zo@SW>E5LQtO)5V1ysqUu3m!|SsN>uNf;z*t617O;J(NDB_$7}K^Pz4MF&q3rnWgZL zN`doK&^M3PryJEQtxvCTmp;ufWodmn#$Ecf(43|9$sCrY^=UnK>C@2gEUiy3aF;&i zMG!}edkc5z(;VV)NuNIBE`6%8WJ#Z@60KQAzlxu-W);#N_lzJN)F-P!I`HUpF!)kB zXu~(SMn5^-{VvGq?zhord$w96bZPWEhklRNaW=W1I<{(~DewhjI|sk6&JoIs=ml?= z7+E_Sh>m~;!zM|n12 zijS|kiAKzwe(22(Xf%@+Mq9)#?i#L}fzu3}4s7AtLdr^9sk3JB%hr1vZlIjRgVOrO zJs7iUP~-J4;!mG-={?{{yPQ_O@oco~bNV{>#$MXw47N%7CpdBfigDwcl-)^L;Tu)s(A|7jSy23n`TRoRiSUoA z`>UG{vB2qw}7syUDXKJeWs#D}1PGF?n7gkIs*(Hj-z3L@q2Oj+c z_}EuFgMO8TCQ9McrK~wC#kO^1qTh}WK?VPS!gs2OQ^LRaALU=X^lr67`!C;-=r6rb z?XbaLCIIvxRr*c?l_^zW!Ix^-A~ z@KQV{D(et=)A600T4JiGPYCkwbn=#huix`c>)WfT{=Gb>%Knu7hm-GO^ZOZn`r=o@ zQxY4sGK`1#Q5F1U9+&;7_brLHM*Me|g==?S!p{A~r?CHR@5I(V-iZ&ruP!))Z1B;_ zW$PX*Te9v!+TH-a&uGK9;CgJLbMS+EH$0yggcbV1=b~4YX~DG3mER#P`4(kbEBm=$-lj}bl`XCde^#cY+^S6L{F5?m z72j$fQ2SWXYdO~WSi-qEQB7aXQaWC&i9h?%O-jednM%he*h<*g?`~YLIr4hf+FXzN>Sc%=<6#V^Ffe+|xocpO9$4dMw$bRzFfQ?Br zIrGcMzIqD#(M&y-wi|y24q|C*zN$%+ypy%PvL!K}n6{aB_D_iB3Tq~&Us_!yu}wX- zBWsh~BUdKv$4=Z4jlWv+fSvnzPLJM~B|2 zXVR8D*UnV6ZswCcheW8;%ck&#~q2kNb=t1d|7l?(;jxDq`x{aB{j`C(z2%}i98<5 z4sTLv)fVI;ceKd4yXBeMnTcwmZ6l!4~y->YW}fza|Y~1Mj-F? zob8voY%?0ncT%U-Q@kc4#Yww%qdyldc||9k|5tg>;e5Z;bXz=Y-Swqmbz{d$KJ>#C z`A!`<=!uukbhR|pFjn#neMaru5dJ@?uhf(mZ@oQghLmrlKIG<}q116Tc}tgt&9KUlIk=oyB30|| z2Fs#{@h@*Juq@pY)c~!?KiwMeRBl#YbQYxhBrRRF6sW{oI9sC-qX7F5Y(`#sMr=mp zd0^w&8fV8g^V<`QJ_t_~-Y7g$c%}47c&GGBcMW0mN{Wj`(|u`w;OY! z_IT%*(wh7%p@9>LwMi$Bz-t&g2fpk{ zlvOf=T!avn;O^IbNIJ0))u3^(st=b zPyYV{^z#~-AEz{Z`;-|~+Wc6R)X4mp#q<68{J2pK)978+{bGEapJdG|gQjPx(Vlwd z?_RE))oCfG7}s3JRpx#k6;KaWq}W$5PNZ%$i> zg_gv3tx@iq;!5x>w6Y36D%#w|K1k-S{c7&a-L{EJ(Tj}JM%wDhQ;Jq?Hl;kod>PAp zkv8;Wj10PWVml;sFS-{(_W`pq`kU~n7nmQycO<5Eaet-g3&z3V7wH!^k2B`!9#c>s z<}+wLl)jBQ`gi6~=p3`4n=E(3_{JQ%Wkbykj?dCzd`C918>IOMp26yxfOvlJK`;fx{fxgKdsM>jl^y$XHs} zKGUV&BV!Oto4zg0iv7Gsv+&MU?o;FQ;cq$UzZmo?Ym?Bc7XOOz7R3(I9PIzMkyG#-t~m-FpQ(`%4cx+XrrX z(%By1tylVK{okbbyIJpdo1>c^wE0cnyXfj#=<2(@(-ro=eI@@shcecnClsVErzhs+ zKSNJWWG)&#v8Lw7_f06fIs8U^b|V(LGEMd5f$5B?;G!oFEC2^an=`?K&`v6GJB+y_ z{n|qP25)f;7a%jvO}FM{W9Nu2MHbzJz4tmUC~>>C7`ql;#?vcLYHq8YnQ=Mn6M z4>GR`I0F(MA$#C5byd>W@rpo?{n9@4Nqf?ctk3cvA?t?GC)sBR?UbDF#)a`s(%X?= zX#7O>N37Wf5BYC!AaJC-E2J!EN0;N{pX8b1Kf~aeQTB|l<&{}I*57^V<^8YM*I#M( z7x2KIc(But&^@25)$QcFG_9ZQ#-OkCuDzkqoPo0|(Ob`bG(HFioS4Sh691Vcv0;Tr zlksQ0VpHJ>Y|!`d58a+AF*R(BLso1n%;UPBD=loof?TdST>r|IHh64dF4r8cXSmuP zsV_hJ$fojRk33cW-XqVHb7oYSD>_=XiAu+bS0a(m-XKk(tpbp`fs{I|Icp<_TTtt z{b%~W9GgR#H@)@$?A^^1qT*37kSMKQg@;O{9xL)JRO?|jLk82Xwtz3~gRZa0zoJ|I8`=RZ(xFU11 zNw40v=}PpCP5qVV+mJ^^^WXge|J@>&NmXO;X?$%;wf+w)bf1Piq9@(U8f*IpbRSCZ z>foCT(|%r8*v7u4x3OQ%_!)G*lIPxNzeZ2*N&8DlKXzmDM4^8}ULkWpV5rQ2R_Nb8 z*j|{!Tu|d`rpX-0VJ;}(OyuC-f)shbzs8E&Q*m z&`R4-??mAZvX7JYDJvQa)v&Sfy{y7xLz^d-Km%?3D~94q@FRR8M{p&)g#O(uIH5lp zpU~5UPmI^oHC%P25B}aL!PT`vTp4pk=vrWCxB`!t;EJ||;%fO7aFv69jVs|w=FYhp z%@eOAf0uo>@M4iWJ#_AytsRFb6S{s38+=pYtz2`t)^a@qt-Z!|oGb20Y$C%Zvc61Y z4o+O)=L%h4My8A{T*sK)xZ?T3BCa2Dje6wyOV*szkL)NfNqMHcI_25&r&2bTho@{W zyd|aLpI(PVcQ|w%Dq(*f#Gkcs3^=%SUAA_u!Pg0XSgS&L)JNC?iA-45uFz6Lm4E;xWzCI|UTyApiI?C8O!<1C-t=(&y_!P}yZi}q=o7dAV6E*h0KmUgH^tPvv z`6TmK)|j4q3!#+~_)gEZT?vi>Lug&f3XNR}Ut*&scq#4$Cv{E4wa{hJCoXo&mW=*> zm;MS53Y9Mz^Xr?+PupbQ)MIQz`}KA6=b!CY>$B3Y%jFu?&_K`snxWE1c*p-qA4S%7 zrS(YWw8+YBYBa8eEZV<8sal)#b^EX7w9}2=_Il3bo;YrDU}v9Y;Y>;9(oxQ0J{osh z!^iA5Kf!N_oCyvfZ*S?bqzBJ*kW)u)OcFVWoS%w5j|UwoiG`(|`R3vyP}7x(^0Xn7 zcHgM_0mt;)V)DhvFIRYq=pU_ie8t(;mqGC>l8d}=mF=2ZwRLfIC@zP&h8#? z{(K3X?N@9MItFgNtOn;;4>(_aLpbOrxb?CcoJeBMiH@3qpVS;pM@`4imD__(gIh1F z!O83aC+{1=K^MZUm(}1*>j7u(H-v-!gj+AG!CBY?j_(`7LGQw?m(}1r(F4w}zaboS zHQahx4bH#!fYb5~;h^K;*2`*eh#7Fnc%Au%aL@~J>t!`K=G;r+B*#4wa^jPe?&*OjG;0q;kP6}`NguHUrWuvX) zheq@$56;@+5*^Bt`y={@&gASx?w7@nMs6wRhYtt+X%x5}Nt1TXQyxpG;+(CN^eHMn96eO`Wk#ra96s}?EgVmnx2oeMUrOlK*>jp zSM($FG(8__3nb0paguL6u^YP5^n9d!U($3wR3iC?hWqa#t(|k=V0x4m*XAqaBJQ+s zzpR({@cop0*ZEEkwiSN0S&IES_NoR0Jl zl>Ay+NPf~Kf3oBs7LtFt#UCyCNt1p`pX=$fn{>(FNAgbz=C5bYPmZ_xQwIfU?}vO7 zdS58zwLDQCDbq$iccRswF^Kpe661mV@Rfv&aMmvLr(|Bq+!tQs*_a!c$DU*j`p^pJQpmJ)o=P@lxfiE+>08AE-+7&+bLk&9~Zq`nOJN~rCd1->#1zTy!) zF@FtPo~RI8p2_vZb-A~6r-i+d>~SQYhj}h`a<$+moq29CY~GlwVweAQaIDN#bb|^k z#JsgISEn#n#kR-t!;}Q~#_GT-`s0|Nu|dXzxYJn~%w3;S=gO>)aEOk3dPBIQ6dfh> zT`Eqnm$QVMW~48Vbd*M-?~cB2dV|Fw`dsMiWA`^19sb+U<-Zl3{#(%PpM=dx9(Mk@ z==|qk=f8iR*Z{O=?nM7zMgQMK9y58vC=*UuVu38i1^^z{`AX!QU!g}QI=ZD{%35MN zbXZi*x6A|27Go1Y{hCd{7uW>6kPx&7$iN<8a)>>^-nby24Nc!Nz*Mx-yu!5vouU1# zLyopVejj!L!*#m=u?eV6%*i@2PYK!tY%=+yz>(mG{pWU%b+Bd+gYR9)rhQ z^T)s8IGpqb>(F(o(sA8YN=Nx!k|)}uAj3Yy-hXu#K0mS98_u_5{4dCuSW5A)$Xd5= zuJWP-y8}z?3RfxdOKh|=dpUX$tYO*I<5pKE&BFem{)fReY3q-IzL$K?ZrcOZU3LZA zgADP9;b&fJwg=B~ZYp?5zh4on(7FJ+py0=%>w*?D4uPYJ z|Ebwi9i_L@UNv=;oY%E^IK%y35LVqh@rz+@6g+=VuZw<;6&=i|J?ivXS?K*0!=J&g ztYyKmNcOL0?B*{jdw8`q#^+`1q~9m`XR&4}S%ZM{XePR&bCeg+HTk3H)c^J0)W?f? z=Nx;x(wyesV!r3B8~O^3tK*C`6~$B5Nn3jT9$_l7>TTR|A9{@7LwM8HSwVc1>iDqf zy0P9J*gSv_Il~tk87y?kzMwbQ#b#5{r~D%cu4_w_vBIyaHrWG<`cUROD|#){teT46 zqm0(4^O?Q&sZKE!{nf~`r1yS%JJq5V@<>ddJ?NPqWsU2%IcN_s2z}x<=A!u76?*{m zA`?XaekQgFGtCb4vevsIM1SUZ@~MU z^5aOKi;w7_UVmTBkG5tHAUf}S6MgmX088uvzCeFBv^^42>jdqYJ4AHGCH_=MTXegG zOv>I14EdhJJ!lh<+?cVYQ?m)c&bkZc8L)$!?S@8t!`I04Dlx}cnHb>v$V0=q-TW}V{iWW1$p7hGT%bh2Ig1`Lk@1N(~7o-j6D zj-Rl1@G-+BZQH1~EeE(_yDDw_wTwA%?*x{CGp#+(cf&GhWzz0odj!^MU=>sDHoZME z=97B1=V&(!qfen@z8Dx@V2tfq_ulSuM%`id?z-nwu8wl)J@AtD6EkI8$E@sv3)F2Pr?{e&EAEyaOVFt zC5pRW#g~bd)DphE_Z3&!MXJ@<-S5+fAMun$L9-_z|SK3+Ws>|iT`mWYxDb&*MH?* z?wXv}_x#<+31{VXJ|TXVuDQPRi7nMRf&HewHixR%EW?tMC)XtHyj%aCqJOuVL%y3+ zcFyFVD+|4H(R~wnV{M|EHFFzdKQ>NmO4eGiI}uxr;*{EnB|~Z_vZvGhKa}33e;1pR znQhdRN_^?>?19mGp0BP8wzcc~y?p-v9`_FZ2raOyT(#QmXPZsvd0`*9sL8F_(P>{F@~i>DRcsvynwYpfCf1c=@~S+K(Vp+n;<}CE`BV1xvS!LRS!a(nLMMvyq7vq868s3BG(5JbS&}bJ z^1+9o>$ij_yhoYilwr-&_DrRPaqNxnIXgvceAp{H*efGEmMNF zqYv<0iH*`SY>gh^UWpyhGHi+-;9hCw*~~Nd$}pb8c;;Ri&T}}=+$$q^j^LSlWhBp$ zJaezK@ND6kd!?0UE6?03qj-+unR}&;XB*GlE2DXi=9znC49_tO?{ zUYW{0Rg>>jElb6o;_@+SenBmge`19>Sv*R)u+m)ZlCdwX49k*Oh{ew<7fLHFS;eDN z?$KGr&&xfIcN6!%yvuzc?`H0Ud6&DL_b~2P^Dg&v-ov>M=UwhM@E*Z^H1BdB&wC{I z3A{&MNLLl!E!@L+m%G$&bG&1`sFV5M{}3@Y62zLp%#)+~*G z{LndOWxfRM%!2dI#M&b3M9|JGxv{uG_9ESL@&fOQs=Qd7vJalMkMm}wNqiwx!PBH& zOK6v!^1Zdi{)}3*`WNcs?8(&0Uml#Y#I_%FZ?Mf`5OlxKSLH#Md= z&zZy6fAwv=z&a^|9R_j8E@HTGG3cIV|?iUs=+($T1@)O=bZiLYSGWZ zy|iEB!JN4#GoHujgB4utpl|Q;523+<4vl}_txmOw{a(jeY)#Lwrpo$iqmAg`y_G>- zr+i9B)Swkw9LQ7n7&v7%XUwxG(?3X60`rzEYx!WY(vgPU$&_&A&6CMWhxh_JIfHxn zvUMj@$^R3c@h?`!Sf091=_p&WZ2hTgm5x=&K2Kru_v8yEe})%3z)Yp%WFD8-E_7e6%#~9!9jP1Ue%#F4cu2f`xQ{fL*f6{aZ@G_SC z%$46!U+Gwyu_1%lY>o@=^l20IQwpGnv$ zoEVC1YWb|QCwAJ zPf6IkxUKgK^0~Ch2BeGW$8RrmE4}8Av{IqXWp; zJa^sEVfen98shtE6+VN?@EMek?<CUo%q+VA+y9+Z9#t8!6e5RXI4IP%dLNT^sUUB z8$WFyc;wTAXODiGzx3dS{0mcC3Ifa41!Y~Up4^|IbnIKF1oq#mbUc1=j4v3&wZFD+ zJ9bk}K=x%~Py9YS?mvkW?j8b9rSIAGeJV=8PgIsO>lF4j2cVHDR%=1V@|)ui0MD`J zW@N~MuT|RFP!zbz1Xo%bK0e&ws*HYr-IgCU}$a5Wg%Q@MfGtIl!BorA39D%e;p?-2(39e5MiH zWq`X=;O+ppb1Xf;e4E;m0q%qjCaWu-+y~Ai*0+T-mYJ!*wa(m z3cM3n3oWHNHC&at@P87aj5csQ1l$@p7W{g_@4E%f69uM}k-muDv&6k?j|#@go6Y%@ z1-^MZeQ*9dHcugS9Y#0xO0eC)J_>AsC2&2^y}&8nTfD2}wc=f3v-3*AeItfi%*5+R zOSwNzNqr?Dc|_jg(w8L$Oy1)3myu0!9+=$z3hR-ao#0ocVlU$%aKv`5XWhX)caV0b zP`}JqsXLMJDfPg^(TO;9x3j~EpUGVDt-N-{v^1_o(^pT8z=`tFR$tEaY6WErak`|%;%ANFLg>Rh|oGWVgD#~{(^DIj>jepI+Q*wes5v zwDZ?OPg4Jzy_Y+RE@f!B+44@gMA{dM``OGBE4W`typ>s;T_4r)Ij%>(A&g~czD-gN zcq@D4yAr&YdgRl_Eu`KddcFVEBi~WMQ%JtqI^HtDo6s>nuN#G?+u28n?Yk!jzdu~i z@@e+c#1}vpo6GRgKOCROvyb!=uVFa8XRzTc_8&qillzE|n*n??oS5Aptw@WFpV z7e0(w3jdq4w zZG5qHzhr!;>hU;wE3+E^`Jv-I)fjK$aTwz*@i>hBHHP*Nzoy3creV`>;*uEG5{pXu zDY2-&O+SseBfa(0h&%Fa`Wag0+xGLpkbZ7LKeM-fMuqg#&6;(p#@UgNj%+*YmiWpw z;sQ+SSJiauRnE(NBs;^in{s2Sw;AyPMBgx*d1P;d&#{KtS!=|PoSV5n4}T=W%h>Pv zYN?}^*rXoSde9lZXM)O{x4(^FaMm>s>zbU237po=*exw~zr6g%?w9T3?J3?L2mPPP zw>&EC=UkqH zK8LsCV|hoR;TJmScX&I#mUrmBmbc?;d57+6c{{$AcN7MFD{sfQ@{U69V0&Tx;IzWM zgNJB7l(Aze47JBm{yM5WjVqT+@K-F)Y6uR|eU|Tf z>+2@^`cz>K_zm`V6a9UvQ1sWOP0C-dF7Lv(K5oUoL{`fWz1>4EPNKM`1cl>0HI zp4S+w5DXU~YU9@{{jd8c+70ZU?QVT6q}}MSU4n1u z|3_D7_y1-3FNgliq5pDxh?oD<^k4hGM*muydZqsr--!ONyAu5;ip(wF84!8NbC0Zb zl|NKpxnTZk*Y&SFTPgCBua14!F&SBh`*+2}9vR%&{uAW#6Jxd5BTj6IR^x+b4Kk9A z{DW=7k0i9nYstsYztd;zu9^@ZY_Esl}dHcat zt6ZY16bqmLlV`X@~e*vJG2VFlA|DRN2z4QD*i^Mm<|i)`D%OsDjvg@ChAbEyz~YiUxE| z4#q?wk5DTfqz?}y;WzUdXW-zM;unnn4!*PbtJrE);wz|gYd>YW_-`%SvnuJ(MQ5P= zI%l9h-I!NcL$wJMGO$vpLI8RZL}0(tM=V^>t>Y zD(tnxeM!yW#1xHegLmh4FMd}0CVQ;j%t`D^i}~-K&A)RlzO833-LxV1yt}1fTi;~c zJ)WJOVSAIN($9nEs6WFQur0AAw-#@7IiGvF(zDdQp%{6P=YnUwhx4$yXlEAk(9zAv zul6FpG9kY*Eg1s5;uhLuGcAcobS`n)Qk}|3&TA5s=IW%>W^)DH)1_>$PEwo%XaRmP z<1YBI(NFv{CDsjgW;NscRqI2aI{K;<42k!rOz>D|9eQ#x8L8m=BlDx0{LVvc!1wXr_1=w&_>y&{FEb@BxX#(}G5)I1 zy{tHm4$*AtTF%wxOLY*hB{`0G?4LY_JP7|}j_)TCf88E`@?&%p6K->41N-z)HQ?yK zG3g}ozSr)Wq3(anT$vKFKUQewt*0R>J7#zNJz4L^CD#^vP?&C+`VlUHkAE zHhBr(q2npgv1Mt)2Ga#k%ZXX^72U>8^wmznFD5(VXPh4SE7y+G&yZ*21}kG@xlq1d z{4$*!niH5}-=B2DEeSK?mW|vHf3d11?&AFQai(}%#jVH}@VS$_9hvNowMhzg!4^e) zKyB{w0cBacB^dvRJ+_bWvnW4zop@|ZrGmb;{3pF)R&4v2Z*h#djE&{_+N8K<@Gztn zexg*wFLACf;S!sdeYTt*pV+)HNpN_U^NO%oWrQh8*(G}2*=pZ*Cvkw*az1*){J0I- zYGix(&$qZXDc7dl@^V_rd-Qpj*5`1~KK7{Jr|tJF$+ZovQWJM0%Qd}HopcL$I13(j zf`@08jNh>Hd{xUc=gZeWqYSjwDMM1i>Dw^+CNLG`OX2iQdnT4`J~EK7Smy`}KEO;- zPAvv}E&n~}G&G8j4Y`Y6w&aoT;o#vt@K6UV`6m8<&YI&J-^Vvk&EoOMsIEx~`iN88 zJ*@k)pyLwi5L(GU+gUWMdHlhj9~|#{kNjcyh*@D7mhwy(YXx}&{KI6N=^QPxUs(^L zkkQHW@-I8JeoKF2kQWH7Q{XK8j?J#kv?IcDZOSuT2JA?D(9}dnq;4lB`SI~Lq`Vs! zks3)|QcoK7Y@{A(S1W!1&}pq$P8@l`tHA#d`GW?ZSn}Tn{&8aL8g;1D@d$MoFz4%S z&L^(Cz9s?t`%4|4)z@PqiLYm`85 zWo4dQ?%CjyvL}DE!F5?#;7D2FX~y}Kz!v|N+3e45hxeR3U!8yt^~|`xRVP@~IGdbl zZA`26oajU^R?c%WlwQkjg@4laG3;&n3am!vhxJ0WOJIF6xQ4Z(2Q1(UtoiI!EX}(U zj==B5r{G2lHaM(_CqL%gf%P|*Z`o?BN7l$Us6S@UnxxRa%X;(lq0TWL@HwA#$3i}V zrGg77(=+d+gPmiF1@~%f208>|Vp&`9cY0aAumhcA?jqlb$M6-&9@L`Rr^m8Z$~y4j z3zxTH#lFrl`Q(3Xh!QaN*6-cu?0A2cGw{Y(v%}Mv?%(ZALT># z#v9cb&*{XeoOe1qe+^GqbByteb_616k{n!Wq&MtniKlI zIfgg~``^lO?Bl%jIrc7v;PxPUmlxT)xH%ilrk>Buk0)8daXx+oWj#D;4xT+`B6r@( z*;y3&3#%N_$sd@#2|n5$4W4hcDx)631Fee)@tFqADfYa~OHuYW64I z#q(Ys!Cu0Mp-_(xCj~#55;M`ec=*e525OW&AZ1u@Kjc4Vw;J7^2ETZKzRw4q(6)^A zV;al_FW&%6ZO&2j&e+`}h8u1E#CWzrSE0C({>WSv+>GEXt0!($;stiY3gYBd=6EPh>VYBWrUnk$ zWuK_y;4nP2w|>7)y3ox2w^V3L36w%plu6hZp%C9F-2VagtH+|)KkkL!aF=uGgUI(& zFZ8K6Sp|OK0gk0nGfpKtJLJq^%E*;ZW^-OOhw(Z!&Dl|Ait-iIhxs>}ZS5w~^8I0c zALkRu@%-4Rw9lpwvbPiaBH5c|#5g~-p}&b=qbH%IgHaA^fr5X5E$HK`Ki#AGh1v6( zbC<+GOGD05%bB>yzdrrFvf#7Vl?9*wUS06T>*@j%ehADfUMLJ(@nT^(@+`yOjl?K3 z{M|f@Uzgjs9^~?K8UAjR6)zQX_Heq5GwKuYgjKY+9U68ckCc6@)Sm{;=kiZ(7k{Ii zKL|b!%brz@o6dQKrn@iWAvQ!Z2K)AMmVPb1xR7fq#C>f3owDo5r>3lZ{KtrXf(0E0 z%ThJ*M4lQraT_+6q#yW5cy5$U;-JX?wf29`o_-eocZY*Z)`{ed3##@XJ_X)`yYIbE}9&oB*dH=MZ?R#8U-tVgq6a?>XRhHs`Z>$hGe0jCR-{ z=ZG5iB(HLYIXljjI@GF+kofBNUhI5PVzTC>r=@%hE#HgoQT|u#XE{Tz*X!Df%(NoEu78;bUXA!aLe1cNTs# zZms(G2mFu8{Ahcf!u*Vi1CMiD$zaS0BT9KQaHuEfH_Ts}-%Iu;{J9}s&FZk%n`wH?4$&1dgmUk3+ zCEpZew-)-(znX8QIY`sQH#=y*#rd)-w2T}{L5`HK+nxM`{(N1zG|HJMCq8b}kaCMC zcQO-uE9yD55gnl!&W;>wRa0L4-fd}Xy_|7-Ipg+DTfvoP&2AbRk9=F^8#HlJXoCF0 zOIknZM7AB(crumoVqD8;|4MU|FPc8AV*EbHc6P9iL0`zQft91nb>+XNJx^$hH63_W z!1A8zEV@$vg_fl+5=SMpACr6ONASF0@3yNs^SDMk^SD%2ZAWH5M9w_ukIetj{uIC8 z-JgcfI9yX||>DnA;)37-2v|G96a;@bW zHYl6)-rMM8k8R+5$|qNDqu@N3HVy$^?$@-j`R~Mn?WK(d9z*d}!nlRvs}&ssqb=62 z8Gpf-fv5Uj#=Z_cgRdKVp?`z!g?0|GZ>&{gZQg?;e9&G1Ju~)m%UV?U)A+~K$B(d9 z;;SMc@)%?Pb|Ymrs!C-#v}6gdeKH&0>8iROp zqLYIRrEPo=pPGIChv+bBu%sMz*cz-DWL*6BIndi-51u^&eamsdGWpmTv0o!b7qQ7M zD1pCfWhZHM%0F6Zb-aJ5)(%O-hXCzxla{Ha-J<1_w9@K+{z0UPZKc+Z_t2vQR`5N1 zhV`@(_`Uufh3vPh&JHE8+el}h$6hh$>)@mk2xx7QI&^z`>WIk#C~EK})-%E1xC0 z+V!)pv|v6fX}{9arg!HXUhTs67I>1T=Oc~(D$-ot`KDI8s=Lzke59??(q?q$n^*06 zxGPQ1N19hlE9%a-y4qFVm8Rz-?IA7g&hC8Ms! zq)pP&W_IVBTH})ap8Ekw)ANz`9WCv??tJrVuo;njlBVY)P4gM?z<0azt*&v2exqAU z)ANxg_7(02{-rzLwi*`;o1UiUBTe%!^1%1H^Bt;jMQQmYjePJcD`^Q@+AJ+!+d~(N zEFaWpHtO=9K8633RQ!avIiu0|-w!Vqu?7U1J`)})Wr94^N*Oo*8)cNqrwqD(fwKGZ z0-j>8tKBZKUTmJH_(v-Pj>w{OcxIjI_8E~2d}QD4@Im(2uCh(VfqCfF-@f$W^=t6o za62-W+co)u?!RG^J;0eO=W^ZtB8+m9rotx+^zWL#2+2=-KHz*o{6(zhj8o2G)A1Rx zRj<>6zS~sli+0c38BKjtDZdd|UFAdSn~dzlJ;dT0vt0G3vj<2IAPf8ky4q#mP*+>d z8UCmBvom%5>}}{64@bxN19XfJY5LiRH2v(U=onXNdy`d9Hlm-s1%2v9bd4L4dmUg* z8$Zp>lJf~!t9J8GE%J^G#;TEjX?btNrobv`Bb`}gux zwu?50JHi`C&r#mQSILe!(9`aV5e>V44BfFGD*%2z@IBHF;LEvbS!6f-))4rA3xQt> zOz7av26Va`)=}5R1V~{8g}S}!`P~=I4a8RH zkbPbqXP%rr2lM*LoBQYlt=!1G3w61D&QE49u;ro>kiDb>d!dF+ibHHPdfWe{-FLAF z9~=1WxDCG>x8i@}7W{Bb!XHN-K09*p*^z_Kj(wWH4w2{VWY1rA7xNIm6p)|lTsIW!U<9~NL*fgMF1HtLGT$43k?e9hS1Mi4hR9RH1B zjTY>JXND0=hju$o1m&Mr40A-w7wX8*KE%R5ak6X}}&)+<$VJ!Oc zFR>5rVBeko3HA@l*|F*D^Y6YE8%XveTkcef?&SZqk#^@VPuBc>OkL#G;(&_34}tF^ zc1h#mm97Khw^UA^>kQfc} zY_9xQo)10p6W6vsKU-mu3`j~bSeJ1H!6Bz{e&-x`rRDt$=G$c#}b*<;uv(tp=t=dMxT z8I|ISx;AC{Vq)T4=o~Hj8Ka_ZNJ->*J^mUi$^Rbsmp--Mj(-jMw2wX&&?l$Ix$6{d z8cx4P{BgOfsruPUiP5s=)N!kog_l&e8FIXCr_;JNm z3CA=!=#Z3RMNKthBhW&Os#lO3%t7Ap8Ff#dtAIb{!k5gi+}mPD6f!miq&YpxuI!0Q zMcNeX9t6h=oVx_acwb2w0vyK(i>4bRIxs`V4@s$^Ke^FLYBjhM8HUIcrU>i>%C7Oi zJjdC+_&!PZoEV=hdLhWsO3k%N%6lectNiLRQQj=IdCigV`8gzRLXTE66(>^VRF+rjJ)%*4iF%+-8g{*pLf3r+oe@0bSo zHdX~~qlIR-EVFFruMY5?+Be3QNd zJmjjU?b+D+xbA3)(&G(?Yz|w5(aXV^$bBRRv%oq??3wg&cVH(rFe9oC+xcE#HBV5A z4lTQ*WevV_nuuW#ecT_9|Acp0>sIp~?fzi= zYTn^%`-A8xjo!h5N(Pnh*=V!>>0Dh=2^-e zdh&#?)}Arfu@%#Y8OZvKKKz+JSXIk(yUdZf;eF&x!U3*iO`ne)g4VyWoT<^bRP?j= zjtklgN*_hnU;93$yZ^oQy%nG52k7V5;n5hMHAD3AAr?*geLY@JMRYaD#Y)*63uTiDUXXkg1O+ysDFe*ub&tiQopkOJD2rKs+T2e+Gr-9d)&vKAP1E~2Bc!h)&(-LgdK%zM`*mI`JW2R~@EoD> ze4%e-50(+uu$4-291_z?PL{#-)ee7l6cdH>(0Z^6e_ z#yu1t2A>w3sPIO?i@^iy*e99bm7%yX!7Fo_8$wsYGiS4I2we#u{)n=27v9^>vxa~C zpmT=t)`u5wX|cj*9LSEN&~FhMYiBGXWE{|k7rOvCkK^3Dy^a_q!g~%;=27PN5%${! ztP6eMb)OJBZHGfin6AbbWSinVBS)=Gs+(BQVt2QWw=YwYKTcC@BTO+i^oBh6!z%hP z=8dE}#`LrEouj3$!;HfSo##mUjiihIy6`dakt=QX;S*Z+A*ZQ73f-$rrOx#MzLB+f zX~YWD;-#^MNgqDe`>BAp^p_t+eQaKCXN*{tg7?j4LH%H94 z`sTO<@#&C<-r~Q$w0dTZVz$ju;tQ%2lV=Y4d-Y-Fyauu^@HGLTw-JF#6nn|12 z>uI;lg?Qj(o3LkwFKF@4SbJpNuZOo)quVa?{=f8o9psFngZ8FkUvvT-W54y5^nqBA zLH>ozO~&e@i+L>$`h1E$OUw|-Bm0ZcvHFN}(NxZ5o!C!FKMzyp*J^A*Cu8N|-zAQ* zI*q<48siCRDmrFLyeI7je^M^bN7T5=>y%jAE35%?CMXG$RCB=`#b$$z+iH}WB&Xs{ zGAZVQT=b@tuG zO9-Dd)@by%PAjxacxWh}+*hb*agx&XI7$9h>f=g!dW!H#W8D)zDLA+byYCB&Z)eXu zmA!KTd+2=j(o@)@ za|U-ni%H15W-iJ;RrX5vvuCYA|4H^rxp;L!AVec=}HXaz_R}CyQ5vzMs%D_VViq^uk6-Nsjzg*Um8)GR%=fZUdxSd1n%y+SG88%6ob^tzi zD|n4WHz4lWxa;HY%AOY2SXUTN|4yMJ&<<`#t(e#+Va3F0Gg5{YKEC3Ga#zZ*LKiU( z7C!Q9;kuNC<*xruD_qFA){QCK%V)fCZQ(-BwxnK#OY9I;=05WI_PTfR@vd4A8vJ!- zl+`Ewx9fBy`yManbBExmhx7AV3Rwf2;BOn@Z->-1NnUux3(Vm({oGaJ^;(&i??X%V zT!M>L&{Qro)d)Q~>DM)nZz{Z>`M8StSVF(WuE$JYS3pNApraMgQ8;}SeTdf?yHB{{ zA0d_lF@cVA#YIe5FpBFn?2nFf#igV%FVhNdUGZ%BZ7VjH-?3tQxogGq<*%V5ahxj- zTnIj9Os{IX^Im7u3xnS+Z#guy@R7k!7e12m{qpyD{t3^Ud5(NzD6u1+F8m|Uckn!e zGsfFEW4wm?dL3iDezRC zpCXeGerlQI49MQuF7Sby%Kyd}=m(A9oL}l{=iJ6}kL>^ZW^5!jWi|R(a;`3ZRDMVQ zC4ZCNE{Lcr?+?S3v66o;`+Fn*zq8KIXFU-(CfZS&m;2AFZ4Vouvryf{L(hDTh-c+EW!9*dUf}AIj@p@zhztm{yzSVjQU&n z_GjXee;%8-VK(uvC9YE_k1W-Bo!G(pc9wBE$AurpiLJzo>Ee%( zm-5GbjG@5`f6sGo{BgIQ-jhEDNPic8D*Vw2e{ACl^2hq}qd&=M@}ei?6#fWL7XFx( z7^Lk^Q~&lh__z0?&Z6;_0rC%j36B&yS8h{Ye%zGklUUDAcxkOGxV8&#+#u~qq#x|d z{{&x9(WjRE>}TLM1O8Y9EqdUM^VCG&e0ZS3ypJ{2x%R*dKVtp;7`!}aGW#l2Gk#6Y zzS-xewuD`r+A@qQf@hOD#22Ps?F(0j`6AS7e7TA5s;qL*|q0DU5Ylbmm$k)uyxf0u@wHc1>LJ99?Ce$yVZj~K{2QPFEWV(P~{8PMqb6ZW~5{=Sz?{V$m(p>yILsY{nn zwep`Yv>-8dM6UPb{}1^14fPv*csIsA|D@VK-i zr2lE?sLZ7Q245(NwiF6)C}z(j{K2d5n`VdXn}la#WEU(xJJ7elb)-*G?Y>*#9T8E^m}?Ta!#iGsXS_CeXyI!`*G^;a zQ2rXW!`BWTRv0JOldXlv;T6XRt}Xl{ydr}A{Bd~2>v8^R$3ym32G20&i}TfQH(xZK zVTn%-oj1ZW;zIEBKgB-?vCO=rhV4h#B7A7F3T@EJbR(-q{*==F#lKq@kU!|WZ< zzo~Fy|1yQWDSoiTM}I}W$gkCnPjW_EVMlLQ&fAT$w^M)WNXiNf&Lvv;f0r1rjoZJ^b<&pT`9!PvQ;L5qRRn_FJzNguWgqz9+MrMBAJhl^z zj(ohXFfaZ%`6hmN#UFJ8<%{uqd_Uzy2I?fegy*9?cfmqu`h*#O(h1_bxL=o#VetbL z&Luu&p8!sEV@}6j{B}w|Yq?85oB5`w+3(o7iw?L#f3M>1>5G3s^xo3&2`IkE1CQW~ zoOdUrU6UbcJ zFL{<4R*{B|E4p$OYmlYM-q6F@-=VT4>kdaOTlZlfrQ;3Ov_C{BZ+`Nb`uu};{`AvN zmi}==+{K)hxQIC4Cu-cmKIj;C#we#hiCp{So2IyfZATUVZ1g~fcEIlxt1s;HWi8LZ z+n$Y6{MVAcko4c;@9wNQ_Mo&;^OkGM%knI z*aOR%&di!wXOFPwo`c+IggNQp?hDFkE6+!A(bt9kQ^+H_>QAoA3(P{!h<;YlEF0%- z@bnF@<#ZfjAAA&gOd{W6{4y=J*?hNwjX8bDw#DZvxjvWU0lGRZX+|?A_*#%x&NAi8x z$Jv3s&x^_C6yM=9%UULw!+pOr$N0X-{qNkHBlk@3vJNdyRCd%;&v|69M}T2RSNSid z!3Wn+CX2jTZH<=@R=gldN&FoW)UrBxW@8(F~ zVJ_|6tn8{|4~Oh+*UUbOfANiq|3B17U$!Z!U3l^abC^%Y)QSG`2Fw z2G^W9`IgfTl|6NdioQK?u&^##jnBQV^l;L#OKs+#Y&o%jB=0K5OK3;_;oE4#cW8s? zTpM&73(frjy8Q%N90|>-XRBIk~S{Pj;j6G7O29W<~@9B3bA1V7!n0lo7hf z3>V)OQ62?2jvTcs{>hEhH!lJI-nT0+s1fFH@^p(C3E253!Pxf{8P6Auti7Z9nP2#$ROZHE<0jn8UrXFoFVtKqiMD|`i z+M>tu7*ARGCVN67j>q`N(6c8#z(>E*+h#>ikY}T9`0dSlebnV`3Udbcbh1Aj0$e9B z{uTn`zk9;Sy#fsEF$G4v^efrxIz&0yTM1sYx?SDny724muG=hqqTGMPunBc!utWTYzz7osxBAloB|SqI4WFsaY-9AY)&Vb)=d*dVfc9O<67I(;Z1L zXB~NqdpT+7__ZA1*%g*`WQZC#vX}eMl#Z4pHSk~S!n0)l6=!}sfBt`~=4`?_J4Ho~ zn}#p3=1O(fo^o|pkQS3MgY~)|f?i}kagN>h$jyr88((auk35PEx3ux^+@)RDsR7Bi zkM=lqK5$}8_x$vsV`9utV{UrU5dnv98S^uT`8krZ+WcIS?7vQ)fjOM}!$YPzEbN0$ zT(9ttMm_Y|;4xd#A(6d`z~cPdb>R7M|EXzV4fv(?pF;oXFlQuvK6%!4?rwZh|HafG z{~Kb1coM&>$mDGnbaO0e&gmx^yRyu@z^P;U-!)LCbGlwKZtFBJFYT{oLKoK>JPXP4#+ZKO{b)^U+5-g+5a>^Z7@P z=nbb#&a4b%{p~j~zVyc(PTVN!-;bTP*f3_Yrf0LJi@zbUkDp9h6luu!D<)%KE%y4N z>zjFJ|Ac6+*k-Tmx-`-GjrG)ytW9!{T$vP2Ok`ioel6D3N^D;mUP;=yGG={7>L_wx_i$HFCv+PEA1eLi zLZ!Lv$rZD9e%e*w_Xf8NEZJxgbHi3Ym0^IbCVRKg+}S9B6Fxf8x%2;S;;L;}aG6lA_H{mvM5G@sbVR zTftj%mfJkbY~>l)DGN<9@?D&fU!AJ9nbR}1%=FA9mpQ3JE5f`NJ~Go@z1X|WXOB=NOal&eymSX>sVb;3q zk&kRLM=u^8otbXEq}=9(He!2TJeKoT(586o1F2Jyd%sWF1)OIs&_<*W$1iU+G%D6< zRBZeE$=->NL!)Ywt)xV?=`Yan!LueGj;}CqD z6S_!UMze<%yNUm4T{7txtLx0=O?l?>VoOq@*Qwz5$y%~H&pf`E^JJUMF^r3*R2MdP z-&WWBdqVx->vc^1zo=sYym5FPv#6u=1Ce12pzbGQmB6Q6CdXEjlGw4BJEaufCdGO1 zuLE+ae_}_J5_kcbAbd=jybX! zvj)jLFXOnCdFuu6(C6%1FZQ+ZZHEsF@rzl^55kj)pMt%289d}{=-Ylk)pi?>t!Uh%Ca!zmmQe@-JS=9g$7!6GHboW{2GmS@ftatt5hb2-}AHJo^2! z`%<@)r$f%{F?ZAhCp_aJcw+}=xkQ#H;rjivMM~f@%7jJ-9uS=O88~Or2JMMv9p}k{ zb1+G{=>$JXXBiSa4>E+a4z!6Sk~KHTU)v~OU-PQ-1N)(~tSxf)<^s=xNz?nzZfN>h zihb}1@WHGpTHjrt0xSQtTg6`T$R@s$|Bhed8%5H~84GAHbEtl|0KV|^g!Z(n2Onrf z_=>aOH;cOf-n3T1n{T$J6;tRzbd(YZHOXj9GooN{KRopK6^*NE4kjoi~2N4!P9 zr_*9PTb`k|l)T;KX~oA{k!tC?uhYYtY2m)k_UeX!mHKPfaX$g|vigj>I;|Hd0S9+^ zS|)N{Z#aHupvzw5gwp0J^{}YTWtOoDXKoDH8M51e#EaedYUX<@|H8X)9y73-y$C)) zPbtHcQ_}wxRdp(xRj1tZY1tOzkahgjl2Z0-)7iI8WB*pdKCT#hq@r!?>vWl-mAZ3uAEmd3Ed+s{K?tw5#E5jo3XY-?vc*G=iFZC%sABV|I{)a z8!ep6@SyvrUzh3n`vl^q7xfVKjOD7Lo}%8~9hL<%1J>3R$hA4!^D^g(ps_LDqLQ=( z`hlvID5@zz;Ik}YWw9prPK{*Gnn=Bq*rz6Amk{aeUp_L$oFvM1mlpN7Dc4=bJ4)Hn z2u|)la4%8zfF5nea{UaH!aZ1GA9M)+3-6m{kCP<)=mGfY17AcS6Xtx$1mFhHMh8iQ zePZI~Sap4}<_gGvD`~`^2ydUx)q3kI34;{z^U&9{m zHO_~=#(e>=bGK~#4_xamuDx|8 zi|RPFBp;l1Z&5kI za`?aAkG@-F2s_*R>HTgS^6TM7@ z`fJmS{;JI^>cKz4j$U)*8=uWcgpTy}JrO?XzuL~kK!)AuznX%-lYad-)OW9>Uv|)* zvc7Dk51(364t?k^j2FQ%)R%`0P}d_D@XLP;Fhbw{X%EvkLhZMTb)bLyb>d%-ar^ag z{w*|X?nko_y>7Lt$#dx^y;GwY-$~46$;@d3Y0p96Js29KFxI0)hT(UI%{}g5U#cDM z*k~W&ayH_}oH{3-TJl5St_A)Y^0}J)Di|;2jF%|A{*p$@7Q3WN@F74Sop2C&m*{xb zy>wdNyNi7id>XZ%vf-CrMv_IA7Oe9amr0Ig<65^~WEf5u^fc&0e*nEh_0K{+YTzB~o2lcS2;MOU-Zz`6uR$9Z`kPSQ^MP@LhXH5z73gqd zfE#7N{mTNJK^uW-tTJ}T*yw>?%r`q4{rI}7D8hfe)(u}- zQF6DsQT$t#k8Sz|^U01ZRcn$p;HhQmdP%FH2W<2!JyJ&hb-)enHM6o~#jN~**`!Q_ zMr$3;Y<*slu_o(}*eia)*gTA_=M{U5{wDoa?jw^tSIkla?=hzqfQR(W@G^$Icv|*4 z2hLWu7Ob15(iYSW{%{BP+)SuM7a{VEN^}v2gioZd!f#llpHP40y8OUF(mBc7vdz_# zg^wO}8|Upvm#3ij8oz0l%w;NZ{llnJnZ$+j10g(;z(dv?c;y{+&`Z*Wuj8@~xmky* zpj9UFqdRH0I_mz7bp7f@AK#&XiG2ji+J%rYqG;AksVXhtsyaU~XJxupt=I*cl;q7%w#g~yTAH4LF z#hzi}n<0K$@NW5|+`Cq#X8czNYq{u|^66K-4aQvAalR7hY?$tp^5RFtuoUR!jAJ}0u!O_=gU>+-_QkgEYEiq-lXJq!BbR< zPGO!>F&e(Vqk(-DVVjU=D2w&G$qopAfsXx{$Sn5(t1<4w@smAzZ$peT97lyPJzW@n zM!HeXjxZc0-Cr4lf=~NwCATxgmmC6pi zZXV;V^xk>#fq#)EKAJiGCSBj6-}`<8ovNSwW3>*IjK*6?+Vwe4Dm-avUZQJFWW^vqF0gr{w&|3y9njU7}s?*LZ4A1 zWZ!_UIH*?`?yi)?t67zf`Q9>arKE2go{m!=q?URed6lN z{<9zKDAon|0Or`RI%EO|tmqHk0#4#)OCIF;9=e&gs8c<4T1{S}mykN$7gndw(Myaf z59t)7E{4u2ye`j^ujn>vgL$~nZQRj6kEE~X(O;dJ*QC^ zONb2?YrbxC^@las1(o0naJr?ZmwPDRd)UPKHITJwV35a>GvoCK=tl>Jpa&BEv5WK_ z+$~dhwWa5?5@Sy-YgCAb3h@b{J$&a?O0LYOFu3}B)$USqJBGOejV@&(X#<_-vmat# zm~}1lBl85jt}!;B&-FC}b2YgBN?@NW3v~Pd82&q$|2mjsWWFuI=ey`qqzp^k^0Jfo zv-^;IJnx|kDd+CZEhe9YcM{$;%DgQGo&Bp#Mi#fGBkQnF%uP%!#;Gd*S$cD=< zj^yq*b@;FH?NguQ{+JuAA8#!y5Lq_zZ6zfu-HMB=ily=8v)Iqq%%wiafJ-><+&vhb z(d@}@bd2Jz(3_DDU?0OB95;x(Kg)*QHQ!kx`+w(O2TZ!We-3%hPPZWQm$Lvao9nI) zd|2TJGLXwY?Mw7EpLt^(!V6?StU69`x8=#vmv75Prjugk9!YpoJ9QCys`4GD>*Eu~ z=jH3XaThu)WMmbSq01eWu7KF+csUg%It&Y8oW0M^Fe{7B+mP?5Z!On-x_8`+4=Iy! z>add>E;dT!A$KKt&Ue+U9;PIA&dRRAuLF9kXzy&=R%|Se z((mi-%ES(2n}v2|g7Bb%17qpHbrxg4+aF&)`VR+ZEI!PrFI%H#TQ{kry$@4<-6``T zH}B$M8RZ}1&qDkpa@WSOJ*=bEqI+A)y=JWY_*g!W1f8bGELkV#g~ZqGM``dw+()>Z z`v`9V*P~Zl)O0XXX*nFDw!DVCz}vtX{szPTx>AklKKPmVnn&-&e!FzYvUN=ZVw=XO zv9_c5Ydjhm)AXboyWfG1;NU&3lNXR*%hI|x4_04r(vhGf#3w4-g)WIc2k zL)xYRF-_0#Ep6YyS)ML@eTdGd&OAszf7VeB|5&@^xMGQF`XzqRItI!fi?guwNqkMB z!?b40_$Z+r+qwHWGs~X78N0AL`d=HiUmf&$JH9U@f5}_Qm<*wMC=1Y24hHTKo)mdeVM*YKnI?XK^dp--$2N252dL(vh$!^~$dX ziT~%=lzp)?*rB`@dI&KPb)Af{x9d^ zXT>|+@#%xEfXpY-NAO$V|0A@Ky5uuvWK8eJRw}$M;=@MpS0XGK=fXdOvFU;yhJT?X zua!2O4jqonI#RPHNRL>2Qoo8lRW$ZbYdBZGCjWk$&}iVP-e(lek=_9=p*E@$odI>< zj1Pao%gYzqtcqD1?$k)*Pw~s*Umu`DYFav$53CJ4Bao~>7-vd`?bMle2n&$&$nJa zZ&}Aar2HbvUv*t)O(yNA*S*H8w@F{!Yeqj?6zua>`g|dMKKq$fsrniP9>whaI`OM2 z`94nlhv;~u_(ScV$$bmSdYH|h$Xn*klYiNiD*adbaTj{;&^+Jux`AtGtvET_)$_z_ zy%jm=eXzwX%QG8$9s2+!AnV09;7R*2WlZQUaD>)4>)zf9Sz||&hw%BDrsT-_{fM-a zdb!gcq2%oS z;3-IN$W%l})!3JQqVI5DdZ+UsdyiG0p57qyM5wGb=4m7ESl?gz(k7C(QGTYx2g?!r zVs~HOcHjQK^kYbGlrQQ32|d_9akX1&q*3_$~}mlEe9^+0?HS{tEr$gwA1ozwpYR)6`zdwt_-HL#1i&_;X|D{*<$mPhqN5JAM;qg_qanukD0LK`H=ei9$JT1xA-$C~s|a1A=wTn! z)5Pfa4E430tdR|=KIR7CQ+*cIrOOWTX;ao&e5)Bc*HFI->0GM+$LnnjO8k9ZiP>Z zLq}kTu5OcQQsc?gHNU1GEJF;>q3e+=G%~9(P}A7W5JQTnBPJUB7W(RLg8|d7pMa$UZ+L6OE-0 z)PLMN@o%(|jshMxOAB%F-?KT}3`fNqV8Kh6*e?p(C$CRGB z8&rJ{a=R(gDSL_=!0Z3!zHqrGyx4B&U$ZIOLD`mVram9SS4y7@jeYK)kue|YODg}; zmwrGR@%wfzpKrAB#~OPb4f|+pt&R_lM@Eh9e8-$0VTWeg)?rq9@|o|l{*miD$iD1A zE$8k`oSUEN@Ezh`}w$mmq(Y1US;XD81(;KAE+E>_||6mSrAty@D z>fIpz*lzoQl6W`1M8uw~;8~IH7HoU*_TCMp>Btpgm~W`tp*I!ZuHEPvHD$skc&=&8 zp&j6ntPWdj!Oqr-ed$!}+Ey(ym#3Y#H}%sW7i{y;U$W`*#n_W&sOgK($M>`36%nbR z2N((ung&mrSoYksK0*K=?y9LbLzfU`EZi&pGQSU#l6U!o%s|$0Nklvaa)~Qevmpf05_cHJ<41R z9DV{459Yd_(_TnP&&YC(m3wb8;6JqO52d0rs^K1jWBKslg5#HeG-!1fv>FAiq;46| zuY>b38K*WiYQJ7lc96DJl_wLu#CO=}Tc_S_%wWGJ?b$JaK0u!mxKO{ELZA9ted${s z>ML}~JlZ?4gR}yp*KP77-*2f~sE!1#i zwo39(qitpVs)|sad6)JP97PT;@;KHy)-BN~8v5*L(sCX*VOLbdBH7Ei=NP&b_Z-o! z=z7UA6FM)EjTySMB>zLmv_f%G-o@n6oTBW|*G%?7hQB>{k2G03hxnHbRo0_u==s~S z-&s!#RsxqU$tceuznnWW#v8Z{@-Jsj3@_uZU>S#W*&{j}$`JhZJM&VMTCo?`K2~Zn zPAU%k(+1E#>ib9S_Vn^1@~)h!EV8SOsg)zJ^BKr`5tEW_&Qh*AY#y3@lJPOyrX)z& z?+N;PJs+k?V?&!X!U5I3O~$%c*Zi8t3pD ze^MrU<4Y*VWgebxulre9Vda_o_P)FmpO{;BmZ`{%w0E|anRNM)nxQF^xNq;lvTW95 z?6`DWSdF_lp--aNz1aUWIB?0Ih6H5KVE@y#*kOqckLJxDrj}cC6=zq*gJE_UTDf*i zxk{U=IK%q~=aI@fE^#?6kwX*3=Vli)Dj_Vd0UKZDByC7kxyWh`np~$khjWgh!8KjZ zw`c8aUZ`BQd0{4ZyB{VU)aC*wcD49WO8C;MB=piBGZ|k7-3IHl`Kh!CdLoT9 zTY(WDKH+qIfOwbCH6ut@WV8M0dQ{pb;|yKLL)R+oP5aYz^Z$abqdnV8f8F5i%~E6Nn}kfuKl z?bYWg4Zo2x2mT)4x4m)}4&I~}Ib7Bt)+}gSxPPqkH_*3|_ti>#u6rPN1pT_ShjrO0 z{Y%meW}F<#i7i)hOMB|sQ)~4%>_qS9T|i#HVVzTQV|)Irq%hZr+& z8F__xgF~d3G%DxQ;h|UqlKnT5R?4#^7`$j-n)owmt`DXudU=tv+Ekwik7RYIgR_fX z9_zGPT+Svv%*J&>Ry|CM!T0a&X^Hk2ExV93dOi1yb;{Z=^pJTwW699KGhsM?@Z;VM z>%e*7&xL*in^O61wJ8%CIn&$D*=6BT8iVg-z6*jhd)fqVrY2=?CGAg4XK3&S`OPAa zgH~BDsWbI8B{u7I9z}f$sf$*dmMHjDf?J4odw{zYI4k-0hZ}MhII*vm`e~8OJ@7jg z{P)?Z-*|ix%Q_Wm{|)|}; z9L~yr&KmnEV@+&v#J`5<`P_`PA*^?WnSqU|tg~XPbBHw8(q0F_8(wO{LHLABIlmo$ ziSN-PhOJGIKX^TyKTtUz@$YOWZ)fe^c~?fc@L8MhFxEp^2S(o8yFm@EQSv{W|DR${ zV1dRR$a?ox<8u>PFn0n@lzG!4I%>wT#I?Xf?k#pt%6kqOBWt?Gek=_+`(NPc4n3?g zCl2xtho^<_d%d8~_Ggg)eE2SXts>pE$fZSozX3ls2U*jP!GFnH+PDB*FBX2B|JlKJ zC-KMm$Id8>_e=4ADtwzc-D}ODP01VZ-FcugU?dM2?~=z+{-sQ0F*^=Iv zR~Kp61!t;-cPS~ZuTFBe$}{-CmNG)T*XJq9`pk#WKct>1b1iufW&X;1)9lL!?+`Al z1wYD}9Ts*EVI8CLo%VOlI*wUkI4&b@Iy7xFr8UW&#^OUj#sflh=_LHX z;7n!0yU5h-W~EFUxGA+TQ^`HyHE&}qV{b-3q|6xs!wycbb91D=-;?kn!lggz;UAs} zpGvsUTKZqpCk78Mcr@}|XjbrV67Q>`9~gU{6n{MFuSZYno>35B&#wDXXhKFJvNiHC z_MQ`>7#FGj@z7e{WxT6cOZ(zqFycoC93 zGY>ju!jFX0eGGBJ&)VNKJMBpkzRamFOwOA6;$$UKZONSa65lWLZQ^@3-+TC0TI>%+ z`W$g4UuGL8NmZrg&(iMD{}A-wmkPfvHiko#^+IF&p8T3s@YM?T>_eePX1ucFGMQ&0pMxyoEIOIK3VR(!k{__E=JX6}V9UFoEaw;}xg)wwCm>p61Rt&dBUxzjn3t zcAH%qz4z0w?`(56~ zyqDsC|M}A!PM{-`J@MD)Kjs|zNh|hG(ywJL2=CVm*~92^aQd{&pQSrx{!8)K@)jOi z@YUx>=q%yAtP8UDIi;Tg--2mO_|6ZEU_@jkm*)4SI-6h1T^emZQ(r2fs=Y0 zqy+a-B7=~zH546Fs{fxCxdLtAf^P-AEq+N`RMHkJXbaKbO4*^cR_q=n{WGLLNS=QO zhk@)v!{@EGmA(2n5&SbIDYcjKmi2_TPFTYFQ^%Zmh7V8E=gS?y2p`@^n!-y%eE1Om zZt|D8bu!Nh@6>JA9_)oD;tVh}3ZDbCg9CC-a$mLVMMHEb5nUMV=%yWIjT;CK;#1P_ z`IzdTe}OBopwkst_-KCMme~b?HJlS`;dzbcD9`*0xc9bGAzmfk6!5m$eB$d-WD2rZ zcd?gPJ-EIs+vDF@yq&(OTJ{%-3>Da-7i~LPBXwUDp|N!RB6y-ynd7kmHTM2rTiac2 zy%hDQPfAIypgXn@~j?f}a*}5Gr@@H8y=0L})Xl$8?7v4tv zjx0ca@$MkrjDdGk@zp~A;9Tt@1>4ehhvP$lx8iUGDj0VYnV;afk-H{)UqyzV%z2J! z&`t7^{l4hopP=5?Ak&fW&E%zEe{h?2JojqkP1f^W4hMQ7{TvHAgk*~nm<+u5(#WJe z1Rs@fi__)Iw3y0~6HIW_4oh5(Yi@Y+Y>QKIUM%VH<>8X_;N1Y;$`qG#(`oY}JKqB% zl?lmHxXVlMLSL~STHOvlA-rRNgSQWej#kdatw9%)9H|6SNw1fSOiTPQu8LB|OL@!u|73K0}E7%q; z8smd+#)N_krTj-*_x0Rn>$4q^8fRli2Y(i%Hl4*yf;fCXROP7A)ddb9D1m=6f7ZRh;1 z={;*ySM4jO2jtpRrS>y;Gdp?`_Z33}_8+>Og#*~DT7vlRHsyN2KM(x5OjXx|3I2L{ zK|NUJv)By=%bP8HFZjD3V~@+8Q}k!~cD15#&m#T%&?pt2Q|^Ws=r_Tu$)08CN%%m@ zb6<$Afq6lrKAtU+4o{acPk4q8b9f%h*XIn+V`{+d=Z@Do1;+mzQ^0+bDd0&*o(`-h z-5hWaHwQd_5B~q1|9ANR>19UzPa^{EUql2vWtSWOWsw2*HIV^N>=nj;Y*fIV7!~mB z3;yrp|26*az0!!kcR;|sdO*NaP-y%YXwXdycuoiZPxEiG1U!EzGUESW3Amr<|Bhng z{|;-weU~-h8CPQbkFy2bIktf3qu~EX{C~o~f0_~Rj}Ewh6CLo}G~M{WDJI~qjtO{% zmm2@WV*~Dyu>sFJ!T)#oKg|CxW*G6mhzq!X6&LVaGt>CLCO+Vv6(8^LGBmS;|0r#?j0Z+~~#(&PBfcug`0naDF|4;b;Vvv3Y)b(^a_vd_bJh^^rs=x=9 z(WlU&jIS%tUgA4j z-c?VSD()a}8E^K-&y2TLzcJn#{l<7JzScc8IFJC`@&VHvS==`n>fc#O z;I)5|vm;T>T~&h4R#BPfHSfMh40+I~Nah;BB^!(-7>3MLosbVIKbjEY}m*5WS(IcFmKkiZuv<;nljZF)s^9z0*- zf?vus>}bW$TpYgC#J|bDetCran}mGJ^}z!x_OxP$s{kwfm*AAe+pwt};_oHAc|?8L zGvp~UaF@Bh>?yv*PFQd}0gmE-}oF~{Bj<#*X^Kwt>p7?FrO;&Y3`TL z&EvkA$9cep?2Ls*Vw<}zgbTL04~FF-en)OD_<9~AfRA8(h=k69$4lgK5Ih=yI~1(L z62he(g8wi1zPU_fw_$WXyt3>b!i7%11AYf@iQmk-fJg3KeNkwSy{BQvy}XADrC5cv0?uU^3?zTR4ZyW9EryQ5^WlZ(BXN<|FR1Ul--8 zTAtXVG!WiEd;{qkNZ+84wth+tYp~p5TeUo?rD}OH&p@6*JcC>GJXn+6i=%z={jGVh zPP^yCojVO{x4SISS5?+9D2a&YcGSz@3=xtBPIz?Kr|SxJ_9Gj+ZQ-QkBCqj^{$2Y@U%k z!+FwqQh5gPBrcy)18?E}WW>44hu?4?9(nFG@F4C34qw&2bKnSH;@*wim^Q2Wg7QD% z`G}{B=bt=>dEVjqJI{ad9N>8k9N}NwPhE8G^5JRRTgII`4SbG!-9%s2y(_+*j_^M2 z<&z8?pIR}c>Nh-op2v8$@cfGB7d$`ZS;zAL&*~LZYT%LFi!VKQ`S4BdIX^ge8hEKj zt8uoxs$k`};|Y(Y4G*3{7kVySNk8PdiDwSa4Lq}WuHh-;Ddj2Vxnkv%8u+nB=NZ^< z?f39$+Ew2n9sFCPJBah?bKneLr`4ayuPXZ<`X$eBo^+m6oSFds zqgMnhFD`!5&mElEKk$Fj#T}gcxP#NNw0L9osk%2Er>4Eh9^K|C9U7?HGO1Scq?LD$ z{Z-kvV~;M@mU1qTG}@^JZ;HPt_hXZ4>n@D#sWgvu)+i`Y{k9#sW4eV|c}e1F|`Vu=5;APy2IJm(?(U-YTM>kRP^ND{n~{9}`q z^*@D2m%aPeVpFbL&LPX*{VBr+)bo_F_YK*AHeZenD0^R#W69pPDAC|;L*=|oIhlU+ zoAD7ogp$-ntm%8qvS^!V1glnQJlqLy8B2NG7ca6P4|lLv4pSDl-ieLjFxR?b z;41M~J^UJENXRap;B1i4%bst_m3>r)>&!l?-ev5g3JKHY7rezT)-%pHU)09EnIccP zBSA^-ZG!JNtAXBsDS`KLViS0#zW+^qJ18R~KkC?S>J^HU_7;BW6XM0j zMP%Log+0T&V$XnVuYZ1qeajI4-cWum%CSb>4odo_VHYF$y+iy*y1j$ZXA6Vr5pcOVrwikv4!L-$R5MxE7y=---C6ip*`Z-ugRY#nkw3$XM19VueIQX$!!IO zZlkr}CB6;aMr*-tz75?5KJa{dW6$U|++t(*=c%V!cgLM<2k&-p4UO3c86WSyr1bQs zaWl5DMjElj8REARfjyQ^&(TnG~`%oE;8*v7S%J2 z_x(;+ZOlcc3DL9LYB#AdUjK!riVGI(Gs=snk8YB4T&pi2 zPvA>^Oy6;Y{3Si31b)u>Vuije za;qE(&&0>m2dXZ|&HJ0W=m>o%@4wYW$_U=*QS0SR{APzq_tD*n-pw*lao$Hhc}LVm z_v6Pp@0hx%HH-J>q#w?^2mPx(EIoFdOC%!zQKkwvzJP~)>>ZF}QHPaTu*>Q=eNm1sLpMEp`#7@3oSWc@7>KA1Y~CA+H^;g$W04R_3luirOJDb$rX5yajbu}PYt`q-4XMZ~p&=hw&e znfNz}NBqGqUyfn19~? zmy7;>Ca;s^W&Ddh)Ifik{P*C$rCSMn@UYBJXVS86A7I@+@U)cQE$yf*5?ity?44TA zV(&C>q57?MWUKJqhrg>c_F&kMHFB=V&VD+_Yzl}^@zDJDnNG80|7ac8B!3R6}ylj-;)aMilMm@f9ftPxuFHhihLzcT(iu&wo+o-Q_)wX5XYRH}a$;rqn{ z%{=5K@_cQIk{J3&*8eqlH}H}-{UFy3ynMSACC3hYAvg%GS(&WOtT{p_*=v7*4mBQ} zs~$7>hkW=4(f{?Z$E`opJ`&SO-G!LSy#Z2d)Fwjl4=zm1hhc(mI?M4RzE{mK*5MA$f6m9&zxu8p1@>WwvX!=71C4Y!eo*F`Kc6!_ zFOT(2NA9`}{m?EoW3kvBI`CmQp1u)^LyxS-6%psbhB_Nvl-wC9>zpOP+|2x1$+$So zoSCPZysn$MXEmVUPmMU{FRQBP^5DIv9XYF5H&&ficUV~y@EkCHba4L4P;B1i^WbZk zzZ}!Ex#tKy4?YL7n7`U?RCdf|4wZUOr_P)uO~!{zpccGRLDm$#piBfj@gf1ZLC#ox@g};O~>%*e(-YFvwD1ll32A=NmFKJ zKFj&A1TW)iEc3Yv519a+1hyMp8gx65i9d8ji*3TEZByo5w|p!7Q49VC)R^vW(Y*rS ze1lT)AUbzXKm6jsZ>`zDuL(a4M=WYnizT+{LfWVq{Nji|N*mtdj7!VB?xH^YID4z( zN8e2Ld}Q>S2G%+E7PBu38deh~^p!9VVLE*eTXIu~llqLFrBp;ypNpwatTndjBQ>_^ zBFb#7o&T)hgkSf>Tc^ZR=EY~qq)zYxdY#%Rx9M7CLOuR6KRo=?vN5T@UfiJD-DahW zkCkq}s?%!?ZL)?sHPqhnY*s5iR5LTvyNIJsoRN&{&WFZF(HWM-V3*lIKZMT0$1(>d zd;ErP#m(i^3mMq!vDAw&sh9d|cniX$UaQ}>+eyf-IH2g8ok!!Th4cD%GIPb`&ROODD|4sD&F9KtQCH;o4#H( z{ZEr;Tb8!WO<2}4Z%AFsmE?ahkB?_D&zn3ucy5nuoid2`@4+D}rJ&SAxpPx4E4_?z zA5FQU^j^xev0s@@{t9K<)<*c|^4*qtE#Z;Ad3@W}M*8&fIUn7MO^@xW2wxTZn>jK0 zEjJD?K1aDF-=SPP2zT{m4_vnH3GRt#!XD9k756}>O4FJIldna!?yrhu zEYinJH4UZ8Bp&*9J@;g_Bq-an81szb?q~<+*)DhOoX@$j zl0z9a(=JzPM1L-O`u2~e_cV?O+gtDWmc2FMvbVN8!khiGWh-y?&z2{6v)|5U-`oUm zP|1F~x?xqSb-h{NS2t&VeP2BXK3e9ZPnnNoehU5nH~-(qd}Dk4?DLJxH8Q4Up0Um3 z3}&c3;BlmFY%>|-y#JrgIj@J!IWr^A%sH%lo^ zrZG2s?{m)UVROz*OIW$VIcKIZH&lM#bI$8wbIwd#Sh>MDXQnYXR5pCibI$8wbI#0| zuyTWQ&dk{Ff6jS5Y|fb(cV^CcJ#5aIiS4T1x4z??^Tziu=lt#4=bVrnun60+{&K)= z_`el@s*T9}u(7Gtn9oeiW%^zv(~yH*yoB>9%v=5AX9wf$63?Ene|$qQK2zdluh=jD z&B6E-iI=@&zxcLbe7wZVez0Hspzx14V+ zbn5@AtG?{9f3n9T&UeT-Qz`qtKmX?R2E&)(Apd>r0i`UFvFxW@Biz^%io7~pPXBnV zfpfmTUrfS&bcp|=yNtbLa|<|+U;XQ9E(9d!os!%IL zw>p-vIqW^;Tun7{6xn-}a1KOdLhV0Mby;iUPt-mevCN;Sx{X-JdUc15ydUR%r&a8_ zei`tj)^i_%eWP~j$~QfwKhn#ww>74^(P?scfM3^M#8*+B zqMudk<*o1I(UpW`;*a~(ith2^pUJp0 z-FSx@*VK+otK;+leNVX!xzf?m3b5L?F8na|Lu{xvpU!d3e8tNK6Ts0@IM7S$=ro3eK?J$ zP>J8)F-qwv;vO~)+lY=|o3|a_6TMArf;+D?)y`pTbwG24{pumc%x?zuZg^|8;D*1R zi)J_^FX{8`rPL*6f2y6c_uOG0Fq_Rbp--JM#Cv$pv~Bya0sP}AHCO7lSL#ij?c7Hq zzNf9+MPfIbOXQrtm2;EGMi&=Fu1+nXf9@mSYQjrM>m|-h+C1p&*v{P$q;o{BLY|;` z#ZQ6f?qv_zOqQl1?m6rp6~E20bgQ-PURN!0-wD-^)zpgIK*}iMJhb>lihaiAh=x~V z?;BVfsVo+|<@suSj`W#h_;=#`OKt)*Dpu=}6Z&dE%{0?Ps>ycbw@M&t$TaI7#^1lp z7Q`h=@>_{Y00UZIo_Rob{bfqUcILM_#pD&4K!(^9(?8}a2_+J?4<1zm<~Aj^~@hkQja2tORUtVKQ z(P8$e=8^?UjO}6khD&*MN}Sh(AGp8ZC;2w~d&~LAL-6yprwp#O$1H8h1^nCD?@A>Q-vQm|aV;mRfEU3vSpT6gUrbpFQXR|UYy(NwNa5ams`_22QE@42+8HPP@d7s)+1o55G^H=k#2b;|d=0lbGsm)>J)b#CGRo+#e@b9ZiR zBxxQdERr-26E>GHsq-U*Nu3{|&MOJSUtR3wZ#^74@~uZ=AA2P`cHUbfV(0Qb_aCD# z%sSqDVg4&)V%y^D;~shIyx8+z86CTV?>Rj6%+aoYWL_xsjvB2@IFEWy8yu|H%SOG_ ztYE$PkEA}AzkGhvU!{I8PwJ~z8uglOHtLmTZmpH?lmV@^YDRSF&rGegCjQq)wbm|A zH|n)RX{}vh8kPQNL~CtWy=sH?s{P;A%k>Y3UZEfIv^rd9#qxWgTqz$D%%&S}W(E4S|9+JAI@GWhq;ulcrI*0nWyz@>@_1<~h**D&JM|K>Lvy%7hoeQ^tyx z@IdMj^N8#Ze(MUfFb0kOdw*&LYlfT#!XCjZ^g^#6b#rE zdf%Uq-@!7%UWp5iAKH_?R2v*Wwfgv>A2owVih0<$zcMEO%Dgh+ie!C`IKh}+kQZMr zbHiLE+18?_l-#DIm8>wu+V=cTbsX7%KV0raaBKN@+1~E0cn|!J;Ok1_-og)6#s1@y zgvOh>!zh2hdvewzT3ps6@p1Is8w&Q%om{|w0skw|tz5Q$*<||v4J!#-Nf>?nh8Lm# zqr79F|6|AsAJs;tUomM!`hAnK(q9@Hn{l&!MEYF5=V}+FU$*vwj2Ge~GY;9a(iw)rRsDSmrd=ZavRh znfJDkr)&M@SS4a?96mT>mEhRDmo-I=h`!;on_WE@ou!-_#^mM~%<1t}WBe_2GOu#?*#b2scZJDp zdo|S+puP1mE@NazzH8C`=eZA*^;Oo~Pq@E@aaIyaw?m2X?m3`39(_(vbCsl7U*JmU zAf5P;kaJ_g`w4F^`x#xI`taJa8>jdeKZ?9v_#a#FOve7s}#``z_X{ zqfbxM^EpC3uc@~E^~eO9kpXg#uzpXj4iB70oEI1`FkQfKKV4H3PZjzP*X7EyV$ZV~ zzA6u2kCUEWm3jjGSS@F_I^f$i)i}$d!duLPCw>t>?|po+Il@-}9fhZUA6|G}Qtt-g zi{B5@ROli+g8&1ReA6VbpyIw1)0k_;uY!x}v4gNqJeWMF-IjbO2i! z=~{G{Gu@&WI|1)`Licl#g3p_1|5Z2P3ynR4+;edV9~vi^hrbQ)hbd3`%P{(f;MkRe zJqzU(Q=SXoh+UM`ZMJ8RF>`@8d$NxxZxd$>r(OtO1@6PKBM{sVk{(JWn)B4S&58zX#jj)C69go6aPhGjW^hTb0cnVfFm(Jx`$@3V`%lUOJ zZxp#&3L+-Vn9H-0=OrHIwyZHv0xkn>eyBG)LQxFmB!zI?x`kK$mx+#TNP^_X`~u zM!uQowZu25j2q@-{XAwq;rf`N{Vk*$$NvM1?q0Wm`wv@my2Sc7Tk2XKPH?qkt*xI? zz%!R;CC_F{9^uQMka`?KC%8$C?RK$_Zer}^wEPyP5GK zW!F<@fnCKpQ!94`dsWN+eAOs3pRwu!?J&o|EFE~jr9e>V8mv(Y>&MDt)9B>pez?82_+e_H2e_{nqCS@Zx4=mVt| zt?9Mk*l432_MD|1+GvM8VSS(uUFt#FzK(Wi=6<v82fh_vKeU$$y{l?1}m`$5xaZlxJ+N4GN51M1V^GUmJixPN^w&|ulUSU2HKSj%- zXK2p4kUai>ANy9g9U1!XW0w0S9WVk>iEXzmw2K<0j_ zuh;-cedp7Mf7928qy68#4@Y-r!UISjmimVJ@Y-M>ev&@Cre7ak6V`{NzQVgbKwU;t zmnW!8L$EFl)CGHtU|o~|c3~y$KSe&b+*Qk(JHdnONY2?-Teu6CwYBIc*s!qnmLQY( zkae$%_4g|LjMB~}UR5g*{zUGF``Db|Z@t9zoRo7Io^Ovn*AGw6RLmJN=hsv2b~Vnn zT{)h6lrj^dls8^eEw-7bd!P9bdP;t+KQQ1;z>BZ?IpmS4m<)JTd2W}gjeeiH3C`5l z$GmEjc~Z{eo2akGn%%x!sclCNhWtgZipT>k;s;0`JZ6%W@}e zm9#fyv@C70t_iMnGR`H98kQ!SG>uE2unG>c9;(>5wBM^>+o>#yq1^=9xNoH5xKz?rrj+kRX6QwBD0cQD|J#d<)H)2D>#$k8-qq9e zquvQ3gA|{j8N`bWvio}Ob44a8vhLzc+RkkCcFn@?p6EcZQ)}ejr1rzE+I^?F$5Yk3 z_zz7hLJr<(Mkc8=mKD;LdSBqq>g8s!sS?}qBzz5+{nKsAdhxX->x|$ayqyQ#iJg4u zGdXYl(^ZQdaP21S`8cad`*5!w`B#IB=Gd2-tR~w;ztMpYwSB9_h9=ot&v-eG9MRy@ z%>GIE;j(ZppfgDg9G_~cm9_2Ncx>d532RzDc7`clnDYv)9y=)RV%J7&+h~2mie(HhzyJE&`90U?0Qr4W-X3fpbZJr_`(*=i-ui_4#QyvGv={XD^|z{mUcJBd(4WuN z*Dj;%W*0sHgMF>Yh0OUZeQn*}o3I{^&F6Sm(SyM9-0pOc0;RElcCdH?gKYjy~nX@z~IPkYDSKj4tsmecX!C zd2(I8Yf&|L%pZx&4%o-9Rj|)*E^AS3C9#zGiW*(AhC2_AAS1e8MFvS*Ke2sH>Kf!A zA0gA*rN(;KoWCiReYTA|h69q{A?iLFe}Z*BY~xuIMklzO`>{V2KP29zk!ka|J0TR$ zd4h_^@3y6Rm!7wAKIf>sr{+C0k3CorX2L7zIyb2ii>k=y{^)uguQlYc20c*=@1}`o zfgR|o9W8qhy)A6rE5L_7R9mEIIc`PEEuxM0Lidr-u=84c{~U`uS?5xZ*R?9gJ?PiR zkai6BGI}{<-;Mvmeb=}G(`e%{wDA~AbkiC=-{^0)@ij_d3~j8Z(c3t>+X8K0A-s$I zxVLtGjW@w{)fi~A3EH$$CogwNgx4KkBsTJJj)7jHqw~_X;V=!X`x5^OvV>Qm&8{GA z9)LEl(N-;bn`=q?c|U%^H}fX1gr6&!xvzYMuaI|?THzt~^WOiJQrkUP4UFzbyXDYM zrx$e)-Pl%qjtDJ1ygMW6*L7V~xNRDA6kXM;&~-ue=$-HnKK6S)bf!K>ma-k+UKI<` z+r1iD+Vdo^@tkS+Q&wrupU~GXtoH6?f0FYgw0+VN-xQzis(n|D*J=A3#?Noy<6eW_ z3(5CMXsf3gZlv*m+pUCu#GShz*DkD?k@-q$LZa)cqnwYz{4#Yrbk17`ok3>8{#i@Iz*3@iFgX;8i8zic*^}RHMb>6cK#Mx z|JD-Mbd>tN%RbD^-6b8L$K|v@qa&ZkvHuHR<4g7H zx?^nlGvbW3?08VtBzlW~q6?7o2!h|L5Pl;J{FER+)E_tTRq>zSGj7MpPuAJv$Ta)# zf?xO=UZeg!UUz=acpW$!Uab3q*S3^kdyY2n%0!1L{Nvf^b=CKb*AroQZI*G5jidCP zKA9-({V-`leNXzCCwO*5aA(fQm9r!A?Xd72tP}SRyBECQ*&mOSG2id_xVAqYA^Ln7h6jDHKOTSop7EI2ACFMmFh2X} zL7(f7$IkB=kEDKh$lPWR&Qan0%tE@*m~DqwghwiuGbHxucKwW-hW$iq%xZItbzS9Hy3MNZk5!AeYdn6n$GV*P=n%8epJ&bA zdf^syU0J`}5}OqWpl$7WUJ#bq@%U#Jev ziWM6g)5^^k7EO+h)!=iAm67Si)04}KW7<>O{fQ0--*)-_l@iDz?>3Wl!K${Y&Q9`e zPi?DR9hmB5f1X$gKeq-R1O9HJl{3EH!zDe{p6W?OOD$=Rr5d&}+)?%CRkK8ABYX2K z-g2I<0hsLBL&`aC#NIN(NcZR}+$3^$idid>yAq5%B9erE5Wac!b5ot!l)pb6ULM}V zi@ntTbhWl}^JuRlW?yPCYw$k)SHC#bsYUAddL-FY?W#(-pADO}_Efdjj&7iRBy&t! zK6X=$W!UGGzz2VAZ+`Ot>;{82M%mDy@KG&I?5SjbF8g%ZuZz6k@xPy*_?Itw2aErf zci~ILS3CNt#P$mnM~L@yJ&r$3bY`RBcZGKih1dIgE3PM8>eaV@=(jI${(Mx@b_N>*CP?P+zg3I~wQeIX1%8bA`|jTP@iS*pO*S_!u<~nU<}| z#u+1Q%eqbDrhO%8ABJbFbCCyc$-@q;*jcUSe8O#aV_%0&fZeRwQkHUt$dufqa`y5B zd%Qna;@kFSY`Ih;><#|kW6moDUh+9#-pKj8ZS2D+SC<2Ub4V|Dn})es>fg#N z-TYQo>F&3Nm%jJbh|((bb#u_ytwHX;8UC|U)w-L5`a0~_bQ^vva(}Vmx0#}wE~H-U z8<060_WKR!0W!%mWVb&Xo?r5)r=Lv=!Z?6&0Am#x^mSRto#Y;{Oyp7`YZ91M&_-yx z2e@!rhUi$L7<4SSc-mL8{}LK52T!TH$fo6u{AhnMWg6wNH&d)lu72f-o>0mY+fJdo z?T@D`I+JKybhyZijQ!&{zT!pr$7<|PIV0h1fDRt)PxbR#6SUl|=t($-rpx6#!>8)Dqiv)S z|2~bx$v(3AiqjR9^zSCxn6YzU4gJ?RgXQfzgSC&g@WSs`DmMKLRyTa5$YHC=Q_5{4 z-b0@H`KpVx+|}ewUS;SVytizBFm>oB$PwN#%0EOo;ycJqnrgxXUcx+t^^l~2*I$zsp?C=D(Xlzre<&^3eOuKk~ahYDn+2A9- zhh|6_gh@IH^AHv)qj@gYlmFaZDXOSu}g!RD?7J^xw zrR63H%=2L|_%QlR`U7EoFocC*x-zufNP)Sl_zZ6NH2Rmo5Y`7nSO}&#UCTXAyeFsR z3=BSw{w^?t^}!Gpg7FX4a=QiQlQ0?f0} z3G0I)ECf?MM9Y0cV5+B|fx-XL(*i?S9}Hn3n0T z9;D^|USJM~!Qcz&=K@1m9}Hn3nAOQzE^^~!&#z{jDF@$3YXpX{J{ZD6FkOjS?tco* zEaOhH2Ku%5N?Il`gb9p0B9zO(^ouK7DC~$+W(#w)G;ydY9fg>ygXCW*ct~yT3 zZ4kHvXW+zd(j0*!ECjcTuy8nkjF$UjfqS6rOnLZGst`EBLU0zs!r{7XTJAi7D=zPY z6TeEbURM(qf?GvcI9xWexN8M2s-h20{47lpIKo137Q({esx{$z^$R`tfxorpv&eh{A{TYYe)Z0%TnjQo%RNf%A3kO6 z0ao&tKG8<|Tkz>5Wym~kRkfUA;Nckq)xZ}6UyW_D@aEaTvsNc&s=jQDt9fyq8tt_^^6x@sDeGQY|MFtN{aoc$|88(#75E{`-Z*hP zXVS^LGqbr&Xpu#pqcdA;;3GN zrsMlv&VoNMEMxp{Id6Xye<8@6yvvcnJRo+i(=Tjl;VeW9`l=o5r=FOj)>dEx^`VY8 zcQcc2bwR5$`oH%$MMkObtCsq$!@*bZ37&!Znm>fiv>Cpfxzn)-|IUT@dA<^V&sX60 z`Eu@byo@^?r{WK~0Kd@r3yxm8Pru($@{+R8mR~czO$Pjjx?ZOpcNPjhHt-Q#nsQp5 zj>wV{?azCh4(=|rM;4aI{Z(7j4gU$E=i54*eE{b%wqB?Nb`>art>`MS(aLEa=X$O= zs5?+;pXMC?gZcqQ`YnBO8#;tY>KghErE%a}g1oc0Vk2umueElom3IWP_$Vb%C_Z=I zn0l(Yz;;s38i`*jbA+Y~02mT$KMCRpXsP+JnHb<|-e@u@U7hPbO)ZdzC5-U*1Pi zFEIU|gT$`{_Tpe(62F%G#E&$*fVT+ywEn)?KgHgR`s)6;HSSZhWVxK%kRuFCaP@q~ zIhFiO@%@qH|7t$Ermh%ttjYe_!LZLI>?0$rAsF_tgneR!Z4QQYOV}4iSX(gcpAz{hy4D33ctIDGF-#O_k5DSleWx=SDaU)H(;J~TKVqcUZLzrzLOQ_YWYU)Wld3> z+47By+B#Hm?!yit8+o)f6W<^5jf}y1p5nC1_Yl7Aiqp?|5z)6<$KanwzQMAA7}YWG2>W z5!}0h=sbBVBB`1fz z^k>$HpKwNN^K$OnfX1mmQrB-lR{#50#W{(*b|xyde@1r`o+g1b60gT$6A&I}4Ua>9 z9v){7k3)7H9(VHkuso69g~xp!9*0cr|B(0Q;ZarD!uL5<8EQx%A&enbs=|~Cf`SMH z!Bi5!3=lNLvAd-L2$d8>p=~dSkb!`KKsSZhcB8KZ6eWRl+fGe&LmNPmLAwR|+U>pl zwgCqcf&-{Xl#utg&Zz@sIz8O)-tT$7=X?Ly&pu}lYp*@8z4qE`g~xqLTn+d#?={<6 zJHS`;yZsxu_lsAS_GcZDF_p%B*s_&Bw4#&;QZQj-ojl~a&PSR zDZCSnR7P94Uy%3gYe;VemNCbwy1*F@9BobdYTqQqQ#tVvZE_cR`iJsVQg)TDr|?SI z4kOQd^qWV$bcnVx(r@i1eXme@%m2>q0MAQ@Xg?$UzHZV-kzPwjTN>$3c9ZUsKa`Gk zHPXo(?~3pFP&#P?k>xmcx$_BY&C0^}OWot&N8gdu*#@m4^|0V07m{`azO~>f;b)*h z4uOlr)yOyH$+r)kM?R&Z@DMO$o(nHbY}5WJ^q&WeBf!WD!8ig8`Cbc*BfyYv=Ec}F zU>pG#Ycaa)p+T(0=3w}DSDRd|gWk~g#eZh+Qr@tNZL!;dpDOmWkhg7)u9&2KzsI+^ zV$x5E8xUcdA^VsT-J=~{V}UIWYnJI8Paei^%U z7cCu`Cm!ML%NDzGZq3TaH<$NQ7KtpTjq>^dQ*_r^@Vlll!$YBt$K2$HmJ5_Ws>=&X z9_Xs$R4eA5~lo<8_@{yE$KtIXZo&ij1+lfjiAwGjS0(6D}GTiHpMhQdN(A zzREN0mzBz~^Y|i9{N<|mr(NKCe8K}GuTOZOY*fPHk)sn9m)(%?;K(rv50>4S@X*My z2@jR2^R|{L^Xtkc&wI9P(7b2L9-a4m+3b1S$_~zZu5A0f?Pa{-3;e!P`PE5yG0NO$ z%3O1w#XVo9%-x3D&i8Zpz}WFZSwHx*Tda(}w4bctJ4<1^HL z{&AI0B+8xYEH$Yuo3`yl_NbmRPp&9G(c|B-7en8A&UL;y%Y6!_BGg z-!r?q|BP+;Rrs&te~3S1b^o4`tNYKGW65Zo+q-Jlpw(LoOt|U__?+OKY%;ageT{EJ zz8P9J;=+oJE0y?Kz1)a_r=puCshhSH?1Rp9f@7u4wQ|XY96R#0 znyhWIDWc8!m3|({Cfx(7`6&940`U>%+LQ3(T|<>6pYfKIuyd94@6+(_GAecXO6fbf zOGvwK*+wPSRA8sCgn#Q*Ga9`ryxB_qZ3AbFHs?v+IG|spf;lQ_(%{XKr$;UQw@$Sk zReZxQ`CaH)VZ3dn9LZDhKC(Yc(w0D11dy|7lkl&3tM$+9ZW^@V8aH>7v-UvatI+x; zY`I{A^MDc%`cUY=t~BDBVanKk?CS;{B{brqQr`Fv)otHiU~haC8(aId{l0I5;~stg zJjDLFD@V702bAf7m4Y^_0NoBbeU%*Q zE16fq2e7)AZM5C026m$7@hmdJ3oF%Qb*xPbS+}-{&${(2{ybdVvvK#wKO1*lA^uGK zP56)Fzl;AT{P8#^-^KW|@t?te7XKsskMWhF^cm52rq9U2cj2mWb8rW7r;~nFpd`Ie zaEp3#V;%plq?Zb^l3pyBlk`eKb<)ek{klMx?N=K2CB0hU!Dd<>>z^Md<0=zgvaAD6 z&Vb1wy**MN>y0Zm*1}6K6s0GeFYB5~$N4(JO-b4Y+{%eE=3I;| zfmcWS4)2;DojshVj+UI9wPe8*&l2~2F=@F|6wRhoG5Ib)=Y)@opWPicE?)fy+MPbDMJ>vr1D*vrl)6Iq2J|SlXz_G7uR$N!jX2I9{9hyIkD!!cNkZ?#j>&HBZS5kbZN1i`@f@+s zR%E#rKFqVU3uoC3?v~`P$?C0KI^1HdEqVLSpvW>^zRxg56)}`R0`ojm;~~I1^6ADUCj{B`x-|;Yl(! zHDBS|M7u~CA7vwhfqx1(A0SioA@l8L2QEJW?K1{GSi2%TIHxu6<3H%Og}d4ircME^ zO_)1Y?6RVNCiu}~xo(l25PS4i&Lp$IeGuQiN6a%@zsEbyN2~)=mRknu?*)1{d<^Y! z8lJ>|ypMit_@^hS2de85efKBLEa%%Y3Ol*Ou!|e3+~Av_q}QXbRn9jS&aSiJ^>+S}x6Wqe zMtPs|{rHHPr0bQcCTVGzBU;*T(fb^p9vbk*zR0p;Fd?6oWpWOS1z<^IcF~Y`3Z&aH-u={=9 zyn+6Jd6@h3a{hP{`?X%;TB5Z*W$g5Ku$4`Jml7tjMkaJ$<}X)gX41Y!y3|Nz zY<4JJ3F%ThvQEeuHXC@Hg9=42s=RCdgfridhj^A8*_vi=K)0hGxs6I_#B1R{T49Jy+AB86lcT<<5Jo|&Xgr8{W~CPrtB-Udq)YfY|cv0bY#&A zT)XSal*wDmoR!LSuSx0XST>dQU<&KPWY&jl)`=|cZ!%dwRDJFAP-f)c+HIA24Xx5H z?>TJB!gO1NGOjP>+u-l^9@6mSSEpANaz)YGH#HyogZ5yt!_z)Hi#w5_o^~hc1}MrV zNnc~j7CvWujm^B&XIiM)3Y4>h@Ya8Ado231)N!p*f4WN#R)O8?rPGSwb2AibO>~Xqn`)^p=bbWEA z2KF89Hp~qN=E48JE>b(oy0ox94ZoAH8}zWuP*_mH#_3_jguSw|&qdKa|B{5?6xn_Q zdzL3VEim8`wv(Z^Li^VSWm@0BU*Ep`#7*er&smul%uVM0RH-V=Wv|a&Y13#dnQNYm zDeW(_&*iLK8&o*!FXmg$-W9B^mD)MFcf+(h)J-UoZs)FCD=USva>&<$J~u5N=drou zlR8SiVl7`n!_DL~;=kVw+_A(f&Wgg@i9`1Ux+0X%E!f+6ExZ42i()z2(obo(C~81- z!`00kgK0+-b}sr|tjR(r89L-%GWWUYlkaHK#f@}82Ys%z@0(O-er%%l-67u_^=}n^ z=1n2qW+dO^Lf=-tZwP(I@_k+CJD%_1q3=F?4-0({;CoQ$`x?HJL*Kue%pHYuWb;65 zr*XEH^3_)+cet8dBTx3Ln1p_q`&|*^?^nb28?P-n(Sk_y^&u=8T)t-k0y3>!!3@mM&Y8OP{7K&$WwOrDb{AlRL3P zG#oobZP+0?iX9@$@}ubZ%ReDHeOQAu9cno@krx=r*PzD;-2?U^%5CLCc)w#Vy2$<1 z=dZk&5J*XZH@Fg;G@Qf1`8oq<*Hc>yP9-!=%6e*BK^C}Yfx8Reg`XMGzbw2?r+PL` z@<>>JwZOH{Ju*dyrL~E9@8pg-O@l_xC2S6DGKco4#z{F@;(#w@RX_D?!JMa_DVReU zb10)4zZ!ooaE)>eJW>eD>>q*5VWifU%09g>RLU^=!t}=Ej;yAXk=cZypGPZ8%9j3+ zvZYL^gOnLwN2B~~sSh|vpBd$=glXgKuwI^go8H#TnH*M*)KBUY4%ev9WMBx-L+}(_ zj5Y{wPothD!2z1ri{1I=C#E*uhuyyBC#K*-`#v!lA3FGnZ2X8uXMb~n-X>9v+sr2> zdZ@e69<)Q*|8zS@dE3m#CuUMkckusFyBg!8>liTF*{HwX&u02Ly78Rsr|efRF?Jhy z^KP~3JnJ*`K^|*J6=x#R5t-bfoU`crg~E*gp}qh(l=8dqa9nm>Kr5Oyp_5&pN_s?aMp2`I!Ill zPEt3iqtaL_ZQ+8Bh*0=q+vk09-$J@=e{Od?> zQBCnX@_ge{IUiZzm$>6La2B-=v@Gv8)51ID1o+%_U#Q1EYN4I_6Hgzze?BbWzPn{f z$qMVhv<@?O9ni|?jYLL0L3DXo*;lN}^NU^3v8NthvPZ#iSo6c<_vm?t2U5xFTVWY! zC9m)WL|3H9%`4>HA4=au`u?oPveu@u)>>F=(Zv{_d?2-L?Oa;FQDOioNQY z?td3Noc>QZa|u0YiC5xNhaXBzu1xheqd!e}@sj5ysYep$G3sm7)k<9jPIw*<_XtAQ zy~a7Z1)jXMKW9zOI(B3P{LsJt4mCc%k22mq#52ClJUq>RjXIO}h8z8**N%rT15Z9u zlf52Fx!OAA+OOU1sYCWp@_!RG_a`Mi6gEl1LhEd1C~S&^ zne@E5p|I%^7Nv*X77Dvv!px0z(MubP)#yfJKa#U;efbEtjXgYh1bP;kuX6TZ2Q4b+ zwI*n0_%(|>$dX7nGohc2K_XRgxzGU&_rymRZW3!WhOESiTS}TU?qWg|x37=(}5JQ6s;| z)k%3)d`X`gN}qGXV}+?7Jipk+ScC!5JBRx2Ag`p|vGThx1hzd4=8m8Lys)NK&ntJZ zl0HZBk>7@1T+!S0TWs9JPwOpXbH~a%c4wF^{%?@s|1CO(FF-4L_jVTTSb6(J%PUit z=0ZQXp&!2GJe?2CSBfpdUC<8KLOYy=c6bZgA#eFx@Wb*?lrRU+VzY1;HVfU$uYK}b z&932s$B?vglpY+QdzKTR7udmgi`5s$`PL-SMsjc{SdSBz%QV1^1A?%!uIGnPlaTeJEEniFC-WNN^SXCSEPwH))b^Pm?KQR$?g-=+IB$jd(kaOuJ z=6ot|AazqmxT)b3nabn#*QncN@9J?2y9e)j$e*rme#kUKRmcW*W2JrZON%N<0$ z`Ob@}hkfH~x~v_2SvzEn+H?BK8ugB`Mjiea)~GBqIzCyWJZ5DtYZQ6)HR@28a*Q>~ z6iUx{-g`ps{8V+(@LzNmrFKj`p`aHeqa%8e@PVw*=0}j9>@?ZhW;3o^`F`JIZ8P!B z8g*P5;B>f1FS>h9JzTQKh3={>+^L7%d-n66$@f0KWj*1{)Fx-5JLR3r?aMc+5fKHZ z3+5S_mt19O@XWH1A2`DuPuokL`bQ&_8F7)yjO^;?3nu^BRW=7#{TF;(^_=lGaB#X|5^SI@IQBbMq^g>3kBRI1^l=?mwvx0cRNg?>6F=mijapIz0Vb;IV#d@MeMMN!n_Q z3H~{bvtyy?YL+`o;dk7=L)j$d?1WYj+^g6#q#S65>twC!%=&JatSv32k8CWdQUXF( z@TRIkg8n3?^-XFz2-{2`a2yd zyf@0)P&p%o`$nT~lGj7MB&|_5CuvpQ8OeMR{bNS`!t0SM^{Bd9kI_<(dCNAoQg6|J zUTRVU&2O4#9PRu`uVQ#7!kfy9UC}t1KAg&1s#~XIHqN;;YDN}rJFXgc8g~#k>hh== zak#7nbp>;9)wu1rgSgYUxU#x}QMfsC(T#`Oj;qF<#vR0snzywe4kxyDR$^P|_5QaM zNSm3k`7_u`yU87HC4Gj@a;d-Uft?{)2EkLtLEp;358tL2yz7X-CHQVF@G=gwrWtxg>dlE4z3Rnr zYog&x!HenxFY2XUyqjary5YMs4sOd>10R>M43ky6X9y49@gVObS=aL_hX$aLi`8gjY>|SMgV358$4Q;pNFX*Yrd9Gg0umvP#lh4l3hPxl1cSuLN;^wOlFkWvKyZ z?cjRKlQcEUl(FS^*n+P_bEXj*qZ^pcMckiw>Ue?l%fRSD?+1m7rzj`gHe8yGR~0Iul4KYOP!>A z!{%un^|VmF%(G(pex_0W?mpd@U#b*+f!*GP&D`gdA^QogE{`?vTh<$ee+~EM?s50{ zlp^%8_x_Ad}OH7{uN_hbS!P9KBwU2kNiITYg zPV$WbhQM~=pXyoB>jUt*;|JInw4+B0cygEKLHCoDZ{eE@j$eY~{1hc1IO_c0ehgFa z@>CQK!56$d!1e&+TjVPZ7#I2e4vf*=!-xcqz_<<=USOOtU_?{jt}x))h2t@Zd=cE4 zMbgGY`E~%K0vPX+PwvGG{3XvRvD@+IK7sj#`n`tKp&GXeCwY64w~o9=Lgh0*3*YQo z{_O9TFE9qeOUgb z#J7`Q>M)-@EPQNyNWCM8m$Kg{Z!>u}hw!hX{hkQJUtr{{0T+R@(YV{u`*QN@YYV3k zCve^dPCwQu1@~we9+H3lwyX6w@c$6r!$&yD`#bVF$+xs?z8AaCcV7ti7s%%!ABrC} zTgVm21^c?-K7apJ7;+~iZ9kc_l2QLHz)+!QiuXreD&8M;N%=VXI&YfNQM}*Azx|Sz zH}S>TBleAsfF9+p?_s6GH#$=L_AS52~N9kcN>b~~~VJ}AOVdr(r3q!d4JAIz!ZrJH0iSNp}Xj$ zhF50kchR!$ni#V(b|Y{fvHt!d6qnge-1DKh;%?&VLUB@_>@SnNVyjl}dqV3wVdEui zv>qn#CEX1YHdYT4xZ2(%VG|D(e_!2L^#HWYi(?jv%OT73J zKPePHDHJch#EVaSNyB6}=YOpaY^sDo+c6GO<$E;Wq?PaT)yxHG#){$Dd(oeNujTF? zg>v^V=NzRe#bJ47)$y8|hV#CR*UzV#FP>M``A;jBV#n+m&{Lk-4mlgS#ycI}JM4Rl z3+;Pr66DUikN+^|h8k$)9Vx%o-go8lzDsQ6z;l2v>S>RAXJcVpLfvAKpR#)^3eTFA z4eR!$1Qymj-s{K6BlP6WVl%viR^+`$-Hc7#6}Ew+Rt%Wwdd@!3HPN%Na%u7IQG<^q zx=gY5{jfnZOg;RWFH|OGC~^L`putDM@A;g2*9`2i?Bkxd`8D1^uF>cAN#+mo;)N&J zYjj#DNz-Hh2mZZTX(Ag`xcbZTPG4&*Q&~ zpT*iflr?@M{zLeu@DJjTX5H?~`dx)T5C1s+tGFne)*j_4wr=}EY{{P&+r*rS+&@6( zd%hC<^*z(v@2>DXCjC1{`u6+EjU_3WZsb?eX2E-GL(X9*_s$JYk@eZZTaz7y?ejgs zf#?}9Xb_=2gx(PPLg)#hAH2{DLLUe{Ap5`U_p-lx+0SMF_Of5g{w({k?7v?2TQB>o zm;Kbs{^@1E^s+yC*$=(!e_r-GFZ-L9{mje$I(zNka`-^(7=-Po((Jk7bIcPeRo zj8hr6s`5gwyS|{F)Hh1%d-Ifb4|nsyH<7bppA&f9!Ky4$ka;NNJbWAH;#)Z%&)}R~ zz&Uz4vKtZF`B~a^4Z02$Ir}<2OEZQji(=rDWN`Nt!@SRc&)!5I$iFvVDf(FWlknQ# zk~nzpTAc9Sc_*`Dt>{C+rYi4?-MlZBF+b=Q#=OW@l!*Z;JAYhkSBYl{2%SGkGg>U1V`8IOmt3`#OW~ zt-PNpsWJt&ur8Ex&Ys2m^`ozEc<7vcZKUX_wEHX2(IaPU-ce|0+y>f9hhg!bL=U15 z7;?^kjBr_3WX+m7L)I>NADq;HjLfEW#7SHFGD3A-`pEfaY;IYQqd9c5Ue_-f%aX?G z_SCy+gA(YBJp58<3%e_`-p{w6w$|DlI^tT|;SDp-M0} zcfoj(w<{5!x6u}S-)P=PhvaT{Aa^rAgi{OsDE*u9qh;soCW2FJSl?34AHXYhaMRLM z?AG5yo;2RF=OV8w^U@6uNaS^AiM;L&yp;;c`*xMLZDarNvwxHzyX!`FH;Vo#xe(%& z+(;YlN7o>2m?iKTv(gvp8NIJ9%cEzePFI3A5vS*|`HR7`ggn>NcWZ}d2Ss<)@DBZ+ zv4p!0c~@^iA8ptB!!^9yFTK5QuNYixQ$^tjSKZ0;Muv~j_2tWaE6o}aIFqcjmooOwU<@y#*$alpF>U+u!3k@amaMY=B`J0owRqJeq;PSx%2G`o>E)c1~P_6=meO42-T z{k}DHA2WmYSFLt8Hh|nN&uyiTDS=wrplzTM+CU#9j|hjocr+w$I&mW+=R6^lsVVef-vKf3nn!Zg1pU zUMo+pw_aSau>p9}H=kgOaVu*|338008@L@lfbe0Az5BzvJD(7^%^3=`@_>d5cTTAv zNIkzHUAM;UnK$mfj6_TPPT;$q zapGitU*;aU)!eh84OzjRyoVCG*4BJzj@YDH)~Rzl58SzXzKTpNJkap;JI#0P9**wh zHu_oGN?-`A6gAqOrKq<3@10uWdEMk_nhZ}|jkE7J$J_7qcozNjnW{whD{B%(&Qk7< z5W>C!L-O8E-hY4Zt0f1@)r45=4mK|DGcXGqMh47~Mr0iI%ESbM&0lJ$jL%R2s zCByctGugQxHTn0m_xjb?{L>Lipwkqs-Q%&IXs|!|i3h#L+*vSg1iqcLGQK~#&JzS~ z;RoY9LAe_(2abPKRpLPnMpT=JI|60Nye?%9-9tI{1z^#-ujPo`rSl#^p*3K z&Z2zML%Sa@XRk#S2RgPySF6RJ32dJU9v1u5&$we1x?kiU>R#+D@_>_^@%LnRJ`s>O z^27IPcjut5GNmGDElC^Sl}>4q_W{iL9U;Fr-$ENs0>5N*w0XG~L#>C73;XaV?0*_u z=mIx;zXo?{+LEqteI1>z@J`^kz)B0jlKVgT9})U54*d%q`s(M%Z+CXSljZCgkTh}+ z`T?|y@J=2lPTH=!wrWDx;?MHcO?vy-{3_$Jg!ajYUa%o^E_NTfqX*tXK1j}z@|I@} z^njf=1?YRpck`CU%^Mfl&)vLnNxRX}%gq}XYrVaesX_>jO&khEHOC@ta8&b>?C4NIE^f0DEoNvnk$_}T*Yhz8rp$fhwX*^H7xCZ_@<;iC~38D1K(bO z-%8pjT~D8eg9$z=X@4tewQvL9-hme+ZAhn|jxYRG(!L;RwQvL9K7s9$_PH>)Rq$O& zyIs<1;Re2a10rKrav?13{(f58&5~9NH}LHj_=%*Qs_XmH@r6$d+@DBVE!@C&K%iRE z{xmFY7W`Y%R!dqf+`u<6uvF519G12UzAkB(N?I-4z;|GvOwx|k^#^J=>`&6tmPuMI z+`u;}Fh|m^4oho-4-DKnl2!{h@O1?4lC6x}?>@4Sb#0-XrZpVQKffw6s~0Rtq=qbp=GHM9IOhv?ln>z#S)PwQvL9L4j)} zZC_nip*|kqKa=)aNvnk$_zn)ZB<;Mgv{mq>N$ZldTDXDlkU(Ea`)XL){X@01eI>0H zZs0pKV3)K}y6(e$mDsK^!N&%!UD9gdHvdU@U?qg7xv+-;J&{4Y4SrEtBxg2gbDErNMHL8^rKmjgNUKL>ByDEmMq+j9iTDj8;gG}EI%~k6@6@?zbln9q0rf6_@? zDaEFA`)!`!PWr=-{Q&5OF~bSB-)Bl!ZbO$adys8=jJsrYUa%CppZ30ux5qa3jgj#s z@M&!wcDEbefwj@*c0+?W1D+0LU(_Wl_sZ7)1>Y~kAF2mWLvBIj2r3qJ7LA04IVErG zpatYkH7BH>tAsI-6Q-}qivFa-yj||fhulYdY4ix=hIb}KQlFn^UZqho36r-mLZ>`N zc&FKnj71c@qiA?Y7I;ZkcuF>8EbQobFa?_XTpVYVn~0vQnb2&h$We%l=E6S6UBZ*u z1y5Dvs+EEG@RAgC*~6b-l!=We(Wm8tH}NIsl-wfyPJa4*`hD@2p*wktQ@N6{A%vivd{DVow5u6aoKKQRM5U3l269pl|C}= z(`R>SU-aii;-r5P$?HXL;lFpuD|hgQ9D#9<9kHnDiabLM`Rb_en_>B+oh;}HZ;?K& z>aNTht;~*@dLO8au~VIoB4fc@Sl~SmU&$D!XE~1ueZG)6lnmdp4*Ike`49JU_D05W z9=PYJTQ+Ml%j(+AKPRsyqg+UOcxobNm%JX?bJ8iK3lP7CJ4Y@jHstLa8PM`F-<;%K zOPs=;V-5bDgQmf+@jRBB?+LbCr?j`2EZ9G@_)Eb9`n~W$-uk_a{`UT?XFLCN`3Yp$ zL=NT!k%MW^RW~tzMGoc#!+b}S2Ki|1CblzFZueT&>@K~!#;BS&mEXed=~Fb@73eY@B$^hoqS)TuckR!=J0@qORTFG zxTg}meqZypuOdfusQ1%kJ)7YLeT@!>bMVN7=XCk&%tq0t(2|(>@TKSB(ZH(?mmL&Z zM3ep0`|`N(?lgW5W5vL6PRUgq&3sGxQ*-tBvEVp}{v3;&h#Q5YT{YR!rs#+Q_ex!U z(uJMSL1HHq9qU=RIk;+^3p=5MuoIdWCO=uh{x0&93OE^Zp#m!x+2S_(!j0XedgO{V z8BydY1*WTu9Hm$AC;b^My-iEcxIOAbmQqQ*S<~4rGPsq?{tS7}dj%PLJUeZ9R@kctr1e zvn0+caXoq*?T8+01D>R7yBtk?j2<5;@wOhdm!rwsqetzf=&=emg+(UW8LRAV<{U0^ zl1;oB>8{N*97FGrMc0(Hp#}NcQrb>~0d5z8A@$skodK!mDyb*(!*$(^fg#jyDsDb* z18x-kSBU!|ZWHdtGj#=b;QkHwGo0&>$ado9;Hq)yf37RL2e%CO6fT&QUXXrg#*Flx zbp`*CG@;-gzVG4t+oYQcmhrue?f~WX?itp{{6xv>tF=Km8UD*)Fkb;Bg6FSKM zLH?&Yh8CPg*U)MHPxC+DF{~iYvAZDdj*J;`YwOB3IIb_)n$%vlKk1vY50btulkr=b zyr-Zt>4CCAk@`5^M>}fmiS98O$1Tl7{HG?w}2l zc+&@7S>QE0DWxDY>7z1Z+^dG{F?&RJeW>ZvL)Ket709@6Zn@fz4YGEQpX87}Jqw(# z=}RS5|6j}hdH$s@jk)Z^MtVxDr%}0BSB89cSr%>%&WR0%6l^er&t-3DE;lo;j5g@5 z{xa?bp7Xylk7fLZ>Lc@5lkLL(LJM=g!eY_Z>yno?C3d@3V<#Ydt(J9K)@x&}_FgY* zkg{kv_#5lsft%1T%sXLOtLN~o&Fisx{2|snNzZ&O`UYC+Th?cx8ATVxMRZd1yG7mf zA^HGhUl&^I9PedhZT<>=-&5Eg3}2Hq-Y9cvc4$ozo>@!TBO7H6w4zf@+VQ`&o<6if zgB9KnYm|S!o{CJm=q8gj)q;(X8U^|3(0Zzb$);aG|Icl#Pb+(b>P4H#nlO)gX!Q*J z_mMVZ?VKI@zh2_Q*2-zdKlHie|5Vxm+*@ha|F5l`b8&`*hc@|7d=7hquw&Wtc=E;|Wqo<$V-(I{^#@^F3^Z$G#Xk~QB;AItkF=}%efjXpKz>;El# zpTfPyclJKUW!Jqge9ifv*!#SH>3$9xd!I3uo&R}t9{wwPpRDU`$8}w#vR(~>Phji= z2Uwf5H4B^evQIq4d~ap1lr>Up_~bJ_8nB&YSH+f*wV@a~cuxHOT`tB~7H$r%8mH?v z)a@6^n9X1;dA8|oD0HyoZG~=J3rwMb^Pz!lz}yLJ(OH)%Z>4}!9MWGX`=P*a)^!%8 zh2;@kEac-|-cjw{6#JgoQ8(TdeFaaiEB{FZ{I=yj9Zp7B1wl7{9`= zSjZVDSI&p<)@-I~omT}0leceV6K<- z_HJNvmKGkJ6S*bfbyRRZ6Fz|OJGSmqivE1>H22rY;T_K7{Lfok;ak)~R~;_U`3-r< zTa*{7>ApKMHJv^ChVXxfn(mF_oG9|C4?M5QrwVQ8y+_$wzF18ceuNL6g7CEWQJ(N* zj^O9~WC#3(VUAB&1CohrhIW)V@im-i19dOXX|gc15NR?H}6H>4t+#_#dnhK50a(_ zZ!+*Tm`^1Ij_@t?=t<&*huI%_E_qj!gba5$f2^Ogq7Z&x5FX|`f5XG{e3yrLtH^}) zfu9@(BOUni=0jlo4G%LceU+kViMlmwcjsUU+5D0voa-1_gw7DfF@?`#yko zH^d8%Zj|Kb-OX9@3xBeicPp)Y8$3dRWxSD^51&$Ch^{|@Q+@N*H%Q6A@c`#P!r=U= z3!M4zD-FJ%zz}{w#By*MqT|v781jDTa0o^dJhg*iFzzP3;G@08fo~a(%VgpVe(9wG z_=mLTugM$UCiCG{8s%T%JIebd@(#s)O1_$VkQwvR2F|+0$=qqQAfMyAYZS)%&`(Ib zrJMLu63?5p@Cd_7!HPw=~1|U@k@TFY|LD z>wIQv_TE&P=bU}zeyw=E+EYo@=ejoMnD3Yy>21tyuT5VUa!zh8^i^NgTj!n4+Hg6> z?Ss!Ku;m;m@8VmgR~7nh)zhg~&Z`=YM2ld^B&Yf4E{}F?_iX%*xRS_(BlEC%zqDj`9(Oo$|8^MqB#%3siSB2gTr&v0 zhwz#<&+-Hlk-u33zw~fN=gX<^fRn)`pLKec;6!_*TKm4xY>BTAHMWEP+E`2@gWrS@a>w|2D>@^x55^|0-mq z|F$~XK=Pi&ojcR{vSyQ%@l!yZ z#U|-OCAQWJec7E&Qr@jJBrE;fDyVl3xTk@O9b5#KK{Fcf`n%dl4X1exTs)l9BySro zzOD1+TH0RPeFV7d#9x3tPoW`;;m?VERD%vnUr_tl-iBE&|I#yJXQW z22apW{UwjozXDqglI9HV81*mJ#;UD0hBDWxHlAkNYn_zofxeb^{6dGG36+)E+F3OB zzfhLvy{l!7`sBY>miJGcMczg)IyTk;e^S!f_&3U7 zzZ$cX_Y-Haq5KYOa-6MS?IOxOMSVUbZN$T~_iSf9ukIa@{4BgZ`5%1G;62sInpQiN zUdS3_ht|<{fVJQq)E1)#eD3>FAa? z?3!@T_%SrezX7`z8Hl-Qp1q)emUz)P_S&!2p_Xga9 z7M-K)w`dzF{{gLS;%$eSTxU28MdUT=%5eNByPOJUx9&i=E7@BP4&dQ2hBTePu;N2rZ;9Im!0VE8MSll}MH&uUJjyxY$wPM^7uo++XCK)Z$=mTL-0FykvUQC2kI_LL!GAPv z!<6#Ijnnt z#>^HavaN#pY>8NL-b-E9eYs-eYSmOLWv!x|7rum+le(MYYPTyfMKc8DFm{<~B3s%wz7p!CLSL^DrZewT3bB2Khgf{FZ*T z8(7~~fA4`k5v?DtJj_MUYOwEsly;XnE|`+KZ1 zM#kk(^odvZAL^)XayiQTD(wq6hpr=T{ym<(QS3<-&S8#N_RR&0Gt-%~*U{GFs>cs= z%$x1m`+8DD^2hxLJLY0nvx#-h8jGDTcn#O?Teo?B>4H6<^EUY)E^71Ckd!KL(S&ER~ij>c6*+lN05 z*sa4n?boZ3wQ<sI``LkmXZHsp_~O(^s<_PHms zasFS2m2LRz^<}^M>!`95e;r-+Xl6!ZV0zWATS&JlONl=%>mKWRhAFD87~5X*hEUcC zqp#jN-+ALa+P{MJ-)R4J`_^1(e`)iGjgylxo-mgkT@&e?OR*Q~KczMI%&pm1x<`5WL)QCmZF^m^qieuIIA&%|v`0m4|s_bpn z7oIB|N?Or(DErZ_-=O>aW+gb6v3DGv=nJ&VFxrszdO_Ojoltv88-7fiuI?R`+{)SL zS~aTnBXcx&!Mz*e-yKGq4J(+5yFTZ}+TM3~8vEXx*=V%caoX(5zur)`VM<2h#@niP zJwUowXt(WG+AX@R=_A??nSwgjhHEdZ*tm*)VS}3Tw3NHLcU+gDRH%*vtP&@pU514)EsTU^vH@6*ZVF_jHB<~iKv`-n!V_BoDv_`D`W%7 z6w{_+t1FJadfXIk|A;XY!T0^}Z61d2Bm9=7@O)lmjD8D`O=txP`vv}!_I|bh@w@DL zp*w4Y_JBs~3qL})gVVR+Gx!p>WvH8Uepugz0=_@v{AnWZPWZYx(6z15wZdCk%UrZG zCq<|Jdf@gW&1}Ys)0yHZgEu^CD*OfELO zl#?choQH+3AYPNd($1ryf4Td&!netz&T`j??Usg2?vS!YmWunH?(UG}taVc6nc82| zMVB0{>)4aLR(L;h-pYeE%QJJ_J0s3_x=duBn#~={rg5*4&;3Ro z_Z+$0cjR!NeG59>rY__jM7z^=Dk++-ibM8CkMBs^em-Z$+vi)NbzK$C{%|=NZ<-uQ zD);A#vKM`V?qrX0Fi4G!Q4;OnKj!tCIuORL#|pSk~J+BeEWFz zLSMbiy-9Ej@2G_L(`t@L%bx7nGk5%8hl_jfV%|Z{Wv>waNGAQKFxC|0zRbvXseP2a zA}ejZ26;uw5qWeQ>xWy7uvDT(8r8ylG}=9JNH zLT8?4jIX53?#gmfzLeRyQa$#~e3iB|(WYkFHiA1N?6zd1cP;wrol$@8j1t0RvK!@I z2bt`%tQjJc?PR{ly^#mHLGF8s(PJt6Y8T~vB{WeEGP`nj!28+@giHA!@h$fOUm5b* zA=zJJ{gJzXaCv3XlQuAydlABSz&97&%%YRzF#TLlKj+fVt@N`Cog`iR*&7A_c3XtI ze1%$H9;LMVSRdu>ks-Ug3*7*67i7rpR?vrsxnpsUKu=INvb*rpG}+xc;qy)UTiM+= zh+o4yvm?OBiyibG+1=j}C$hVH@cYf5hN2Grio?Ob1_YF;q z#U4GaweMWxY3~V5bgYl3eKz-nWylCOS)nE4J*4;SJx2S@TI$~2Df|iM()FZ0CwEZn zJ;uB}$^Ikr7W!SAw;wX6ZiCleEI6A~e<}OSC{sWCZ6P>*-oR#Va3!DQoG9~DU^nx| zwWlezR_ve392J;ipHt@OJHS(@V>*P)jH;#=u?ZOYswcPr9O1$H(<-L36&=xW9 zB;-9!zRLYhwKKV5X*zL^J+sv0-5vxc&w`iLO8G8bHdZU2_VQ7#yw#C%W$!d(r=0Y& zjWYd|Deq$QC^Jv(XSV@g_zsf3W7!nem&vR%*{nBNtlijuS*hE9k$$#)fUFLEeU`o+ zL0`+BZ2#lxSw(K5%>x(S?X+Antj63y6l9saUN~#r|xox zA#%10kkwf4;$1&@yvA84jWb#!Wv=IK)%qburYSM&E8omsdpXt}0Sw7I=M`P%qgecr z+`-{@z~euP9lg36ukPamu>S1iU)!6f4GVllnhV3ZqX)kl-p*+I@Njgen3PRFOVQu? zi2WlUZO2;~yKk`)l=jRS6F078+cdYx7I11QYK2ytK>R@N0%aVEEsa+6z*tqQU8AQp z`xZSDT1G2NOMvC(-OU*r`W>*hF<7&3i9w3P^iz>C)bD339fy zGS=nI>f4lquAQJ8n<`S@mM=TUoB_AI={jz6&UY5A$$(cyoiBicr2R2@6l8Y&jFZ$j z#@s_nF!e4^y6+S+QYnmySmq^iOxVUQDke>x(1+E71GD&6swxV9fZxQ}{hs*p=Idu^ zfxGzD>Ak)Uq~p9VZ>_Py^#M2%P+D&B7=0XYq^rIx1O(qI(v}E+8vhfPT+lQ$PHz6QzrSP z%umVdC2xILUdbmqi@Pl|l&@Lxab|jwd?G{T1lG^^HqJ~B^Z$)eKKrHKhkyId^Y_4M zqW)__a9FDgSBJq77+2p;3f=#=F!ln&NxLmEaN!-~kHTPRZCG`+K38Cnj(Y)34r&)L zJiwSwzLV5P#*LP5qw(HUA1{MQFFKHigz`Nt?LeR39hOhSdE3?Uu8cG7ov7aK8^~8d zzI^h@ekS$K3By@~@#0k&hW_F3GiSNrJgA~@LKuv3U19A1$1uu(A?H_MtK*XyJV6n+<$V zMPVg*k=fJ6k8h;XZV^3^?0ffce=797lXX+h?EBJ?0YcA9D{U`lTFa<4i9Y1d+^omi zS~1NXm@auZ?-#qn_fbXLN2d}edtuGJ`g+dULfePfTkLC7RCr^ShG|ngySK0(*rB&L ze`qqnrDd$A;600QKkKoaA^gLXF?r-Gr7p4`2wrZ%3p_QvIKLa~)MZuK6uzGi5bFMPI1MzR7uWXNrEt@{jhoXT$S5#r`>6>0jGO z+xLLK*Auy{&w48D4-|TW@$l%dZxtv$t^~5+<F&u8q(pPA#2euj<0RkVE+&K!5M zLwMeDPRiqKD(7A=@~pR z&o48F+tJB&8W|4Z@A|nL{6HC)KX~~{+e*c3zvVyY?0M%F&z{rp**}LUi+);7KFz(( zuv?TpxBlm_Js)r%UanaEr=Nc`@u_J2ULcEl?4Vqg@nXQ0J-eOqzNNfNq4Mqn?i65b zxkcF>4u^eOyH~v)I9KumOY%!z!CAsT1kXXst8H_X2n|mSM{wH!ZW_+udrKD_1$HJp zRiSm}&?e9EHb&mnZs-2MC@UY{Mc1;z+hi(jqTOv#&Oz!hwVN_3DFa%1QSCXgwHmR= zMIT7}+W8kg>j#YAXE^J3s^+#V>h=fuHuY>f#rdQkw9N;|Vn||DT?$HhSv-$p4;7{Q$DIC7&R}_Bs zDexBBOYY6(UvQWIoB98Mx$p;*x%St%c5{!0j}prpPiO7lbuPEO@r&C$jYHlYQZSV} zr1{*3Y)~4{DQSyF``>ZGMzV3W^5NG^fhT7tF{3mFO z4|t=!R2fkF5%NVJo0=xQ!F|U^QI!+Z6O>;`dwh+|Scb?banI5S?w^6%pG-Y#e~Hs@ z8vt&Z;Fbq&+G=4Sv(sALDT)1;D=~T{PCeC3>pl_Uq z?Gb&Q=Q)#L(+K&-pym7MBIH~kYgQBMtMCV9eGz`1hkt{Y_Z4r@#kSDP*N5}+5*q%> zzrah4wTy-5QuuzB`Qj1i#(ZeTx5+K=zuevUk|aj2>g8J;`@x9_t~Sv z?F|dRUfQ%P9U*P3>+7^6NF7T^GaOnYgSv=rQup$x1UI@##TH@{7S!m+mDrC< zdop)|MF>1T1JT6yNrt&z~kJd z)njFFIPfIiJt8dxbA|>}&Ou)8C%Vp=FBtc!cTqR!9yhvHtD=c_wqn1U)71 zhDBE5Bl`7s=;V_-(?h*V>X6x%5Qa3p(BEdu|%z z-r_H2+(KIx_MpA+kIR_$!xy*~9Q}P_keT&hE46YL?Jj(34Nw0(X=l5CAN#5g+EI8V zy?=H2i3g!myVn1+n_gY`$qg#Dn@rf+HuK&og0(b~H8qO0HJY{4!rBQRE87(4%#J?h zjK6w+)m5iZBX&r&`zvJ8g`RB|T|%sV9%RBbS~zrnwU7D;KWt1E=O4~+Bzgq?YvSI?bt=3M{`1-&)HfT6vK;f=^(zK!#o=nN8lH0`8KU`)~8 z!C~Beho9>vhn=VH5}bIWlMsfJHK4dweL@-}lOy-=vvp^kSwU+`_zK`TG|YWc=Fuo@lyt8h|&n!sReRPvpL z`+&JJLFNo^qMCtaw6Bjiv9Y7!H1jG>X2K(!SL@Rkcp1s)zkC1cIj3IvSz%3zbzttw z%;1@d%EDBaZD8s^C71!7?tDo}&w$4UjdS(>@3ZgT|9PNmx&PbX9xy{ttPr-qtAX{%-@8xxaJ&H<&oN|4YH2F=$#zZoVhDV`bb$i`w(b`?uVXzMZwK zU7wqKrg=^JyOv7MF#Wk7U-X>E-GY6dj1KdnG|rR0Uu3!$(7tlt^Ua+~d)xC$@GNt- zoIT3_#+F3?a_wOPV`#J<&^dHVbtSMC+Hw{BmJyK=9%LHRH((2l)$5AFRm zet9q2j&JXa*oi>bcez6eo+F&I;Ra>$wSiCh7Fy;kejm~$^4&QLJ#?JOORurzi#~^J zbl~Q*K3_}xwVt}gg0H=4OJUpnI~Ers&trdJN8xPz%yq~B^dIC9yQ^*Jd9e&a_eHeq zwYpB@SlVxgYRS*wuIv+Jzj=qz>yNHOi6wJQJyR@h$0_Wt%iBN`u+lm6WgX^yJ8ieQ zM?}Fh*n^*gyv;M%fx@K&|ClUYI{YrcN zik<_}6&vh$(>&wyo96qI=c_Y3+p*P+&JQbeeJf|bWbW`{xm0MR{v4x}@cPO?bRt0>95((~MT( zfg>l;f{b>m^aVEZ+TrCs^s#z>Y}`ag&$#Oxz2-*E_+ozKjNNaqDg5*J9gA;@UR`+c z&WcH&KhIl{Th!n;^R11S?zc3yWK>N0!mqSzcZR^4fU7@Hw7d1k%GezTdhc$zlf5rC zu{M>nX&UF!dhoi#if$#&r487Xojkzv4Lrpn30Dc1Gx(|Dp7vv7)lE{q;30Sk-h#i> zz2%Er8l|nI&7|$VZOdtFpV2hw+%1{G&!6|SU%azvQp*-}SJ|LzMc)Mbh};K?Y-P*+ zyy;;KNSKYVGzo*|ug8`xJm}h1L&1cQZcM3jAUixe*sRTq#)xpNw0i zURRQ}_vyGSH73l(I#b{yIcLwy+1jxK`i}iU=%H~!o4@4J{AtVS*D}^~3;PTCyT=#9 zJKI=OU4KxTc1gYPc2GJ zfp=5qABa&1P1gxbnZF(E2_0M6^X^q9t6zrZD&&k!9i}W>3ar#H^fl~TTi92%v6ua8 zDSIsQ0&5R#UPL0_Nwq4=ZlfKk#H&y^vr|VS$Kp&+O@{X<=6l+(i+e|j%cr8pV_Y>~ zVc8Ev2VXG5Vb$QHUq5uCAMPn+-Kmkl!DkIS+GTlB+`%g!U6ziEh2Mh98sf{y936+g zCpC^(Z^%~!Cw0k{Z+G3}uV115zP`$B6TGto&dHJf*eQ2Nn`paww;%V`#gx_Nz_7+H z*1#gM0|=~(1jfRl*@Qivn?U~6j8nw-As*H2edP8WF)gR^DdI5ke9KeyIrofM9Qo$+ z(G%X3_(|+Xq3>?V5gWq75hEiDd0)u;Lf&s3kw^@utvM%0Y%g_m0Fzih`6CLn_(kaW z&zH-551NxLtNBWt5{1}lGH>k`#gtd>=d0JEC;rF=b`Uq46A?m?R}_^pMe+;G8X$~Z;<_hIn#QlzudQtz1H^${&KI< z_fpr`?^8y~)7M)9|AjFpDX`TWfB5qW&lseqxufY1;$b8 z)W>inxF#@$#u4;&^wYTo!Q;rdRsLmi=~~8f8{@f+@!ZCER%+vU_f_MGUqa4~_hd{* zGNz-h8qEA)4_cpOg69DoMo23+yQ^xq)$< zpx6|~QDGb-Snn!h=rE15%6K~DH|4r6g-%nZJFMpzQ@t;?7?01i(|+~TmePX%sUuca zUMX|AbSv)*PbFycIsM&V=VV-;cvYLyMtoGNl^wCORC#?%j!GE^Fub<wQ0hG5q69J9|<4gqB$b;`J0D zN4s+f@+cNA zYxvpf8_lNbIAUaZgqBXTTZe$px6v%Y^orCebqCWc%Jd|w;BL1oHo+lpj?#Rm$hR5$ zU+L=~y5%J2g3v9GFeXCBq_bDa^Z)W}{8Gu)XdAo#-9#xD*eep5D-vgJE$e>Zsl?Jy z_U2FD+L{y1esS)t9XVr8Z7uzj|Mrep5}C3+dO`~E?@}7;a+c!*>V7*h=f)BBIScS- z+BRZL?Ts9uHQ`cJo4#(mH~80$iE{v3Fmh*qhrPm~%{w(|tW^zBZI0=xO=8&T zvE5G7hxs#DPnG<)TeWq|8j^jP{#)bl_tkXit3Gs~aZuTw0oS?qEFnhJM)t$KoO8$V zg&0Dg{q3zWIWgR0@bwzXeG2|w!?@o;AN}}Zed%VdSGnHf`gCJ?ZuF+|+!QW1*Qejy zSQ>qKa%sxtDW&eqQ%jf7M;p0Bwj7ENg~*o&W%}tttPsuZt@4{urHiREgmDsjQKRp)dE=)S+c<~%8y`7$jri3s9%rrLK$$`$=geNGD3HqI$Is|vX)x!z>_w!OPO=aYBG z@P2#FK=ccR+(*Bck~4tVj%)aBBu}}}!ZS{VXPlZ-SP2iw<={%^(s)LAxn3SpcsefOA&qM49v62t zz&{4>6M233$BuunC!7@g=}*B`rT^@Lqu?dD^x-3=4}$yDZus^-Z3iyxMnA6D!l2!< zumj5?*H>RYQb}}L{{~Oh#u2osaaT4zmFwV2=PKk9-rhj0F>Mc#J`3#M zEwn9oj+_3$xM+O62Ft%EmkaM3v?u3r_I=xYR!q}-_W>!Vx83q%f7?UiTo3G7j?c(8 zqt$~BuoIr#bno!^u+`B+(vYbgf}Sx#?}=~ILFf?S`Bi}vr!+l6pLJlnUxlux13uh? z%uZx?GIsOe#gzfI&mb$WxwI-1`T0EL=yQ>$&q1z!3p&c#_|;?}Z%;?=o_6oqn}4@d zbWlAR>M;xz_|`xfBQkeeZ0JeJP#INILtQ)wFSJ+R_nexZi#7JM^S2viu_U^XvHBs_z4RL3B9|8(MFucjz_@(t)iAEu<@tR= zdS&qVxJcP4l*^;sxu9~oK11r( z2Vm5po7vD82C`@(;PoGx##j<<-tTHkwyqT}5u zI$rGY&EOcORJz4JB2!%#7xqQD=3kV-@14CmS!0Rp&!Ur+m|vpLJw*(XkI_+O({_pf zwKJg0-H9$&U-Of(l^qK{CiXc0zGKt&oiTd5|8zsmNPdg$+EHMOo>8-18-`uTUwW=- z!@55cGl}&N@%yVq1|l&e(A73c?zWSh zM;~FobqaZP;s=YH7Z1xCUjco#1->E!Kbs7EA2X;Y@q>}gwTe>m@yp)0waS3(Li{5~ zesFhlMN%UFjcQ(t&DjC|KeeMW&Jltv06y?W&T*;l)kI}#_l*AQOrTD^9`PSepdNu; zATmgP_k~-|8IMz>2DgNH^N-q5Deb_2vk;l&V%jpBwg|oXuePO}wiFPbGNIjI{X2Ft zsUp{=ZfVKa%Dki16Wwj#cNF!U zLoX$9aNbsuftEu*d0c;bQYRJ>d|6b$oxrg`F_v6lzD_Mbjp+n zWvbxNO6)sq0-DYmBZ%=8PAs69MzOCT9jC>nSW4Pou8va_HQNYHbMUAg{gT=^lJ=1yy_p+8E9BYpMWKrHeP3j6FeiOq}Iw`5=Y zXh(&%Z?)4G1DR{00~b268|@w_5<>_{IzGHz^FkN?ZS>(_7X4q$U!c`TC^HN4$d5j{gB9-MiP4>o%lu4_X5NF zzsR^bOCATOz2GE!Mh#aR=Ro3MaEb$`ba2XY?fD29R>*rJb96gVLMk0@{0A?aGV_(yPB z4^F$l=`pUeZtPW;V6S=>8IttTB48=x1`&L` z-8~Bh#(MDijCoVdoP2@ntQyuTF#r$3iwhrq5IF{Wk=8$2dCC!cD|Q{YVCYg)&Gi{F z?L2Ui_}2fg7=UjFa7mSR$@&2oJ23?X#yW6m1()^AUx@+uwrXze8w2p|04`EKAKP0` zfQFLXxR+MVhHuM&e@lng!v_~%f8p!;+LvK>(`fRtH<`7)$t`)NQ=y~wFo%-|;iCi} zwFTTfS>C4NNoh0Y!PgW=da;`f)9fyt_#%mYq3m&)^L<)0KPAxoY<6_uxAY8`=p?E!FHy8d%}C35PL$A zC77{!Dc&+0TeYx~$>fo*HJD1qQ;*on3Le-KSmfPX%yCaLG%2)?ihstuozS##ice@% zPqMd3rSCK3omIh(b7&*BYE42z*|6=)7JWK>?OBsH!(=o~l~}vz$>&Rq6qQTxNTSZX z1auJah7RJ}if&pVCW*u{Fl}9XysE14b5H8)pC=jpF)I{PzBTLyb+by`3W?n(a>KlV zVdKl7yZhS6^&D1-1+LzEafyMkH8RE_j5YBbRt?0aSgr9!Ug6PWp)vmkjhUo?J24I- z*lWZl?p9=bLaTbk77m-ZI=UWLJ#`M0t^zxZ`>1$@@t*PLuP$h1e9zaF2BvM<=wjOuw(@RjvAmNHJ`a7$MoAEjNq*L{?V zl5@0u<9DoY@n@ z4bV+{xPCIqwg1QCUHg~MaP41~=Gy-(<#EAw6ZR}{JSe};d}uhQ+- zsTp?b&!BgjZW?VJ9k1B_L`7tDt$?7K|^kO|-)zY{yQU|HqQ@okrU2r`DU zo@Bq)ecRWXnU8(mn^t ze^Y59Hh~7;{|;Fs?>xMdXTN+=d~stM?>8%(-w&*{516-$m|N9TBxl#K#!O?uB^F-#{hEFdIp;6?DT{nnJMSbP!Bw``K|ZP7 zl=o8i_Mq~bA8N0RG01*AsNDZjPR>|?>zB(7Z9GFe>VWk`A6UKlOp!TWi$|5#2SdL$>!wj2A+p}I&el)3O1i$m}sqzVJm+bO=CHJYsr+pq8{X66ul=~c) z?;*M0M2u6pr@MR)$UV#DTOs!xm+yYLyIsDY$o&qNZ#nmyInxDpRsi-q?%2yVc}}L! zND^5#_2_czfn$jiLVfzPfoIPr=`(f`$5iUq-+z;geEXL{Fu+Ow@9+F4xarU5dG3V) zuKN3K-s}A#{Ud!+_8a8#_b5&8hsxgVKQ}r;mCc#tvk{so`oQHU(LuS7uJQXsRNVm& zr79Njjqn`u(^N+(%USTE(ved0Ccov(@}Ess?QA;8JE3Pp?vov=94kY%;(|^>U$+k( zUrjA%ki_^(RpYw9CdOA;057o(@^q!o@DM*&VEzI)@!)-g_1TfD_>M9^Jq7+8KVM?! z{`CZf1wj({WXjR-! z+TFo_Td034zfWm6kgFLyMRsVz-?ifvpPRTqUDaTe5fqkJuRhS{Ve2M ze3!L%L!8L>zKTt68vEBk4h`e7hKoi^@_#`)jpr(%pR!hm49UU{JuF0-FZSe-54xTh zq$F4;;171Y(VRU9-^jCb#cw{U^=!A|v%GGwI^nlF=f*W;(q`89vZ$7Iaq-C47J+LP zek?v?OtR!KPBAFi=MN}Nz&LUK3F4GOFQ5OF;ycD1JYS*smJ!GF{MX!>qn}kPzPG`r zef2{p&Yq<{V$-?s>2G@^w!wv8f7=ff-=u-$LRRClJEy5l;)ij5YiNV#yFYW!`*_E4 zB_brJZHaeQIJ|cRJ{$A!|L;7%dehk*F%3@D^-^b<;&T$~wX=}BJm0MNitc-GQ|FW1 zf!{fS`%fR*6ooA4?0+b}D11Q9j!}H){>*P=Ik*3`Y}2{lD!$u^w|4H=im&UZiZAQl z)tefP(HDvj8EU#-#{Xlh_<)#N@hkCtHdgT+Nl}i8kBH_MGA5$Ilg9Ip72huWh&+S% z{R{aospBHCRvlGKP3J-eb%u+;)|QQ>;6Ct zSmx5{4;5b(aSCMaJBvIQx-$I!3!Sm5uQS{KZY=zVhkTI3r?`9_LsVb*ESIl{dDbzP zJR{gzc6_S%UNO$UP-Tv(?&^m2W*u~VMEi(?*YO13;LFhQxZ>MgG5A6i^0AIp_$@`L zz6kJA{_Jc{QX|54Rk$zYA%k|UoZ37SxpS>CqFDAD{NrmniL?D7`Ec5Z-6-;vpJF@S z5u4^yR^Hz%_N$r<8oJxVo-XTHrJU?t9~hKranvDt`3~|0lzn2DaU0KJ>}lQ8(wd5p z7j^#@zeVQp27DluKQC=|5kqU7{(CJp7G`BoiP;~=wUci@U|(BrjLFWTEdCLcDQ;F) zI-5ntC44|-nCpSxvp;x7XEo@u>h53RV}tz8hOBza806plMmE)*F2BJun|UaCXe2)j zv0%0QFsjI^k;jYOm@cc9cI<@jmUbwtw~ircKJzWes-)dfvX+V2NL>PdEEm4a-3cjK z{@CrvoD0(YYZyIKOn>z{;290ntHQL19kE`ooSF6b0nKx&oAcLaV!kH6d~uCi9wHt` zf~%=HWAHxCzR41&(`5!{`#9@*WJ)9WPV6v*zhR70)?+_6Q{G|Q0`D`~HpsQiB{~Fr zF&>pzjzJ)UwrbHkv^;?(@DZ7m4_l~j z=zlrKU#pmZL2x@3z)g!Q%X~3m2Ule`Q4}4j28j za&mJTm(Ulr;3c{}9j}YTHIezgv!iFqT#*&g_B>e+^s~(CF8WRL$78-=&nvNf&wGh) zC}SaW!vW4|*znu2q3&WHKu6#+tu%cBENwh!ZwGPor44no0lGnxEvr>VtF~8MBUipM zufG$R*S{yuLh!tn`BWwIn!Y+iKh2{r^}3FH(=%m({!F_%+Iyx90+(cP4_*UOt^oOB z@H&9c*I-VT`AeLU1njrM+3RK@uLzsZdf_^~i*kXSzjLq^UBdP7?cUrST=$UISC6T^ zCb~R#D_8oXse7_GKO{Ei1_w6y^ifxt%h&z#!Up_HyYo*GqZR!Azk=UJKLxLAbejL# zn!Z6~POfDN@|*_dV$5oD{JP7jgK7=XetS2^b@f!ZMQ33ou3zlx@F5+X*_|&Vw_oXL zR@nRA83T{NUSE4THKiC_I;)A%zOsltWW3eD8Ps`z7(oVe$rfN2v!6N{(=z&B_H^wV zbmda7_%D)^wgj2f!V>oOPV#bg0qa)P+**5^a{ef~$}Xd`@f7c})R5}iIG;WnON?Fg zVdvC{)@9u7hKN>)&)Tj=wk9YMt%-)nR`O-F9*}rA8`CZtHsxM4Y@B~F>(WCfTu-|$ z62H1pWsaONMz(T3wPsQ7KGoFv8TTlj7oi7hao&EhjjN7J@TuS&eeCZKZIa*e{W<&q z?!zu2n(I9AWemk&0^+E$iUi}GG_{yD<=ok&P*As96Nux=ha#@vReU` zv?E-NAXa%q^%;w~bxqN|&4pb0eys1sm2cRZ3%FRH#}>i&yu~~dy7|$O#6P6Jx{YDU z;-`0*GcH{EjC>J^{9X!t+OaI1-x17pk#Fy!|BES8WQ?_7A91YgdgVNJi{#oP&N1V& zL5UJ71Ae#oj*RC&Js;VvYB;*c*zEE2z2Q%#%^6&MabC>+y@m^! z>>%QTYQCVUs-fgGdVZ;&nDfa+$o7Pr#(8s7X)rSG?JHp}`HoF(RU7;9`S z*XaW;pPnoE7WArf(W{P%_U6vvTEexF>lXB?bJ44A0FLNYyC|~=zR>j>a+>kG3;U1m zAGmzg&HlV*LJL{AKC5;4B+r`UOfEpbngFZ<^s5^JI?e8_Qr6N~2CVwmdKUf_-Fooa z4iWvqTJoE*hbVusV}I=^b-k64lmAv?j&h;C)WMavHg(VJnydGX{670e`P#?xF{|x9Gu5$@E{=GUZq#_qVx=y^V}vi>mBt5nFWbF78>XdhBg3 zbl=A&^z^(cb{PtKz_J0@2gvuF3#G*2EhZNAi@3ym-r3U&AIf}%p26sy}xo}#=-bD5Sp%G>6%J_N%b_3FHso>yX4~VAU ziX(`t%&r$<4n!sr@K!d?|$a!6rcqC5M zX|n5fE*Jl21zT}V-<*{6tu*ht(dZ|karLvtzA~w~XcGE=_PZ+LFl54SNKQ@*=lROx znGI6c4bae44?NiHT=iftJvSXV<;FzoK|Qx>5M7tRe-2ZUwfupZ%?fw>s+rBinuD$z z(R~p5N#q_yQ(a9$r+-?}GV9EeMGfax;s3zAd=TFJhw$d>;2{JL(aUMyC(m{6G2VV5 zlUM?G(qHxfUElGk;ia8VKmB>trB8cldeNt^!B^P@o$IJF*o4k1zYcpyXuC3ExygPk zG>wHz&WA;e?;+Ydj^9F86a;9Q;IqFNK23b(3!&{2*>~ma&}n!DooE7QZU~pyL$2Xk zjD6v3>}hM? z7hkLT(vZs|O9$dhU-|m>oY(Q^OaIHr(n2m-2kFeS0`7r*RGaf%6XrGuTxm-?Jhb$m z^lg#ehpIAVk;A3&%|+NZr1Co-n<(MSB*uj&L75f{-L?nXVeION_|wFsAby6Wj5#8) zvdpWahRoxA81HPnn-_>V3~^u5Mc)>`kl7H9EC{=cY;^C(@x)(fk!tqiaeLRl-ZC>S+N<(z=o_;4R8IBvL7KgOeKb;(4X?%1j;>o88{1gRZLDS48)a=rr~B9R0oBxP7rO}7v{!gh*7F}&yDzey zcXNLfcuScNw{gi@uH%y2JhBc?W5@I%<=fc{k=w@Hmh#}HBIZM1h0b=J{OvUlG$!*74Ij=iXq>#Q2lYNxIiF0nh3`lOtl?_U5X`L2YEyt=Kj zHB~HPb0g@>7ue6RH}2gVv+2`uTzRz18`QRL z_I#Tf(JiY* zQA7+F;Rzk=DY`$meCvUZ`~NHMvX?+tYBIXoEacIF{vSbq=hH6X6J66o^UApscR%kScVgw|(KpZn`}2s0FY>xPVl_xE3yG2MO0zXP9h4;(giD2n zFISEUzj#13YrJ~bugNRTxJWLdFx6b${R?e9AbT^nX0rdw|90eHil6@1=9J*Kh&fZj z_;mc#!O_9Q`D@8Ou&=e%y=GiQl9-y%O6s}JhSti#EW}>C2}%kcSktGL}sTT zv&-lIEfu$4xHJ-;jx&57w)gl;EjzcQW!4_(|Dxoq2B}kQX;1&k<&*W2sv^(hY|&*+ zhuHHh^qJ5aS^UqMsLqDQcY(iyJ`$OL$aQpET9Hp4B<6|K^C)+Xmqc!2VBSjKi|@Md zqGyJrH;K%@Im5m0QO*JRPyhBK>Tg6=n*|-Wi2b*aXW{P)z*BIMxUBMglJ~M7X9!GW zkGj1p>&(BtR>70N8`!avOu$Z3r>9E-G#0!pYbvhW3!d^@a%OcwPjjAVd5X=CgT7rS*MJcptHw7u(Wu_60j| zWgjFLie_7S8r-{~Lu-Mh5_7f&+CbZvfa&iu;voHHB0SGT&i{#={}W5?;F16?z55d1 zN*~%8U+F{P`-Laz-Iu^Y`a$Az2rPT>z7*7Va@NScr1cl`s@y2FrK8uEF`vDujy`Sw zl>EE@gA7ULH1qq+pIyEK=yUYBlnovSNE&36I_RII@hCOifmO06IYE zFFAuIF&;9nBv)GSnD62YlXaRV^E}C}<&f9sxd}Z)XE!=OaBlkuoKE1U1Wq!qYmIRw z|NU}pTvt?@FIcybHj8);zCa(ZqVNAh@8|!w4X?~u8T(Gk5Eryt!6r(|pJwbk$Dl*G z*z?Nz0RH;i>%I{?FV?Hf*)$n{{H0y=e@S5cJE!^Qyufo{E7i*Q%N&=pP1gIoz$OH!}(=`1Gd_r4@KS%8@_9Yqj z67D9(&e^Wiha(8UMP_#^zJ-dZE?*M--{xAK?*|%^i z&w5;RiT`^t4!yT#3m`s}LmFS?x#Lab_9oNRpQEFGYB1}~=xzF)*m<76u_hfozIiV8 zWyJn=(N~7KN|UWnopBg@)h!V+gP%)?^HQt&CB8hbU{5 zvLpQEMp91yb`;-*$#>{O1sBof&(xm%zh`JLpx1amHSk`3-^g$2gN}jGQ-4nTj}Q;n zZ1TD%6F=~060cWmI!xr+^4@jffWg$gj(I3{qi_B<@p`fCZNbJvo)5|McX*!TfBua; z&*2$+4*CBzdA^Bf>^bE5m-3v>bC&=4C3()`89GA#e?gvecxI23=SF#U^NcNuJg3O> z9q4|U17d65#`wH@7jc4Fzy5Dx8VhLOeCP_XZI!v-R-o+fWNnMCU*@&M_!ZlE`LBHr z>jL{zkp;+iJ=oY>T9v_EOlMA}VSD-d&KCRvWUWd+bdYbTo&BcA7<#OGYz#42hZ2Kz z81|X5d^?;n*HJc(c^uC?9>_fQ=Md6;8n=s`C39K#qaF*x6G)=aK} zF6_-AbTV7J4ME`fU_sGwzhA)-;&PTfr!)yKoOh^dX5OJkxE|(O%T>u$G1K!ly2{@v zP2z{zxyb8w24W32jAxJQnbvT?7<<8F^tyK%WB1L&4sxe)_zKRxm8Sgb7VJzMzT!wY zy3-89G4Zuk)YSJD(GIV~(d@9+{3pNr!ad5^{X1}r5?oH_e-2+z^qSICgr4Cjdk20K z@tt|K?#vgSUv666fNw>~36p%oI*@NY+hd(K`|&x4*G7%RGgIQd?rGegCFXCPQ+XvV z;IH1v9%knm+|MaXC)eB{->xCHr<7-WlDYrZ9+bBTeUaF{O8#!9n_`o&LMXzOrDP--hfzX8G;WE`}<;9&GZk3mVLR*>uN0;on{j zj5e|V2L^U$jdl1)XYl(Zzjb(Ge=6{_y3yTfzV7cm>>j{15WF4$#tiNfGgrQmJtdt> zbl+9ufsbFp4SjGFTT~sU?w2t8fZv}$VBQT(1$%pY0563$U*8w6NmpR#adj6{R_q1E zu5}?W>ab0X3aVSP{Y$@6POm$}PC4q3y5~^NYr)2-PdUMNjo9^mGpuHbTWk)oSK|BN zI;RQV!@cg$@iW%@^Q`7G?e9;m{(>v@>v)Gqe*#PDA1yG3;Qvp#_P{u3<(6M5cNN}t zf4Sk5vs1VDr|ac3n?hu}efv7Zd!@Z$lygz;jlShJ^;3?zbUeQqOFvQWSAENE`N!ox zqg)H+8Yrj7DcH{MtLEHGS77vK^ZdWS5L@l10x((_yPx%iap+nY!DICnFzUeLkpPT3 zU{nUd(E9H9wJ=_1jPyD7YhdI7o*po`$EVprn z9o#Oh`T=Lxot$Cc=PdgkXWD-d|Ktw*4!%qLlZE$k=Jn=k(ERzm(0*^EX=iDFdDX;@ zU*eX@IV3Rvwf!+>X3Z!3*7iEiBF;Q*ulp|b`}dk*jq`>Jy~dsg&2|#pm-8(5PoTX& zB@fB_fXyoq;AB8vT8z$okf6bZ@9d z&Mcu9dmi`S%Xk(V7(1+{rJR>ll0OVy>=572!zWJ8h0d)T-9@t+mzyY8#W^ap=OOQv z|NHZ~i&f1Q&4+=!;&SeUaprV$=45l`WUb!yY!+uus>q44Gn6`n9+&Y#HsJ2CDua5E zH<2s$=~KgE-kqcx|E1) zc+Qecawg#SwmfM7cQvde4!g+Qve&{o9(OgJDO7x?Q)8W<{Yq)tnM2!NgJuARw50Z-@)W_s1)CGUv9t4|2C} zuv=w(TeJOkcsY#03&xmz`Os@&@YbBqgBvo2>~rzFpxt0yX9$@eW+$e*8k3!-CTjK` z62B>%I-x0+6@z;gbxNF|H38jEw=p8Q5t+FUJ}A`~R+9Y4qj7?dLdaiSONzA+e{$W)U05T*db{ zn|Ib1vEErSSA`${&|vMhXFv~z533$K)aBc4{O$#G4b{ol!ZHeQA2FsL@oQM%>0BE%CqDEZ5bF|UBSMqL>r$qM7zKfe=p>O z6)w9~+Uh|zR*3Adj2z)h;mIn9HzB|4(Wi(VBz*J2=RYu5w;sM@-`(#UtOJRcz7?K! z4CNgw3Y#m4+wmgT#OV{!KSkT*c`uh^dJ50vib@`1{jCXKu$76;g&|6flq*xN>rRCC z{t102bthtfC3RV-|9M~+A{!EYRwc5>kt;_wS5i*$D%VOm_;>mxrVM-EJoGwc;mWc! zgKQQ2eu;OVPM^ecs7+0lIK(N|cUU*=#EqC3z*lfJ zf@>yqN}ox+s_0w5_xXzNUKo3>XJI`!F9zpZz&D+E3!_##njPSrO4$tXUBQ^>WnI9M za*1E`Op$y|0w)_jxfgG2o{hKv%6*SA#=4DsTfO}qXv5x?1X~JyDs32)oM@GH>=+^K zkamUIerrnU?Q6k3gZjjNRqG$*VgF1$+L)39IhuMlYGWEr9no4HgOU@hYh3-;^Tww= zll8f@n?A}QznIJ=75g-)zx5N^9yFI^9*qvnp&g9Ho71IT18r~8kE4V7|0CKkhQ5-% zw=+j%%*9SiV2PAPCsV>?-UDRfzS0FLEE&%&MHB(domz*$kv)g8zw zRpfJNR(10iu`RRyW^0)xYvgjQpNgXnhq~E&a4djjaBx#O13)M!y9eLM1UYA0~!oNc861QCxGlmT*-LP38TX z-ERlvv;zMO<)k0;-s)K>zdyTicEbzExK8I{ColETHzJ?k!&&zNZ5AD?*o|R_rs*I> zZZC3M75Hh$ZFQTa(-X298i6mi!QP|TtFK(z?BMbaRBZN@ za2xX2TciznVaSn#`n{0vM$ir)wvwOy%GLC?<2p+zGN7-jp|`P#w7kIChWyn7Ei1HS zH?*Ya?W!J%xk{E216_;kxTzyjnQZ3FE`u((l{H%o-Mk3;Lu?m08z#$p2YYwX7V;z` zcM4}N7YAZ$6!4AyzQmm|Lvo{KU+?$P@zZn0A(Ep@=<%X0#NK#qojWUh%W@~VvI6Bw#mvYnm&Yg&g)&9GK-3)ql?OxI3GogN0$h@Im_iVYVxSi?*Y`pw9(95u)6g^cTOc;066l+pcMf?;u?M_^Ge=qCi}2+OZokd3?y7p_+iYY{-}bH4tMO#O3FdEl>oxf6y)96$(-D>} z^2NS&hBJ>vwjU;Q9)73`UCL>Dof~^2O}8L;P}b64*w(uZNBmFR4fV0{vL=O3 ztz{lR3fwBzjE%Wmz?}6YAX}{IncQikuZStL4qmpH^<{FJ<3+Yx%vzE>c*(4#-Z=|@ z>4d+$9z4lAGP#zy>H?O)uYU~N3Si1wOd4eZ&vouh)|pw$Q%@gM1^O;w1$!drsRz7@=p)G`Xr_;3ZOFWJA|H1mA2+Qw4$=O*6xI75v3`b_ zXp7YM3t%qw_Dq>ao~d4$0euyS!y`6}mRNZGi+m^b>2mjV-$Ca`odV;z;QwYAG`LUm z?w{2;h@99facD#RaTHAw3le^F$RL*wf75I94j&+6?)!cxwn;~kB|96Y)T|HEJBZHV z2lV6bDWmBeX0eAu7fE@~9KWvN*6&==H6*4XBdPZ58dPkSw0d-1!zRX%J?RTziA*pL zePc-)zQt~(>1OI!H5h;1_2?IVaJ7EnC_Vyx^#C34f|`C|%@zHE=qODQx{hI3qwG2V zYPplhvqd+t5geaI4!r6=QfnULx4@2_f2(sd{sE@{WX_OF=;$P6n#jX#teb0tV#*x7GCV1T+1Y!#4I+`llBJj{pyqF%6SmTem;g1y( zf}DIU{|n40V2bShcLChkcig}2gPZ6!{Q80`c#Y&cUFLn6SV4Nd!<8yGZEPx+`FkX! zW=VnQMf#4PKc??F%DEunsXOYC1L#MJ)bSh=!Wc6VGAZOFO zu>qaRW6-#qEpmRn2Hal#$|fbCUop&({izKf$A4DGqMZdjhMK>@k4X%1p@9@=Ah9QC zV{a2%2-#mR4U%B1@<*`5Z}MT z_dVd^8Js=?K69F9^n6W^Q=BRGOR*LYw1L3cd3f+Xp*>9Smzj)-=*I(+(KG{kcu{@SvNX;>8TXk%vsn z8BJH~aSSp2>TyP(3lZO78~s3@%cgcCJ`8Su%#nO}9u-{6pdDoH6dH2Ii%*L9ge#^z ztAQ);0sLx{oZ36pRBZJOWKJLtD86B~GYh+pEY&aw8CbIOyTcZcJ9%&xICz*{atIC?gI+n1$81Jev%Cs*gus4rUe0dMK_Q#;l z=}5$Xc#JZ6IP(SCW54KlIwxqhfXOEIF6>vcqp@ReG!ET2pL=bBYgrXBFm@V;T&Rjq zd!PdyOUENh)225K)?LOJbSERK!;k@069=P;7!@63jSW@Awa|1r=(sw5F|a|?#oQ=5 znGwX1AdhIqfIXj&@y?PpJ{&)t4&-Atqp7Wf_0 zp`*FkXs#9>ow+=D=VAB0hQoL4GpWwxBdRi0Y=hh8ij9-RU5O)>czok2#<?H2aPU8afQ1OkmA}?l6+p!IlJaqL2Y*6hE>s#y>n%y-rRR?Q(Gx0}} zQSP%jT+8Z^kIHZKHB+SgE_`21^lPoyRYT7^jj^q%BLBp1qc(#Wr|cidHIAo(=K<#O zyTp^0a^2WN$-Y((E}_?{n{`~9Si9Q)UlKzWm>J;LVHj2oUy8ogTwO+=okX^pWE>{; z<<*OLF5p?}kawq%FPYTv>P-4j{_m!&*n}3z@6>>8uGpfRCR$aobA?q?uvN|)pzIah z#1!!COvFE!KJU_Ck$;qNfH$n}y7`Lzs)GE`5U>l*r(6gB+0aAP!T-u{;n(3^eMQLM z1pmHxjRn_Uyl(X4r651l?S<=sDfX(8%PkeSZS;dP&_1zAm-#0+>FpDnV`-lUIkJoP z*=ZB|+TN{#+at){PKQpD{w!dvvOgV9rkyfA@+^G^QyIfLq21(#)!J>Y?xYu6CWIv-Uz6i)6W$ZYE_KGYuS>{flO=90Hda-|MEH`eX zZ5wIZM%uP9SI-;ejjqY9=Q_mo5trWPEZXb{YP0fpd`@UH@~_4Y+I*zD=c+L;3e3f1 z+9Ey$f`1o%fQ@mrjJYE9i@h>+=;NOz<3?Y|Jd%0UhQ0bc+84an9eF==s+=3Lr<)wu z3_x?($YU$|0I|;%zk{#GxO}TZYoED@?%=C2F3tv5(--W0{goU02Z`P5mzzk;1_hmX z$8Brep4)e5@hHSTJ)hiib&t&0legTpU-BBtd5C@gX3uf8CO<4=yx2r)u{povy0n-W zBb7YwIJ|Pt$0K&+3>X+*x;-R3XZ!SrbKw0V@bl^oH=fgz>a$ZI%?e2BM@ z`*3Z@h|;{bM&;yLy|ZM`K1q3(SFzgR@^epT>Uq_iOx*RzfIdV3#tt{k8jITwPJ!NjQ#M{wLq$1yHKkP5taJXl3S1dRn z%hJzj!G$^(j0MM{ZDH|4C?oZxiY)6;5BB@dxKAU?T4xR_6Odu|tvhpDcs#n=*sJ#c zJ)zTt_VEPhsUm!#d+8{V89^f~=G_5kBaxx(6~p*ewlyR zY~-W#k;whCq07qXYa@N$h}>V^m-E~FJ#1n&`sM!k2x+mj4{>Jc?=83YGnUBTMDCyL zaBZ^8^vm>jQ%4f(#QZ&Pe|i8-9vJ-nx9I>5q64txF^=c}%HS0o%s2B7T}?O0{sSM# zUY9Mu7a_M79e@)Zfb745?^QYgVtxhJr|SSRk`07NIynYjPnFLG7viLs5ZP-@J1*w>)1m$>BrxeGZGwi=rJ|1RicbR2pt z?9Rl)OP$nb5d4@YDz+~PTqfne-Jb96Sgz;o)t>+8e@?_UAq0K~?Di@uZ$_ z9%(I1k~lDw`{T~#1DFrn`6kak%6j;%k^VfF%pI|j?!jN;oBIY}H#QLau~6*DOxTl| z!95Jz4Z`y^2FINJ8Me?bV|%X2K@~s!uE(5pBS-4{ekXRZ4akd}2d7>mlXTI>TPUN+ zBpuAJaRK{h=q(%bZ5(BF`{$3wGGFcq$Rx45)#}k@lK1#!lGv8T>>PcoQ~W6#v)G%5 zK*y^li|B@`IcpnpME-9s2?K7~8g+)y_}Bq8N&c%6>MUYk>Wo*KQqe6XBr6Luv0)kq zUvdUJvU{;3TLAq2?3;VaLK=E(icjpOJ8ovI;e9)vP*!@<{c_EYCzX{uBcT&N5}8Yk zCY$tNYhp@?Sm4P~n(&F!atw6@atzf4atulQ=h|WFX0aj7BZhnM`= zqAhp$<00nJzP`9-l7Hpj!S&C~N9+J!RNe`x`IG*8p{3?MeoOABce!V5yZodpUXzb* zlzd<{vBX1))9kBXRL+Iew92>0M~_N*`u(@ur7zOxD~Zz^=0H}0j3;uEU(O;iJ4NQG z=K!0E+{z!5Jt$7A9r**7$R9-Jm<|jVFfQTeBeEJDMsQr-tL$+DdAuf5E{}3&gUSj2 zE_S67<5Q2v+h5sHlx?AGTTofe9(7WmSfjKv1m1Q4Jg(pyOSwAA9q&_4WYHoMlzOj< zfoo^2@Sl`5QPz&E<#3;}A`iT#oa>5Q>7v~)S9-N?xq^PmQQv?Ne|@JZmq&d&`jnHp zG&$x^EHxq<6nsUVG?Gh~LH;jgy_9{bPuV5#+1KDIby8N^_y@|>QEoluL^f?lcJ~Os zMV2Mws`c@vD=>81<6wExZ-B8AzY+7LD>@<5>VZQfM}i{p8Xvo?#m@Ay-pbe9Ma<2Z z#=}F^%|9V$g5*n3pdH)#`Q|nGh8zl#FToD3dF&thdM-;aJ7o=ejO4)+dtPKuvKB4O z_q;gbtUXSgE7r1^d#}vto`B40iyE-$&0-JEWG|k_o;;Vmc@8$cw=}RJQH4+0vXd$6r3d3CcB@TT7zl(=uIGu*D>{}h^NI6T^?X8I;4uEA4 zYc7TNwa8AKht|b)?i%2{Cmmlj^n?eXkH%qZSui@&xdD1}J@jT*tkTp74cIkAY5Ek~ z#~5T3#wBW$jPu9HcETCQ;$g%jy@Pn9z`u38GI%L{krn>?xb$@q@dfO`U!xQ0As@%@ z;2XjzSC5Zb;y1=Yg)f%J6+UPh5~9Xu*W!~_f&FCa2xWPG2zMo=w0)n$5OFJI|)6ee^pH>e@=#ST^49m0JBw2}PBciB%ND}wiGx^;DUd^vUqwbK7D zZiwr`@ACVO4VGAAyyd1FBNlXFC(#v(P8(T83BKbG!WW%3#wXVggD1mg_b%4uNX1%R z&pMjQy^wYFHNM3k!>_j+2R2F^lSU;nJ2iKG$t{Q1$F0(0v&42M;QQV9VC0bXWnuC2 zu|Ho#{V6Z4k4t$dYRE)oQ1;_x8^g}3(Ux<@l;nv@w55jUiH2xP)(mCv;`i@sew=yq zF?`uQ@BgTIF84RFC9NDjz$UrY*215?@xaZ^53g9&JRoMEO@6QCcV&#hM&5+xWQhf< zjwos0Q6AU$;E*AU;1y3JqfN#x7F;bFt}m~T`y*>glkFhuk#>JgyBlfeY1(}&c}4SS ztH_z8t*82FtJt-cDYO;YkKWeYKwHluM?6bxlZ{GLw%)e0#tF%fD^axd@vsSoD9cFN zChgrwTL%~tt)ppoe{EfhO=KnOZshwTo7V^0Ci(AvN!y5RTCy~#U0JkC-fgQ}AE)D& zDE}t}wTm`>41X+R=Tv3v)|F%)UUy~eXixHL|Je0y&pUnE^M`+{JvRs1GrIYAf%bf| z#xi$Y0o{J2kG|VmV(h{=OQJdr1ird&2EX$4sW&halSNP8Z>CUW(x8h`-Wu-*LFJ)cd$9mncIx7Bg_9s~%r-@lCd(#H?raNR_ zGybzxYqj*`aF2^gZ}5i8>_}K=a>5DJipiS zTju=hA6(s!$@F9JoM()g^NjJ!>$Evv^2Z*{-b!JQ6TY(?8_(W-c2t;UDd)zmoEx{U z-u>)`OZT0Kf)_svFTSB6DxUo)R{C(mc;f=upB#TCpC9jJFHOV7Q~Epn1pPgPeh&1v z?A_Ae^y`9L^ILJJ8^Yrs6F7WZ3%^%=tcUz&{yMt&U*KzH`rsk;dnwn=ewc~<$Z2?m zrSJ;lR*%!qw-eZ3S{{Xun9Fx^rfO&D4C4Y1=f(iu$=T@Q{;%Z+2|X6fm;Ix>#pG^_ z5jn9Fehqn@md|+S&Fl}*)LHG*uE|@heM=sY)EVeuuqjDqFVA)yjSH{XfGtFLaT~s( z@=bApI-^y1BK|+h{q?(UEh>sbo^Y3|=~RZ|Gf#kDqc2+|?SY;t__*SGqxrZFCC;zdpbT4q>@DEqI&8%e zc(r=?V)4=CJltq{+EP=)Zx4K|Y4r%rmc)c@12%Cn1GZd#(mqCc#le5V_biA}H`k3; zUeU@mSZat3q2)XlTaqg3D&sEtK=BQgTvTse@3*yh=LSE|qUSyyZioMXzW#>3f%myK z|FH{NnQwI7$7uE2Tl@w%(AAB3(96H(x6sQv%sBi_F9K71K!qpr`)m3AM1yJebKsOW z6#ah?PMTk10=jRFFA+Uvz-9p)bUaQ{PHZ*)Pv3Hrt}d5I{UJ(uZ@G6VS4WP8#{;-~ z!F@vz?o#&;1ZVgny?$MPe2VwN7memRBz-x;>t5Zre)pAfSK&<=>AzQ`z2JRcpnjqC zmIl=?e5lw<^sPI%&$a@?McsD=VARou9|XbB{X+Y~2w@)RywWDYA3ScOobazQZc;85 zK2>-n;hAL2u4+SohpnJ&+Z3<+JCv1m#y;b|IjDZE4e(1>>i3Uda2u8bLu^*Y_o-jE zSt($SYc?xe{CEhj7i_aqKzU^v{=WenTIhqgARKgii~evJ1uPlE`M}5{cSm>tM%_SS zHUz=Y`ti`U?O04%y&qk`u(LkD#-~~OqK+5|7x=BO1r5e=op<#6ENX4B1B3n)JSG4` z`nsO+ITeu{yseAk7CwD4Oxz|;7e;Ki_p;fi+2r>u+fSm6QLm+}WFo0EX;VUKrH zPTS8`N1=#OVq|Zg#ofj^ExIv%Z};0+`P(gf+hMc64>g}q+Ifa&$xrbm`qEPwF5erR z6MF2DkI~agjJ`7Jli22F&hGJ&TQwkKPKSo_L?SCL^)_kw8V?DNOTI?)(PtKbi%HHm zvG=UG`-F4UqD@8g=Sbcg?eq`rIJ$XDlIC+d^k2a((zRu_>4RIG=C)xwB&% z9}JAqkwE_GBZG}AJMPTTVpnj^{ZnU1Qk4G;5&IsoMU=jjm@GXNq5o2>6*)gQz?1F7 z##er~;};|SAhd?$mozKy9`97!K2IXP$TS%f#?=KsDC1eqIOj#8Uxr6MQvR5GUiOaV zBCnQl6B~Mwu`={rrPaqkaL81>)Zz2k(`D}64qa2>XmZ{pP} zdMX+FO@l;k8PoXj6LT9(Uh+{)+^OlYRQRN-UsEKszXG+ZFaRBx7+a(<-4qR z8keVOd_HmTl^M^?1DB+ORnH)^(PT2V8ddWHC?c*6cBsUFNIy}u@44gVwYxs=od5pk z4c3o8H?2OZz1PZYpW`&ChWSqTQsSc}XQ5A5)B>xcJ>6Xd4*Lrm2*-F#N zc*QpYJfIE8cj$Fr$MuCVB>4h^RX&tR5I2 z>?iQ&HUsalwV8nbx*?`o@{vd$+0MC&?}wowIqS$DA~Jc&13L@7qdKB4=W=*R&ez!9 ze8t)*Mpx2#LhLuptzBD<4MoJ`cdq>9a`BHgc@GS>MVNA&eWKiV z=C{V&$dMtrMsJ<_@x@B+u)CGqPjZppEJBB7+%&W8X78+DmrURD74dd1|1E4!&sPKX zbdL4TYBWAEvwMMe)|c3d2;V7m=$Gh*+iz}}CGlKqjRU&d%9VvjB1cqPun!>ykZ)&2 z%mo?iB#8wgdno<>z{PCm$}P7#@#)?txde9NFJ)5WtGg4U8axBxCqk9;iaG6p71-x| zO$=HSXG|C4C*vvdu}2wq*_X!&kBbgs5%1Em;aD}upTD-2@sbdD>uYBOivWzv196V@B?R^WM4m zo%a-CQSsjqoKDkM(ys@RrHKF2yz7Wp$eyI*Ed3$=EaSmhVj)~r54K3b^++9g z^vQM9A+ijy>yvg$uC0Hior0IN)x6^eCpu_%>Lqnq68LsNuV6EieWc73KQGZtj^NM* ze->E~Vwc=Z4nA6<_X|+_HM`0{i8jDH8`OgHn*e z*&n*+#2|8V|KW`Z&z`;HKJoUYiO;^x{j)&1cLqFu=f|}3&!Ngx(Rp?u(<0Vr(`;~% zcGojDSIyM`?$yYY_4%sf-o_ZJ%vb0tw?XFXw)_*3D@#}8Udlf~?xaCy(Ldi#-Sf-c zC!$u~w<0=y(4@$RBI9p(Eh_#GjO^{zp}bSazO5Q8Z|{AaccvjN z2Mt!~53wDQ{!oea{EYPdqVK&VYbhzPmM$YF?zAYr67+2=0_$lWzh%Gwntkqm_O+?( zYomk4trMJk?OkdA?>1J&S!y2E_6jrOMq4$X8Wa1s&1YQp7T<@bY>1P29f6Hv9ebhl z*F54@XzTd{<_mJ8d$~#jIGET!qGhkAPh}2tzu&X)-oSh+z|X_PfAE_A|Io$CIuUlqgfqY3%Es$~Qlo z>?=EwjqT2i5%oD~*k9&fKRm}soU26chRXIFW93IV$(%PX&Ipyh=&}(Pl6_dS%|bRj zyRt3kZm#WIk8qviI>uF4nG%&znUcGO`x@@Ab3es>)Wa!J10GJvO|0CSlTf)OXJqB` zIio7K0Fgu+qlqUH|E?E{d8^y_YCgo z+}CiQ&HZ`qb0Ub>Pt4xLhud-tTqR-)MqI^i`m2oG>3Qr=a*m1bZWd=zmf2EWZLqY4 z_vDf@BHXf}NE!TlH9Wf(dU!YSJVZY4qT9v#Ii>9Jh5`&dZZuDqT2rTj_Tz$45=69H0BDb$re*pWB}EKWkqt z{qpBKa@^0<<-Gdbj-0>$e0$E1t;=&>vff|n9ysm3!PZwwC(*y|4;(q}zuHSD4J@B2 zxH!0oZGB$mmQ9K2Zb!E-XYU2#T+3Kg(KcC^!bf~T8=p-W{;a}0GJRck!pxeMTuKg^ zXUsQ)ZFr7K8f@8_2) zp8QB?$x^!~Kc{`H#3*%?w&i+fDIwu^Jr|{JZp-%0YRhez^(?>Jv$09T9!r0xgv8wS zv%q^58?E-hw@S!}yB?SK)${fku-j_85xC@x*kU{})Aep$P8)sDmeDfnY}qE@14-qZ?O%J=!YZsZ79`)uFe@A3QnaXqf_6V_s+p%%KXY!BLgKo8+i6`9w;y79E#;h;ZZ`BfEua>l-apY*g|aqB~^>? z-lIim_h}Kzi%~bkLc7$iE-&;}lxL{X@sD^zZXGZFTFQrm3%&HKlqK`(DDz5ud_CNs z6ihD(-6Q=e{^846gUg)}fv31<#yXcidm^%L7h7cd^*k+{J;CQpv3btO-6z%>ypM7C zJ9AWM2TD&<@dzFWp&a|JfOQOb-3(64eX zxzMlP1f0CHS)c2)R{K=(F>PQ!t)w0JZw5}X$Ed^-w-ZbJNzaaqfl)snPq^xgWZnyS zPv*Ul_d?z;ekk{tc!}xjEeyeKH;1<^bio$gc9ru}aN&d8SP##t+pVJKipOr%qM>!0 zRcvF$W>v*bQ}D-uHyJ!C{{GlXzhc>I8n&y^jl$cu=642`+K7uRcGh{lJvkxvju*F9+y7T;)=leV-*!%YK4DIybBT+n=Jdg3b!Lyp@ z)830Su8modaS!|B`!TCC#w^;Dao3`kGVWQlEn~u>S2FhYyDsAdPZay+P@ac|Zz_Cv z_)CS44&PQdWB4nDi~CJ2T*9-0r;KNB)}Zkxc%tqdG=3=0Ugq-&o+$Rrp*(x(*AqNZ z?4LtDT0Qw~TOctB* zSh0u49@9(ta_;6}gM5Vb?dY*CrZj;4IP_Y2;L0^C=lc-aC;Who`h>BLB~55HS-&>q zKj`5Pj^TIP_1kJ&z83rIwb);;#r}HjWjkwqebTqq`pjO!c_I3B@HenVu~qAEjT(04 zf~O<9^5{nGNn)tGjEM&9o<-Sp(Sex^G#$YB0~{biuk+CLIxwTr1iL=@XJRhwIC~SAt(6$ z_SqZ4egFKrrI!ylR|vHr?_GF_q)dk&V^h56oDtcGlb% z6bQXPojxPNDl%iF^XuM(i)Q`OuTa-JiEz|3**NpYJ?mqE2L@ zNzi~IdkSNo*u93lH26P}aX65ddXSga^KHpWhY{m1&ytV|01Y!BzC3tvIh1E(O-_G?xN$19$2;Z8Pl#bSWkJ9@^0tM7rkk4 zx&s?fbbi~?)Z5zWFGVhXqm@VWn8-iQ#3HkRPxZ?Xz~@x=x$|BzVoqv--jGWY|f6dkBJTB4t(3>ZsnzMX53k1bEU}0k*75azJM2* zU0=>e_N`^e72%Vc$KemS4!L3g-dy$#Svy}dj+AvyY3fz>8Q%&zrPI9swg%fXY&6kT z>OSo85zw62XzH*(?^6Y2ly@=hLAHpl(pL33^|R{v40V*YcJJGCOC>UK-@K@a zNuiDz3uCAoHkhAK|H@9rm_9bBYAv#|W?v6%#=XUvE@ct-0V*?ciAj>r-1Gg&n0v*& z#kbE<6$@S)I!cklukD2nhu^{T>vz=W3%xE5=pDmu^ogFpp*t+b-&%BLmdz*Yubb#k z;b&KTm)+=V;3!7t^hg^Vq9YX?()KHKZnQ=8hMUMIdcz#@iOy9c?Lodp&t%m@Y)35| zmd;XiZkE35St%R6;XQ539@d)ga@oiYEgjbq$%k)q3i(9GRgXS9scqRQtvD?E$Y6cn z<&1->Sz{aMXaqYvS;t6T7A@j>%Wz(DlD=eBHq#x;B`9 z;*;a^ZsDLF;caouyb_1#>w?=d3LG+D;=Rn7HOlN+_)^@!e96XM=H*3(&E*!}KGJl( z82&0o998s9*nD`f`98yW9n1fUtXWyxtXns~lURGQKgvFm42=Ar$NH6hU3@mgR<1Qo z(bL2pk9GB)a$k=!iD4nSsr}SX_8cF+t@%A=UdbKrwknM^W#BXNN;@vj&0xR0n|*T} z`)4})Xc{)4W3d6X>o%Z8>@|5K*t5)g>E%wA>DHz&+}IbT9Z`a=(?!A3=Q22KEx!WBka5AHjBhGV-RWD>Xg-dOB%cX>+;Ux5WPA zf}V-zuD%9*Ud10(IcjsqORP*}Uh#70-fr%l!H4#t4ctqOY`uUur>C%wUxw{T)u=w( zjr+fem)S*W?!|cZhUYl8%jx?BeT3M=4kd1;)F+A9?KRkfK-Xl(Uzm3&z@6QN$l=ey zPkzXqnX{3{-(inJ&W_(JcYWtM!UH|Iw@<)Ladg6Qd z*gaaTlx?%e=(KsmE!=0$7#!nni?8jWRVSd;kMb?Hi|5$OpzZu&oDu)9M^%-g_u%eu z;wm9erO#aSAGGT5LeBV~IhEl@=)a@fvn>7ilP=0F0lw4dvqyOvxpyK}k5L-c=s3J= zO{f}nVAn|Q&SXA~r#}mMN|i2w-KrhmO51^BockVpIr~EgSDb!gr3*ec40>^c{eh+o zB{J}cy-VO2^QRU*Y){wSTaI#v({bcMDVllzmx8Y*I5hk-b7uK>)Xq&1x>D}wEt{l9 zHTpRxBo3X_^>4^tmz1e&;79XMDb-QnOm^K5&2Gx4cU;`-0q$=V~5-$Z0C1! zh}~l&)}*8heu2%IHTZHlQMM3l9=kLq5cjS~RT?+L?+MI5n5$B506ju2ermzxHc+mt zoydrHVkT4XJ(QDzedTBH$nqWMuzT#3DQUZd+T>7;vi74hma<&Xev-c<7#D3HNf`lj zsn+-Fq0%N$(-8FkmfQ$#jS zMhA3?^(J`|T;!|0HUK|)Al2ar5Z||PGIcw}e61LD|8`>5rsw=M?}~B82X%sswbb(j zbGii{%8!p|XV%j;X^qeuNN?t~15NTx zoK?Q>Z%W~RneQ^!Wxl?^Jwua;!+V#~IgqA=1@f5ZpCIqq2;8rj`x5K#EbDc>qiE|3 zQMeRZ1x&#Vc+@HtVnM^+?Yez=LI?6L* zHMKBB`)Fhe-zl1{aFq75YWBj>+J_?-@x4e3DYVKtp(zt6>;1DAxqH-HYqg)Z zWNo4>X~$#cdj{{b{nLCNHDtyouCYGv2i#r5Su>gb6@G0X^Cv0U_$|5|S#u4&xKGPf zv^BT8wpH#|v+e_3#CMJ>iSz|q9JKQ&b6jABcgV)x9)Cu|4;Hzb@MjI|lj2kCK=ykI zdj!#2hzvz=itGg4^D9Cx3O{G~x;h)Zf8zJ$e9Sx6fsC){?N#_Q=Dtp2uEt(b=7Tjq zWWSWXQ}$5VPao#&e3UaZ)vk2QgGQEf!UOFm^s~~VbParauP=YFlQXW>Pp+qVZ%o}} z&NZ83#6EP_4t)74p_4tFy)~?lEb>cPvVUm&mOIgfK9jp=8RJ>%I>CuG~$MK%5G_ed@B9Yk}X#UH5`>A2`KMW1o)GiB2>1kn^J2RfpB@ zmF(O-|BW%Tu??6J&smUN=uj2-%;1-<1yX8@j zebfiLh`v^gHAib4vuDsR>UY9B(IM@}PE+8+h%1Mz!haLC;rmjw>LQ!dA3=X4s1EEE zlo|OpY@JD4&OF(dLOc-YsaSkxhA!kz7yM*u;E(E3imO%D`gM|qU(BH~N_8DHgh%bJ z``tMs4&fu*y>A_J;t2GT(_41hfY%o8uB>LNU)$jI!WNglH*Lkx;Wo=!HPmjcEGx_eH;}hAPH6%1( zykhd+OO+YIyN=;bmbU5f6*^D8!q?|}9r{EzTnleRc|OYXQ66)nQF{qJbtltTk~w>H zqe+L}A#^Bo;~m&sbdawYI1l;qfUDE_&F(tQDSTacXM^AD_3$`fVv+VtzN|Oo%1-p; zvc9t6>Aqww$r}3u^D7%(?te<4rSZe~fVY?Qj>@cG&;3i3sbF{4;s51I*4OllP9HD# zlywACvkqAwFhf>TUU!{m-6r<6bDi+4-E^MyJw@x?Vcz=xRjN1Z z+oBHZShH5idY}JgFIi7JrN536r$>0rPq4EK<~1G6!v^?7o7hJx5*N+zgA37G?f%3+ zF{V3w4!qu<$*=Ql*he1ZJD6Xz{2dMZT-nEZwu_180FUsUdrUks4mEA?2;XV>*I77% z`K7ODOFewst0s;b>@0uP76&|NI~?%c7Vq~dIFymand?m)8a(LpZE>Wu$1$4v4&)Ku z@6XbwynlMN`TI2d2;-0^`_*kqbsqbh%uPRQD{r@!=m=9rTx}kfKZX69K8D7ezo(NS zyXa`XY0H(Y?*psP$#L!u=an~reHJis78P@T$l8$e$T)9$>N1?gEtkymM`EP)sM^MF zdCR(zdJiVwNn0ORSbyX<&>)8V#_9L7=UVcc>9ny@?DQ#T!(z^a+wjAp{jyKPm}L2g zqm)lyTu<3WyOqQ)htLIqI}Ca6eIeYV9+Y3?(nTG>3ZA=xl{Ib2w-$9q-o@Isei!pw z`Zk*~%szWBcuy){fLxINP}uk6&MG~=(}>Ia&=s&+iIR1Z^77$LoyE%V$ToFPf6}l` z5P5aihmrF}5$6cIFk;#SBqopU%Z|0={f0(t${OK2kN&~lCFHnL zHW*&B5x(*mwnoGRInW4?di)ReM>->8{DS{O9#+Q-k9nFgfp;tO*t#@k&lCPGylU{A zN4I+vm*2-(H;%pCKlG)wxlXP6g-e}BJpQBN>c_EfnFh~!-KCb-u7}^#=izMT&2;^q z!1L=1l`OgcNqN|da32FPhq%APKX+PFk&4Yy*L%PAJNpFYys~D^ zFK10_YT-^BJ! z@}^IH*a{sGdj?ev#?m_4Bb7I z=cUt|3Qxr6L>?b$i#(2xExsx{_coPhyu|bA$D0cG^5343og()ji{3LbEYfaMMl6g~ z%BB`8ckdY)89C}==Mf@L>L|}b=IKK0NvEz*A|&sqOP#?H8TrCLNgt}G-!1loyPzM& zvENMRu6g-BO213nH_My0=VCM1QGdMvJ)qAo{Agr;Z9|T|3%a--K2*kKJ^rqO$1iXC zeIM{0;jxo$^}Ec0;JzxpzO}FRe!S7_4_joe*;mpx=-%|cSx8!N-|V4poZu4}d&`x5 zvB&C*Z(94}nDm9%Gs26?d|Ho$Ml0=U-iWGLCW&gpA{lnX57`SKCt_g71DSexTdhTXNW2UW0G8 z^7z?*-eOhP2?Xq!7dE~}v>m!LB6}hqBpvV`LLGGz<+T3s1 zm7SM3Bg76;>{G;d@@n;ZlJXw{=Ua|}?kCNCQrbek%Xy6Ta^;??xBu2F+y7(o{F`;Z z{%Uof1kOgz$OCp)V49qloPSSpPA-vivJdBE@`5e7ZO%z;Kj$5ApP;MK&&fY>A2w%$ zjL9DQbDE3^=cb(1Q;9S7B=VNrDCL#lbJAOfZ)#8t>0QrOV%FBvVPa> zYRP&p=(omixj*V^<1%Ax(bmT%Xj=y!9+)xa@Su!`4_}+H;_!_b!Q&ATbP-P=M#U0!e6R%2XuZyET}z``*f4Jv&2qiYLSd~{>sldQuf z<~j@>SB3jcg4dzzLt|X8*iWo=NZqBrZ+$qhwQfPzv!joZG~ldx<%> z?W%LmTX|*O4*d0BnR6REoO3msTC(1tZvP*cbA`;gLgri{bFNTqmH(YNr(5_jH$Oq+o872IO-QJi2{~11L}Ef)_YP(m9uPp3N3|K+fZb6q6Q!-`mL9F8fjN{&=T(ZW(*f?k%lz z^-U|USCL`p zG8Lh#8K;1}>F*Ty6W4L}7oIc7SoAXx9%?y{*wbpz#Xm!?`UuZi`0pC%lX}iR!BN9r zRTIkZP=1G@W02oYemj+&XK9n%-!%;xMlEAih|ELohY9x*FC9M{xgVwrGO%;V$hr)B zdX3a=Gd${}$ZqhT!i{!CrogyvEQ`q|ehl)52{VxMAcLt^@o|gmZQO&H49zO@ErR;z zEKtgJJCzA`?gkAZw%?n;e?od_RIIzxiec_x*+Mot+)d28&CKnGY1eSRk8>ZRmwOaF z*bmktAMy}W2)c{2EV4@4JD6`7r`(>!)qg-=`e)VUdczhKw&Z~kJ5KQXM7Z5^B5#2E z#H?8N3G5TURBnC#@O=B)zuCGjyUX7H`MZdLb2#CTYhJhYO#dzUUPrI^I`0(^{A5Sj z19NsftGHb9pQNoM?fXH$pW*lL+lIM+a@&pWRriK^zMnA6oym7*Sbz6T?+)^OJ}%m` zE#XG@qbYVzR9a_G=P{iGhwpgZn!t9Ok?1fyZ|YrCuk{b6=Z69aw|8#E7A-y6tzl zRX+Ulzf-{I6#|Bs2f@w4gPR%o@&DocS+@~s86lwXg!y6kKqG0brrI{gI%b{jU~`a$nVbET?ec>z03Y^1i4r_?W~_& z*d+U*$gi*iJBVO0+NDGVjyg9A`mFhm^|?1_eJ*Bwe#&p5yZ5p-|*J}6MhPtzEyVm_!rrk3|F>mZWy+ddOgUHJW}XFt#{YVA zUY})NpJSc}@5%MYh|4!;TGK1+$%ECd$P*P^o+xu%Wsb)($Ajm**sBk=;a7!?(lO?* zH>7B5T=?!S+1NEtCg!E^x z(UDJwmJ!|f5cVPQ5%!`Zmw0^WVX~5t(dO`W(KLhD%C&c zOegkYR|UHt?}AIK#fDJqZR9^X4HvtP$yhI{u%^{~F)9yz4e=K39%&!anHgc;YJ*V8@V-566}}pUd3x z`OcYs;%`mEuF8+iqrcB`*Xg_eoASc_TdcYncl-@pSg8OT_fTPu_;p0c~7yt~KcS1jz^gxyd=9dW~Tn||ix%L{uoolPfp z3AAgS*d9=C#Vhfv+`8WU0`o}6lQp0W9flq+_a@#yCH|+_UaMx@sJCP;7`E6el#e}S z2?C3LIG%SgZ63t?-)-~Tz5lf~Lj$1iCVmU$NgRwO+AzRn=)B|mwZ;j_s7QMH`IMVT@8#?sP-LH&G74jVVX8wae%1i^#O}wR! zvAmC^8S!(*hNBM$e@ovh>sX48yaBy@iW#@4bN`Ox77Yil9{;yZ{?0ckWi7h>cbk|? zlr8lcM7|ozJ=!LprNi$$s)Kkv35kj99tG{h+q)1*IjKr_OJjY1j{EV?T@yv2U5n*+0}5&weTUUw!eV)&Ic%QMpN} zR@m#h&u$-A_e_hj>NRYGDuxy7adpEwfcaQph+VV`J0aO0%CTqOH9xdc?3A2JMP}77 z&Kc~iDyqVLlhI|=V9)zGb94l_vWZ*$W1Pqhj-{O6=KO`?$Ypuz7z|fON~2uC5F1B7WdLKQ=nVN5$U9zn}WV zt6f}me(Xx9(-GcBZc-ELer?|S17G=X?+3^;{*^sY^b=wAD>4hPJ^Qx(GAxv}sk+jA zvE1!@@yZ=`)!JAF!YO->$#l z&A(L{o_ed%2F7i;r2U?Dcp& z{@+3Tr+)Y#$e67vn(<6;&ir-o)6Xtmx26TSiiP(zN&KJ&Z0%Bu+!LJ}*TtOV9w_Of zw4yE(dm&3{Bu4E$Z`s{5cs!IF-*rt)!%v~PY+V9Q$tykzN%$y;Z^E@|Wdptm`=HM& z?Y)~G#kRzWY(?z<<-VwsFN9V)i1U2zE@A{RCg(?~TP2S1sh?`q5;!utba?i?DdHSf>Ws<+thYg(S~Z#n?2P(*u{W0x-N8jL;u zJM>dIJo>xz<2m@#^X%b`_;gDjrXyGItG&YxVLv^zn^J~6ie zz{WoEPiy?|M6WHfDd&&d*ZnP5>3$&B@#i)2J2wPbW`=!jZtcP~{%^(~8m;t8UxeIc zk^P?McQ2w``G4X4Q+B+`?_9?KcWk)Lv+#qdJ6<&Z zdy@ZNB;B9fb)rAw!(MfI>r4^r??-giae8mv$H3NPAP%;K7ZAHBjPE4AC9~(^UX)PL*^gv zQ`l+iKJMJD6)U`3>)l$qkNYWN4at4?Ey;#_MPxGKw{)60NIa0hXGvP~8RSYO$XOP4 zAZIB-&ax0W%U09w{0M#>8hhLs@_mL+_Gx4+Z^L_rQ=jF|$iNwF$hTsvUt-ExN|3W` zHSNt$-y&s&SFHnwm-ZTYA_8aBhyx|2tfd55iyr#`-c$PPC~(dAFvuA@=gXFx>4(g* z$6H>D=Q)Pm>!eG{D(V08qms7@%q7;Lz;va}4cMhu(!WWJiTt-2-b_K}FqSw!vCLhG zXAz4$g1g4jB_5sJsUvsjja7T5CsDSqc1_GUwI{yfG5+PRtcg*OGf15h)-R6{dD?np z4N|u+(J|=bX!fzlhx*dTjr6gMr}*%kroXcBVV)eJZPo9d3cCAhG(OE^uGzh%?cG-v z?~k2~e)pB!!zF$-+1S~LUQOg%{o5Q^sBaN_Sxv@$Hw`7$sQuSwZ+dJ)sQ2YwwhXs(0@Jjn8lrh zro=XK?c>mz#BuwDyhm_Xr@Y5#&CkmFUak2Vc|W8zm&yBat@&wrFV>o$lJ|4SA?3YE zYhEhvH?-y@^4^QRfxHi6rzh`EiNhuDFR{s!cc-nS(;KPK;#4ymEhX;!@UA#5%5zh9NIru&lxU{3JPhNiOFe?TKA7sG)ctF`VCT~iNC!JqRM&BX);x9VGD{`mFf8!T^G>Ese zd~x9wO<&wL{FK+=iNr?weQ;>tSl$Llt1oVwywIM)PwgR}@Nn~k^4&uESMWmOe=GLT z?PBMe<-SH@N)O{4MBC#W8}_kZHHCvySd6<-)Y#5XS0^$y{zei(Ah-^w(3&;cQ_rcyx-gO zy9DHpJdIeklIOQpp2J~@MZdLG7wxuHk7W)gBfAth8+Wwlnf&SGpS0&;M}DKM`Z4mk zq7h29$l>xb4PN#K9l#D1*g?SF3+#iy&NN`hbpSg^U`GJ^II#19U1`83cL3X0V8;Oa z9I(#=`>Fvuq663{fxQ>lH-P;;um=s;!5zSc3hYC`9tQR!U@sW3-VR{D{wJ`H1N$Yg zmw@e7qVx1UI)FVZu#181sa6-c)#|)q25eXdupbNTbHI)O_6}e(4cL|+w;ziS1a=d! z_X7JMurm$VFFJsIS76@&_Hkh61H00IJ=p>59)aBp>~p|A5A3T3>_;8IZWq|Yz`g;{4T64)<+y##Ex1$zJP>;QJPz;;sUUmN{v z!$-n^eYFGF>a?R8E_RHz%3BCIN&mXd%%Euz5}>f0+#^XgTNISaH~3iD-^h4 zz!d^F$ADYb0o)XUyA8Pcz%4W2iaUUNK;Tk<`x$U+47kTTfV)TF(tvv&xGDo~S_g1r z1TGV}mu>n!Fr0lr&Pw)BIrH9w7A#BRTc-=)XN#dlg)V4~cil^u3w8cn9O(MjYXM`!^yLH_@3N_GD4Q=s4QH-R6?Pgqbr zt*0|kuzNxE(xF;)V1AY!7vL#$_+l6CAGj`Nh#Ho@OLh6T;_tp0Igs!*BD-1+?>ik{ zG?F{8YvA=tW*6*;MHlJydfnmtk8BG+^9bGd*v~#&M41QBc{!<90l&qUv%*pnUDm`HqpW%znHJbdHlA^ju$S4;k8=v~W)K;$MOe{dofx(y#`C;Bq^|9gCo z<-e1?llWPQ(r)hPL2w5UW6?y$g^PB)=W2-=Qh-UUd4AxuHhIxkXPNAMSN8MaCd)=;`bi zAf7?>N&HeuiPs=)w2>xqJsV>#XOl{Ok26<3Mh@F^2XbY`Z5`zWXmdU3N8t&7`L(i2 z;xF`5`vjyv%0=fz+vR@do)W8%GQdCF0gR2`!T3d9ZsEW5yN>ZM0)NrLFg^adhjG^6 zUp=(xC~&4{nZ7WHtbu@!H3v+cTIV)NnJ3{ zr{I@Aa8CA)PR|z&*^B*f*WL4neA+w8(}_TEd!xE~2F>yA*c9L2y)iz{-4d&u-!rnm zJ7pwr$SjgHhF*QrWSslSXw@?i+%K+BJqvZ51KQwJs-w`;8aTrm_khz*OoD}T<9Gb7spT~rvX2zL zcf(6reHTFX^PluxF*4!*KlI&VY_=ECe*@@0V>|}^$9=aM+X(5qlgv9G^Dc}zre;>( zzI!=yZJjySY{<+OFcrhFMCQd`m>2oj?}$vogWt}~&F$G&Mi47t5S+k!v?q+UC|A^f46z~a7?oQ`_i8oh39EDP1 z-d&C}7jMLw6WK)$@|C_$;Zyb?mi!D2PeKy7JbkNmoGEep&jf}^*lhW$TH0mL?Dd>#!`JvNM zj8h8sN&R_G=AcYryyRQf;$+4z&K$p5%9U8)3T=z0+&t);qq2X}2OBtxq|FbTeXzhB z!^P4E_=6@a_^5ycz5N6q~X8PjMN?|I|ODZLC0Pb2+|P>pIQ9Q1c14 zWZ)>pUM-(Fe|qq!N?B9+tfghN&96ERc#)+gBUkf+H#jz+e$J8q8tQ(vx+NoL9Yx%p zf%utRn~Wa=<1mKjVV)H{1F?6%7JGNyR^J>CFaBjxH;p=eSKVT%TMBiH16K;NJ}Yja z)U6)BF??M0x{amZ3V8nA{_>jrr5$OlQvv;z&;F3c^IiSqm3~HUD*Y5(mw%^!YOuA^ z`v<#2tAE9$V;M*DasP^fz@Hk-leU4VlMF; z2O0JzjnIgzi+<>;$6g_0`K8qk$A>YFl74;rg|2p$PJ#~VubeNvsWiqx`HmvFGbQ~Q z=j}p|Dd*!~DP7~ZIQp5f_F~}+8q2XK!!Dp28@sN@m?N_0q)ub0(=zImHp8fs&~vh9 zc#@U#+3aC1r?xVEwtxGyAE9_)5AhS5-cNb1A{X{G>Ca4~ydugAyb@UBr@ZUbVt9h^ z#v14*bmV$@jg%)m5M^c-pzEIo?H)icSTx%`(}nCP0y*PmHLzwKH0gD~EPs9ZnlpCv z4AkvsC+8mel?tB)U%`DbF{jX3ivGce>^lkj^ZuN3`3WhyZatg+%0pHpZG0Sh*^&iG ze?E67cOfyZ)G15)^K0ayc?oMX>wfq0Ove)y^j+Q|M@i4VJ?{_cS~vf-wT^i`I_l3u zdAGrHf^P)(VFly+6nqUsevw%*w$jA+uz_!e{oC=S8Tj5vFz^WvCiOcg_>_g2j__?J zzU)Iz#gXm^9m~1on5fsa()R7RA291mY>MEz{tny~v!2UL9scT-b*)vu9bbWgPjLCo zdRBDMk4x!mM+tXbydKh3c$K_Ve$V@sKAqDZ@5&DP(?_4{c;B(>cpbNW2i|3^cn_HM zed0U%wUTkr%Lp~fC>`=0Wvpo}!|IdV4*J)}80dJfu^Dyeo`-MklPVkbfMeL7?qr`D z&3-kCeJceWOfsc zFMUb+gQSlz(`Op#O_DyJ^f6}oN+bP(q(4vky=MBWM*3+<|2^psndt|O^iL)IBhnu? z(=Qn5^^$&x^u=a+w-UXcf0J~#S}pn%qy9$vpCtVb(l?punMV4%lKvp+ZU= z(pE?sx*$DmnUNNdH1tAx+8QHmv816R($lJpv=Y*E8Vq?ru)V1xTC29j+|Lz1YG*7m7dvI-^hVAC&*FTvBC|g{Uo1RSEWR=dG}Gn( zt+8(9Rs~-L#}MT{d4~^CX30Bhi1KrJM-Nf9%e(gw<*)MYH$-XTt*AR~A?i-0x4KjH z@;!j>Tlv=b9?kcCd}s4Lh3{E>7xTS{@1OHs&i9LaZ|A#)?>G7WE8q2ef6R9i---?V zHt^fP&-Vb^&Kmoq!yTu51rGRA9#ddoQtC+(CF>Z4Wz0 zVDAO?A?kZg5bVMBuzdygAz&Y;zWst=FSLh^64=LqT}*w0VY?-_>$6aST@37V)R!2@ zt^L~`_UlK0eGb@7)EArF%dna4Vb2QeCSc#7zI}pVXSRp^SYY1(b}#h}hF#en_5*?4 z3+!R)+dByFtLf192_CkBu?E?EHu_>L2+-%9Id%%N$-7a3%w4KvcN zgU`FpO3O6TPLnpwN}Fk@&W9~$Te6C+G;`diog=OSX~Ks#4pyh1>~EXi5g*#tX67|)W~>p9 zG)VImT%YWl1pn$&x!a4gU2Lg}xSw+}@6@AfGV>O_G*iyy5YFpGA`chYCo&%;e1O{* z9_JSQl<)`|{P?RpR64_cLN~mE$)nHXp~xqhJ&NXWkli5Xz%BlpW+dM&eVle(||jA+ZGW{-LbW z_^rbf`^xqK;}!TReaiL<4tUNtd5cc37QABPQhx~@A2IJf?sBD#i)HiwrK-GV#G4PY z84(+X84Glq5wUUUO-wlD_F^ufyAp@kxQPA#6?Q5?dBgPBa@_SpT~c`D?%)`uW%aFm zOP<)E^k~w(l<`~25FY`?KJzzxTQ(;8ebCs%Smjwh0t0}v>@7Z{t>yR`RJN&SkYB|L z{XXbntu`hh#94b1zYDRC`H1{tpYjW{4)u)5b8YL8`R#Rh2OJXXu++pM^28^Da5RaX z4)!+R){Y(EkbFN)fR|uSjb}_(GnX1RFqcA%xpcCdF_(PY4=Z!B99?Y_<2{^w;xDGp zk={efG?^F3C~8F>%)E3+>`n0AM!L*jk=csQtQCvTPD?w4j_wny`@Bh70`zqrcM-<-**?=Hx)jG?x6(Voz3Fph zl|w^E;52@3;CG%aWQg=(TVC^I|CH&CgOia18@#5pJ)5@w0N8r;;6@zYo>iLO?$+N0 z{Pv&^^$b?3mnMw!iEK>Pvh+QQOYYN(uG)g0oIC%pyL9;rXv<)5cB6kqe}gS)S!Ag4 z{t;wI3g!K3_O$I1yP-v3k@c)o9gU6X$;F1-|EiYgH{;|>j2RbrikJu4okkCt#vZhe zGDTMu-rRDtlz)Kub%Pzo9jku6fj>A6JE}BzH|Yb3C$M0)5$C*!aJ$KU1qEO+Ke9VXMC8<2CqOTER0SwW_|2N}5L?eAuBW~IR2$oGEIzod@B z$H?z=eqZ3X)JyzWU1q%`R$JS8eOn#&pf4GHYkwW5ZAYv-B|O9<^^v;7(qF;tsYNCy z=T8!Qdjz@|DQEdHrEEHVAo~8@%oVF2UI^+3FK5}$X8W7oMNa+#eIRX@z7k#A9pGGDr>sE9FQl}w|)xTP&V$S-u zb&@hd=!1ovM^?Q=4`!7YPWe)v__^oP<}lhUx<+ZU=&~(+ljsU!8N)d0seyAGI3%C6 z<=gVrL-$-QUyD8D{WCXpW=%Ob_np|xh9S>!A=e2EpcB#C$$6glf)7gu= zf4-LUk+Jd-gV=}MG>J1_&i-+n<89L$;_(6E>`!wl?e5Rf&wOmr#oi*Gdn+6hdQ5Z- z?9wgudkVI820frM2J+uN`ox3(t=t`-ioHcVzm-AU>vJD5v9;pN1nw*nTaWyK=-)!x z+*2emoROV}DW#dRZ;Vx!#)N%QqRSvh@tr5}oHw#35YJibuVf{I`xEw5Y$o(OV!E-f z2j36Vm3F2A6J@qHlJ`y2;U?;kN_~`&rduQ?^*;7?>)xTB1FF{Uqu+egC5*bbs7n%c zDIkuwi@GGS?sECwM_qi>Mea(fVGe)6nJV=Wn#ih;+ny`GAlNk=eYK`=62sfU!rN%-!i zdhp3g;!R)q=r6Wen75SiOWty4OX?`**L_-IYIim9InspwJ<9*m?m6FZ#uJ-)e#DhDm1TPjUAC}apv?kIPU7+fnBQPg+7$LFOshw8f8-3eEqM?*B{sr=9pFH zb5b7pCXi3J!R7x9zJqDByO8l)wzQTFZZM7Zq_i8EvDUWiQLXtd-ybA(rVOd`Psyi| zZy5Pxu9ef48`_pVu@#3!AHGRmi#~iv+T9!bUlWJIf9|$8a@*qwuK)MJA%3S<^R-X) zDAfvbulWV-Z9wlkudK?#RxH(H*sA`d1DNpw(@SZV`EAYhvCQ*H*LL>Fxva5{Hjz(b zt-Q!vU}P;_oI9SqHiJF)ZuZ`B?7`{C)YI^57|Y(AI{nN|cTH!n*5&K^ysf^eOh2dD zJBryKq)%IEKO;7DOM|gDNMFkS;5%u=hGv~s%l`Ki`J7$Zx3RsO3=K5aRa~7msVtTp+jT2`zPADZ;kkrdB7)o zd8!MWtx=kOKfqF@=HPJf$i5>!cCzmbCV!r-x9cQ#i=D!!#`0BdB;E2=O-<6O@1_4d zYES<%a5~iPF4;4r90zC5*zal8O9yrDJC?KJWzNA#{3q~}*kkVQulbzwdiG7YXzwcL zcp7&Z`0zPwY+0B2cFV4AgH;zck=!{zI=VrBI{t=f#0%h#vF;&>+MM`5uOpq9Gw_=y zsh{l4F7A+#x}W^Zx|nhJ5~fprk=V~*FTj0#2P=>fbMHaA6P|QGcbb3oM|)-I{O)}l zZn61N(W%NEMsknu*Dt7*ju)OhSXx?jAus983-M~h1sC$@@Th6-2h zLGG8bI{S3PFvDDE+{E;yBwKR3z8lh2q=-$&rhyA0(GLdPd1LK$fpmoyFD@&TU zcG;Sp*r-}KpMnTU z<@^!*19^9|_9Sl}axR?*y`WY<&HtXK%sWY{p~oa<(Ij=&agjlwaZ~EJ40 zqS>CFRa4HfF9PENM%r8t40jEb$+`I>^S==O%d`HosrrBSn*UuSwneG+-vZ;m@#cSD z@?VAZpUtM{OXa_E#_cTsS+rLoFnYUJT7727F6^W);<3hTAZ?bs^+9nx=HWl#AnrxJ z#1EQnFUuR$hgcY-y&r0%`5dIhRL=UXYWQwpPoDRN_}!@0|HXb;G(V)W=u)T3qWMnV zF5Z#6qj-1c-Gg`U%Dm5#tMg8&dW?mlOEHyqlMgxWIc3_dWofeKvR@iBS+LJWPn};{ z^Qq8evKI+W7G3owzvcZYd-xGzvI$M(u=g=&B73JQizW&L(L{NtlB@HngUoM(ChF~y z`iQJR_Gq89gWq|(?@FwQQAV7^rlTM(#W(4qea2X5orH^Wo^u}YE$0_D{8@RCjzHKa z*oT5ce7L6j#OY_AIP^2(TfMD@r;qI6?&kCsXC~qkpYP^Qc-3{_jNO%R z=GXShac^B0SnHF!?p%R;c@Lr<1$J$=zn3<9u8Y{3^ZWE&KCEBgr=aE5QTHvcERR_Z zt#;-nTiKS`w{3shrp61WSvn@Z@w#%I*B0`fw~lug>o1ch z&H8cfq**@v^7G<2cai7G{kVqBbc`$hc89Cszc@E?)v_hT=@Opt3OMLBpL!+SJm4z2 zX%nPRBql~!lr|xaxK^%4su#o$zBK$waMy*u-=Q|o(H5tDO=p)XH=1;L>mAU7_?pMb2fGLAJ zb!|%Jy`jhne50zxmclo0tZO*7$HcEl(CJugC7gY{?ukc<^B7Fa+8Zu}LCd!&x2 zsw5^v*<z)u6=RW`DAkUO2#j_}$xQoOpC>tH>8A{xN zt|?yk1z=N%%a@Ft@&o3KyRyOu zt?h%>PNID|(5DyYPJ|}Ugf^c5jeZZb`gr)@4EW%?q2b5D2dBdahw6Or<-WdP*b_@^ zf~P|7+`fx7qlBzm!}#g3Go|m-)*JmVHsAHs;~wUZ+!=o6rcU7P3~%6oH@N!!;lZ-c zaAcp)bk&-pX^YV9*rrbKlo_(mU*g}}Hoak{uJ?S;SJJJW-cxw?r^yo^!oG?;PVy34 zHTu~cLslm~09LGk)5yZqIPCX-WbD1g{lzcPklS@(&yPkP^#pl`bKb3*Ijn3p-_3KO zk+9i8_NDvT-}RZY3VGjaz?@t4`^2(G4fu1bRwkB7JiKW57e8;2C)83mkvHxl-c$|r z(H@6E-&uD}%U!yZU;TxutXO4}d&rD4O=yo04Vs1jg-#P4_*x?GwmHo3o+8(H`D$sX`x2i2WHyeC9RW@cGOJ!MAAANX(!FJ zGm_>o($1S{|By7Nk=AUcU6iyiBTcO}+7?<%nn6D*PBSe+(!ve6u4Y;fNsBPj`j~0g zNLr+k7Hg&rti4^vLJ8@zRru&Hh`V%?L#vj)UrFC$`~TX~FyeCXZlK?VE-JEx%qVyj zS(Hte9mFhyE}6u>l9Q?EF-z0o*@ZT9!MnQ7ZJH@Qkm{_0C$L+bAM5bCv59ZanVlea zrgGMVHHx0?S<2Se`bQ(ne!{oDcR-((Lr=<@$f7>ReR76R@rC2YJg|I<`+aQq6rU!( zjpW4-__FNIVejEu3ax$WhF00#0c0YU?5=@z@AU2S`P3fB*~0uz?CxD6XGGo~rlG4L zhPkBY{uNt!=qTS`TW&6ZE+M{abHd%qaL$F<`NVAd9d<@}aVq?rLiw6eeyWm%pTI%t z5D;IW&G>Uva5tOW@m+xrO=Xz2^5kG!cctg6WQAhA(hZB2Tu04SH>f+mixmU zLc<_$Q|i}c*0j7dvjBTh7rwUPQFkEwT9;XS_BS(o@&3!%muB|G9<<-NH!^#l+mw0S z^J1oqZ-}y@o9G;|?Jqms|IW%I+##Mliak1_ryj2>0pD4P*Ja~9o$=fS-I=Z~SW^*` zJf{(zzUY=EHrFov;f{-*QFZF^dKdD&3qPdE(B=}yiGwp*?#yth;eqRT&LB@K(PJm= z-V(c_&7HkwjA|=(QX_l7Y2eqXJsLImVfmJLND}uc9sjj0^xt6W=Lc^jZ)o+vXUOT^ zLCz@gdjx-QJf$qj@Z<4SKb-Hja-$@Dof#PD`ZZbZFxHL?7Yqs-@X5l zS?|tMC)Vin-e7k*xb=I8z@LrZU^Y6^E^qe6KUbTP#(CeOhWM9*N5=s#B>6who{oZYoT7t&;^5Ms7Cr(dzW-6{~Yv#)b%vFao){OF;Cwi=KUG!{h3*B z@mrRd#yJXh4)Mf$l6PLL`>2igEc$~x#cg7nR2u6}^`g&x+v_foG#>Hu?t<*qhV1p} zw{8d=SG9S$tnrUSwRwwpE4M=9if%m|*(*3|Xg@UK`4Z~-U({Xt&5wtOZ`m&Q%e&w%hi(n-*DC2( z`lW#RDZb63iy&Xuv+!JUZ-LYyotTkQ2diJCKNRS3CC}$pr9bEg)sf)t@^Nps*KF%C z+L}TekJDCZv-ei7E@xICf|MIw9;>bEp@qF>TV4332AA>wMqk&`*M4a5BGz*abgQ%% zx-Bc5eSEp>?PD)zE5FyA$!RI z^utc6JN6ij>>uKj8H-P#>>siC1X}lhpJM+w39UW}9A5gyK^_P311fFKEAIY=ZrAsV zJkAEkpIe3tts`=i)jIIcqZ8+8f&l#tx+fKh++@%#A*87uaZw>xdY|j&d;3@H4&}(3$Sku9=BrlCu`j1@h$$t67vv!U_j2s$q_|cr}WspWz022 zTkpA3yX@DzhoN0KD-ts=g|jx7^&)=MlfgeZC}y6l8SaF~^H@XTZ3nN#6y?}BF@gT0(x=b4i@(}V`o=}2gv#$kItX6nvANGe1@W<0P4$|~@s+uUiFA8!EiL0VQ z-^sbD6g!6K`ER5?R(|f>4bJ1dM@y8r|98tiJ+^zd@VleCMNH_?Eoq1{V=H>$Bp z)u&?Qt^vQgJZ2KI2Z=`;e!J3r`Rtg9;cB>R`R$?IBkt_hEh!c{NAjR2ER{Dp!c=*a zo>$A8{Y2U*WrXAAv3XqR%A*HenrjgFps03fyaAmwtnw{$h9PvF7i?G7jA^|Hp&Ssr?M zEcboha`RKnGmmDBpNx@*vGkyn?Px4J@^8Wp;TBz&kg{lGb_)80lm$E`BjIPaDYw_& zo^30>UF?hVx*2mN??ELol`}kVr8;Y}TdCHRIJe{e3OxpoSA4)~_UyTju zkk1662xWCn3`n`R#Fh@nJd~kTOPuMo z$iwtkKI>-&;SkdmA=YS=;JxJ?&ytfV4bbEF4sMzI7ZZAqrGpKCOQFs-7uwk z5$mh&dae27u^aa?4xIDyit-BsxnEsLdN4|aRS25r|LY^bH@nrC%5i9#a`jYi2 zYoGewBK0lpqzo6C*UOh$R!co~{M<#n5C3oQ>$nFBT?Nh~;NAz0B>JJ4F&<0WV>V~P zA@Cz-n3>;s?V8$xlea3wrai)bEi!>R>My@*AE-&h25{9gO`S*7MPg@TcclB~_3GQ} z_NA^}tV;!4{qa{TQn*ipxpEA$cB(XkQ_9@xY%hlb9~V2m3*UGF+jY zli+AU7O;Uf$r(KaxWDlK(fRWaiQe#Y`u7X&fPMXhvP%3hjv-^wXp``LEztHGXpiKR zJzCPg&pToI6Dv1EJBxfg2O2-O0~$Zalo<#OBWL_1mDmilF)4KZg<|R=c@uszf92+| zaAFOG9mp~1db!U^;`)}rk4PSP^{mZdVel^kL!WWZ3h!^x^3vur@ce%XmG;`*(r40M zi)V>7+hP3{`+Fz#ucH2q@EOT^9Fz9Yr?moxphM(^2@a|CBi|^Cu1XinLn-C+)W+_*9$A zH*fx-SZwZPPZqnrbjC?yyS4RWXzMed6m8yRyda6ec4AQ>bOX|{O#2y$bS}$&=TI;Q`2?0yuRFtv?5dHiGqGwPcz|z;XH~m zqX9Zgfi4l4mWAs3Uq7ru|JtB~?a;#^*mV&@1)bji#&7LiWa{i|t$LlM*f-7A^*1Ys ziPcVjBWtXdJVJ+yjQ4tME=%LI*)mT&iO_dHHS_lA(JpTudraOPO7%AK=O5(EV2>W0 zqGb6vs|!{l`(-ar=C|y5au-q2GWP7-Y>7p;;Ujy;m3wBkEow;piO!E$_7Oz~mFhL* z$pddeimgm=%K0~V2J%_e!0qMR|D4D$u#@4=rD8|^n3Zvd4qJmYo;q%lYdLO zd}s5W`+LgeTj6`kZp!7me43IqbuZ=et?~WPe#+&$-mhdm{4VA4UCj5SP-SS%LrPYW z`CezfcbV@a=DWpwdpa5LN#@%VV*WPYoJR&e^S#b|?=s&<%y*0VW;`;#N8fsdhKx=s zOO}4VEybXDxC=DzFuq;Hc`@YbJ*v{}%Bp8g+xuTUs8z3aYt3JV^$ujCx3p|?(Zw9x zbg^YMHgN14N~{osj5x9pl~$e0dH;T_3cRkss=9GeZ_QT>j^vM^-ax}G^! zd0)<%r*iRMQYSS{Lk2S#{i>gLG5c99XRVj>D4Y8iMP^mZUSABaUQ5hLJssYA7x$1# zoSb5K@Y*ml9iI9mXFhFyPkB3}EQB^IebFQFt|!K6&0t-}sQWoy&z^_9;%j>U#3z+u zR1&RVv-B13RO~jf%~|0U+I#oHkxQYy^PvgE{%LlGnmE=g{=}iP@*aRcgirWaX>YN~ zcYWH1{2KwtZgYbTqS)F5&KWj{PpgJLbLt&hwRJC)rH?#(6~9VLpScGd3Od30 z;1HUr9vj5Dd?VYdnwnzZ)9ty?Yqqt)3put(*NeU?^#I58ARGl2jxj+v;;xQkJvi#Y z@k8<*m9o=<@(pXv7i>Q#ZFq)!8u>EFCp5d%Kiw)DT21;xuYXD_4w?XJ+qcESF&-Sn;0O!C(b>Y07KCHw)p6Vbj&l06 z8DCiG(;C|HCExm-$S`osroPgzGAAT%xjrw=ejUw!(w^(UQv;q8CLYeC%#STRnL%|~ z*}g8Kw-y|Ir7pDRu!V!V95Qi8pX%}EH*}oe(p`s1J;3pni6a{vyMu82hH@^)yMMKP zTP*!~(^=*Ncz$i-DF)BBAUt|qcDJvK^oNDx1UQQ6lMN;g4IJy*;yBnb4y!$f!J!bV zsm#Pt4vwFhIHulf^s8Q%W9{*XPG9=l$It>4Vjw){$HdVI}-)k6WG(2W$ z*r?g;#a&Co?6VDcv0Dt;DrfVrfoEI~%2}b?Q-kAIr0G8A6GtVMntsAgY~@QiGm<#F zm+SN_@*v~}w@`=f(8l_H{DrNo+{E`h?*?eyeCi@{o!Y^ox51X~IpfSPfkyO^cLHg` zS8C90Kalod_h9+XuKQ5dZ|m>r{Pz3>UuIj)?V{6F-dQ-(nf#;e_>NSoC4V0oi+x}$ z_JL{-WvA0O&*#j+zY96oN$4|YGWSf?PTKCAsw8^uR;oQ?k>4cSo1DrZxA*_Bckb~~ zRoCJ_XC{w%B#?yg3P>hFWhMa?goLrsOoC`07&YRfTAKiEon!zdmJSgy!=su9s6(w- zx%U#Vw#gvAYZ0IM_F&v?)f^-k@eCR>Hm~_hF=ftBVN)Y^P4Se@PT}#(9O4>{LAPc(Vy|NzDQsBFCcuC>g6F+-BvYnN$Cgk zKM-9`(d!aj3V8cWzk~2aN>pV1{v^UB`rBGH*Q(wH0?!h->MfG+6v?N0=Slc%!d0r* zE8$$itZfB^J2;zu?wjzG@bVo>PIPlFyXP$ZOl=G6`=jWGrI6-f z&X8YZ4Sz*VJDhD%PaJ0~yrhml{N{jiqM2}r{mef8kL!P2E8Eo2eB_2F`0uRk#3#k# z6N%5^ERQ{6$WFW?7H<#Dm%Fn?$gDfjeS6q4`tS$HsrT@v%Z<3rxDe-1M{&X<$a$%p z2`*tjbOfHD?!RJVi+xBfeg8D=p+7YKT>gVSTbV7q&IZ%J{a?~VII|Zyx$IZ$^hG}B zFYj8MT7RSt^+#%C26h(iq%U3+T{-&UWi|EipsJpDfOfx3A4qrsVX=ez67HY$;Rozj z+j#e8SL*(U-r}8`x8&Z|cAY9j7gOI176T z_fKf@2drUjrgqEOBX6i{?S5U_4PPu{Q$_!;nReewn|7mvkV0Fw(3bZtsjZLPa^Y)t zO&s0&0dIuOWKVn)yU_B#Eko_IL}qYSn*c4?KpPii`ua;I`}!9u*2B*!DsO8kix(>6 zwXl`&g-UAc_i%5c)Ax?Fk@tFc@m}w5GaL83F!{@E3?&rp*^si~p?7$%TH5#)c@A?< z_g!Ul>q6Yy)^zZsMM4St<{iapD4t9OofUWJqwYsFS4$iO7hCYdam~bymbe#& z<2s0QNZg^}xP!#WKdWO8B4xYo6zfG<^#O@oYSob z=Yvn^l#ypW|3>cNi|j_)lLu@vemTC#1?%u9;J4t9!;j!gdk*1?jHDM|!T@YbEfn_=u{s%eu) zRjNFRJF;qdH!+)Up)o>#2i7iR&wU|#?*;6^OE`nV9^gjZMnkp8FKM69fc5>u^t~o- zjTF6skFS0fJSuy43${;{@VGSIx2#$qcaRIlD8BxK?2ByQ*4M*_=x3=zCw0(uafa8l z#negmUm}wh8CmaNWKGMAt#M-_d-;BoHFscb3FQ@2@8>m{$JfabWN#*Vpk>@EcW`$n z^Q_2_{Tol*9r$~o^$P#e9N#^Yy|>(f50CxQ9r#+-k+P}iJlT+Kg5L>##go5XrTvk? z=c1-L->t)K)PLU9SQD{l~1kpRj*gO&z3U*JpdkBydhh{r~zy$_F{6RP@K9A2?c!(~eCUk>5(fzPG)Lnios8p9`hv18df zzA@knf$v~EzN*vo3%Cq?3ixEN@oVzQzK3yNwU@B$d*mOL@-6qsAOah%eBH}j0KeYf&$Z+Ht~-+66S zt@twU;iLbb%=-Z4HD-<6m!My%#fhDBZSIAV!`~xZ&DpduzuQ>HWbW_de9UGarcbUI zeJU3^1pN^@h1@^S)24Xbo!{B(K2vFEKl;VC%fRPgjt1a^8(9lFq1%nnk0q?50gEr1 z&l!=dMG|gA?ko4o9h4*YZiNoIa`LxxPT8;SRKmNpGMst#jzo`L?0KwK8npE<=~N;5 z3tFBOEzk6!JP&DkQu6G3hV%4tt|RM`@ERWKFKcQCKKFLDy@JrQ=PZtZ3!W>&U7vra zK6dF3{=EZSc8@rp$2qguQ_G#6eCV_A#&YL8^`S}+w%wiRf;esIvJXsk+Mv<4Gn$8J z^d9<8#?jZUum9>?)_jL~B6ki(rFvuuHi|&a6DhRy}jZgv)8W)N|-iNX#DGBJki_bq&QrhYj!lGa1XI{7{>vPIhWS;)- z)NnsxIXfsOUgV4Gup#B*j>UTPw}p-yGDBni+0Xh@qR2f6{rx+U^ChkuUVEM*e+}}^ zRpb{sDdnvsEOgSqHM|B5%el;S&x~k9-=RQ zkVMKaEFLMVre5*>mNw0;UgY`YHs6okuQ3Mr=T6yw@vr3`U)~Mq1gH6;-yprrqf|w? zd(WzAVc{7)nqIlB@3Uz;va&hr3-MnUH`MOkVQ~g>;q@z-ulHXteS0OkPH(EIeZte$ z=K4J4jJNU`K2I6rKe9SpRX1r*y=PtC_Pl|b*F3!MK5u4=(~lykA3ET!rcR8%8fb&` zy^nf`TtePKuXvsHf$vMGi#G1=8yyz9D)r8UzVOa-)vc7*J%A36;Gu2n8ONX5lmc0E zM zO$jVXXPhCA-;E6n(VwTAN15zZ4@hOTp1-kViYmBp_#EI*az7~eW` zUCN~NvYD-te?4?ZCI4}B!(B|&{L;K#O41Mzk3HQNN z?M(ai&yx!TuH2IIjO<^f&s?TH`{K{~*f(T5Zu(Hhr|<=9KS?f>{wStDWDZE5kWDRnTpKx}b!StsZ9;>&*y zKm%o*gs`{q-m!bDW@P=Mey667l{4i%`c%e_jGLDkBmcCIZ#|DOl2&$J>j`-7ql^Xh z+9jI){83~NdfOe2naCiDDOVq3seL)r=OxM$Jb%C+Tp%{RZ0P>kx!304UYnEsSPJ{H zRQ5Te*zaJ^Yi%0m!wF%bYsS8&nSUz#nz8I_p25zA^pSc0(!+mz#}0jri!Yt0F1~L} zLYTeHE9D*I#P(7e@5rqQ@HUIQe^#Sr|4H(=#g-TAiO8RXrmw$1UA$wGPIm_zlR5^! zq4XbsE_W|eq8-QdJ%*G18$;f4)Jy)|&D^tS-0$h5ti|msvD4A;#NHOhYqsjpXi$r^ z!BeokJjdsae34vmls%|+KEuD0v!8FismnG6|9kY+j`7?9fp#=uZ=~xV%DJJb%0N$J z&Ew6}l>X)gNvE0@;6HCa6?#7L^H7m85L#gWJanBh&~ko4xVc)=q@HSCtMD!o_p6>y z`8*U<1{5pleoUG%iQ(1{6T{8hba?X137_&cP#8Q-c7>~LD5JEq|l;Hr6hbTlp>cQJ06C92#-x@>ho*^U1V(yt}mHrx}q zmr2uz+m8Dc?lsc?o^)4}{y6^4r0*kLvNgJ6Dz3;HZTctaocPml3#?IPkaTyEev z+D-cFNEgKY821Qis&Q*^+i*{izL0dkC;b)p$4P(K8oh({)}?gL@0t{v&tA8`hkxF4 z1A3cdZB9p`l2Kl(q&spBWjRta&o5Q&<=rMU;sPa}ACenZo_*YK%H*EjMw!B-qNgamdu&8$Zzm}vVuKUfyPH^ z_c4#Z$(beJS{;^;36Cbtb=rP+c<(FY_B+^aYU90Ov3X(UJti`CWv|EH_see`!+ZSb zn+E?eIdU&Jx~3uf2ZzjwHqQJi37h$k0~z|BRQAJnV24aUpBf*T$~U_9Rlfr+d+Ckf z`Zm76bMTF`zpcISB;0qL8!Ll(Uo|JLjBfOulXHwc>ablFGoKRxe+}n7XPfX$JsqBz zr^jRL<-P?Tkr`yh@N^<)NH^ip_Td$Jo3(ls54YJ$-4pI*e+pdMe3A4Y?Ojj!Sh?(( zGb0yCd%^!Xb}NkkA~>7i^JH(&dt0xF%~}oj6lp6qc;ASt%MI+AKcgu~kPaOIeA zeM((re#!Y-;~}fOseGz&zx7mOiS<;&EM&0U6KuH6=BYchAX+i?Kvub$@2Ddk^2~72 zfYQOmIuwIvoXG0IWq5HNQ)P9u0Gyng(@c(vQa546pUb9ADPF6CT z4=;$?XDYJ|8l1;E(aSo~%Q{gGZFfT31JHJ7&fzR4wB4^dv~}X(7^R>EI$RBnU&1{= zhwvQG$28H^`8U^`ChE{0(>HBly^*&^@~PvyFKw%Om%E_F=+d~jyO7VmQ*?q?91Yh3U(&BE8f zKg-@qcr*K%1=~IFH61a&M%D$#->@A5PPvoV{(bJ}PD3t?+_pP0t#J2J&W^2md14zm+88IHgq!w2a`J7F`lalo!e|Vw;j)Wzv$~=b1lnLJLwAE59@DE*7>mt z?7g&b|GfPA30IV%qkSW7*Ve9|jSttzzq?dlt5xjbHNiW3=(AfAl+0G*W$iWMr7!=3 z_$K0I-IRF#Rn-#`N8j6Wl-a`feGLD$jsBktEJ{7IT-1wy@frW&Gya40J@oR3@P(g1 z=NfNUPRP5uZSPP%cqUJMjlJsRx-NL+H@{Fi`j>HscpCi_P@~d@Wko)w}#tq7ePVW4Pofr2(>Zi_gxDQ&RN9p$-^uAkYhm1Sf*OfBn z@~Ce;`c6GcT0u)-7}f-=99RID-8!M5bRiM!fW+#8ZCN65>4LT?H)<==k?>#%QyIGFpHw0>Ath?#F5NW<89J zzG=wD=+`{2drA-e!#KXYXS~82!kTT4fO~yY)@06vWF4FEm=eC1@!`Dt%qdy$<+4BO z%ZHz4?meeE19{9nd26!C6Hrqt8sXQ)P7QZq>dO-G$>-sY zk7r$nV+L}t_u$8EId*50N16oPb2Vgyv*^NC*^mR2`j#76w zcWSz^pZFPdmp#K;bo3joll!_j!@POfxa~FkTbtZFVqP_FR8H_d#bU+fnbN{sR=AH^ zV^N-!dmjF~HXJ$dQTs{vw_iTl^uaqPwR;|}B~!}z$LP*SMNdHPIo5ixt;C!zryo<4 zpHv}ltZ%07*w364S$J<%@s&vk;>NQ>6>1y_s|D)U^>D<5Hk)<-XZ6V<2wQIV) zIq09uS*+v_fajdeKS z&Uvl-!Jobc+UoH!-n`*)3yt? z=f(DH?guM9^6$GXwudn_y*#eh}U>{())?Ko46k3yn>d$4$ohkEtGKx z*jn)SD02&1J~6@4LK(flegMpF^%b;?Db{F$Hn&}&3Y4s{CXgOEMFEq#IgXVz$O0De63R)^mWrv_Sz$&F| z`f8}`-iI=jC_`}4Hm9mL9{>K60rfX&U3tD!V%ifd` z0snaL_b4|NwEWr(YsxqTOk~7%>zaa=Kbz}ycSbKTyVQ$+IMgTHlkB0a7o}dr5A_N0 zeZ>Eh_$K0wKItYdNvl_=pyk8ivfWBshJ*F$1oX#lZ7OIPT{1KlN`d78>jl=#7#Zpl zWD0ib^stmo{7|0|?eDVunsPi(}!LtKw?cR@?Oj$g(?6Zqv!<_P$El=})=E*^&2 z)V7Q|V28DOwH3518?Kkl(w5Nz?6*=c#@0}uJdhCfP*#)Fi+HKmJ{h~j=Mx{1dJ!-6 zI!e5oxP4l^+6!75O=TyvWkkTwxqW7t_0fWs?KDv(y2Y_Fu?XO56_OJnG&8d7rxcm$7!rTuE!o=%p;l-%NQu z)=oXmt9qIxw87@$|FOnNnvkTy_k2&U*FNN%TG<=1DM&dblq2gv0JzpSCU^k&QsA;~ z+JH;_B)^~dpjN*FdfD%p>gQv8#L8Ym*&g*3J&k>VK8B0~LXv6y0e>M76e8118}2{n~1+iYeSb_cCo2` z%C3x-SlQ=k_3PHtTyL)5&oUyhG}Daw{ij~P9QaJFkC!EdJ1D1zd8+j>aH*dez8kpR zs2^~tpTOIRpQ6?81HJ49bN$*g4#mp0QMQy-n|!LEWt*NxMb2$g9?j?_O)IWq)$Z*z zGq?`~kEFPArnK@8jJ?3}8H(KZa|nOmJX+(O<}^RQfHCX{?4uvu+-r8SULgmrLIxO~ zv4l4slu(B7O#$``d)S9IvPa-7YVoME4ri@Ij{LAHcP>%_e^|dct9)i_mgol6Sxyx; zQJ2!Q+P5o-z5(Srb)e;WYm_sZ%+MnX;8*o}b;BEX!y7k=Ozw#V8h?8%#@`-g9gQR? z_Xw}=zf+lQtk=#vPrn~2-}3M6N8Wy8ct4`enP_Y-Gsm_6iLCP=|7ErDKY`2tTw;PB z2L2P^+MEF{|5M-xh>sAj;r(MA-UZ3w9^mMp=;H+V2)w}ifHxX=fg5=}AAuLRycJw);012rh2Q3WK&-y0B|1$r+Bwx0mUHLx4ZOfd;02x!{0ajv za09RG*Zc-vPaNJK+rnkQ&oJ-;AAuKm1@QR>Uf>4aQsS!&ybI&-TJ6|R#Ri6f7x)Og zzyrXi8F+ykc>TnSPOSFdmc-$`*&c2NF6*Q=zk!dy3%nJ$ytSc?2jB+YCgRUF@UDx) zd)yxG0RC44FYpm~f$s+X8E_3Ra072U@xn7`_5Eoa-YXp8gTQ}h-~~PcFYv>_|6$+- zZs0vY{HMfgcv+8%%;WxfN4N+0BL-gJBk%(61OBps7r249oA|d3ysTj(@Sg7s+o2gh zHShu-ffu+Fc+|iP+`wxi{v`u1>(dCl4>-df;2RCRz(?Q(o)7#1121p`ubcS2242>* z5qQU>gv)@hFz^B&ffslM@GS;j;0E4O;&&N%SqDep-Ix-t1%9=G7x)OgzyrX8243I> zUO(}h4ZN&zBk+Eh5^e@wY~Tex0x$4Z;IfWu;|#cgw~6>48hBY3N8nwS8twp|Z{P(! z0x$60z$*;Azzw|Z#Mc;jS@TBVeJwS75cpUFFL1$Ij1GWKpHst!fzL7U0vEhT(N{k} zJbPblt!!qU6uhFV)3jhzxCdD8JDm*zo6GH-IuaJ2w=;Jn+?=;7XCy2>Z;c3#%<2)jDyAJbs|gts=WEw zkTb*L^X6l7&_yG6_`HYF5i`Th<@RyE%?yjr+lNlB8E($&jDyAJb#mtN zReAH#qcp?f^X9`3nBnGfE7&`mVexq@;5E!}b6)ntBVh4)1MH{2DsL-t8#63EZ!3E* zGu&M6Zul58%nqM3fpuEe@zbr%#m^5e?q{vGeejDa_g{bHY5Fs3Il4?Xx$pUBD`!ic z4Hq~$g9xHaiS3}K*W}FTRAIA|d;Q#{k+mP$)9hv|vd5jHSE=-8)3g##5$6bU9^>E~ z0e$NF(j1%9hTdcc=Lj8~BiOK^WJhn(hTf!YVzaY{GlV|tMTLZ zb&XM;mHzyY`ubn;?G3(QjrtRnIdWe~;%bSrW9vrFTbmb**7#hGuiP3T-oKZ}j=>!|+$_;xwZ8Cbi3@=K^kF?Ii~Zht0L$NaCXqu4@H zx#Oio#1^#CzhaB|P3qUnzt{WssneXL7Y?7Lb1z8FmkMM3Df@`i)#vN(hPl#*-w7Lw zj{OtHJ7MUn?_ur8o~f*QS9FKbdknEgiC(?(VP1uX=+&RKk4~(+xeT&eOk!98_}8Sr!7A6KS_RU9z-~|t9s1T z7SWXw`}?|HliUlMpxKx(>wJ^tgUQKADHwUH|>+=Z#wxuW|opEwst4Fy|N#5AklX=(w+7 z{);|ri1Cg5`W4U2Gqrc(^1z|JAs4&jz&UWHyaCtAc$Pa3isa*dgPU{;@2-6pxE;MV zhv?tdW`(u9%x$?JaXm1plh_ASpnKoKZ%0q07MfKCovh^yw@&W!A*((L{?WjfFJsJb zM|dAPh4NnN(|=U%;SA(S%6&z-H7i`I;UZk)3NIvVXJ1>3t;AZ+!w*6a>!1aJTsaqI z56yZZcjsmATbGMoFShH%*1N28t?&WZIr2(B$@#gQi^%zqyxrDvr)BRU?(I0{Dd)HB zQam;n=TB!V4K^3&7$d3)wF3OSo&)rAZ$S3sFi==^M2fs7}kep>ve(+WK5q3<}jK|RsQ9>Xu|E_t%1c5MF^{XcK?_|{NS zalhk|FShL{Qu~kQD(O0%9uqks?>sQaW$o;~3_3|z^q(HNlrU*aH}Y@Qajj+anSFJV zwa{B`ZHsz1;IRMf>*f4c(cEY;>`-N#V|j z@=K-PPg~kQ8XRhi|0~+E0iBlkw)B3OJfba2(Q)Zbma)!xG0rJ%I*aj5Upn^qI#Re_ zG=04q&6_d4!=cZMX#VfSRyy~%#`*?a2bBTatK7R@mE>)r5B}Bt6uB4q@6NMY?%dfo zo93AkH_!Ms&$CYYOPgoJAHW8wO-(BtnjeGX3q;39n|r`Z`PSwhVM!z949y$jjCs@g zxoO_S;<;F+&71#``8K_{znRBeyO|pv`YDGo=7Bc%@aDqc^UAAc8v)P)?cS1|yYsT1 zK2Lq!@+K4U(1pde#U)YJtl9P?WzJxu(&2}$bz9|~OwHC>_<7!66B~{Gt2m<|Pk{9} z`?4gj4LV@EPmN}W2>%TKQT#{oyYQdEPfPaN4&eLn{~P}%{4V@9{CDwR!9Rts*u1s` zOEmjD{51R;{K@!tg$|2zUfiMhuAgPH~vd@4Sdj#Tgg+)n&Ejwc~bu69Lkja zLdV1K0?=psM*eAIa)+J!4L#4RUir_m&S5WTmHKV|C2vX`L(X3No05L_nZAZR?h#e@ zsH-+3i?2Sau6h?aef8heRiW$k@0=ynN7jg#4H}1f#`$@PO7vUQ!%scBBRbuZwX&45 z{1NtWqQBNbeHa7Kh*hl};NVV4;C?ypbp(oUgIB3a3R`114z%ky#!COumeO|C=D$Ce zA$Uq}0bgt^9ljZR3FOODeHxFmlkq4xr-NJGobCc1*l>}zkun9g{O85d8Nha^sR8c& zEMETjMcy4T*ow!Cqvrs74t+>hJvJJTUF3Z(23z@?;^?`+-c&~iu$;MgWyZzcH)F6H z4;4qx12(9pX|^42EVFetIp3C2Z*>f|EU6@V zCa^{&A)o+THmlUz7=wK`qa=D3upLTbz!ktQ_+Y{^}ZQ{-B3^xEd(~Gj1PqT*pWP0>K%;1f+Z!=(|gue>h z!@P1cFRt-<1I(`gV{$os)nWXPgEPYi>;0Q(vUuGvt;a#!FF_`GJEfL^!vci ze8(4ULI$+E96lVrqC$n<@;c>IWRPYvJf4<1!+ zJu@7lo-)sD!nabNOv-9vjx-_Lk$JAsU*>t&^J1G7ewOwvUC$nmy@-BKH8XN6-;Gt! zS!l5Teii-eB(MMH_>bfBR%_!i{NLbbBzygb@JsOjgkO(;41X8?`}jxjKgGA$y#6Fh zv~d=G2L4j~DfnCQ^YHiM7vP`7FTu~Xd;OIb?M`^(RhDSQztJXX&pFh;RMweTJ0;E& zYm>A^+97R_`b*uV-co0&uhdoQDRq?kN!_GgQYWd)H0q)}hVFy-(&v|*8J?kPSDq{|R=9PxL8PEm(0@;^a-kpZ-E2mevR#{DM2BQga2 zj*`5Ar^^5~QHHT6e@EH@j$NiYNWOO3$yy#28G_LUt$gmjJs7jU^175y`<8$&7bo|& zx@nUSe0Rp-I{;k6hit)&?=8+(e+NwNOZ^snYmgyiA?LV`?;7yjYQpmw_0r`TrapD) zZPEL5LgWc>Oc?@YChIrs{S?UaHzE+?h(0#^`jhZe(2! zKsU9uT>RKt-pBf()y2;JnoFq*_f1QEwrFt-hug2?5S}1JAFL?T=bQqq-@y06vB*_! zP-Y9?SVe#AZ=JXwdzT+V4bCoFWa=vCz&Y`{NSQp!8!e5*cmb{8>@2|so5 z7u&>!g^U$reOQN_u8aMc?C0ek^>Naf;R)1%xpd@jq%+gz3Dor%a&f7ny!khoI=blp zZsPp>TfrxC0C`9DnR}#+@sVf8=<~@a+oP3@9VpslIZqoO=>5yPl9`cOU^N%0{p^9g zMxCVX7RLCQu{1T3hB4Cpe6cq>#+Qh^$-kffu5f=`{y%#@b*$`P^*2U;^%uPkLRY7K z&YPI5iw<}`JL{qFm>$}dkGw(F!5xeRkv9Yw3u4n^(Ts<-x3CX&*p$Lv{z1hS-`*7V z_Pl@Rs9+zK!rmU4+w1`H1nrykb~CtlAam$sZ?FQH!zHA{W=g>d(nvUmJy7)tRkNp3 z{hqq2i}N%27WwCUle2v`3DzE#q~&o1G-PWaaH)l)Jmcq>8j zm8z{-KEeG_3}-+4Ue4_d-j;oi7dwcVyrUg?H#@ChH*ycDv&?}y##L(s{$PsoWZlH# zhCKLyfVae(@3nY80H@LRRITl)THCkK_V-dJ6u$S#w1QQnaeI}Fj;Bkaat0;#+PnX$ zG{_i~b$WH<7uyE;Zn}0sv6xcD+AEQ~FoQ@2=@d#)pok=|`r zyjSxr`;nePeLqsbSUCuPQj6`@YUHxZ(Fdt!9Cn_M&-YGrPlE9EeurKU;aPGiOZq_C zZudbCdCOATK9xMOmz245X)Mh>v=#X$Hi2Z$j)|mZ>hFR}__=X9jgWdd{O{&@H5LiM z^En5dZrM~NbFOhAwtA5L=D)_ifPOy=-s#w(*+TtRB%CVXO!&l3>gV8$EpLIyk0#B^ zTfiGR8~4xa!j3@xG~Nrnj{OFC`^G5!t;mJw?<1{^z8^od3;k+%S!B_DmDt3)>y4GV zosH3s*3sjX{)gXKxfeUC6)&xO*m17Y(fWRw5-q1s&bcmx{CZSh1#9!*xk^-I9Gtnx zebOr4K#j_qLR}jZ_6%O9^mlEv?&-NhiJrPS!_)Ll^sOIYoM>|-D{?mD9ezU2J&xGU zz@9t(>ZBj!tX1AbZ{_UYMm=lg9aYXi^J#OVIw9aBo_c6|0m&g@2G5px z(L)`2S;OU=T5L~BT*o(U$Toal=UFgWcI_~bC&-*_~N(TGD^fz)3X1y^g^L(*= zBKB0|?yOd4^6}PAM6<2J`?b5!-zaCCmd|7_IS0pG_q1_#mEwH2f_3C--gw21QtuPo$8X5as4iAkJ)`ar8SE;j zoayr4r4Jp{0*)jZ5MCkTYghBX9I^4pGfn-4cAxb?e3c(E;A+5PgIIG8-9h zLObgoPYT~mTrK0Qjxpw^9s%Sw8l1d!$CAS6S72vaUuWcOy9t}gvYuHbo^zZ7S*kAo z;vDffV_&=1o*kO+wo(5D*p0cMxZmw@x7zl7XD|Ar^_`S!TbFhPa@2;S&?Gr0eGvJB zjN^Nye#nNTe4*ua8OdSMCk`MJ8j34P4qqg3$byFA>XXC85{C?EC~jABc%H-|`;oYv zg6~LjxRAJ7=2=)^$bN=k7F$^E1=Z3gEdoRKBe0{AZx(kW1V(=d&8wwe>m>~`prQOr zZDE(dsNXFDLk2XIf2%D#QDD?l>u>5Nyi5RD&`|#Uws4xHp^nVO%mA{Wq5LOpVY|Sn z<1+E7&k{+4Oi0U*u1+2DoN86^I@z05z@M=0t*V8-?qlv`!!vB=-^9y0h+Fc@Y&p=?cscIjj^yRAtqV-{slo>djU7#!gwC~FuRV2;x(ZzuJ{&#qz8vWf zt0R26v(e9Qd_mLq==+0mPc8pdXlE_|P}ba9{*$Z)wfqy2KjqQqB9|3;uCb<7@)o9c z4ib}#9kiqs$UdMM`IE615Pq2R@!3mRUvi=GQbt~TaeoWvUM0*&iCe&&oC@79o2O*d zO;$35{@ZN&xtq;qZIJVfT+&V@-6zalIoIo%s;>C-1`B7ZR?b!vIAi6_p|wfaE><<$ zT5WP?D<)T$v%K?JQ}Yyf74$)-vmOZjxP(1Ibq?R?C)(&YTTfxQ8vPJEXW<92Z{*>O zU+9ZXZNC3+tU*Tp8Sp06&DdEaf9ds{3o!0BP6Zdb0-}d)V~$s&FQB6D?Z1e(3E0(&&K91DIcL~(C^g>6LkG=Y!o9X)_PT|vE%1HW|2cZqX7F-OSta=l zn-X)cU*s{{m5_VoHtwFY2wpD#Q0nm}GS)-rch~N^*yDhgtQfGS2e|(qz#c$~bzH>` z&I(((|4+N?>k{$dFUud}?%TSE<0^HWX1lnS^L)8;&>A#2vk)(D9dd5C*liu>eA5Emv@~T2pDlCm0af1T8XNgD|5NzK znsews`cZtX|M)*DI^ff;6M2Uw^VIA%t$vYwGuZFT|0+H=9OS>0hV_47L9doG+^G8; zWsc0H^EtPXy|K)dA0v0FAzz1sxq;tJ*&bJ@sxc{HRo&ywS=bd=#so~u;C+l!cL*6sOs}`w_zGC>}mDHj7EcPv8>p}j#2fjK_x1(t6 z)o+&avy^^?^IU1S#9Ms&Udh;J97OJ9z@*OKkL9UhKDkBSxUO@)qJ-vSvw6OfhMRzM z;oP|MaC31!Tq*7{+%>owoF8`+ZcS*u;5YiD68ydty*?6G5?7xGWA!o8myo`bcg(5F zD@u6ZeDT$v?3+)U_GocGjm7<^#Ho7R&RE=o5@*rlI%08qB+jbGJr;}mrNkxZanV@Z zvl5r6$L)*7{Z8VN^tgkuxECcZS&w@)7WYSqv*~ef#Nz%YadtiKXe{m@66et4dSY?! zNt{!UI}wZfNa9lTxc*q&fW)Qhaq51(UlR8dH%j6jRqR^aqiU+ejoxF!o|jEYXlPox zK%=EiORc=|fzCQ}Nal{4e<3u$(APPPPInWwUu@WZv0?k=KbhMaeHfQk=#JU;Ye#om z-^1EDXH+A-e}MlN+JTO1KDygW8Q1crs^EWK+q39v;6C&-q`U`X^rCtTW1sZcE5=rB zh__yJTdeyC%b3ji6FOSRcc;8FQm&28ZU!>u=)Igx{7I8*>$WaM79jS^M4oKOwX48U z1CG=<9J23V&lZzuoAQT-<>Cv->m%Y%uv;PD_l%mt8^$W6Zy-njHQ^{+#3paoc zrNDL)UxE`EMJn}bEU{pxOFh+i4(m3139+{;|JFR-8ZTnKQ96(KvFBy1O|qA7X3TjQ zbME-H3H-w6jljWrAme3>j3aa}(($_)3$`=P4U3+!z*2_d=4gDL=;Sf}G@4n-Y zTI!a-Nn1c>c8=xwww2~-w}Rdfra;Vt(@N{ zz)vK?Pb9%lB*RbG&=0eOk0W;wo=nyh(Ge1T*9oq|?GxFj=(KTc6g8XN3~Um4c}hg2-68Kc+8*1U<-S^J z$XTYa?-(1YJ_IdDQqr&8sD%H6a}SY`mYvW0w&0O>14QS`aoiUjLme8iz1<6+ZMzZK z^cy$tMZT-?wRU)(cK9iq>sQ-t?D?8__qG&SQYkind)U8urfPiQ86y`l zRu(d5E=1RR0eXEFO%G&nql~2l;uC=41dRvU&iUs-_98{}=YeYE=~B0&x#6p^Q~f&YjrRRmZWu|=-jA5qhRk6G z^QKc#e%VQ0;|%&En{rRvSoO&R)Z2f(@}$^5?zY^Qm938FJ^F1~2lITI-6tEm1JXz9 z(Mu4%csF_!cIuj!c6XKIreDf3_w^09vtNKrMqhaw+u3_BxR5{t2o%>Sv;WSAO%x`Z}t zpV%PX-Rs)7I|c%;IYaBKN}G^v{6Kj!W&L+f?O46` zWX%tt3#sTY5NBh5*+#p?b}xMGK;y@XSN1lI1**3u5C4bwv+$q7zd+#lB?7m2Ysv+V zUnOw-YXy$KRNz)`O`X8;>jjQ~i@@E!11pYIQ~+BJ88eb@#_VSe~ZBJHwZk1_6r<; ztHAN^7dZYdfv3`bf#W|eaQvqQj=x{vqiDat@s9``|1Sc^KPK?ev|r%(Ck2lGslf3q z7T{^LAODB=8Te1(XW@UGrt6Gcl@RqW#jV8Mg1a5J7587b2<|D|e%wpAzu?}+oy2{C zb0kLn<8ZmSb8r{nF2YsezJsg7{SdbScPH+C+|O~3<9>rXg!>cj818-Cr?{k~s6PWY z1($~_z?I-Cao6I$kE_SshHJsyi`#{J822>p1>6zb-*LUTk8ze{Y|!DdaA)IY;l7D0 zPuBHTN)n>$u*taQYWTu$YJ1m5MW6qLgPhUxjsEWk%Ivw}ACRVtwFhI0nMz-%>L&RX zm~C!&1!03usxiHUZ@h+_2i~{ntvJ3_&iYKex9FJ61+VafBkpIA?rh>kw`3K#1g`R} zziX2jS%rRmO%Aq1O!(#P7vr4;UDw2fQ`s=Y*Iy655P2t<@*2E2vSE!EA5j=A~bsFN1tO>iJ@PzWUSTqn{FEeU(7I(wp>iEf;;) zF>b78x3CAjo{n7mB>&k7p5QDc8f5PntimnD)#Encw&Hf-9>?v+9l;&Loy1wxXfOkp zi<^Zj!Bydw;_7i5a9eS^aF65m@&7o}S;P6$;;|&3RKAxu5!#WmB%m*Thzd zx$NfsUsHB0&pcBe`@XocV`9;;-0ux|JE^J;I}d%~KU=TosM#=ET9==;8?ZpnII4d4F~cNaQUW#H18 zKJUvpigyot<2~eCgpLVvX0Pzx$l*_{M<%=Cs$^}=+*ct6}qNg3} zg8;e*a({IVd1YU5KYhTtW5!sQ{-$CbeN#byET>&t);+yFHLwEy)gA~Shi%~wUHOuy zxxWGLo6Ok>=MEnBtY!2?Eq&o3Pc7~K25U=EA#a>vqxNL&8IzK?lwMCi&L zv`-uVljnyw5x#mK=gw2vBNxNN=OgcT`WifbC+X38(2KV@%olrv2kPlwr)%icz0362kbuJ3Ku)ZY4a zdmAtF!k_MFwK0ae#}1dhJM!hSrQ9niw~{tVc@>-!OL@IFwpVHUDC8=#e=2FHeWrxH zREa-lO34}*HhJexarixR*{?Dd?0rX(6UaU_gR%vWlYgPf&%1V1_5HKGzDD+B;5rPh zr44l>a8-cIxh8LoF|Gtx(NE|D_Q0~Y%#(SHz3)2c2je!cwlX2AAj8R}&LR`h-aSSy z>kPiN{h6Fa6JLfd6N2;1Ly?xMNF-99$6cp#?(&x>%KMCt3Ol+IgSh zB}7jEH}cpyXL~P}Uf*A4%@P_pT$hQn(9P4oSD!&$vuBC?LxXGIQ)X#xMt@E4{{>vl zi~$d0U^(+`3-j$^=FVNr#aGrnvi&A#(5kAuR#(BX9}jV7WsjOM>&{WgR@uXTKzVZJC}S!Oo-!~~Nw1!P3=EyW z##hx<%Vyr0b$Ozrb>_#ny_Ulp!9|~|C)%l>rD4e$-<;8t%)D*5ag*TYOTTS6z zrtssY@P1SHh$(!`6h3JRThMzLs=q0mYYNXYg-cA~DpPo=DO_&~Z!m?on!>wG;m1wk z{ig5{Q}~!Ee9{!QpyM`Fe^WTu6rN=Ymzcs;rZ8uDLwM><;SHwnR#SMFDg3x8yx$Z) zVhSHKg-@Eo7LDJGjUQ7ucQ`zOGqTsAL&$NfK0(LrS;8V8_yk`1X~NgU!oMQCCKi5@ z@O`oHV}$p{!VeREJr>?g_*5+1PIv-qir|#9#JREXF2dKu!g7|lCKmn=!uQ3(KPAi_ zF1(j-(Txh0B!pil{9_4kNC=-Ie7A)6Ctzbnw?P@SB!=e_79FNwNn-dK!gpxt6T@o= zZ_?5yhVLW1Uc#27@Ls~VY3Y-~uM-yA5J7aLP7z+CrB4b^;EZgwmOeQ=mvFt7J~@01 z;TyH|$=ss|RV~-jCx`DNT&tzGh4&KvzLwq=ex0!BFaFwb)gcnPAzdd{(;mfu3j__W>m0Eg7_;tdfGZx(72%jQcs-<^? zC-8RfLM^>BJeP2Zmfjh@hH#OV-Wgs)SaimM`<>zY2n(MWw4{Xh5-!lvr-WZ8e7=@G zC47qTd0P6E@C42xXK3kD!*dDeY3WnL*ANz4(!mX>;WdQM)Y7Mh?<1U}r5_dEOIY4m z50;DyzfO3PmVQ+D6yXV4dTa=B{yA1lKRP^@u<((=lF{L72#?m%j}EUPEId(g|LE|2 zgzZ}TwD4ZSvepMn(!#G3mh+(ChP3c0!Um6C!@kT9A0&G-2lJwDn&?V$PX+$O25*yk z)=`i1i%4VU?T{2+!3H57(W(-rY1HS_~K6-dhUWqTf3U{84cm@`{_9^G)Md;uh zCk?u5{mkztCzD2aO@T?e$+%BhjVS5J=!QcyWhI1U|&-fZ^||JNBg|J{LfPO%IaeFb?6pqds_PPMZ&T# zN~9lTziI4yxxF?T^&n zxc84nIdiIVGIcm{wZt0C$yuRIZ$dzN5j2y<(_oqvGx2vGY*AuR&IB;I!U{TdjjuTr{{Sa7dZp5 zdjcqZV!y?Wxw{TB||5g=1u26f?h0*07 zW0#&j6P<9z68aAb(aJf>9OzDZwK_52nngbR0DZ@}t7-%;@4${GEOSxbe&wB>zAoU8 zHmuxx_uydRplT1u-2Nvx&#KD zrS8;2JLe2h=9Y%Ky<2EM|2?3Pp8un@U*@ay`Mc;Hw5Gn16?kmoB*7tbSlVIC;Sh6p z3+K~t=@%&woHG-q8#z1^%sHgrU^b%=9i8LM)x>}QR!$JQa~ zTfv>JX4gB??t*6ARaJ*vuw2S0_RU;W>`ULw`XRcjqRYBmO}M;UNh`dB{r_{UHOG-( zmGd_JjDg|?p+Dv6zVz004>{gtEouZFK*x2(y2jVet6i~X5%w9vS8l%cT)Uj3r$^pr zPybxM^@OZ19{|4`_{^)q*A`h)0%?!mnKkqA%~^X$yGQ1OU3v9A>!`?$%%48`H@_jU zrjoJq%9VFsn@#$ak8R0HA$^~9bmT?Si!RiRZ!KTbq}mG0&rmW_T-Z3Le>Sg6o#a`V z-|Fd4e$|7HOxaBPq#3kD{__mJ?aH>QxoT=fyW-aLZtS5us%%zU#RS#vq@T3=JKZ<< z8V)$Q$HSbt8d>QeI;|gPG-ZigOydLo$oq2W8VRjlLjQ=(h3?yTWKB#|UX}O6J{!EV zY974gSo&JVu@@bWH!TzU6lkcMv8^;j_cn<>kYdx`#%t2_fiBo?haZx+@#LPb-0>Bj z$FpwC6;i)!by6UA-?wjRpQXPICbAsiS1#D6&nMBp5t=5A4Nu11O>7o< zsEZ%n2x)_)Q6^q?i=^ou)09=pT~MPPV`;~qd0$=ZCH|B(SK9DPQ9((l6BO>J;NUk28e zq3ctM&dD&+_b6*<0MjzL4A!Hj={hDtfI zMhRXiLwN2==nwqO_|h0nk~;WVpZ-c*8R0UaPvr^GKTDc4`G2Y=OY6&z@;>%g>+g%L zw^H=%#HN-T-FE@Q&CygWL%iC->yAe`7NZqp@$a>EZOL+8fjp z`96itmDpAj-E*-aH~Ll1zo9p7+GE46=s{#r@Qrx~kVU;u+j1M{Z13W3mVO6FKSTNl z`D$K~bMpxiO}Cc&f_7{~bM~HB8`I;mp~oflEt{kiNd1iRJ|rLMr~`SklqbiJQ)c(T zN6XlC$+`)Tkb^wvIldz=?8vJ4-rB7xv@JAe|NInqB=u*OODzvtF17yLa%sXZESDy3 zQZE&LCTa16OMkymR7#HX<6k9o4#9lM{&`f@Wc%dDVx4mxrg^{jzV|1Khx(z zN4VM!FNA*YBKV-1RLiJT%Gepba6p;7bJQjMjj!#gy=7~vn%de5uS1!mH*8WyTNh6l zy=>ExQ4jn``CQqwbW|W+IkAMbaR)f}VOvx7>0he1mwJPH{e0cuP^|kK7wZ0|GTr~t zCAxq6<@@JLU4HQ`@v&2pYO5T@8CUw-%B88UP}Spnr$U>az|VY3y;S%YN&m|$_s<`< z>4VBb+%>oc-2J#;|1PIr|93uk zO8Iv#c$7;1-4gmCM4!1Pw^i<<4{|2&s$9zdls@0c|16pOz^D|}*?O4&DE;>U>9;V} ze}?}f{^|E;cdfi(_R*DZPq@AE1^1Fs7f(KW)Z3Ha9`(WmWz_BKccdzt-l9HlQLpc5 z|9d@S=uQ52F*IR3|69&sk7mnR?byh=PURjM%QCjpfW6PZc~ea|aTvRB&f0V43Xdvx zdS%QA&nLQSt>_g8Sd*O%)7Na);3*nhpN|J)^U>{)`G~%nW^2vE`H4M|v&yBq-n`fn zH0IYN=9fACtMrEZ@_)ZvXvf#tlogwRVwcOHK~31@8pB)``r}rheX@^g)^#)GjobKm z{}Omr{zLiEv%aL83H{8d&EpKH09S&m#9fQ~KCT{j8?FU+FK!p^VcgTW7jQ>#f9K5T z7Nx(jmv#JG%BnVOZ@tg`bAK;;+=)U{#zgYBlm{e;^I#5ZamltAsEga`m)JAh%ncIKXyNZF;olJc!4xIBG=qEH(CDM!m2-eE z4x(4Yd*l}Gq6m-bg9Z$uGb;N2AE6&D`Zk7sl9xP&y%f{KZ48;O_z!J5oCS@nID=y6Z0d; z{0K5XG@T}yAGa(0H5={%*PZj+j4PR+XB%U!DJeXau#Dx#_m${I=7lzAE?L0+f9}CT z-|~Qc4xKt(Joig8wYfohnHQ4YL;56eYUw$PGVqiW-)rEBi@(LdL%e~fjP(C&)aS)v zJaxpsZs3WF_ZxVKH}KSw{+NMh%fg}hv=IM-fhR8hDgzJk2A*cpzhdCI(f&^0+9(ApIjKgz&Eyn)9~`X&R=?U z$4}W19uMh%Xy8dLAHq{kyqpi{<7#BQj4KTf>5cl7k^Z{|o)?GH*AZW8;E9Wuai!rQ z-oR5!dhIXn1mv#T+DlvVrGCJ-y2O?IoW5 zP)5FrjuB(SlXHkSH_Rj{)@Z~=Wj=W1E z+w^0YDXu@Y@H#$jw+<*+a6J^i?< zlRRC#TZ6o-&<-xyzt_%!e^YFQ4!%V$S@%ty?>rMAjm5h^xv?Pd(s2ClSbWpR!GgeFhT{*%;=4a;Ebzb0 z-5kEN={v2@V*LvLy10)2@1$>aIvS%l#P^V1?A|$K&!VM=k7n$Ny&&W#_XvMZ@YT|=aS>o3dPQyZ34Dtkn;t&JFM*uu)hGGte=T; zKKLtme5sS2v+0khPsg33_qu$(&ujLN{``j-mWIZ0mWIMaWQoTaKj6tnb|7}rMYbk1 zSI*|@&gR`5##TOe>pc5fva*qT+V-{L+qtLJoaG0Hp-cSDXTI1bxD4C>5za$AH~RWr z4X1k}WbV)#A%nbq)5f`k$VsH{MDB7dCim*Xmo>(ANyqkD&QIl>pbNUtVO8eXXCSjn zMOO=%q145;&N8MvbVr8N*9l$8qAzUfy!6^De^OP(y(jy+4$cm1UvtzTbK2>c#Qx>~ z5clr!QB~Ih|2{JbnMV?m@Ct!uW`bxY0Te2ds5Fxx3JFFH^r5#k3HZolLJ(V(03qSw zZD4{mNVNrT2_TvTLdB|0S}Y+dMS@ho+S=>AB=`bG#BhBi2;g8EAOeu-58ER*JH9`XI*vt^Ae>E?FX2R2&=szV!jJmitO6j28Y zd+^vi=8S;v=zT)F*21?Xj?ZZNME1r_z!crAsio?oKJe?Y#E)WV!+U@9_k%ya4`<21 zzoj42%Kqp-tHo&6b-SyDwywIdw;zhYZyh>Xp@q%huZX^ved|=(&%C!Vo46I8@`O?7 z`)3zN9Y}C#Cadh@`^)Z&$N2$u`0CHB)yWV4o1B3krVG0_|DLQG<-_+fN3-g_m&MSP zn!1MW(q;HO$s_yXr-&OQXGNG>Rwu~2>^JX&76uwi!5Ak!uZAB!b3+to@kDbb&tUYA zG4szah($*mhpu)AI@_V>ZinHgIh+_G;rMA@tONLEzu4R+bO5%14&Zml6tcz;-9RvX zKQTAV#7A&yS4o_mnAEbOMY4zJ!gsK!_~vxMV8ua;6g}tq5B%lQ!B~gx|-*4-TrS92^$C*FfC-RkhJA26ds1d1bY6q*ccLfvd5t zoI5D}59n?5a}RD%=s^vbWfKQ>zdsi3o|Tj9g{Ho|N_8iHmpy+=X15uhCGjsU&S~hZ ziQUBB=XK=yjkJe#H56X+Bf&LzXo;zP@cY5^%D5VlSA%%ni*5D)1zvYBR&J2;rs31g zJuI7bd$O+2(EYjcc5}7`?|R*CH`Pq!p91Q8HFs(Ea(I*IFy6$Dv6i*>;dlHx3_JEN zhjpc;Kw18H0r-M3E(_2zJl7BQXgfNQBy8(}ulJ|%Vx5M-{I38^ z`5uIKn!2{2=Xe5m=tdeCBYBVaYq!J?mU{c!?2pwTdYfRI{|wxAV65m@r~BEnKHtAS zE@UUWzm3fy^*OHlhYf3Jrar_-$y*SpPc3#qB_Z_@J&K9A47v^my+~-C!aiS~7mV4k zB?NY`tuFxE4(uNVV7Jis-|q+eesm`N+baDV)R|NR*9DAQ$QSHeiD@i&XFdOTR&89( z{SW%<)n6x7PTm6YruEDFbujM<@~-I1yNYtBa|vCQlDCq)&VG4kK&OI>R*8oj#(7ig zLh^^4HFY=nYso*de|~VF<8q5XUr@iKpHsy*p_|*J-sqPsHDJz>#ZYB1@)CS!iC6m z+;QnQ;yV{LaGf1gW3F74w|YYTgJw;2FM^Nx>0p@7zs}Onb;QMRSN&3#1xuJe_3>{X zQnPd7H&0#7Tvag_dGEeK?5U};ir=W_iUzKixmvjnas7kqBQDky72j|Xf4X8gR}$9* zuIssO=E~!m#P>w>z3|YgX}Y*%-o+<|o@0PDh%A21JopZRbO^Wtpg$2|5h@8B%E z+nG0SWB$yYf98f;iN6u9%cy$W>!NGUGXECMy*WMkb2X)x59_k7=upM4WuzXnGmvv5XbW_t#|$l+WGri=ZZeO^+#+(i#`9hLBk#2?jps#NEf#M}Hg>qswt^UbS~gYDYfMDx~1kF2h0IP1=M?W|Kfan_;T{~Kj0 zOw^pyUU58QAME&h;oT~}FmcNt)OzvdPYLUqBJoD094~ajTJMNTE=W|axry2Ad3aWY z*HnMC?5Gx#kr>4{WYx}6h%$Ry-Sc;U5ak-bGE&)A$T^W|V-mAsl3~N#V#VlXz|s)gH6+tvfV|DJN2#}S0dI8Z4(p2<72-} z+7*khlcnNER%y#-@L$5%+=QMfr(7GN@eTUD+6IlBMy8hM3hbv=^50teHyU|ylNRkW zOuY4+#GI_i1V6-q6Izjf40LzKLC$(A=A(|CaP)>|eIBMv-)ZA-2&wqg-bPBfp)|9^0@} z8{8)2mv0LkgThK>^{{8ndSlL;>~RaP z{B5}F?Bmc!jNum>8nu|VM$)A&cIq)WD%y*UUqdx*uhwF`9jlMcvLAHhR%06|^dE$& z%I5Emy-C@`7HAJ~j#u(6n|^i4nX3u*#Ml-`qGyon75w#dA3A%IJ+TBm%x#qaDR_th z4>5+vHhfC?vGg_Vtr1*wVk;EHK^X6v(hiTM{aU3ue2v_dp(d{C*sP&EZ$3D-7YC~j zU7I^GOC1(F2hNr8WrB-La8by$oXhdHqtpQ|Y;k^EEC`SGvTzyt8Mvqc7ZVMSZ#bjH zwk-%B?3MD9!oo`5>MTDRW3hT;z{6?d_=ZMs(x}CHjr7CZgJW{VUQ%$9`F4^H+fcS( zcV?Kub_SgEKu3a;x!^;^bAb=*U==IzTs*se#d^^&M7}xr=HQ!3b|l7{oQXoyYfkpe z>5sc=`mdO^lZ<7p8XX?@&M}o!yE9bxUgGrG;B8`0W2w+)yBTM8jrfF&qwMl!N4>O9 z+nc}JPVg4ZUA)__G@IR>x?8?u&%pk))u&NcnKQMDWl!ADq}I=aC(LEetl-?5HuRXn zzh$gf#HfYS#J)_K+VbI@?=#jaTx#K5>L>rmTHIZW6@*tb&W&o_ z;R?@a%!*pEqdL=XLy@5weWJ6d2wQfxmN6v%x*u4!&MSPF{rencg$B)SE^Jf_!k6C| zq(RAN=YQeX+5Ch3wb!l8ZK@xyE~GsoQ{5ZISuw}~MY)yD8hMPgPk3G#vVhI1Chnl_ zIv)dPcB6VFl{T2*Tf?E}{lt#az+pRc_!qxd>qGz3aSkqyp{Egk`$p^P1Y4?F$R67q z3v-OrZx(aRIAf%jy4Mh^*c-(iTUvOV)wgA0_PJLnI|Y7X^I{|XOTXQ4EB;{PfG2oJ zF*ISqg8g>a^}H8-VNY6lX#m+g6}Y8D#Pp8PIAgGJ({gb4<(B4dC0%nbydh&GP;N@A9qW z^JPbGqfXawMNz+e6~%mT+c_Wc;wR|u(Y_?!KjA$?|91Pi)B3Zd-+t~>{dur2>zdoo zNxWrmSHzSOu3Nb#a1}#qKKwIDP4Zhp1YZ6u?5;poAaT^&BW8%i>#GGzvIW?P2n0xU)$gV%8`98X=2VfY1>wC zkTH$+2l^m8(AGP-&%bx+x@g9X@ZvMZsEhdE>mw@~|D4&nqZXdm3h#ga;8nR{@c%Q6 zB?n{I1;1bM_86V_3y)UtI+^E$H@EM{js`pMmOqQ_b5z6p`ODS`k2ApIqRoT7XP6sX zXrqC4oeA(X7d$N#M$5jQITNsDOSyk3IFm7*wVPO#xslZOG&n3YS2WIxZQbFZ9$8%T zxK?pJO1*!c>1y2e_E>oEw%pg>zLM|TazA|gD*oA)8~)BU{I@N4xjCb8W$cO_jkISo zvK;o`z82^eJ4tTCg;|j(!MXu?fKZCR=9J6~O$AhJga zG%ooCPL?(%(IMj_USRgcMiqYAV;HH&fGbGx$G4o>u_4dB>bVCU;s?(75xXIUPr0%? z5`EapBV!_4nRQzr*%#^NyXc8Tj@yfWfs7#!xDXyx%=+adGK)vX7WG`g-WxF%j;sYg z9xck7&1K>W@{CNzsvX~T8LJ}87KZTqJuj>EL4F~;L-^%k1Sg! zao2tL%Y2OtpdrrN_IOM_`DZ0OyC0_j@V(9({;zbb6>-KsZzbZKV9@*Cra&|cA_8%F!iEy$|( zVaqQ1bkRklw?1+L|K~;2`!4GLlyO9x%LxCw#kE_3FPST4?pDbuiKoDm>lU?}cni8+ z;jw6BSNOm1w^N=RXFmNT^T14GZg6~u@O5Gfcb-pmb$|6;e2n-P--RPtlq-ETUo*As zVGf;lmN*vBu{;}jw!t5=e&FxV*RicgK?f;wbvNTqrx9$?8mPZkR<_%2r;aXrVk-R^ zq?JPCtcT!5!E(>#yPCxgTx3y;dAK)qe)+mc?#xMtqcT;^^Qv;)XFVUEtGA|BvGN3xE1w9IEEf z$?_w$v94EKWfOK|k6H66@?C{C*tePfaGG7~+}OhVpjnyk<-8E)@-`E7qrHb+(5woX z>qI`;OJ5D?N3SyHlvw-b920cfgN^ek#;%*bvAne|&oZz1L5byX3OW=%tn&eIcjw+; zC)kUKnL`voSD#8OP>}Bo7wLd+~oM<}UkSLieHg?&Xz2r{G!eEx1O< z-HU61QN)_r^c~LG%D}E!KldkQwoM!D8NO>nLa-k?XnPswvB-Ecy^-#Xe5qo5G<4W9 za$KSjnlLdAYR%&l_nOBcb2}2h0k?ujl}v2zk@iG~5jh;5FLH^{h=%;Fub1(alXrv2 z>hN;OTkx{xk41dnpmg!8%rK7dn8}yQfA&{%7Pqn9EO^&(_le_A<|QXQ_n-!CNeps3 z>zrbdw*vbd-Lz*p@_F5T$V0>wmvgUV&*Rh>|2fpIv8lcL9w#!`xBD0OJzjh1o2Tw( z4P11ee?LXa$xMacA_p$onMrJ?%;tiZGhbBG_E>G(0+?we$ zX<>KhZLf0JB&NAVGfcGN$0B=B;=`ivBgPUR{MlUR49#TK_x~QK%d?Ze1N_RoBKv~$ zeXK*rp(D`@oT8l?`hc*77CW>7EcYR;Ik<*deg%FnT70$*+9~3>$6)pdkL)%kGzh1I`gr9^o`qMg;Or#%2i<}mccqX$kieczjs=_--JRJS8Rc4cW|XVD z2HorGsk=7LhlVCZsMuqg)sy<%uM;wuTPOT^Q^L-f6TB_(yv^^H?cVaPXZJMXy6bX6 zGV5BNg_eYl3YhPOmZ;w=wft)jSFfa)*$apMJy9y|amtxbIhz?j$j8$mMzd zc=29eOa}Ul1hax|us`SKMEjmZ)lMFxE3|$Lvuiv$LLsUBPkAV3p^>0jnexr<8 z6W`jgZxxuqeAvLwsU@F-OJoW?@8p5=Dr{Oq^P1Qzza%g5LIx_gmi_S1yve*@l6U;T zd0Vhi3e7u%_e=6R2hQ7$T}f!(BHk~_J9gl_3i&EDZxuEu{qt69-^n`-j;kj>zp*la zV;A;La<0{_T2v0Qv}ZqZR%Hl|SJOX{-%+vE^iTi11@MT_yeF7PF3CG`;JlU0;h}j= zykC-+v*`vZw-&uqXx?PrFUcD_a9;6a49z=(_e=6(TQE?$?Z`Kwd5d_zB(Hhkyb7Kf znzxF%<&wPcmx0P<4C;B2d2{mVqdMlk{&_=XA(<1{tBx(YTWhw{&v(GzWlu@w{b}4o z`H=8!13X0E2f4x3{S0Tj>H5+ipfktEOV@dde)WevbBdA6GnkXdP#-J&=o71{ZIj4! z;30##cnkHC^jOM~yXdP^1Af43%_gt-4%DJ6*@CX55?#p(bR~xZx)SV`d~iwhKFiKl z0$=`3#TO!yx&KykwD%BlQ?2`x8*5qj915)ABu_yedO7rKseE^p73sQcPe7MleU5z# z_@EO$m;v6L0X~=lAGFL&@hbRQCcMzVygyCWNy7W!gZi3@XW@apbE@z-)|Z9Ze*R|X z+tsWW$I-s|$bGq7gSo`-ww*Q}r;V@S=e!R;=StQAo8NPkw!W8C`abLHTH3yawu??v z*4LY8N9_iG+tsgo<_L^&w0$tLV3ao4o6EI;E5?94!&*?*?sj0dgNv9rwM*7I0>klC z&zx7!|KHWAeV4yZuIK;vbt>H1GpGDQ&xl#`{dkh~{~6lX0*+dvT#e6wqi4a9td$(# zC<`3T14otUfJOfq)CI^I%E6VzHIJ(W9JYc((GSRadK2CS;vF9p4KP~4@oJ59mBE!kL{8#LYn2_VT+5a%dd{5sCk?|`0L3lx{!KCwo zuiyo8zCtZ$xt!qsNEWgyxZUNslr zjLnv2@#MhwDtNCTpBtGmxK~n7S#KE3R$^NC?PHQsHtOdMVILEZjA+I-#*A%@4cnM{ zbm?YnW6Zs_G3Fc%+Zd5Gum7EYudiS)`uFdNTre(iK76R)d+L=)7h`ymUzS*d9a53Q zo|wbE(vh6l0FMc+Qz5=sq3!Pg_84$dAnoV*Ro0tYT56((?5x-m6uiz`bMyEt?n%z1 z#H{2oiAlmc(07Y$?If=o**Y`bkyv=0dPVRjc5XiOXp50wmmma%KT?rVTmMY{#}oZ10dWgSgCOJ#AJA*|J92PrEnaFRt%>l0J_* zc&Ya^?yI>6Wp;@>D6(_mpE7khN^nu|C+(HOR{#4c&VH;Wt>`zI&2G;2vuS2eBk%d> zFOz{K`>dh=itjV=r(X&EUt&<0_}5J=s^W%Boff2DDu^>HaaF3YkFC>)6ACV5{UP@% zY-EdwS0#2|V#mw*m(9etekIiYNkP}ST|FZ z8Qaa1*y}hQ$u(ojikimE0C%R$ZhQ(}G>??AVf2XJPfMN#9mpAdM%|a_CUExYpZt5Q zCfa40Bjy&F=Jn0!oI>ZY_-*l zyl-=0V}|ZW-&1ETTffXa%1Qhicap{V;<9B=6d)hit;CP7B&IxP9j71Oft74pK7YvC%1r~c^ zxmwH>i88mhTUFx;@n!q3R{flXj+L%P#(b%Idvk7wku~?@%Wso8q~rc@?vB!S&TbUF z-u_+a^#-HY8`3iMb)Gv02lRS@G|}tr38d?Kz25ZEcQ^N@k1lPuqC*_C{Kn;B>Nd4% zbM8y*>+K~T$8|yz(7fO`8D1iMN!ntiP0|LX%}X?4%TR?aLlL$N$=EVz*fQAT3liIn zl~a4$M17@>>KXe2_4mTk4xX`dxEec$(&Mzx@p$WP9n?*6Z;z0+#os;e1=_}$6YUW# zQ;EO7zJog2!{VtcX|z-Rxl8`xe|i5Q&&Pl6YIO0BDk_Y&7Zv6f&?YH2v|XENSO2p& zf@f}U#$v-s_J8qt?6zV@sghGSTCk(cg#TwTS2!m}PnyYmF_ZaXCi8{t=N*JsnVB4tvuR&X_5`ziXEB9b!1V2yf~#47U~!!tVGkSMzJgxgU&B-PvQYK}N?cydPay zgNwQx2i9A4-#qofb6NFu`uL9bc=*1Fv+q)_WW@mOZ%3C>*N|1;6X(|#MrvW+Hp2+7 zN7fGdUSyPS%T?$RNe}K#Ch;z7loI}_Mjwl=P~Ri;8LVvz8xh%0FtB!#^?(EYkA}`r z))k^ZHG>n8V_cj`mqC5yuD2b$?gbwUGvG(xQ7;z4|HU^}#(Vo{^`egFjv+NsUpT=bM17IA^P;t6cIP zv@*W3ZW>i{f1bbG{`C$gZwofWEg^a3Y%sAYy`;<#zu&L^K!1?$h5q>-yj(uN-|tEC ziQn%t{qwE3G+(IS?|+g{Xiq;QR(mZ5F3N?gw}*sK7<#f zw9v$E;tx#TH>elzH2I7@=AH$ z9+irZUfpn4xA3S|>SlrW+yJbihHR$|8Ep+b&BVFRMeu^}Njm(1wNZKzaq3L`D>C9g zi$T+qr4}9sj=&xP40$(<@$-_SuC1AILT+_uGmMe>E9#;Wt>$w3t z7TGV(*GA~E)_Ml9$4=WmVXyksgMNA013clW#5rm!V1HU*1#MZD!z(4Pi#$2-S@~CN zSxy-&Z3^D1TF@~E_G0AUBIH=X?RMIbf}eo+o6O*RIsRVb;Zz% z#w$m+?hsqBT5JVcu@iV7dx_1CPAq^Ot%L;W{0tYd% zGgP#0H?~HzSbq&pMmr*{ORrSTn~Vvb&wsxu!S_F6%i;G2%ak=R>+RyCOhWJ_CAJ!` zN;I&SAhtQO9#)a;b-fm!Xmhym16!HEeIhK_S3n-e%|Mm38ah>V4{kM(u@5$T_T6!pqU`luM*?}mp;EGQp5 zWi8`smKKE#QpKSjip@%!5M#fw?aKW6^ zXn&lV&D33dyyi3^XAxWGN5nl58M>0#GT-M}_;3F>HR9{#_bKtqxHs`0&L#4x$k1zm zC9>Xh@{5cr`NcO$;>#eP`s2&QUF=g6ddBWzsSEih_scJ`vA~eBd*xGIR`kn!CFE1c zd{_0$ck#Kn{qy?I#r=tt3EV>3;6E34Si?`6{W9c`e(*$2?q82k88RDKcHqc7R**&P zm@Hz)WDz?ii`X$)#E!`#c1#wrW3q@HlSS;9EMmuGRp0ms4V>e_c12w#=1jlz9|Yl$9)z zTQ3uHreC@}*e=q8a83fJH|9*#Wn#|sOOFo1Aw393bgalA0s85KlR|n)uw8FnoZcIA zhV&pDC;!7s0(8=&Ae@=}-y3u0*2~14>6hLcbB6RF95--! zW6nff99u^8nf@3r7pLzF)`$Ota8?7y6>Qg=eg8L*-WzkKU%Jqhe|+`9sptO*K{#vs zV%HoXUHnJ<<13KfKjsYoOMM)ytKQ)M-k3AD{tGc@n7`d0g~Xh3xb!&UE$HBSW0k-| z^mrzG%kLj^hHq;qQ;$~@$a_)DnSOaMia9etUWL8J<;t~-elQsOWq`c)(3ms*%5|~s z`L?{S(3ms*@?I2kW`J@Fkf}pqhvKSI>=3@C&Xve$q2ELE%GxLNTYo&)!k0t8hvpSs zK=51e?he$wH|C6kSTm;rv1i!d^PD2)%oQzVIb%f!fzCA;b4F<7(~y`m0lNCum^0+L zB<4&CvRi1(nd|>BYV!!AyXVCWs)4hRoJ?0Gi z!NK(Hfpk6Q%!7UDZGm(>=FGCbbYCD{k2$lZFWt&m>5Vz_WM6t}AYG3+v!yRRCy=hk zoY~oz?g^ypF=zhJm+lRu>oI5c^`&nQr0X$fj`XFs1=97HGymN$=1c&u?a)~<{cjEO zE&4xS_zmeN$)5tvSS03*{(oQ08TJa-i(GX%`Q_aGe`Jkt>AGiVWFXeeP=BnM>xeb8 zAAS7{b0F4CjJ_YOpHb&#J>U+FHDe&=iAi1C8)qhZa8rG2z8-6)HcOqaOHyTfu2g0F z$tQZ7?d(yZ3qB%aE1g(O5|?@y?JODu+!WatvFK;r7xOOrmY0n^GpH~2%%+BKo)Y-+ z_-)!=P4=x}jK9H}+g{e>k9k5YktEiDs|T?ka>ez%F;Dc^GvHKoa}pc>Dc1hU)3Tb1 zpLIDUrg{G}EM_>Wtbda|baZ-u<&I7+?-rwe>F+k-Q>_t;#4!Kd{YG#f z#yTyW_1YlToDuaGUe!3~!$=$t1Lu2atl?FI>_5Fp{p*%}U$@t-M{gy(!H4co{8K$z zq%|AcV(7tF3BM}ge7t-u(w9Oz3Ko~_Ud}alaWU7p-7C1S;9jseh4hr&p8&(g{_iK) z$^eI$BkJ}!T$S)iv7cj)4KFM#gxc`#IKCQQqrlTHKrsn zGUkCq(W7-rg~)>-IoHVz*vvU@w{a$^NnC zawKvlY091?wa`fan9*CTF_^vi+7RDN{&n-5p$+w&q#w+R&G zNT=UE+AR&C-7IJ~6WVn_yP3VTTRSlAo`-hNKWmx`?amY0J->?QkJIiG+C2~Lo_{80 z8nkLIuMU2nEIM;-c7b6G{({sAnp?qswuOI= z^3Tf;SFF1ThuE{od~^a`nYqSwAv;VB{tEqe7y2m`UzFHBs&cA*oBe9trezfSQP79j zp0wM~Ovlxt!sz1>nT>{ng}GwOqvJ4`*J^B(yrq&?;F1@Eb?ktq zH3su`U_T^zUG$6K-1KO@j`QW%0SV4Kus>=a6U2Mr#drr#LA+mrBl^Qke^_FcCicgR zm2drV5=q*d^j$4{TH>~3QcoGj(c`jhwPv@Tc4Ht-rOmR*KcW39`xIY5qbcwz=^y-! zbB*|U&OM)0I*ok@ANuWkh~qE!dx_)UhCRrA*po$kt`^AJ=K=E6VBh8U(H`0`>DmuV zzkBTmrFjWY}UU-RQk)sg}Lh&7e=pt=V!Suz4K7+7jJ)&`}y0S=dLd*hlX`o5x<#Uxdgj*Lrg*9H2iw=ncwe$ zR#(yHRm>4LF@LP0jq})FTRCn_;!5O3kvEaWeamU<9|jta^hfA;ESmh}k*eokKAXJn z(AgPXAL}%2`9cj&9`W>%s=a&8?!S89*%M!XrPFhVS8Loq>OYPY9enPrDeNC-lRM#$ z;AF;!>yOku_srQ7PyhYw{&OD({#A`Rp|mSwUB*&ytm`&;fw2zV2@SsaT!4NV;|F*S zrC*({NynEwx_yNI|Gn}*v@c`fPx3#sD>SP?@9pyMdnpsze{Rs}`(^nzFm8Uw^ZWhi z`vY%gW8uMja^D9=;la7N$FY^uxMKsS)4cQ1?K;hC*dq(gi!aT9d?rBeLf8FqYk_|I z<5g(7KTe}a>yOiD()@hOooJ%Z6>|7;+A$bfP|oDUWjtHuIR<-Y?2;GrE@Pu3eU_~- zJlm$iZoOnY2)#`lh(-cDdq4F5zv0<4g1iL&Go9yNo*lxkHRx0DXlMQz5RU;n$o~9# zBJeI6)3RU4yyruwgWgb|k6L*a8C~{7C(u5*PvVaKxPIS>cayAb$L^ zm(F@c-=n_?Ux%B;AB6q+(EU)4?0HhIopcvh0hfB)ALBsen0DG^6Tb%Lc7bUYegjOg z2UtV=7UViThKTIRi+@1qp1hu)`meE=vAr<2iCvo=9w4%q{8wne?~nD$g(Y_&SKN+# zaT{_*E^)zbWj!$q`6CB8B%8QkGw1iL4AbL+$=;2sRESMK8qJlSO$^wIv8+Gwn^?aG_|ir39UG|r-`!E_+KNZS=)FSsMZ;nY72Iy6O*+|ByD= z`xnZN0VgpAbIuvZTM1{V@2LPzM5pu5;IUbLDLil(3NKs3Zyp?`(l4R#EP?t#Y`yJ- z?$!yOE~z7U?+>#c{0ZJYjGaBS8##B5;0ry-i(c@zy{G3|??hKU{n3qH#JhpDZV-oU z;O9x+g^tb8PqJCX3B5VXr#)e<6a1QeZs^urr|N^WEq!(p`zSAEq;ekX8qQaZ94d5X z(dpX?eHW7^v`_x+a?V`IcvpQj<$E>a{4hoZUXaGky)*s-=peJk-KBM-gdZq1l&7|K$^Bz!LzYqQge{Qx%`TyY@Ft1{*D)~$?Eq9sO%O@>| z1sH3kDt#>&ic7(xN_KU-I8W^CHsUN{OD)f5c&H5t%pAJBs#JOC_lyk z9T_s-!Op(MG?fc`v&kB5B&AmReLS#M(n}r$m_Pi-x+H{AMS)o&LA}VywEylsWppk zGMM)k@`|2R$`QI5sQwn}pRL!Qcq7zb>gt8(VLN!__sq-j^mhX1Xo^1dVc-j_4C1*I zvu9=EELKx&%UyD|VF$Dz<)#Gc%ZhT2w9y=+z%$NLX)dq_;vQ6adnG;uU$iN?V z1>;F%0`!#)QIsQXOBv=mn{8aPfqASg#c1}nL~FS|!$@M$5o<`xXe`i(8%AE4lVzT! zE^TIFe&MIru>V}oi!T?ar%7x==Iz74)8pH`1#Scn(niLq-XGGg(7wP}Tki|O{a4@U zG_b2BIRy6se0!u#;G;8u@8$gOvqA12L3)I-E_O_tn8UOwe(3gJ&M))S8y&0SLgBm` zfFo;l|F;Oe45|BW`4)x`bhh6n#zETeNt1XO?uJ{OPUrpviS^+A9yDMuIVHxK?3YSg zYng*ywyDV_(52}6&CrCEcEg*|{}^YB4PY|xEa9sYR&(EER-Me(bMmqOcXEztb$Fz; zdZfDJAbTa%gxmw%BdbQ<2ncvy9K=D8AZ*~UJGyn9}MGNFHc9Lxjn zL34_FxRYGI1%7?uw*Oq1T+RjNXKN$~s6N<^Vri zc*rjA2CIggI)21P6Xm2b2aRJ6@}Eh|9K_sXi(2DbLyU$D2j@b=Kia9wmS>nFm=}bO zeDEFF@4{zXx62wK^p^s!b*H7te$_EUyw3qn#ooP$Iu-@m2;E|G+c!6vpgF<8@QA7e zX)p2P)*mw{kLhohZ|`pYsWhv}4^ehqqMBHLy^57s`oJ23zaTMahL0-BRh+@@dg2lA z+P=)R@uz{h?_V}zBl~s>g^vr(_@FsC6F%6E4=)7UF*!}nU}cPSyMZZvwg>*-1}{mW zP5T$yW-H+TBm^fp;5ZZ~M}n}*(iVl{M0mx1zM+qt{0Q}&5rQ8X3#RfBoWvXng8KCIz0qwLG0p$9sIr^544L2KBs?`CHZ~vewF^&-WO$!jWf5_@prH{u4M{te^3BDW&{E$w8B@}CR{WYn`|jc1{F4`5uJ8UxUZJ<( zn3M4s?B9WK9v#4WaQqE~?|A-^dbNMvGkGiUr-Roj$`HM~SzDf92~*Z={L!+Zd*QXk z%ps?YYZ6l7UE|7UTG_80QUQPUj)iBM%^v4wZ-ULlx#svoi!9fbznitI#v0auZXCPb zSBX)Iob`nBFzA4q7vlhqzq;KJ#0&hET3_-S{pe@;7I<@pnHV-vAdG~k-8Nxb~oje+h%8f$C~10-BIjzrim=M2AasGOmKf#tb#1(I|bM~!0_c&+MW+raVy(jUR+?9!2 zbDvFoHuv?!ZMh#O?#hj^J)i4{&&r(}e^c((_?vSxvGLauZpob%zG8<*Gt^X5U(xy7 zXoJXtHqO9pN2Zi|nmgJ5vqXBWVZ@e29+vuNV&k7g-Lj}p=IG72j^x7VLiQCUZm!Iu z0!PM!;I4k_vH^? zp)7oam%y7=il4C7@CAHjc)Z93a&GnThB;p&ub!_s>N0e_EaTWiJKjca^7GQ64YLB@ zTa^F%m+&AHZ8p%)pOb$-G27wuaU$pD1k$Q{BBs=(xOCea1zyG9w2<*#H^HB#F;`U~ zD{W%jBNOR%|3W+4p|xy$_ad)&W5XKF^}CX?Q;XJ2RdG8MG!FdZviak%1?t z0$Y5pJowE4d$P#%R^D^&^epm}51zd}Gu4|NP8`Z`R~i0#DN?sTkbl<9lCA21Dfb1w4>Y$1ZI`|Z%&Eb(c{}stU4l>lxQH8QoK;PN{+P>M(45euKK6xX zz*&{7a~Nki%wN*pHOQ~fPh2tQHl8x3q_i0<7SCd5lb7^&u56Qdj59itK&(y45sl%qRYGI1-G}_`ruT1QW&Uw6-SWNgWnTYFa_3ptIC~5hub6cVB zM)pQ_a@o)UYymIO$&q|u>-j|vXFqQX^egGm@ld&oO}H(<^W}Y%q{H*)!|zKqi}w(= zJbkg2T6cs!6LYnCCT77{?hfuZbI;;_KlgdupV7Y8xDDUWXU(edxhRd;MTVL)z?Z!h ziMv_L+$22O1>ZOgokzl>J>e2(lRXGa6m5!Zb3N)hPZ?K>52(Z^UQWN(ox*e!xD-N9>b;+uRzZ<*rkP+*Qh$`#auW zsCeH_K7o&~j=HI-0o}TH z+cIZ8aUxI4z5sDqJdQUxdylm#>-*CIT4D~G<2?(_Ll3V)51XK&lhBLMRRu6t1ZZbI zb0_hm+jeTM<^^1zmPd~|M9dfVC9FHAE2)#d=Oli@LSx&3FK{^*BPSGgJ-janJBw$b zvjJf-P|`^x6Vh`XKbo1{gi(6#~5=p-t_b{xznHC zmV5Kl&*t9p^mDnZZrYl=jcXs*$6Tw3v$BnAAJ;R(G8#YN{%pV}QFKhwX9cXMWG_w; zdqrUDWik%*GA$CPju`foyH#tMI_>GLx$|zqry4k0L;Mj1j{PfaPN9j=`Uhqaf)p!kA0LiC94rLHF|%GEssJI8TR2R3}$I(Uj^ zYU^RGw265^Y%4`)@arK*6O6Tn6y?cnodrug6aVk2duB73h?(aa~>hm4?>)Yu5f6yt&KAXt# z7x!CW3}~uzKK$}a#(?M^>cHc_+*inoIpmdi2hv9w#vz^qi~)b#lM&Fk^wIE!4d`;( z!_?$I06RYd9W?dMVtiB{NcVQ|PZe!QHzrtRomv6R?a=Sb{EP0eGYWX3SNbclcTOxT zI9j>5iaf&_KL3qc|F_mD-X6mcPYyT^84H)<_gnN_qR+kDco6))PC5VU@u2gTLEt|O z{2Lh$25_vQ-}%?ZL^@*v|N5Fej0xc_a$f6ywvOdd4LxQUdgj*>(7S4)eS-{K*aHA~qxly^5?T z>qb95FQvKvuk^YQeD+KWKYV_{V0cUnJSG+%69H#9+!`e`^-)r=EEx^?Y6x`?Yn(OY19orVC5v0Dm^+qjceiKC*Xm^uRLr*?{;#GR^PtT z(0H2I9K!4Gg4drI0gbayC-S+(dx>}dA?-)(D@wkRWs90-u_xO+g!oaMWg)VR=sZmk z>agq^HK5OtGjTT-r!?(xr!+akhc)~Xz9Rji_}6(A=cck2+e6y|vpTgAMVur7c`rC#byGD$f#k!>$ zn~|rr(J7qoX8nZoPNW?gV>N~P$hxYQHp#kbFFZub5V*omdf~F>@d2|0nBK+_qddS{ zs>8EbW&JAfguf04-g*8L9)F&6@r@K%KKO|2{Yo8my)^M6+rR30N}iLK4j;uiv>To_ zno{(ANGV?%?)wD1impQPocP@|Y=z>j$>7}t-bFrMZPX^2IETm-HLPKEadMLlJNnZ@ zXg_U{J~j~>mGeLvEX>;$O-;$x)FjL6Hu_R^mQYt)1#7iWd-Rwir-*Mcv&`M(MBjkT zcC&o@l zv;IG@iIaVR0mg@&xEWpKXJ6q(nWu~7K9W5W?!=;Mknz?2al`^OR$ZW9)|tl+syCx!e9UoBfFFdyNc+J9GFj==j*d2itzc}qVNseJzx_$#_GLHdOW~ z_OvGZ=<_-5MDgo-sH=c+{|o9R{|k-d&K==5f%)J!`gXgC& ztVq}&Xsgsu=Hb87f5hc@D}C$un*U@?yku)?&3Wv+pXPp!^t-srT5X8XjgIF_{eRAL z_6v2?ZS+1Srb|8JF-03K zS*XG1K0;2D`etZ`h3)$Hu!Wg?_vgK#CPx2eUsxdD!d<#u)<^If3+epx*}ht9jp(xc z|9=-VX*KjC+9W(=5ctv}T-{spT+LhYC#`RoR)0m=BVE(EoCCDs<6s+Db4eSByD{g_ zwBcjg@O$WIpf>EKt{>Be-^%xpHfW^#^WIQXr+>3AtYw`gZE(<*k7>ge()s7Jk7>gu z|1)KMx8`Y{BdELBn3X>!t-|kO z6LDidM^A};5i*aeDJ4I4LK6#VOZxyYB(MB;PvF0H_&VoxcAJ-0JYjOX(+Ui^WI$W zDD{;2S-%sb$3c5JXJ)qWmlNzS_}e?YVN#$SF6dg%Ph6(c(1&}1tNR4)8p)b91^#Gq z7pGyPQE!g$&(|_;MXr(k{C3)0^z5{Ht!!~u64%sGYQ4xTrijXBky(6#BjB0f0m6r+ zJwqus_#7LkgXYKiW!v|Vk$62@vg)1TBfYFI(=FljqoZM?@Pj*ta&{l%y#jj|+BmTV zSVdP(uRlTEEK#B(Rh`7V+Hi8QyUTPT>nP{wVb`xZXJSX;NDo>{Q^MT3p;Eu-(AU;XR*c z&RW@EGOzZU%xk8P5-{ok4`RE9H1?!5h^v_Aba@x`H37jJ8DLAnPa6&Av4N~9GdM2Bz*cV;nmAX_> zH)&(RC!+r``|R9h{*byciN7fIGHd1>U7tn0^fJhIx%$cX%YBo&hvH^Az5&hf3cdXk zX5t@h*4rox6#7Zw}i1LI)+D( z|MfI%4euvSmnX0<45rN`O~!74#h~!vu4G<(6`}A{Ir95EC>5`%C2h0P>#rAvbWxsv|YzH#-V3C&pXk99)lNo8CSCY+>dM^@}bG; z>aK6Kd!03v=@#ONPQf4leZCbQxZc|eJkis9V5p3HmpvBX?rLEy%6EZxm(gg=H%5E5 z!*2xkcJNridDm+hW1L~yIhTKBA5G}Y9miS=+Z-S3vy#O{P3#9*OBN@~ny4nY&uJ-N z_C$)ixJj=o^HVi&$s1>Kyqj>sn4GeDS^OyH{L!<;emxnRv!Z`YXp%Lwto{EP&ZDS@ zRp|Z1(sfdoV)RiZoVhCYr1L3vynBA2T&rh3V>kDWRIe4At6FrtXPB?{5?}6B;>$VE zD`j!b<66bFmp$fJ(b=BK^wUFyV$FzrBl^z;i#<)81!-NdIJJp3)`+cIA@kk`jIrR} zt;p)q4|Czw*atZwH4R)aiX_TU1+85ma4d&OrsL=o2xItex^nU+#J&1OA+q98QGYsmpP~G6sSwm-6F*iNKx_$Lh z`U#u0S=hba&VQkLz$?*5A5*FZd>@&~|5n!Y7TFiyoLW<2tj+V7-`KEy<;X6PuTFD5 z^Raia=YVc<%H}WH363hX2+u5Vl*2v`u@1}R{SD|K=g#?yJ^@}e_MW+SmM&`J9u4d^ zbK3?_dE`dVh1-v^ri$}Sjj~Fdg6&_I)z4@C^_Gv{_|S#?quZC|9?hAa>U~&ql|2I7 zW32atUe6d4Q*Qs&FY>Oj)IQirT*ENxy6SGFels4>5wyzxCwY~Pqyuzrk=#kVpefIbo0+&92*X#*3qqr}b zeRYlD3d3NZaR~6@n`B?s_m_2f)*-bI9#aO-PUD?TuRZ@*!l$G~leTErV+orKnx}y{ z(A!tu+2vho9aUN$Kil(@!L!4Gw+)=^oH4<>FWu!lL>yFUgJ(X-bkd=eOqQic+ zHG0+4o1>3$b|!U|^?KfO#vgUv$NkZ;$mmB$Z;Rfpu1qW~A31xhG1~i3`H`fZjua5I>IL7|X_89L54?ZCG(zb0)wG%#C~Fg z7_OK1`jAIAK&uPyjeB&%v&xnJC)U;97}S*4BmLz{ncG+Xu&Ism?$ZWY?_ISedfKY3 z6YjktvUDZ&m=|`<)$^X-7JU!xo44wjXb*)iX zz8UlDX+x^PXsysR&xG1d31_qz>zS8+k+4vU&gs$OJ!_BwtcwPKvq*=-8g{5p_NZko zp;51&!?$O-o6TGj% zi#!u;afjeXhqN$#OnK9Ch}&!RL<0XKVyq5huBcmiSJzDVZ0H`3ta<<0e#1cdGHIIw z{{3xv2mhLwD!)PxV^l9*;+w*JC9+=5uhH$G%aP|9@@(-xPnTz8RY}j1XXIIV&X8y1 zdwIT*XN6B+fdM}jgKG54N`60<$&~G1gNp9Mi0&f{U2ix#-$CepiDR?Ggl^eD{8X)B z1hS;edm8=~A5ve@ONl(TnY6#3^~;G5W8Y5_^hYthq1}>2?WdHD;34XmYaDDBpH>Au$zBf{)3Hj6wywMfrjejtV_RcV> zborji_icQ4Mfl%0$@5UoTZkZL5;ny0kI1P{OS%;~b+n2*iQFga`-6;~rzkt0^kCZj zI5kJ|V(Y%Jfc-C7Q+BgP48mFCuge{E;NT(Tyt?ADG|4ORuI;fi7SG4Fq>lRO>rK{# zMPv5s_{k?0k`G?I4|)yO`w>5^Sk@T2Y%chHkhE@azZgArK69{-Iu=1k`OF)wJfoXD z0`Bt0`0<>V!d+xYWVbx@`FSG8&E)KyXx38;X!mExKZg%*N^9xZl(x5XQ(CK5nLcsZ z)f?5)t2a8hvbc5?cc#@Ax2J6`?nv8Gd^{~%i?w<*WySx+ip`0YxV<%;Yu34!`eO%d z-L6Gi7je(f5_G!?@%@@RZSwxSyrVBGz|L0ivK`r3^mNF-x^CXd zJqHdA1vwYmf`r?ym zPaDm|qaN+CAY(0gJ=wbf-y`X-4s=#l`li6B%4}oo9{fP(EU~H@`gx(~`cKfWqDz;5 zzv=Ybugka*PX3X zEiPjCf23|Re4r8Mz}#S5<;ZmrYe=n1%FV_Whf@c z*TWojoO6>h5DnkIYE!}oPhpR)jKw=+A4|A8<`?)o@%?X-7FPUx?Bfacn92nFS($sH zd}5cevnV<3Ev~>i3%yLFZyxKL_2BVxdNSFsll@JhVb-B3($6O7Q}lW7<9{N3_yz5g zy|UyRZ17IvZ)rn4S$vZ*D&w__y=+*fg8?Nw(jBoB<##qOYCu; zofFq5_}E+8q(ym>=#M>`*+UH2Ing;g(#|X{T@=%{J*{)`1B+Z!UF&+ZSkIw}k0(@* z#XobhH(_V7JuRE{wB#+=HFL2CJ}uA1z^PQmY!X9`%5LmRc| zHd(9PHq4cF5EzGm|J&jTX_5vWbsG)g`SL&Wx#tx2I1d1CycW~82Y4rd=QGA&=YhQo zax8mfZ4zH&E%1tg=K)@0acY{R39rb6KK6k7PmK14YAwo}3qB4x##u|h{`r(@)-dC~ z?s z*s2VJy^1mnl(8#mqSro%GNQG{Gn!U&OdG71u}6#cwRHB(c}>P*Qi|u~nVvZ_Xy-}n zC7s$(tCQzigUPFL{(BO%xZ)|b{$c(Vnvp$o8*^y^10Ca+5vmzJb&+q>m%5*(|IC^_{EPg;+~$A(qr4AN&APoQ`j8y#7G-{& z0bKTMn`LkK1Tpc?J?COS(rlG9nMbQ8`SrF3(9^8OCv7Bq%_3VQUzNOZl-80yBD^L2 z_ssRgFi1C}qfv$R8^v~F>F2%vk`rs8!*gd;eFgmH0Js%CDeIwNS`K60r0Y`tmhd&Y z6sgD31Ib<~=lY7|jot8A>5EN9)%;G%-x8i4;@5Fiq7$q_4tT>b%EBBdF&(@nVh$h= zbk;&|q4oI@^{FJk=%0l5^vw(3zIRkbtWeoU7CllGa^y_v?M=z5??Cr0IIGrTCy6~Q zC~3bl1ZZs_iXt6b zopu1VHROnh7EKV$_x*X!d6JU=)|qc#zxn;~yq??MYp=cb+H0@9_S$Qgb5B`Vj-Tz^ z9pw*{@94X*^#0ZO6z|t%CI+#^1d<#{f&Di>d>i`-htwy%mQnxon%ka19?fI@{ngVQ zqc1ZOIWsyj_!@h^x3C9jD}DGxpK8wHFn-Y2QJrzZIWqSEeQ}c+O?TNFl^Ht|Qi4g( zKb#>r!c+Ln1BZIborgar<8in5bJZh4pWRNI#p~O)ZOFFg$R6ZAlfQ1a2b~)mVqWbH zzJevLAr-7ac!{m6aYV8=kC*@>xF^Bm^~{StjLF{?>@BOI+ZCfL8)}dfW$@eGrO%8j zxc}}QsrYNBc65x%9p`Tl%v}8H3K!mezhNc^ziFlfdd;f5Ej97=48_U3gmX_4mZlEb z$vpHI%wZ21)E`-W=eM5Q@xoir?znU5@Qp8=o__G2Yf}2%`Hkyy@BG%~J3fJq6^`CP z5A&7;a5ENXrWuBDn!`r{A~C~dqwR!s@|$+q|J&;6fCsHc~7qF zhqC{9xm?#k#05Z?7`L>AWflFrZ=SLxs+KWIFuP6A2u># zh$MyFTgw;W(8&2jl)k%#>Ou{lH;!lZ&4*mp**&6x>g;0-{D?71 z^%L%s(LIi!TMKvLT8h0w``3h5Dg4}w{7Q19G+$<iX>Dfb_ zi$+Cp=zG0C99^$S4fzJM@90AR`1)+wQT^kO`-nRPoW7U&$1A;HrFO#NEGnLJ1#3(c zRw{HGg^?$$nVBwt9 zx`Jh{x_#Lxb;y#svOnE_urNQVu3(O<&LCcs=qvupVXdgc@`a7=J8pT>2)ik-<5EXB zUXHb-AR~tv)w|H~(CyZ1zXSQAF|}fH&4+w)A)hi$cVr~;2^|qzYgG1RK4XTb#K|WQ z@`*W6ME;tRPg5vU^2tTr^cuYfDw$r)AJVa%VgO_G?*6;uh9&9fmfKFm|K{ioXa@VT&wm+m-f$b z<^E6GHlKC!M~E47uC^7gG$H4`;8jtIe>gO?WD#v6Su_ngwKCqmLSI^4>K{+LZl@p5 zwEMB-hW-}L5xJB_xw(zs)%{VpbNSBZ=VVAyFoM3D_*FHqqm<{-L6LxIHvcIQ~ z=BoYcwxMSbZ$Rgm-BtYHvTKVUth{ysvLT0Zs|FYiKe^2x{)yArUPD?ZayUhgWPX3={&Hnf3NH3v-Z2|{B z{)S*(i!kZ={hpjx&&RJI&OH<{FZZk2d(j9ltWekATB*u8+{yKG>s@F*+mj7;ui0_YnP?brRwDhU(JP-ZAD-IWZoH zGd00vp2PTF!n%6q*UkC)?00sNt`#~@VBR+uJ<*uBS2ui_Zn`4@_-X($X+?tM$$&b}&8WLt<1cljoz_+$`@TsX6qC?H zoLTW4Z5g_S%k?`Wto6%E(kkx}H)qw6e^0fs-cOsf@Q?M&wTD?xOE(8J3%1G~K)Kov zIgoPk51`zElslkqtX-}%y;REXHu?x>Z!0y6z zVBJr_RXW09bOhn6wF0f*s~t_#5lW*?9<+ zG~O5T4t<(En~bpNVo+WQ=@=(MCCTzlJ=^|k?;DsvJ0JT9e`WI9?KX#fz~ak%^s_CB zLo%0j!b^+>^`+)Ncg)(rIk20c^;x=%(KRL{S#*l(WvZJ!R`iMcZs}Hx6}Dbuk4@Hm zXf|_qWP$ipa!0(E`IH%smxHpoO!$s*LOO~YI^>eZXUzpXAw5g)so=kOH8-YnE8c~R z`H*6+7Eot%Hf#1z<%cKCF;3une116mKOY?5V%JTA<^E0#)}7!4ubmes{+}OK-zcm( zF<7PGh0o}DVe$X`usBa!c-?7?x8@Yg{Y0*m#oJ7=J#X_tn;M5Z zl8?;EF^u*HmnxRf*=uoX(+T{q0RH*@7x(C=F52lT=q7ol`O`4sk460t(&|P-bB%N2 zHR+D%jLmLjirqhZ>wqhvr4npE)Dx@l5=Wr_hd#)T0Eyl^oVIB>PK-8VyQ=aI*nM7>uM;PPq8DmUe>v~G@-n!z->LZ7B|*@Y^Rui}@T_`it%S5l66M|&}fcI8-e^owbeD&8~Mm+%Dh zw-IV1`i9aezJbPPpP3%I8JV}4bEa&&cz`*AY}EIeo=&^C4Hw;hR#RE&xE%JFh!4;W zEI!aYI$mCHjQ>viO{Hw5XD)rt^pC`SuOvM@++TgFmj1d@V;t9B+N_m6E?K>o@(Sn+ zRlSUDifbUi0(Yu3VFnSsoLJe4P-7TJ3%WlYvUE-lOc6M=8>~ZZzRH4 zI|Lq-T)vunOg7Kgde#wS=00pD%qwT$N7S$neArjT+B{e8L?7#SGxqX*FXc(T%O26n zn)XTf`uC(Ai+v9tEcDiN%l7p4!>U7+#)n8NdrZma9oU`*)E(sCAK)kT@z;6&jB#Zg zw!Jp`(qUl9rnHamvMH5r_J=K=#U7ybG1&s#VIy1u%+D!Xd&DX(<2i-vxHH^(Ic>xK zPZxERKS4`Jukhh_(f61a{llq_$4j5|hs*dcy*m^ALcU@6GQ2U1w4Xt%Q@~7ue)^_! z_w?;E@WL-V6rs;PU=9cs-4)eKB3DLb&;sfLZXA8Pg7Hzl6Fqfd`TJF{ zM=QQQtPO@TS#w)MJ8PXR54(36WqA7-SC=IjV=8V3FZg8cceO_E4ThN8$roC>_G;!6 zt66_|7+Y$gnd~hit@h&|!mhfDwIR|+40K3fSI_&d(eN;QcF2(&S^vh$4WGTSal>r~ zt2Vs(M$HEH>_ncyzHl5`Md^lpmgiHV8~O95bzr@Zu zms96?)LCmR+gMYH);TdU1ztSXS?8pXo_}faVxm>&53Y``Pp)U3K{l=&>Y%#XZC-^B zmBySBWT^VqtI)9IQu$a#<%>IA_+HenbSUjWU9>LEF`oTOm{VGE`e4V^!`1$@i^lOT z9(RXI;qejhxYlwt&w*ZV#PhjiT_NxbfnNsvMJbYju8?r?(ASG%`AYI^d^lIeNxc0Y zIJE5VxLSLnY*|^c6!{6yRpIwl%ARxVck_=9tjQ=vHenl^zl%05AqD~V^Xd}fEl9V; zAE&?gwT-gR$_LM$E1#cyTa^zUC?T$;#>;x%+ldqME$08@(~Z&h(`QR_uPgO1ww2wk z{o}@He00aSk>_RXLw4sm!sB_*Q$G62KXcF2zg}%)?f?JO%NV_Yap`x!TJ^R+ypl1* zNBfM0wm;=t@$E+SoQX!YgP2=uPZRGOd|W&m!;J6@;K>(S{pJtoPQ?%Aw@EhZzum`! z$UXJ(6l@ogCGoO3pZv7j+A`=RT-nPwM(x;tq49$(=E?UWmrgS05`2|Y3vSW_-T0C) zrlt}nhW(lv_pp0YhFiWW_@W#|FOWY9cCT%X$oiv_s4sc2F5uI6QpUKXzFvk5t1vymvR$h()bAA^P<=gU zx|<`6r{$JxNw#E*{Bt$dsIQa9>g)4jV@)}IeS(?XxsLY;ZM+&f%75W;#t^~PSfsxG z2z^Rxx<0<^`BVCd{z<;sXYBl*f9mU!SMhzl0bkL0zOSGUXTh^)76s7V3en*vqstYb z)7^;g`361}cC?wl3%59yHSS{tp-pd+q_cemm9rC28F7s7dE z4Cl%i&a#!9r2J2T)gPRz_rpGzkCkjFDh_+EmnQ`;A# z1Ba29qLbEx*+8^i_7dscn#Z<>y7O5rO{cWd#eF~Zs4{RJagZj(9QOWZ(o;x_J zA|L+}e5==$lo+VD!+L2{F3inmsXzTKI{zBDXUTr#md%eL;IMDo ziUS4zRoAfIp!NAu+9qq^0xJ$w67*Mk^|xa6KgNC+--_w)dQQ+YeN)d4o^2aNy#2$) zzD4+Lo55LuYJYgApYA zXGCEHXj8#Zdw=m^$K#5RQI%22+{hIv1b!7dqO0`Yaf+qo;{3ZZ_K(G<@d`FDUleR~ zv~9Xy62tSNbKt3e;7OqOD4rLA=k7Q>`TwL~APMLq*ku>7UlkjhtrsY6WIkic z;YsWPdzW}T+_iUeBsge%u-|>WAI@XHXYBuQyfp7ifHn#mrt57*2roc7EQh^-UMnfLI_EVJMN^yyi}R;;7$YjyTIU1cmz)Xo8% zTgAHAPU1MhM~b5|f7ftqx#$a3!|6-(g973u907NYM`O^(d#?Z4FqO7t7`AHF6a6;= zO~kkNT+}v}aWhr>agMK~9nk|=leEUrdvr!Yj4p>rziEIm?jCIXHjKCV##to|1~Ag_ zC$#7a9-{Lf17Yh&_CeXj|Ajppwk`hxt2(~L3dV@>e&diYv>F~XRr zG`pbdqom2=43YlO$jXQ9Eu?S#jP1z288x(PA^p-$zak!|45J|(oQx$));Z`KjYFgQ zOo#AeE_%|!FFjbmcp!Od!@ma@P4sW0bo4mgU8M`gsb6AapJnq4a&h!B_EBli-G|3W zFIls2berxjWN=QBu}!kM3Hef^zRH+rhm0pbF@&;$S{t(XiN3L( zIDQsgur1kToqi{}Z?2eh>i7S^zTh0%koo?0tsmLxK8~d`NyoUyyzSibrYfc*N@i;x znQSBUsp^W@n7oqymbLI6YfR384oa^vxsvZ1dx!C@l76P=EIr4@RRl;CW-9YWWnn`W<<;A{!QbJWL2&5_KwB00@hQ} zcjgWJ=Y5mjna9}g|Ezc9r2YO=y|V_Q_hry|J?~d@ZyMTY+4O2HIT-!7hJSncomQB}h@IC+; z%9=ofU7zuMtF(L#qis2ccT49+o@1x9`tCLh*QhK%gzoHOE~GK27P`t#r@dq*<+(0C~n{v*MDcHa6Lg1s5w(sTqErT%#dt-212?MOY@8&ymonRyFYQZEP zM%LDX2c*+!oYdK=vT29dr=k4$;Ct#wbPawU@~=47|NL=n^!2zlx~4}P(f0Jmv(IF> z-vLe7*ZL|jU+i58od?u?PjKMXLyS{izKeEto4f@MC6sNHUOi5CSLuD@EEwQF4_^`C zUJD%P9tn!)Dk|1})4~zE9_56PrIMpIO!dcK15@zzyi4%mIiqyUxEATa#D%NJcg6nS z5c}^!zmyDZkq%3mHN*i>*(DBiO=PIb_cDG(dH(Erf9X7LkLK&0^Sswx)?PZ+xtC|? z{PFf{6x(eCy4a$UwpwCKg_%>2OsH(A<-9c6eweer9v`>M!(4tEbNQ>yWNYsJj1}iU z@vL;KNH?8yW6c!nyo96ptM-I-E&td@T-~#r7QPJueg*fP$c_kWRvIH~i4!%5SY_?3 zfoLz$xDPrWcN3!~&c4tM*P+Z!i-<8+FwEa>E?m^6@#Zq}e9k&Y)}qmEnfQR{e7vef zqj!`@-#~AWU(Dj?BeXRua(x0 zEBJ-xF^ibTENW{x)iL_J=qdkQJZ~b;n~YPnvAI(NxCG(fF#XrEJJ5%;rm6MRk@&-| zS~OzEszoDraDJQ>C(oeojW|&>Zp|XjyhHC*nuiz7+p(Y6;hzB)S!~JW0RFDBr>sO5 zXnK%3UphYAGEsJgL2VcJGN$)OH|k3ny(q8XQeps7PhY|y;(S()&(0og#rTY#UpcTY z%WbTe9i|q(l^sU;<*Sy%{%q-Qiu)3VZYz<~T0;>`jn}MGFoovc?~H{2e`-H``g*HMq=2Xfo=UuhKw=!IAt zV(**(BK(U@Ugsg6$m1@Y>uAsBFK!71*{`j6MI!d5Onk6g=r2jwqNXOeLeJ24BNonW ztH+0W!E3cU@u&jCt7u>!Z#8EcS#bjm%EVW^VGCCWv^xf`W)d^)8NMrRiX+AQ z2=`CGOW)`5U*BXm(SO0zfBA^m?Z!Ht)&Dea|6`=%arKRyKGA;R`5XO0bsR>&vinC4 z{bTaxNns!RPxBX+wB5dFfz>Z3pXnGKfal|32jBM_R(-{B@T!<%afMVH~&^eQ5-H#v{a@ z3C_r=_BD;c`?(IWheQ39eFQV#OEKDi{MV%iKcIfA^K+_O+5d?RwEE9qGurF=94j-H!_iFfdOb!%;NL1rZ(owtS+{qWjOwi0M8g?S-RASnrtx9Y#?zR?7#gTkb)nfO zBwYJWqz|I6{0x2NebzGn!oH8p3ppF%R`%`8uzY=I`V8}cVtRe@W1~U+qUA>9KkIFu z{1{nhrUe_PWAD6?e8kVnf;aonCM{$A4aZ5>V!FI5q1zSNO&PtGE?rmC%YVX!{#@0_ z`XBv2&Hd{Q>YG(ht$5qLByHmwXj!Ke4UaNXLf1f(%Z=pF!%LSQRGGPy`R7r_fz!lZKALSDXy$(S$42{y z=)doL+i1VtZESQcIk>TdaiAcfCZpwjqv0DvjRRw^G!Bd-u4&fc)PE z7CdtxxU~1i`REjtW@;$YNQ{J*Rc@#pRkBHp zYmu{eyE=zhegt;$^2tZs%R)9BbD5fQaLY*!z?CoLhMOL-haG^se$_?;G{5 zvSaV-^scgF@5}YBvSaTRdRO_e_eFYF`LXxA^se$_??K`fvzOFy)nu#u4u{H`eCp5O z+Tl<+lTRro)Vl){eH{*!WB*eb_CGKGR7Ui@!y)*SPaP%S(G-s_)53px^nJR)_%687 z_e=}-=~j7}7T(jN+ulXAm{i24LFEtrHuBV@>$#|Ko$bvobRD`re z;L>`~-*B=SKRYu$_vDlQhV70axz_VWf5WHi{Onas&;4|H>|PPOFN)poirs_Jd!56R zd-D7KhI&U*?#Vl1_oCSS+p+ttvHMN2`}F9&jx#Zj1vqcObmtzsF?OF6yHAMT_d4CV zE4lEy%Pn*!>SQ87(gu4c|3; zhx#sEyzZ~BC5KNUyCOeEh7vn8*Tw!4Vw)r(LkivLp#XRMVXXKn(#hqYQvSu_gYPdl z+7B%5v+>BzDdEGweg}L9Arl581BM_MQt11J-#9Rex?SRMgoYxYh9jrOAg@Lt_jd8` zZPNUXv@esV&m?5@FynypD&xSQG|7$h$k0b;oND|h|EUKZ*Pq(`=)_a+JnBDn``YQJ zZh!RKryT2MpZf59f5ZNt!1ph3<{|N0Kjd6o;dta$fBRo*ricIf+BE8B?Gf!C2{4wJ z(Rvkd_fjv#f@pDGWcllVUgU3|ZT1R%3wb}oydZQL_!4JfN-r0&V*I_zhjV}0pHO}S z_m};>%Zs^Fzw+fPo-Y5{il?TTD}G+yNKEQpF8`EA`PX-1-}0^8M@>vEe}ntXiT%po z<1SbUKiWF&h95mO?P=b(0dpevoBWRQ-P~{CZg5WrcADFmlJ%o4D-uR2;Z#F)W-1kS>DX*`{o_UQfCOKgymynskr;Xv?&%ja!o^@%@e!*(t;LK8)`- z?*2vcE?{Q!?FcZl`8H?86Xi~D`UPocG;T^B1)LN78^ymLQ>UBA^Sj2Uy1}oeo==0{ zM7~c1*3U>kl=PE!KbhPJ4C48v6!R^MZ~hgV%7=P3O`Amhdvo6njYWq9%FN>4i@U>R zOfk?A@Jl&R$iB=)@X4Z&JGQrMo*e#=_EXHAo^9WVZD$oeVb6Zu?>k_o1mF|zv!>DT z-1vN7qy3Jqau>0ce`CKV=sn-J+kQ_n8m9UDrLUpm*!tU~IDP0YBgK0lP8agW=|ZC% zMxb%Y@J`)m(vqQ_dQ`Dtc<(X|-+sQ?x@aM33(>_mleynM(-WBQGkq@jQaV(SD>K1= zBE){2D(X}R&eP500O`DS)Ts`fXV~x5sf_=A`<*(K`|^F)+wauLGu~f1aY>i{x+ktq z((z`*)#)|T*>yi|qCw%Ha&$e!bx<CAu3{P_>|qT~9YE9XS@t9}0`Gjp1r{eg!$f{o*~ z)=@q+Dt-vH;mzKK>j$aU}0Pw?~hP4Z3U`B=ngc=hWK_>TXl(QpiX?3kGp zxExsb!aMthFY+BluW3csxq@$QN0Rq5)9W4NND4HMxz2YNY3q1z-D5N~kGbA=xBdPr z-hGRGt>{1zWHozk1F!m)_*&Nif1}Ybm2|1JhfV)R<{h@~Eq?1u>~wq1@midoZ!#x+ z4LaEE*q8b%orAf_>q$5G4BD>D=<96_84Y_Xz} zZ?-Ww@L%&Qe5;%n1qK_Q!1ctJZFDd7c??IOzrz#wrrFm!{i;W1PXFfSAG9tRW0g4- zT#mAKB%a9Q`TZrAZhW6|-lv=+;A@w;ow_{cNcXl9xZsFk2L7_-l8rBu?q$-wzvQaU zJO_!Tw%(B*IJso(#_iB_J2Y)uGH&Cbj-rEu7G?Gu=u8jzoCCdModW~oje*`OM_S;m z>~X#phZ&gT=~sb^4wu*E za0Qq*dPh2X1-2Mo?`CK{hxY{29oUtAt&e{JJ51LR*TJ}Wl7FP7xZ;O-(k$V-(51SQ%(>I(0dI26aPHL z|B<*=+V5L=pNece9`ZLFrY`kniuZNr1>WO7<{Ty9_Jxm+GxopppIpQcKK_Zn;m@Wc zFcBU-e$e0Wmu4=rxA%C&-|$-_CGaxe(@bYzJ!PcRPA@|5vG7kDZSdwCgZenV)!_G} zqkrH%N1As}s_8Rm3#Z`A<%sA>w??iW@oeedOIyS3<~_jn0BSpm0u3^9A$y&O1|ZaBAtiamg26cW_#1`MCPjZ zO)$NYqu3tinf`{$xXKw%Msm$d;GL_S@na;HVq0RLcw^;KGpz+&Tu1?Ty zyQ(%k%lz>uHsMy{r(f>w@V#z&(Wm^rBgl8DQ@AMCw!7=5Yu;PS=d zi{gWQmu4f6IP1a0c2D0nu=`w&%sI}S`T*^a?J&G|8+`)~+CSgDj4*bo0ohSTeckX? zXk27X^h0m|=6W-|85tA`g3Cy=!#6$O@7oFwndH5_x}tQ_V%ai^588O-TQa8jU^U-I zQGQ>_=}Y}2%j+roIb`5rWC-mZ$cAtI3CnU+?nvbLMwdW{^lE9Y6-fBzCkn#RLN;GyF@N8p!_uJf1ru_Jhv z=61@)IlO0oVRp)-T*KoX^@Y(X|GmWAx9vB14sW1!gyE}WoDU&;KfE@-^qb`0N8D_C zJe$w^i8HC4`Ewl}@9{HzJI96QI9U!(z%zZGk-KuHK@Z`KjSRgd(ZcxyGZCC8md4xA zRs(;;7l|8J)3;aCmx-^3>`4xkgU@mQq|&YYxBI$mZjHPf)W;sfl8hwp2csRn#4l1i zVI0F=XOA_&3w$uhXn4PpwR$5hvYc24H_->Mf6wfq_l{0_e=yo#dfC@^|MQ`zw zXf3*|>Oq&SJ?K&oUF>r0GX(50PIUfYbbhI5QwYpy=$1k5cfo6~1N-4P8{-My<6&Rs zNcP6VUd?!J(~B5dfe)`ReeV-bTlI5dGaEwvRxWj>sjn3!8S``KYcBYEGB&2x5&qJ| z?G>dDQx{v$y6a3*XM0NL4W7|CEm0d^U0j{Z;KL7dmgOM-(YewhPa*@(EV>07?akO~ zXJNCw3ES;V{JCeaXEDL@=XPO>l?}NW8N;5B`FCIs_F+pZWbT-ks5oSf$k1hlr=FCZ z{CZ>l&-m{~W@J+b-E$M&mMt^jik|;G`62&~Qet2tzfL@XT~9t;?j--m9{geo&6OM6 zrl)yiU$Z(udut!mv*`bgEB#ZRU1l8EtvmAasg;MO{G8`v&IJ12;0K?PO;u;yD5mE! z?DR$KO_@ah)Opoz{7YBCD^r1;mxx`}l^AlHNzIZMR{S#4)m#ib`neU)Q#c(&?tOae zze5)@{K-q#`;O-M8(KKC6rc6^t$k`TMnRMQT&#`Fzq}vuwD~py`IXFdguNqKj4k-> zm;Hp;;gO~hp;wwN3w_l0M;pphS8vE8{RG2P=IL9LvAStY=((oLL%Z3VJHgRESjk$z z9h_~RX(R=mThwJKqp%02L~5bWan{~HA-3O6(;M8x zd1Dn0Z*b1@p^Txd1&+Eu^QLObn~Sc}m$`hsX#^_p5iMjb>|i_&J>6Kd<7MtIbN|ia;TwD3P`N{P=wGAv*|ury(cTr{Sz|bZ4{ceV@gwl8 z0ncB9=TqpPy<&KBPQZcVT<-y|#xNo+wB>G|o$wUjnt5&(?$3dH4flt+=k33Yn4KxX zR%loaO(kcX*v=~rXQ;2k84}LSbDAe&e-Q4yICtp!U)St-Du&;k4^{3E&ca=I+xGLX zf^Vjg8d*+XT17jezYxRN6RgL+OT5@X4bQ82t|LDC8ZP}Sr2WeF=7xOW^Z~d8_l^wB zqhB0zY7BCx5wk7$EOC*aGgD{o%=V8uwzVb$IUGo`=%ZL{p2%|A@vqbK>9@OU)rSh? zN4|2BwN98vTPbegr?;B$u=deM;}>cTXtMmKU(IhHL(JmstVQ0#d71azcX9PCe1CIj zvUMJ()`jGgTSi~bWxZ$>zVDmxJt-LO54T)ugyq9^L8Y;NFZr8T2i2bGcz*&r_M!IB zpT5gPrZ|u-XYZxA&-ng?b&YRP{%o%CS0z_(Vjp;a&HXFC)8@|0S4@~@SDx9PVSJ}8 z$649no0Q*{^VT(O*ErexvB%%$dh3C<682EINL%7+dr7nyNF6)gzNT#sG27)Yuoisf z>o;JQ5x#nu-}feV`vFtTuzW)H(H?(&;A-pammFxQZ%0^nZDOq|XQi{@M);0+0oB%}Zs~&g*t96j5d1)&ONHLA=TtlK<6E-sCF-SpzVh=f2bO&41;aRy zPh7I}x>CMLZnA&)(a)gmyU@Hude@PQt3M~LV)mN&_G@4DpD6#Z{$IM-YLhvn%l`H7 z>KFMgI<$P&@nQ~eT6aHbf)^i{wj&zYQ^f{;cn|ZyWDN^d9qV)Biv5 z?!s@NBsc1VwF^G_gZ=G!{GelgI|r5TMSL2EYAug5PKL1e@A*ppr`LT`^~0ZN6KAPU zwd!iL`Wdxll9&Ioqc7yTmFpCjOJ&mbgG#R%C*R8w%Din@)c3NL zcx%E(e)TTSCs#U`nGqUPof-3ax_4ZT!*%swVA%CvNBMT$r*f{norlv}$CdoDalF<@ zkma3lvGsSseIj!l0o(iMfLF;cjq#mjccffx!(S8+pBP`A@X2ezM_W$LXvyyS{mG@TOuj?u17=3m$sz zT<~k^(FV1~6c?Ml!qP7JaV^jB@*|6~&n&tgS$iEacM@ar zM8@WPU9uCa|c%lOgf zaE7rj2Vb~fj14Q@reWj5@|D|+Z&V4sD?TIYL-hglaxs_Mi!aZFT{)4QtyLL&@!Mja z60rPNMl!d+U(m~){q?!*6SC>=7PiAx5u?5vOlej^&t6ixt0tXg0E*E@ z2z-u4C+*9qTRyvOC39zB&hYW>TjCjFoo|4jp3We^H}BDSKfi0uM9Vi%cn8qOG#6?G z_u&1dJ0j@#z`yi1JH?usRy=Y6W&UX&9LSAKm7z}<;Yp5QhQ!=DYj zstmW6`P2+o(q4Ry-9udHz8_E)d&B3uIA>CEFcT;P9A>f?FUUTES$mN~s$-C6?Lo-n zzH`#R9d6<)sO-X|KV;P5&v+ZKfV;uVU1jAiDL&Y;sOWiQ7H6gwuk*1ty!O&D;VRCc zS=q-p5Wf8CFt}9L4I3SGlE?U3ZU&}nS6--q zG~zvDc-_WY=j^s#@PYJI#q4?)-^9P*hxD!gvizX8RYiH=F2t|V1MlRP=8c<+uSx~JY7uyGuIdfGCirezerwyIw=En;6{oYWi@f3G zH@A7r#_?X)z6@`=F)nzakygA69)!p9$!p;P{!!X}ZDSYRer3_k=P<7BNwcp)tE3pM zvWUyd9>GppdGN!vX;tCuAK478eg&<Sm*vz>_3!$08CBH@W*C2j{ zbMcp)huuRq%|hy3zl?KdSnJXJrt%19YMDhlo@JlP!{&F}%IUYsR=-WIdp1AzeOZt1 z%k1<;-P3dKkOgO1kMGz%qwxLh-QZ&bwZ0?Yx_x)YzN1rj`<~=)NXAd~VfHY`e{Y5! zYvwOq`z&=-to@juZZ|n0e_%iIBil5ZC(y6Ym1Zdaiq7+I82>8H^Uo)kCi{@w6T*9j zKUmA0`os}; z&h)mb+WZGR^hx>q!e@{Apqmd_tNjQ0*+V_!h&D&c1C`4;lw*m-lO{!r!3Q*{>~}cU3sY?B86wJhiO_ zIk@@BF=5Fa@uu{u3$piS$X7J%yt%Ez;STEiKJ?F0SC_1kKcxM?l{#lSjrsM&@|E53 z6#cz!dH)^qr=DHm+W694_k~X)V-kU>KJ0*(pXA?r$eK(47?m|y%$pXWQ*Iy1x+nVX zCdNF;wG!gAxHyMOvaJT$c9^pEU6LQ}DbwnfBa@MLUdcA!=8c+n*D)8F>~@E;-Gf5~ z#GmR}_HD7U^XZ%a1TWStpS1&D;Z&W4C7FiLa8PwDL)VcXSdewu&zu=`>c`I_gPUl> zXkBNwP2Q7>-OL@5Y|BHZDMGff5HhRo(z_YkW!uXLx$&=UM%I-w2DwjW>a4gEjJwv@ zy=CV;;Z48&LHK7so*&+hj68-z)=85HutDH4!`KxG*lir+1EYu*lOyRzo`!UY7m}C0u@8DeVWu{TT9GhVf zn<8@NKt0z;;xODr3Km>5=I^?ju-pnG%)p@+Ut~11%)uiFr3rV>e1lwEmh4zzf<35ikFX z-ipb8;;>4lyR@elxPNOL(EOzq`ZAtHmSKaKLV59UC&%EjuSxsNPGp1AB&C5L)SrXz zckz8L&n?cex!7O4b(3c7$i#N#8nr5;g*C;2@X;vpoh9ozhxZHO#@0G#wXIuT71~CB z*v@#i48GU=&lf9SdXL(?$1BS5xh(UyFU5bl zc%oVTulPC_4|P=kqwe@MOZTl5j7y@=OY}T6`uu>N*$b#NKh!gN<~#3`kN#84w~`0Y zv&{)_TDr2M4{=C(b0u)~;&O6z#f!A}HyPkAyPNE6@isQuvMM>(?{FWZ{yp?HuR%;_ z#xUDHX4}T1_K4_S6n(?Vy8pTMOW{LS_gBu!Qp^a!mQ5lH8%GneL$)LnzL7mg__Mcb zR2%kZ?Wq{2Z_NFR|3-a&$o{m(-v0XH-hJvH7EPG%vzK_A;(Q+AU3RH=cn-$srth;` zIv&5Dy=hka;XiEMu?awver~l-nbAInHoBemx#JCowLe*V3?_5#f%d|dJTJQde9xF+ z)8*4!^O=wQ+M0)8Z{|!Z*`w0x7IEf==56OnXO;WB(QvMR9g`Guun+Sa7jWIocRb8{ zh&Q+>5gU_}IG&t8umwEedCm0-#EZaU&ec#w45fQt^fxTf{0kZ$Ca!(SeeeqWB6?4Z z(VJMM);G}}`yh7F=w57sh+DBA8nfG8B5(D)zjQnvwI#9UaJ1ub{6vFKAY=B>S5-&B z)E8chuiYd}-NN zPCfvyvrl*v{>UHe`4Y?4GCz+w0Xo)p5ikdFY4SB zmFs4VDy7`oUhoMxz58cif-jEwm+B|nXSb@4@x0uqzLa{3S15CS z5SglW)b~!Q6FP#i?eFOU~_Qj6mYcXhq$%XkF)O^+uK$H-K4=WxLI?t zd}5I`Ei~5WbTq6gMV5MwFFu%4n%kzfFOIdnD``+D9Ubp{?Y|3tAB>Li0ChZxKA~~_ zF!QAf@K{Ejb~^f=sNMb8hIF&<0l_so+xcu>dKOrs)ezb-lXIf?F{Vv)x|&4?@zx)S zp^<4gwi>PM3q0NNlG4gnuC&@uuKIQ_Bcqd-9*DL1PbkBNr*`};Fe~4u{VC%w#B_kR zThY&FDg7&IJNRy39Pj3T&@pR=XiECGNnZlpT&aW5mlS)--Rw>9NBlT88(4~!#DA+y zyNsKFVari?XV%XIlRelf%fR+y-CfapJf2n_bjW>@y?ra!YHh>DOL<&58Y9eLJ#xYA z!qr0Xw&w?qu0^sGjcv4vV z=ycwt7x|;TM3=+=HomVgZ?^HRW3Ar>U-!gM`|y>=%N%(GbKC|&izs(1&@WCvL4>ZSyo$cC*5c>yArp{u z?qXt+BsFbtV+Uoex-JWP6)i~&Tm1xHuz4SuF@y76i2G@RgBy9qnlj~<5j#@!4Pei# zn6q&o7VH7iTa1eeb?0Nkc)L-#jW~#(DwJ|pzYgV zLfgN4o#ObXKm7B*Q76U6K3{BXTcpKCVPDaI#D zpJz=+eMh>7XlSD6N+)Ti50p&APax6QE}ccXuFAirzcHqB%mqLC|N6$XwwG*J0rUjv z;2J0Yg;*&&@j>w;Q?383&+G!O>QGD_G&j5--Cg<%=P+1hN)Jj$zmY!sC-$r_gxK*-(OPvE+DE2E0* z*^P-0GV4C{4qILjdvJZD+ZfZGwgWo#j{9PI#}B0|Sbb`Yr7Ku59w=5(!0MDwI z=%#jC4c&BCJy!CpxrJyr79CLa_*dde#OsN#QCDPtlvO?*@G2#HY>HVUoQ8<@XrbK zTh(U{dYR3;s&j?icC`PISoqQUJy%TP?pvM(RtQJ zbyI5&*6%1fPBHyNIJ_Ri!4D29yO^>`KeJ*f^T%_W!T$8r8vm3v__qCAcYNC(U2|y4TAr6NPB$_hJAU-ev`IgD zcbejlv!-S3qc`~Hj~lPOjMu(Y;vF+aD~5M&LVjDojE>7sz^lc(#y0Pxt+hti!Wa~< zhq)K%{OG7}iR=rS%VjZ-SqG0+GJmmkvRB@Xp7q#M{>m<4$Kxqt-V=oG(!ta5>-`VP zqTilaLtoZ6^_@IyeWH8MF<$=}AG_vZ(0m5{L-VjroMWi}nlDLL(wyn5H4xLW%Dm(Am_-C6Uv3nT}jhwLADdXAgN*?6mdh1Atfr}%LO_-CE!*nUrZ z`I<`uOY_L8zg0f6NNGWROEovZTewmdDP?Qcc*pGn^W*M=r^cD?`3-S(2?Ql`;A666dg$=Lx* zsyx3Z{+XMYAH>{XuM={Cx}r-SC_`@KEv#5uh;CVkEY$z)*!_31Cie>Z{s3%`pTP$u zza&Nj^4A^0$}No@TjY~<8spgAP;sq=z5!IK=e z-DiC?W@JRlkgdq&<~GLVOtbHaJZS234r$Io&phfF!r5PYH#9j|yJha3X%2`C`psh- zx{p(XI>)K|W8>7Tj4Rr&oy1(>vp&dL_|TezLrc;4b9h4bEo&Z*fA(jl>|SQ|K;rXg z?p#TmyP?y430g#8Dzc6{8i&F$=aU;=oK z!v|V;X3=+|c84xJQ=z4uZyxO@`;yi(o}j#*`I*z4mH!m_1Yk zWAD=QZ9J=tAA+Zy{(G_Xo4)9HaV&LHx@E|(vGn=xTJM?*4XnGFm}7!Fn{S^nw;92` z6rL|*yl1`epbwsBJ*e4rrgoL$GU;qt>7K738-%B1ND43{3nVWF0%Hg;G_I=5?@^}u z=11rm(laOUujiO!%Om#=d_=b3LxP>agwLhZy-J&FobEY3$ame=84ltz6W_OOz0vNA zKbC!szBrw`-51r?e({cMpZFP`&-Ue@&DB0pIk8|zChcX}^xj&q<6Y`sGR3=N!7n-2 z5#2=ganVG!(Rh5Z1)Xy(K;yHegS(I;j2$QGKT-WlJE&z_Q`$E5bJEJTCVjDc8C^Q= zW3e*+oie0937%|gAJO(M+8mqe31jPH8_sFF-{Zh`pMagKH}s!C0AL?0im}&5z<}V?1)XJDmwLfD5{bTGOp{r!rFM(g+G`y}Qj+_1&{}*hL?Mj^+n zji7H$DV>YWC9!$#na!(K)2EbX0^?>7JJJO7>38W*fmFr#_eS2qFC~CJSbeSWV&ldj3e&(EG4NG7eKT`CjXUfMV@utW0-KQf}0HD+Rn1<@<4zNPh=k%AGM ze+hSkzEp$${nH-vFVSJUWEniZgnI-2rh=O**~46`DsHaj2Dep1IdfrQsp3^xb1l{t znQOVNxz@FmNg8~Yh>M5*xRU;}4EPTMdpYY%?*UhBzE$JAH+rUbk)A*57^8N#+LSaQ zWJ?wDBo7@u;s|ZXV@_i0=gZK~r=p*KfQ`-8&$ajD*XZKUqMyI4JNo$+^z-L=&R+4} zG-JhIrcGS&(X=~Od^}D2Pgb8tKW}sxXJk_=Ohuou>}bq|(9u_;qrU>rP}dX7(9_kP z#o(6)&km)|HOR!uTcUgZRKKItNj$lkc4&kL*&h;V<(W0SX0?UJ2l3G>Z+1LBhY_8>;I{ni(?2t3nW*x{h`dD=c zok#NO%%Vd2<7E0}0sZqv`soeWqp!y{?67RZJ>|7zv>U$;`9n>ToW@^M?MR#U6E7Wh zuFQy+f3^)QZAq<%{e{hW;Gy$xXs=KOv_huM^5WY(mzZHm$ie`;Qe!4rad&T$PgP7O zWE|+%6K;RfOBa4uY=b)ClmYJ0?p%H{Eyl~G#A>2EZc;<3~3A{t>TKi zre0;u*=vY%6rz7fx2s{!9^|mLMd$j18?w!NV-ajh4*Sg&+cYaRGA)`8{QZO0?*DgP|nknA6#ajcIP!xsZ7KYqN^ym&wI zO=H|+-0d;$O=8G?x(AyAm)cqKdIe|12=~2TY+9wU;8W+y4W;Pxt*lM@&6OEVecE2S zADO9jimMJ;_6F8%2i47?uRX4{b^f{1nRiOE$3%fDcV-2m4UxFb>IoO!x|paK06s{pg_juep+V z_>Y>$Q?DuTvf81FE17(cQ5UV3Yb;Z`H)81&e^h0zh~YaWMkm!%ZFgo-0qt`m?Q{cu z0N$Sz<^2w)gMByMQN!n66-#>t}J@0BpckXO6WcfhqUzvpd_%&=Wx69tlIZ3ypx6AfJSz61wPj)2e z@$!G6pYZ(<_BG9;^uLn6DP2nP{%XpJ=cN_@5#^-?J>#j>-2WP7+j^4x2;KvZ+8O=y@k-)2YyQW4F%>`g2Kipu zW5g!(<zc4f*%Yra27IT2C&rzwtQUx z4N8Yj3A=V>g<6?+`I0=L(xHjr(Xmzs1=)4cOlbOzHFor8?2~*r*S~Z5$Jnw^V^@27)JCng)%%^i z+kK=J-qyP0x%5r7QB?wc4H=*`C%@=;iFKaHW@O6`(NkK8_d5t11Tts-=2-i=7gema z=kz*XDk^^l))i3ZAg^)YO~z!wU=7xq_h|04pMGgD-qdoQoYtqTIeGiPzEN8Ce?AT` zIQa3(LGOL+S~7W~`^=5&a?TWlOk#rzZcm)Y5hq3V(w^TnZvHJAZRtUy3;q{q)X{c+ z8a?!PqEX=U^V7(ZxyU!oKkfB71HHh~JGMmE2D<&5b^d?nqPM*sQ-%G@=Ea#k=>G4} zKzhi1@K+Q3H4y$HX7T(yWT523(Fe}OUjyp4kZ(J@#rbpXpLwvGF~1JLW17PvLv$w0 z8~UepP|iJVcKM=fp|bl(?>iUIoTaa^?pTWtl)VOj3_4|V##~xVchdZO2<_CU`4#2$ z)UnR3PoYmB2c%EE5Ywl|GA4BCQ==_?sv=IGLXYdFPf3^RS=Rpq_Ycr<|6g%;{daNC za-4`Cb@sU~pEwiHdwbQjQUA|k`mbbl z)DCUb7a7jTD#k^fadeu?MPE>iYmGUtqmwFL^=bT&I%FS3SE_OjY+mUcNKC!ST>0x{ zCq4E2$_<)R$zIZQpY*LRKcTnb*GB38f3nxpEIY^Af1^)JC*Fjf+73R&_#dgv`G3@R zj`qXvy2V@Ba1>o22m8Q4{G?A|`_-P3cJS<8-r!FA;ajot?&?wA6S4B<(5Be-`}wG+ z=5VW!8O4samwxY&9&S|6pnT@Ub$43+g*qE-Fg~0Et^F_9EjxV?S3;W(hhx+xbmTu^ z*J?r+O9iH2JjlO=tuJL1Rjwxa83<4MdF@gs_j_wj2{lAD=*$&apVa2`PaEPU#? z_E3iWE8*ku3-C|1*Q6w`ze@fWz9hdZk^O7%sjDyZY124yIIZS3!KDtC57Srq-vrO( zoSwAK=kl-hAR`0#4tW!ecKEQJx!CJL;=lwKmbSTFM#E(M{C%d^GnxHC)_6nt=gY73 zR{mWhs!Oqr2ws5vrKYtt+EWh4i;F>?>9po=cNy6SvV1Ur*+5-Dyzv z8EXw$m1~c79RFDJj}f1;Zc2ZW>^03^)*0o?#78GPEZ^vNm>cRW2si&qD9b}EUY!$C z_H#45mHyq6FQs4j;j`c0)w3c*SZ<`00P6EtCHn zZRtWE()#3PkwkYrAYb1sAYS6kGYAtq*dxZDoVobZpMOkXS%lS8nha@P5+D zkO$c{!SqCs6|>~~gFN1r4PVYdR*Hw;WzFsl_~u>as)p9j;8*O@q2i%tSaY9&9h24# z`eeyk7y9ZU_SuAh)6RHt3LaP9{DJ;)(kUF&T`-D`32*AoIgi%l3*@)bl*$NKgh#utA> z9zprU7m4r$anBDZ=6Qtl^N^4AOPpz|ca7w1hr~!C`WuFa(TUV~74p1r_}+{P))3g6 z%(?dd@yXC}zv&LtXYbFbXD?oz>8Y!@o;3#g{2Dj^k>&CK3(cguiaYsFTdhgrKeD{% zfBZK_S3G3Q-vd6ORR8#+PIsV`y?8$0BdhEDrfZc|clws@J?pA|=%IdY>gT0?bFJ|z z(W>7R>bIKu1$T{T))=OFw}&}>RMwdR)iXprlaO=4>{m02sH@kmE3!@X+{~C(L>(vD zbwsXpey48BV|A-%-?GxWs83O>KC7sY{C=vC4F$uSGQ9k6ae8xoOU#>G!}o6RSu)oQ z=-uEwzMk^SaZ?|SJF-)V4_)A@_9SlxI;o|L*lix4J{O$g)3?IQlWDhe<^vvMxy2vS zck-awTxgaE&BPP0Qnt=G_5nk>hV&1s9T-RL2i5}AcSR#?gVn-Kb+GXIZ|0e>!kF&_ws=i+@d7JHw4p4!E$sg1 znLVd1k-AsK@#j2?KcoFGDc1ky(f=mUCs(6$Yj3=0I*+!lAO1>)eB#vq%ISY8@X~QJ zF|eO=2lmrHi2qcl_-g8Z<@CQ4`d|G2dNa8$6CPFnE2saZ(Eob=PlR7HWBghUzkc9M z47`&4N`_+i)tiZR^zl`R;3++7HG0%)tF03)UDjtNhTPO&`jhH^7(cdn9{wt{LN{(G zh|y;R@z+FG;&)m7SLLez&b9h)V&ntpQzH6UI-ePs3ywCerqPGhFGVl)VbN1J!m4jx1wY28@?}ND*s!ZNx5s-OHerc)eY=_ zu3l|Dzp~+fN+-!K^*!y4&ILyg?O#Cq%h%gAyg37z(r+$&nh1?6;O)&Z-Y%qUkNPHe zwS(5EM1S$6c--bo7vqBcFTO1F;BIAo03Wmdh@5!k?^>oMo2Uyq$|&D>Bh^RjGav10 z?DB=IekfUo9+SnIMA!RQPjB1l?7PY{;AI;YYfa;Ad1=W2>z%lhk^!Q<^?p(3yD`V# zX8$ve_;++ZXXjhbqG3*{e|!_Vh1M;1BO_&Rr~l8q2|o?pl}GcG2l@AZ*?aT&D2r_I z`*}JEbZ4Uz0)znBa5M>P6cFx&Np}+v5_keJI_NlN14#(9ghhw~SqK4aa15f(pku-+ zL0UmUk{KNmHkXX3z%X2|vgyc@Q5Lu0gyHu+Pj^ETLA>w1@9*CC{mdWrspqMuo~k;h zPMtb+>eMNDm+yo4=5KmzdGr=*Yiy#e^_DHR)>{*YwVpiL{$XY5ZGDyT(S6mm#(vRj z%@6nIo+qVye=TOMxnB&ijqf(T5950--)*Gj@hy+If^QXkTgbPye5)XB9pBaw@8#QG zzP-h_&-u2Ow3B>0Nt{)toG*=5G84B9YrQ=&rS*<2DXjw%hqr!1dlH`**f;V1=)Q^T zjr|6#H}^Xf*B)e9Pe5FZuSJr133-cn05Q@NEX)=I|{%iZs5>;M)qm zt>D`VzCF#iZIZ^fCyAAcEm};)>+GGs%HH{Qt)k*JZCyp3wzp!lcCuodmZhraqwyKl zf6MUJ#KaM;w{IEIdPm}2tzXkt^AiL5nklyv<-Sh2f;(yNHp-Sd68Y|dIi@f!mSbb|knR z^}iIihVvHuu=L+D3f!iG+f;Cy_P-dnhVu>B*C%dC1Gl5W?Pzd2=6@+}ea>@+9o&uq zw;H(Bz-{_9xHUt!ouIEl(CxO!L7Ex5H531kZb{=?BHuEgY0nsR(Jg6w%i!A#zIn!= zi*8Bd+YG)bjHeiA*T#5rjk9a%mU|wsBd^g;RIJmiJn!Ug3we(wD0N#jMY%N+9}&&b z=y#$_^Dm%V#;2;ku6I?s`)dB3<}Y`kS1Ft-ep~#TR()>h7Ykf@!!2**!GrRa=Jd^j zAGvr}EbUpNEe*k*5nGpQ%4d#4W_83Bscr zQE$6-hou2drPQBbA{Ytn3GE1e1Yd#=!9Y+6iW8na)Tk`ZF#0l=mLlJUQx5Oz3Y8W5 zc?yHPmuIZvUG&a!MqW`WGJemy*g|G^=00L{fX@(S6J!opjE|7~KZ&mLI{J0DZc+9= z?xu`KSW}8!!C0PW>(5;_j^VlFT^Bsr44b7$9c!hf+X9(}FgMf$OZ z@?|bY&isMCH5$K=KUhb*+h_D@pPyIz4FARUiJsv6WVt`xrHk{l^O)J)&ij-hdV7EE zj&t1cL{}`bTS*ME8e?B<5dMrG@TKGWRGmRa8^gIgr>WuoTGf==XI}W-%SQFVr|tvw zeSdAf`-xF~9sAVr^~j;AeTN#|@0s=SJ(SQTqv9R$>e%{s_)q>FgN(Dx6vV%y>$xyy z$P=bu{vBD5+@Gp-^}MIJ-h1#~Y_F4VoY_oG#pY~kj54ldsH`u7Hs<34h_&9pAapX) zUTNnS*jM#I7H*>Lg|vM%V{mECsMIOUFf)!vGo0gB(TTX~nV^zW399uJ*?sX5;t8&vqI*hQ#{iL(aWCrAH^?U?xQn+u(b zuL;q^ea0Ttr|9`gf|ZLG$@e|~eCOV0lQAKCipAI*T2y@7?^0ilGe3D@@%*=+>wM|1 z1Ao!?mLyN7jkRKH3GE0xmma&;$LjZ!_H6L1N0RY-(@fhg`gBc@_TJwUKLrN-ML0@o zqtPW~(6*8I_bqV2;t*KwAEs1^p0N>q&Qy4loV~9#86DN%`+2stUiW~mx} zdvEcH%YHw1ZeGma3vIA&%zrt&R%qu8=PE?UQ!rhvUm<$WwU%1+YUqGChv8ns2%WX% z!|^Sa{rcVrFq%qTdnN2AVApJFHmT;S0b5*WG=y#j(U-^I^XQ^C3O~)yP|$H--RsDv z-z|K9s^IFJ^Q1hx=bU9c|JUcgtMwTlW!Xsp$i>G=&_L0x z$+r7efitc3OVKUwV9w|TKZEAP|4T*yLB`uO^xRwU=@yKx0$oN}aG2%dKKy|)pXhfI zpH+Rtr$ALQ_8-R>3zt>1PM6hz_&`M#^+A8)%N>__`4a}0wE7gO@CGU0`#-S@-GK}l z&A9AN9nu!j6-iq}@ANYDcc6@i3mzVPwuh3@&#VlTI*%gnS{aA5ZT|`Q-hBQIqHJkv zF7J=>E;#xEo+{<90uNt+BeCIg=i46}tPD7HdTGX~DI2Gw&)b+EQi}7{U$=B% zd|p<=r=P`7(^$$ecYYEd_MAmF{3c>bCuPXPG1mI6=(=7(-;j)LkKlQ!8hLwQraGiI z`2%OF^}*xSA%Etsm%s-k9(y1#TjKEt0w+kEeIPJj;`{@FQzV{tAaI(*a}MzDkif0K ztPMQoR|h_}{M~2S%4NVD)Sz4pT&xaRMwvlNB_4Yq=t*_RQYmwVIwUH)U0v7)b%@v> zHZv}&LtT2&z)fmZkSPqm`$5gI>=`d*-iktxypui;1b>2$CpfdY{*FavV?dZOysP&?g?A2eX6`dbvhaCx-YHflV*5uzE zy)<>&=sS_cWp0skG2$a(Pd?|a8AobhnB#5c2?M?>8c2JaIaGMz+stz^ugO`5Xxi3x z4_Nv<2pWvNaCxB6cH8gOn-_@#M{8q}Ijqr9kKaj2}=RP~V zbLd%od;0M1M`%Yd6WS9(2nX-6I`@yUI1f)OaUS~heCJ2GzS^${Nl`J{Cy_DQKM9?A z-cCH8P)t}(*j2ek+qr19_J=Q$oi&SUw1tb-X?In=sP$j8S!=gwy>_0v_?+-6xm)Ng zdY?w@P}IuRT5RPy&J@?+`(us17K^D^O}t89>jkmatA^gh?zP&Vd5rVn(sqHVriZV# zbo%_|U(lCM`ZCzm!GUgBpT~CkH6{&<%L&d4SAy4+RR`I+$LMQFd`)f<`9;=wp0ZbQ zE_@;L&8Ns3GKNlxuNe5Ju9qV=O|#Y;;W?+F{W#t|yyyt|JiI1f)(-HOIQ(B2C_{J^ zcD&b=BjtO_dPmqfGFaJK{^yOEk;~R%P47Irz{4|bzWc+4SNqNXVx^2Xrj5&GEHYgWo z`n$?g8sf1%ygCnpi~TxY`LFFavH#sG_~YERUM{# z9ueKTTaMA?WseME;vPg#{!{ofk$w2K`|r{Ro#_u#jkVw)=VS*0E9X7xH-Ja(Vi&vw zaL&6h2p%Wx@!psA>_>ZG+hJFVWIyjl`4)4&>NNAjY32!JsKPSVQ%fdWhQv)(LUwS5 z<;0KtTR?kQyX~J$n;dqfYDz)D;8Zm*U~(k)sKe8jQcg0w7~hVW`4RMiSKCK(UQB#= zFV3~rZP?YLt~yt(%fEG4!Pje)+Qq

    P5Bo7_vEMW1iix>(_Nl$S3V9g%0F>G5H^% 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�APRSAgLqxr98eErG6 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 F{{bn398CZK literal 0 HcmV?d00001 diff --git a/SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib b/SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib new file mode 100644 index 0000000000000000000000000000000000000000..03451ca8807b3944016c0e896437046dd5a724c0 GIT binary patch literal 1060928 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

    s4Cyy`7tUQ2gKh%y@jmNvhh{yZMy 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 -HN;y=(vEuA~5hNGR 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⁡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

    dhbg*Fky#R(KY)`cJ@V*{j>i* z(Pq4qbXDqCrDt)%5pv>M6|s#7Z+P_k1pC9ow?Vu`hb?;*wR0U(AAR`z6f5O3I^|YL zsgp4NIPgVhwkKJjleBas5v-CV(4J(PPV!bq61Bgnj}B;0;?hZ)JCew_07_3uaxw1c zB_s)i3v-kZEq4-^kkL|6nVBzRaO&4nW&2!}(?l5F`+lmuE!x}XR_)!Py-O|c9=xu`svP-@ zu!8f!sFtrZ`bJ%V(ra5)j;!4)c_2abdhn_Q9rv?QXdruP;t~kMl>V(`_SBmb%+4<4 zgBp8-KXj73>}pgCKLC?lM=GRj)YZQ@nDS92B}zVws#QIS3l*?WCDAJRGyE;#@jtFc z^xz%C*GwD}zcu;Jb9|wydTDdKhj3*pz4I*Hzb?qZ)@oAfCbw+X<|%7W9M&fdt9eAW zKd#VS>9V;U&cKfxI}3BzuE^dVFkpI(SAW;*XQaUKK(A@y5N`AEFdy&V!fEJp!9GiM z)M|~cD?yt(Z-W_jDzM%xe>iiJKRj@z+2S>o;u6^gSBvf|p-%n}HSNL=AWd;47ogu2 z{cvHWB+GFKb*|O7tI}VQSHOJDZ*HA#%zt7MzGz;*V~}tfh1@|_caD`;DcU+MZ}ddA zm>1s_F!zX!^Q`GE<5!JxcUte5Zk$S;g46@Iscbc8ZkPnl3Yw-Hzur9EnDybM{B6l3 zjq;`ActlDkdfjwmdg?Hham0{||4TWJ?;>+1bjtM-d6|yd|ip*4znTe6E^Ni0DrI~CGOM?= z5y_6Z{S`PtNj=J+UrU(Skz=NwK7-P3dtTU zR3X#II!E}zUIY-8G9XXrt`swZ1f?TlwlXYskhVYj$oaUJ;g-JHL{Ds1U9$O@8O~N1 zpSgj6S$iF9?k}#nRQB{Y?*P+A!}=t%75)%8wp_{)6^qW*!U8aaLyNQjDsF(yS8^1D z`HxH$_{RM3Ox{M`6LsoUUBN3pGVy#x6P6Mv%7TK`BgmX<}ss$OF8s}WF@CmM@D@6ea`eT#;@I1)X7k*)^++dLvGey8E%^|V3akD zF>4%S=-AfYXRm*C?C7KTWDqU{X)Og^4M?Lz5Q;1JD@{}$p$`d%z zw?^ko5mYb-;j*OZ*hf!EkC39b%Bt($HePDMqLo8m`6^*}`&Ia9<*VEbA?L!D~V*h^{#&MKhH! z+pqZjMJY+4YFP!``K@ll-zt*EypLJrgiRh(uB)IQoL^6RwL)|Hhg0xoWU#p%#S#g` znZJ&Z&KCKL_eEOthW=-<12Zz;6x2QJmBGsh%9j6T#t}q`o7Y>&H5%&aZ4s1lU(%Ng ztx00sC;!iaO+z&__6CPx%U+CiK2*zMGb@3w)SIrXx4(i%)=D8MBPTY(JR;`QLDPKD zRRAo(z3g>B{3N{W`e;pR7Tg)!WEJ;@%wm7tNh+USBGw2mm;zQ`w;7cxzbtGm%kZV{7uRcO=iF|oOcO0rvm5n zW{S>5$U!3VxrfM^*~SfrJk=kU&7?k^)=Ttu9^l!7@h4}>pG1o%V2Ux{Q~ZrM-jTm% zv6LVtXNttQjR+y-ieg8(4KEtCM6NPNEur5CMkqD+Er0$#45o-7an9@7o|B_IUF1u+ z!i$NXQtjS@^0hArJIx-zoIhe5H@8uWUN3*2kw}?M-YCAqQk#uZk+S?tg}^uwh4gDKly^M^&qIdb`tH+ z-;W|&898`(V$^THHfVo2!%UKE1cG!Sl7T#aL0HZbAiP7q zcnSlMMh^UHSr4Oi%Kent=su|TU&2*ynV#`EuL0noaE_8*lcR{sPz`NJeOPk4AR&0Os>iS)Q|A?>_ddt;vXBaC=x zzK{B`^BkJnVzK4z#s{;WxAdA4G%K{QSP4DLv(l}pS#H=jmAd;Lz*HppK#S0`JYEuT zqv3Up^!SYjKBrdt@;0f5qlanjXw2avAwz zS4iTuvaN~rp;i9y=)#X-x;qzl^wN`Dl)!3K#eogv4F9}X6To`(v*NHQMrR@ZY^VU8|VDzb<%4t@yv@LL*ktPKxszZ1EMs(~cLeL^W zN2dayd#*MqGvR_x?#Ujuv&tbT+Fxhwh6F{s+q3F|CHG`I_hQMtf2z9Z;*RQlTvWlP zMRjI&(=*Y&=yOD!HW0MjUNA@Aj8vF-*huv%D1dalKCO*gJLzY-Us_&ArwFr;x%_g8?7ube)z9r zUS;r^O}$pR3Y<7^(9Ud}CECfhAoZu(S%7o8c22_iU)nhp=S=OKiL+ceD=I)EzB{$A zPWyhNeT%j49_?GEeRH+1Ui;>2UyJrtYTq913u@m%?W@*4Iqp&30_}5ZpQ(M>+85Hk z!P*BAmF8E-UXy&a+BZr29@4(4+V`;b&D6d}w68+@7HVIe_C2P3i?#0$+P6&mp3uH} z?fW0?Ytg=^v~Q30{Ym={;)|V%u1zA^gZVVRC_Ypz=f# zIbM}NH33o4!+o85qbvBM9HV*$7udqGct1QW2xE!~#$OY}iuwvKR*%_-Sv_ijs_q%I zivLwWj_u@67BaabmbC@==$b`>_`#n_9m1Y$?%L33;}HRUM9840m;tWy4pr{umV^^- zpdL?fZ!)fBqJWb(y35lo1>}Jyk9pJ;`6Ag>i2!aJa;E!JC04PAnSn(e8${1ib|-wa zovCwSF!0Dm7*FqtNt}yuT)dVwQ5^jrBw8F-{Kg6yUTCEmJy9GaIl&Q`vrsErZoI<> z>)_Fo$Z5;3%6@m`&roYn#zB32sPLoQ@ges|XeJlcJ;Uy&jx}7ovT@zys%#akdkyy~ zqe|FL)joI>4mkm^*<*)Zoa!9{>jg@aXWb3ghc|CKYaKstuq}I5iJSu)n&1x=1reiq z_#E{tL2A3(asJ@mvd}olf0m&|(Algc+G7iFYmB8pPkn%c5PCY`KdX{+6TRTFOp(uZ)R{NmRC_YV5Fsw7BFTg%Mta1(I%PFJt{vPBy z;k)Ilx{g-3g7v2q7w&=-7Eg=Kr^v?jS$w5g?&1Xr`}qJSHC-<&jp&hB&vC|z^zp9E zF{?)+vK@R)>WyBHwtBG!TlH6#PC-J7XqA>d?!YD&BKj3cNpqja(Kesae4z!E8hOkO zHc;2mo$)0SgFdYJ52;M(SlU4_TC;k_-&Xg}R-Fe>=Ky+dr@Mk9n7oVaCLq-%-<^*B zR#icQzDN{(-y(lg&=k#mGGpb2w}fkQ5T~<+96N4llFA|g29e^bb0SE4l{5uP-xZ6A zDMdoXsyA+82%g_U1Wz$1!=e^{_~P*s8U15XE&i||BGXhFls1;%7n3iY8pHnp*HT$3 z7WZ};k1h;4fEyR&IP8#tip(Mvq|d#K`gI*Rwm@Tp5y*DKG>%(bt7RMMsyr@THGc&T zF~A zg3${QYE)I&9d;)U%`GGY-5Aj5%4@YK29OGzz1I(v1&?D7R4ug_Ve!?oSk@eF{f*%N z&{{l6$ln{m-%8Wv_}%Cd{pbA!;h8dZ#lWL8OVq(=#SRRftV)u3gPR=wk)ArO(Lz*o zVH`Ti4@Fn>0Z@D)R*oe*jNPlmrL$w1Si+r|Vo*~evsNX2vz42BY#qmiBv!P~D2^LNU$Bf$lgNyL%B-a zT(AA;;;4^bZLRj+WDg1$+RuZaNA#6vSqes2+!NK3Zx?;|*b6aHQ*yZM0?zML!CFXV zwT5g96}$X^K7CaEm@60I<>0h~t_hEMFxqS8DM*yg(Z4)fw_>yq&T_9flB~S_51__P zzL}%15Y`bK!?P{N6+=bfl#u>cN>&^fPqspOr;x_}5U1`>OG%0~@XeQf#&;Nq<|ehz zSU|6F1@a*;mw6Bla3TK;k;=zj;Qh-!%G4Z5c4|H#6j1%%(%F3ARL0x96T|QBvwPT2OPT-%}gOfg$IavN;!I4Hs8Ei_|QmQkxWgHlz zpPrL;!8_ER(-^pAx|uoCUwSNd5$9+&chlV?^|r0@VVF~5sf13i+lvnP0f#x?^Zu0Q z*g^eVNmw!|T)cbp7PmZ~qBBL_=abeB`+ws74RBL{DGz8=KRNF!6#`MXRIm;>3I3l% z`RK-R10`MKxMA`F3*$zBYGY7S*|o+?6ECRVP*w_7Qs0NBL1eE(Ir8RHW=!d|SGfm9 z7QyRWb|ZtRd<3^-=D1;v;|2q(pmCgEUB$Zzolf_T>dQSmZrvPf{=5gNBa~M?< z$QBQR+Fo zz2=GNxnC#q{y-}8g&F`wsd4ol2t`Ox6nhph{gdd-*q?DxjpHIAGf5CI7oq zddyJ{0CLlidM4~6_3?|t-b<%*w(vC>Ya@}?)OdRTBxZ9wwSUqcSo5U=26lta>g7Tm zQ=Kgx0|GU2*AZO9j$UL+f5IcesDI}D91lE+O4m*{@AW)FFB7yjjGH8a(`r2xztz!n z7TWaffiysM^Z!z-vE9v6*4MR<$Lb^H-=@*r3PHaeJB%lXCzDg2DGPZ)V=w68Ft5wfm=_vuuUq;F)^Ao)Rb2K6qF166Av)*FWUwtvea>Dd)Uqi(lQFh{ zziTkz=}gTB{$WDg)=cO`&&|IxtE^C0(!4XPVcdld)~N;o_IdVc1&*UY8A@phWiB|a zOuLwNeC6MnQhrYU4Qb`6`4gRGz05mP%p20oiB2ia5=d|VK1x*x>*PpCLywI1@8O4x|K+ z_b|pDw!xq30FQyNm)tp%YCPMk>dVtz6>|_gHL5nTsT6+Jw|V=`@_KVh3;c|s+jIQf z*GsR||9~zCkFJIz0rBN)d0}6(DV}SemyBn3=t09R4h*AgAW~K+shuN6)h_|+I`Vpt zvUItt&voUwa|YivO56hp27$5ws2hA~|G?3L6XSsf2}CYd*3AOd5XHt4TVjRF+NTnX zupMd{l#aL-rocHleUL-Dl%gx0a(7OSs_t*H?OG-&J{c(AQn;fm&2{!$9upK|>?pX`0p9)TndbV) z3By`tcTn*T37Ti$jl>N@{l{J*X{NPuFimeU>P`nZS0vQ&;9^6qE}G#*|b z`N)V5LQN(_6#`UJBd{ZW5h-O!{5Ega#LoDE$zrhC6lpbRcVW)?ZOy^sd{{)n)?1pn z(Cawf_M!1?J$AeFzZwWtFF`|zooH`7i%W6pI+t$ztGuJ@4ywj)VGh!GA%jcfzdKm> znl!#vC2wzhy#_o*0RIud>N}&ud=mB`VW|o!=c-p?ovcrc*`(87K>GMk)ptY(q)EV} zA@%xLY&=}gS3$>o4v{2&C1#2h1{EAMpy{|R5_h5cm?WIvblgkC342QVDnWE!v+?ZK z$Z^BbY;KMHfhhIq(J3DgDBFhAi*1*x=VXF4GK8U#EfKeQBtFhn;m`5+U{cp!PFlDT zWSHu?lK;L@C7M@aLdBAC#`!cQN09x~Q^~^fnc>cH>zCJKel7E07@xvNB69Y7WL?$f zGQZR^+p)oHKDtXS5UH1uGc={eA1bex@0YpV(RkPB$QSGx*v1an1n?#~QKqkeH=Y90 zSD>HFm;ZJ7JMjywY>D+N>k}WuL}ED@mKa=qfy}LIlgcu@rRxFXbSq0yRCk0cl%6Az z7bKNkq05xJ)82L8&>(%Y<#gwG<+jZz*=ZDB{8yM~jX}Ha93`|2uuvzGP_BrIDw|wTpi^38q){OqeKwwK37?6Qee<2*zEf}$=YEQQL5^q4XRRWa zi$b&!^03$zy)NYqgfxQUV-PE@qP^tln&fuWY+7k>ike6gdGj}xKP{rO()%AtPToio zE674WaH48bcb!%`nL%@;7;qVL+8BtPCAD1_{18D=MY@9|SWP>j=k42r5>mzkkTQQP zi1~55%E$}}$RNPhLHcg~Iz)K2J|R`~!uFyUda-Ml-%=h`7_U6$sGxry5L_xW-iITh zyZ&%Ox+^B##Tj!;{93cQQ{BQOZ?9XGc>c}$HUIPaZH7KreWVOofI+VO_vcpJ?j%ke&^|G%?dCBYBf6iXKU!@*9P$)?vO^GW)Kqw1}^f5CGePc6@rJPUYU=DCq) zIZrdsYdn6~4zA<*0Qdd8pXT`u&(}O7c=DnXMG3I{cL89N^bG*%1ag9@T4l;x184IQo%L(Es^0l8Jl=>1gFe)~dNSG{J zzy{08gN5fH5jP>ll^>Q-Fnn`BLn-Ma=Gl~(C`nO|x z(WGVjC*9#G+*+$Q+oF z8JJN-5VTrpqZG6X!i=B-nK%>4@i>5r6|EQAYKxaX;)P3sO=duofQaEzK(P|gN9QSr45&ox_3I8@F{w(~e{`7P3yWw3dqE{{#(Rj8oD*S(cS@==h4ES+3sMV)G&x(7s zTa&7LdpHdL8`9rGKi&{~evS06p?^I5Z%Y4i`n~WcrGEwegW-Qm`k$g7_8p#Yk^W`$ zm%zVC`k#YesX5*g_0Vr^HTK}-)}JW)=leJ#nFC4?k1cRyK*-$>Umy{xz`Fw55n>Cw zaG`>8(QV+)%xd?F#9)^oMGouO*bIfEDHUaCqs}4wP?5&jIhQ zrL-iZID_5^T@MZAb#(5l~I!xO^DgK%WufdKC`Wx?r~G$7zwA?|6(oYzUu`x9eu zRJ0p4Q5L?1^tea-5d;(CKN>e5FWr2(JRjfp8CY+g zkL?xVMT2%BZxh^W`YRAKX87AFl3#thiBG^caGy+sR7J!|)of zGc1}AnV?SD8*p@CtOjiB)?Yw+h^uiGsABLIme}OG);H0cb~8&p$yc z`~>Fp*oDYWTQJ+wb)R&yutOlF5W)q5o{MJn3eEXOnO_t}Y0yXAA#e*0jvFwIF^@k; zueImywES8263R8z*WWU@2Iy5T8ZIWp2mMt&nK3ZTNpicsz^o7XFd$Pmn=_3Jo z@^lG0@5;JzQ$nClAV2cu*ZLpybpF{vDLla!_t2lqY0Hf1Vye*9#e) z#cxLAv3(6{ynz`fi{hJQBd(QDf`F2{+R~|w(6te@CKPrnW|+;g@w2E%+V}xY)fsrN z8R*ClycL0suOV}K_i&*L(KvuL+6<3RX$Xx)ElyTRfWAJuGIyb+AlH`H31&$?m<1-7 zYXGM6ZcI+Ip(~iRHnU4exurw-U_2(6aR8IMDbv{}UBQHNU~XbNx|v{pO3x8o?PjB{ z1(;G!HuPI381~h*x5>*k_VmR$Fu!8XM&t}=&CnBBX~Gx}7~--?7Z@CbP8dcOSKTlP*Bml$^>) zkqPI<9GumJ^A+xUqd|=W31=@nsEoLN^54QK$-xo2FMl!N{Dg3xkZ{B`l#}3yM&&B= z-f^>Mh&|K4Hi2ABAmicTAWcAxhMY7=;LXs%IWV;*7z?!$e|E*F-0($65)PnNVnpl% z=0)z+jU<-fqs0G-|6+9^WT^;whas#ELP)46aSC1Q zxwsIrOoaTEAwazhc}|4TqsJqogT5B}dP`(MM2w(K_(aaZ^_|Dq zd+eKR3m#5tg-2@w#W_gqa1@>Q66Y^83kWW@rV-zNyV)6kWUP4h1!wNzACpXh_8iP) z2!*)=>A$@!jAqaWiU|59>0>V)#Uq9sAO2z6_nEsC5ALDTgi)Lx!ab59ww|6|Vo#YL z8VlKoufJOB8;>2h4Cx;en=eC$Aauehs9$k*eSJ~gSB3e6aIcyu3gxaPNMF%pCH^7g z6VRioNLN9ZL~itQcgJpN?&`)Gq(OO!hgfNSLK&m@WZ@Q1Q?NgUT=f8!CZstZ}UXB)4~3<0b@fOU;=n(6Bc-#Ft41ty3?Cx*rw8Pit^-?hd+;mcRNS>weUw>1eY z3`+wi2|}}aAJSE+csN6qFJ}b!(vo=PWN^ZTZh@e44cNGcz^1xj)hoey3icTnK0+-S zS3Y5RJ0Kw^gdoB9abINo`$K}-mf(O5V2Mg+hJ<^saI4gt3D{wWeFJX`d&PwDc5lbD zDef*bTX3)j-3#cpQ0IJn55)9x^gyY2lX-JwYes`{C;Qcjfdv#+LQi5bbZJ5Gco)%{ z+V$Q=2RRqK3FxCBj2?vXg(id@7Gd-tjPGnCj0eurbG>+(13|Khu_nB7urcyS=*%R6 zBNVJIR6PlK1Wu71Pw`CNA>LGXJQ>KY_h&amJ~e2WsRl18$jPk4Cx8VN)9~;oCrm@* zazu3whV1kbv(qOm&viNuY*mQTaaM`qp%T?bl_)t3P@?KO1ZnWWatOwA2yWyMydNB} zh25^)|04{3Q2QV_U>~s^ns~HyW&kJ2D606(Kw@xj>NJS)z&%A{h*Ql5GrGwN&@V-JH0;z6< zz{4_-J_J(Z2!Y?qK>DtCyvQ)eOSoeK-J`D}&l@je0L$?)fqPYE zTmv_#%$Nr5N*S-PPnj9k!2Kt4Spzqo%+DIQ<7CRj1IL+u4cucg=QVKAW_mYpSIHEM zyXl!CNy{f3D_E}P%BECJu>N54feHr-jEO69@g)#)!^|9BS!nh|JM13k@yO|7FS(D> z@9sQmshI(%nB=|poiNGCNnzS`a#DsDX-D9!ItiJ45MQ2OzX@G){^rBY_;Q>v8>XB7 zA46}Q-%ZH#r0J$V_p>9c7U`P+gTGw(1%Q)tpXxgtFs35?!&o;}_|3%c7x+!Y@6Y&A z*7PoZjriH{TLT*t{M`z70KeS%56{npd};i(LH)O|j2iFHz0e*W;n#ma(-`^tk79_7>=S?zy9|>>_~yp15KAEA{4^*3*;sXO++Q zN5-Bc+>*-nx13;DVmn9~2)91O$2x~$U3nsw0C2Bgzs`09HNfVfHK)(ma5M`8 zW#q$+^T-=($6-u^40Ip7&5qM`97m>K*mP9x@*N|Ar)p?k0(Gi##j-Fb3@uuyLSYR< zBOk|;xN7`45O2iAiyETEz}HD1-kikc)KXloQsVa`M=T4WP93wxD*A&4_zyUZS@@TJ zXp<>&03iZl(51hG6=BwN`c6~iutS6w{bB<|4zO2Y6RPCKZ|L%%PmD=$fnq&_@j+G< zy7{CI$(Y}K;Apn-Of)uKByOq;-TX|iQ}ES-ET?^i@nEfod}EU3|G}&qaY>wa>LKbD ztWqa0I|s#B8OPmbPiIk{;Bc3&8XHfd#6JD`dr?75S*T1=FKVMcjl#P znzShaHhO9liD8k#o{pQ@G5-aMtB+!cXyti=z=Gf^xn54qY`vvySO9F%P zU}CIn^(2c4^U%KlvzRddHb{0(jycYQDeB4EcC!0>_UChgcOkFjCVy)}Ihi*`cG<-_ zF8iq*2r?$=pGpvoKSQ!~KNHHytTCbF7{MH8duk z2&hL6kWN5PNkCwcA2FevnmrctCdb@1x66Kk#EE27|1#Qf9)haaj4*}<(|gQ%Oz%73 zUSqS}Z#OFG60I_^%s2%6e+A1J>`|V!^g{Slu>^w z{qDM>Sz{0ZRRi%v!Qx%!6Cg(b+jxd1#zy?;<5t~!9dIHg8ANRcNklrH*_uk_- zVU7KtRI!dMhO{MzCiKz#WxC(#)jh?^D^71BP*t-5o5cn-b>uW}p~vAZ95n|9Aqq!f zqiDlM0hHZhZWO6>8l5I)7jT&~PcXnUq$lvZ7QZ=QpP;rTesQ>K5QYsmtAggsg%8Yg z=fY0>UW{|9t>!O3j$C5CpXqY`FHkNTEB?Cd*TB$2PTI1;YB^7~pMR}bSC`%ak`L!f z3;p)}*}d{S%8i&nrRNr$BrJzDiOKk`2~v3nv5zwzH)yuKvM^Mp@;IvQwrth9gL2T-);eph*16BLM z(^YKKA8{h%oY36;~z+$KI3h3_njw} z!KMGaK<>W#p~oWx{C zO|}^a;No7)!nhZ2`y3@-15f&%pHRXnjH2J%Bexe*z)h*HT9?L#FSkXCxnIthTSg_b zUV*Gc( z|76$Uv^0E%U!R>$_XJcKE5J1aTn9Qi(}3Bt7ImWXDug*u1lDf_6?p-ck~zBe@F0#X z8<{_{>#;JeKo0e|CwViog~P5weO8IbkVV^rv4GK+bbrUOEKu4)-u%QxX(iqV9iycJ z`jw@AeXJ7`rbQpyhtFHO3cspJBrH~94y#uM|MGx;SIMnKAxuW z9SjY`W~kMtz3A%~B+vYsZ8(gd6X=Yla-i>GVGBe4|UX^eRkp3?ELSF3%L=i5$7)u6q=|MdH zto9Q&t{n|B=#bb8cIcpNnF7?QZ~XJuJg|;;mih)+oeBYVYjah-K}byBkPd?&;Gsg9!8}# zkmy?rZrlMoB^!L&rZP;TUit#A{GwRBFyZf0ieyT&~0?!OaeFhpYWc;&S*zcNoLq!uyZL1;~VZUFKvD zVY1^mzb69G7I_uzeLV7^YPfiZ{@92?L19&#@+6(P9x&aDG2MfB_cp#A0xNT---MYy zcQyI$=lrd{zf zx!~d#WGJLD1tIt65!^Px_4g>?QAV}Mr|lMC^3ofV(U;nh>bnYTtBYZf5I#F7bpwnevbn?0nb?X+)@gsyk;NN=0T8uQ!?8|ljTSa!&>2U zV5?lI8G{UJ^C&?VtHSmLD1KO!UIvTOD_EOm-?FpuQT13GJ~hetH783o z#Fv#Ve)l``h6i+g7gG5vE1tlxwhX<;HEXY54>N4(0YBQVu6hb;$jCQPW{LaA0W z2?5wMK)rainlL<=O}K6}VM(T+?0>H=gY^WLtIwT+CD|oP;;(2T9wVlh2i6$$iC|-P z4A_x)fO8zDRDmW~=fctrraaN(_Smkhy9IirHAx}8hPh(Zo`Ur?LPTrqt=gzEue){b zqfZ=~w**aX)y9^gw%q<;wu7ncEx>+WQGaP!EvP@ws%MIEzc=LmR*8>?5AVKz5=;#C zgzTRJN)#yBO0t6chZCFpgj_MxKhA@!&}OP ze`MdHU)MLauScR}+<;cRFKe4a#`(@t==i}Vb4veJ|JX4aXLfFk;z1BtCQjz=J*|V; z94IyxJ=xA7?G;)I=CTkB-FL8_68xH~qSy%DMQ+psw^V+z4b6el=daeKN3CZLS7<5M zAE(@3of6ca#dlybsNc~N#Jw^oS#PjPq%q>_IdLZO5@xR}q4zUzm-`(h{sho3y1=3N zp3{X{J2EQ3HBQ)`f6YQ2%EG&l4%B4kd)Uye`v}4`TMG_haYqJ*u1^zosaI_OnY9DaI#_sP4Ou#iK zVg4O3fe9$R4<;^rcnz46?O?anH$m{&j16!i_!l^iHvTSxcL4zzufdtNuQ8b++}Vdr z;L_H!Bs260hS?8FE&c(*k$EIxMwwarR*D+2byLRN{!ftLl=r58f4;@y%>9no={?<$>n@TbZ%N9RfPh* zTF1+@05z3gVV!o42@Pe+BW^aGa=WU1sNkPj#J~EAA|R&9zy9T{Tz>Xv?~hr*v1V6dzl1l3Md6w?Q?0JRaj@t^}78w zy8t;Q52TYIb2H)&g4{@uAD<^$Xi6*pdyu{JKw_LSrhuJjKl(TKmg_ybvk2t!ws_Fu+U& zQ)&fB))&9BW=|<&nmvM^0o6Jr5IbHPd0svnz^H(>0PHtNo(0%<#GmmZ_I#5P;!>Z; zl5^C^RiH*fE3~7jeMN;6a@0r{j8?uA)W~vh5x4MAMNlO-z*Wb_lyAjdh880OJrfJ! z|CGLwq!}x87}c!zV2$?hYv| zJ`GjF{nbZBXU1Ou2!Rx~eTqbmb7nWdd>;N+4bQyszoiI;KE4!U{NJYs&xJfQM<(XT zVRodlFpHifSv+r9#AuW4hUstdv}a-Qm5l*BZN^is9Q-{5r87p%Ys+j8C} zJg&2{py55RdS%k@O5zv)tNIq6SYI{P$RUMr=tcYwByJuUOhjnR1r3T3@DnfhZ=z_4FF9=c%&Yu4JqyoJ4rx#`>kPJ#iM1Yp)rCL z5Pke3?5Q9D{9;ZT=i|*siN+WiKLW%gZAQDRrYdn_)H*gL!=&BBNvYn=T=yU$-rFOMF@}0 zq(I-@*e*i8LbNAB5{3w_)7`jKgxt@Nb7UI6ZXXWU^^v|-`li&KD}7(kH>nPc8=*NdGU3s6pyTN4 zPhUk{U+MGE_tU!brSC@iO6zE}6DjA=cV^uWq;Cm)c;OA$80Mij;5W{1-{|K(MjJ7= zUmNUd_PPY>H#Y)v2T)(L`}DsOt=E+zF=nxl2L&n*LMYV%yOJI}5jg@V4;}R>5~zuA zf4ds{_6K;zL)BI@W3aO6>O^r8zd*>IVp^vXUyZch#1wn%_z&>n$3CAX%7~?oN1nq5 zj{E|U654M9sb}e24?l&8T~#}HiVDo0mREQ#-zf^8eMM)%dvgV^J05vCQ?|T7;G;Ot z&g4RRh*JgxP*$+0#$3!@QTnF5end~WnjJu_(c#)$7oLJ$#QjeTy82LOMR=6P$ZJ~I zg_EN@-tcO_a}@_F7m-JYDZe@22jX+u!aZ`BC)`u59-c;|QX?#+=%Y%&V~Zzil^_l; zu6E_IV=Z`Q1rHfXb__OUjp6>(;UC#skgRWNZx8f2Znq8CXm1rP8C2eVdKI`bXb?ON z9(QJcXasfgWp`U#()C3@F`21?k8v4lUKGsoQ;?n3YLTVsfh)`^jqlZuXs@4#fPRNzOCi>Ne|n2ie>*bOi` z>?J(>f?+TM__y2jE&T?mXKBhepSR_&h6_~8hpEWijjv2(j ziaSHtdu|cv&w!FtmT^iAiG1M8Tg17F@g*>eRR<-$RzyB7#w#%xt7q`temkDXad`&` z+aDg6F@jZdh5Mie%UA=Y4hlb6p|5NBS-aBkc*GHPM#j|bVH~lkF;LV_qTQPP01`+n zh$2GZW8>q)te+YCrHEa`SfPqwj6yA!dz5$;B9KZT;hLH7)HM=5akH@r|H<7icoW@7 ze%IqN`_!6kP!e6ueb%SFLMd!!Rv_{0%k;;$h9{bvulsN~sFeAZ!P+yaKgh*az#K7Y z%w`cl%%{~1h96}NT*SisiN~0fTN=oVkoI;cKALGe;IP~20F!WVuw@|t^ zLKx&1xa;6XuG|76BkL$G7h2fHPZ5pqWz04WBmWc}V&63kFeiC2ix?xgG2#josL`U$EhyD3Kc{OTYElU(JcLWlP z7$fxfj6K+$U*MZ^qD1bsw`2^K|+rlr4|E*Adrm12SuqewifA8GGm3- zq;aDx*&$0NSt3e4maQkHVtk4KR1BL4=LBgK5q&6IPqM|}Q;3Lm$vHuSgt#THOsY8JD72BPJ6Xtj1a-V|fL+8j*+-HOhWhPrA+^#mW?pTnZ9)GR3ia z(t1XTnZg;qNmh%*UgR3q`A|LSKXLdkqN<}v8<}l(-CTGCd2GCiMJ4LGP$V$>b`cW@ z6Iit|>t~&1x)V zHN?Wa)T)L|Xk74^sYocverZ-UCMgK4nx&8Tno?akU++T+6H-UVU6&pL-p` z*Ljr@I8xYUmbQ>0_#{#V?hu*K@P$aLJ<2wkp&?? z!6GJT5D8ct*^>g(=OC;g1cC3@W7uRr#{}C?e}1Fu$2#K?NZY|7YgP?D?^a z7~3Frhiw8rJ3(vc;^A0QiOiN%B`P|+U|U}80qevw32=Yk*xJ;QVj zOs8E_tf{aV;3|4=6?YT+-QAk)+(~3!!HX(2A46e6b+1k$mr}EX9_{fp@L;ofgC7&Q zD-X~VbsmB@UW6YuaE;e+lVi%_k8#f`iQiZF?Zj^xV)>f^_a^*G{}Xpe%rJ(x8!~=X zTQ++i;xEDPF1T~~+S9OEhcuo&@|O$$@4hS}#~8+B66c-o&I<+fhx(I#$6@CS>d-3Jtd9fK<;`cMww%aHsoGW0#Oi=JB7Og3 zIM>kQ{aJoy`3b7AmcCQ2e)DHobsK*zbnakoJfNX(Kgo364{=^D>bGg$F9P}^vwD9N zvg=dqhjiuXOsTfu8Qh|KIwZ++4{F6Fatfbhq|G_Kd2UirLvTzb9;FWU7Ka=nJ^8|ipK zyd#?V6BN5|i46spT!>Wq7{|~teU-bhCPSnzOq|DPe_AI6!=!k@T=M&=oy?bCMRf9~iDX8t^ zX`Bt^LiIuw*~P)x#ku_NGk>GZFV0GFoLD-a$BE3(%(ozgT6YQm=knuyNz_~%cYeV9 zRmhKnUDQ4zA(>~UXaP@k357i`s~}A@*wZiOK1N+f1sDDTeK=p871;&{?J7Vr^Dw=CtOKrG!G0 zE$BL^v~n?c(j&uSwFHjfndreKcpa+@8p$ThZm zU=6KB8(CpKFH+duJ`?IBSI^;XsluznA`W8FHh{w0CBMe8Nm+T4tM+Wuo|IUx`vdNS zN@6#Z{{s4IbItx`=)FS!YNpe?s4$|#+YJg>o3Um&hetkq6uO64y(aj~O4b}&aZ3PZ z%HkLCzYV`v@%tlw3G-**`v`u$&`12{evGHPJufU5_y6WgxM;lf2es2$ZiZd(3beP& zV8;@=xPJY5r`8&rmR^jBdzF66MWs-2#^dA3aCvmNEesaO_hwML17fxR3~2{pPY%;3 zT|4~{j(9sl+NUAy3+ld5pEcuz5?m|G#T%6UClPn(o>IT=f+4KFxYQIyO!}FHN2s-2 z(*aMW?;1`ED5cIz%Gj}A$ykm^(4OJJ6W{P8xyY-3Q}JbvuJBPz)CT0IM+b3h)ExZ< zM(Ic&02IGIrc_rQe*Ixtp>e3tnST8dW^j*i-3|9R>>%PwUx&BAX^-6LPmFZde}--Q zhu1o_Yn`!sAnYiLZFFi-@YUu(f~5x>9jU@_FIr_gqz$54=4m2c+tHD7gq_u!DHYQO zsW5Kjgwdn)2G%S4z+`-&mKl4iERWlPh?iE9trA%}O4YA`QmZpkjQ=hrJ_n7?^b%!= z2n2~+xEo!X%lIWC^YnvG8fTj4)aGr+)s$LxBsvu;CRXRSb`9oUD1yjzW<>NxrngPVODXZ3!Z4o=23Z~z2()DqBdc4G3JUOGm9 z^NTqMOh0z{;p~{^xbQHWnus{{dE2=U-vD(`KltJc1F(&b{ia7i>_g$RX!vdz?xv2> zWWLPpI3KqL8#%6(Gs?-Z87Kvh&Mj9~<6?xy@f>=MYgW0`pWMpXEcGXUkV?Bi6b!9) zB4}1GriBB#)=9r!k;*I_qszkZhQo@W{T;uqGk!!9bn%GVB?6*Q z!qwJ|)|Qk{WksMUj|nVhCl*HhX~EHQ-C&y+QKxLE5(|rjR2J=QtP=kfLh~D}#DXH- zgf*P>qP)EJhf~hc+8dY55aHpJi=H{~=;2hK5pYM%h*JHs(fXU0a7t*u@FTX2DcQ#` zA)6XJqBedB#VsS9TSK&B+VwAZiCOToP_usC0>UKBNyQrcx_K?t<1OZJfv(|umt~Y%?p;| z!%5k+V3`bf&I)*02CT3G1hLY*;7u!l4FZf7E1*>dQ1l^zekcRltbnu(pfp3KI4A=S zTLCtP*x$c43YtZt$+#{;IRVyG9YLMG%paHgOdIF z0x@7>Ga7`ugLpFK1x(bevgFFCn5}(&NfXePeq~quS^Y&V0Al-xs-RyldNv7-LLF4H zuN6Ax=i;&r$k)A4Qsr8Jq%fZ}7h?@2^Phto#@+IV@Cj6wEXKPJ*?ntRS>s#;`SnLx zJ24V|-cfOgz;UHP{ciB!eU%G3rDsCz8kkALy+s(s`;Ed9b?#z7Y&9rqbmidt{q`N%PxWgYv3*~c zciyi{re5Ec0oYdKeqgMCf`xyXbZ)ZJ$Dzkx(UHvcf1rN;zhEUa&Yih)j0%Bo&m zPKqu{89LvAPD8A+YAx4*Cz`cKdU^F2SAuuwm5AMrSg*1w#ucGP4~uA>>%u$qDnzf8 z(K<&(jl#}8azDyd;vIS&qJJ-=ALVLMSumpiz%}C?`YS}wmeGIU+EJs&MD(Azg1keg zAbOIF{xesS8vRy8zr^+A9eO9C-7@+mt}Act-)b??Y7{18QN~MLWHME6GZhybQZ36* z#g!*heF^a*n)wn}AX2T!PsQaZQ#G5ZxGa$>nxBemRHpi)nW~RWwKzW&7p_copP7ma z7_g|&Y1N*qS*Ds`rsAqbDq(sk*G4XJnd)a|DlT=T;)PWU7T3K@)!j_R^^a6b^HUKS z$W$L=;>WSNzJ`d-6UX(bd5{WgadQ>CE-At{}7JdO8jl%_(X}n4@dOx912YJ zUBbg2hbJvO>{xgX3lIAbo<)2)u z37zdSh9JVPujL|4zjGF_e{+m({^0<+i+mm%^*3{vu6Oz2EDocgIypJ=xv?D5P3WWI zv>M_EXA3S>{~jUSm_Zv89|#Q8F~WfnJ6Bx!tTD>uRL@Xy#B-po}2`=bwPJB+#{G6VRr`~56=6F#(;;) ze2*lJ&vB@i{ucK_MX7_kGvlT2d?uwDdmxV!;eADT(ftd-xIT_S^6R;phKI{q4pO<7 zhs#eywb+CI-ikUxLdAoVnf;Gs_4^#=5ywIJnqtI8c!QhBPHbE;xd{u@BLn0n93!%k z0ixrZW7Z}dlbdkN+Js|7BmhbjBD2U%IA(3aF}VrHtW7vZynrl31u_d!00OK{I3_pY zn6(MV`p6X4CLEKSaE!}V!jPMAj4MA1k^?IzjBO#+$Qnqs0qn`AFG$-Zlfi5_c`{nR9T zrzs}-q)GNflWc#JY;{viw6!TFTG$jb+r_O%wB`oP-!-*ZHO2(7p%o2y2(yWs+ZtCC zp~D%f35-D{@G4~Dx?B7=h{3LbCwYvO0EVHjdcCcTK7t-^Bgw=V2AZOST6*)nc z^$}Vi#9>b`;|!TGcX2>A!K?%iwbZ(KNG2*VPe|jQHM6r*5N{KzZb5B-`Y*4dXPzX? zz7l5c5Lf(XQ#9f9gB7ja}Y6laO?o1;#6frL0n;s~B2dD+WH|NqtgZ&!OzI|PG>VsK%- z`G%fkS0s{cj!ib#P;+dmi8eqFa>HsM51(H35YTiY7A1w+EIynk$j&{=*eCYHqER|l zo3JB&B4OGjww^q~bR_~L^_avMS}fD++*Nb|G&;wQo$N^jtg*d?_o1#VF&2r~6KLMs zPXv8~1$rc1Id1GSk?!uUI*H8C%|+Sd(HmY_ez zOz9c-9zii*rywR-L7zn59qgaz%kN7~0jVgqIM6O|-wb%@_Q0^AFstO%ACP$2E zVuk7Z$@GF7LQ@}0T_74J2!60UVh(Cx>BLwns|LlIiU5Sm{};9q)mSVcKc5Flz^|8v8_%W8V{)6|ZnQ>pnra=-7!o|mZ*nQ%~K977R;S^d^xR=e-Wctp@KD=6W3 zO@rJQZ$;gQN8lkX!B~}V#XQ}FW*J=V5=LTX0XSa8djPy{dMuI}^AX3O$5gv9GnWo8 zN1Kds!f^nAjY(#zC2FA&v~m;}9=L;&q7=0AlUVYSW`-^_^gl5w3lPLta0-5+fs`_4~DE^1zPj|+S_EKuLB9?|IEA>{mpj94}i*^3_0sYYy1Yt3bh*jKgQ?$P_ zX*L;jry^g*lR-VP0z<3Bp8={-qhnm9(90cJ21VZ_f&=+ z;B<;Ufx4P&T<{TEbIm7+CQ1rwf)VvlA+U;q13_+g6>bzTftd9oa%AVdY|WDY6D zgslkbPqR(#xeLKaT~54|P0@<$SB3!(7^*JGgf5h}Cwp^fdw(a@#mcQtl$?Bp~lW_o1wD38t(-QxabQOW;0dHn!QNU1FRG zm$KT#LIVBZHn8R|_9&}1Ykn6j6IXMR>a%b-u_s;gIhN+fmY#x^V>_uA*s0ZNUVb0r~UT?S70yP*8hh|8gT zlRr0czFND2C_-7i6*?*C^c~tYImBR80XnCLm{SJVu|M@Zr&5#R_-VT;f`q;QLNF|4oT!^qxX=)&g{y+To*N z%(##=j}_ zY1SR;lG+Zx`x_-jTQ#Wm90uyE&PgRaPPe)|D^gfKoZA}lum7$8WnKABoyd^hIFB)FBDp4iou zGO-ol?#Kw7PLKAh(cifC7PI&-mf zK6BEZ>VWwr#vc$XR-j3W>+rkRQWO)p91Dn|8RJ*LjHlWSjDtsj!j;uR#05*^V(}Oa zIBj>YrR+wj!GLfXavmCe0EI+EoIEWAWAXmnn=`{Haa;hGS{v`r)t9;0tKaU_#z24f zP{8h-o^O-$WO7AQ7_{~PfH~wUDUIeNJ|NpfW<)&TIMKA z)S1_w+-u7i-w&`T;L6;ENKtt<4{lLuHs8ILg02X3tJYE&l<^}{)SiYg-D^ELC=?N8 zE<&WJ`a%gsRP%n3kisyfrc{KlCCl7&8eac(U_HTrk|qvHlo~starLh1zmPdX^8&hY zJJZJ$(!tnjJB)YO50X96Jr3MUb3{jMq*JGIoI_shY%d6cEii8mW-Q3~G0_0$Tn z=oBqMI=@qNhuv7zc}IE_>YStObIe)X6y;qc+H(N=CAPNo-{2FN+^_d6f1amp-TgyD zt&uaKC|--I<*81jmqX_b{mx;|oC}8-PuStt#dw_t2gjz#ZpYhQ+BJ?GrC{v9jiSXW zi0d)jV8@aEY1-$;FM=O!ey_%FJ$?`4*N)$ZAeUC*w-LYm z^Jtz|`oVk#^(d(kwZr3Zgl~aw650+HBs?i!WFH<~vo+i!C#la|;MW&Q?r=l+5|bFq zMJlT_Vkot?Hb*9mEml@-AZaGqhnv>tp+k`<10}nz=chOX$DE}-E-=XAiMcJ@Enw{p z*DrtPD$Uq**yHM;J+A)Bf}TL}kW+*xp|5n{T(ULW)}eB%ZU^N@Yg|)!j=o?Qd?D>y zXc*FZ0^XfleHXSZAq-Hf=ea0)R31tq5v;f4{^w8leqk@)5D#%jFV^kx5J4|vicZTYXkq)@t+cW2X+&^n{jEdzf$u{ zB;qDJ4{gyl$Bux}{|$o5v&IU1RA~IeLQa1=VOtYq79bu?&wd=@Ps&Qu=kG+h6bx&} zf{9_a)szjx8afmlttX^Fe|4JI3@v4Pyv=hTbMJw!aGpiYynJNSO#{(Vqzu`qEv@8o z-^<*8MD76Ipz_eOM1nGf!Z`5Asc71w0u=tsS`bb%>Mv?hi~dMoFSDM)^tH_Dk>+k} z_=;L+W^T*$HJ_cO9hk8+cABsOWH$-YlnUo{h!ivPKkct%1w41IHq?_(zw-|%>K;Zo z4e+3Ygc7CHxJIGaSWj(|$9~%-0$}?0vU#i^)>x;hl&_)L3@pjn)feXd2OxH>Gu<#xD@LfB8`}!VwiE_=`t@9;T@C`Ie|HMicp9iD?_7%Z8E$G4ZCEa zHlKE@$1pgO4SwV?K7uotxb#u1dxH<*rft*BvoD%whcxg#2>hrp@-Zl1A4YrtH2)oCM&(7Q9#3InfxT>r%iq++CUsPN_;%>Gg*G3^0Q2SlJe7r4@U$a zv4{##2T^C5nW!&7opZ6Kgz!lE<`+brtt{`s^o8gcJ|=}HT~IHN#7UJS1Ns9N#7vpYnMKc^c|4C zvC?-?`X)%g=*UC#)zw=>~=SE=x)rR4Fiss)anpBS?_HOaZ0> zP_Wbp%$SA$xdm+oO(w|LJg+T05HV(%k&>E@`F-A%aX2h$*y%3U@6uZ_|uYS#BSTQ*3ZJd?q>Md~Ml-!r3!9ib3`EJ;-o6rht3EMNJ z&`tspORo@f{xjSzL4-bGyVt!<5l?Kl25Lpe^EoW8V;%wM&}T z^Fr8dZ)`zDH^Sp3Q-jN`BB%7hVC$`oFXabDS?c+#6JYL-f(OOlxFlX~@3~&D` ztBdEDb;B#r*W+gAXkkd9xDHXlIR&SR3)aC_TXR9ceK^wS>1cvcC{okPY6l=CF)sLB zU!(#$tjO~%PsbXAYne9l%#X{a^{snuv?(IJ)kO=ng zgM7=y`|92S`}xXqRYMem(#U_>gtrF3zE?}?$Z0ew33X=i)KnEr`VQEvMK*c0$aXb# z{IozNbp2r%xSU$gSYu0JhGbdh5)j1R{y)JTvE?MyDt?VELr0wMTPEyh34Q3&K=pBA zB_$p~UHKICW2uoB1P75~RtLQ69r{umDxxGNvL*VX6r%(x-__!6EZWGoW4 zD673=k;C_vy(N`CEd%YrS~e+jhO$~lYS$ejY_L3L}Az&q7@ZBdA(TAomWQ3kYol~9`Fx;{2K#(6&I> zB3TkO|J7?pPJ2_;mGWeEL+l7xl2|`Zy|bR-r?U7#Xp%!69_E38hWCQkB5(4mo?`2m ze%chJ%C`)B4kUK}1KYPjeO6g8@ykIt?H=SHbg=OF;6O#YY3cm$LoyfA{yAl_>Yj&L zrJR8YlWm4EXjjmEB=R{H=ZMWM9E7u$+mR1W51hY~&arS# zm(Iy>-UX*H$_>>AsHS`T!)&NUq)ruFfblLAS#Z+}QHKkZ1>s`)u6CjaU^02cTR^b- zz-l-zf>R${4H7b_Z47Cf(s#pd31(`fkBZ|Cgyl_z6O566xx%7S-(fWq`KWeA>lCgdM?mBL>+c(vbtJp1XI;Sk&XP<13$M6n)? zYhB1L$MO*z-+>JHcVqeQte5)rk!5(ntR!*{ZV?oY=~I1#E1{nMlo4Art}&0}g(Nrn z__Jt|zcMBV8+xpLS<_UT!+ihGJ@@oMO8iPDiltnBJSq33aRe7pSp;}{7__PZ7FG3$ zB|=P6eUt`pl|{Req>j!3Tk2nW@x>Q`1Ge~6pI<~vxr4_A^u;c;R45q#oS+-qu;+pa zMbN!zCH@13>Err{1ZN7*nMN_b<;glE1Tz*a9Mt439A=aALx~Rqiz42~W0VI`A#fVO z!m)7OBwUl>x&v*%lsX}EWRsD_97~V;jmfS22%QdYrC(BVE0^A3aw}(u@S>*M!J!;G zAEH}U*w|0kBsh)F;KFJ39~i$IZgSM%y1@*HIe0-WxW{|oPq#Eh6FF-1 zi+qlWPe)CSB0cXN{tKDO(FzVnyu}pM_NE&j0?5;mBOL+A+)YHJ$>X#!nZTg~SdJZi z(F7$QT&j>6b9{APMo|$P|Dz%%D|=@yuXq5;Ci9+xu?C(tRmRu|0fc<{&pKNn^{s3q zwa}0b9SxyqHvMvwXvoQ&H79S^hU{G+`$SmSOV5%SPw{ZnNg0>tGLpzmUoJD6_Yw2E z&dQi;{`6eN9?WQ$8FSA={Wo3rb2D%H#T|#isP4zvj@Q25p3=sYs<$`&*p6F-{hLS9 zaun_^dgN!U{7jag8R8Q|t=MgN)RknObS<-7D=b&iaG zTdoWcEf)`a%=%fbQp-hM2(x~ciy}@LMut(kW>~JM z?-EX`%P`dY3s z%Qe_?c`R4Za!s;aG!`u3&9Gc^Ef>uW$=D^9YnkPG*>bJ1TyI&fR?EdVDJ7J&YJ#epa+6wH(WpL?w5Hk#yW+RuG6330y z%Pj?fv<>oJ+{1)W<4`VHL0Hl`yjeTU_!so`J5mLaFSymSOl5h4Hsfe zO4Nxi&LN|>eLRLv(2QF%BT4<|-CrAn_Zos)@vFG^d#M*{mohb3((dyoVu5=ea9DW@#741;w zWl^QbJ^zP^;0k!MU$Cfzmcjc*L4q0rw`(An^7{B{3g`sQMW&-5DNza?_io zd1Yx-x!Lyy65F&83@hU$Fg~uZF@5GZ>QbB`Yn>@J>nG@GIf9AnhHE=xpACmq*Q$~3 zU=5gqD^MrDc1Sy5(8Oi4XfPq82ado_6PDD0Ut>vq2{-r+mr`>9`U^bHm5vu^^$(_q z;Ww*>cKeFSZ+!>^sJf$VfTKM0IXrmzZWlaSQlDG>ZLYeNV=)1fh}FdO>MYy1m!**j z`#$E1V8XrtWo|KHm*UzDn6Ufs3EDq^4*hp{k~Z_hP-0+j@~a3qo;l0(l?Jl!WpL|Z zU?HL=izdV)C=(Y3#f%VJVZ8^H(<9F%?#ZHes1oBIye52ZEOkX}FTDYJd&FQ!_n!v0 zAzbEOqx<<#yhB;#ajLbxVl^7-SzsuL#42%VvAPJQLX`<19LBuA~6BMQCQ7t z>eC+H!bq#n{psC9@s3)!ff-e0#5b{~;(+_mtRJbdw~IsCPV>F;)y4O!?#*|*rd+8F zzE?aKc4(&I)4oQ2C3XjgC&TkW+kg^{zo6|_&jE{2*i8SdHH`&}zy--qMZ8{yc{J_Y~A;@@rvd8^LDZ?p^H8z(TFL8D6nvF8~wZwsQfF!k24 zCKQ?PhCxU<&O?Bm8OJu*W^}E=E)co@O$~0C%ra+msltP7J8Q9A=KpuKcyck)A^RiC z@a?QigAIOU-+_*3Me#*<0SuBoxI!k|h{#{FSGKY_i!ZOOmJQ8uQV8tPeZB-uXDWoq^;%9yC3W1%| zEu(>i4nj;u#N>y$6edl-HU^;|nW5Nsh_0SN7>qemIt}&BP;0YqnG2ABQ9Lj&4;2=m z+%qHHe0s={!CT|i)V!~=RYUte^u{n7G*KZ%_&a(*8Hty`uE5v3K|dX~bqdE6s{=M5 z#cB44!*`KC9J>!DVlVS2?kn{{-1paMxJ-g#eSB`xm%K0wnO2dl9a8>RMmiww#r(%c z6o3T2Sha7!_T$3Zge?>bJ0rDW)vsTZ_BXTvyI=@Fn{0+8>OirmHH-R%xGV*O=WTCQtb^EmN1zhVmd#rX!fx;{2voK2 zU^Uh1<17dY0{eljBd@8^x%~@mc*I?gEQ9(d%u1A|aHU15`3F*UQea=e2Mu~{SLXaK z^dqm-O5#h2|Cw;zV;zyt^&zorHvBOjNx_T)k!sSQ`GjLJ2uIhI?j?dmWs?-&ajcnk z8Zi%QOI|0T#@3rp{Pi0Vz}W&a=dq6>SW)&>; zqAAMPN$meql)JaWxdE@GP48R4|F;ylrYKWBn4%nAkMBNwH-Ww_4Z52n2t1BWU`FaI zI8t!50GS~~RpxK@yEn6Y!oBs1*ADGWef(KmI#RIlEUqQh)UV+ibHfQ#+ zaX3w>D#wAMtLTE4F_l(TxOh$q^ZPt%4Cqxjf9zHKxUy=l%YJf1@Nt|LtiwZ-J0fp` z%~RrJ7O@@xBbhrredi^-elx9WQH?M=r>w3Rdon~6wR$d&rcSEENkxrkQL7z*VHGtM zV0k9PgWAQ$&yhgeVYU!WaurpeDu66o2sK*K-xj_>t*#>p zM9ODoNH63gi6e{EdeT7ZfOYvq&W`lD$%nH(?Eve_BL8b5XJdz0I1Wg;prYVd-c53$)fUU-FkT9S}Nh9&J|NH(ri!!S5r}_T42lP>r zbdeL?u|breLAFtl+Sjdmqj(W>z}5t`utW|$AE5@rnWHfB4p^j)gfst!2p)7Gnp zcKa0nu3+LiyWl^4+AbB>VXKcu0VNz7fyCE9pFdcMS*isGKgoBpymR-FMLh&`;}Z zQ1v3&go|9KPl?TY4RVwR(D|w^FdNWeq!_sBv6QwBkJ2c<9omFV)J}NzZPocMP0}be z&!Dk-XesC{ttHk9Vr*4=2oJ4;ZQlegSUq<$joGqCc#0o#9}myK0258ZmhBpqFaLfP z(A7>I5GQm%{^7T`=zdzZEcA!HTI+z8VH{d5g^7Z}3gL-rbMoRg@yHhISx@xd_Vi;{ z9K~eamz%7a+89jpgwGNZm&cN7^j~(>`F8mG1}h%BuMg=(5l3p#8#i#ujEEp;U#PlN z*v%#dAP1wqD||zzne7Qodv`H9vcoId)9hOYAs}S7 z+4S8v9VTz!0$wZ}*$3(pxaKXH8!$HS4qozp^hiJEp-ItgNVpiWH4H zd__yBPegGf0Q_^V&}#%L+_n#zM=jkSCaGZDiz58mO)Wv?m1Fu%+r|AQp}h`d!uz7T z=kb21>i(4rw?&l)s7T<))R&cnatQpWUQnM=isJm*J5Xpz|Cl9e@56v3%2ndskp{&A zdB%TEA{N|D{3A}}BLz^?YEf!7pdxrF%GA5uL5dH|Xw?*DNNLfve=HC z*RifxiT?}^V#aD(f<K?n@7|xH?C3iK z%6<-b@ZNoUWUmSVea%N`p>Y`h*tAnO>VorsFI#ZIg^Ntb#kHp6(rVK&>|Q#&%8(0+ zX69TyZ_ByP`i*o=KmQ$6(CnY~@yG#fn04T1Qph@^eHs2wziQj^$G<5%>F@X#qV8t=?gI$Cy@}DS0KWx6GY%|cZVT#G zLfwKCyLTdX`XT(Ypd#HDNId21e5gKU_rC}g5~bTw=jr%Lz@K*l{!SERRs$IhA>BVt znGQ0iE)}@_0FrM1A0?fhVO7d()eMrZr_E7Z_ihe7IRXm@gJw;R+)aW zf)GwnsycV9b4L0Hw07fn@ZeTJ1EmHKB(Et0j(rpxp^U=;tb;jPy<0s{=avvJ;?-6zjOZ2InV!`Jej@M zUYB>>*Lv5x-pe+>6ylr`DTI-HOFk|btv{0TG5S3H@e!eCj+>9Mwwew(8Oz9@X-scq z^dFLx-+KCYsv1?Hq|2TgI$5)kV@IGdVt|ji`Pdxk<%(LzRrq3Cn67-r3+aFOF8B3Lo`dmN8vz2+8KT>q| z5=_hU*e8#;JUVzB>0;=JELZ}x0%^bNaP9mVV`3nSCru+41miA-l%P>V8*s~h63 z`CK?@J;O(FP1DnS4qiX@A5B-%92$I2QUOle~mF}7l z7XNxWP|QuCV4RU_sy_aip#G}RuNnHK*=R}^sIN#p1<|hidR;4fU61yv~;6 z@YQKWBf7ZI5hQe7`D=;9wL`12i*%i8)QVxSL=z8N1@`=CwnH<@{YBib;f5U1?3+CWt2{+_~20Ge`>Yx<G2IVC@N#04yt28L;2C%oMQ&y;y z6-s|sB2%TTP$?_)Z2zH3sk}-no>dFL0G)D%N;zW<5ilr60lnojRLU6*%4?)bsk};O zDC5Y9f9v&XmP$Em4Gn>)yGl7rrJN;PMHz`svhhw*UZu0NA;c9rW@v)TSjrCbp9!KSf5+bf)^QmPd^Txv#F)RS}#HNc>pq_^ce>_=W+9ISN& z+#yg@L|_d-IM(FyNW9I%YpVc(C5{Fa!0Jx9QUMWhXnT8aFa)UM zIy@9CajaoW&PY7K!)vPm`f9Z}8dShx>68^Jpp3Q`hc=q`a}7&&(=b{MR)}K_asV00 z30|eu$*B7yX#pl74HA<0y84OZQ7NZi~h+g9|LR&2r9IR{-YtImEYl!j&&3;q_v+}T9 z#A*=F6aFP2e)A%f1jq)$A`U zLDi(s&%Nr>FHSlndX>&sm~!M8b<*UWO)y&RQjP+nZohJrXq_GCl&%-1_Jd7= zt{Zib5XB9AqfW*IZnwBag9>ieL{LKQ_K16yb{B{{qTMCp76Wd=KT`h}98Nu@-bS5B zvL-&{VV91SGS>>uZOi|}p z3>Dx(21Er+*8vn-2NWQCqym1d1DNSLpv0&Z^TPK0c{+f#P6B8U>qGHhU5kefk}ZZH zr;Tb~SHa7BgJq-8!P0EC>s9b?dxK@|*TK?~wNIv-e6frb#RFU|4;>Q>kXEbkzna4OH5IEBX8rQh93mk zv~H{NS+;ava)kC&D`XhsIuRMK%Fv{JZN4>8-@18K+;E=gJ^P&iq_>sg6J;d~dCqO< z1Ifo??rz>M^TVlr4Y-^572uKbllNT*`o6zO_Z;1)8nM4{USFc%AVfyq}VIt zC@~~x&qYJ{B1AXGpW#^6@pbwKh@{-RGDodX?FnM|V%c`StPSvPItQmPR!}S5WpyZA z7vA20s|DG|h%_5~uZQG?XsF5I%e3qxe4^f(=Ma7~trdby&TNT@oCw&oz>opv*jVG- zx9mrN6r*xi+NJq+xyPQAkMh7*P#$PZ*uZgp!ai8u;GnRc5D<{s8buw}gmZ<3b4drF zdhO5|(E=%5udO#s(Jk`K={UyrDg19oGOK>h{agek|4Z#sPjU&IiY5Faa99-DCpqSl zAYXE!P$j$vbq|metc+1#7GEM-nOW2I+1j3-1y^Keu&O=lh<3G_u|$!z0j+S+{A-F3 z#vA+)*rn~hYjZp~1vMw?&cNNEJ7Wo~ z-wx0=_-l$DFDz_N1ADatwgZb7EoHA#y7V^vDorK4x0j~f2h6loCkQ>?X~Yx1k=BTg zu{?}#Nt^0MK;YeUU}jA||b4}?!w2e{%+0K}5d>)_%>K%SZWo3)|nfbm#c^e!d3y2%JMA(<-q zEnMzxCBIh2&{82uKw#@)DfnChO#k^(^WHYvL4;BJ5n_&K<!wQG0(7hMXa+SID zL07D2SM_SaZd~CXi|Ji^HnXlJsLfej6?LC*we3HlAfUw@eOA3_XQ|nkk#Pijk`1+d zz&Tw1GH*nS>qP^Cuen;l!5v*)&083Klu)7X{CZKwCAvhG(wj3;y&%aGKV@lGLZ6(W zKZ+Nhhc=XF$~|hmigXP$mRw8tb2aQT#-BDA5fL~D*jK=d0BQd~{GZe#agjji951Uw z4&R~5AIw1BbUHUq!2ift6!|T0$ce2``-C4-xMjB3;)#&$BYszh&pX~UqB($RR%-XT zUV2{oJ!CH~w4N8DlW9$9Ll0H)ruf7PA$>HPR-I6<(0VqK7j?|=J>^oi3^xPDv{!qW z;P!aBB;0oS-J&zXsC}N0;?DSmH$V=+8xWEfZEF(OtPD&GMn~0S7z@5MZU*mrF|kxY zMYCO(a;Tla=7`zEyE77HxbVH(i?3IFsYr&?heqAG`24@skL!lRJ@`1=d4p1u_9(7+ zBTA>$18RbSSJ1>K%q4Wn~>krKvUwG{RwJmm6Rg7;wv1uYlP4kKS!rMju<9|cSJiW zQ=e$(0I5IDH`7I9k^?n1jm>aXI{k1b zeg28*na@z^znMy})j;hEI^*(1Nk2!YFLZ`&k)gMtCYV$Wt}Wk=B=$m>yqD5N&xm=VaB?? z?rOKn{doU?OXL3D_JgFgB9HK7fzAF^t=z|KQHDtLQtF~J(AUnw`Bf&4TB>|C&r3F? zkFqA-J5P!b{noBgm=bM_f4vEXztiz*DV;7Q0vr1^UxKFzGB1BE5y9K#uO%WVy8N|7 z8r54|f_TecOGI`>`D;-awRY`OKH?|XpZxXF5L+U0yw-jNy{-|xt}(qXf3Is|%2hg2 z5~eJhwrHCn_%thnDm2Q6a1$<$%p$(LrH;-f5r310aT+W6gMd9i_BQLV?31s419X3~ zY0s~STk8+9Q_R05UacLo;&ZiQUi>G@vAUYv;@{WqdU0Q?-Gal$uhMSWXyX5v;&cS+ z5T%XMcp}(Vyx&BF&O6o03KmDjXU^%}Tf*q1*y6W#tCcoB<~-W2bUNv2!v9Zo&KLAW z_2LB>>Wl|jqZoP*&`B;K8*dh5j2*i?>i#n*!%EP9xdswcmWgx#bv_4B=QDF^mT-ac zxlG3Q0pq4veCi0UMN7qqU;Wd>4%$;5DZ@??u#9E@1pEP`g0$B+!kbqttfYAXFdevy zRw}mk1MogW*%&)e?$XonVIh3dwKOffc4xtCzOw36K3E;x_j0kh$h}PR z>e&!}-#owU5p;qaF_x?(nQGfeBfNf79-)5z`j25=9pql7+=s;NUk0Np0Y~&lj)1He zkp5+Cmoaw$t>iCaU43Qp2GqMh1WXD%-;tK{&5wzUh~>^movy;CWfd@HAomJcOD{wR;)Cm{oQk z7J1dE%N?fsv8UCl^HVnH2QqsZ)~$BgeLm|mzda{tmrpmXI#YsS^tS4T;Np;G6pr3M zn?YXqtsT7lXpsBo6!p%#eh$Od`uiB-!6-@@g7!lb`9Lf(~Z3sl(%BmVF z`j(g7~(g1 zc@A?<;HJmR#jh_OjKXdhg~N{|uZ7LgSF?-pc?I=?ix?eT06Akhj~UB7#?;r0inYen zw~dNdNt6>pnzaMSO#7L};2lNB@>%Di)*(foQnuHid*{CKCwXnv<&RpX^pHP%v%9pRUa ziuQihc!_GfDUOP*#?;L|V=||#!u3W|Yo;-oHkq~S z6UwlQY|oiLI!hSAf|eS@#?qIhEu~Qf_h3je0zGpFppW$~zA+`&6KIdKl=>~iPzLza z?G#IQSD@%nd33Do5fm}E<79@SBVXysZKZuCx6(cvq`4-y7Vw6c z7L}*HTBW_#8HF5N2e*n=JmXZ#Nt~h86ab9E<8E+0Qz z?^EhFC>K3<9``C;BXj{0A@x-eBi#SEI~2_?W=d$qb`k7n{!MAN8*WBL-k}d3;2r&T zA#s7LSK{pX82gZ>U?c*d~~X7UJT3QM4p=h=nOPSu=% zg^I?5fk;PI)!8`u%{OTs`g@T3IkTrF(9;_Jz$|*jjC3EFJ64UazHnUr2KsrB|2egJ zHsmNbPyAVx@MrHtZ5Il`)|>X6SsW)8jg=i@{yejCPEfVc%wfX6IVTvj|0IYd)*!nV ze?``DpeT*B?%|0l#zvWS(1(aond_jh9YZT~U6NX)2F?LM|M+?sU7-e4Pp@*fE`5lP zbPqD_7F6P@X#P{Yc#nEs-e%E(pldf`DQ^WpcuVzrr%jXvGNg8%vz}n9+loi%9exKnnjONDE!GPS$jpp^@2rl0zD;z`WkgT%X z0S=!Jc_Qdc+oBC{Pgd2~RDoC!qq;zcr9fDyFb}>-H`5>kSiAhF{JWWeOvh;(q)NGc;Zt+(mT-49Gb$!wZownPM9}%$epz|nyejdrAQREtdmyYWLo)telm^rX>DgbDRR_JV zfF`U9dUx=m@Edtyj$|({K_QG^)Jis)jAOwa)G z8ybl1ax+S$Lr#(Y_$pn%JO5N3XLyXlw~VQ~jcG4Shor(cZ~`zYw&Qiisf=HbjNdf@ zs!%taj1sr~ndVXl10e74u%J%ySr z8QD6d(1$+z>Z%~J9?2Rc!>fk%C(yG#yvHm$$VLtNE*MH*{pfAAzV*fz2r`%e!2l8% z{u+7VnWH`Bg{Qpm%+;Rq!V@hVjcRFsI5|aRFBx&@i$UN!p2ei5Wx00i$OhY!d~?=avhvL~E}U@VeCvrd!a zpGa^#Aan)yp97JX*?xUJrnd=WH4KUV_=}tbAC~iA?w{p3`OmW7O<_Ng9Mnk(@ZTXD zPu_b)f}d8z;<@CZflCtq!zA&9j+3M!`&p92-=Ntfy8q9t59?STZhj!VByofqB3;#S zgqA3fhK{=RMjq+dhgSt&oO7jk=Su0mL17d&-fCPEGYZ@3KXr;Yb8jUpBOeum+mvgw zF*)yH7_V47C(Pj06yr?6=_9-S>wFcdy(E4WMKX%YDD$b>!z&(zp=vq6a1UTu;(R}qdS=KQcv#&y&Ir;Kn4f` zo`Mx{NSEPYEc<|F;fgs+5zIxQfwNirdR`XA$lP6YWzCWE&fP?W)do?k-8H*KK82li z6<1bASZD*HvRVGF2t0>+QSDkyB;```h^fXw^#tw4K1EBg76t@P)9y_I^uFWxt=V$f#aigMDbucw^{WG$~}{q>{B2Nm3q$N1kE zj$2R))k%X%C{X&%v5y zqs=|#bJlIBKdjjf^#?LxVa!>nC3m)AjXXE_yx{XkSk0I(Y(Ad6AF+y4AU35zY`frD z>a3=|-OJ$!65P*N`UZ85bh)2nQXnM0p=Z4r{SHfKtXnOggNdikx1`RV31*#;$t=W$ z$h$0`yUmx784>EmK(|uR16#i&{3E#vNZel9`+aLW7h_NSFpTnAf2c`Tj z1;!&+776COco48xCcI!Upm1WK;E&MhtA?{dU)Vd}ob^Z&$eQF(?BfhIp;G(p>1QA& zt!QJu*n6Hb?-Asy9};S^vo36{DLNdgl~ghZpD~Ru2_4QRuBRf;<=5iZ(@P0Ac?}mUrH2E8~^3E z-DfO2M_lLwcIKeZ`)?yU2tVlcMxEfEVmaG>qKyexhSa)ij~$sNlh0ChiF6navH_D$ z3AZY(&;%Ml(5g-QiE1?}!VmbZz40uMWOI6Q{eSyHpX# zR!UIA<-P-;^LhnfCoci;j051i4uHh_jC-ubO4kOWxp!NK&;L%2ZqD+FG-2Ky97H}c zjS(?#lLPTV4KeCKyxD=6=Rmw;peoeez%?%Px#c5hj9>4InkPqgQOVo@s3?_mFEeV{ zm%w9lm#JJ?#g3>^<0M_)G3h`R`=t~C26j!qbGyu3x4>DY#wbDZQS951=BLLZxa)Nzt$ zA20by$4&kT6YuE4yN{P#SPYKMUG8^}PM&qVlZHfhzh$0YL~oy>Kd zWJ7zCF+fpZGxy~Fshrt(>UC;<_izIs^LwjTFA$5Bx1#r;wZ?C$g-lL`Y(Ck)M^3To zbZ3^E4za?1lJ;#@oEyY>sDuS!&RJ^f)AtIj66&VVsC$;CNXQYidiAeKZ;#mNU&x1KeR{ajAxP=rKyxYeotNvBIq*_))cn;xa?SbOb$YRea zE(8)jHE(i7YD*u{h9VPUDP3tssNGs2`4z8Eu|UwlYiq=NF!J@HxA2X5N7R9(*X zt(3%{HGPJym;^Z##fQOaF2xEs#rpXeRjj{qPfD?#;3dTp6wa(Hoy-=3Dckbt#NV?%iCBB{){nn346zuCZ8HG1ir716*5_zSD%!uRUswRL@bYpe= zGp>pxBg&_z-dbaF_AQr4@jaDejSJV^kwf0dYZi9kQ$EtTu-&-(Ck!>?!X3t4H!H_O zf;7!3>z}WoZt=b_@0$L3Cqytq2pg0Oit1+Fpo(9W$-F_+7blIO7-v?pGZF=IWkufn zYs6h47P`tu3BE>o)$DX;y)@k@XEFhDn|o>w z?~;SJaz8tR49_ngjy|-FVgl^e_5Had&vCWGuda09vxzud-FDy%i62XNtn!K0q{*Sm zg8?o@Wu-S+#A@Y$VA>PnzWNsf2#?%dLmpUVj{odWu=`nX%GmR7;oEHgApQgGb&Jpn zB+7OAn~Oe017q#F{5w#X45%>QB7R(y`La#@N$7Ltyy^il+`4qp|Z65K<-X?y= zwCr8Hp$;3<%2pav%c|A6KRb9eo<(KLeaeMGHa*G@9AuMDp)ds6npAj$C=E;Zn@f5%5d25Ed* zS9+KYt!$gJYr(j-C>Lw+(fVpik-eC#m4wzg64x$QTG~phT&*|wZn|;p(fLKkxvVZB zQgpR00r zWWn$P)}JX7Nn2OD3TLR&M8c;89>ucOvgimGOGcUZ7Bgs-HR4_2Gk)7FDcvk=7&EN> zZ^`RWX4O}$ZgpWR#)iHB#(F)b4k5lY`n|UV(F0soe^8rcMWNt9Uv)Q>oLW+XfVQgn zi?(WNRE8eZ&`20T>fu4LPzsqd`z)Beyfn|VihTNHjA>#!u9>V2vT(Pf+UQX`InGCs>5b6-Ys+W5Vl4iesG6|q>25XM+ zst8ttIK!dAEEJ~@K5N83w>ssWTMeBL=DC(|YvNy^KU#4`L|n>-_?@`SX!eW&$l`D* zk4_izE*R zA?RH@;yX`6;6pfl;&s<+NuF;J5}(IMKY;}`m^tB8ll)ncnh?|A-xND$@kdXWxG6(w zvhj;$@27_XxKdz^Z~!ZmU??A<=;YyCn7@au_B1&m%E0d87(N&AnaK{^HT42z&(xGa z#p}2PM9y(RXepeO;c{2}7PcxZut&dD<2_2&D1*+`!Z?8Flf`L0P1kYF zM1gX>1LZifJk&zlnoE@+Bfd11cABI;%So#wb(ouC3Y>O8xI{!^q!Es;K`@nGX|{P2 z2{);IN*1S2DnX_Y9B zF0Es(zJ~&*W$KFm-bpA6#&80WH1rQ2p&V-E;0(h_)jxc!Hj^$q`~eo2phO!pgm~I4 zx~ox^or>g~&x0fJ=?qs!a$pT|tC9jM?$oUqU<{r;QpSvb`1I<9TV3J8n$=Jh zGBQp;6YLqyB`#O;RA$8wvyiAbg{g$yie$FDU8)z3+9Dwxs})K*NaoG2TJ;JQv~QC` zaBEp@XVr+_rB&9q99G81iLF+rM{uw*70QY<=OT0-|4dZ6PWD|+9T(>LU5BK$lM^*6 zniO~*no95Bj1Xq?L0zz7l4n_C(P{F)^cMRdt7Z>DFv{=A7LK3n=5s+0Ji*IgpUc0@ znA~biZe!u$b5Q9cc(>o!yk zQMZ0kZn~*@G(WClz2;7#F%YHCSmu{YWjsFi6Rd$w9)5-uT3NKgn)0C1kN>O;5w!9) z2ojG8-=bEl>`|dmv7tzk5oljsFnpv>_z|$kD*%SGtVRV-z@r}3>=g6N%=1-o&v|$t zip7WdtZl+Xk0M4a<_<4;#s%;0b&VV?Sk|LYveM9Ieyq(}Yf-&cw8bA?CZ(wBMDzbE zVhP*t<<>RWTEaf!i)=@W8#gH-HWIBe!e>l~h3tie9C;f;QTH=GyJ|RQzpF+o<0pRw z(zxi@k?_xj;I;{P4+o7aw}y)L!n8eL?%5#=rOUT9Cg-K@Yt%j60%na=+TD=6J!EZ$ z+x^glXzuyY=D>GzVOQj(v=i4|I&lkL?2~z>)tL=Xeb1KpIMh_XvAOA;{xk zn54NtIu*2`q6vO&$*=0vRDKXbD%|yfo>;)!HT!@oCfb%4wqk_<-N!B(jCo1(dAAu$ zUk3Sw+b;}zKPZQ=G~E=FF3IKYiB0OInl922)1#N?&MgF&+y)f)(ROt&OgO(WS*|SOqrHnE|?Idi5e^Ob(nBwQq^_R8|Lt zObU{WD5-we<*R32um=1T^|xqF)0|9K zgK>a1c;NiExN`NBS%-ay&G@w3OaQqVp)wX`pOBp;l*Zr?p)}?X;W6!N465xoa=*r) z61K#tt&kq4NsK|cLm)uH=CmV>x;%w@8MTGvn|KoqwKJF3Vb43p?_Pd)^1GSefy3yP zaNhss{X4$JPkujh-h)Y<@;l!9rB8Z#Tu@f0!?uW9;qi+)w9mpZ^}*HQ+NcF93pyB_Ryt?G6CtJl@q>w493 zA>kRvDSs`I4)u1(R7$_$HMyXC*YmJdprCxvtl93$3)1x)7NCM38XelrMi_M*aELHz zgkqIRY{uVSA&|9x!#n{d`V9-9#HpC`3lisn4~l+6RRE(l&I+pZ8xp4zw;3%hNIY>8 z1yff3Hi*j%-5HqjF>_nUZ9g)=!4f5jD_ve!XT7bpOuhog{Q#3sjl;-IKAlz;Y0 z>`^A>X*f&7{bStL{CxBq4iWu^oG8E$w!}w!Kq#L9eEc;;zeVtQI3e*@lpMI=lAouV zPz26%207@A!l8acnqYL2!a>nYxB#WTBv+W!Zo$Gbsufa$qQ4Y6)Jo=pO zgMc2DP-9YQX_uzb%5gb&|@+sZ3!3?`QD-&BB&j5k`q}JS7LLzQ6$0l$Mf@P z5QUy?KvJCgIOu3vc^vGlw=k}FkD)8Vk`57jIKNT+{QM^Ko58ONI%O^S@VZaG9@MWV z^=qAewee~x{Xb(4QPh39R2{sSQL=5xU*dGeHRE&7r;Mw7+52yr=RkTcAEDIh zY5hHkuQ6-9layEK2zB^LJV7ib*chc&Z;U#tI*JF!sFY*$`E4fy);mdgm5xy~?!=us zrC+7=uaRDK6c74UN`Hg$dPt>IUZs9T4^Ld7Q%+PVC#EYNoTySx)YB0A*yO3aN+&++ z7WmmZ51yo9$>OYFi6dR{pb8MBeB#iG2hUfqQUOZurdB*CwMQwR zEbj`IIMNjlssMo{4y|}_Cw=K%kqS^rwc^1!8rFj;SmH=mJg5Q$mN>NH!4(QtDj*^b zt$0xMh)^!sVpO@rk*;`91qdv0XvKr$6|7W%N~#qPiuO%l$tI;>i6dR{pb8MhgW}MN z2R~)$_O4I?qIggoTJhk$8dj^o62*h!=v6!@A4c7Ot7U(+d}zgk|4_hmASxc1uMzps ziU+@~0m^Qv6c38yXvKpa_@Q|4ZFzmZ;z0@iLdAnB{TC`8JQjq|DbqCO9RuQLg!j{$ zcPxnOz68XjUk)PwOF(=~)xV?^?L_&aipWX!OF%69LJ&tO9z41o`Y9efsu_<`Ja|mf z<0>AMSm}xf3v8vlSyT{;;=wq<#+pT^@I72<9_*0#N;_rZO$MYo`g&~{Zbsb>J!IwM z3p5W31fy2;YW_c?d2krLoYFif%rq&@gX6V3M@o9Vc6-Dv$^nQ|Ant1IE)n+%+)DG{ z!#JFJz9(g`lk3XF`#kK@!Zgi;qmHY2utclhqq?FYFHQ3xvN@uXP_{G`(5rc{LI=20 z0U)hf^WY2}z*N^MN>Z8!XXyYII|=C3JUD-W_Gh6N|CHLnog5Xl44n?9MVw#?Y1GPT z*H+qQb+C{?b!tk427ML05>Fir&D;r=maTnQ1wYyw43g>uOJmorP{9qo!MVM`1rl7X zg4gv1a};q>mq_q!D!8pT_+%Zd)DB)xm{(~LJWB1L^jXz7%a(WY0^N}-WQ>L{Um7Uumr5iTK`Fh1B_E@Sj^9=MM)Bic{Y2m3dHm|r{3LAefxbAu z`AEBuIByBxiaR}y`2A0QqIWPw&*(kxrRg6W60&EC{=t0o-pF|z{e!upVJw83iysd4 zoRpRcT^oXmbF2yH`t9=--|M;f2V5`Ps_9G)I;Pe+s#VPop#bpa?HgMY=W zgw1!O5nTbWfW371Hr|*FdRFNi+uSb%+ML99L^H$1Zgzv+U9wdrmHK{kVMIR&4tk!M14aNI6eH@oM$9q2;cP z+pDEwxdyFzrMx)w3`x5w1n@EUQH3V-EUVL6__9AECUnw8y1i!2-gNyNQcsAIWYzj*RjK#t5;-}%23nn*srgWM~` znfptt1?7GJO22TdtgdvMXA2Y2e^KG{c^d#^|&$4JBaHf z`?fZpaEoLlJ+Q!29{=Sxw;55<8dPSzJ3cyGls%*_e?#bh;TBxf$XpNMYfu?0RI zrTSph(|js*FQepgYy_c$c=%9a^R#ry@TW}-oO(Z4@TlI%D;jX=jSOSiBwR8a zdP$6)>}Nj8gz|h7%zk;ZKFEYktQDcJuAJF$nB+zR(fqqj?+)WvO+oK|<5w|J6mmbk zg}FUz1N=4T$Oy41Zkvn}TPl-}8XCkaWuz=4k{Q{6blWVX+xBZMK}3IHz8EJS(r92)91s{>*fFc{FK@ADO19e+l@1SGs8Pyedlk%cThgQgWQ|NnY-o7 z=jV?Z5yffqb1Vd{FQ1>6e8K!AdtpW?WQI@8ehS%y_~P9%F{i2t`SMxLgd~%)Rq+`r z$g{9PX62vsWSq(9EZ#);;Cs3CO@2o@thc`ayaQM}d3W&M#e44oW7>OYhf4C@#`ks! z=bLxM4(23YFYyz>T zh&tjUo!_7ls?|qy@|l$89zn}j3@3CD4`$>Uo#J~&r!yn(Pn7h|NOjCmGg9r5dPbrR z3yoNw>|b+rEgG>XL*Dae3NwnHlWsL9*D@!OO7A}>f1W-kfsy|b1;&>5ARN>u{}n#l zr8N1XpP}EJe3_(a?JJ2HQaZ7WA`inVl^B<2^5z^TSX_ip-Xb0fI?lfNc!$hKk$Z$y zhoYRaU1nmYqKpq!8l^g={b$Mq;)znTwwuI~T1(J+C0bId=|wPZd=)EAt;WT^o9KtE-Ztm?AG4kFAd-jH1@HGFvrI z*3|4*SPfJA%hS2iB^BA-a4^MJ?Udo{$?M{SnlsKT_>E}1acwasyGuYJe;14GGOX6M z#$#9uHrC!xzhh3W=db+W&OMet<~rZCJ_nzgXMGf~x_dT64!eydFM;evOOd?IyG=-E zmH9tcMX!6!ShkiRO1jzF)*iREM?Q5Mkrq&P?00xU#3jZbiNTO+^;tV3pSr@gAgr4Z z^Q{tAmmZd7ESUmMF5#%AQsFnJhr`_QH~c01C6IGTUv^aZCFCjLZ^+v^;;VU^o}lAB z*-xIP=6iG=^_D@+K!7PqOZh53w#|xl>-`jdDg10Jg?~$)x93GKPG{hnsyLQmtP&7q zjqz*HLN6}3)KBHJluzMVcbL|$k4X>=T8+pt;jE6IEfHXLljzm)d>wsxZ*&G%c2H$V z9F>l55D1bq#`nCY(pKxNw#k>`A5-GU!tJFpo|<>M0x&iE>*`&RcfNjy$fiQ`g_Rm# zasNZO<5qH)h;F9t?1NtucCh!1x^9{c5iuH0H5l62Ic-TZ)}5%=1g3P^^7Qr4L66ok z5VK9d@Ge^}SP+F?884=osWE&F1(D>99~q~V!2y{4$8V~tt%{$dtF}_AwkrM^2W%=s z^Y>P5YIYrQDTiQS6?q;7Noq4#zUfntF0QTI4=WvJ?;3S8Wu)g(cGLRZbliGO=*7U3 zeG9k7l;r3!QC3}MeTEVg^n1KR8uWX-1KS|1j!!cCV6#{Fp))>&HE(csPl1e%!ofd) zsb;2eEi3&req%;U;ghJTn#QkiN;Un8V=6&<;4na>!-VT`FI87#N$S2l{+jOAMyKwY zxp7r|UAlLHFaheOdNkdCr0P;c;8~b*&ysHKpxkC;tta4p!>AMdovt-))gXO6{4P^U zdiYN{(kL=P=%T*;F1>$8swh*-X!PqF;}?-Rh)}^QR#@ZDM&8T zxRYo*j%CNpKVe(UK6#`xY!df0enom;mud3OHza_fq}sGP{^B;>l+NsWnoovN|Jil5 zf>)7!t$Nb|^pEgQPR*XIeEI>basaB?T^+w!10;6ZxV%6E6hQRtu`}y;91PUV8m^mP z+FjbgsJ)#fP1^l@uHDjGWtE^C$7_FCx29&le37m=#n6LkW&Gu>X=7+*{CPg9II+{p z`H)Ih2-|8!-gf0a{?rNIo7loyjFxnzG62PGz?s$R2N6CqkBdOi>?sVsn|2t@uc1RL z_CcoNJYhrKBXi~KbLtgv>;~3o$FR|NFx!Mr`1Wrt2ic-GH;S#oytQ~EeKYta-gp$A zd5RMtOAdDEySiv~F>IB(8ltu5Xry#LI6clQH?o`wnt{o2*`a zPabdc=>9~B&Ilv&g$xC+u!2r$G}JK(XZAy!BWYsJa-1(K=rYgXEnfi!`h*3n#pW{)}O6hM7VT8!}Sgphv%)*Jn2 zYq?u3j-l%GLCNrDsy=doS_hBnkHuvS5%x=-x98nBf(|p1tZu^a%vO*ZrmNyT3@lmd zR_e8DAD?~8JZWJFHNKMjdloFUCsk7AfcN$A?^(2h7PvJUM5?|eGo}kp=iZeneSKQ4 z0#fVKy=0KSD}-OIdu@?nZHs(5VD8BZ$6ufPsl1bSrcQ20oz)m;jm4c3rEfk8LVAf& z(Iki`N3#l$S$!DO{5Vv4aEvX9I;zg|#;Q*5*Isl%1$@6~jX;Ua0ZI=Ng<8m)P=v8= zUfLP%xA01w1|P)^-iP_Uz>n@y^cGSfiRIx}AaYpN+#&o5%$D(m62r7lFzpO8>&hI{ z8lQs!4Rird@Yn;W+~F*<5}h%v$bl`&ym4)$V*uPP{pVNELgM!h?2UI;jSRTf2dxR5 z7|8%IlF-$*=nd1xB>6xy3kw8A?ZD0nTH`&|fE(AE)^)tWt+N<$3;#fYJdE!iVUX@U zKM96ADOlOeJ?u|m;=0Nn)o6d!=V}X7!a4U{5A0}fs7ioNFN>(!EY2~W9%{93PGX;O zps`e}2^vq2cRij{*p3d>%C^A39fS-r?)te7$$Z=+A?5>tflUN_&A4lx4#;|ZNP569 z)EGe*yDydl=01fe%u2WM^nlJCWY%F;ZVL|FoG20hmPV;Y8Hi`SxGL;w7q)ILISFtJ&T_)}8%p^g2Plo|mf5M59yk z0@WRT?UjOeQZKyZqCPkn9{;K|gm3fi5IyU(#L^`W#FGW$S;ql!c^?QGS2fsMX5~wP zfg7a77F;F8QHh7966f~jf5VMy`=^#x?Mpoj5uCbB*hD}_RBIJ#Vm6z@J~FLsB=gBR zV5kGA>KR|;PHdF#3)n8x9wV)iSS07Co|eQNyd8a+S(jS-7^l{NST}?B71O@XW4b0V z@;1n5TjWwlrXbcEocN~I9Qz0N%&>Wzp+F`-G645oCr0ilD+W zNz}lV0X#ts;9Xf(qv?$;e7|o9r|=UQza|uAGj`|-2KI7AU%7UY55XVn)A(61Zuzq= zMphKvtky|B3LU82f=VdLF^NKNF|9eCMcGPf0L{5WW-dpvB4A?V9LhVN zVKtZX9x`29q`U)EdB;=UwxCr?d9jLel7a$b3{IJI)_MpG3m-%zQq4LonV`z28ci9v zU^3e!*sRzzZN^l&n}ea~NG3KUe*ccAjNvlmo44XK%tdqAZMHVS$Dyv`O?@ zxuR3bPPgFTl$$&=Z9Oe*cAtwz&WMoeQpMb}+HR$>fk;C5g8X=6u{sH^s$gSe*{OAhn9$M*ta_R+I1f{m6X2APy_36@lMp-KcvLa1~>o!&88_#cw9O#HN z4U3M75|)7qTEp7Vz87WDS{SQzgH>KwyvZAjY;swXMzlC~A*`K2tGjp;Om&Qt_);d0 z6zI>uPyCXHXtQH z0*w^t(JicR#Qa9tF3Cgeu&O+K-gU+wJ~xj_Cyzw{#;}{|qsRk%Xrwz?23%{bi&|bz zMG;syL>pP9XjM2AFdq9X-npLj-YT6K;sZI=fkyPdD0N8WRL=nz7pV3e8AI{qhZv=H z`NVPcZm(RH+F7(VtCF{6!5fLgq$%EXuoLB0)@OmupDDD#e3m5gx7ZxUt`=%do^e$B zqj4Tp?7xqdMSmPZ5pu{Cs(c5vQCj3d3*Vr)F=zJZkhPlvz8bJL(?dIOZsPY^>dmEA ztD+C#v6dglg4m((0a<=eqv!k9L&9DLK$D3I%#S4Ndw)jp(CuU_`za1IO_(x#jK^N_ zMW^)mjpxB(_jUMW^W20@fhP1*4PAT%+N#)TVho2(CbJpCFAN76dk4f&y@^0bbmD;M zyp!eL_i(HS%xSCXI)K_ZV_AZJ_p`D@4&^K^7LCtyu|O=%&+YM|3f6C@vA@pY!)fdy z);)+A;dhc_#zoz?0RUR?q4>Ac5)SQ4xR;ZPB*e76`&K9A+tPh80%R15b|of0BY0Am4lT(k~#i)H5Kl;|3OVf0Zyt+b&X-r?1S;|Q3l4_44Tuyq=q-AV^XK` zM7`y+y%a?rax)D|9QMsMDhc03i!A$iq(5vq2^ z2fhe+g)b^LRFoiQE*Qtvhx#(gnxnakBeBEA^X+<7Mx55)?&wPaZygey=u*pa1!|x`Rp$)})8Kt)Y^sg%{@4feWu{nVv7hM)RsLi|AiB`Sk_fuc z(jBUtS%~{ceCs-=yl{DhzYRw^_9czlc7{5x%<%66($Ehu%*C21NxQVAL{l^yi2Cq* z-z92sXW~Y3Mg{v~ZpgaFMMo_J-$Ir~L91(KI3cxCe>HwqCx_79_V(BNJ>ACBV?Qma zU*G|HQ@54>1d9xc^18c?+A~Sux7|d*Vgsi*&+!)6WxEYc#f~S zwORp60r@QXtaDx~!(?wPL5%g)h%tZ7Umx^*mddVM(ny}4CGU}dBVvNXiL4^_gLx$J zeF`JBsHY*QMWMRi^IQIjM~r92emc`yFp*LpRe@>5O|QU3R~pZ#3P8Ri=U7i32AOzyUb5q`8JPfwuk3#v^2abjwFu%;CQWrUmOY^AxS*PWbBehVy5w9 zE+!WbH`#S^FnR#LLw5YDu}tB_@S=WyFqzxAPgomcA9`xu&8Wt}=Ej-U*jZ*zbMp1{ z`Rfoh_U~%8r<_ z*%Ws!NATkq_)m|$tgN;V{ObZf^6p{r8F@2?0?R^}0_Sokrtx@kLl~dyF z$%)0C6hMI#WIa)&L9&W3lgobvRSF0}(WyKrmD|f~8aqxZZ`3a*8sJ3Cg*Mpgw1J>z z(guGLpu(m|eHTqpbyej{t8AIoh4j7)nwPHcT&HlVzP-)4U|K@ZeN|j(WSzl+E0aI# z_0sLW;9_)>#@_XyDNP+I5a+BK2yXg}dt5AT_*`hC$LSl`(g$VXB@E|plPIUB#Yxjx zh0^e+-6zK41FRmXMy^AAWjd*xj5heB+MRl|F*xJrGBQDfWj|HCmTBXscl^tJ{6wDx zzXberp9HL)xG*#LtaU-_!}uKluwrVXrqmqBp@0DFMh(tqPZ%j?scP$J2!?UhXa;l` z;|WhsFjbn(9Rd5RN&qs+kU!War{^q=Qf?#iJNgyn(Jq+^#19@7f3=E_*}I8EXHE=I z(Z#BI?Mg{9Y@IK%*aU??K!7yNHxvtTz@9L%%y{evL1cM{sTdT%h(1R7R56tFSLCo~ z_Su*}7!-8vF}-h=7{7u_Ja&b$fPgWVTDF^yCA-dmC?wJLR)!sIZ-vp3JH~J2u7-|? zVUO^KLUhC2im^njw4**9S*ymZzWHiA9USu+(dFH31y@4>4vy);0gX0y3~%C#&6UI9 z|0LuPtBU)SIFRo(mJCq^O8kPuPoN>S_M#x-gut*i7(dTi4wRDxtZGc(=J$Y>DcF8( zt86^hu3@ZYi_M(H10-THd%5vU?$s106}>mczy(i9Q1Xd>*|=3U>Fb|L-~cemPk%cF zNcYH5!yzq3ZpuR{EXrn|yx>}n>W?57IeI4gHaDz-8w(j0y_v66@~WoBCL z)d^u>?Y9|WHbu4$E&|nGFMc6gl>bijM~}HU_fB>gSU<7qwi+I{7WNsW)Dv7f^#{eG zsyc-dv7e1I#uWPp98vFFvFNhc9g$}+f|6jd4bjYc%NAAF%oc?O5N$N22IkT~{% zdTc%vh%PSa+`f5F9oJ72_LZGKx5QW`R0!44%Jg@1{8&0WXZC5PcPBiE{l;V$8bD+S zh~5y<3&KpO8sfKe(7Btt8ZxkNbC=JxU&f>8OGo2q?Z1hhHsAd=x1f)?b=*Tf7gFkc zC{I75X0!IfDFa7_;VTJSMjt1;Wq08SP&(hiH)S;5@i_&QYrZci;I5+zI6?~8+duuv z*Kut5v{%3KC8hP&q$YzoY%6!3KjHHAC(T?XH-d}&BnQWOPzQQ_^ilT7un z5d36J$#!{wg6zhM+HP=??rr=!7$OpBF_APrvN7C3+f-F0!py4wD|s*focs=u-+?d7 z52_H^F@OCT#{G?SK_;A61+n7BYRque{QzQ@eUexl6QmQ(1FW%12$zUivo8){*`T;* zc@|Ss)(74>vg+{8l~sqghqufFH5s?Eo~ikW04NMu`Ku9G6x~NzxzAa-Vp~ck%Yg)X zlh|HC$WCFjvtZ1!a-U$EOeRzKYQO!3<4+;909duBaGuLvwX^T+6j|(nUsqVw1J=jv zK4xW%YX~_gLFS6>EvP!t{B_{qA;`PQ6RpNsIKp#MVui2M=WWb16mg~Ux>79I zz@X54HH#-iM?H!L@T5o4S9{P|uowAy!h_b7h9FsCNFJ>kcIf5!2aF;)(Ek^qm|GR< zmp!Fn5!4kd#OD`tJ-I0vk_DxAyavGRQpODy2ZpUzani!U_3bj3`#!&o3&$^muDy(* zOkM%+`f$f1>|`S0O*9|T64P+2!|sYV`%c5(IO_c7AhjHcZ|jRywIkm76exH9_3m@p zpBmfQBUNIE7G-UwZht|+eAY&Fv>g!O<|(al14Sh5upj{VjF)KIItT}V?z&Ox>Fiqd5 z2&SBNsMv2t&ln_{Fc^Zr1o4&mPm z-@DRAPGc82bgu{zL-wfQAu!x+p-LK|tPwqG4Jk`y+-Jm(P+p9(B^%&XC=S`fiTw7W z@~fj`A0jbFfcHa{?~~>qh*&_Sj?aA}lUdUla=qj8zOmpfHBk4y*4qH#^Nt#*GnYee z*4Nn#*2cb=Ra@c#U^(}hY4>M^XzFU9S?*JD`kVLuL3 zaeT{vW)6{>rUaVv{R#-f)4 za*uq1DC)R zbtB2cw4Tq9mz}+DyJV#MNLv>I^K~u0P-spW)v7H2R#65DP0y$s4c3ZbX#tsbdXURj z;ai1Mhu?C3)$q&CA`6FYme)l6Rl=*KtdaC!fYwm0>Xz*x6B2T0?{i0`hN1v<8KT&&k+Jt=gx|2n-jm#> z#+$>;0n`)aI|xs}!EI=5(JAY$peUqWkSiIbGNI7Y(ss#6IRkUsgz=_AJZSoTx+4zp zGM0!!c9^B#roDSr9Qv$-iLK(VVFYbYNN~4xeO~sgpq!eug<;g2@`v&u#@Wrp@kh_N zBxq?K$kagu*=$HJd=MNg&nxn4+BEa zD@N^uk{E2mR^ur+kUNgO1>trh@ahEZ%vl@4sH)>BWpfE+efQLd0sb4mui#&(kMMi3=Z z*8a`A{R5#1ZtcB4=2Y}_R0d7Gn0=68z=6nDvyrk@Lk@^_WP%XIDT&Mnzcn@!-C$UD zQlrOKqi4}HhPf++pV>?6#u5{&Ug5Ja(qidPMz^3mi+3?EhAuik@i3$SVvZrEYrPXk zf{c5Y5<&;|u77^3LuQz0vf=2~o)9sGTZl8xu2s_xGKW>Gf~6DztC@TX!s`=$;xv$m zM$CKQKfMc>QTq~C#ql%$E_=l};Fu>;;|q9a@}|xiIt_dr7nwG6GN!o(e z#aQ@m4OK33UmYFwnG`^7LLQ`e1UGQgGe*AeQ{Oi>@?FB^&7um$(?D|jmK@Tl8?8WO z&yhgnog+u-Q&)M5(%s3DvuL5T+}j<`58_wg8L-^1GpGXIo#9PpWMOND2pTGJH(@Q4 zO+NfJv!x`x;;6%HDNz-Na??+8Yq>DJT%BqJ#TXN`vA?-^j09Zav#)f6t9?_Z59l-d zL$A>2!mn}vH0COMY?s80#|tT%L{Gl4mJ6XV@gb`G^GhW3N(YWt;0)}~l z-xhECQf?=M?W%&tvWsL1wWhQokIR}1+k+elrnDv}1fyrJ|GE&ght^7OXO!8uo1hJC zS4Q(MwBGbx%+iq(6ccyWqo7(=CQW9_@&5(Ei&s2MpQrEXz z)pvSLx2o?f;ua%om-sPp`_;Ew)z?ov+Ba+xZy@ze_!Z2O4E(9DQ7iUOajQBL=N%t$ z3h=|deIV|9?f$ovCkHor&6G}fdbTZjg4LQtTKTBS)Qdma6WA}Ra$Wly7P8h{J|Va` z+nT_TWX;k1d*Hj1I17(KMexWn?&3`Q5;J-uQ+;QA>8rBM@6`M&#y0tgfkEF1AXc}q zA7oPQ-v$?V3SYy}jGpH9I6hfEt7Yy-W^`dge8<*QqIo2WboEpjEMJA_C5Jp}a=2j0 zT{i}HJtmRnxAUdp-$Se^@EizpVbH!JWZynA82tfEz2F4z#`mGWowqLA9Gy*rQ!+&q z9+HOE`Rp=JaVOk1v%lKYS`3?n9>0_~!Omi}&izC{Uf@7U74ic4|m3*%VZfwIV1aTDdTRzi_EOjF?t0VweKoBe}BB`E?KRb1C`?; zXf!W?E3&jgtR->ytUAB98jo&CtJ5F&puHQM(ipX}ZAKQpno%`VmBf}}_)P?SM^(r6 zWCgOq>uX%EDyuQ?Tg7Eb@eJq79rP6UE2>#?OZzHx~i! zh2oj6wq#~;qp+yhrMIvl_89j!A$(tGMt^z)yS!?Fk9}4PHLo7{M4AONn2uOWE%7NQ zze(g*C9tmsb|5^giYPstJpN<@cov@ez z52NRF#lRsmB@kIOgh}%Y@+#WkniNbJ5~HPbI_*Qu@>@W(tUhQ}|NOsQqUq`7_zN4o zl44znW8ulF6jcMPEk&=mFp@$66H5pvYR|%y$D|p&-zrf@{ab~Uk8Yt1=Rb$~2GB-Y zw4CkfH=8}?SV;nVq(y(Gl0?fRE17nWN`pOBoFi%I;iW| zn6mTC6eL$Azt9%9SFA{LAco{J&GQqv}VVV@<^x?08yD&2ibTe3)M zSmDU6q6SClhmL7gaMaJHhX%keOONf~J&X4Y^_~%H;2jymS*Ln;#{R-Ptk|=e>OC{| z|L~5_=CcFT`+(T23sPM zJip5h_Q4WUQrOZq5a6^6chS#B~I77`&!n21?=#CbzYj42yULd$-qGedpL$A9rU_xuN zkV~Irz5PM_@Q$l$_p)!)`3so~ZmEz z)PvT8$NJGQpY@|GUt5fka$zysi05{M?Qq@_O#wzTi2+)|&NR#COHm7{ohUKQBAk*$z1oQ7~-Q zF)e37a;gsYcpNQ8FpBeKGqkm{$Mja4(`%u}*0x0%#eK5U+L}$|9d0&9jt{1#G0)P% z{m-UXmDhtZUU-Bo6+f`bVF=dalJx{*t(zRoT@aYHqoM3ha_sa)VxzPgiPmVp{q=9p?Fl57sWVwiuD1F@=nD~M_OYHi8C zf!MF<`5t)Db&4{3^+;^6?l`5x;5EI!65qQ{oKADgs}Jjrw&>66PnzD9Vdp!tJOuv= zyo@l%^u9=Ukzat*gg5ow{`9^6*UDup@FFvPH9n-Lzqn4lX@R|7Sl?k6?R(7Wi#;Z; zdAw^y%S~JGk&Gr1&BOis@p(kl8MDwTTj+FkMm`>-tvT!HWL%c_SFSEI(z#FbwRmQ= zWxgs3lq*t_PDs)^_-6Q7Az0|*=Xe@@CN_0uU8MaoDjq<^K1ZAO+8}-BCtk~_KCfH3 z)w=7f$9%hUzpnZAF&#Vgou9d2ZnVJ|@o2s+2<%Tdwkd!cs{p%vjEB88=md8j_zv@4 zmcIkj=4GSPL>pJrM(j6{_HXdK`zfB62!BWD;*>J^@iI@_Wj-UH>eppwy!A*vdlci`=q4OPVQbaA>hEohc!p1K_hsx>D-@1l6DF^RBaIOXpr7oJtz(W+NXDHY0t*zA`?95%v(Slc5ez-bd~J zFAI@)k=@o7o)dHb+0JN2Xr<$TV_RYn%0)vCI)Ac5-cY@Fb@OpIBLg-u#`D&Pv*+jw z5c`4MEQJc--O1iD!Z)uk%}AR!RuA6=cZb+`J(Wbf8k2heDh@lp-isn*=~Xy|R@Ivg zrJo4%pqhzcuG&87jZoHXK=&U2ibMxo(`O)qTm2o+XR6W=um{`~1iyzMVa|<*vIf^yWHxSBZmlc=nYyaIGuq>@9b4UXSnv zn|!nCcS-}9X+>uQljOoNy+`UHD9p^dK(PLfVD=&^Z85h*J|Tl_ku<`84Qf+r2fg)d zrShMW4>p?cQ2OsbPsU@l9C=u6{5JB28lbo%cfIS$D6baE0`W}2|FMC%KEvzi2l#^C z#h&ogbP&R7kGsvIO=;76w_w4M-go}_-21ffK$vA)mD!@Nbl z9kAb&jap{3)qcyjzctuz1@_x3yxF!|{p_^jY@!+Mzv8=6=k1%n{^xDgu}4x#e!wJc zLlHmG-7AuGKZgPFNm}A`|Ffe4K}gBt(Y4YOQ}Ot+M3vnQk1wvd^;cFwaJ9|vkCXSs z)KFaOydLu0-Kb68t2EWWnEPQYQ)LfN0=}IlH{F#eeCW|TsUBgsY)8W^5L3|G>77Ek z9OEKwy+YCJK5Iscu$Zg7>%N9;Yo%6wDf#49AlNzjPIGT>Pd%=!{ug~k4S3ijz1DN3 z`kpS||HOAmamXd1ju&KLwXgF9F7kCM4#anoH;e`Gyy@C&?1ez9ThFf?-Y$CSDfq6b zNYOa<=ZZN}4NyA2aJW`|C$mB<#dX32yf%ps(0{tpp(rS{#84|(!LE zVzRb*5lBex459`}?g@5oj{_xyCKSUuLoW)Od!*0NA@XqYjss&l-$F`TLe{eJX^!r= zq9R7J@8LW>oiVinR5PFkSos-iqoaLAISL%7h;!=4_bmK-aHx?q#YOmLi^{&&xI{*^k4Qv0<{`RNTsP>RK zYLQU{!GGa9?4s70dNbGel+h7YVPZM~XozPA@|ywMW=vIg56)a8DC97R73Eg|9Ir4X z+UpFge1&lHZwBt#e@2y6-GiS*z7v}$E-yL&9F(CmU;l(ngW><|i$CB=4w#htS*7z< zRvzu7^Vsm841MO_BHb$e@tH_=>76*-OYxn7!qbEGCvBytSf#$* z;XR{&eM4;iTy5@9<p*pNV1>`C>OF z@R1;gm8|Q!TIUchOUUX3Xo_mb<#6Qq!Bt}etF@{ba)uFu3w32)wTyclcQcHE>f| z-dvgQvP%s|hipSf1#+m}t;_l=9_=eDRpgUh|XosXQ9s zXIqMYi0da;s2@4C*LTeHxVO+9ZNldsZQ^keL^R2WbT>9vlaG7M}Ce9y&%$=>J6k zUpzw%=f@b1MracTzNg@yxc6BzcCm5S0uZZFg%J1&LVERea^5sqFUG^S54mPd&HJMK@^EnPywjM5W$Z$)TQ1XfS;1LLM zc@*vD=U$cxJp@8i*04=wwg!J&73>j@Q2iob)PI57wO*Ty7prJeT=l0{EtyKIx zQzw>D)iN73cAzSJE866GXRGcImI#2@5M8k}J*~Zz92~jE*oW4YW(Lfos6F7#Lxbaq zUKPl)KKcaNL>o~FXA(@=_O>PJKuDekf)A{cF=D+kpC$Mbe()t(vwyr>5Xj>al!Cw{hg8pL6Z#&LC*W!J3XlFplQ!wNMaIZ7bcdrgQkf9>%1+>I=BYODRX+>O3Mbszy&lBv$$cetNCIMtvu%g)X9Z zs|RC!(A+vBJaPf#_2u??qc=N6G>IjNNZf6InjSOi8POs72EyX-WM!y&z5sEMvGkpO zT`GIKuS>e=d=a*D=s%%R3=Yt$jlLA>w5oDUhPL=>H4{^E@W+u4OR~VWsMh~WjCUYd z*Fiw9h>dCMLNB$|(OPUe7eOF-2KML+MlO;(@-`s(24eIFCyepC>&ute`Cz~4leG=^ z59mR6e%SZDR_-G2h%F`7u$R0e-uAk7x^{XIYj?u*@S)ZIx>I+x3ZvuKo#)I3RDd9e z{jDCyj$+HXh)e!xFHCh8ifB7@bEj7`-t#*4d)#}={i{(Yx>u&SzOAcsZ@bv}+4H$z zOWJ&n4>Na>jG(W7+T#1k)BZP5RX_TNsw)P%THCYv+DXf;?dd$pOtg#IZBm|^@F$53 z5Z11+a$)aUP85b4;NgAG?`ZJ1b&D2zwVaP0>+wRa!rvySK*bnL;QmUQVNJ|~P_^TH zqUeP6HVVS4fi})VQLgktgw%P>;|LYmOk;4~hg?w$i&p$3q53`6xP|%xNIFiBz0_Vo zUtk}j6+OWVo#Bdl%xxam#}EgdAHo8Itf>EWXAhJH{N7!PHEJ-8Cn(8bv_)sOHGiAO zeW=3iH9rC}TP6pGnf~Ah?BZoV6aK}pU&HX+ubcb1(ZjfiX$uYujx6%x)i>+h+1PM3ZWhoAP~LcvY}U{Isgu&3XsDJ<%NYyuX(?c)Ln(b(|xfkTfa`u{8Io zvRB1)(L5FVQ@{1K%6IAJ`PkPJ_}YG#{sSNEY9?PaTeB_03wmXqE?bC?c~bbU;3*WkWlOq{oPzDL#o1823Vr^~SDO)u)`V7SzZPEeAgpL-Z`4 z^}{^BxeZ#*$7wRvhlc{ID6bcnJC+aL%H~oY?&L~0HH#Q?iavWQpSGf>m^&Ik)~yZk zBN5Q^q(jK&L`CvNzd0GnURUg&MO1z@nNsc}K5Izt1Zwrep4l8a5z8E1-x!x^By7w2 zt*>lHYWb!N&nNzou==XF!e`O-A-;^MS+=z{CTuerg^AaTPuc$E9b6!a@>J3A7{n1h znPo8_b{N*zlf_ZxhH9b))=wCIxXQwtQiV$}H15Js`m%>--I;^uCD7_A`4Gr zSY5}Q2yOCJ2i*-77mFt(yT$=ZoI_9Na{G$kpTt{{br=1ao5QVpFqpOCn9sUVRXCRl z@8$m#X0Ie)Do@taSKgkFYg6VUv*N0h`4D!Kj0T2h%9JGcBS+2!^D&^`d`R*5e5e}Y z^Z$>um%0T1-`b;w|3Q1s|LgHlgRC(Y3DtjN+{rEEvz`IadIxArcFS~FIQ+svot`xs zy_Rku5JS38`QSHC)cGA}6);l*RET9`cb3ej+h={xhl?hz6r1@SOA0vgC>lo5w>;S_Wal>R41 zEbrQL-(X`A{f_bSo~1oEig&-+&2V@hq&=rDs^-psFiz>ub92=919Zpd>M&f}k*^xA za{=>I00SF(G_SyCJrUOjwEHXX%%Ai(TiPFO*!|UBn==6Kc>}pt+<}qWYj+QV-hTEX zyDAcY_%$gZ^?g54-(Gt>-!@f!=cZ;R`$l z+U4&gNadJxe^t+5DL=%pZj|x?7q{-$CSUA}e3TzKoTo<)=jem>`v<*^jjb_gk1^;& zMA;;Nlta8y&!86Hpf2B_j<~Xv+|T0hJwff?s$-)dt@rZ(AW~JiUh>@sk_mLF9gWjM z(6AYZqL{UJgTz&dW=kHF1QW2Ye9XahbGHb-!r-YS1z&+K!B>WbMM9d9QN-v=a$tp| z;Hxba18_!{6T1cffLQ^6(s0x(hj%>UI30WMEfvRbpC=H?2Ee@{{ShV~)ruFz6FwJ` zr`NKxJmJZ>qS;LB(aPHl>t5=bz=9N|srv3B;>iS6AKxpE1*~*B6v&uBeS+`$>hrrI zC3bE1q~jpaaPO!bhnq!eD;5+AysG+sNPYOxp?~C%`Z82~qCoS&1@$#hUv5rS6E0=W z!2YTn53VNGymW3pQz`WcK9-a~co^=pPE{N;RR0Y6XXE1%@bLp`yew>%K4`NZIh5l? z#ajV`b5!JDo@Y?293THz>x(N6;*CS3q^_^P$=x=RLLb@2OP8ZpVmS;e%gFF&p`>AM zi=lF>=cvaE&wCNc;UCkQ$o__dR@Hljz%#2(>B&r3i_g`{#wxlzz%l!TkaCE<`sf9} zYv<_w#q-BqhE7?d1E~XSfripaf$$HmK!Kv-8*&WOE5o`-Izw0RM1@oc>T7a*{fX>? zq7ScJZinzq=67%akfQn6%F*@W3a_s{HQuR;d$(bfOvvI&;Vs+zJll2MFH{O@BYT-B z! znDEZ%cs|?BZm4qF<%1aan!g<|H-ekDwS;ONc40C(N{j` zHy$-?v_qAH!oN4(dBgut<7G+oAAL!`ecIi&TBqzE(R-O;po(lwAbv3@!MY1fvmKob zAASMdo#l_Jo6?62+pxZ=_rf9!SmUq_gH}C3BH|FpPUpygdtR0n76T84CA{M4jI>>R zRa{W4^xD)S<+sPPUrYAbxBVGIxy-kV17VvwozApC(t^8(ypGc9FpmsS01N7Cf{8@fSTfjwBr;f6V#RZoM&Fh$#C(6eP|MuHf z=pg&>WF)`_-G3+ZAaYgQJ@)NqwZ8^l*#~b(b`)49`0=v;jt=Yl&YwKb^#0TSsm&sN*uh=j{ z?_ZNLzJO~hC(OuidK@2_lL}yb`nW?@|4!--KYT^N{ZU1MQgLtgwvYx~--AZybn3#T zYo3wuBM`!jdK|sNJP)`JRT8HAJ|Rew>lJY9V`Vt+?#n^c_cij!dB^(|fsFeoO!sU? z1G1JG_3e+bvWOBl_l>zmI3H|+_7hypx4w7Jm87-2`OX+3w zUpryYd0*sx^qHs|JcrP9wGhEFiIb_unlv(FQh~_j!k74e#I+w;#(Wvz=rb^c<-#R7 zr9od10(njjS6yw&2`otu;5^p=)*z5!R!9K%Y!02+1M%`+^KJM69D5;!>>5*f3%zN3T$jOgRyy^NkL`oAmLi(qYKJHTQ=;IS_8u3J@U`GM-ksGQI{+P)x zl^}(3dyDrMF>2yIhkz0K^=!JFuYDJ~>FXfxS`<_Qi>$QYRj(r%e^{#-Cqlg|q`t7k zau2;IUVtQIh}Zpb=q_BGj)Ysck^=^I)oQI8^%hp?NfsT@KNFq6vIr6dv?X+V7WoU} zpCrJlpETU07Gsd)8JXAqLn&-MwAv3IZf{g$;O;8JlH;Qf-crW{b?1mweEQ#yrjTix zEp?)K&P!&PuI)ts;1s*(DOBu;2U)v#ZP~EBnW*Os|}N!F~I}^~v~$ z)+e3y5yow7s4Qv4zb88;AFBAkSW#SigeCmPJC~s?)un)S2jEjpB|JM?Z1}lD_yG<- zwMzdk5+*~2Fa&J)VWYPSE`#KpUy*UQRy{!KX)YeA>Hz7E(bqFuX*TyUWjzhhZNSx2 zb}J8g(Tbr!0fdS9xzHwu{mo8Qfxj7{HAg~ou_9GCz48pl!FC@t23*IDjM>1P{I3Le z0Yc`uk&JmISk}k@moMp#(&75cz_5x_0c2 zcC(Y@{AZvcXoC2Z1&c@G4Yk1U*ho^o^gd2Ks>yU6qy)E!gAjPBJo|owJ>UMU?1iuB z?&g>=mVguZp6N8cxD)Y{qIx)#t{E9nezi>bA8Y=sRO9=ct z_$ToTs?9*d_qwa0sCMq9W(QvVsDrLl=I52!ci!T}RWKF*861qs`(QS{J+Ym)OT*p{C zz(28xKH4)NtS8vvvhSdX;qzJUUKEy~ zRI_|zuL^O29GqxSywbNnpirQ?)cKk*8su;`NV))?*$Rqm785-4RGspz?`kZ&N^P90 zxWlt?Fj|zmZ$Q(t*m z>4>Ul^V336kc!~BGg-YSwDPGGNd0qP`A%ieDJN5?>0V|%Eh*b|NZnTn~NW$KQhGV zZS?6Y@x_I32!1}L+{xTdx3ub=s(hT*AirTir+`P<(mhx81ew07&yNs$D+sBIZZp9E0rJIO>l?E*vh#Q46vRlb6sG!&pqfd@5+)cw+Vao_j8RuhB+f7K>s z`xNru$A3_#+UhCxzxY}dD_bVR9%39m6q&bN)o=5kSl|BbLk7-E`Tmc!?+;>ugyZ&l zn?t3T3Q2x|ijX{`UGUQd^7IAAR*+~;f0JD)Hl^r>m5%aRvX@IQwdD`i1Kj`NYJ(Nz zY!Ut&czvxlqzL9%QI0kQ&RM0wbYhNGdqgfaVURcqDSn#~rB!byQMVqTv{ox(86q-W zAqE5Uc?Q2BvR_6H*oF9A7Sh}2dRtp8t~;^G<^Ob;lXLQVeL11QdM~g_v>;QMKm+VI zg07fe4zS0w;Naz^mHr1Lc}u{$mTOt)CvhHN3Va5va?YFM(eM9Ucy?b1nSHDu3y`}U zmzW8unW^`mMX@!!2BtF0asx@UTk*=5ApvnD4~C3tNy! z65{LOcbpHv5B6iVJ~@2-xBOLKz>oG@w;R^*0NfCq4w`!n*Fj-Oqg(BR?KcWqpbn>+ zr4_>Az)%>6B6XPmb>q{|_|7Dh=Edq**X;=}n4Ly51aJsxeboP26b zZ{UCU?~W&KK9qv*sJ`Z5s%KCS%Ajb~=MPrikBa;h;=9VO`ri*nKf5Tr7tR93vhyAALH06 z>n$%+!q<<$Rgv(o;QwDH%N>KBPu|Y#>1VN0mVmuKji&#VrrQ_s1L8`XFCAkz_c1Eg z$OeFM*8rWBOq)z&%6Jm+aFd!ljv*#-2CMdW;6Z>zwHdl4cKKKI&Hi>df2O8|zCkCZ zaS!LfOrB5v-~;!|6pL1x=)(ELb~&(u?IW8_I%j%cjz0GhTMgB2EA+Ccrl`GSmJ}t{ zC?(ztu7FS-)6EB%=?F8u6}xQf>jCR$P`2qJLW}P;_dAtWi;r!;W0$?Z?ved%&xMwAmY64Enmxhs$wf!UQDP)|g~L69l218-$Pu6s z6EY98={iJ><8mB$3&%f>c@hOCW+ZeklEcyq-o}OuH>?MoS_^<^Z)LT~$ImGNE!r#3q@vxqlX+G`2+M!i+# zZ>EWFIdz>Vsy?CB5F-|$7Qz94a0-3|{W<*2hu$pGUcl0R-h(w~RIs%CE`2^uEr*aJ zFLs4g6Z&qucoOr+uVUgr=Rep12#AV=mF_bq=kr|1-vY^A${W&JPVMS*tckin3cG)V zkrB*NLLk0#?CqzQDhhU`^s^{yn^qH~T3yZfHka!EbFR7lf+-Nc-j%hw#C+TQj%U^roh(k?6GK;ow&C(`c# z=!^?L`K`%5-MZ&N-Mj}3G4Vk%;%)w^`w^{7*@n**p}zOR*tZqXlK9c*>fwCJ9fJ-i zK+$U6!x6JhtVJmv`iZz!uNI3i19bwhVyoA@1LV&E%HtXsPiD7VKlVt*> zm*R#fKDmHumI76H2S}BA^}=R-B;~~mp%AuxqFS!f)$&1!ok#DO(JuZVl|BGVa(n8f zK`qh+{I;V2LE^r^azOAy`}X6hCFif-{dlU)Hn1jUsmPh!$IzuPkWtIc^Dp!U$WnTM zpT@39&|f%GHxaJol%N1ugknV{q%M|R?+DxnkQs^uv{z@PVXA;x82MDHy)#QxEW!8o z7CQByY@yBC5O_RssVLwHNnHAp5;qWHB=&-AzG8F&`_o5Oj@p~{6%pG30!2QBi@`IY zZ?{M2u{eTBCJk+u`*v!QRxK=DweeAJJQBN#v&|mQ#Q1oiEk#plD^->na>e{d#`Dd; zGoD@W(*q1-Ke#DEA$-YnBJTC5~2$+kD zhtJGVFA~8{6l0#vs(O}d$1TFwux^rxGJMT!V}Tg_2dZs->_?(+5a-v%Inq_n=HN*v zDFIHvr(8JJlRaR5EX(x@XDb>F>UMD?`Z6D4A8->(6l;H;lz#uD{|ZDUo+~j_lj9Np z|Kgw7oKAe3&(+N|Q+qDybpqAd=>k^>VBNZnVX7v85jLnUfi2PuVC&Mz-#sU zupP&Gx0ZgBU~%4-*l!_*Zm`O?;@}#8z&`i((o3WkE2hR_FbK=npcTTV>tFC?kf7auWaait$AN zdmh+KcpQsQ=|p=&n5<$D#LQe@L`uWxii! zgN&Gvf8C<73+Co-3a9dm)cn}`E+DWU+QYdH{pX~=L6q%9;9q_z3xIpT6LLtlNB@g@ z$Q(o7G*(hFqpL`PS)#ZpnbBX{Z)#&?MlIfK#0=DDC{|2@zaSS>@MN}h1j^Ww;G(uB zvci{=eD_pV%-%HMb+vKODHiRfG@DH;_wnez{DAh&;!#Q7?0m_PTz__#_*9!W3KXDK z-^hsp$y{J}{TM}gqa(egHz_tn#kYWLR-#Ul4M%UZnwyVUMh7S6`m34?a4J}KM7~AW z+GUHR?Dr{~msa7SY{FhLdhQhjaKxqvPRzrsx_l(Q;0j?*7EPExu8?rZ7QqOqJP8a->5|Ye9;`c^i(N* zE2Z<(Dp+0_o0?zBPnGgN{U_;yj4z+^_a(|tjkbPY;l^kSfBT=U!e^5yP9Qs5e@`g4 z#?*U~%8{m1J4-Q@e7>V0?eU03gW);%?Q?oV#=;(|7?d%=lWPZGK)vaSr84ZPD|y14FH zQXADTF8(rcWe(Jcv%k`-`E@{U;{7(Q6pqTXuxA^5;m``<%@5*=6njM_mi`GI`ic$t z%ty3gkli*Zx2gLx+50MrbMiU0Tq@Sjay|gqSrg51tMzbYd}Kq^$TmVm zOg2YG$yoXyAQmBK`tYGt$JS!|QXS(PBPuHx*&mH9R5PemKMYolGxjBTmth6j!nlq8 zXX%Vgf-3$~)te^FSW(x=CtTqMg%pWuZvysF)mgz9@zysI*zb`e{Z-~r zI6c3S3s~HpnCS4&;~l1#c00e2iilcOsKR2R zc~>ZLcM8Wjv_3y+w8>JC1>MNN~>8v$W;1a^a{3)cR*sE z%7Sc?Pxhk5k@u#u4SgMOrFH-{1$@N!M(>O_UXW;fcFH<1ptR`8DtlTBSchkl{du2M z`V*R#OxY4onII_&R@e2F^gQE0<3Jzl8JSx?BEA+Xz$qLrKwC9rN(C5)Vspu^y$-&I zLP_nD&xsfHGodSEp}x%b$1{fpVw-h6IdJ_e6p9Oz%E2P96syk`pZo3dp~9)R#_f}X zp*`AuH$(+lV+WvUB`GtynBb?*Vf7PU-Suur;(ho=lG0mtGwsS+&`tV z+YTR9!b5ffa?E&+X?6lvk9b0{oscgHAj!1ojU*_^iy6Ta`I|D;#Pju=1Cu#&$RRO< zj`)M(s{?izj10URb;I;{F*4qP)KdFx19F*)@%e2bch$2vM!m_8pdA0fW#5KWCVcLA z2mRB2Tc6buQhiY?`Z`QLMk~@FoD=5CvQ9%|P)%YiQ_W!VP^DX`|72+f^V&~JU>#0Lh)z0{xomZkr=fyW-%bkj> z%hwm2w=XRsl!a}FXA>xxv<8>zm^No)euU);3RP7 zR&BA+2-1JK=S2?y{OtaUseOcS-PF{DS!ln-7p9cAFE5OuelNHHd#vlQrcN)rClGv? zZE!UDXQ{|6MwR|Zg|4QeT4q8`r2_A}r7PB?EJi*8akGkAmoL?DkT01*rxmp)zIiv6 zZ3zUwAk^OXqCd22&Ec%Bcm#yU{W!5S8Pu12Ia8r3&k@vzLnYzvxb-}3Nhb9sGqoi% z36@Lb8m2Azkc9--`GOg8>Tv&SA51x$AD*Pw6J(=(S<9T)cM}#(l#=`4QUZ~Lm9d-+ zK;~L?BMs_KxfqADHz9FHkoi%E-?bHoj4GTMUpC>B$E+_d?QeV3qU=ve`l=50>3Wyi+=P>bnG9P8t6cd{?x!o z^l=yR(jpwJ?d9gTTK0UtWW}+EoXfC1II3QV6r0%_ST1qw-UWkiMYI~X=`vX;QY(+< zZXQF(cpj@Of2`{E^fGYxM76kuu}t;@I7Kucv<<^_^3>BLw~av2{Bd~~&;Z9yb*7kcSgv~X`zrMml1Nkr}uU7aS9pXD3#m&y=WLIOXuXeZcVAEQ9IXlXE zXK~fI=h8xZR7SmO+=jGJYwSSP?L?aru^KZOo0v)uat4W|{L|v(xd>ZhjIF%5s+i+b zgbkWY?a_5(WM!aB1%?JFXH}Qki?z-wa_Z}3AJ9>_29r6wHkVEk=Z*Ce9;t})ufgYT zcya|Ymmz*P_9ZBe)2n4T5qu%y58{r-SPy%@xG-R4w|WrL1GF^Y8)82AoYRUh;5X`BiC}p^}l}097xl3_&Q0uMPQIU%`gUS!(tJkp;)AgmXeKYGws~E(4 zi8-t`wpo32y*JU!T^f56QH~R+Sw@GsMo52Sm)1r9{oe$cB;1TkYWZDNx22cCu9%?q z#i-cDDexuxL&7Fxqh*iL4SoYApu)f&39&~6Q;)%Z*}IZ?>;T|OS4IW?W4{BOM)=JG zqxZ}8UG}gC99$$*hhGXjoFlI+JL0o4XUy$mzYL+R3%D=u`sJ8N{ij4xDg6uk25YZv z#;@SNY=81pe`L7em~h+0E$ACki_Z*;!={~w%(HE0BfaTnI7jVLY!^l@;iD*q8{x7g zr{O4yd&1y$@Zu69eEkd3e)#Eu=K6zVsj9!&7as4rF$0#F2gy}%DDKy?j9|%mBZzyH zMqC`chi`-7Rfl^5<~CdpobpFL!;QhmJvy#A&09%n^yBkY$3ZO5Tl|rBo}>aBOz2sCKb7^47MDzU0-cZL1tSPM1n1l43q|CVusGEDAdk3(Vf|@UIzblB z?HB6hQM^io$JJsOoQ{b#`i4rNhhWM4(^RR#e6>}wVX4#~ADPqZsCtfFwa;2F?ZNe! zkKK#tm*V92st(57zn|6y&|jYn2T?k6xRr!{fklQ|VPW@PfH|^Re$_AhyfCF%b0JNKi2p=(e*!XZxUI zzkx14iwaU5&ZePsu~~X;hmo?16lm$&HgA`h_g~8#(*14t6vf|$D(G7gFe8*o<|K?~ ziD_JWT3n}+4uR1nno4Xxc3)ygdR$Nx#1q4D>SPDSl zm(BM(IGq$oiZ#&K=_{Fit>!Ll4cfzy2KMgZ47FYr9IY)GiuFNN*Msv05{UVtZ?OHs z_pl#6$&^}6Htj(+ZL@Om4xMd;|LeREJGc%Jd@X)d7D;dw9&WpO(MFye_M?Z5kggs} zHY!i>OMQuKOIwoJmim&}rnF?>t`LWd+T*K?MAlVXlUY}ZHh20=t-DRt`tVj&>zb*F ztZQV0+KsP~ElXB$XkQtYEvbskZj~0^r-~1xm8DsUqDyO&MVDsvb*Pr?J;$g*0i+aJ zM1%?d-7crfS%knTx&X3>(L6XoJKBPn-=4lY74J9OjY|;Rr@IxQ&nB^aH6VDNIR{n zI!P_NrK)$S>hoHvI7Qy>ZTwV*^X(xO7VJ%QfELNSle~u|?_rg`L;ceEC-=zL9enMU zujd%wc?P^*Eis*H6^A{lQ}uMfuJk>g4yg(bQTD>>Db!A(&8iSo^z3~qD^Y!Cf3BWb zD!c#Er&D(SwVujB&50J+feGkj}MXlyqKgX`|usz&(=_8W=WBCEl z`nJ~JDDcpHa)O5DM9#=2y7`3s7D$@~xN8Mm7!eTY(V9AH=@H;Or&0CDhM%7%hPw1f za;QsxnjGqsBMh~$U^iX;L{0i5iTul>$^6S7N#?&dN`Cf>YF!rT(PaK(efb~l%YTgg zb|)WyNex{f^`(wv-j@V?ZDjU9ht$ocl?f1-DM-})(rU@CHAR_^$5!%)~e!K z516HLeP8mZc*}<=)~0|!S}$3vT3>p7qWIE3s^ao(>Gko}cT&>}MTs0!{wS@p6T8_v z_EGbod;^js^!TG(pN8!f>EAq6LhgdR(=aBUwF;Cl=)PZ`IKst=xKJh zD&0k9g&ubUi9NMmZQ9!kMS^U%s|>RK(nuT+2|j+eR;9J5Ur?qjq_nFwMHGgjf<}7Y zAgyzt%-N+{mn|v#tgry2Hv1#>#AdN^t03n?wF1NHh}fx0(CF;s$l7;(3YuYAlJ-)mwnf-iU_Oib0=W!0I&Z@^(%}-=q zC3w!p=MT@fH^8@~*3%60ZK-wDm}J&hRIRL(OeP3!jH()FXk;$BH>t#jU$Nn@Fi~ph zI#o)+pWGh>N5_D_KP9^`Wt}v*PryoG%SMh%li<0uUR9v=u%MN%)+OsLO0@pI6xy#^ zpHiQ}qCNiBILYOuk8i!H3aiI)@z%kjl{4zp=gK#w=@XRg?xdEUvplJ@70Sx1^>F4Y zLauw4d<1xAtIHREqx`q&0 z)P)6m`sEVfZxi5$^wOa!&hT4!Gn>D#;KP0yg_zh^%S{((+m4W#Hq3liUr{fuAB9+jUt2h(P1w+%k@y;JZFS2<k-Ym*JP|Y(Cu66H`UhI*#ZM@0UGOIGF z+E0WQdbEL`IR{jq_NwY$%C-B{p!yWC`_y3fsY&{@=vQ{1I0vXk`qZHMv`zJ?MOCs? zXcqdk!|u~=>C?Txl3qY5CjcAt&wNEC6=Gnv4ax%gqynR}IS^(~pU)D|*>1sYGLy4s ztW+RJ9-*=iklgb=Kk7h)=;rBDft3&V$hrEHFJ@|w_K+~A5g*$0wfTFeyjtZVbzo|9 z&Z$9ukoEFr2cJX|e&TtYx%E;z?k|uQ?Q}wJ-I8U2%Saszi)s=&fNQVwdPgV&cq$f56 zP^yLHn{!BYLds=j>PG7_R$c-V^}TsKZ^53!h(j zP#R(CK9SFIgn8HUBMLwb1WodhvCa-pWgb`{InN_fnIr=CvMu5Wr=E>| z&G?6|v=Po%V-dhx>)Aq)6AF`n!4#?~Ea>M-diF87 z6jc~gxqzBDRsuKJ$E#o^PI@M0zCDryJU>=PF;={X1G-XPX4@x#Hv2P~o8vM!O!DmY zt#%o~;(i|ONfUHa6@9PLxRc~4bjQ-M&bsyFYdNp4k>+$Mcle!8zO zRB_wjR+;2|swasG)Fjgp5Dd-$>Bnh5VZ4xNV4!tgtGNy*97yQ2Y6mU^glTPr=ai-L zA3Ym3!i3z=Vm84)jF@3TAMkBAY?V})_}yl+YrA}qo#nMW%c}Xhtd@{oxLS17;|XT1 zq}CA@Z5ff->OBZ591+6|KSXqC+n^S1a>anxgvH=}cB%=Bq*hOX~ZQdeGeN>csD|d=NAuX)B1#yX;ry2^V4IXhm>| zB(Id@7x4v6Kq~cN4j;@WkBg!YN>K+9!oqXpDeU~3SyLxZuD1>IxARrSo@Ga**=S+~ zI^wCvBo&@H4E4>j0QvFs)zaR}W`u4u!@!>}udKoS%l=4g57%DZaSpq_I&m;*PhWg8 z;id;>?X%ay7I%0EJ~3;bJxg|qF>9NhAue=s5GnJ7&rXapk$o$SS@m`qTS`UDO2dxa zXw2H1TD@;plf6*!DQ^_Of&FhR>q-oDRD4Lt4zic&XtlVu%1Ddi$*)M}bs_|IwcrTF zR7AAYQZFCgM1@;-y(1q2D@}B2RFpkeBPOqQe>~=PhUj(3RA*5oIpnf{h`F@>KoRE%DN`JhSiz60;E?GlFWV19oBp))}SOwUM1enK_hU(xgm++fJ%Lg)ytkPPHN5W1jW6 z_IVv2+KZT4zzBw=bN*S8l%~Dm>_Pub??X|L;jd8~Dv)6M(Y-HroDCzjPI*p{bXi3fOsXvo%ZM3D8f4IEp% z=Coxi(mANbqXOH!|&Xt6n-$sbA z>}9XHR|!8o%T{|`?|RKgm;I3?_0l2a7C=Ua|Fg#b(M0Km&~;3U@WD(%zLM3&z1WJ`y6q zC0^GjIHotOu;33OOIk{V=xStY!H$xMa5ONh#a?}ThX#U;f&Ku*yj|vX?L)`zOOO@u z*@fdfS+Eg1Ae?=b>%fHYu%RB;o{8byt7Q2$>SnjsrB<@V<5H`>)#KQ%n`O&dWzCyp z&3Bmx?1#M`2L_=aP6w93_b)prQ;kB&+OU%;@r#F$5Rx?U26^mq zs7~QZONoJ`v*VU2G~uXC${>2sFbtFTPp?bT0@)f^e~qe;rx2 zErgAIL&<~C&*{O4TNlBSu|guW zvoD-EkWTqDqeH@KAh5-Qd{SQMv3}5H{ouUEa(FDivm`twLpMM4y0#m^X}2Tr`#4~} zi!kn(Kk{k55gc%v9Za~=86c&Ve5VoG5fk>ae6Q=I?%1cdohACP z-qyv2)JzAz>89@VN|@6-0P_ZqdDnSlbzO$zIK&0Io4vNM^I@4i*Jt9po0x7ikq5ZX zRP*Pt?&_k?=PkF#(h2C}yv<|o_qZC3;NM3zr)Z#RO64f7l_!}pQS=X)Hd z=;2no@9p%G{=3e4i9^%IDYvJscS6{iVG>Em>86vq3l)+Hz=HHuby9k0I6jk@?+Ya! znl*iEq&vN;+o4tOM&MV2iDd{$<$8PRuX!>DKnUNk7;|H-rWx`{Uq_)z+kJoE{1aN) zHNh%%v3}cKdr%W`5b^aSbE8wa*U{<^4qFlk-oM1@@7yoyuY__lWu_Y$$6iFCjq$S~ zc^Wu?W9O12_9u+21iVC!if|nqw}ggT2+oQ}P8XGzEy?l+r!C3$b-pJyYu&Pr3Bjw< zoDg+}y@}e;`;jV$L9?bcUMsUpJZNDvo$vZPMjDf3S4PFkk0^ujn!Y zep%+E21dNgxpcXMiZ75HgHFv->I*xUu!Hl}61%&!g)@P-c8gUVy;(F+zBd}{iy5ti zd9@e!=4FFramTN@id$}f{i{GQcTyl|Ok%zEO|+cu309fgDG=spYU_1$i-nvDyg^@1 zsBw#CfPK8j2~a^hVO*EuZZ1XHFZM&Tx$5XZeVwQ^8=4oox7l!E+*5zSdP=OV zCMUl}Q?9T;)ze6Rr!|cc!NdfDnJwhUScn&>dcvMGhqfvT`z#B9o>fNal{}>G_uL5T zatlQPkeFc|IF!Z*!})o)#_jDUSO(3R*$d?%dxB{!bjnk%Jh9G3(=d6;mS|=MiiUV) z?+<_dRMJG*M>o&uZRa9A>9P^cle(*0`&DDjX4EO0bG9RKx3&gyxV>3NwzTs#^!*SkQ1bNUQOvt;#nCk;5F zh9eemos*?u7(U|=eAmu74+ zcP}`j#?~!k)3w0ot`jp&bm!#QJt%D%?)`ILg1o8OjOT>Xr-{qWkwbVWB1*fr@Z)vt zaP087ca+cYgOS47Ca9Jm3cn;2GoDS);7wyVnyK}k>(Ytz1oU)C^LFSkW&xtFAwIo) ziqG#JjvSx|zb6e@qAcXzGIxCn2EtKv=5J;@MVtBI#Ll~Ws?WMOOrl}ke5M3-)9{u5 ze4SG%QeQl?PU%Fq`rUiVufM|@b5^`HivJfMX8xiLjS6dhG&WomT`%@ihm|>&-xwy0 zVsCHzI+qQfq~8*)CgOYH9bhY(@{pIOjPT>i>h&4?3)=nzOZNI)nSXdpRA5V5eZh;5 zKQ51#bnwRr9=yZMKIAd4c~2!~zRe%(&<=tycLKx5lp`&!lGO zQNE{PRv`B6Pv(nJ826QjT4Ps=qp;Nsh6KT{e7@%@tW~Y?kE=Gs^W}hmITK~e8-7X( zPRQ`O_aiJzG9ThqEFl(eqiSE+S7cs%7fGnjZW30MGE;h9wF*i5ar6t-2v@T4BPACp zGKcL|lEWH52YXI2`w5S~=G)G+4Vb;9DZ`@ZMtXx&cl-*Wh(DR|&o_@J11m5~KG-Av z#iKG}Q!F5SR^~NSC80~gG^na}ZO ziaF-EXY36@9z)qW)}rPO_wpRWuS@1k9wu7XM}3YfGiaAj1}XHU2nWN!K&o?5n;sSm zqEG?|06k$_sAX>ad2*SvsDou5#2+Kr!7`upm^YuIep)=jAC|cz4Zn3&jk3fh1=F6M z#kUsu*6i$HkaYgTJ{WBO;gtjqXJ#+;CT8~Sf_^jmGct&~eCzId^tokb50inJ)%Xx^ zC|??SW;qRQ_efu4R-2@nzFGYyx!dP5_0k3PPsZz(@y5q$dk4&nZXPCk1~10SqUx`_ z*@im_M{zj#$&>UK zNXNWKnT)A~YC9o6nd36jEx7Z-`qM=4;_wqz!Gu zvt;RwJ}yJTgeYlS!Dn+ViSFWUg*8~bMe^IuGfCf1HC@b_*)dA|61?1IY+r9o=O z{^<_U@MR~)t-QAJj$d2dk`g(X;UCl-`_F1D5tgfVdWo50-(PVmFrmrQ zHBeay*)0%^{0VYN(-Y1(3mu`$c_f#!i!EcPrI+3oQ}J7qW51h*#CU70F_M9gSLG*( z!P43J&weMZVra5tXqa7_r^|s0%%*f4@zsFP-|*Rec$W`m*}!%lJF>1^d+(NU1M_`Z82~ z=&#!S%jv7n`FHC3M!)*LV09DYbyA;G)t8y5FTbz8%)e7#BZ{Vd>+z?Q`ZB36Q`LvF z8M}W)ef16KjotiJ^Y>&*edRw+^lboj4N!FrRCS4y1TPo3Z%Zv$kSI8if&;as zi^$1BX0=z?MWW}?r3ZjHKog!V-pWhG1b^nOKPIph=GA$cyh)&K|EUe%2~=vIrwfj? zFcI85r{|H!s zJL|{-80)LCg(J-??Ck>5b;}8xXWU4lF31tv*5$XRVH>|f#4ARFejR4t*qkl-04I;X z?xZxqFua)FF4;-~w|HIRHPoyJiHiLcH&n&aTaCeL)wo}#l@9h>POi(_u!ARz!e-3f zwd&_7iK|m(Zs*)&o7)}4+-?)*c3#*H4$uST4T@40yc!bp8xFfV!B%05;#PhFxo#0yx`!`p7hftuS>l5}_RpS<$=c$&wP zzp4>K67S1&bG6*m327?c_e^gsMd^G5!Z+Xd25XhZNl%AtnUrITFVdZFM&cgJ)mF`G46Mnl9GGh|cJ()A4;7t|XO*^3MXnPHf6n!wmS$$iU*T zw@IS8Cj2dnr-CfPvwCi1_h&n5FdxIy#`h%|Q~T-jv65_n3+Yfndo2aFzKo}*;t44W z#;EX+F>3Ibn+ZDZu>vputSfrQk4ZyepVxJ8O;&L7!b8BPX>~4#p5EI$c1DX97FjOc zS?v!`bo4eFV?(tNiP~a`@6s;QWDo5x$QZ=}@gmRI@;WX2?+R-MTHw)Xz7=|tC%xC< z4}K^yNp8VQqcQS&7@izHH8S&fVato#o21|;v*pYov!T{=doMB2D={)tJJc`_L{Hvj z_gnSZj8vWNl@VZYLm#Tv%L+O|*eA#Cqkgqg;ct3D8Cy+0*R{9MhiD8@BFS|Vfp9_J>V!}{~ zVc90@8IOpOXkV=-5#~LY_nvV&91^sMm1G4Y|M&{lKJfQe@Gb}$R?ssR1KjWzyrO&^&@g{5O+5;E?jpaJ)ZP%MFMz5!~jDqqK*6(2MT+u-vhtoMNPgKc11 zg-^trml+liGuv#GV(zZ`c({ljOa*K{S3)K&9|m$ZDNJ(+9D*4K5>rRa}-Ado0Hq)Tv0tyUwKzV^4NJ?ZaH@R#NJ0s+ScXP&}gftO1kS70xv z5x2=#pO%4#olQwZ22+V$EZFOgj9kp*5XyzeEF?*eWx;Q9EW@{doY($6GVZ&eN7c8} z8E*9fcekA%b7*FpNg{Ydc!z9*vA?BIueMnHkG0p^8-wFDR4)N?t?6mL6$+CH8oNo3 z9SLbzlP5)9BeFYaRu(QkUeKIpm519-yt8jy>nUG!Ujn;Tm7yMl5qB%uPt07 z^;Dh9e=<|7iSLEZAu1F`q$*lTeTU!Nms)=@{L`!sezP(59g?l_KqKXw}(Db z7kOD8sFx!7WA@^@DQj*ZUTqg%FbUUYgtG~S5@Ds(8JdF6r&zg;$!0E&sO!6gA$nX) zv1;lCSY%moW{%gYss-A7 z8KJdugxsDyac*yy2~O#=Bc;#muhOS|y>Ev;Y#$5Kl&#x-DGxFe@}e!t;*H&`Ep7)9 zw|Dc?huRe?5bVB=Nj)2O>$H(5T3bd zj7?9ATfDEZ%O0N%HKYD)Aq^TL5s8{aNL}Ei+nazbV#PX7maBO}U=Sj0XQ-_TB|Ns_I<$ z&yc|c4enS`V?~YD)}+{$2(1~hhYXn^Gcp5MK)gV;M(M>195Mr*3Q2GhVRsxzt1Z^v z?8Q^Qb1U|=f?9PZ0TRM3ft0I40EHPxAw*0jN06NHgdSDalPj=b6?G{CnZ18THhrZ% z>)aK$ZgB3hs77Yer2p}Ddi2i`wAG0&k?W-`CI*92PqgU=AX_iZhgkSNuMCM@QHOMZ zSTZnec1CAhqBUv^^7Z2G1V1% zMh1i{6#SE1So+3B_4u`d#m6rTye3_iQFU!&KyIXv_@!oWQnKm|(Z`?y<}t0QWht4^ z=dsTk=S5(03cRUGth&%BT1Iz(Aaz>J@3?aW|5HJOg#y|W7Ni#{S0paR93Dpp$v6Ga zMEPYP_CM1jHxiad=c~}4RX$>vJk5z{SbQLf+Olpd)GhR)yb>$r9fV}V<4JBeJS$13 zB;3z7QXtmZRHseOr3;#Z?^#$MqLsm;jr44I^or%6;0 zJ73^T%Q{baMF9q^kAN;C`txDRq9yhyw#!j7C8!ym%br#;0m}BL9sH&=~!K0_7qV?B!KSVXE{$(=NH`qvcs z7peLLE#i$twTN`fxiu^JX zr9sg@KQDvFUl4ypvAfj#Ff*9hqal^gH<1OEcjeH$(2Mf96nc0zg|fq*^XMa|5C#Yi zrdqE#Tiv)62q`#{D5cD(?Nv@CP_@r|Q2+u)VLZ3WsEXCV@`avCTx|b8MAr=^GB9hf z(p$yYynCp%Kh=@7w~#%4v!@X8X2XE_E#EVI*9t5iZE^?SyJRLs4iW}xY_=@-n8SuQ z=N+tHSSpQNOxU3ET(5pK{+VQdc=cnPA=2-!a4+e%(2;AUH$9rCN1SpMr&fb94?>ul z0+_*N3bZi6sWsQ#xL%s$v9+^1UMD0D+tv@bLjJnwKU^f^r>ENY9a*AbXw^x6j!z^n zF#rw7Df{f{<)dtKWEn+$h?z%9xJJ+`Bj(8}Y8Ql$lR4?tPsXknAcBvsm1QC8zX)uL zS4Xe>w>P(7|u)=ONv{zjNNXA-F(9fFvfcLXwb10E6cNk&~ z#+7{Pdu4R0?q8^T>V{B()phyl=U1D|#7`X|eA3n~HtI-~S6)_-p5IkomYx30Qc7c3 zJ~9d-=+LuF?%A~4%k9kUT6RhOIIPY_h&Zz&{&8Z6e3W-AH+@Hl%8L7qhx>V` z^m8o9JfR=UZGkCr3ZpjMq@mM!g_Er8I^-G>7Ej}Z>*Q; zgspEJrK=2hvsHW*#zZVKnfA#_*luM4)kJB=1bWJBnjAdPeZqV=d%T(P9Nmo@(mHjK z&xP1gm7U>x*byu*u-i^nK0rqlN-T_0m+QNZj%=x)iFTJuuXhc@rukmJuUJ(Jafp9a z`7m@jYu~B-Vp@BcakxW72}j!R#&fB^(P=y5e=nXT0NPmx);p4s5>w-Gz-U|KbOqNm zNrPDnzs?m}5tjSlQgsnX@Q47CT!Ewy1Ef(Odbi*UhQvvz z4GDbFzezNG+WwrB=+6m>{*?ML0GHzH;0gLVvf~_JEi#5wezj>oF#AjDPwTJrZaPo> zD&C(Vzskg6*Oa-3FR?wf%J~9`PWIYVIja>7N|KXTWndYjPpjD_!WRPHvfoLnjnmJc zmZen*INBIkMHc`X^j?V%h9De0`a_kX)Vxu5$bEw8oz0l`RpFZXnsjBf1x)|}n$_ph zsUk?bl9J_Gkt##~F2X^hvyHs0@$|vUn+%aZbCE2-!Xc}pXQHqsS%ty=PFwIWoR z;1zX6-{QTP4r-T6vkZB&v7U1KqX(sZA`&m+Rifa>P2pa6V9WOrz-=3RGlNRM;A9{F z=O|enPGh%Fx5Db`cQ(pX;O;iT1w79|3T zIfQP8;nTX>OB6m59daZkg^*LEklQN-$kNfccX`I$(6lJaGw#8r>_w*LBTX9E*}W_1 zK&1dlhe%tZq<9RK2F*d-NOmGa3kLrKM_l$lm<7n2pQ9J@jVOXYLl7!fU*(FsOiBsKB!)NN^+*4Jc?RWICYb_o zd>Via2y}vM(FbILf2dU{!v(R|&JvScJoc;)L0IiWLmqlDF~7<{-?-5 zvnpiCq+H(`IFk7$k}FnPXP*SlD(su%(jH@KPAHJti0$^FHg{?}KXB!IG;YKju9ub=!35SvHEfc9fTGf*dgYUjn{Xc>5oVWhUe90(vkCy^bK&ffb^YJg3 zc#B`nO*Iuzm;aLJmDCa_#=Ju+y~&{MN%78s{ynZG?~5tH=oMoM{2TJKp>x+^o*1Ne zn`RdK>x$1S>kq>4 z_23mrdTeBJ@TL=P+ecbR3`im@I4#7_=FpQ7%n<(zUUt)1b_OmYfo0bkTUE2eGlZ3R{rJc(YNhKP6?zEG0w6ts)Y7*a9_F z^j3Fhss(#Jr0WpeCSjwdc8mt4);|-}emnDXHxoa?D>?mih!a=31AS=DWoxYntXS;yxwHIOyah z>tqtAdEE+JDG~5kidsLME0iR<+dlv*VfA#r%M{CQ@8zwCWnw-v`Mi<_zNJiD3A2@I z-^H|#S?ItHCC}K0WwG5Alm#RW%|M)gz$5fK0BHW`xdJ)&S3?a^tTF^1P9zx$__n4G_%xVfbYVd!<9 z`eW-Q&8TnONoD1Y{gEWP@o{-QR$hxmrTiJi$4#S(igC@1Y!V}z9uzTwFDR8!<9|WM z<%(W}9}0ehwEpP*AM!>9);pvsElf!a3K(CdKxK@Q-6A7H$G$?f34LnXRO5W-;8H=J zZH>U;{|t_nm3JdYDDN!g?L0szo;#63&o2~Ts|M4*i1pDNOmF-oeK2{;`^;ej$2q?- z?xz(LkfNi?X!{TfuB1%}TGzUa#R5Z+cIdAu6sD~us6~WS6JmupkR;{nMEjM0*;KXi zg5vS*T(SD)Fupu`RN4Eg&SUR0Pk*>l+57DMKZ$}juU?tUK@j=T1Gvh{!Rkqa-@(Oy zP~X$Or4Xm6;%Tx;?DMd4S5e!`> z3OU$)#gnJ*ot=XdSCC>=%#paDJT2vfDL|_3O~32pFkKA2ll74G7dw zv^_eDI*9%Y+hT_=f}*oUj*?qe&NJP~NytyB;R(|c;ds=DB3_FKiXc9Dms|gdwAUf0 z1#@aQXk7k9K4i{mfoj?z?oBhAh}X~^IGU-|T!+NKZZ2$RR<}iVe`LG54~PXVtv}tF zIL>^Atxdc}j@#xxhG_38+!i}ZdA?zRo{zQK63UTbBXrp$%72DRN&U-i;2pSH70mO% zY(ydXmxrZ=-f(c3t-*gGP7;-qW7~jQbS6&gdP8s#oiTy-Ha;cy^3UF=x>%G;^kwv= ztHh98C)`TZrQbu6sU)nzS^!Fa)JY|FT@4X;`DCRU-{=l5C@I=LX#Uu&KjF+s2~ywc z|1kE5AZa_BPih|E&aVGNkWJH=GDt*7H6o_;M2VWHRAt$^AY)XmKba$oM%VW8adIg2 zMRy~9#(pi7HuO*II@v0n;I?&^Xg|WqYH^rrV@XY)ZvnGW+No4jqG~-A=D{0$L&h<3!D{@}=8jW`!m3Qp|M|OW7-*sVed6MqReUl`qGCP4NaV zoc_L=>uz09koeDv_9-^_C;%teU@L++cHFbX8ADwsnoz?2FZNrty&z=IsJTt`q++zdZFlP}0I8vF(`BLLDSLC3>Q~`^T^{^+IBqON6=M9fW4@ zf>L=j*Ae6;Q6!$N_h^nIih6yWi7ZNjC-|?zCD?U^0qbb==p2R?tC?(yLd(69=`EH4 zP6kna2*Hv9yKcQf$k2ZPfsEJ%tn_kd3`|G}yD3b{q>29JpOgV3Ilj$z!fx)MT*Oh| zqe!d;l!lIgZ*KI$I$=!y`#Ipp9ypWf-(vrZqKn4)AW$J}1F5AvsiWXHbs`Xqmi&vB zFn$G!=q1YpRf}JUKIfD8^s@S&5x1EI#4}~On>mk)1S~lpBd4_Ma@qR$VuNx6YZC^hOD7Q)D}N7a6TCFLE!!GxO5`DDf_dt8ZjVYgqBcc2@A9*^asW3 zLuCk9V*XufGI(MYEv`eBm*%8&l^LwDQdtdP3GYz~0OD2D0vy7U+UZo^jY3>_DMN~v z#{RJb;}vQ*#hS=sz-tuC3aacGdRiuii!i~qVJ=vF`jRWZC4GJv_W4qn_v7J8TtdlfaSYC zsqeJfpGi51K0Oj$jDno(d97xMu+4AqV}AqI)gQAPxuug8Pk7^2F!UU3{5cl%GvSJ= zmz3pFeu$GtoJXy#1!L(mVLmdPu|vLIdU2r6{}i*w}&D5xvp zDlqD%?0BYFo5LK9jvoQ04K>sh6vYY(c4_dLalVQuZ-{$x>Lmu&?eXvE^?^ePw(sne z1-!ye)*m0+;tKtv$@X_C{z4n>6n_8Bbbf!iB&6~C4d>+dEN5;J8;@vyh!D)lV zo_I%Ctmx6k^CgGnd7ZJ;lrYw9Fj1}5tP%W+%K-B5a}l?#P5XI$cC%LdJJKD&hYKc$ zZhMrTHx}%Z^b~`GBlI1HT;(X~9~Ld7=Ust~nC-@9Q?~<3yYdh<7p`NQb)RS4LoHRD zO{LPWJ)!6U3z~#QD?|nQL+M?vSGILeJN)9$*5$jpSp(n62I%o@7s+y2c6wNQWjGJe zjbiamR`406C}snW*f#Z#Pry&B!bb`}Cl3Dqg`b5|^EvR-4`YE9{kQOQ)q8&vKPa8B z!h|=&B6ii4<)-^P40_M@t)((zcmW3yWZZZtPiSaG=;9{)5?%+fQS1dKSZo^*3((sY!t@3qY1N-+jg+6;ytfrQ`ct!Mjl2 zBoqd=ndmo;DavbQZ=4$&yX@wb+O7J{fCct2JZa^IM+=o}o%CNI{hF zuT}mNB7aUbWJ=5_YCH)?m(#86I+`;Z0a35KE%sKiZ7DOAeD5y*=5$l5fI$DWo6vbj z^!liOtQz?UdEL>%Zjsaae3KzE7u$nMQ{{W#y7)m)c{F|tKb1Ep%QzO@_%-B3%YP`+ z3SmJq^9{2HmkXyOJc9Ozw_TQfZvAa6M`!hU$-uFTV-Xz38+PbUma5qLEC(VlZc3A> z32;E8*lN`z9j0$0nn3)&GV_Ac!CYwqxXeeTdn$Ww;w<-kK+kwnJfNey z-xkPAQ5Q?|V7BVCQjwZu8kzg+Kk@tL{`U8-KviCb?;?S%D&KNt*gSAv(Px40linNe zzM`@ra!9Bmc1Q)M;1fN9{ZTXX^o4M7j^4Vg^Br~uzdWKde+0fmN%`Z`e_#Ku`u>jt zzfY%Ur#W(P!RJ|$$dv&BP=#gU%yrOkVb>AADN&CsI)fjOyAfF7Q zC163uPiCf!sMtknwk4T_TF+JEiKBE)H16MfE;O10@RRWW;yFKz$#KW$!v9N2{5Kvl z@NW-IRv0>BbVPL|PxZxnW?wv@y*w$q8e#bC-Z0(_=qIB;zASIjKQOxE3cBN^?1G4E z$C3YjZ}ieNXZOZNu%UWmAFokq&(#|r%a`d4((sQf%Z7DnuV#aw!uq1F*|7`Io@9C& z{08T{LGLA=TI#(kH2kj^^Kj;z9m}DNbpDd)zl6R|JR6wMNl)nZEChLv=7v9=76(=i zOJrMdgx!y9nA^!}1MVMvnXb%RT;mqzFY<6WeO`uE^E}17mTXWXOs~inEU>e>1?K0~ zw>b62Xu}>0cEj0D6OwC{egDMkE~pyWC86cjV(tciFpKR;|On`#DuK zdr=|6Swg-m)m|QZ8(c&o$E)wR_wVqsy+-y2e(XPlJ^}@Xhui9X_r$-QA`KVrKG&Fz ze~lch4;;acLs?NDxhPGhCLRU_IA!E{ETagtQ6QR5qGUgtT?a&p!QorLx+$=DbB0fb zRqKvp@gd@>a$sOid;eiYI77q#O#j%|GBGk{$G%JF4Wf_NsBDPUF1^g)0<3Z2s#GRJ z0zo=ue>Ldor_V1151Q}C2(NfH*-V@7X{<_L$dp{j&UIYe%W#rb^y8D>Bkv2@f&?zG zG$>-bcfW)vvNq%N%(x0_p5T;xFLW6%-9=Y8LU(2n#V}LOnItNiZDUn4USK{09aU^U z&EgEkXrOP{qI=nCIK?8!w(mGdkVE&dNTBbM`Rv~;8}d>vUC>SdHA%a2J^^6LGGEF| zOS_Ipb*Qb+;$q?_CTN+pYp*)nQNHl#O`hxEiE2X_Q6=-ixY-JOVMm3f0l*!hoSPNs zGXeb`K;N@yq%(9kpq~cxecr;ow5IB>5>2A!Nxn~mKXiNEj&?#z3|lmf7R59Q%pWglLqfM_C)2K+KT6Uvb=qlW1Nw;gi$5E&XK(c9XfIb;)u1~*tcUoz ztx*S_%{!v6Tt~%)CvXhk5j9)mpe4j3P7Hq2_=~ zzk;JuXE#_nLQ}J#$L-s`2i#{crGe#F( zY)(p7e_5WZAJ67$CegZ)VQ`8`o!tA#OxL;`av-@NgO(qhroc|R`Oq)$4rq8Bad7U<$5SMp*u4@7!0B~?Lz=bKElzkvm_;hH<-76Sw!gCpl?cx%<`((vC5YPgz&LPe&jma92<*fDIk zw7Nu+j45a&K|mx)%|Ih1IRP8&*_-?lM))2z1MNHF6hcUSJ))+ay+1V_&w~LXLuqLk zs8a)3wPx`+W3J6)Zr&^o_e5IJe!GF$X~z=^l-XtYjYtkZC^EA}b{J~xOf{$1*`r4d z&ous_PLmhxEp`m5Z*`WVfGS^ZQWbCgZ&#eON6?m#D=QGb81m?j7*cPh+7n>NHxluu zd5-C*EI-t#!L@#nrvp6~nPghhxGwkl-351_ei&91jya zRa?L@L>!_1Jxz{KXJ1X-9PP0OEm!gTh~?Tjnvdg6j`LSs#NihE4s)0VXNmaUBay%2 zB96#ViTFn1TfkZeKEB4;fGp6+Ay@O7IM+f_Dw}LOeRUq6epP2t>b zU!@>q$9zNa{5RtXw+2x|f60@o5&18=elr=B?rz8vYJ8CGLeaj*rz_uxfWn`7=RLc= z+XvKl+kpDMoL=7ysgHWElq`vQ)7I-LU#pRrbE*zT`i7FrX$hArj7y$zxf1SjZE#99 z{{5%2wWt4??!;RqH1v_35^s@HB2D=q_*rdJ(TDne?d3*D#U{JH*B*H$Wit7qE6x^{`Rj!GA4}4`H8+&zVwwjb=j=u30?LBUg#$h?bDkg?b(r7-UI~v z3yZee$5{WUN2Iu@B>6716m77N$@wEY)P^|Oq1J-blj{)nisGU@{WH)8(r%$hbA3VK zYm>fPd%0Wi6^Z9Xq8ESOK-JS3f-3u%r=K%W_4H~3RZpj(>gno?B&xViqKf+@s&W*n zoT1xU!0OdFuVA4rxVlo|>I#R^V*l89g;OVX%trrFeN+6~_Rv4}>zg8nrLl+x;Hij} z-QkPchGdKxxrDPd1WVYh(JDQm;SZ6lZ-PGPy9GaSK}ODyqCMb8*Bhi1g&)rlOHsr= zW~7d{(hvs(r^UYP-pd(o%O1aiFQd7zyJhw~zL&JSuEfGMh(F0NP0|}9J6a5L(QUe?T;E3_>8QXvWs(G z7?JpEJaDK3?V@1#&Rz?VD=zU|&?6`PIm$ZZVl9J> zJ7l#W&7!LYY;rtd3dP*iOus|m z$IZ;uRy@O3Y82neCWX@&@>oxofoLouyOz|;#KqmM>dTl=i)fA~^rs?8^Jv~qZ0h1v zzZeGyY)QV0fQ{laS)*a=t}?d|jefb2mq}ifZ#-nqAPAbleL_Rv`I-Oh+^5g>r~3mAGBP)`t| zVyvv!XGH(ge3Qc)%=ZGl*iT&Xi9263#K6x5S9y=M;)%< zMDXQgVF-2z&Yz_A`zWF*a1(21Vby@hsSAhJXhbg90&aQK#FSNwr%tu zi`&?!YXG&+q3>b8uYXKzBQ(meXF2uLuP78OIjwL2CGcm(FM%i&nc20PpOL$t?+gZ3% z7caYSc5sczh5Ev8x`Mx|<_^>ojjP|SISvre2BN%1QkUKLz_P0HL@f`(z?R+jP-EE~ z0LXAGTlhWMvbx+$MvVX271^?{emAdNp@k1m4q0!39dgZCO~ichI%VsM9remlv%&W{ zvQlO2U&!4bDcWb(HyKFQYMZeW#_ku8I8J9tJAQ;!q86wv_K#h*<0A_yL2=R57pfa{ z12we_&`|e*o zkD6fDDz|xU9li(cT^lU^i@jJILJRuY_(C9(srdC*tNvT&%f8BP>6W*FW{a7_H`;)Y zTy>Ib!ZP0#50i`YHtMX2ghxnl6QIybV8ESDyr^ZBQNM^~f~)iu;u|a{0qB#mJ(=Ie zidzm3!I~=^cV;mJXEmNQLkPUYdVBQwdX$VHVPYj@oxCJK&Y{d`fMl;_5kc$_nGc?1 zQIA4JZXOT_Jbk_ieb8GKg_s>X4h<3NktRQiVP@gJ zg9OTuH``~&Mst<&j79@=jwo(~VODJK}#T=10v3-iw7R(na6q6S^T)PjrT)BtA{^&%u5W>ABW`4|XfU+f(38N;S8dmSZ`m z=r0DRr9QM(0Lpt$tfXtUAB(JoYPSM3cfT| zB4XK2Eb=0&T;OJvgPbPU{gQCyqXHk*d6PXImu=uy&*~ugRC?bvG)L)PDRnYm?xYEnnQ15(8FTLCw{6hS4eB`cLY$bkQ z<&tqi&<%q(D!w7+hMusv`?tL@g$f9G70sZ{pp4C>o=xB=0bb^KX3;5y?W0CM9*)JI5tldGJQ6Tg{jZ=8r;Dd3As&S(+L z)W#;({XQGAUnQ}6pZq55s%E3_i}v8;k;aaLTnKJFD`1SJ?xVBQpF) zfm3!EXS^n?Gd@(s2u|1@jB_Uxy*B$DCH;%!PSloItt(Dbcg|3lC-`L~97K8NTCS?= zFh=^V7-5}5mpOO2gH92HR(Z=G!V|{%8SYo}&Pxp63gjUP$=Bt(C0$Xu9z{jms@e7E z)ITDAUG%=!WvZNTioXYz0UfWN{ex{LKNikLhaj0I00QRo-Dl+til-UZD>S4WJ3UY1N)w zLJE?XSC6m?X=o~*(186TEvm9w7jk;@Iw3roc` zavJhjoPinc^k!nvTD`VCeoovS6uG7z#_H5R^j$NMe*m;~jkmDgFtt^6c+egNKX}OW z%SHq7VVDX&rWH3@mnh9aC%^>4TlK*qczoKs8eqieVzR?m^r5v96qCXucRre31=Zda;#$bdwjb)0w3E5XTJ%_%Mpc%diihtkcYFsM9k^D2{V!2E5)v{t1 z2h=1pFO|tHHHkk1TC!Lq)qd>Y72-== zGo06+;C<|^+vKuMDbbc2lx}9eGid#Ry*n(UUaS2zZBpd%&S_AzFlPv$zbGuLQLEMd zfDCJ;8||-2vME2%v$fUywRow5tXf4e`@|Dqv|1R!r<6T8PF75Sjpd%az zPcYVZkYNZUCR1p3>`Q+}?Mmw(?3mD6mRd=dvJF@eZZ*!Ou-^fr~p@c$he zy-zXeVcgOQsR)vuS+bP_ZgYTneX*5FM##BLU9Mr= zAo1-XK5B69h*Lu6001@_01T-4Ms2Bt$bKb1@%4Y9=4-X3;tkBn+xEbw{8#c4MF;=_ zH5K&^0AOnpfUz{a-%-?U51gj$zvatUM8gssMvh3^_kXIkYYQJXY9IZI3eu~45?v* z15;?|q_gdhFrgO*(!Ll42c1M+sh_qjT34Bypp73Hro;Bvv zO^sy*3>_$;Jf{;173p$N{lT)Eq=0I{iR5oAyGbaNq$L^Cw5jMx*g9_%Pf!U}SCHWw z6D+++CjKY~?jE0QELC4&DceUm_D1FL7Hj5SFTE)_-_fxNU=%DJq3UyS^fh`BaHC-Eq8zcj+v*pTz$JatUoGLOu-Roq26pXWtz!)51tGzPnZs_a zv`6Q##}f-4ab4Gg#}sLd62ywE_(WImQgYTyF<)`vSGFVSu$<`H6UX9<9BqwY zqkP&5N^8nM$x!>WiL^oj&oL>YrJUK;;Wa8geEUIvKXtdbUtWc?#_Tce_oD)!V zI4(gbr{%B`%Ww`n!Fd~@v5kSf{bGK#{=0>J^*KyCeNs+isWR*Y#g3L+xRqdDMd3o( zL$h0}kto^BS0Z19tXruLQGD!H@s}BfWx}Ol1kOgqFJX0OcmK3vi1Ka0CvrkLAIsFq zgj~$n9kO0xX%5t9Mc&J_?b3{Gtig-K9@ye$s}}}iv5}d zv#r|FT*zANMt)?lVBpcumbD=R8X#nHE&`GTIr_o2TynA+a$YsPXF$>^aQ=HMl zbCr=?HDVVQ28;x){vDVEe1qaEFuiHuHcq=aVVDH`AK-rw%LHM#MdIL}ASt;?F<2y^ z0rHh0|FEh6!fsLY_d_uCPV|1Yhu3!l_H@(my`vo!UmW^MBSG&wMVx(swOxt368t1Z zw+5BZ%BG?%9|n4_n?F8K-%jySjAGF~f-&i=dOVFS?%hbmMSI)H78ZO`()_8jF`Hew9Ywj7C0TG*X}`wukN%aCWm05S?q3 z%7!BUTlfYUpxk35mIb}L4KUskFfcp$-(s&_be!?J0F$TSNg3DK9-{DMcWD!vUHC~9 zvMiCAj;MjXagP2-SoF|uI2?i~sV$%-gGyVJXM1#AkF5H2frGguw&CMsq)U7~67P{? zh8?V}4S2c2c=>fqxlO^@Z3Es_81Jr&9L}{z-pzIndq3!Gi?rtr+wBY8A3BqZW)!nFWCPgGMl|{ozr&Gsg)i95)j_+!2T0w zcODJ6#aVbn*2d;v4jG9YBaT{sw1jVXHB$Dzz@dDXB|qzo{z-l2A7VOe{cZdj@Y$7d zR!JLIPY78RL9p8<-c+Gsk2U0teKGM>Qw@>*-!&_FA}j@AsAYW|>n(ew2yY`XXN)e8 z{e^%@Fy?Lk_V~kco=(MQf8q!dngt8 z=YTyh@uqNmH`St*Q6=(HdPQMkJ_#GX8-gR19ai?@RMQjtLDcwH`zh@bB2&!K$ris$ zYdEKFP>T#4w4M*PYTSe$R?%Huw06MA+YV3#Y$8OOW=ooLeT!4sdY3dKhKTlFUNfz{3;LEc_ z1VTeBMc|r099a}4yVOWgl-69AO4kpP;|&Us$9P*yUHvk6>-4&6blVa5dD#M zeKVXGVZhc`F^vjgt$3|>xOW_k&sJ0&mgJN^PLyvNk!N5xW{yF1+r*a|*W2#hMa0yR z@nZFiTii5%XY6@|0!U=+=UkP&B7M=;zP5z!u)n5$3pdFpTHrQvs&q$TJG3Z%%bYsB z6<8eX@7!^Oqvczi!;T?gx5gkr7JK)8d(l>>&T4(5mE-P=GGsX5FXmg|)m}g04s?x| z2OnYxr^lqBBRI~{k@+Jp!Hd;1#^-cN-QS^ts-L;2e$sfCu0_*H=NQyuoYRE!6fza-a1kG2fzn~v6KvTuljrTWGgVT>+W0Fjek zGsab9R}f=5G1gdJcruQyUG?CTkARZcTRfgcKaKIcjX=Xjh&+MZpn+cnDnpRbYQDfI zVqD6)$8dX4LqW3ZS8!k$E={wWYQm3abLdY@yq#9%`*Rc>dgWT4;;vP>JfmS{yrRi- z@v3Z|QL!>!5nVT4u*%A_Rh}i0qcvU!(*9LLv|3rLdTpq@q3(?9nxyXAsb)?c^e_eG ziVihv<^$aTz~t!EFdr^CRn4#eP6U7p0`24N!`5>m+3Rr+VSCyrP4J=UYoF2R5~H}! zsYy7Xgb@Qu*c8W`IsO>~ToySP0tE@NG<{C~7x2BFNEQiv7t>}_qA_uvg{9E0YxZR$ ztu^~JT~z+AhJ63%uZ1kqrWhYY_f56@SB5@i*{46GOV- z-!+T_3by$F634+{aa&S;knl$$K1IVugoqo?#{XplOK6U>nOly|Qhr&|1B5+1R}UEW z8D&q-(k_wR=Ve&N%WiV1%z`a&ZWS8Ybxb4SL-Xs_(PQ}-9D`%HCDXOM1H_jEt^L)ATFhWiWD zJ!6dftT|(>chH#Zz=obcU)I7Og09cd7K{Hqzw6VzC!R=9G@famiV@xXv}lh~NwPa~R`c8WsMIk~!y6d$Ja+rO87<(ET=r zpmXLHHES<##a5}Ud3LISv}av{v^is*y(R18t6d%(EG?KA}Dadwe_s_yl!*G4)@5`1%02fkKr`VfTN4{ zYA>^|L7ID~+1zhRbKQ|>fed14?nG&~I}*z$Az~!Ze%S&c4|f`kj??JFiAIkx8$D40 zO`|Ir$YOk}{YU!5SaG2piFucRJEWu`$?AtTPp%s^` zm)njx+WhVzbF|)W;J>B|=#CiP`mI{66I|kE{=V#MdY_wjWna^~d{xQDsCkDancY$I z-jd|EB>8Qg_DVAT8}oKZGG`!E@;9$lQi(z~uUS$Bh{~-z$t zeER$uyHxM&-mAHGT3UnCm!7eUpx9wAY?0;G?!8XU)#9}5v=_GW-w|{y?QvT0%xyMa zwU&i)N+yPKCOa%U9DIF}@5(~f5=Y@q2ZsSsPWNty=Gx%2thZaXJ2E{>JM8%0I4MeR z?%r$HTu7d6;tPQnlp0@l+kSnwUE^F(TNKmedWWr@%Q{K zKuEj=MNZqhIKK1UdQurq8McN6BN=(N_X8~iCTxpq<}oj_9zBiEnEf-uoi6Q*;ZE)D zp-Xo#*Jf_)bZcMS)~S6n65aTmB|}~;;6>lz zEoDf4Dd)>(Icx%GVr#%96RoxTd^fYpCJl%og9~t&K%CfaK&RcKzMY(%gyI8%BAQ;v z>t^0$OZr!)pjgFAX^ny)M|9XRU@iUg%E6z9`CJMmBSq)~MThIMk}>0rO=LJ*c#b5XndpD^088PBw;-q}kE*Xz-*Sm?k zzWq!p%I@tWdmq~$i?5McuBzKfroPSc^N#!+RKSQ|vwC~PBoL}@yEgyBAyVcJl?e)F zWZF+;3ywW+(rU#9#B7c;o7>`YqL@&Nx8&(9c}kFlw!Lx)3bav?gSJ+Ax6`Bo#sMiC z)$IR;;+|>!6HLy3HnN|G0C@j40q}e>0q~xm0Ju{GU>4pM$Y*ALdh(_Md zWgQ!U7nFExaoL6g4KPzp8bFZS1!KH6PK+dPk_NaS0#_4IF-Zh+O(LMYQr0o5B!(k{ z>4D)tX_r|tYxpnKwE${)S)^0Di@&>ves9|#;_z?J8gt@qUYvtCa6*XhcJTigRQQ46 zx0xk7&QWsi;F7;V$qABidaF@-ie$K;8Eyf2lN5aTfB|w`T?c}^hHnSZvs2F)Apf)Z zVlXL@t*Hv;EmHI{v*@~W6g_Kj(Z8hV1k7b7%m#rG4a6;o*er#PF$*1cjzY5r7wR_Q z?bTixCJ3FCW$aCY4r zcqNg1?SHngPJ&_ZWB)C0FhbaX8?UgxL?YI11eWdg)fV!=4^}lwaTygWT(>%q>gU|au{1SA8SYOGyoR@p@v%u= z2ab=G6r(8rMqzYRErR4Yacx}#R06>~K6Q$> zEs=5#2mLMB_}3|a)}Vi_SAP#l{LwaYrqP4Hq3Gh2~p!j|aCIt!r34A2vBd-YCc*xDrA zH596t_B~B8QOt>f7yC0;Pk9+Fj<~z`cr{m(>=h}j_v$;`-TQdn>#~I1g<;}F$cyg1 zB(-?isApls^oyIC(b2oy>^b6AR?MsE_-?nYo_#f}&!54rKY_7Bg7zbhkSU*X2JCw{ zGpKt%{JtI!!AbOHLbrHX671eh9rYZ%qXPeJ@)Yiq|K$r$dMqs0>;(n}-wp}T zSGeD;f6VtC-oiaoLL(OtK^369mOYs84CwdZo9My2k5dB)>x!EpAQGbp0C%x@3L&jg z{OGFPwq60&alLnKQJ33xT6P2>LufTWq{C#qxXanfvUnMq#zx1o4Y)fS3r^yNq!5Z%2rgIbALxvrqv9Py2<4u>j-tk)TDtQPA>PjzNqfxSjL-=dPkgnwG?wQQ5RI@}h#B##d97UFSF^goV9XNx0e^01|~ z8?NL+_61kX9?J=rW%hGk%V7fgiDxD#!%vuSwo;!{E89w&SpV|=4h%9&Kw=ji>N5IY z-ix!L;2A7wWxQ*`nVDx^^||}&J+>LkwAyycW&bk=uSNokn=<48R+eJ8te4T7m{vl_ z2=*PE@tjNFL0!QaZLy7vGe)sF<6Ksmxi5>6q9B5MvR3n3pmf{zY5|FlrF;sL)9*=A zlGCq}=vXrSo>JF=MC2QkcMc+woPMXB`cXCc)j_4ewI zE<~GL@5nO-=$f+61il9DrHR1}s_%ECNG^m;ywRxTh(enbxiNsAEYBth+01n*od? z)&#+UNxAiAeM9UG9@6B!!SeWBZhaSH++5!k?l>AB*7h{+*yT33qihqk|Ivc+s`q36 zt@ghNca-g(!XEivxdBN4YvGW8w3z-;GVs0*_^?Ov#_kmU7`%_Q_rzpQ@W(yyM~Si4 z{WeoFmg0|ESqC-(ukCHf&ALD@?D0t|X3wKp<5?_nn{0k4hzOJU6%ZOMQkE|ibCDpS z$^LkOz+y7GSE=j3f#RbWhE`Z_5zHsJBxGxqK4UY~4tHco*=ffzCz|q>=yN|XhRq#( z29JTAuq%m!fb>I5)u!N#%|rxUMR$dzKl90y;*DxyT_h&fl%b|S6QFHdw7`$JQRZ|= zq#QA>)m)a&84v%}06wm+1A$+&PJmy$`n(MQcn1NB0sMfjn4(?Z4XkN!vi)JT8vhh! zj=k7(@Ihj!#_EJ02Fp4I@k1C>iXZNC7w(21di1bCIK%KmujOsL*;4!vpLWF$?XS|* zYPB#T>;M|bDICzuA4LMaFvgE)HqS6d_V-We5#)RI%?9y4NT{eN4&)ukR&c=7xFT{Z z+|jFVg#pTcqHPm6Pf1@e#0~6xgOg4PjrfLJKkXScrQK_3m4oZL_dw(~dM!uLSlDD{ zQfcW!;ei>#vkke;p_Ls~u5Z;I8?M;+Q7P8AniXMNL|CK9XfA6r6e2! zTXgABllc*Ak*94Y(&uxvQ_?+^Uutl}Na+ypFTkxwUlkfXUD)2lf3kVhXjk*q;NRLt0xhIlW|Clh) z#ypBX|CBNNr;**5Ne;c&s~?vMG=?-a*@KT_MlyK^QH%xPvTTp-_yES{uS_sCnex8x zC80doYCw5LT?azh6vpa4fKDZ$gG5Eo)EdzJnQTIklAt|Df`En$sW=*fqJk>NV|#S1 z0;}F$-D~lGGr`XkOx`3+_nR<%=NvGNJqxC&4>$xP*YV0EDT}njr5>o}<5*yBQnm=!#*QzZ&32TwH{mYICk14l4>9Vx+x5L`hWkWm{lllH8jZ{$?FFIi=|g$>25x4cXd0_J~kJuhZXrh&OE4b1BSvuBhEYG~{N$0*0j zlXi=Nh(WM=sUY1x2)sQ4?oUvdZ=K$X4$|1uR$ z1O4I%k^aM&0k0c61oe~k4ROrOQeK)_xpJA6rJOY%%sMGgk7V`8#g}ykd!$NvFe^t= z7G+^3E-s16PtS)FSqRCpirtcUYqEsUhvAU50nrXEZ|7Zm6Y0$u!p^Mhv6FQamW zksN_Wa1S)952t4l5ktXe)-gR*N2Ann3r-^JskjO$%EIjnT+68TOQQXy?U(q}^zq{A zztcy9YW|%*{$EcY53Tt-ef&Fp{2!x_KNiVH*-2^n>KXi5ku zLRCeqG!|b!^vs`zV1u8V)6LKHZaKwkR(F)&2fM}L;gN2ZAz35T=HeQDQUW@_M_Cut zD%$c%Xy@i6H*NS8RD1--KTWjNd7BXsb|UB~L9o;RYq&~HkeZY7P|&w4is-njBPH+d z%Jl8(LA2b}ehztevI#b9s46rzgV3-d&!prf#om@GNd|8Kd78ddi7+FV%EN<8;k<1K z0&TF@)3Dh#Snp{XA&r^0325hq`FTW%C^>dy6I7@TN*<`$0ZQwDSLDfE35j`Ex;TC) z_6JjJNn-W7p}+Z0=txRl!B<2fb-F_8tnMCAdjo5`bHVIMs%~Qewql216ckr{$PEr9 zT3g}|qzZ;lA3PhmzZ2ws82|>zk7IW!^g4o`UFZ}!Zb#u(LA8j_qa5HqrA)NNPME@u zAXlWuAxdh*QAWZlhLt^CkZ3KFUr!m*gTmIlje@cWiB(n$D9aU;?G$KUpuj=$?ATrU z*o6Ah8LRpmHD*XnjxyDQIc2olkYCD_R5x89INbsi5$U+*b3hU1AOwjplEi;-?5lt|B#p3>0BVWE-t+6(tOExR3~rZ16c z_9T72MBHht8m&g!t7VhQs4^Z8fpt^-o-8T6DaPMqsNzK2A(198-TXd>a^g8Yqo?Uq%rlX zs)wmcl`@J_N<(8yD8bUn_YHtg*9$pJju)T@a)Dc5=9&2PYH+1VO_%#w%$=?|}ju>6nz|ZyMm4|GuZCw8=Ncvhri zQfTB=F6fuL5SND*&nQo%eM-o>#G_jyo^sDp4n~+2>EZagWS$02RUyYuJ-Q>3ouG05 zYSOq{pmDD95ldY`U!=pu;hE4m0@->p9g(PO)bvRE?NB<2b_A&lr%0VJxFo#*zBL5j zy@UKGI>^h?x@V0wk<#PRr=OtS4MT)#>{tb1trwzEZe8OFS*N;2Ipibji3W$h!6bji z0rBbOucZC09iGA#Po}3e%6BDh3yTpsgzs~#w1R}zo+&VT4+tSjobG6)!g`4LPJg|< zD@>JBRFz{_QeA6@eDBKiQILgIi?OW@Vp0$)crF2;1UF@^`195*b@3?UN|n_voZn*? zOO9gw`-Jtsr-&LHlX@uDG+1`Twv(QsvvmqzvNn=)!c~q*i^Xq+BSBlXTV8lhaNG_? zF7r*E7`X&{>(v&0j=~k1%PD4x=2D*Z4Hctk#3@B|d;A~7?jz4v`1>(`_w)CC{+#?V zMw5QgN&jMopm-N+PX`!=dPgKWL|j(!?&m}#jdKR3oTTlyUhmOPTIR^L@#GK>C^Qn6 zp3EdmS&w>hXgw;6qp=5Zc#p$$iBxhfF1AR{Dg_xV>v7Mz4iJW-7=?4u0I%JT$g3yI#_&7tCTDL%yV0%nq52= zU(-uH$GMx^%TI3)FN&{el#JrXXuuOu83iCIVJu;U;{!Kuk2oMBzE@J%ye*Q7msu)RoEA4r zDsEzlRMX+PS(33*&TEw-1jp1P1AMqf^0gt;6n3*e>HgdmNw&@4j&v+~m&^s^8$MZVnX9pVz5P#+Ou>*8)onT)L ziS2T?Ur;MX#JSdGV7h~Bw`wP_g%)4K@am%z@k!TucS_!R^4_Y|tCyX;W;%E5XdXGtxWQo#!2u-Z@I@VIJOd-pzk*Y`Vc!IG_vJLqP^XMKm$@>kX8%}$Q2>fS@HW~XH{4+yMsPDA%@ zl9->3P-Uxxp=N;}7pYFWewtXTE0i00Oq;ODVLOOx`euji6qjvm+psk)7_S`BNuRLA zOgBALZJQR{?6jdRka@yp5*eJhu5ZCheWTNMG|-xfzfj6cJ*?GC5%LyJcg{ZeJ7e7p z-|nr-OZ{`-GZxfZcp>X};trDLrH;Gkn1L?lzZzV^!SBkdqT!?dgJdbQrIb>u6Q@ud z#0U77&mLUDuP8wl^*rVa@hsIYnUpQ10=zhx~LO0XqE86zw?*B z^OyhU`OA`D4x+3L1oso#K93ilioc8>T*4AcNbr|0CQJDQ{_^oJ2Ej1igyDVj#i!se zuM95Z^aCjwJ@w#g@e8QU1v#uhIjCFFV zqNUS=19SHQJlc9)`i~!%8uVJ1s;C6_+x0kGQc={S|9ifA7x5Gl6295hy%&I{N)j9N zIHHko&-`~=IA^@o0H)bfh|`<1+N1yZe)4hby9X`bgTq|XNesU?+}3KPT|{g4=r87S z=d~R7T8?`3*9&-X1ZS*vAaLnzlZlu`I-XXms5wtcBybhs7i7op(_ceYqM~9+)?Xa0 zE;~J$wW?+gW%m}c1L5BVUXLa2w!DP{bnAPr;Oo*-%30|_?LLXdjjroi3FfD-#LXK= z`c`*glRO!rv=zo$ya@2@SlKwot37rGx%ZJ%^4KK1Zm|D95|gK9`9Z>c<5A zVsjk-R?&X?5n4t4k-sYEYWb;?B-uuaYQ)b6^3x?h`>>Z#N7av|CFFcv+Q8LceS3M% z@28Yo|5<7Zo4b@Afg_1>bs9&6xhMFGpe9^~CV<+fon|MfY>kzr5>!6X7I=A@8xl^l zAaoqyP9LUL6bkf$2HrGqQ+(Mv?vUGMHAqyr)9*{3gOUgNeC|4xXA3OwbfcLeDkZNc zy^TF^1&`Lv(e8v_7Rt?Bf3>8uT2k;RO~3QFq;oUZXqi)Mi&A=Aw%Gz8RTwQNU39Cs z?6;*>N}#E6rPiQc$ij;(vCQ4$?qBDz9nxx>5aBrOi5WrQeYS5HVHCLrRaz1 z2zew(MmbF&T%le)s_u~fQa93HApUrlD%BV{6h6nJRqo;E*2{NWT$pMyYh~D~gf5G` zWD@|JJo@A|#)!G~@((zlX^YqLk)*V$l$~;76OEgWM5*$Gwd*9qB86mCOZb_g;k+4LZr}#R=J05_FVL$ zOdzC}Mk%M!csFd1Ii*S8An6;Vm`1iNEIEjxQO)6L=3LflA%fB|9>l)n4(S-AyR|RbD+skeF6``R^&mBMbtRzEx#0wx2~Z5l1Y*As1KF1yB%N zlqn-VC3Mpr?78q-2wvN4Y@lhCzVKQOU|U+*;jz4jlOkP$ih~pI>}uJhL9~ASLF;6f zM)v_oRWE(y9!5YLoPr-(Mc2r=N3LO;@KW^-Tj!-BiyCj9VLz6M=C<^>hxNy?Ci$C` z1G2ku1Ie<_>arhj0-;t=Z@RP!oYG`STAg_0E-Y83tqd^|Ko}UT4-B8aN_fny;j`3r zpnqlorLkXD^sIyD`VHw}(w$RL#nEKhJRj52l+#cKu4 zuHY|BcqU=qYn$(mUBL?zN@Fh^PX1_W_SZ$V;tRtI7|5ka?a2n=d;<&70y|WqbCt)| zL7O_%R+RtE+q=L=SzY_z3>h@q=o4%}YEz6ov?uY<{>dq|iKT4@CNR;7pv98VP_cuyu&->2jv!B^(-}l;UuYFs4ZB%OZx|OTGK2foQzqS?o!2A!aSlg0QD|SX|#r~H7 zs?@K|za9N~VARmTt)JX?EydP^Anr7G3XN}O2!X<@o16ukC}k{Pcwj}#MW({{k??MF za*;!S@8l{i_yVowMvtd=t6I|xS8g>q?H`m{&B{bIGu&!sou-;y_nlhJ3#X^FUnc=n z&A*v{caozj%+1^va_g8O_}1?Q3q!R=tT(k7S0swj@VLcxqxm0*?efzU5y#i7LfSOOzCE%%0(3*{j~nhZ?0oWo;e7SW2+4~Wxrnjb^V?qaDQ)e zU0)s7DV?81aXC*eE$JI_cod~&pnhPb*WZ8EpxZ7~x+pTgxB13RFKpbnar64RV?TfJ z!A~KppB_aa2C{Pz2Yn`W$6hNqchGH8S6@8@Rv0>CHH|&UeJpocdLZ(jYzB=8^shIM zo28y7824}=Ue%d_$feTKUcHZJ8*Y1(_YjoGN&1Z=UqQ{jv+y~$>aHsI`8+0kjt*Y_ zcLW~Yp9PzdG^y6RAFy8cog~Q~juu9p`Z{bpkCGnV6mH2wMO`m~!g^D1J`YeB1{P@Z zx1!_&<+=V=6rM79YMg{t)A2Bo-s*|LJPH065uugymE1sE(GHM>cy&>i!nPH4>kqKU zb?!CJ`taCM^B5}J7h2DKIBDB7uVR}^D&|JRUsd{jUmt)UUK2ytN`I77ouXhQka4;P_ilp&w_Z!+RY6Zld+KzAY#YywqhuI_mr<<4*K z`)vHYSYEkFuj;dEzd8v2v#QT@71x<8jV8Oq{bh<}Tok54rH9wwkM}1fG*J>5#DreRZXQA}J#3tZC zPQBxLLX%V)i9a;g9al1;OUQa~?cU}iJ8$_9tZCMoQ{S~Be~T#$H#m^SuRGR5Xv2IQ zKV6sPPK@hSK?f#>!lig}O4&_LDSHzsuTG|1cTAMpm~roFDaUgB(qputc5feTj_7v7 z|1fDJsz=XN!$@isrs0>y@wUN5wQn{T9og;FHCl(XghP#W@FpB2od8OQBpjyWP``H# ztzoe6zvvMf5?V;mUtB5Tea+|r zN>!6+^W#0PZ<0}NAY!zF2fntb3@*7y0>5LMtwGF6DnWZBXpru}AJk7t$cu@>e|Hny_j!}r5rUK29ZKyjMeT1fNGaCAtB&5yGa{WRNgD!@`#+Vw z5LUkf_i|NN%+u9vCkRLCrdZ@$Awd0g+c3P<0w5RD=dXEPohaqh$v7=jC=kWL*4ucFzcyQ0< z?gqaqUq0&N+B~7m{Pp49{^;gzpuyp`>O(vnzFL|Wo$>Ill>1HLW6AP_d(izK^UU=Y zcKqNV%27}EegZQ+Zj-i6GK2p~^AF|kPCDGD;_v39Nn@^FnHkbu2V~->wb_RU-En>Z ze(igHFf7dZVXJ+;(Gwr_Ed-p-7-1}3e!``3ZQNn~J*cf0XvA%l30D4pK@y^9wNyC-s-2Y#Cl4T9xkUVsXji zUr5mW2?`408otLxPD&ogr`Lo3qGY9DIXu5UtO)F3kv_?IT| z&nGliT;NeMaS#75EtUKnDp?Da>FhhN#|R}gXboH%K3K{+qO_3PU;@SdKoFBe@W`cs^~#Vl;BlL!rS20hb#tvgg}T!d)a@T6`W_u`kG4d6w8h(_ZG`2# zi6EKk5OQmQ54S`8{y+A*jCcWrk0{Un(C>qVA3*oW^qeEQzco(xY8lICKZ@=HO>ufp zhCL0v8_$1@-UsmLK;1iK4C?iLInK{eGcpt^=FxHbE9$@oNrJoM6U=JEp=PEYJVV3< zd|qwU4N%llpnC{KsV{^(yAkF>RWk2q1jDhC#%cX1d}6VCqBMMrb23h8#O0%J=j6FwL8rcw3)(2AflxEOzd6XpCr_@-9Z}k_rN~**>JRVobTUR1r5|(_{+9em zhN+28>_Arq%Za8?W~SwR?~fOB4Zs=U0fG5br- z^sGmm=@pNpU+q@i*e3K$pYWDA}5GEgC^^Ox9% zTJ|1KcNTq}7K0p}p}sK`c9L{3d@miviPO8B>DQ1&E@w@{);iNQX(-2@OWLiQJrpd4 z!`o!mjbjwSy>iZ?@`{@|yfO%IpDWqf` zTVGOgFJUW}SY26%Jfx=a(sR~(h)nr4vyiVNKSCmZd8+?YnL6GuSu$AdxCYKYc@(&eN$A#s`oSh+$`2|M2VCXP6K5Bd=p^)c9ITabZg=T9YmquFlh|gN#0+y^ z;xkO2vX`!RvaXiG%GQ35;O%HDysimbR+qrn0B;;aT{)R--GN-{&`)9E(8?)$QT~W{ zmLXR;w1hSpdTq`DC$qeO6#p*2SBR!2>QuBV$JFkJ z)0DBam41T*PQwr2dpOrntQyK#LwRdnML|P#86{hqO^r8GU<{Pvw66D1oTXW00^v~> zr}cGV?vTP}B*NellZ!Xi6+o%gsj$u3rJN+8eb1RbpCS$8959zt-C>yA4t2d+bzri{ z6(N+u&YrZHh=&EpMR+OXip&s4a5o7vdv3i+1spq^f?bK|mh z@RdtAYSbF_KsD!yLdwNb@)|NN5s(limwwjr7ZiJ*d?71pf@Ev%v!=$7kWTVbl9m8$ z`3^p1QU;wX;aP|Un@+8V9ivwh9Z+ZGxgV;NzYurJI;wn>S-Dt1+4}--s0$5+VqCXONrAEQR)KQMvu@%v6x%76M%&!IK;;L(Y37XugvpXvu&FIP zoOs9%9<%fV;w~H&O>xgtIqmzp)K-oGR%btTjWX{exSnN#KdHkgr-5J8xI#Mq4 z6)8(etLHZ4&|JntP8*Hy6g={tF%1OggPr-Eq4^4Ym{03r!|IJd3Se1ig}#!DFW)b; ziB_ouZlX{~iO#c|&NH+;6UXw$4VhtiL4o%u91_;KMr=j?ugLi|Ia}mNE4PLP;?tLM zXEgDFBWq})=C4v)ICvTSSA^WURsnrufQoAg15$?H5x~6}cNjeVPhBrVeajiHq0Y1` z!wHqs2zTi@FPYjYaT?GV_1U4mBAEBJWjI^T{}yR6jJB>b8BVG1JIA@}FQ0U|_aT>i z69sRm1D3rJHcqjJbzz6M4(ky6hKmf_K?~ifaSktRFUrg%d7@^p&D`b{zClo!?4j(32K7`Zgf$b3Ka6wR!HOQAE_rbu(eFh^KFYdwR z4<{G75s(W$@{Dcv^Mu6%Uv(;4v8=(RkzCa#cSf_q)5@@43({C|iIy_mnt+0EIw%|Z zRt$}p;S~ykj<)0EBB>0_$NQ>U9|aRGd)!fQ0R);y3K|CaUYn!dLMIq{M-iWEr^GHA$~nSB4|~z5==Ifa_1K~D z$7kWrt2^91)A2%f%6yiTIb!HX4uY-pz3g!E2yY2f-x5R#CN*Ydgb(`jI)QyWK2*PL z5WUK~RK2SH10L|Wx9#XIU*S%lvy{d0@#;@%bLTdpE4lvk)xX9%`2gEJCm3GZIqe_l zKfW>h(o^TpEE+~Jcrby+HuYF0)=sQLapa4Go@gp9{2+u%`UB2FU1a0MBwt=<6X~5t zAqTDiGB%sV!)DZ>v0E^ASL_TTFe50!jKL&l2e*xYw&&+K(#w919R zT03a7yd{G)^qE0^7!Ao_4OzlP7|%4sLtIQP#$cVId^GzT)(NkqT+_yaye-afT77;x zF-fvq7mRW>)hd67dNP5}`-7fLlB-nzZe#9wuCtY2_^$ zWAdFwsJyFJkTz43VVFE45k&zH!8OEL%6mkmv<5}bv;B+Fe5TT*4C_ePH$@4Tk+2Dp zgBRGCov9*e%qf2^S$R7<5|baM5jn51iO|MUD+}yFGl?uSv~O1^Q(aBJNrlePu0&NV zrc0E|jG66jHX4fwz=sKTu4#jJC?hF%~1)~~hNo}9-E0)QqP8drg6jgMNr<41P2pbA&#ZLX8d*eaaXH3^1 zdLP~*!@MOuN*(My(;?JSV$C7Sv@$GX#mXX3*dwp43iNoh0-07zbTiu~q|{~o>hN8l<{dlkd#8)$$+_#m3nH0aO zz%xzY);_hbD$f{dLJIBVpqUc$EvNNO0+e^jsUseMWhvP=nFP!%?>xQ4V44d&g5GCM zbCR4X@v|#zxf)#LNlMlA5q$`Hw#WuC1F&6+e}KC?S0il^hA5%z12vlQd&Xiox1m;X zsQ{$FT-Pake3?nC>~TW~6i2f!`Q*;fD4qMTMQ3hMF;e2P1b9~gv~HxW z&3uv?84khXgXzXHQcImxQp`Ve*?Q5~ri?@swKR;esA@E1DjfB=^@ov|B~@dG3Bk%F z-f>jvIH77esrhGaX{{PkNNc z5e0BgvkLUCl512<&QNlxp5d zk>{Ib6r#-6p?{xn$T_|%v(mnT1n#}?eH*_w;zSme65;$CAHS*9dY z38>fd%o|$Rwu;IKvxbeEMKW=g&hRKSMCTi~E9cmWF z51YAx7`;V7xaOMs2J(JfB%{2n3nM_SX-~0&IK^w@BX{01K6a!b{=-c+c{^a36q{|G zOgE;v8$@tQqe~&-S7vsXSbkb6C%Yb-U4tl4!7ZHYcEB>*X-#h=Tf;w8>;@60ifvu+ zX*TKP#=B7&w_5PF`};8m8E6Tc{NC(7ZVOtRY?}&(zlKx@8Tv>Ed0vtkF;_ zc^0{4x6K*v@?}c~*+w+;wr4Yiaz^}2gP%MXrYdgaTI=q@OlsWlIc|6ZtEDV4!n(7kiQ^y} zSb*Ipvcnp~1{~V*d=Y`=R5Z3(o>~3|q^mK^KG{^n7#^Sl8MCduAHgK~9#^YAoTF^~ zY;2R~!=?Zvy2O+aZ|M-I(UdxubB6?l#3|<4IWFS5Oj&Ds6{gnMnL}6{F>2?!?7NJG zN==8tSUfRMD~u5BV!Vd#m29R=*LR-^p}A0;v>u*m(~eUE9Vhn>V{E=R(P>QJIDNVF zS7S!{wd{8gc(1eYDeZa0<&(4*0dGHPze8IY@a};-8OIeC-W=Z(q4ZHX!EfVE?lwtw z!X>dMqO&XV*PaOR_9`CJjAT5sm*P#j5Xe0na2m=?orhk;q~H!s`iA;)u--UE)*FlT zy>VqG?$aoKx9bhN(9v+oRt=9YH?;D{7f@Q^+&!Q zY`iMny!l&VZ@U<6!?Vx1j!Ps29QK7W54g3EGnD->wZ{u6Mq;&RKW>83rHEtkj=iduA)At7}U(?~8BN zm_3@m`|4jp?j-8di`K_HzWU9BN_E26LQGC#@0`_^&fFzdD%qW1(ahXY(%~bbTW30p z)b0p@YckdDk&sGtc5%4Xmv@9RWsW^c>7G8^L1>ElULf3BQb;0S13h|^Ko=ID*@0(i z<5&s&CFBpnt)PL(jC4QfZJeVy)i?uvo!L8U#ESirN8u!_FSIo#d1)@H3{7AI_v4Hh(nJU#@K-+lgy}D7^o~K(G{UIP0v+F$hTD*Y;gVHrU^R@lpCkqa zF47}*V1C*Wimw;&T>WjnaI5y5YL0eaKasHH@C=bj@ha8HrH--K}&p1q@!eoZASSfoC^*w=zZTN_3c&A|rN$I?NVEt$aPbee* z$iAw0dHlRt6frmSbQ|cxL23)z3@E)3u*Q^%#`(}76jZHoTdDjo{$)>Ff84DNszTb7 zBl^(O!H8*n)6^qr7@IByr(N9S;;FIScdM6jO+ohrXaD~2d-ZRgkbE1+nr;)8EshUP zXq;&Wub<;1gwCTQt9zz&B30G z$?`zF1zy0rKkS>LvEo*`$u!7f-)wHb8C^)@9*1fWg?_6CpY=3F?hxNMO`kRjs}l4M zp=V})Mc=Bgq&ri0I8(cv>AQ65?OgLbhF2aTcjSH<=&xb9U>WNH=NeuU-BW$BlY7qF zSCMQYJ(drdXl9wp8gM$-fUarb_1KcajiI+x4A?@{`EkAJgI7Pn<-!$+$$s%#t_-bA z?_2*DXuZGlHSOFUMLc*O@&?bL>Zzmq*eDO3wmVX~?&#*U(hgs^bdbOB{W}ph8-rx& zzH6D9rHHQCJLfk>SQlab=pl+t9=*(KRX9!@(r!70yJP7+j>B+6P2 zI75p&y8oNfwpHm-dEpzkikZ?kzm+d zfaE=?_LTm&T7@UOPdbaH5EuHnH*3%!UJa`)@vLntUMKIi;%57|#{QW&ZN*PpsLB4- z>MwswTk$eu;a=YnUN6#vZF;ImFBUU2=CAklzXsCU$4C54wLWLLuO?i)F7B{U4!5Tj zuR~rj?zUKN)oDB&RJskhw`B31Hls`HBCEVTwfM&clPGBObBN!HSf_Z5pDAB6azs@ ze}M*v%)OECna%=H9kz6*!3S?c3*&ax$R&T5@K3Ps1K|(mJ#K=Y?KDJ*M9?Py>3>l+lbM^%@v}@ezaSg+ zughI;U$)60!x!J@QD*Pmd&%GaMu7tGG@)?#adaF^LnS3Sm5j zdyA=osf20A5-*id`AK>XX%esrK^Kx9Y;Q3t%F{$it!uhde+Q`%b~KOOE5yC=L{C@b zO9({RFP~$>UT;zxSTW{@3-Bh?fAJ)`QY?z6m{P!>;75>eaO*-rK4Xie(i8uOxZ-&> zhm3KZi;&k&W>jd-bE3b~cfGvWGR3-ikiI*NXP5EpmS^!Y zIrqr(=6PGgJYS#k>bcosEBG=KF2hItm$1?(C|WBd2QOjiRZv8~=+kS^v;CK_2g-xv zvQNFlbP-1CJ|gsOw*Fo6Z?kbEc4}>U z!AlMq2Nl2#(Q6!DQV2|k%~gB+1x0M9_UY(sugO2-66r(4e}2YS?6l&2r{U93Ss^Q%F>bItz755u_>{L!w_nZ3dA*0s>SKQyD`ht{G z9#?nnB-ANyt2=k@_Ppqej5FQ7FYl-?JZ`CbeEqXn2Bq+a(R9rJd?I(K@pq{4yJ*BY z-GlhNFSlc+WziR<#y5>BH4}5T7^@zRpR>zYujAdd%>&w+2mA0Y_%ai&3;m3nlhEWo zQY+koqPGQ9kCY5XL6M{g`VL#~F5~i!fSQpyi76oJ6vZY6y!Vhoj~JW+ zXZZ$Sq-Ny_XL+xOed#%!tWx?Q$2mJ`0iLp9yLyMu(@P7k)B~KIz5cv5+HjSblOG5@ z5(|*EKfL=R+E5+w;~P@abZ$dR`J);V6_9&neciO_O|QDH&R z0Rc5`I>Q!iP-H8ENQQ+rNFS`n1^~wv~_A6l~jSV=$hAw6+u!sZskRY}VIf z)3Tj6YGc{9)m~9wul2S)cWok@8n=OUmdK;#N}kVNy$UwlJCb0>)sN?UFEn=m)xe)I z4UAYG-Pc+8_ukZ2PW0EQD-F+b+ZRGlY2QQ6@^-Z^?R>mA;$L}!2}6t8(*u_}rLmnm zU-f(1iX&dNb!WdXk2^W2=GF4+VCcTs4D$cidTUA}&)9lO4^>|-_%iBxicJ5k8g3hG zuLytEaN8So2Hj`6WYuunSg*^wdbn*YNuTwp1#BO#8g9Gfn>L9aLmv`Tizi_lt4l5t zIPP-;+AbNhDcjzt)9JoM@_P@;Z`5!ck1NjnQRkP`x6m6mJ4SFzo$->Rsm)|IFjCiV z^hYy}xb4L>E2X{Yhab@}o=vA|7q%%wPsW}*Lc6$Xi)q!(Vg)aYi|!E@jfso)$gS6K z(PqO%+fCoP`Xh$ME%E&Zk#@x;wh49$sJg^r|23iIHS2Ag;1vP0F0qK0=wYARW+n;S z1iNh#l3^?;dMhOfi})RKkswFk-)%tK1ba+CK704dIr|c<$Ccgu?BqZveX0^#T7B4H zUo%(up}N*oJBFF@IyrvnnXc1xfZeAbt5(Hkl5Pr;+l9~$A$f<8+y#?J@`VzK=8I4p=|0QA+1x4$`E+h!kCjpqfW-c=J60r-h zq4{IuI0*g9)c=rM{{(*s+A&*nwOQPqX~dij;_e&JDf7pSWr1Y+8 zPKD+ik!9X#2Vjr@y5i%nf21XtsJc>cq$L;$1TkyE#Xr*0%31+aM_O9hDsOQSrb#A@ z&RR7uGf7xHN%)sF2%inY(`sS4R4E-YL&dJuRlT3AqNn;4KVZ1FxJujfbB__jEURD^x#eyzb zyMA=>I|~cnPp}_D@AT>5N;4)K zdiwbB_+;WjRN$k>Abr}skfvso9i|GzdTp!v^DakTE;Z}-PVkEuA+sF*UV zIqfX53LvnTrv_H@ja?Bhf1&c+mc0+r)O>p+nIT>jhnAH{z&|2h1x z=0BVN75t-72Ayn`-_2qt${*&fj{o9~hw&M~%JJ!e%DLV^<$2-t=rCazxU90`kq*?8 z%;>nHvigy&s16CWqajJoJLKGaMPQQUCOHoN5?j)>KPmt!UJl0^#v4wiZj0#^%OoP_5HzAFjO65N!8ZxDQ660Q>bKoXuQ z_@N|RA$VC5E))D%5}qpfi6lHl@RLb6D0oE@4hVia3Ht@FPQpck*CgR_f}4|Yf#7vX zc&y;|Bs@m&Mhou_R!$#H^DOG1b$0>e(sYZq(u^Nig1~8%{CBwiIg0!W{s$ookee;c zcahjGkj-P|IE_#ck&cj`rS!T1K7bT}Gv)b?&AbmdL;fNm`J+&h{L+=*AvZs-!uKZf zyFl5UAh?^|_(=AmlFkqOdAlZrv+FqM4i=*Q;H80^!R!S)3v{?+wu8T5x*@y4(s9KW z?>5u3Dlel~mD2kz%i|Q{hN2F$$_BfJzj`Ws2;$z3UP=KD8zkEj=eax5;NfGQ55x+ z1B4$R@%|>z*_YQdA?$q={i>yfZ-wrPeU`pr_Ne>Z{xTE?Dj{|u_91p5_91p5_91q$ zn#yDe{Zs}<@k1*0T`>wOvXl6zXm|I7(=K7wY-bO7>eN+J#rRT2sNXT*EH?b z@QVYbo)-CtF&tEQHS1b8xT<+1=%G^ErnkuQuv(HaI=`gSayBQ?)olj%dKyx;V~LeY~liZs2BPKR7(CWQZ8TuNm)Zb=?>zF^xYY zgig}RxnTQ;ClxQ;6AW)N1Ec15Q1eo8WpU)Ch9g5iyW}d|&uG5_<;dz>#m%K?Z}w1) zilypVGgd1?H#M8F!i^w)yt~9hzks@U?OX^~Aax|zws92lpCcK$yZm@9(I@hTxnapW zCh?x3IaTR!jPzM-C0ncJ*x{!xtv!wdH8Zqik$)A)pY9?bt=M5s2w~jJc1-Ul%%Dj~y5)he~iUILeT-kBH~x2mM`L~-6* zlfvVkLgFCEcGBaqPg4@L%P0A#B%*pzzo=f+FRF)JugaoynPN1Qnv(u7K_-VdM5OO6 ze+4WSchK#Y8xn7~{dBqM&CQ^4c{gQ3zjiZZs_^R1YZY9Cb!{V=XdJFgQ>#Ch^tY83_JtmZ z-O0AD8s`W6Q$`SP<|Vc=kiXkMMbF}ch9ZTu-7YmNhn-L}eR64nzl$_W3p<#PU+5-( zzD*t-rkVv&bLDiEnmD|kD_pEm%rCJ%LG$q=s%j6)jvrAMf$omVQPsq;>Jbqjbax2S zle@|RpL^3E83%9R^_ru_;c*Y5+OMQ=7y2BQ9<$ZFoBu$i+R8m!yBlW8>6BI6)8eb! z3$L1=zeW0)mBT9m^}v$wZj}Wc(j*p*Bv>@D_I``GS$53?KdBId7{KVp7~`6=d3%*~kZV6MP?9rH!ZNX)sI zK6din!|cXv#-y%4j0B13{&xCkVlgoFn`pifZD>O4>)%jfMEt-vZ?ApkN(LAUY(t%umcsu=g(L#W?AWdLqxK)c5C*e7Q z?@GeVaH|$ICE*(c-2{Xg3TJ%H`o+9|kB+LxA zYSD@$91#3;5@v>5wP$raH|%zC*d)IHzwiHf;*CMuHdan zc$DBBNjOKaCb=$tvjuCO=fWcdzn+Ad^~xW;7-nlYuz_dwK`+3T7i_4dzMALzufTHJDkL3QQ0)4l^2)jmf~A zpa}0^Ucqd_#OXQFAN2fhygz(gZ@5ssA-P|W=nvZ%`cnJD+?p$#vvIHD7@XQ1pFt7w!Z2o=&&q=^V2EIK3j{~l0tF?g(46xV&V-3(`fiVVn zzyhNUu*?Fv26(~(qYSXZ0yzd)ZGmh9F!vNvM;M^p0$B#=ut25(c32?80L=3gC*1%{ zG6Z-Hz;Fj}sj;(d&?owijBEQC`aTLlS^EBt@0uBF*Mf$XnBQU^!rYBnfC*uQ!f#`) z!1yp@G5?Oa0CNsT^wI;pO3qf|w-NbV2UtfFgch^Od2MY-;1Qb zIVJo7s!z{BtMl>nThGZ~pWnalw*3CsVmhl)S{Z1}YQT=T=iV;HvSvMQynnqt&tOCN z>v}2v>)QVs$-s+11{Mi)YzWl1v5k2=#73Bvjne5$lpWc2oxZel`mzZfj-yh`6Uq9i z2K1vlcyOM?z<4k?oS-qC>uTY8`H+4jPp{rVdRM z{r}JMH~QI@d)c4&zNfu#hjYc+eyhAS$uHt8#_E&|qf-&t$Pdjn+-|CZm=nU0Ut;}; z4dF=XD8-iHH0%FYNzJXYFT{?J=2jMO0v7`!pNXvG zMuB$$BAU68C7r+~K%_F;k@6IHA0Psm67UrG03foMlI;}u5a3KJ)+ulqV1%De0lE^>=xf9;me7U;Jr@*OrBEgd4GJQ;@%a`@@s;A&+`ae-upBj^CfUOo+zt{ zAz90bk*a&w;PE}lSx$`1LL;8De70mPk*~aW9l#{XSB@v)cG5MXmCkIbVVgZUi_f%C zI$?1So0$+-+`CbPu~U=dsrSAjyTrCS1qbhC<327^iOBEx$kcn;z-J2m&r4N86p`yz z1j4-0Qj9G2p3dG0Y5paHSi{-%|J4s5X$apvNu<(Q@E;7sbQ#1dFNc7zv5_{tVYBeQ3@u@ZbtF0G%vKgechQIzZ?bv1xF1 zN`lnp*W7LZpF>x{?8`>*8K3TAjeZ;%9J$KNG(1wybpy^vX`dZBf0%lYISSn@d&NDh zLQLQ6+c_Z;ya(Br4So+IPp6cK!`odx&-0YZ*ZIMuw2CEzCWW&t{XV zA%uJ1v&UzoAY?rHEzdJZ@foC;6?0;}jL@zX?|sn72wD6*XwD-+n8DA3I!~Jv@juuL zGLa2J+)G6~we@!SJv_|4r}KjeX%!DcX=aNpShzd%^Vt1R8kj=5Rj-$;ybEzjw%tk1 zmgK+j_6yoJYaiHNCm(CkUeAAIdp#Y~Ek@;?Zu7oO{d2rG1y_U7JQFE7f&6EDeoNIw z%u}DTJ=GBQQ|5ThpyxDrumW-IhGu$;)BMkH!OAR9Ss&_v>JPE-34;veaiw2g1-cCv z+e%VP6Y-reyFq# zQbAwj-yfMCC#hsvHSSPWY2;V9UlT5g+{k&HW2sA;Y7Hk$esk;>ZqOeQ)C5S>yG;R( z#E$ca;?KI*pzQgkN&N7mNbo83SL)f~5t2K5eZn!DAWz8;c6qWN;@tkH*j14(r-Pxt z`i`tc^ZpQWC5@?1_3pbI?A(1t{;j@YM6Z8>x`wPm|rGc#A-q|OjrJAHwf z;wijA5+=nS)Jemn%u#%>t_Qkn5Z%>@(J7*&N=|NZ^_F7KT3B0gT1A7mI9ySuJ87V) zHMGcgqy;qXX7foj9~@W&J&`tWq6!1uDdZgYrA=+1HL~hrzalQmu6^+aH1sJn4rnwS zY!jxU>tJZR&Hp>3aY~d}K&}@KdZ3rJD`q}sF6KH+IVOlH!h8wydCUcvPhd{4H}o!M zH)a#28S@n8SD5=T+W#6bzjV)cFQIA7ymA4OpNRUdIYg zdz|v=lFtf7cwG@#6`Bazw-0H($R3kCwV&~!;%o1o^&N3*9@HiVtGKu1u8mE*Wq+u& zau>(&ShHmBgL?Lc1;7kZ_zM~!8vxBI}ncNKfX0)&w8KWjzpZkKk~eHa%Dwb zEm@fJ-pQ5KbqfLF=e>d#C*e7Q?@Ge61UDt&8wB5%gsTLnp7#oVDCu7zcv%uI6Z}{b zo+|i>Bs@j%lSw!zctsKp2!1*V`vs?-_X=K<^dBdD{Jbs6_#?|EB_trKN0GG^7C-M5=0!2?0W1d%BNRlWW6pb(o=8XM zxjJx^r?%W_9CO|)e^HS9-Sb}MmpJcLcu|tg?*e6ag5Yj;kkiDp>_yD865C%p7_L*M zsphbEmFbgAQb(IU$sDzfKAAY|wI@Y7A<{{ax|vRjIITPRz*ncek!zVNa<^CKS(jJ( zf2&iX;*QHJtAG1CHr_Dww8~kBamCG(v8kiD=SA``2fhk^h!8q2lB3Q#-1DN+O5tuV zXDOVcOiUZKd{TInJs#R0x;uH;t1EpPJO7cxUbj*!gnv$6I2SqTz*mDQE3zhvRcFt8 zCs$6b6JxlV^WFn;w&%S+5Q?fv3@Ax$DB32t}#ZsO1&J|PmGNYTBFuz4*%~|i$W@+L4^waoID{6A` zSugVj9rxPtQ0z>^)f4AUoF5uyrcxYEa3u*U3}j5wkKYn|#+?EFfq!z79FC3@b=)gL z(GjB#)OExtc^nZCI5q_I1ULrQ-=&2A#p&C4_n1*!`btoZK&GXiiU;-5(TolV#js?Z zukWA(Jg8&H8PJc*kHPouQctUb3ID|_6viC*KEYwGoJD4BL@xF8$WQoxMbU-%!^DF^Qfy^$MF zdH5@ z)4d-RA-VD@3Z;rcZ?hgX2f)aylvef=_IRmhe+j}}o&6Kj#{Gul2rHlRX6T{VZ1-^X zd-iY^a!DS#_qg4`UGIuU#TIvnaD_9Z#df>I$^*3nDYcYWQeKP=byGjfq%Qs@rkyzV zWiG*6vaFK=Oxw+h76lTC_Ga*TN;U0+^q$gzjOH~@d$2gZHv6I0J6mGfCDSW5?i_bZQ%NP8fgsea zBa$yWsiQwFi=*GHd*plKG`>@pGW(tyKl<$q{n;M;T{H zOB=gXn~$-d;Cg+N=EnD87GUOLzKgjEGamDwn9pL)!wkk8;OulSW(%eT^C!%&F!y2> zU_uxnbQmOV_SM5I;Ovomy5 zpJL#$1RON*%mf@Tu#Pfpc)x*l8f4)j1K*y2#{pMFxnZx$78qc$1;!en$pT{x@PGwI z8(^6Qat-i=1x6WQg#~g9z*wZDvkib4jDQgaVDJ)63^F)xBenP4R`#*cA0|Qf%>%3d(mghx`sFQne{2_}zf@ zDmqDW>0k?Af-CvL+c+2rcc}EuVe|!Mp3~u&@{=06E`0qjGM?l7nHx>Q(_Rlh&-f88 z-HOhS=6!Qq{;g`(o@X8xE>^@DtGh>2R;uwjac7`U;cAItE7(w5_I3VnPaJFE9aL8( zKpTcs2uo$<7dv@_>a7FLjGYYrl*03Tu<&?w&H=rh^C1a;v1{&6K;=4v%4f1|rT6{L z*S~Jx8NM~J1y++?oN(o)ED3OQf5J!qi_YSo0f&1irdpKk%xOk<5C6>=6rmX9iMl_7 zGJGC;Lm7TE%I?o=M~Wp&N+?lg@3g+74_YQs+NGvjB=0S2j&Qhrp@Ml zXMyBB_hq>VP&rlJI3hkp^-;pgqbEW{$rxdy$YA3%_{fA1Tzn`6a3XxDv31c0#2PH| zF`%w^Tf7iJ`Le+~jqAbOCj~!a4StRYKe}(r+cfBKdQJFf-D$p?%@-}A7H?qdL%C2# z(6e6%&~-*M4Fc-&zJ2S!fcpgM2C4OZTj1Xlpk5F`-+bIx+5k`v3@(jYIo;+XS{#Q_ zg)@4wJ7v?2rCc625?(J6Ub9svw{C_8u&3fT4}{(#{9Y^k8a?n=7GW!y!pApLZy27m z|5X}(u{g{_avMv++szT{-@!WNx%oL?{Rz%lLoB(man9PoJ{YzPry-N$Mk&v@>jKm_ z_#3~)TXd@?jpo>cE!0($a8=JuiPk#TLj*?b9UFP7Uo<)qOiht~(8 z-77htf<9)?x?4Twa7^~w4_rcWrdt zjy)_Du3SVmp1SLJShNyX1YmN}h4RBaHc?$GKP=t3TmdznB2Zg|qc(*4*kOC4UBN!I zDXScZl~A9QOYiNL>)5-2j~~`;sxXu#9{59tG1Ar(07>2Q_@YQm+Q6bF~`&aQ!PPb*y)F6Fd1xOB1WRGn7Z94_U= zIJopK*J(~#>6&oqYB@>Mj}n@dR=PS|`m~(xbDeHTD}5RrS#o;7b*f4$T@fzjZy7GQVdx2hmHPa6`=DF!~6`yGx(6 z0j8h`=m3Y)OINr70zsdL^WTc4(oRJA$^!O~dZ{!RDUaLz98_~Sy;N$Btr zUfS$B+~6KkFO|Y1g(z|ls+UU3mg=m->R@D^xoFObHT(P=S@S*R%zEiYog>&Y>!tQ2 zEOBPNl*5VmnYC&pJwX4`i8VwPfyg4)JuyC#wbUPuxmtkkH}dKzC26>uU7Of%P*ek} z;ljsZ2o4*YfMYHDVHa>noc%}xPn`W^!yG1$;4>|&SnQ-E%vsH<`56G$q+`3r8=kR| z{|k8s6P|;y7jK!Z*vpYRc7dP3`MR*7cEY)Ne=sa{7~F2g^&mETy%|KsZ>#F2F}z0X zWFS8Y-fbAddiBStcN>P_-cH3Kc(-8)&&#voZrxNpoO(CagwU13!!OwAy8e9Fy_sq} zb))d`CiQxIG1Ue$yujX%#(%F~nVFqoc)IfI9!tnRd0KV#)3}H6iVpbS#7w^F18~+lDkwA7Y1b>i3@kWbc zYIHN&+d#Kr>NiVAKMe=wHNOLmhDEFOphAxw+> z-9|Sp@@7hO(-^PH!L*Yb%&_P#o2cQ=F@<=?rePYx6v610(Ay4sP1tPHB35%jvPHBI zRku)AjXh_SIh{b};88pJB6A>ZZl;ZXjc2@lg#O8*?rC0-&e-@5&~-j)^}s^U^&0Io z*nxEh8jV$Q?*-b2t>$iKw+wR{<)ov;+1rcj=(~~K-VgtnKRRCaxhrDBD3U4L*(qhy zG{B7Fng*CbJO_)J4`>=-<^!4rbW?mY4KVWo<}P+VU}gbkK44}6CM7cqP*VTmEI@Mz znuuPeyCJ&viAzer#d>n(^L+^w^!W6r)rLxC-BqAkx zR|AJ*KBJQRErW9}N6Sm3_kp~ER2xRNkx%?)wERVaW_shN()hb-FThPyy$GF-v&Y>{ z?#Fc!K7U-i&T|*V?uys44oke2;$M?BJWLy*3TC-X?EeG)^>IT4ZFaLbHtfrc7AK7t zQ!UThEVNWu64N>kO$9i(14yUrRd(!nU7kq}H`OBfB^%watKBKl4VuL<(dxu!s|{vI zY==$MP}d%LzNU}faI@?x%TU)=QCC(R)6Rkt!>(Xe7jU%0AcCCB^NiGn2@Jt0j(Z-2 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

    Rpk-v-;#R3&z4yf`-wfOvmF!+Z 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 t>& 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 /// Gets the pattern ID. @@ -75,7 +74,6 @@ public interface IPatternHandle public PatternHandle(Timeline timeline, int id) { _lib = timeline.Slot.SunVox.Library; - _slot = timeline.Slot; _slotId = timeline.Slot.Id; Id = id; } diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index 1b7303a..cd36c75 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -30,7 +30,13 @@ Nullable Debug;Release;Generation - + + + + <_Parameter1>$(MSBuildProjectName).Tests + + + GENERATION @@ -54,7 +60,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From dc8bb1051a1834f781ace8e7511acf3cef93a374 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Mon, 2 Feb 2026 23:21:37 +0100 Subject: [PATCH 19/27] improvements in code, test coverage, audio integration tests --- .../Generators/NativeProxyGenerator.cs | 4 +- Examples/Program.cs | 28 +- .../AudioTests/BaseAudioTest.cs | 99 +++ .../AudioTests/SimpleAudioTest.cs | 74 ++ .../AudioTests/output/.gitignore | 4 + .../AudioTests/output/whatisthis.txt | 1 + ...grationTests.cs => BaseIntegrationTest.cs} | 15 +- .../SunSharp.IntegrationTests.csproj | 4 + .../SunVoxLibTests/NoteTests.cs | 6 +- .../SunVoxLibTests/OtherTests.cs | 20 +- SunSharp.Tests/EffectExtensionsTests.cs | 54 ++ .../Native/Loader/NativeProxyTests.cs | 36 +- ...ests.cs => SunVoxLibAudioCallbackTests.cs} | 20 +- ...dulesTests.cs => SunVoxLibModulesTests.cs} | 36 +- ...ernsTests.cs => SunVoxLibPatternsTests.cs} | 2 +- ...ativeWrapperTests.cs => SunVoxLibTests.cs} | 2 +- SunSharp.Tests/PatternEventTests.cs | 43 ++ SunSharp.Tests/SlotTests.cs | 711 ++++++++++++++++++ SunSharp.Tests/SunVoxTests.cs | 491 ++++++++++++ SunSharp.Tests/SynthesizerTests.cs | 622 +++++++++++++++ SunSharp.Tests/TimelineTests.cs | 406 ++++++++++ SunSharp/Diagnostics/Logger.cs | 2 + SunSharp/Diagnostics/SunVoxLibWithLogger.cs | 2 + SunSharp/Enums.cs | 7 +- SunSharp/Native/Loader/NativeProxy.cs | 19 +- SunSharp/Native/Loader/NativeProxy.g.cs | 192 ++--- SunSharp/Native/SunVoxLib.cs | 7 +- SunSharp/Slot.cs | 18 +- SunSharp/SlotLock.cs | 41 +- SunSharp/SunSharp.csproj | 2 +- SunSharp/SunVox.cs | 107 +-- SunSharp/Synthesizer.cs | 1 + SunSharp/Timeline.cs | 4 +- 33 files changed, 2863 insertions(+), 217 deletions(-) create mode 100644 SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs create mode 100644 SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs create mode 100644 SunSharp.IntegrationTests/AudioTests/output/.gitignore create mode 100644 SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt rename SunSharp.IntegrationTests/{BaseIntegrationTests.cs => BaseIntegrationTest.cs} (79%) rename SunSharp.Tests/Native/{SunVoxLibNativeWrapperAudioCallbackTests.cs => SunVoxLibAudioCallbackTests.cs} (99%) rename SunSharp.Tests/Native/{SunVoxLibNativeWrapperModulesTests.cs => SunVoxLibModulesTests.cs} (97%) rename SunSharp.Tests/Native/{SunVoxLibNativeWrapperPatternsTests.cs => SunVoxLibPatternsTests.cs} (99%) rename SunSharp.Tests/Native/{SunVoxLibNativeWrapperTests.cs => SunVoxLibTests.cs} (99%) create mode 100644 SunSharp.Tests/SlotTests.cs create mode 100644 SunSharp.Tests/SunVoxTests.cs create mode 100644 SunSharp.Tests/SynthesizerTests.cs create mode 100644 SunSharp.Tests/TimelineTests.cs diff --git a/CodeGeneration/Generators/NativeProxyGenerator.cs b/CodeGeneration/Generators/NativeProxyGenerator.cs index 1f0db33..4c70183 100644 --- a/CodeGeneration/Generators/NativeProxyGenerator.cs +++ b/CodeGeneration/Generators/NativeProxyGenerator.cs @@ -71,7 +71,7 @@ protected override string GenerateBody() AppendLine("{"); AddIndent(() => { - AppendLine($"public sealed partial class {nameof(SunSharp.Native.Loader.NativeProxy)} : ISunVoxLibC"); + AppendLine($"public sealed partial class {nameof(NativeProxy)} : ISunVoxLibC"); AppendLine("{"); AddIndent(() => { @@ -142,7 +142,7 @@ private void AppendLoadMethod(ParsedFunction[] functions) foreach (var f in functions.OrderBy(f => f.Name)) { var delegateName = GetDelegateNameCode(f); - AppendLine($"{f.Name} = ({delegateName})(_handler.{nameof(ILibraryHandler.GetFunctionByName)}(\"{f.Name}\", typeof({delegateName})) ?? throw new InvalidOperationException(\"Failed to load function {f.Name}\"));"); + AppendLine($"{f.Name} = GetDelegateOrThrow<{delegateName}>(\"{f.Name}\");"); } }); AppendLine("}"); diff --git a/Examples/Program.cs b/Examples/Program.cs index 653d2ce..017e23d 100644 --- a/Examples/Program.cs +++ b/Examples/Program.cs @@ -3,8 +3,7 @@ using System; using System.Threading; using SunSharp; -using SunSharp.Diagnostics; -using SunSharp.Native; +using SunSharp.Modules; using SunSharp.Redistribution; namespace Examples; @@ -22,17 +21,21 @@ private static void Main() return; } - var generator = slot.Synthesizer - .CreateModule(SynthModuleType.AnalogGenerator, "My Generator Module") - .AsAnalogGenerator(); - - if (!slot.Synthesizer.TryGetModule(0, out var outputModule)) + AnalogGeneratorModuleHandle generator; + using (var slotLock = slot.AcquireLock()) { - Console.WriteLine("Failed to get the output module."); - return; - } + generator = slot.Synthesizer + .CreateModule(SynthModuleType.AnalogGenerator, "My Generator Module") + .AsAnalogGenerator(); - slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); + if (!slot.Synthesizer.TryGetModule(0, out var outputModule)) + { + Console.WriteLine("Failed to get the output module."); + return; + } + + slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); + } slot.VirtualPattern.SendEvent(0, generator.MakeNoteEvent(Note.A(4))); @@ -41,6 +44,7 @@ private static void Main() slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); } } + #else namespace Examples; @@ -51,4 +55,4 @@ private static void Main() { } } -#endif \ No newline at end of file +#endif diff --git a/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs b/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs new file mode 100644 index 0000000..2f6353e --- /dev/null +++ b/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs @@ -0,0 +1,99 @@ +using System.IO; +using System.Runtime.CompilerServices; + +namespace SunSharp.IntegrationTests.AudioTests; + +internal class BaseAudioTest : BaseIntegrationTest +{ + protected static string GetTestAudioPath(string fileName) + { + var dir = Path.GetDirectoryName(GetThisFilePath()) ?? throw new(); + return Path.Combine(dir, "output", fileName); + } + + protected static string GetThisFilePath([CallerFilePath] string callerFilePath = "") + { + return callerFilePath; + } + + protected byte[] ToWave(float[] array, int sampleRate, int channels) + { + // turn float to PCM for now + var shortArray = new short[array.Length]; + for (int i = 0; i < array.Length; i++) + { + var clamped = Math.Clamp(array[i], -1.0f, 1.0f); + shortArray[i] = (short)(clamped * 32767); + } + return ToWave(shortArray, sampleRate, channels); + } + + protected byte[] ToWave(short[] array, int sampleRate, int channels) + { + using var memoryStream = new MemoryStream(); + using var writer = new BinaryWriter(memoryStream); + + const short bitsPerSample = 16; + const short bytesPerSample = bitsPerSample / 8; + int dataSize = array.Length * bytesPerSample; + int byteRate = sampleRate * channels * bytesPerSample; + short blockAlign = (short)(channels * bytesPerSample); + + // RIFF header + writer.Write("RIFF"u8); + writer.Write(36 + dataSize); + writer.Write("WAVE"u8); + + // Format chunk + writer.Write("fmt "u8); + writer.Write(16); + writer.Write((short)1); + writer.Write((short)channels); + writer.Write(sampleRate); + writer.Write(byteRate); + writer.Write(blockAlign); + writer.Write(bitsPerSample); + + // Data chunk + writer.Write("data"u8); + writer.Write(dataSize); + + foreach (var sample in array) + { + writer.Write(sample); + } + + return memoryStream.ToArray(); + } + + protected void TestResultantAudio(byte[] audioData, string hash, string fileName) + { + // first, read existing file, check hash, overwrite if different or not existing + var filePath = GetTestAudioPath(fileName); + var fileHash = ComputeHash(audioData); + var shouldWriteFile = true; + if (File.Exists(filePath)) + { + var existingData = File.ReadAllBytes(filePath); + var existingDataHash = ComputeHash(existingData); + if (string.Equals(existingDataHash.ToString(), fileHash.ToString())) + { + shouldWriteFile = false; + } + } + + if (shouldWriteFile) + { + File.WriteAllBytes(filePath, audioData); + } + + fileHash.ToString().Should().Be(hash, "the resultant audio file hash should match the expected hash"); + } + + private object ComputeHash(byte[] data) + { + using var sha256 = System.Security.Cryptography.SHA256.Create(); + var hashBytes = sha256.ComputeHash(data); + return Convert.ToBase64String(hashBytes); + } +} diff --git a/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs b/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs new file mode 100644 index 0000000..70d95bc --- /dev/null +++ b/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; +using System.Linq; + +namespace SunSharp.IntegrationTests.AudioTests; + +internal class SimpleAudioTest : BaseAudioTest +{ +#if !GENERATION + + [Test] + public void SimpleArpeggio() + { + const string hash = "FLBVvS3nffTDsajOlBeceZsIero8UpCd4RFwyXhJBVM="; + const int sampleRate = 44100; + +#if RELEASE + using var sunVox = new SunVox(_libc!, 44100, OutputType.Int16); +#else + using var sunVox = new SunVox(Lib, 44100, OutputType.Int16); +#endif + if (!sunVox.Slots.TryOpenNewSlot(out var slot)) + { + Assert.Fail("Failed to open new slot"); + return; + } + + using (var l = slot.AcquireLock()) + { + var module = slot.Synthesizer.CreateModule(SynthModuleType.Generator, "generator").AsGenerator(); + + module.ConnectOutput(slot.Synthesizer.GetModule(0)); + + var pattern = slot.Timeline.CreatePattern(64, 1, 0, 0); + + // arpeggiate a Cmaj7 chord up and down + + var notes = new[] + { + Note.C(4), Note.E(4), Note.G(4), Note.B(4), Note.C(5) + }; + var indices = new[] { 0, 1, 2, 3, 4, 3, 2, 1 }; + for (int i = 0; i < 64; i += 2) + { + var index = indices[(i / 2) % indices.Length]; + + pattern.SetEvent(0, i, module.MakeNoteEvent(notes[index])); + } + } + + slot.SetAutomaticStop(true); + slot.StartPlaybackFromBeginning(); + List buffers = []; + do + { + var buffer = new short[2048]; + sunVox.AudioCallback(buffer, 0, sunVox.GetTicks()); + buffers.Add(buffer); + } while (slot.IsPlaying()); + + var result = new short[buffers.Sum(b => b.Length)]; + var bi = 0; + foreach (var b in buffers) + { + b.CopyTo(result, bi); + bi += b.Length; + } + + var final = ToWave(result, sampleRate, 2); + slot.SaveToFile(GetTestAudioPath("SimpleAudioTest.sunvox")); + TestResultantAudio(final, hash, "SimpleAudioTest.wav"); + } + +#endif +} diff --git a/SunSharp.IntegrationTests/AudioTests/output/.gitignore b/SunSharp.IntegrationTests/AudioTests/output/.gitignore new file mode 100644 index 0000000..387a6bc --- /dev/null +++ b/SunSharp.IntegrationTests/AudioTests/output/.gitignore @@ -0,0 +1,4 @@ +* + +!whatisthis.txt +!.gitignore diff --git a/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt b/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt new file mode 100644 index 0000000..a781b87 --- /dev/null +++ b/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt @@ -0,0 +1 @@ +This directory will contain output files from AudioTests integration tests. diff --git a/SunSharp.IntegrationTests/BaseIntegrationTests.cs b/SunSharp.IntegrationTests/BaseIntegrationTest.cs similarity index 79% rename from SunSharp.IntegrationTests/BaseIntegrationTests.cs rename to SunSharp.IntegrationTests/BaseIntegrationTest.cs index db7c494..215a54d 100644 --- a/SunSharp.IntegrationTests/BaseIntegrationTests.cs +++ b/SunSharp.IntegrationTests/BaseIntegrationTest.cs @@ -1,10 +1,11 @@ using System.Runtime.CompilerServices; +using SunSharp.Diagnostics; using SunSharp.Native; using SunSharp.Redistribution; namespace SunSharp.IntegrationTests; -public abstract class BaseIntegrationTests +public abstract class BaseIntegrationTest { public ISunVoxLibC? _libc; public SunVoxLib Lib { get; protected set; } @@ -31,8 +32,7 @@ protected virtual void SetUp() { try { - Lib = new SunVoxLib(_libc!); - Lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + Lib = new SunVoxLib(new SunVoxLibWithLogger(_libc!, new ConsoleLogger())); } catch (Exception e) { @@ -51,8 +51,13 @@ protected virtual void TearDown() } finally { - Lib.Deinitialize(); - _libc = null; + try + { + Lib.Deinitialize(); + } + catch (SunVoxException) + { + } } } diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 3f418d7..5a20d0c 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -36,4 +36,8 @@ + + + + \ No newline at end of file diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs index a5387d8..5f325cb 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs @@ -2,19 +2,21 @@ namespace SunSharp.IntegrationTests.SunVoxLibTests; -internal class NoteTests : BaseIntegrationTests +internal class NoteTests : BaseIntegrationTest { private string TestFilePath => Path.Join(base.GetTestPath(), "all_notes.sunvox"); [Test] public void AllNotes_ShouldBeReadAsExpected() { + Lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); const int slotId = 0; Lib.OpenSlot(slotId); Lib.Load(slotId, TestFilePath); Lib.LockSlot(slotId); - var result = Lib.GetPatternData(slotId, 0); + Lib.UnlockSlot(slotId); + Lib.Deinitialize(); result.Should().NotBeNull(); var (data, tracks, lines) = result.Value; diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs index 128c795..629ca94 100644 --- a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs +++ b/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs @@ -1,18 +1,26 @@ namespace SunSharp.IntegrationTests.SunVoxLibTests; -internal class OtherTests : BaseIntegrationTests +internal class OtherTests : BaseIntegrationTest { - protected override void SetUp() - { - } - [Test] public void Initialize_ShouldReturnExpectedVersion() { - var version = Lib.Initialize(-1, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + var version = Lib.Initialize(48000, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); version.Major.Should().Be(2); version.Minor.Should().Be(1); version.Minor2.Should().Be(4); + + Lib.Deinitialize(); + } + + [Test] + public void InitializeAndDeinitialize_CanBeCalledManyTimes() + { + for (var i = 0; i < 99; i++) + { + Lib.Initialize(48000, options: SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + Lib.Deinitialize(); + } } } diff --git a/SunSharp.Tests/EffectExtensionsTests.cs b/SunSharp.Tests/EffectExtensionsTests.cs index 6a474cb..1b8329b 100644 --- a/SunSharp.Tests/EffectExtensionsTests.cs +++ b/SunSharp.Tests/EffectExtensionsTests.cs @@ -98,4 +98,58 @@ public void ChangesTempo_ShouldReturnFalse_ForNonTimeModifyingEffects() effect.ChangesTempo().Should().BeFalse(); } } + + [Test] + public void IsEventDelay_ShouldReturnTrue_ForDelayEffects() + { + var delayEffects = new[] + { + Effect.Delay0, + Effect.Delay1, + Effect.Delay2, + Effect.Delay3, + Effect.Delay4, + Effect.Delay5, + Effect.Delay6, + Effect.Delay7, + Effect.Delay8, + Effect.Delay9, + Effect.Delay10, + Effect.Delay11, + Effect.Delay12, + Effect.Delay13, + Effect.Delay14, + Effect.Delay15, + Effect.Delay16, + Effect.Delay17, + Effect.Delay18, + Effect.Delay19, + Effect.Delay20, + Effect.Delay21, + Effect.Delay22, + Effect.Delay23, + Effect.Delay24, + Effect.Delay25, + Effect.Delay26, + Effect.Delay27, + Effect.Delay28, + Effect.Delay29, + Effect.Delay30, + Effect.Delay31 + }; + foreach (var effect in delayEffects) + { + effect.IsEventDelay().Should().BeTrue(); + } + } + + [Test] + public void IsEventDelay_ShouldReturnFalse_ForNonDelayEffects() + { + var nonDelayEffects = Enum.GetValues().Where(e => e < Effect.Delay0 || e > Effect.Delay31); + foreach (var effect in nonDelayEffects) + { + effect.IsEventDelay().Should().BeFalse(); + } + } } diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs index b3016be..29389e6 100644 --- a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs +++ b/SunSharp.Tests/Native/Loader/NativeProxyTests.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using AwesomeAssertions.Execution; using NSubstitute.ExceptionExtensions; using SunSharp.Native; using SunSharp.Native.Loader; @@ -140,10 +141,10 @@ public void Unload_WhenLibraryNotLoaded_ShouldNotCallUnloadLibraryOrDeinit() proxy.IsProxyLoaded.Should().BeFalse(); } - [TestCase(false, true, "Missing delegate. Library is not loaded, proxy is loaded.")] - [TestCase(true, false, "Missing delegate. Library is loaded, proxy is not loaded.")] - [TestCase(false, false, "Missing delegate. Library is not loaded, proxy is not loaded.")] - [TestCase(true, true, "Missing delegate. Library is loaded, proxy is loaded.")] + [TestCase(false, true, "Missing delegate for function 'test'. Library is not loaded, proxy is loaded.")] + [TestCase(true, false, "Missing delegate for function 'test'. Library is loaded, proxy is not loaded.")] + [TestCase(false, false, "Missing delegate for function 'test'. Library is not loaded, proxy is not loaded.")] + [TestCase(true, true, "Missing delegate for function 'test'. Library is loaded, proxy is loaded.")] public void GetNoDelegateException_ShouldReturnExpectedMessage(bool libraryLoaded, bool proxyLoaded, string message) { var handler = Substitute.For(); @@ -164,7 +165,7 @@ public void GetNoDelegateException_ShouldReturnExpectedMessage(bool libraryLoade handler.IsLibraryLoaded.Returns(libraryLoaded); - var exception = proxy.GetNoDelegateException(); + var exception = proxy.GetNoDelegateException("test"); exception.Message.Should().Be(message); } @@ -329,15 +330,15 @@ public async Task InterfaceCalls_BeforeLoadCalled_ShouldThrowInvalidOperationExc var methods = typeof(ISunVoxLibC).GetMethods(); - await Parallel.ForEachAsync(methods, (method, _) => + using var scope = new AssertionScope(); + foreach (var method in methods) { var parameters = method.GetParameters().Select(static p => GetDefault(p.ParameterType)).ToArray(); method.Invoking(m => m.Invoke(proxy, parameters)) .Should().Throw() .WithInnerException() - .WithMessage("Missing delegate. Library is not loaded, proxy is not loaded."); - return ValueTask.CompletedTask; - }); + .WithMessage($"Missing delegate for function '{method.Name}'. Library is not loaded, proxy is not loaded."); + } } [Test] @@ -453,4 +454,21 @@ public void Load_WhenProxyLoadedButLibraryUnloaded_ShouldReload() handler.Received(1).LoadLibrary(); proxy.IsProxyLoaded.Should().BeTrue(); } + + [Test] + public void Load_WhenGetFunctionByNameReturnsNull_ShouldThrowAndUnloadLibrary() + { + var handler = Substitute.For(); + handler.IsLibraryLoaded.Returns(true); + handler.GetFunctionByName(Arg.Any(), Arg.Any()).Returns((Delegate?)null); + + var proxy = new NativeProxy(handler); + + proxy.Invoking(p => p.Load()) + .Should().Throw() + .WithMessage("Failed to load function '*'."); + + handler.Received(1).UnloadLibrary(); + proxy.IsProxyLoaded.Should().BeFalse(); + } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs b/SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs similarity index 99% rename from SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs rename to SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs index 084b80e..88ee2e6 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperAudioCallbackTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs @@ -3,7 +3,7 @@ namespace SunSharp.Tests.Native; -public class SunVoxLibNativeWrapperAudioCallbackTests +public class SunVoxLibAudioCallbackTests { private const int ErrorResponseCode = -1; @@ -110,7 +110,7 @@ public void AudioCallback_WithOutputFloatInStereoInputShortInStereo_ShouldCallEx #endregion input short, output float #region output only, float, mono - + /* [Test, AutoData] public void AudioCallback_WithFloatInMono_ShouldCallExpectedMethodAndReturnBoolean(bool expectedValue, int latency, uint outTime) { @@ -206,11 +206,11 @@ public void AudioCallback_WithFloatInStereoOnReturnCodeNotOneOrZero_ShouldThrow( // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - + */ #endregion output only, float, stereo #region output only, short, mono - + /* [Test, AutoData] public void AudioCallback_WithShortInMono_ShouldCallExpectedMethodAndReturnBoolean(bool expectedValue, int latency, uint outTime) { @@ -250,7 +250,7 @@ public void AudioCallback_WithShortInMonoOnReturnCodeNotOneOrZero_ShouldThrow(in // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - + */ #endregion output only, short, mono #region output only, short, stereo @@ -307,11 +307,11 @@ public void AudioCallback_WithShortInStereoOnReturnCodeNotOneOrZero_ShouldThrow( // then library.Received(1).sv_audio_callback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - + #endregion output only, short, stereo #region output float mono, input float mono - + /* [Test, AutoData] public void AudioCallback_WithOutputFloatInMonoInputFloatInMono_ShouldCallExpectedMethodAndReturnBoolean( bool expectedValue, float[] outputBuffer, float[] inputBuffer, int latency, uint outTime) @@ -369,11 +369,11 @@ public void AudioCallback_WithOutputFloatInMonoInputFloatInMonoOnReturnCodeNotOn // then library.Received(1).sv_audio_callback2(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()); } - + */ #endregion output float mono, input float mono #region output float stereo, input float mono - + /* [Test, AutoData] public void AudioCallback_WithOutputFloatInStereoInputFloatInMono_ShouldCallExpectedMethodWithHalfInputFramesAndReturnBoolean(bool expectedValue, int latency, uint outTime) { @@ -419,7 +419,7 @@ public void AudioCallback_WithOutputFloatInStereoInputFloatInMonoOnBufferSizeMis // then library.Received(0).sv_audio_callback2(Arg.Any(), outputBuffer.Length / 2, latency, outTime, 1, 1, Arg.Any()); } - + */ #endregion output float stereo, input float mono #region input float stereo, output float stereo diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs b/SunSharp.Tests/Native/SunVoxLibModulesTests.cs similarity index 97% rename from SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs rename to SunSharp.Tests/Native/SunVoxLibModulesTests.cs index f08162d..27520c1 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperModulesTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibModulesTests.cs @@ -3,7 +3,7 @@ namespace SunSharp.Tests.Native; -public class SunVoxLibNativeWrapperModulesTests +public class SunVoxLibModulesTests { public static readonly TestCaseData[] ModuleInputOutputAndResult = [ @@ -1258,4 +1258,38 @@ public void WriteModuleCurve_NonZeroReturnCode_ShouldThrow(int slotId, int modul // then library.Received(1).sv_module_curve(slotId, moduleId, curveId, Arg.Any(), buffer.Length, 1); } + + [Test, AutoData] + public void GetSamplerSampleParameter_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, int parameter, int parameterValue) + { + var expectedValue = 1234; + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + + library.sv_sampler_par(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(expectedValue); + + // when + var value = wrapper.GetSamplerSampleParameter(slotId, moduleId, sampleSlot, parameter); + + // then + library.Received(1).sv_sampler_par(slotId, moduleId, sampleSlot, parameter, 0, 0); + value.Should().Be(expectedValue); + } + + [Test, AutoData] + public void SetSamplerSampleParameter_Default_ShouldCallExpectedMethod(int slotId, int moduleId, int sampleSlot, int parameter, int parameterValue) + { + var library = Substitute.For(); + var wrapper = new SunVoxLib(library); + + library.sv_sampler_par(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()) + .Returns(0); + + // when + wrapper.SetSamplerSampleParameter(slotId, moduleId, sampleSlot, parameter, parameterValue); + + // then + library.Received(1).sv_sampler_par(slotId, moduleId, sampleSlot, (int)parameter, parameterValue, 1); + } } diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs b/SunSharp.Tests/Native/SunVoxLibPatternsTests.cs similarity index 99% rename from SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs rename to SunSharp.Tests/Native/SunVoxLibPatternsTests.cs index 74f7689..861ae41 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperPatternsTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibPatternsTests.cs @@ -3,7 +3,7 @@ namespace SunSharp.Tests.Native; -public class SunVoxLibNativeWrapperPatternsTests +public class SunVoxLibPatternsTests { public static PatternDataCase[] PatternDataCases => [ diff --git a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs b/SunSharp.Tests/Native/SunVoxLibTests.cs similarity index 99% rename from SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs rename to SunSharp.Tests/Native/SunVoxLibTests.cs index 4ee0e28..3217f27 100644 --- a/SunSharp.Tests/Native/SunVoxLibNativeWrapperTests.cs +++ b/SunSharp.Tests/Native/SunVoxLibTests.cs @@ -4,7 +4,7 @@ namespace SunSharp.Tests.Native; -public class SunVoxLibNativeWrapperTests +public class SunVoxLibTests { public const int ErrorResponseCode = -1; diff --git a/SunSharp.Tests/PatternEventTests.cs b/SunSharp.Tests/PatternEventTests.cs index a378ad8..7dce008 100644 --- a/SunSharp.Tests/PatternEventTests.cs +++ b/SunSharp.Tests/PatternEventTests.cs @@ -432,6 +432,49 @@ public void Merge_ShouldWork() merged.XXYY.Should().Be(60); } + [Test] + public void Merge_WithEmptyFirst_ShouldReturnSecond() + { + var first = new PatternEvent(); + var second = new PatternEvent(10, 20, 30, 40, 50, 60); + + var merged = PatternEvent.Merge(first, second); + + merged.NN.Should().Be(10); + merged.VV.Should().Be(20); + merged.MM.Should().Be(30); + merged.CC.Should().Be(40); + merged.EE.Should().Be(50); + merged.XXYY.Should().Be(60); + } + + [Test] + public void Merge_WithEmptySecond_ShouldReturnFirst() + { + var first = new PatternEvent(10, 20, 30, 40, 50, 60); + var second = new PatternEvent(); + + var merged = PatternEvent.Merge(first, second); + + merged.NN.Should().Be(10); + merged.VV.Should().Be(20); + merged.MM.Should().Be(30); + merged.CC.Should().Be(40); + merged.EE.Should().Be(50); + merged.XXYY.Should().Be(60); + } + + [Test] + public void Merge_WithBothEmpty_ShouldReturnEmpty() + { + var first = new PatternEvent(); + var second = new PatternEvent(); + + var merged = PatternEvent.Merge(first, second); + + merged.IsEmpty.Should().BeTrue(); + } + [Test] public void FriendlyProperties_ShouldHandleOffsetsCorrectly() { diff --git a/SunSharp.Tests/SlotTests.cs b/SunSharp.Tests/SlotTests.cs new file mode 100644 index 0000000..f04104d --- /dev/null +++ b/SunSharp.Tests/SlotTests.cs @@ -0,0 +1,711 @@ +using SunSharp.Native; + +namespace SunSharp.Tests; + +public class SlotTests +{ +#if !RELEASE + + private static (Slot slot, ISunVoxLib mockLib, ISunVox mockSunVox) CreateTestSlot(int slotId = 0) + { + var mockLib = Substitute.For(); + var mockSunVox = Substitute.For(); + mockSunVox.Library.Returns(mockLib); + var slotManagementLock = new object(); + var slot = new Slot(slotId, slotManagementLock, mockSunVox); + return (slot, mockLib, mockSunVox); + } + + #region Constructor + + [Test] + public void Constructor_ShouldInitializeCorrectly() + { + // arrange & act + var (slot, _, mockSunVox) = CreateTestSlot(5); + + // assert + slot.Id.Should().Be(5); + slot.IsOpen.Should().BeFalse(); + slot.OpenCount.Should().Be(0); + slot.SunVox.Should().Be(mockSunVox); + slot.VirtualPattern.Should().NotBeNull(); + slot.Timeline.Should().NotBeNull(); + slot.Synthesizer.Should().NotBeNull(); + } + + #endregion Constructor + + #region Lock/Unlock + + [Test] + public void Lock_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(3); + + // act + slot.Lock(); + + // assert + mockLib.Received(1).LockSlot(3); + } + + [Test] + public void Unlock_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(3); + + // act + slot.Unlock(); + + // assert + mockLib.Received(1).UnlockSlot(3); + } + + [Test] + public void AcquireLock_ShouldReturnDisposable() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(3); + + // act + var lockObject = slot.AcquireLock(); + + // assert + lockObject.Should().NotBeNull(); + lockObject.Should().BeAssignableTo(); + } + + [Test] + public void AcquireLock_WhenDisposed_ShouldUnlock() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(3); + + // act + using (slot.AcquireLock()) + { + // Lock acquired + } + + // assert + mockLib.Received(1).UnlockSlot(3); + } + + #endregion Lock/Unlock + + #region Open/Close + + [Test] + public void Open_WhenClosed_ShouldOpenSlot() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(2); + + // act + slot.Open(); + + // assert + slot.IsOpen.Should().BeTrue(); + slot.OpenCount.Should().Be(1); + mockLib.Received(1).OpenSlot(2); + } + + [Test] + public void Open_WhenAlreadyOpen_ShouldThrowSlotAlreadyOpenException() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(2); + slot.Open(); + + // act - assert + slot.Invoking(s => s.Open()).Should().Throw().WithMessage("*ID=2*already open*"); + } + + [Test] + public void Open_MultipleOpenClose_ShouldIncrementOpenCount() + { + // arrange + var (slot, _, _) = CreateTestSlot(2); + + // act + slot.Open(); + slot.Close(); + slot.Open(); + slot.Close(); + slot.Open(); + + // assert + slot.OpenCount.Should().Be(3); + } + + [Test] + public void Close_WhenOpen_ShouldCloseSlot() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(2); + slot.Open(); + + // act + slot.Close(); + + // assert + slot.IsOpen.Should().BeFalse(); + mockLib.Received(1).CloseSlot(2); + } + + [Test] + public void Close_WhenAlreadyClosed_ShouldThrowSlotAlreadyClosedException() + { + // arrange + var (slot, _, _) = CreateTestSlot(2); + + // act - assert + slot.Invoking(s => s.Close()).Should().Throw().WithMessage("*ID=2*already closed*"); + } + + #endregion Open/Close + + #region Loading/Saving + + [Test] + public void Load_WithPath_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + const string path = "test.sunvox"; + + // act + slot.Load(path); + + // assert + mockLib.Received(1).Load(1, path); + } + + [Test] + public void Load_WithData_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + var data = new byte[] { 1, 2, 3, 4 }; + + // act + slot.Load(data); + + // assert + mockLib.Received(1).Load(1, data); + } + + [Test] + public void SaveToFile_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + const string path = "output.sunvox"; + + // act + slot.SaveToFile(path); + + // assert + mockLib.Received(1).SaveToFile(1, path); + } + + #endregion Loading/Saving + + #region Playback + + [Test] + public void StartPlayback_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.StartPlayback(); + + // assert + mockLib.Received(1).StartPlayback(1); + } + + [Test] + public void StartPlaybackFromBeginning_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.StartPlaybackFromBeginning(); + + // assert + mockLib.Received(1).StartPlaybackFromBeginning(1); + } + + [Test] + public void StopPlayback_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.StopPlayback(); + + // assert + mockLib.Received(1).StopPlayback(1); + } + + [Test] + public void ResumeStreamOnSyncEffect_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.ResumeStreamOnSyncEffect(); + + // assert + mockLib.Received(1).ResumeStreamOnSyncEffect(1); + } + + [Test] + public void PauseAudioStream_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.PauseAudioStream(); + + // assert + mockLib.Received(1).PauseAudioStream(1); + } + + [Test] + public void ResumeAudioStream_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.ResumeAudioStream(); + + // assert + mockLib.Received(1).ResumeAudioStream(1); + } + + [Test] + public void SetAutomaticStop_WithTrue_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.SetAutomaticStop(true); + + // assert + mockLib.Received(1).SetAutomaticStop(1, true); + } + + [Test] + public void SetAutomaticStop_WithFalse_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.SetAutomaticStop(false); + + // assert + mockLib.Received(1).SetAutomaticStop(1, false); + } + + [Test] + public void GetAutomaticStop_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetAutomaticStop(1).Returns(true); + + // act + var result = slot.GetAutomaticStop(); + + // assert + result.Should().BeTrue(); + mockLib.Received(1).GetAutomaticStop(1); + } + + [Test] + public void IsPlaying_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.IsPlaying(1).Returns(true); + + // act + var result = slot.IsPlaying(); + + // assert + result.Should().BeTrue(); + mockLib.Received(1).IsPlaying(1); + } + + [Test] + public void Rewind_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.Rewind(128); + + // assert + mockLib.Received(1).Rewind(1, 128); + } + + [Test] + public void GetCurrentLine_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetCurrentLine(1).Returns(42); + + // act + var result = slot.GetCurrentLine(); + + // assert + result.Should().Be(42); + mockLib.Received(1).GetCurrentLine(1); + } + + [Test] + public void GetCurrentLineWithTenthPart_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetCurrentLineWithTenthPart(1).Returns(425); + + // act + var result = slot.GetCurrentLineWithTenthPart(); + + // assert + result.Should().Be(425); + mockLib.Received(1).GetCurrentLineWithTenthPart(1); + } + + [Test] + public void GetCurrentSignalLevel_WithDefaultChannel_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetCurrentSignalLevel(1, AudioChannel.Left).Returns(12345); + + // act + var result = slot.GetCurrentSignalLevel(); + + // assert + result.Should().Be(12345); + mockLib.Received(1).GetCurrentSignalLevel(1, AudioChannel.Left); + } + + [Test] + public void GetCurrentSignalLevel_WithRightChannel_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetCurrentSignalLevel(1, AudioChannel.Right).Returns(54321); + + // act + var result = slot.GetCurrentSignalLevel(AudioChannel.Right); + + // assert + result.Should().Be(54321); + mockLib.Received(1).GetCurrentSignalLevel(1, AudioChannel.Right); + } + + #endregion Playback + + #region Song Properties + + [Test] + public void GetVolume_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.Volume(1, -1).Returns(256); + + // act + var result = slot.GetVolume(); + + // assert + result.Should().Be(256); + mockLib.Received(1).Volume(1, -1); + } + + [Test] + public void SetVolume_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.SetVolume(512); + + // assert + mockLib.Received(1).Volume(1, 512); + } + + [Test] + public void GetSongBpm_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongBpm(1).Returns(125); + + // act + var result = slot.GetSongBpm(); + + // assert + result.Should().Be(125); + mockLib.Received(1).GetSongBpm(1); + } + + [Test] + public void GetSongTpl_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongTpl(1).Returns(6); + + // act + var result = slot.GetSongTpl(); + + // assert + result.Should().Be(6); + mockLib.Received(1).GetSongTpl(1); + } + + [Test] + public void GetSongLengthInLines_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongLengthInLines(1).Returns(1024u); + + // act + var result = slot.GetSongLengthInLines(); + + // assert + result.Should().Be(1024u); + mockLib.Received(1).GetSongLengthInLines(1); + } + + [Test] + public void GetSongLengthInFrames_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongLengthInFrames(1).Returns(98304u); + + // act + var result = slot.GetSongLengthInFrames(); + + // assert + result.Should().Be(98304u); + mockLib.Received(1).GetSongLengthInFrames(1); + } + + [Test] + public void GetSongName_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongName(1).Returns("Test Song"); + + // act + var result = slot.GetSongName(); + + // assert + result.Should().Be("Test Song"); + mockLib.Received(1).GetSongName(1); + } + + [Test] + public void GetSongName_WithNull_ShouldReturnNull() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + mockLib.GetSongName(1).Returns((string?)null); + + // act + var result = slot.GetSongName(); + + // assert + result.Should().BeNull(); + } + + [Test] + public void SetSongName_ShouldCallLibraryMethod() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + + // act + slot.SetSongName("New Song Name"); + + // assert + mockLib.Received(1).SetSongName(1, "New Song Name"); + } + + [Test] + public void GetTimeMapFrames_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + var expectedFrames = new uint[] { 100, 200, 300 }; + mockLib.GetTimeMapFrames(1, 0, 3).Returns(expectedFrames); + + // act + var result = slot.GetTimeMapFrames(0, 3); + + // assert + result.Should().BeEquivalentTo(expectedFrames); + mockLib.Received(1).GetTimeMapFrames(1, 0, 3); + } + + [Test] + public void GetTimeMapSpeed_ShouldReturnLibraryValue() + { + // arrange + var (slot, mockLib, _) = CreateTestSlot(1); + var expectedSpeeds = new Speed[] { new(125, 6), new(125, 6) }; + mockLib.GetTimeMapSpeed(1, 0, 2).Returns(expectedSpeeds); + + // act + var result = slot.GetTimeMapSpeed(0, 2); + + // assert + result.Should().BeEquivalentTo(expectedSpeeds); + mockLib.Received(1).GetTimeMapSpeed(1, 0, 2); + } + + #endregion Song Properties + + #region Exception Classes + + [Test] + public void SlotAlreadyOpenException_DefaultConstructor_ShouldCreate() + { + // act + var exception = new SlotAlreadyOpenException(); + + // assert + exception.Should().NotBeNull(); + exception.Should().BeOfType(); + } + + [Test] + public void SlotAlreadyOpenException_WithIndex_ShouldContainIndex() + { + // act + var exception = new SlotAlreadyOpenException(5); + + // assert + exception.Message.Should().Contain("ID=5"); + exception.Message.Should().Contain("already open"); + } + + [Test] + public void SlotAlreadyOpenException_WithMessage_ShouldContainMessage() + { + // act + var exception = new SlotAlreadyOpenException("Custom message"); + + // assert + exception.Message.Should().Be("Custom message"); + } + + [Test] + public void SlotAlreadyOpenException_WithMessageAndInner_ShouldContainBoth() + { + // arrange + var innerException = new InvalidOperationException("Inner"); + + // act + var exception = new SlotAlreadyOpenException("Outer", innerException); + + // assert + exception.Message.Should().Be("Outer"); + exception.InnerException.Should().Be(innerException); + } + + [Test] + public void SlotAlreadyClosedException_DefaultConstructor_ShouldCreate() + { + // act + var exception = new SlotAlreadyClosedException(); + + // assert + exception.Should().NotBeNull(); + exception.Should().BeOfType(); + } + + [Test] + public void SlotAlreadyClosedException_WithIndex_ShouldContainIndex() + { + // act + var exception = new SlotAlreadyClosedException(3); + + // assert + exception.Message.Should().Contain("ID=3"); + exception.Message.Should().Contain("already closed"); + } + + [Test] + public void SlotAlreadyClosedException_WithMessage_ShouldContainMessage() + { + // act + var exception = new SlotAlreadyClosedException("Custom message"); + + // assert + exception.Message.Should().Be("Custom message"); + } + + [Test] + public void SlotAlreadyClosedException_WithMessageAndInner_ShouldContainBoth() + { + // arrange + var innerException = new InvalidOperationException("Inner"); + + // act + var exception = new SlotAlreadyClosedException("Outer", innerException); + + // assert + exception.Message.Should().Be("Outer"); + exception.InnerException.Should().Be(innerException); + } + + #endregion Exception Classes + + #region Interface Implementation + + [Test] + public void ISlot_Properties_ShouldReturnCorrectValues() + { + // arrange + var (slot, _, _) = CreateTestSlot(7); + ISlot iSlot = slot; + + // act & assert + iSlot.Id.Should().Be(7); + iSlot.IsOpen.Should().BeFalse(); + iSlot.VirtualPattern.Should().Be(slot.VirtualPattern); + ((object)iSlot.Timeline).Should().Be(slot.Timeline); + ((object)iSlot.Synthesizer).Should().Be(slot.Synthesizer); + iSlot.SunVox.Should().Be(slot.SunVox); + } + + #endregion Interface Implementation + +#endif +} diff --git a/SunSharp.Tests/SunVoxTests.cs b/SunSharp.Tests/SunVoxTests.cs new file mode 100644 index 0000000..0e20a0f --- /dev/null +++ b/SunSharp.Tests/SunVoxTests.cs @@ -0,0 +1,491 @@ +using SunSharp.Native; + +namespace SunSharp.Tests; + +public class SunVoxTests +{ +#if !RELEASE + + [Test, AutoData] + public void Constructor_WithOwnAudioStream_ShouldInitializeCorrectly(int sampleRate) + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetSampleRate().Returns(sampleRate); + const int expectedSampleRate = 44100; + mockLib.GetSampleRate().Returns(expectedSampleRate); + + // Act + using var sunvox = new SunVox(mockLib, AudioChannels.Stereo); + + // Assert + sunvox.Channels.Should().Be(AudioChannels.Stereo); + sunvox.SampleRate.Should().Be(expectedSampleRate); + sunvox.SingleThreaded.Should().BeFalse(); + sunvox.OutputType.Should().BeNull(); + sunvox.NeedsUserCallback.Should().BeFalse(); + sunvox.Version.Should().Be(new SunVoxVersion(2, 1, 0, 0)); + sunvox.Slots.Should().NotBeNull(); + mockLib.Received(1).Initialize(-1, Arg.Any(), AudioChannels.Stereo, SunVoxInitOptions.NoDebugOutput); + } + + [Test] + public void Constructor_WithOwnAudioStream_WithBufferSize_ShouldIncludeInConfig() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, bufferSize: 2048); + + // Assert + mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("buffer=2048")), Arg.Any(), Arg.Any()); + } + + [Test] + public void Constructor_WithOwnAudioStream_WithDevices_ShouldIncludeInConfig() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, deviceIn: "input_device", deviceOut: "output_device"); + + // Assert + mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("audiodevice_in=input_device") && s.Contains("audiodevice=output_device")), Arg.Any(), Arg.Any()); + } + + [Test] + public void Constructor_WithOwnAudioStream_WithDriver_ShouldIncludeInConfig() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, driver: "asio"); + + // Assert + mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("audiodriver=asio")), Arg.Any(), Arg.Any()); + } + + [Test, AutoData] + public void Constructor_WithUserCallback_Float32_ShouldInitializeCorrectly(int sampleRate) + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetSampleRate().Returns(sampleRate); + + // Act + using var sunvox = new SunVox(mockLib, sampleRate, OutputType.Float32, AudioChannels.Stereo); + + // Assert + sunvox.Channels.Should().Be(AudioChannels.Stereo); + sunvox.SampleRate.Should().Be(sampleRate); + sunvox.SingleThreaded.Should().BeFalse(); + sunvox.OutputType.Should().Be(OutputType.Float32); + sunvox.NeedsUserCallback.Should().BeTrue(); + mockLib.Received(1).Initialize(sampleRate, Arg.Any(), AudioChannels.Stereo, SunVoxInitOptions.NoDebugOutput | SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioFloat32); + } + + [Test, AutoData] + public void Constructor_WithUserCallback_Int16_ShouldInitializeCorrectly(int sampleRate) + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, sampleRate, OutputType.Int16, AudioChannels.Stereo); + + // Assert + sunvox.OutputType.Should().Be(OutputType.Int16); + sunvox.Channels.Should().Be(AudioChannels.Stereo); + mockLib.Received(1).Initialize(sampleRate, Arg.Any(), AudioChannels.Stereo, SunVoxInitOptions.NoDebugOutput | SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.AudioInt16); + } + + [Test] + public void Constructor_WithUserCallback_ShouldCallInitializeWithCorrectFlags() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32, singleThreaded: true, noDebugOutput: true); + + // Assert + mockLib.Received(1).Initialize(44100, null, AudioChannels.Stereo, SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.NoDebugOutput | SunVoxInitOptions.AudioFloat32 | SunVoxInitOptions.OneThread); + } + + [Test] + public void Constructor_WithUserCallback_InvalidSampleRate_ShouldThrow() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + Action act = () => new SunVox(mockLib, 0, OutputType.Float32); + + // Assert + act.Should().Throw().WithMessage("*Invalid value: 0*").And.ParamName.Should().Be("sampleRate"); + } + + [Test] + public void Constructor_WithUserCallback_NegativeSampleRate_ShouldThrow() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + Action act = () => new SunVox(mockLib, -1, OutputType.Float32); + + // Assert + act.Should().Throw().WithMessage("*Invalid value: -1*").And.ParamName.Should().Be("sampleRate"); + } + + [Test] + public void Properties_ShouldReturnCorrectValues() + { + // Arrange + var mockLib = Substitute.For(); + var expectedVersion = new SunVoxVersion(2, 1, 1, 0); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(expectedVersion); + mockLib.GetSampleRate().Returns(48000); + + // Act + using var sunvox = new SunVox(mockLib, AudioChannels.Stereo); + + // Assert + sunvox.Version.Should().Be(expectedVersion); + sunvox.SampleRate.Should().Be(48000); + sunvox.Channels.Should().Be(AudioChannels.Stereo); + sunvox.Library.Should().Be(mockLib); + } + + [Test] + public void NeedsUserCallback_WithOwnAudioStream_ShouldReturnFalse() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib); + + // Assert + sunvox.NeedsUserCallback.Should().BeFalse(); + } + + [Test] + public void NeedsUserCallback_WithUserCallback_ShouldReturnTrue() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + + // Act + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + + // Assert + sunvox.NeedsUserCallback.Should().BeTrue(); + } + + [Test] + public void UpdateInputDevices_ShouldCallLibraryMethod() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib); + + // Act + sunvox.UpdateInputDevices(); + + // Assert + mockLib.Received(1).UpdateInputDevices(); + } + + [Test] + public void AudioCallback_Float32_WithCorrectOutputType_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + var buffer = new float[256]; + + // Act + var result = sunvox.AudioCallback(buffer, 128, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(buffer, AudioChannels.Stereo, 128, 1000); + } + + [Test] + public void AudioCallback_Float32_WithWrongOutputType_ShouldThrow() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + var buffer = new float[256]; + + // Act + Action act = () => sunvox.AudioCallback(buffer, 128, 1000); + + // Assert + act.Should().Throw().WithMessage("*Int16*Float32*"); + } + + [Test] + public void AudioCallback_Float32_WithoutUserCallback_ShouldThrow() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib); + var buffer = new float[256]; + + // Act + Action act = () => sunvox.AudioCallback(buffer, 128, 1000); + + // Assert + act.Should().Throw().WithMessage("*not initialized in user callback mode*"); + } + + [Test] + public void AudioCallback_Float32WithInput_Float32_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + var outputBuffer = new float[256]; + var inputBuffer = new float[256]; + + // Act + var result = sunvox.AudioCallback(outputBuffer, inputBuffer, AudioChannels.Stereo, 128, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, 128, 1000); + } + + [Test] + public void AudioCallback_Float32WithInput_Int16_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + var outputBuffer = new float[256]; + var inputBuffer = new short[256]; + + // Act + var result = sunvox.AudioCallback(outputBuffer, inputBuffer, AudioChannels.Stereo, 128, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, 128, 1000); + } + + [Test] + public void AudioCallback_Int16_WithCorrectOutputType_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + var buffer = new short[256]; + + // Act + var result = sunvox.AudioCallback(buffer, 128, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(buffer, AudioChannels.Stereo, 128, 1000); + } + + [Test] + public void AudioCallback_Int16_WithWrongOutputType_ShouldThrow() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + var buffer = new short[256]; + + // Act + Action act = () => sunvox.AudioCallback(buffer, 128, 1000); + + // Assert + act.Should().Throw().WithMessage("*Float32*Int16*"); + } + + [Test] + public void AudioCallback_Int16WithInput_Float32_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + var outputBuffer = new short[256]; + var inputBuffer = new float[256]; + + // Act + var result = sunvox.AudioCallback(outputBuffer, inputBuffer, AudioChannels.Stereo, 128, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, 128, 1000); + } + + [Test] + public void AudioCallback_Int16WithInput_Int16_ShouldCallLibrary() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); + using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + var outputBuffer = new short[256]; + var inputBuffer = new short[256]; + + // Act + var result = sunvox.AudioCallback(outputBuffer, inputBuffer, AudioChannels.Stereo, 25, 1000); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).AudioCallback(outputBuffer, AudioChannels.Stereo, inputBuffer, AudioChannels.Stereo, 25, 1000); + } + + [Test] + public void GetTicks_ShouldCallLibraryMethod() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetTicks().Returns(12345u); + using var sunvox = new SunVox(mockLib); + + // Act + var result = sunvox.GetTicks(); + + // Assert + result.Should().Be(12345u); + mockLib.Received(1).GetTicks(); + } + + [Test] + public void GetTicksPerSecond_ShouldCallLibraryMethod() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetTicksPerSecond().Returns(1000u); + using var sunvox = new SunVox(mockLib); + + // Act + var result = sunvox.GetTicksPerSecond(); + + // Assert + result.Should().Be(1000u); + mockLib.Received(1).GetTicksPerSecond(); + } + + [Test] + public void GetLog_ShouldCallLibraryMethod() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetLog(100).Returns("Test log message"); + using var sunvox = new SunVox(mockLib); + + // Act + var result = sunvox.GetLog(100); + + // Assert + result.Should().Be("Test log message"); + mockLib.Received(1).GetLog(100); + } + + [Test] + public void GetLog_WithNull_ShouldReturnNull() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + mockLib.GetLog(Arg.Any()).Returns((string?)null); + using var sunvox = new SunVox(mockLib); + + // Act + var result = sunvox.GetLog(100); + + // Assert + result.Should().BeNull(); + } + + [Test] + public void Dispose_ShouldCallDeinitialize() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib); + + // Act + sunvox.Dispose(); + + // Assert + mockLib.Received(1).Deinitialize(); + } + + [Test] + public void Dispose_CalledMultipleTimes_ShouldOnlyDeinitializeOnce() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib); + + // Act + sunvox.Dispose(); + sunvox.Dispose(); + sunvox.Dispose(); + + // Assert + mockLib.Received(1).Deinitialize(); + } + + [Test] + public void Deinitialized_AfterDispose_ShouldBeTrue() + { + // Arrange + var mockLib = Substitute.For(); + mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); + using var sunvox = new SunVox(mockLib); + + // Act + sunvox.Deinitialized.Should().BeFalse(); + sunvox.Dispose(); + + // Assert + sunvox.Deinitialized.Should().BeTrue(); + } + +#endif +} diff --git a/SunSharp.Tests/SynthesizerTests.cs b/SunSharp.Tests/SynthesizerTests.cs new file mode 100644 index 0000000..75eb728 --- /dev/null +++ b/SunSharp.Tests/SynthesizerTests.cs @@ -0,0 +1,622 @@ +namespace SunSharp.Tests; + +public class SynthesizerTests +{ +#if !RELEASE +#if !GENERATION + + private static (Synthesizer synthesizer, ISunVoxLib mockLib, Slot slot) CreateTestSynthesizer(int slotId = 0) + { + var mockLib = Substitute.For(); + var mockSunVox = Substitute.For(); + mockSunVox.Library.Returns(mockLib); + var slotManagementLock = new object(); + var slot = new Slot(slotId, slotManagementLock, mockSunVox); + var synthesizer = slot.Synthesizer; + return (synthesizer, mockLib, slot); + } + + #region Constructor + + [Test] + public void Constructor_ShouldInitializeCorrectly() + { + // Arrange & Act + var (synthesizer, _, slot) = CreateTestSynthesizer(3); + + // Assert + synthesizer.Should().NotBeNull(); + synthesizer.Slot.Should().Be(slot); + } + + #endregion Constructor + + #region GetUpperModuleCount + + [Test] + public void GetUpperModuleCount_ShouldReturnLibraryValue() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetUpperModuleCount(1).Returns(10); + + // Act + var result = synthesizer.GetUpperModuleCount(); + + // Assert + result.Should().Be(10); + mockLib.Received(1).GetUpperModuleCount(1); + } + + #endregion GetUpperModuleCount + + #region GetModuleExists + + [Test] + public void GetModuleExists_WithExistingModule_ShouldReturnTrue() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetModuleExists(1, 5).Returns(true); + + // Act + var result = synthesizer.GetModuleExists(5); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).GetModuleExists(1, 5); + } + + [Test] + public void GetModuleExists_WithNonExistingModule_ShouldReturnFalse() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetModuleExists(1, 99).Returns(false); + + // Act + var result = synthesizer.GetModuleExists(99); + + // Assert + result.Should().BeFalse(); + mockLib.Received(1).GetModuleExists(1, 99); + } + + #endregion GetModuleExists + + #region GetModuleFlags + + [Test] + public void GetModuleFlags_ShouldReturnLibraryValue() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + var expectedFlags = new ModuleFlags((int)ModuleFlags.SV_MODULE_FLAG_GENERATOR | (int)ModuleFlags.SV_MODULE_FLAG_BYPASS); + mockLib.GetModuleFlags(1, 3).Returns(expectedFlags); + + // Act + var result = synthesizer.GetModuleFlags(3); + + // Assert + result.Should().Be(expectedFlags); + mockLib.Received(1).GetModuleFlags(1, 3); + } + + #endregion GetModuleFlags + + #region GetModule + + [Test] + public void GetModule_ShouldReturnModuleHandle() + { + // Arrange + var (synthesizer, _, slot) = CreateTestSynthesizer(1); + + // Act + var result = synthesizer.GetModule(7); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(7); + result.Slot.Should().Be(slot); + } + + [Test] + public void GetModule_AsInterface_ShouldReturnModuleHandle() + { + // Arrange + var (synthesizer, _, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + + // Act + var result = iSynthesizer.GetModule(7); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(7); + } + + #endregion GetModule + + #region TryGetModule + + [Test] + public void TryGetModule_WithExistingModuleById_ShouldReturnTrueAndHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetModuleExists(1, 5).Returns(true); + + // Act + var result = synthesizer.TryGetModule(5, out var moduleHandle); + + // Assert + result.Should().BeTrue(); + moduleHandle.Should().NotBeNull(); + moduleHandle!.Value.Id.Should().Be(5); + mockLib.Received(1).GetModuleExists(1, 5); + } + + [Test] + public void TryGetModule_WithNonExistingModuleById_ShouldReturnFalse() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetModuleExists(1, 99).Returns(false); + + // Act + var result = synthesizer.TryGetModule(99, out var moduleHandle); + + // Assert + result.Should().BeFalse(); + moduleHandle.Should().BeNull(); + } + + [Test] + public void TryGetModule_WithExistingModuleByName_ShouldReturnTrueAndHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.FindModule(1, "TestModule").Returns(42); + + // Act + var result = synthesizer.TryGetModule("TestModule", out var moduleHandle); + + // Assert + result.Should().BeTrue(); + moduleHandle.Should().NotBeNull(); + moduleHandle!.Value.Id.Should().Be(42); + mockLib.Received(1).FindModule(1, "TestModule"); + } + + [Test] + public void TryGetModule_WithNonExistingModuleByName_ShouldReturnFalse() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.FindModule(1, "NonExistent").Returns((int?)null); + + // Act + var result = synthesizer.TryGetModule("NonExistent", out var moduleHandle); + + // Assert + result.Should().BeFalse(); + moduleHandle.Should().BeNull(); + } + + [Test] + public void TryGetModule_AsInterface_WithExistingModuleById_ShouldReturnTrueAndHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + mockLib.GetModuleExists(1, 5).Returns(true); + + // Act + var result = iSynthesizer.TryGetModule(5, out var moduleHandle); + + // Assert + result.Should().BeTrue(); + moduleHandle.Should().NotBeNull(); + moduleHandle!.Id.Should().Be(5); + } + + [Test] + public void TryGetModule_AsInterface_WithExistingModuleByName_ShouldReturnTrueAndHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + mockLib.FindModule(1, "TestModule").Returns(42); + + // Act + var result = iSynthesizer.TryGetModule("TestModule", out var moduleHandle); + + // Assert + result.Should().BeTrue(); + moduleHandle.Should().NotBeNull(); + moduleHandle!.Id.Should().Be(42); + } + + #endregion TryGetModule + + #region CreateModule + + [Test] + public void CreateModule_ShouldCallLibraryAndReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.CreateModule(1, SynthModuleType.AnalogGenerator, "TestGen", 10, 20, 30).Returns(15); + + // Act + var result = synthesizer.CreateModule(SynthModuleType.AnalogGenerator, "TestGen", 10, 20, 30); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(15); + mockLib.Received(1).LockSlot(1); + mockLib.Received(1).CreateModule(1, SynthModuleType.AnalogGenerator, "TestGen", 10, 20, 30); + mockLib.Received(1).UnlockSlot(1); + } + + [Test] + public void CreateModule_WithDefaults_ShouldCallLibraryWithDefaultCoordinates() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.CreateModule(1, SynthModuleType.Amplifier, "TestAmp", 0, 0, 0).Returns(20); + + // Act + var result = synthesizer.CreateModule(SynthModuleType.Amplifier, "TestAmp"); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(20); + mockLib.Received(1).CreateModule(1, SynthModuleType.Amplifier, "TestAmp", 0, 0, 0); + } + + [Test] + public void CreateModule_AsInterface_ShouldReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + mockLib.CreateModule(1, SynthModuleType.Filter, "TestFilter", 5, 10, 15).Returns(25); + + // Act + var result = iSynthesizer.CreateModule(SynthModuleType.Filter, "TestFilter", 5, 10, 15); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(25); + } + + #endregion CreateModule + + #region LoadModule + + [Test] + public void LoadModule_WithByteArray_ShouldCallLibraryAndReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + var data = new byte[] { 1, 2, 3, 4 }; + mockLib.LoadModule(1, data, 10, 20, 30).Returns(50); + + // Act + var result = synthesizer.LoadModule(data, 10, 20, 30); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(50); + mockLib.Received(1).LoadModule(1, data, 10, 20, 30); + } + + [Test] + public void LoadModule_WithByteArrayDefaults_ShouldCallLibraryWithDefaultCoordinates() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + var data = new byte[] { 5, 6, 7, 8 }; + mockLib.LoadModule(1, data, 0, 0, 0).Returns(51); + + // Act + var result = synthesizer.LoadModule(data); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(51); + mockLib.Received(1).LoadModule(1, data, 0, 0, 0); + } + + [Test] + public void LoadModule_WithPath_ShouldCallLibraryAndReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + const string path = "module.sunsynth"; + mockLib.LoadModule(1, path, 10, 20, 30).Returns(52); + + // Act + var result = synthesizer.LoadModule(path, 10, 20, 30); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(52); + mockLib.Received(1).LoadModule(1, path, 10, 20, 30); + } + + [Test] + public void LoadModule_WithPathDefaults_ShouldCallLibraryWithDefaultCoordinates() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + const string path = "module2.sunsynth"; + mockLib.LoadModule(1, path, 0, 0, 0).Returns(53); + + // Act + var result = synthesizer.LoadModule(path); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(53); + mockLib.Received(1).LoadModule(1, path, 0, 0, 0); + } + + [Test] + public void LoadModule_AsInterface_WithByteArray_ShouldReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + var data = new byte[] { 9, 10, 11, 12 }; + mockLib.LoadModule(1, data, 5, 10, 15).Returns(54); + + // Act + var result = iSynthesizer.LoadModule(data, 5, 10, 15); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(54); + } + + [Test] + public void LoadModule_AsInterface_WithPath_ShouldReturnHandle() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + const string path = "module3.sunsynth"; + mockLib.LoadModule(1, path, 5, 10, 15).Returns(55); + + // Act + var result = iSynthesizer.LoadModule(path, 5, 10, 15); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(55); + } + + #endregion LoadModule + + #region RemoveModule + + [Test] + public void RemoveModule_ById_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + + // Act + synthesizer.RemoveModule(10); + + // Assert + mockLib.Received(1).RemoveModule(1, 10); + } + + [Test] + public void RemoveModule_ByHandle_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + var moduleHandle = new SynthModuleHandle(slot, 15); + + // Act + synthesizer.RemoveModule(moduleHandle); + + // Assert + mockLib.Received(1).RemoveModule(1, 15); + } + + [Test] + public void RemoveModule_AsInterface_ByHandle_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + ISynthModuleHandle moduleHandle = new SynthModuleHandle(slot, 20); + + // Act + iSynthesizer.RemoveModule(moduleHandle); + + // Assert + mockLib.Received(1).RemoveModule(1, 20); + } + + #endregion RemoveModule + + #region ConnectModule + + [Test] + public void ConnectModule_ByIds_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + + // Act + synthesizer.ConnectModule(5, 10); + + // Assert + mockLib.Received(1).ConnectModules(1, 5, 10); + } + + [Test] + public void ConnectModule_ByHandles_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + var source = new SynthModuleHandle(slot, 3); + var destination = new SynthModuleHandle(slot, 7); + + // Act + synthesizer.ConnectModule(source, destination); + + // Assert + mockLib.Received(1).ConnectModules(1, 3, 7); + } + + [Test] + public void ConnectModule_AsInterface_ByHandles_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + ISynthModuleHandle source = new SynthModuleHandle(slot, 8); + ISynthModuleHandle destination = new SynthModuleHandle(slot, 12); + + // Act + iSynthesizer.ConnectModule(source, destination); + + // Assert + mockLib.Received(1).ConnectModules(1, 8, 12); + } + + #endregion ConnectModule + + #region DisconnectModule + + [Test] + public void DisconnectModule_ByIds_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + + // Act + synthesizer.DisconnectModule(5, 10); + + // Assert + mockLib.Received(1).DisconnectModules(1, 5, 10); + } + + [Test] + public void DisconnectModule_ByHandles_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + var source = new SynthModuleHandle(slot, 3); + var destination = new SynthModuleHandle(slot, 7); + + // Act + synthesizer.DisconnectModule(source, destination); + + // Assert + mockLib.Received(1).DisconnectModules(1, 3, 7); + } + + [Test] + public void DisconnectModule_AsInterface_ByHandles_ShouldCallLibrary() + { + // Arrange + var (synthesizer, mockLib, slot) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + ISynthModuleHandle source = new SynthModuleHandle(slot, 8); + ISynthModuleHandle destination = new SynthModuleHandle(slot, 12); + + // Act + iSynthesizer.DisconnectModule(source, destination); + + // Assert + mockLib.Received(1).DisconnectModules(1, 8, 12); + } + + #endregion DisconnectModule + + #region Enumeration + + [Test] + public void GetEnumerator_WithModules_ShouldEnumerateExistingModules() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetUpperModuleCount(1).Returns(5); + mockLib.GetModuleExists(1, 0).Returns(true); + mockLib.GetModuleExists(1, 1).Returns(false); + mockLib.GetModuleExists(1, 2).Returns(true); + mockLib.GetModuleExists(1, 3).Returns(false); + mockLib.GetModuleExists(1, 4).Returns(true); + + // Act + var modules = synthesizer.ToList(); + + // Assert + modules.Should().HaveCount(3); + modules[0].Id.Should().Be(0); + modules[1].Id.Should().Be(2); + modules[2].Id.Should().Be(4); + } + + [Test] + public void GetEnumerator_WithNoModules_ShouldReturnEmpty() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + mockLib.GetUpperModuleCount(1).Returns(0); + + // Act + var modules = synthesizer.ToList(); + + // Assert + modules.Should().BeEmpty(); + } + + [Test] + public void GetEnumerator_AsInterface_ShouldEnumerateExistingModules() + { + // Arrange + var (synthesizer, mockLib, _) = CreateTestSynthesizer(1); + ISynthesizer iSynthesizer = synthesizer; + mockLib.GetUpperModuleCount(1).Returns(3); + mockLib.GetModuleExists(1, 0).Returns(true); + mockLib.GetModuleExists(1, 1).Returns(true); + mockLib.GetModuleExists(1, 2).Returns(false); + + // Act + var modules = iSynthesizer.ToList(); + + // Assert + modules.Should().HaveCount(2); + modules[0].Id.Should().Be(0); + modules[1].Id.Should().Be(1); + } + + #endregion Enumeration + + #region Interface Implementation + + [Test] + public void ISynthesizer_Slot_ShouldReturnSlot() + { + // Arrange + var (synthesizer, _, slot) = CreateTestSynthesizer(5); + ISynthesizer iSynthesizer = synthesizer; + + // Act & Assert + iSynthesizer.Slot.Should().Be(slot); + iSynthesizer.Slot.Id.Should().Be(5); + } + + #endregion Interface Implementation +#endif +#endif +} diff --git a/SunSharp.Tests/TimelineTests.cs b/SunSharp.Tests/TimelineTests.cs new file mode 100644 index 0000000..442cd74 --- /dev/null +++ b/SunSharp.Tests/TimelineTests.cs @@ -0,0 +1,406 @@ +using System.Linq; +using SunSharp.Native; + +namespace SunSharp.Tests; + +public class TimelineTests +{ +#if !RELEASE + + private static (Timeline timeline, ISunVoxLib mockLib, Slot slot) CreateTestTimeline(int slotId = 0) + { + var mockLib = Substitute.For(); + var mockSunVox = Substitute.For(); + mockSunVox.Library.Returns(mockLib); + var slotManagementLock = new object(); + var slot = new Slot(slotId, slotManagementLock, mockSunVox); + var timeline = slot.Timeline; + return (timeline, mockLib, slot); + } + + #region Constructor + + [Test] + public void Constructor_ShouldInitializeCorrectly() + { + // Arrange & Act + var (timeline, _, slot) = CreateTestTimeline(3); + + // Assert + timeline.Should().NotBeNull(); + timeline.Slot.Should().Be(slot); + } + + #endregion Constructor + + #region GetUpperPatternCount + + [Test] + public void GetUpperPatternCount_ShouldReturnLibraryValue() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetUpperPatternCount(1).Returns(8); + + // Act + var result = timeline.GetUpperPatternCount(); + + // Assert + result.Should().Be(8); + mockLib.Received(1).GetUpperPatternCount(1); + } + + #endregion GetUpperPatternCount + + #region GetPatternExists + + [Test] + public void GetPatternExists_WithExistingPattern_ShouldReturnTrue() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetPatternExists(1, 3).Returns(true); + + // Act + var result = timeline.GetPatternExists(3); + + // Assert + result.Should().BeTrue(); + mockLib.Received(1).GetPatternExists(1, 3); + } + + [Test] + public void GetPatternExists_WithNonExistingPattern_ShouldReturnFalse() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetPatternExists(1, 99).Returns(false); + + // Act + var result = timeline.GetPatternExists(99); + + // Assert + result.Should().BeFalse(); + mockLib.Received(1).GetPatternExists(1, 99); + } + + #endregion GetPatternExists + + #region GetPattern + + [Test] + public void GetPattern_ShouldReturnPatternHandle() + { + // Arrange + var (timeline, _, _) = CreateTestTimeline(1); + + // Act + var result = timeline.GetPattern(5); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(5); + } + + [Test] + public void GetPattern_AsInterface_ShouldReturnPatternHandle() + { + // Arrange + var (timeline, _, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + + // Act + var result = iTimeline.GetPattern(5); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(5); + } + + #endregion GetPattern + + #region TryGetPattern + + [Test] + public void TryGetPattern_WithExistingPatternById_ShouldReturnTrueAndHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetPatternExists(1, 7).Returns(true); + + // Act + var result = timeline.TryGetPattern(7, out var patternHandle); + + // Assert + result.Should().BeTrue(); + patternHandle.Should().NotBeNull(); + patternHandle!.Value.Id.Should().Be(7); + mockLib.Received(1).GetPatternExists(1, 7); + } + + [Test] + public void TryGetPattern_WithNonExistingPatternById_ShouldReturnFalse() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetPatternExists(1, 99).Returns(false); + + // Act + var result = timeline.TryGetPattern(99, out var patternHandle); + + // Assert + result.Should().BeFalse(); + patternHandle.Should().BeNull(); + } + + [Test] + public void TryGetPattern_WithExistingPatternByName_ShouldReturnTrueAndHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.FindPattern(1, "TestPattern").Returns(42); + + // Act + var result = timeline.TryGetPattern("TestPattern", out var patternHandle); + + // Assert + result.Should().BeTrue(); + patternHandle.Should().NotBeNull(); + patternHandle!.Value.Id.Should().Be(42); + mockLib.Received(1).FindPattern(1, "TestPattern"); + } + + [Test] + public void TryGetPattern_WithNonExistingPatternByName_ShouldReturnFalse() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.FindPattern(1, "NonExistent").Returns((int?)null); + + // Act + var result = timeline.TryGetPattern("NonExistent", out var patternHandle); + + // Assert + result.Should().BeFalse(); + patternHandle.Should().BeNull(); + } + + [Test] + public void TryGetPattern_AsInterface_WithExistingPatternById_ShouldReturnTrueAndHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + mockLib.GetPatternExists(1, 7).Returns(true); + + // Act + var result = iTimeline.TryGetPattern(7, out var patternHandle); + + // Assert + result.Should().BeTrue(); + patternHandle.Should().NotBeNull(); + patternHandle!.Id.Should().Be(7); + } + + [Test] + public void TryGetPattern_AsInterface_WithExistingPatternByName_ShouldReturnTrueAndHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + mockLib.FindPattern(1, "TestPattern").Returns(42); + + // Act + var result = iTimeline.TryGetPattern("TestPattern", out var patternHandle); + + // Assert + result.Should().BeTrue(); + patternHandle.Should().NotBeNull(); + patternHandle!.Id.Should().Be(42); + } + + #endregion TryGetPattern + + #region CreatePattern + + [Test] + public void CreatePattern_ShouldCallLibraryAndReturnHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.CreatePattern(1, 10, 20, 8, 64, 123, "NewPattern").Returns(15); + + // Act + var result = timeline.CreatePattern(64, 8, 10, 20, 123, "NewPattern"); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(15); + mockLib.Received(1).CreatePattern(1, 10, 20, 8, 64, 123, "NewPattern"); + } + + [Test] + public void CreatePattern_WithDefaults_ShouldCallLibraryWithDefaults() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.CreatePattern(1, 5, 10, 4, 32, 0, null).Returns(20); + + // Act + var result = timeline.CreatePattern(32, 4, 5, 10); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(20); + mockLib.Received(1).CreatePattern(1, 5, 10, 4, 32, 0, null); + } + + [Test] + public void CreatePattern_AsInterface_ShouldReturnHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + mockLib.CreatePattern(1, 15, 25, 16, 128, 456, "InterfacePattern").Returns(25); + + // Act + var result = iTimeline.CreatePattern(128, 16, 15, 25, 456, "InterfacePattern"); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(25); + } + + #endregion CreatePattern + + #region ClonePattern + + [Test] + public void ClonePattern_ById_ShouldCallLibraryAndReturnId() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.ClonePattern(1, 5, 100, 200).Returns(30); + + // Act + var result = timeline.ClonePattern(5, 100, 200); + + // Assert + result.Should().Be(30); + mockLib.Received(1).ClonePattern(1, 5, 100, 200); + } + + [Test] + public void ClonePattern_ByHandle_ShouldCallLibraryAndReturnHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + var original = timeline.GetPattern(7); + mockLib.ClonePattern(1, 7, 150, 250).Returns(35); + + // Act + var result = timeline.ClonePattern(original, 150, 250); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(35); + mockLib.Received(1).ClonePattern(1, 7, 150, 250); + } + + [Test] + public void ClonePattern_AsInterface_ByHandle_ShouldReturnHandle() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + IPatternHandle original = timeline.GetPattern(9); + mockLib.ClonePattern(1, 9, 175, 275).Returns(40); + + // Act + var result = iTimeline.ClonePattern(original, 175, 275); + + // Assert + result.Should().NotBeNull(); + result.Id.Should().Be(40); + } + + #endregion ClonePattern + + #region Enumeration + + [Test] + public void GetEnumerator_WithPatterns_ShouldEnumerateExistingPatterns() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetUpperPatternCount(1).Returns(5); + mockLib.GetPatternExists(1, 0).Returns(true); + mockLib.GetPatternExists(1, 1).Returns(false); + mockLib.GetPatternExists(1, 2).Returns(true); + mockLib.GetPatternExists(1, 3).Returns(false); + mockLib.GetPatternExists(1, 4).Returns(true); + + // Act + var patterns = timeline.ToList(); + + // Assert + patterns.Should().HaveCount(3); + patterns[0].Id.Should().Be(0); + patterns[1].Id.Should().Be(2); + patterns[2].Id.Should().Be(4); + } + + [Test] + public void GetEnumerator_WithNoPatterns_ShouldReturnEmpty() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + mockLib.GetUpperPatternCount(1).Returns(0); + + // Act + var patterns = timeline.ToList(); + + // Assert + patterns.Should().BeEmpty(); + } + + [Test] + public void GetEnumerator_AsInterface_ShouldEnumerateExistingPatterns() + { + // Arrange + var (timeline, mockLib, _) = CreateTestTimeline(1); + ITimeline iTimeline = timeline; + mockLib.GetUpperPatternCount(1).Returns(3); + mockLib.GetPatternExists(1, 0).Returns(true); + mockLib.GetPatternExists(1, 1).Returns(true); + mockLib.GetPatternExists(1, 2).Returns(false); + + // Act + var patterns = iTimeline.ToList(); + + // Assert + patterns.Should().HaveCount(2); + patterns[0].Id.Should().Be(0); + patterns[1].Id.Should().Be(1); + } + + #endregion Enumeration + + #region Interface Implementation + + [Test] + public void ITimeline_Slot_ShouldReturnSlot() + { + // Arrange + var (timeline, _, slot) = CreateTestTimeline(5); + ITimeline iTimeline = timeline; + + // Act & Assert + iTimeline.Slot.Should().Be(slot); + iTimeline.Slot.Id.Should().Be(5); + } + + #endregion Interface Implementation + +#endif +} diff --git a/SunSharp/Diagnostics/Logger.cs b/SunSharp/Diagnostics/Logger.cs index 47a2b84..77233a2 100644 --- a/SunSharp/Diagnostics/Logger.cs +++ b/SunSharp/Diagnostics/Logger.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; namespace SunSharp.Diagnostics { @@ -12,6 +13,7 @@ public interface ILogger } /// + [ExcludeFromCodeCoverage] public class ConsoleLogger : ILogger { public void Log(string message, string methodName, string? parameters, string? result) diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.cs b/SunSharp/Diagnostics/SunVoxLibWithLogger.cs index acd7914..1917137 100644 --- a/SunSharp/Diagnostics/SunVoxLibWithLogger.cs +++ b/SunSharp/Diagnostics/SunVoxLibWithLogger.cs @@ -3,6 +3,7 @@ */ using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.CompilerServices; using SunSharp.Native; @@ -18,6 +19,7 @@ namespace SunSharp.Diagnostics /// issues through logging. All SunVox interactions performed via this wrapper will be logged /// using the provided logger instance. /// + [ExcludeFromCodeCoverage] // bulk of it is generated code public sealed partial class SunVoxLibWithLogger { private readonly ISunVoxLibC _lib; diff --git a/SunSharp/Enums.cs b/SunSharp/Enums.cs index 29a1bee..d36ccf7 100644 --- a/SunSharp/Enums.cs +++ b/SunSharp/Enums.cs @@ -10,9 +10,14 @@ public enum AudioChannel Right = 1 } + /// + /// Number of audio channels at initialization. + /// 'Mono' is not currently supported by SunVox. + /// public enum AudioChannels { - Mono = 1, + // currently not supported + // Mono = 1, Stereo = 2 } diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/SunSharp/Native/Loader/NativeProxy.cs index 594b3ba..a7ad38a 100644 --- a/SunSharp/Native/Loader/NativeProxy.cs +++ b/SunSharp/Native/Loader/NativeProxy.cs @@ -1,4 +1,5 @@ using System; +using System.Runtime.CompilerServices; namespace SunSharp.Native.Loader { @@ -143,6 +144,8 @@ public void Unload() bool isLibraryLoaded = _handler.IsLibraryLoaded; if (deinitDelegate != null && isLibraryLoaded) { + // value may be 0 if successful or -1 if already deinitialized + // ignoring return value as there is nothing we can do about it here deinitDelegate.Invoke(); } @@ -153,7 +156,7 @@ public void Unload() } } - internal Exception GetNoDelegateException() + internal Exception GetNoDelegateException([CallerMemberName] string name = "") { string message; try @@ -164,10 +167,10 @@ internal Exception GetNoDelegateException() var isProxyLoaded = IsProxyLoaded; message = (isLibraryLoaded, isProxyLoaded) switch { - (true, true) => "Missing delegate. Library is loaded, proxy is loaded.", - (true, false) => "Missing delegate. Library is loaded, proxy is not loaded.", - (false, true) => "Missing delegate. Library is not loaded, proxy is loaded.", - (false, false) => "Missing delegate. Library is not loaded, proxy is not loaded." + (true, true) => $"Missing delegate for function '{name}'. Library is loaded, proxy is loaded.", + (true, false) => $"Missing delegate for function '{name}'. Library is loaded, proxy is not loaded.", + (false, true) => $"Missing delegate for function '{name}'. Library is not loaded, proxy is loaded.", + (false, false) => $"Missing delegate for function '{name}'. Library is not loaded, proxy is not loaded." }; } } @@ -178,5 +181,11 @@ internal Exception GetNoDelegateException() return new InvalidOperationException(message); } + + private T GetDelegateOrThrow(string name) + where T : Delegate + { + return (T)_handler.GetFunctionByName(name, typeof(T)) ?? throw new InvalidOperationException($"Failed to load function '{name}'."); + } } } diff --git a/SunSharp/Native/Loader/NativeProxy.g.cs b/SunSharp/Native/Loader/NativeProxy.g.cs index 799546f..6e6fed2 100644 --- a/SunSharp/Native/Loader/NativeProxy.g.cs +++ b/SunSharp/Native/Loader/NativeProxy.g.cs @@ -470,102 +470,102 @@ public sealed partial class NativeProxy : ISunVoxLibC private void FetchAndAssignDelegates() { - sv_audio_callback = (ReturnsintTakesIntPtrIntIntUint)(_handler.GetFunctionByName("sv_audio_callback", typeof(ReturnsintTakesIntPtrIntIntUint)) ?? throw new InvalidOperationException("Failed to load function sv_audio_callback")); - sv_audio_callback2 = (ReturnsintTakesIntPtrIntIntUintIntIntIntPtr)(_handler.GetFunctionByName("sv_audio_callback2", typeof(ReturnsintTakesIntPtrIntIntUintIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_audio_callback2")); - sv_close_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_close_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_close_slot")); - sv_connect_module = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_connect_module", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_connect_module")); - sv_deinit = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_deinit", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_deinit")); - sv_disconnect_module = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_disconnect_module", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_disconnect_module")); - sv_end_of_song = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_end_of_song", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_end_of_song")); - sv_find_module = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_find_module", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_find_module")); - sv_find_pattern = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_find_pattern", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_find_pattern")); - sv_get_autostop = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_autostop", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_autostop")); - sv_get_base_version = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_base_version", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_base_version")); - sv_get_current_line = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_current_line", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_line")); - sv_get_current_line2 = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_current_line2", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_line2")); - sv_get_current_signal_level = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_current_signal_level", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_current_signal_level")); - sv_get_log = (ReturnsIntPtrTakesInt)(_handler.GetFunctionByName("sv_get_log", typeof(ReturnsIntPtrTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_log")); - sv_get_module_color = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_color", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_color")); - sv_get_module_ctl_group = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_group", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_group")); - sv_get_module_ctl_max = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_max", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_max")); - sv_get_module_ctl_min = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_min", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_min")); - sv_get_module_ctl_name = (ReturnsIntPtrTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_name", typeof(ReturnsIntPtrTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_name")); - sv_get_module_ctl_offset = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_offset", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_offset")); - sv_get_module_ctl_type = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_type", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_type")); - sv_get_module_ctl_value = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_get_module_ctl_value", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_ctl_value")); - sv_get_module_finetune = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_finetune", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_finetune")); - sv_get_module_flags = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_flags", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_flags")); - sv_get_module_inputs = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_inputs", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_inputs")); - sv_get_module_name = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_name", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_name")); - sv_get_module_outputs = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_outputs", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_outputs")); - sv_get_module_scope2 = (ReturnsuintTakesIntIntIntIntPtrUint)(_handler.GetFunctionByName("sv_get_module_scope2", typeof(ReturnsuintTakesIntIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_scope2")); - sv_get_module_type = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_module_type", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_type")); - sv_get_module_xy = (ReturnsuintTakesIntInt)(_handler.GetFunctionByName("sv_get_module_xy", typeof(ReturnsuintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_module_xy")); - sv_get_number_of_module_ctls = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_number_of_module_ctls", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_module_ctls")); - sv_get_number_of_modules = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_number_of_modules", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_modules")); - sv_get_number_of_patterns = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_number_of_patterns", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_number_of_patterns")); - sv_get_pattern_data = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_data", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_data")); - sv_get_pattern_event = (ReturnsintTakesIntIntIntIntInt)(_handler.GetFunctionByName("sv_get_pattern_event", typeof(ReturnsintTakesIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_event")); - sv_get_pattern_lines = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_lines", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_lines")); - sv_get_pattern_name = (ReturnsIntPtrTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_name", typeof(ReturnsIntPtrTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_name")); - sv_get_pattern_tracks = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_tracks", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_tracks")); - sv_get_pattern_x = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_x", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_x")); - sv_get_pattern_y = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_get_pattern_y", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_pattern_y")); - sv_get_sample_rate = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_get_sample_rate", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_sample_rate")); - sv_get_song_bpm = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_song_bpm", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_bpm")); - sv_get_song_length_frames = (ReturnsuintTakesInt)(_handler.GetFunctionByName("sv_get_song_length_frames", typeof(ReturnsuintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_length_frames")); - sv_get_song_length_lines = (ReturnsuintTakesInt)(_handler.GetFunctionByName("sv_get_song_length_lines", typeof(ReturnsuintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_length_lines")); - sv_get_song_name = (ReturnsIntPtrTakesInt)(_handler.GetFunctionByName("sv_get_song_name", typeof(ReturnsIntPtrTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_name")); - sv_get_song_tpl = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_get_song_tpl", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_song_tpl")); - sv_get_ticks = (ReturnsuintTakesVoid)(_handler.GetFunctionByName("sv_get_ticks", typeof(ReturnsuintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_ticks")); - sv_get_ticks_per_second = (ReturnsuintTakesVoid)(_handler.GetFunctionByName("sv_get_ticks_per_second", typeof(ReturnsuintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_get_ticks_per_second")); - sv_get_time_map = (ReturnsintTakesIntIntIntIntPtrInt)(_handler.GetFunctionByName("sv_get_time_map", typeof(ReturnsintTakesIntIntIntIntPtrInt)) ?? throw new InvalidOperationException("Failed to load function sv_get_time_map")); - sv_init = (ReturnsintTakesIntPtrIntIntUint)(_handler.GetFunctionByName("sv_init", typeof(ReturnsintTakesIntPtrIntIntUint)) ?? throw new InvalidOperationException("Failed to load function sv_init")); - sv_load = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_load", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_load")); - sv_load_from_memory = (ReturnsintTakesIntIntPtrUint)(_handler.GetFunctionByName("sv_load_from_memory", typeof(ReturnsintTakesIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_load_from_memory")); - sv_load_module = (ReturnsintTakesIntIntPtrIntIntInt)(_handler.GetFunctionByName("sv_load_module", typeof(ReturnsintTakesIntIntPtrIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_load_module")); - sv_load_module_from_memory = (ReturnsintTakesIntIntPtrUintIntIntInt)(_handler.GetFunctionByName("sv_load_module_from_memory", typeof(ReturnsintTakesIntIntPtrUintIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_load_module_from_memory")); - sv_lock_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_lock_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_lock_slot")); - sv_metamodule_load = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_metamodule_load", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_metamodule_load")); - sv_metamodule_load_from_memory = (ReturnsintTakesIntIntIntPtrUint)(_handler.GetFunctionByName("sv_metamodule_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_metamodule_load_from_memory")); - sv_module_curve = (ReturnsintTakesIntIntIntIntPtrIntInt)(_handler.GetFunctionByName("sv_module_curve", typeof(ReturnsintTakesIntIntIntIntPtrIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_module_curve")); - sv_new_module = (ReturnsintTakesIntIntPtrIntPtrIntIntInt)(_handler.GetFunctionByName("sv_new_module", typeof(ReturnsintTakesIntIntPtrIntPtrIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_new_module")); - sv_new_pattern = (ReturnsintTakesIntIntIntIntIntIntIntIntPtr)(_handler.GetFunctionByName("sv_new_pattern", typeof(ReturnsintTakesIntIntIntIntIntIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_new_pattern")); - sv_open_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_open_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_open_slot")); - sv_pattern_mute = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_pattern_mute", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_pattern_mute")); - sv_pause = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_pause", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_pause")); - sv_play = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_play", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_play")); - sv_play_from_beginning = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_play_from_beginning", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_play_from_beginning")); - sv_remove_module = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_remove_module", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_remove_module")); - sv_remove_pattern = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_remove_pattern", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_remove_pattern")); - sv_resume = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_resume", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_resume")); - sv_rewind = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_rewind", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_rewind")); - sv_sampler_load = (ReturnsintTakesIntIntIntPtrInt)(_handler.GetFunctionByName("sv_sampler_load", typeof(ReturnsintTakesIntIntIntPtrInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_load")); - sv_sampler_load_from_memory = (ReturnsintTakesIntIntIntPtrUintInt)(_handler.GetFunctionByName("sv_sampler_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUintInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_load_from_memory")); - sv_sampler_par = (ReturnsintTakesIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_sampler_par", typeof(ReturnsintTakesIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_sampler_par")); - sv_save = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_save", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_save")); - sv_save_to_memory = (ReturnsIntPtrTakesIntIntPtr)(_handler.GetFunctionByName("sv_save_to_memory", typeof(ReturnsIntPtrTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_save_to_memory")); - sv_send_event = (ReturnsintTakesIntIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_send_event", typeof(ReturnsintTakesIntIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_send_event")); - sv_set_autostop = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_set_autostop", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_autostop")); - sv_set_event_t = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_event_t", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_event_t")); - sv_set_module_color = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_color", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_color")); - sv_set_module_ctl_value = (ReturnsintTakesIntIntIntIntInt)(_handler.GetFunctionByName("sv_set_module_ctl_value", typeof(ReturnsintTakesIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_ctl_value")); - sv_set_module_finetune = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_finetune", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_finetune")); - sv_set_module_name = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_set_module_name", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_name")); - sv_set_module_relnote = (ReturnsintTakesIntIntInt)(_handler.GetFunctionByName("sv_set_module_relnote", typeof(ReturnsintTakesIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_relnote")); - sv_set_module_xy = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_module_xy", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_module_xy")); - sv_set_pattern_event = (ReturnsintTakesIntIntIntIntIntIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_event", typeof(ReturnsintTakesIntIntIntIntIntIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_event")); - sv_set_pattern_name = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_set_pattern_name", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_name")); - sv_set_pattern_size = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_size", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_size")); - sv_set_pattern_xy = (ReturnsintTakesIntIntIntInt)(_handler.GetFunctionByName("sv_set_pattern_xy", typeof(ReturnsintTakesIntIntIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_set_pattern_xy")); - sv_set_song_name = (ReturnsintTakesIntIntPtr)(_handler.GetFunctionByName("sv_set_song_name", typeof(ReturnsintTakesIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_set_song_name")); - sv_stop = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_stop", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_stop")); - sv_sync_resume = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_sync_resume", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_sync_resume")); - sv_unlock_slot = (ReturnsintTakesInt)(_handler.GetFunctionByName("sv_unlock_slot", typeof(ReturnsintTakesInt)) ?? throw new InvalidOperationException("Failed to load function sv_unlock_slot")); - sv_update_input = (ReturnsintTakesVoid)(_handler.GetFunctionByName("sv_update_input", typeof(ReturnsintTakesVoid)) ?? throw new InvalidOperationException("Failed to load function sv_update_input")); - sv_volume = (ReturnsintTakesIntInt)(_handler.GetFunctionByName("sv_volume", typeof(ReturnsintTakesIntInt)) ?? throw new InvalidOperationException("Failed to load function sv_volume")); - sv_vplayer_load = (ReturnsintTakesIntIntIntPtr)(_handler.GetFunctionByName("sv_vplayer_load", typeof(ReturnsintTakesIntIntIntPtr)) ?? throw new InvalidOperationException("Failed to load function sv_vplayer_load")); - sv_vplayer_load_from_memory = (ReturnsintTakesIntIntIntPtrUint)(_handler.GetFunctionByName("sv_vplayer_load_from_memory", typeof(ReturnsintTakesIntIntIntPtrUint)) ?? throw new InvalidOperationException("Failed to load function sv_vplayer_load_from_memory")); + sv_audio_callback = GetDelegateOrThrow("sv_audio_callback"); + sv_audio_callback2 = GetDelegateOrThrow("sv_audio_callback2"); + sv_close_slot = GetDelegateOrThrow("sv_close_slot"); + sv_connect_module = GetDelegateOrThrow("sv_connect_module"); + sv_deinit = GetDelegateOrThrow("sv_deinit"); + sv_disconnect_module = GetDelegateOrThrow("sv_disconnect_module"); + sv_end_of_song = GetDelegateOrThrow("sv_end_of_song"); + sv_find_module = GetDelegateOrThrow("sv_find_module"); + sv_find_pattern = GetDelegateOrThrow("sv_find_pattern"); + sv_get_autostop = GetDelegateOrThrow("sv_get_autostop"); + sv_get_base_version = GetDelegateOrThrow("sv_get_base_version"); + sv_get_current_line = GetDelegateOrThrow("sv_get_current_line"); + sv_get_current_line2 = GetDelegateOrThrow("sv_get_current_line2"); + sv_get_current_signal_level = GetDelegateOrThrow("sv_get_current_signal_level"); + sv_get_log = GetDelegateOrThrow("sv_get_log"); + sv_get_module_color = GetDelegateOrThrow("sv_get_module_color"); + sv_get_module_ctl_group = GetDelegateOrThrow("sv_get_module_ctl_group"); + sv_get_module_ctl_max = GetDelegateOrThrow("sv_get_module_ctl_max"); + sv_get_module_ctl_min = GetDelegateOrThrow("sv_get_module_ctl_min"); + sv_get_module_ctl_name = GetDelegateOrThrow("sv_get_module_ctl_name"); + sv_get_module_ctl_offset = GetDelegateOrThrow("sv_get_module_ctl_offset"); + sv_get_module_ctl_type = GetDelegateOrThrow("sv_get_module_ctl_type"); + sv_get_module_ctl_value = GetDelegateOrThrow("sv_get_module_ctl_value"); + sv_get_module_finetune = GetDelegateOrThrow("sv_get_module_finetune"); + sv_get_module_flags = GetDelegateOrThrow("sv_get_module_flags"); + sv_get_module_inputs = GetDelegateOrThrow("sv_get_module_inputs"); + sv_get_module_name = GetDelegateOrThrow("sv_get_module_name"); + sv_get_module_outputs = GetDelegateOrThrow("sv_get_module_outputs"); + sv_get_module_scope2 = GetDelegateOrThrow("sv_get_module_scope2"); + sv_get_module_type = GetDelegateOrThrow("sv_get_module_type"); + sv_get_module_xy = GetDelegateOrThrow("sv_get_module_xy"); + sv_get_number_of_module_ctls = GetDelegateOrThrow("sv_get_number_of_module_ctls"); + sv_get_number_of_modules = GetDelegateOrThrow("sv_get_number_of_modules"); + sv_get_number_of_patterns = GetDelegateOrThrow("sv_get_number_of_patterns"); + sv_get_pattern_data = GetDelegateOrThrow("sv_get_pattern_data"); + sv_get_pattern_event = GetDelegateOrThrow("sv_get_pattern_event"); + sv_get_pattern_lines = GetDelegateOrThrow("sv_get_pattern_lines"); + sv_get_pattern_name = GetDelegateOrThrow("sv_get_pattern_name"); + sv_get_pattern_tracks = GetDelegateOrThrow("sv_get_pattern_tracks"); + sv_get_pattern_x = GetDelegateOrThrow("sv_get_pattern_x"); + sv_get_pattern_y = GetDelegateOrThrow("sv_get_pattern_y"); + sv_get_sample_rate = GetDelegateOrThrow("sv_get_sample_rate"); + sv_get_song_bpm = GetDelegateOrThrow("sv_get_song_bpm"); + sv_get_song_length_frames = GetDelegateOrThrow("sv_get_song_length_frames"); + sv_get_song_length_lines = GetDelegateOrThrow("sv_get_song_length_lines"); + sv_get_song_name = GetDelegateOrThrow("sv_get_song_name"); + sv_get_song_tpl = GetDelegateOrThrow("sv_get_song_tpl"); + sv_get_ticks = GetDelegateOrThrow("sv_get_ticks"); + sv_get_ticks_per_second = GetDelegateOrThrow("sv_get_ticks_per_second"); + sv_get_time_map = GetDelegateOrThrow("sv_get_time_map"); + sv_init = GetDelegateOrThrow("sv_init"); + sv_load = GetDelegateOrThrow("sv_load"); + sv_load_from_memory = GetDelegateOrThrow("sv_load_from_memory"); + sv_load_module = GetDelegateOrThrow("sv_load_module"); + sv_load_module_from_memory = GetDelegateOrThrow("sv_load_module_from_memory"); + sv_lock_slot = GetDelegateOrThrow("sv_lock_slot"); + sv_metamodule_load = GetDelegateOrThrow("sv_metamodule_load"); + sv_metamodule_load_from_memory = GetDelegateOrThrow("sv_metamodule_load_from_memory"); + sv_module_curve = GetDelegateOrThrow("sv_module_curve"); + sv_new_module = GetDelegateOrThrow("sv_new_module"); + sv_new_pattern = GetDelegateOrThrow("sv_new_pattern"); + sv_open_slot = GetDelegateOrThrow("sv_open_slot"); + sv_pattern_mute = GetDelegateOrThrow("sv_pattern_mute"); + sv_pause = GetDelegateOrThrow("sv_pause"); + sv_play = GetDelegateOrThrow("sv_play"); + sv_play_from_beginning = GetDelegateOrThrow("sv_play_from_beginning"); + sv_remove_module = GetDelegateOrThrow("sv_remove_module"); + sv_remove_pattern = GetDelegateOrThrow("sv_remove_pattern"); + sv_resume = GetDelegateOrThrow("sv_resume"); + sv_rewind = GetDelegateOrThrow("sv_rewind"); + sv_sampler_load = GetDelegateOrThrow("sv_sampler_load"); + sv_sampler_load_from_memory = GetDelegateOrThrow("sv_sampler_load_from_memory"); + sv_sampler_par = GetDelegateOrThrow("sv_sampler_par"); + sv_save = GetDelegateOrThrow("sv_save"); + sv_save_to_memory = GetDelegateOrThrow("sv_save_to_memory"); + sv_send_event = GetDelegateOrThrow("sv_send_event"); + sv_set_autostop = GetDelegateOrThrow("sv_set_autostop"); + sv_set_event_t = GetDelegateOrThrow("sv_set_event_t"); + sv_set_module_color = GetDelegateOrThrow("sv_set_module_color"); + sv_set_module_ctl_value = GetDelegateOrThrow("sv_set_module_ctl_value"); + sv_set_module_finetune = GetDelegateOrThrow("sv_set_module_finetune"); + sv_set_module_name = GetDelegateOrThrow("sv_set_module_name"); + sv_set_module_relnote = GetDelegateOrThrow("sv_set_module_relnote"); + sv_set_module_xy = GetDelegateOrThrow("sv_set_module_xy"); + sv_set_pattern_event = GetDelegateOrThrow("sv_set_pattern_event"); + sv_set_pattern_name = GetDelegateOrThrow("sv_set_pattern_name"); + sv_set_pattern_size = GetDelegateOrThrow("sv_set_pattern_size"); + sv_set_pattern_xy = GetDelegateOrThrow("sv_set_pattern_xy"); + sv_set_song_name = GetDelegateOrThrow("sv_set_song_name"); + sv_stop = GetDelegateOrThrow("sv_stop"); + sv_sync_resume = GetDelegateOrThrow("sv_sync_resume"); + sv_unlock_slot = GetDelegateOrThrow("sv_unlock_slot"); + sv_update_input = GetDelegateOrThrow("sv_update_input"); + sv_volume = GetDelegateOrThrow("sv_volume"); + sv_vplayer_load = GetDelegateOrThrow("sv_vplayer_load"); + sv_vplayer_load_from_memory = GetDelegateOrThrow("sv_vplayer_load_from_memory"); } private void SetAllDelegatesToNull() diff --git a/SunSharp/Native/SunVoxLib.cs b/SunSharp/Native/SunVoxLib.cs index b4df78b..f4e3adc 100644 --- a/SunSharp/Native/SunVoxLib.cs +++ b/SunSharp/Native/SunVoxLib.cs @@ -110,9 +110,8 @@ public void CloseSlot(int slotId) /// /// Deinitialize the SunVox engine and free all resources. - /// May be safely called multiple times. /// - /// Thrown when the operation fails. + /// Thrown when the operation fails, or when already deinitialized. /// Calls . public void Deinitialize() { @@ -394,7 +393,7 @@ private T[] GetTimeMap(int slotId, int startLine, int length, TimeMapType typ } /// - /// Initialize the SunVox engine. May be called again to re-initialize. + /// Initialize the SunVox engine. /// /// /// Desired sample rate (Hz); minimum 44100. The actual rate may differ if offline mode is not set. @@ -405,7 +404,7 @@ private T[] GetTimeMap(int slotId, int startLine, int length, TimeMapType typ /// /// Number of audio channels. /// Initialization flags. - /// Thrown when initialization fails. + /// Thrown when initialization fails, or when already initialized. /// Calls . public SunVoxVersion Initialize(int sampleRate, string? config = null, AudioChannels channels = AudioChannels.Stereo, SunVoxInitOptions options = SunVoxInitOptions.None) diff --git a/SunSharp/Slot.cs b/SunSharp/Slot.cs index 5ab2c05..9dba436 100644 --- a/SunSharp/Slot.cs +++ b/SunSharp/Slot.cs @@ -84,8 +84,8 @@ public interface ISlot /// void Load(byte[] data); - /// - void Save(string path); + /// + void SaveToFile(string path); /// void StartPlayback(); @@ -190,8 +190,11 @@ public sealed class Slot : ISlot /// /// SunVox instance this slot belongs to. /// +#if RELEASE public SunVox SunVox { get; } - +#else + public ISunVox SunVox { get; } +#endif /// IVirtualPattern ISlot.VirtualPattern => VirtualPattern; @@ -219,8 +222,11 @@ public sealed class Slot : ISlot public bool IsOpen { get; private set; } private readonly object _slotManagementLock; - +#if RELEASE internal Slot(int id, object slotManagementLock, SunVox sunVox) +#else + internal Slot(int id, object slotManagementLock, ISunVox sunVox) +#endif { Id = id; _slotManagementLock = slotManagementLock; @@ -247,7 +253,7 @@ public IDisposable AcquireLock() { lock (_slotManagementLock) { - return new SlotLock(this, OpenCount); + return new SlotLock(this, _slotManagementLock, OpenCount); } } @@ -313,7 +319,7 @@ public void Load(byte[] data) } /// - public void Save(string path) + public void SaveToFile(string path) { Library.SaveToFile(Id, path); } diff --git a/SunSharp/SlotLock.cs b/SunSharp/SlotLock.cs index cf4a4b0..1667a44 100644 --- a/SunSharp/SlotLock.cs +++ b/SunSharp/SlotLock.cs @@ -4,43 +4,66 @@ namespace SunSharp { internal sealed class SlotLock : IDisposable { + private enum LockState : byte + { + NotLockedYet = 0, + Locked = 1, + Unlocked = 2 + } + private readonly Slot _slot; + private readonly object _slotManagementLock; private readonly uint _openCount; - private bool _disposed; + private LockState _lockState; /// /// This object should only be created under a lock on SlotManagementLock. /// - internal SlotLock(Slot slot, uint openCount) + internal SlotLock(Slot slot, object slotManagementLock, uint openCount) { _slot = slot; _openCount = openCount; + _slotManagementLock = slotManagementLock; + _lockState = LockState.NotLockedYet; slot.Library.LockSlot(slot.Id); + _lockState = LockState.Locked; } - private void ReleaseUnmanagedResources() + private void ReleaseUnmanagedResources(bool disposing) { - _slot.Library.UnlockSlot(_slot.Id); + if (disposing) + { + _slot.Library.UnlockSlot(_slot.Id); + return; + } + try + { + _slot.Library.UnlockSlot(_slot.Id); + } + catch (Exception) + { + // may be caused by a null delegate, or SunVoxException + } } private void Dispose(bool disposing) { - if (_disposed) + if (_lockState != LockState.Locked) { return; } - lock (_slot.SunVox.Slots.SlotManagementLock) + _lockState = LockState.Unlocked; + lock (_slotManagementLock) { if (_slot.SunVox.Deinitialized) { - _disposed = true; return; } if (_slot.OpenCount == _openCount) { - ReleaseUnmanagedResources(); + ReleaseUnmanagedResources(disposing); } } @@ -48,8 +71,6 @@ private void Dispose(bool disposing) { // release managed resources } - - _disposed = true; } public void Dispose() diff --git a/SunSharp/SunSharp.csproj b/SunSharp/SunSharp.csproj index cd36c75..a3dbfd2 100644 --- a/SunSharp/SunSharp.csproj +++ b/SunSharp/SunSharp.csproj @@ -33,7 +33,7 @@ - <_Parameter1>$(MSBuildProjectName).Tests + <_Parameter1>SunSharp.Tests diff --git a/SunSharp/SunVox.cs b/SunSharp/SunVox.cs index cf9525c..2db136a 100644 --- a/SunSharp/SunVox.cs +++ b/SunSharp/SunVox.cs @@ -6,60 +6,64 @@ namespace SunSharp { /// /// Allows for object-oriented approach to using the SunVox library. - /// No manual locking should be necessary. /// public interface ISunVox : IDisposable { + /// ISlots Slots { get; } + + /// bool NeedsUserCallback { get; } + + /// bool SingleThreaded { get; } + + /// + bool Deinitialized { get; } + + /// OutputType? OutputType { get; } + + /// SunVoxVersion Version { get; } + + /// int SampleRate { get; } + + /// AudioChannels Channels { get; } - /// - /// Handle input ON/OFF requests to enable/disable input ports of the sound card (for example, after the Input module creation). Call it from the main thread only, where the SunVox sound stream is not locked. - /// + /// + ISunVoxLib Library { get; } + + /// void UpdateInputDevices(); - /// - /// Get the next piece of audio. - /// If library was initialized with , the samples will be interlaced, and the buffer size must be a multiple of two. - /// - /// Buffer to write sound data to. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). + /// bool AudioCallback(float[] outputBuffer, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, int latency, uint outTime); - /// - /// Get the next piece of audio. - /// If audio is stereo, the samples will be interlaced, and the buffer size must be a multiple of two. - /// Sends equal size buffer of an input device, which will be applied to any Input modules. - /// - /// Buffer to write sound data to. - /// Buffer to read sound data from. - /// Input data channels. - /// Audio latency (in frames). - /// Buffer output time (in system ticks). + /// bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); - /// + /// bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime); + /// uint GetTicks(); + /// uint GetTicksPerSecond(); + /// string? GetLog(int length); } @@ -75,28 +79,26 @@ public sealed class SunVox : ISunVox public ISunVoxLib Library { get; } #endif - /// + ISunVoxLib ISunVox.Library => Library; + public Slots Slots { get; } /// ISlots ISunVox.Slots => Slots; - /// public bool NeedsUserCallback => OutputType != null; - /// public bool SingleThreaded { get; } - /// public OutputType? OutputType { get; } - /// public SunVoxVersion Version { get; } - /// public int SampleRate { get; } - /// + /// + /// Number of channels SunVox was initialized with on startup. + /// public AudioChannels Channels { get; } /// @@ -117,6 +119,11 @@ public SunVox(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #endif { + if (library == null) + { + throw new ArgumentNullException(nameof(library)); + } + var flags = SunVoxInitOptions.None; if (noDebugOutput) { @@ -158,6 +165,11 @@ public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioCh bool singleThreaded = false, bool noDebugOutput = true) #endif { + if (library == null) + { + throw new ArgumentNullException(nameof(library)); + } + var flags = ConstructInitFlags(SunVoxInitOptions.UserAudioCallback, noDebugOutput, outputType, singleThreaded); if (sampleRate < 1) @@ -228,7 +240,7 @@ private static SunVoxInitOptions ConstructInitFlags(SunVoxInitOptions initial, b #region disposable - internal bool Deinitialized { get; private set; } + public bool Deinitialized { get; private set; } private void Dispose(bool disposing) { @@ -240,8 +252,16 @@ private void Dispose(bool disposing) // nothing right now } - Library.Deinitialize(); Deinitialized = true; + try + { + Library.Deinitialize(); + } + catch (SunVoxException) + { + // swallow exceptions on deinitialization + // this is because Deinitialize may fail if already deinitialized elsewhere somehow + } } } @@ -263,7 +283,7 @@ public void Dispose() #region audio I/O - /// + /// public void UpdateInputDevices() { Library.UpdateInputDevices(); @@ -288,42 +308,42 @@ private void AudioGuard(bool callIsFloat) throw new InvalidOperationException(msg); } - /// + /// public bool AudioCallback(float[] outputBuffer, int latency, uint outTime) { AudioGuard(true); return Library.AudioCallback(outputBuffer, Channels, latency, outTime); } - /// + /// public bool AudioCallback(short[] outputBuffer, int latency, uint outTime) { AudioGuard(false); return Library.AudioCallback(outputBuffer, Channels, latency, outTime); } - /// + /// public bool AudioCallback(float[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { AudioGuard(true); return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } - /// + /// public bool AudioCallback(float[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { AudioGuard(true); return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } - /// + /// public bool AudioCallback(short[] outputBuffer, float[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { AudioGuard(false); return Library.AudioCallback(outputBuffer, Channels, inputBuffer, inputChannels, latency, outTime); } - /// + /// public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChannels inputChannels, int latency, uint outTime) { AudioGuard(false); @@ -332,18 +352,19 @@ public bool AudioCallback(short[] outputBuffer, short[] inputBuffer, AudioChanne #endregion audio I/O - /// + /// public uint GetTicks() { return Library.GetTicks(); } - /// + /// public uint GetTicksPerSecond() { return Library.GetTicksPerSecond(); } + /// public string? GetLog(int length) { return Library.GetLog(length); diff --git a/SunSharp/Synthesizer.cs b/SunSharp/Synthesizer.cs index 40a867e..bdba1cf 100644 --- a/SunSharp/Synthesizer.cs +++ b/SunSharp/Synthesizer.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; diff --git a/SunSharp/Timeline.cs b/SunSharp/Timeline.cs index 8fae8b7..a3cfc88 100644 --- a/SunSharp/Timeline.cs +++ b/SunSharp/Timeline.cs @@ -123,7 +123,7 @@ public bool TryGetPattern(int id, [NotNullWhen(true)] out PatternHandle? pattern } } - public bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern) + bool ITimeline.TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? pattern) { if (TryGetPattern(name, out PatternHandle? p)) { @@ -137,7 +137,7 @@ public bool TryGetPattern(string name, [NotNullWhen(true)] out IPatternHandle? p } } - public bool TryGetPattern(int patternId, [NotNullWhen(true)] out IPatternHandle? pattern) + bool ITimeline.TryGetPattern(int patternId, [NotNullWhen(true)] out IPatternHandle? pattern) { if (TryGetPattern(patternId, out PatternHandle? p)) { From 450dbd29ad719236a8335dd348bc279c1a724553 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Wed, 4 Feb 2026 22:33:46 +0100 Subject: [PATCH 20/27] GitHub actions; documentation and API reference --- .github/workflows/docs.yml | 74 +++++++++ Examples/AssemblyInfo.cs | 3 - Examples/Examples.csproj | 17 -- Examples/Program.cs | 58 ------- README.md | 143 +++++++++-------- docs/.gitignore | 1 + docs/articles/contributing.md | 1 + docs/articles/getting-started.md | 1 + docs/articles/toc.yml | 4 + docs/docfx.json | 62 ++++++++ docs/filterConfig.yml | 9 ++ docs/images/logo.png | Bin 0 -> 2415 bytes docs/index.md | 11 ++ docs/toc.yml | 6 + scripts/generate-docs.sh | 62 ++++++++ .gitignore => src/.gitignore | 0 .../CodeGeneration.Tests}/AssemblyInfo.cs | 0 .../CodeGeneration.Tests.csproj | 8 + .../CodeGeneration.Tests}/GeneratorTests.cs | 0 .../CodeGeneration.Tests}/GlobalUsings.cs | 0 .../Logic/KnownModuleTypesTests.cs | 0 .../Logic/ModuleDataTests.cs | 0 .../CodeGeneration}/AssemblyInfo.cs | 0 .../CodeGeneration}/CodeGeneration.csproj | 8 + .../CodeGeneration}/GeneratorDiscovery.cs | 0 .../CodeGeneration}/GeneratorResult.cs | 0 .../Generators/BaseGenerator.cs | 0 .../Generators/GeneratorProvider.cs | 0 .../ModuleHandles/BasicModuleGenerator.cs | 33 ++-- .../ModuleHandles/FmxModuleGenerator.cs | 6 +- .../ModuleHandles/MetaModuleGenerator.cs | 0 .../PerTypeModuleHandleGeneratorProvider.cs | 0 .../SynthModuleHandleGenerator.cs | 2 +- .../Generators/NativeProxyGenerator.cs | 0 .../Generators/OwnData/ModuleDataGenerator.cs | 2 +- .../OwnData/ModuleDataSchemaGenerator.cs | 0 .../SunVoxHeaderInterfaceGenerator.cs | 0 .../SunVoxLibWithLoggerGenerator.cs | 0 .../Generators/SynthModuleTypeGenerator.cs | 2 +- .../Logic/CodeGenerationContext.cs | 0 .../Logic/CodeGenerationHelper.cs | 0 .../CodeGeneration}/Logic/KnownModuleData.cs | 0 .../CodeGeneration}/Logic/KnownModuleTypes.cs | 0 .../CodeGeneration}/Logic/ModuleData.g.json | 0 .../Logic/ModuleData.g.schema.json | 0 .../CodeGeneration}/Logic/ModuleDataLoader.cs | 0 .../Logic/SunVoxHeaderParser.cs | 0 .../CodeGeneration}/PathHelper.cs | 1 - .../CodeGeneration}/Program.cs | 0 .../AssemblyInfo.cs | 0 .../AudioTests/BaseAudioTest.cs | 0 .../AudioTests/SimpleAudioTest.cs | 8 +- .../AudioTests/output/.gitignore | 0 .../AudioTests/output/whatisthis.txt | 0 .../BaseIntegrationTest.cs | 0 .../GlobalUsings.cs | 0 .../SunSharp.IntegrationTests.csproj | 8 + .../SunVoxLibTests/NoteTests.cs | 0 .../SunVoxLibTests/OtherTests.cs | 0 .../SunVoxLibTests/all_notes.sunvox | Bin .../SunSharp.Redistribution}/LibraryLoader.cs | 0 .../LibraryLoadingException.cs | 0 .../SunSharp.Redistribution}/README.md | 0 .../RELEASE-NOTES.txt | 0 .../SunSharp.Redistribution.csproj | 8 + .../SunSharp.Redistribution.nuspec | 0 .../UnixLibraryHandler.cs | 0 .../WindowsLibraryHandler.cs | 0 .../SunSharp.Redistribution}/license.txt | 0 .../runtimes/linux-arm/native/sunvox.so | Bin .../runtimes/linux-arm64/native/sunvox.so | Bin .../runtimes/linux-x64/native/sunvox.so | Bin .../runtimes/linux-x86/native/sunvox.so | Bin .../runtimes/osx-arm64/native/sunvox.dylib | Bin .../runtimes/osx-x64/native/sunvox.dylib | Bin .../runtimes/win-x64/native/sunvox.dll | Bin .../runtimes/win-x86/native/sunvox.dll | Bin .../SunSharp.Tests}/AssemblyInfo.cs | 0 .../SunSharp.Tests}/EffectExtensionsTests.cs | 0 .../SunSharp.Tests}/FineTunePairTests.cs | 0 .../SunSharp.Tests}/GlobalUsings.cs | 0 .../SunSharp.Tests}/MicrotonesTests.cs | 0 .../SunSharp.Tests}/ModuleFlagsTests.cs | 0 .../Native/Loader/NativeProxyTests.cs | 0 .../Native/SunVoxLibAudioCallbackTests.cs | 0 .../Native/SunVoxLibModulesTests.cs | 0 .../Native/SunVoxLibPatternsTests.cs | 0 .../SunSharp.Tests}/Native/SunVoxLibTests.cs | 0 .../SunSharp.Tests}/NoteTests.cs | 0 .../SunSharp.Tests}/PatternEventTests.cs | 0 .../SunSharp.Tests}/SlotTests.cs | 2 +- .../SunSharp.Tests}/SunSharp.Tests.csproj | 8 + .../SunSharp.Tests}/SunVoxExceptionTests.cs | 0 .../SunSharp.Tests}/SunVoxTests.cs | 2 +- .../SunSharp.Tests}/SunVoxVersionTests.cs | 0 .../SunSharp.Tests}/SynthesizerTests.cs | 12 +- .../SunSharp.Tests}/TimelineTests.cs | 2 +- .../SunSharp.Tests}/UtilityHelperTests.cs | 0 SunSharp.sln => src/SunSharp.sln | 10 +- .../SunSharp}/Diagnostics/Logger.cs | 0 .../Diagnostics/SunVoxLibWithLogger.cs | 0 .../Diagnostics/SunVoxLibWithLogger.g.cs | 0 {SunSharp => src/SunSharp}/Effects.cs | 0 {SunSharp => src/SunSharp}/Enums.cs | 0 {SunSharp => src/SunSharp}/FineTunePair.cs | 0 {SunSharp => src/SunSharp}/Microtones.cs | 0 {SunSharp => src/SunSharp}/ModuleFlags.cs | 0 .../Modules/ControllerSpecificEnums.cs | 14 +- .../IncorrectSynthHandleTypeException.cs | 0 .../Modules/MetaModuleModuleHandle.cs | 2 +- .../SunSharp}/Modules/SamplerModuleHandle.cs | 2 +- .../SunSharp}/Modules/TypedModuleHandle.cs | 0 .../Modules/VorbisPlayerModuleHandle.cs | 2 +- .../SunSharp}/Modules/g/AdsrModuleHandle.g.cs | 2 +- .../Modules/g/AmplifierModuleHandle.g.cs | 2 +- .../g/AnalogGeneratorModuleHandle.g.cs | 42 ++--- .../Modules/g/CompressorModuleHandle.g.cs | 2 +- .../Modules/g/ControlToNoteModuleHandle.g.cs | 2 +- .../Modules/g/DcBlockerModuleHandle.g.cs | 2 +- .../Modules/g/DelayModuleHandle.g.cs | 2 +- .../Modules/g/DistortionModuleHandle.g.cs | 2 +- .../Modules/g/DrumSynthModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/EchoModuleHandle.g.cs | 8 +- .../SunSharp}/Modules/g/EqModuleHandle.g.cs | 2 +- .../Modules/g/FeedbackModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/FftModuleHandle.g.cs | 2 +- .../Modules/g/FilterModuleHandle.g.cs | 2 +- .../Modules/g/FilterProModuleHandle.g.cs | 2 +- .../Modules/g/FlangerModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/FmModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/FmxModuleHandle.g.cs | 150 +++++++++--------- .../Modules/g/GeneratorModuleHandle.g.cs | 24 +-- .../Modules/g/GlideModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/GpioModuleHandle.g.cs | 2 +- .../Modules/g/InputModuleHandle.g.cs | 2 +- .../Modules/g/KickerModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/LfoModuleHandle.g.cs | 2 +- .../SunSharp}/Modules/g/LoopModuleHandle.g.cs | 8 +- .../Modules/g/MetaModuleModuleHandle.g.cs | 2 +- .../Modules/g/ModulatorModuleHandle.g.cs | 2 +- .../Modules/g/MultiControlModuleHandle.g.cs | 24 +-- .../Modules/g/MultiSynthModuleHandle.g.cs | 68 +++++--- .../Modules/g/OutputModuleHandle.g.cs | 2 +- .../Modules/g/PitchDetectorModuleHandle.g.cs | 2 +- .../Modules/g/PitchShifterModuleHandle.g.cs | 2 +- .../Modules/g/PitchToControlModuleHandle.g.cs | 2 +- .../Modules/g/ReverbModuleHandle.g.cs | 2 +- .../Modules/g/SamplerModuleHandle.g.cs | 2 +- .../Modules/g/SoundToControlModuleHandle.g.cs | 2 +- .../Modules/g/SpectraVoiceModuleHandle.g.cs | 2 +- .../g/VelocityToControlModuleHandle.g.cs | 2 +- .../Modules/g/VibratoModuleHandle.g.cs | 2 +- .../Modules/g/VocalFilterModuleHandle.g.cs | 2 +- .../Modules/g/VorbisPlayerModuleHandle.g.cs | 2 +- .../Modules/g/WaveShaperModuleHandle.g.cs | 24 +-- .../SunSharp}/Native/ISunVoxLib.Modules.cs | 0 .../SunSharp}/Native/ISunVoxLib.Patterns.cs | 0 .../SunSharp}/Native/ISunVoxLib.cs | 0 .../SunSharp}/Native/ISunVoxLibC.g.cs | 0 .../Native/Loader/ILibraryHandler.cs | 0 .../SunSharp}/Native/Loader/NativeProxy.cs | 0 .../SunSharp}/Native/Loader/NativeProxy.g.cs | 0 .../SunSharp}/Native/SunVoxLib.Modules.cs | 0 .../SunSharp}/Native/SunVoxLib.Patterns.cs | 0 .../SunSharp}/Native/SunVoxLib.cs | 0 {SunSharp => src/SunSharp}/Native/sunvox.h | 0 {SunSharp => src/SunSharp}/Note.cs | 0 {SunSharp => src/SunSharp}/NoteName.cs | 0 {SunSharp => src/SunSharp}/PatternEvent.cs | 0 {SunSharp => src/SunSharp}/PatternHandle.cs | 13 +- {SunSharp => src/SunSharp}/README.md | 0 {SunSharp => src/SunSharp}/RELEASE-NOTES.txt | 0 {SunSharp => src/SunSharp}/Slot.cs | 6 +- {SunSharp => src/SunSharp}/SlotLock.cs | 0 {SunSharp => src/SunSharp}/Slots.cs | 0 {SunSharp => src/SunSharp}/Speed.cs | 0 {SunSharp => src/SunSharp}/SunSharp.csproj | 4 +- {SunSharp => src/SunSharp}/SunSharp.sln | 0 {SunSharp => src/SunSharp}/SunVox.cs | 10 +- {SunSharp => src/SunSharp}/SunVoxException.cs | 0 {SunSharp => src/SunSharp}/SunVoxVersion.cs | 0 .../SunSharp}/SynthModuleHandle.cs | 2 +- .../SunSharp}/SynthModuleHandle.g.cs | 2 +- {SunSharp => src/SunSharp}/SynthModuleType.cs | 2 +- .../SunSharp}/SynthModuleType.g.cs | 2 +- {SunSharp => src/SunSharp}/Synthesizer.cs | 2 +- {SunSharp => src/SunSharp}/Timeline.cs | 2 +- {SunSharp => src/SunSharp}/UtilityHelper.cs | 0 {SunSharp => src/SunSharp}/VirtualPattern.cs | 27 +--- {SunSharp => src/SunSharp}/license.txt | 0 190 files changed, 659 insertions(+), 423 deletions(-) create mode 100644 .github/workflows/docs.yml delete mode 100644 Examples/AssemblyInfo.cs delete mode 100644 Examples/Examples.csproj delete mode 100644 Examples/Program.cs create mode 100644 docs/.gitignore create mode 100644 docs/articles/contributing.md create mode 100644 docs/articles/getting-started.md create mode 100644 docs/articles/toc.yml create mode 100644 docs/docfx.json create mode 100644 docs/filterConfig.yml create mode 100644 docs/images/logo.png create mode 100644 docs/index.md create mode 100644 docs/toc.yml create mode 100644 scripts/generate-docs.sh rename .gitignore => src/.gitignore (100%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/AssemblyInfo.cs (100%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/CodeGeneration.Tests.csproj (83%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/GeneratorTests.cs (100%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/GlobalUsings.cs (100%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/Logic/KnownModuleTypesTests.cs (100%) rename {CodeGeneration.Tests => src/CodeGeneration.Tests}/Logic/ModuleDataTests.cs (100%) rename {CodeGeneration => src/CodeGeneration}/AssemblyInfo.cs (100%) rename {CodeGeneration => src/CodeGeneration}/CodeGeneration.csproj (68%) rename {CodeGeneration => src/CodeGeneration}/GeneratorDiscovery.cs (100%) rename {CodeGeneration => src/CodeGeneration}/GeneratorResult.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/BaseGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/GeneratorProvider.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/ModuleHandles/BasicModuleGenerator.cs (96%) rename {CodeGeneration => src/CodeGeneration}/Generators/ModuleHandles/FmxModuleGenerator.cs (98%) rename {CodeGeneration => src/CodeGeneration}/Generators/ModuleHandles/MetaModuleGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/ModuleHandles/SynthModuleHandleGenerator.cs (98%) rename {CodeGeneration => src/CodeGeneration}/Generators/NativeProxyGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/OwnData/ModuleDataGenerator.cs (99%) rename {CodeGeneration => src/CodeGeneration}/Generators/OwnData/ModuleDataSchemaGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/SunVoxHeaderInterfaceGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/SunVoxLibWithLoggerGenerator.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Generators/SynthModuleTypeGenerator.cs (98%) rename {CodeGeneration => src/CodeGeneration}/Logic/CodeGenerationContext.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/CodeGenerationHelper.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/KnownModuleData.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/KnownModuleTypes.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/ModuleData.g.json (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/ModuleData.g.schema.json (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/ModuleDataLoader.cs (100%) rename {CodeGeneration => src/CodeGeneration}/Logic/SunVoxHeaderParser.cs (100%) rename {CodeGeneration => src/CodeGeneration}/PathHelper.cs (97%) rename {CodeGeneration => src/CodeGeneration}/Program.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/AssemblyInfo.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/AudioTests/BaseAudioTest.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/AudioTests/SimpleAudioTest.cs (97%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/AudioTests/output/.gitignore (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/AudioTests/output/whatisthis.txt (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/BaseIntegrationTest.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/GlobalUsings.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/SunSharp.IntegrationTests.csproj (84%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/SunVoxLibTests/NoteTests.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/SunVoxLibTests/OtherTests.cs (100%) rename {SunSharp.IntegrationTests => src/SunSharp.IntegrationTests}/SunVoxLibTests/all_notes.sunvox (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/LibraryLoader.cs (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/LibraryLoadingException.cs (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/README.md (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/RELEASE-NOTES.txt (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/SunSharp.Redistribution.csproj (91%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/SunSharp.Redistribution.nuspec (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/UnixLibraryHandler.cs (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/WindowsLibraryHandler.cs (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/license.txt (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/linux-arm/native/sunvox.so (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/linux-arm64/native/sunvox.so (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/linux-x64/native/sunvox.so (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/linux-x86/native/sunvox.so (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/osx-arm64/native/sunvox.dylib (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/osx-x64/native/sunvox.dylib (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/win-x64/native/sunvox.dll (100%) rename {SunSharp.Redistribution => src/SunSharp.Redistribution}/runtimes/win-x86/native/sunvox.dll (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/AssemblyInfo.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/EffectExtensionsTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/FineTunePairTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/GlobalUsings.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/MicrotonesTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/ModuleFlagsTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/Native/Loader/NativeProxyTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/Native/SunVoxLibAudioCallbackTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/Native/SunVoxLibModulesTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/Native/SunVoxLibPatternsTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/Native/SunVoxLibTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/NoteTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/PatternEventTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/SlotTests.cs (99%) rename {SunSharp.Tests => src/SunSharp.Tests}/SunSharp.Tests.csproj (83%) rename {SunSharp.Tests => src/SunSharp.Tests}/SunVoxExceptionTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/SunVoxTests.cs (99%) rename {SunSharp.Tests => src/SunSharp.Tests}/SunVoxVersionTests.cs (100%) rename {SunSharp.Tests => src/SunSharp.Tests}/SynthesizerTests.cs (99%) rename {SunSharp.Tests => src/SunSharp.Tests}/TimelineTests.cs (99%) rename {SunSharp.Tests => src/SunSharp.Tests}/UtilityHelperTests.cs (100%) rename SunSharp.sln => src/SunSharp.sln (87%) rename {SunSharp => src/SunSharp}/Diagnostics/Logger.cs (100%) rename {SunSharp => src/SunSharp}/Diagnostics/SunVoxLibWithLogger.cs (100%) rename {SunSharp => src/SunSharp}/Diagnostics/SunVoxLibWithLogger.g.cs (100%) rename {SunSharp => src/SunSharp}/Effects.cs (100%) rename {SunSharp => src/SunSharp}/Enums.cs (100%) rename {SunSharp => src/SunSharp}/FineTunePair.cs (100%) rename {SunSharp => src/SunSharp}/Microtones.cs (100%) rename {SunSharp => src/SunSharp}/ModuleFlags.cs (100%) rename {SunSharp => src/SunSharp}/Modules/ControllerSpecificEnums.cs (98%) rename {SunSharp => src/SunSharp}/Modules/IncorrectSynthHandleTypeException.cs (100%) rename {SunSharp => src/SunSharp}/Modules/MetaModuleModuleHandle.cs (99%) rename {SunSharp => src/SunSharp}/Modules/SamplerModuleHandle.cs (97%) rename {SunSharp => src/SunSharp}/Modules/TypedModuleHandle.cs (100%) rename {SunSharp => src/SunSharp}/Modules/VorbisPlayerModuleHandle.cs (96%) rename {SunSharp => src/SunSharp}/Modules/g/AdsrModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/AmplifierModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/AnalogGeneratorModuleHandle.g.cs (98%) rename {SunSharp => src/SunSharp}/Modules/g/CompressorModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/ControlToNoteModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/DcBlockerModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/DelayModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/DistortionModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/DrumSynthModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/EchoModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/EqModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FeedbackModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FftModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FilterModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FilterProModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FlangerModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FmModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/FmxModuleHandle.g.cs (98%) rename {SunSharp => src/SunSharp}/Modules/g/GeneratorModuleHandle.g.cs (98%) rename {SunSharp => src/SunSharp}/Modules/g/GlideModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/GpioModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/InputModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/KickerModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/LfoModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/LoopModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/MetaModuleModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/ModulatorModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/MultiControlModuleHandle.g.cs (97%) rename {SunSharp => src/SunSharp}/Modules/g/MultiSynthModuleHandle.g.cs (94%) rename {SunSharp => src/SunSharp}/Modules/g/OutputModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/PitchDetectorModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/PitchShifterModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/PitchToControlModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/ReverbModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/SamplerModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/SoundToControlModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/SpectraVoiceModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/VelocityToControlModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/VibratoModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/VocalFilterModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/VorbisPlayerModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/Modules/g/WaveShaperModuleHandle.g.cs (97%) rename {SunSharp => src/SunSharp}/Native/ISunVoxLib.Modules.cs (100%) rename {SunSharp => src/SunSharp}/Native/ISunVoxLib.Patterns.cs (100%) rename {SunSharp => src/SunSharp}/Native/ISunVoxLib.cs (100%) rename {SunSharp => src/SunSharp}/Native/ISunVoxLibC.g.cs (100%) rename {SunSharp => src/SunSharp}/Native/Loader/ILibraryHandler.cs (100%) rename {SunSharp => src/SunSharp}/Native/Loader/NativeProxy.cs (100%) rename {SunSharp => src/SunSharp}/Native/Loader/NativeProxy.g.cs (100%) rename {SunSharp => src/SunSharp}/Native/SunVoxLib.Modules.cs (100%) rename {SunSharp => src/SunSharp}/Native/SunVoxLib.Patterns.cs (100%) rename {SunSharp => src/SunSharp}/Native/SunVoxLib.cs (100%) rename {SunSharp => src/SunSharp}/Native/sunvox.h (100%) rename {SunSharp => src/SunSharp}/Note.cs (100%) rename {SunSharp => src/SunSharp}/NoteName.cs (100%) rename {SunSharp => src/SunSharp}/PatternEvent.cs (100%) rename {SunSharp => src/SunSharp}/PatternHandle.cs (92%) rename {SunSharp => src/SunSharp}/README.md (100%) rename {SunSharp => src/SunSharp}/RELEASE-NOTES.txt (100%) rename {SunSharp => src/SunSharp}/Slot.cs (99%) rename {SunSharp => src/SunSharp}/SlotLock.cs (100%) rename {SunSharp => src/SunSharp}/Slots.cs (100%) rename {SunSharp => src/SunSharp}/Speed.cs (100%) rename {SunSharp => src/SunSharp}/SunSharp.csproj (96%) rename {SunSharp => src/SunSharp}/SunSharp.sln (100%) rename {SunSharp => src/SunSharp}/SunVox.cs (99%) rename {SunSharp => src/SunSharp}/SunVoxException.cs (100%) rename {SunSharp => src/SunSharp}/SunVoxVersion.cs (100%) rename {SunSharp => src/SunSharp}/SynthModuleHandle.cs (99%) rename {SunSharp => src/SunSharp}/SynthModuleHandle.g.cs (99%) rename {SunSharp => src/SunSharp}/SynthModuleType.cs (97%) rename {SunSharp => src/SunSharp}/SynthModuleType.g.cs (99%) rename {SunSharp => src/SunSharp}/Synthesizer.cs (99%) rename {SunSharp => src/SunSharp}/Timeline.cs (99%) rename {SunSharp => src/SunSharp}/UtilityHelper.cs (100%) rename {SunSharp => src/SunSharp}/VirtualPattern.cs (67%) rename {SunSharp => src/SunSharp}/license.txt (100%) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..b2932d1 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,74 @@ +name: Documentation + +on: + workflow_dispatch: {} + push: + branches: ["main"] + paths: + - 'docs/**' + - 'SunSharp/**' + - 'SunSharp.Redistribution/**' + - '.github/workflows/docs.yml' + + pull_request: + branches: ["main"] + paths: + - 'docs/**' + - 'SunSharp/**' + - 'SunSharp.Redistribution/**' + - '.github/workflows/docs.yml' + +permissions: + contents: read + pages: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '10.0.x' + + - name: Install DocFX + run: dotnet tool install -g docfx + + - name: Generate API metadata + run: docfx metadata docs/docfx.json + + - name: Build documentation + run: docfx build docs/docfx.json + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: docs-site + path: docs/out/site + retention-days: 1 + + - name: Upload Pages artifact + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: actions/upload-pages-artifact@v3 + with: + path: docs/out/site + retention-days: 1 + + deploy: + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/Examples/AssemblyInfo.cs b/Examples/AssemblyInfo.cs deleted file mode 100644 index 94cc67a..0000000 --- a/Examples/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -[assembly: ExcludeFromCodeCoverage(Justification = "This is a project with example code.")] diff --git a/Examples/Examples.csproj b/Examples/Examples.csproj deleted file mode 100644 index c6efe06..0000000 --- a/Examples/Examples.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - net10.0 - enable - 9999 - Nullable - Debug;Release;Generation - - - - - - - - diff --git a/Examples/Program.cs b/Examples/Program.cs deleted file mode 100644 index 017e23d..0000000 --- a/Examples/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -#if RELEASE - -using System; -using System.Threading; -using SunSharp; -using SunSharp.Modules; -using SunSharp.Redistribution; - -namespace Examples; - -internal sealed class Program -{ - private static void Main() - { - var libraryInstance = LibraryLoader.Load(); - using var sunVox = new SunVox(libraryInstance, noDebugOutput: false); - - if (!sunVox.Slots.TryOpenNewSlot(out var slot)) - { - Console.WriteLine("Failed to open a new slot."); - return; - } - - AnalogGeneratorModuleHandle generator; - using (var slotLock = slot.AcquireLock()) - { - generator = slot.Synthesizer - .CreateModule(SynthModuleType.AnalogGenerator, "My Generator Module") - .AsAnalogGenerator(); - - if (!slot.Synthesizer.TryGetModule(0, out var outputModule)) - { - Console.WriteLine("Failed to get the output module."); - return; - } - - slot.Synthesizer.ConnectModule(generator.ModuleHandle, outputModule.Value); - } - - slot.VirtualPattern.SendEvent(0, generator.MakeNoteEvent(Note.A(4))); - - Thread.Sleep(TimeSpan.FromSeconds(1)); - - slot.VirtualPattern.SendEvent(0, PatternEvent.NoteEvent(Note.Off, generator.ModuleHandle.Id)); - } -} - -#else - -namespace Examples; - -internal sealed class Program -{ - private static void Main() - { - } -} -#endif diff --git a/README.md b/README.md index 574d686..914b323 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,98 @@ # SunSharp -*[SunVox](https://warmplace.ru/soft/sunvox/)* is a small, fast and powerful modular synthesizer with pattern-based sequencer (tracker). *SunVox Library* is the main part of the *SunVox* engine without a graphical interface. -*SunSharp* is a wrapper and helper library for *SunVox Library*, written in C#. The library contains a thin wrapper, allowing for comfortably making calls with C#-style methods and objects, as well as an intuitive object-oriented wrapper, managing a few more things for the user. Additionally, additional abstractions and mechanisms are provided to help implement dynamic music in games and other software. +SunSharp is a C# wrapper and helper library for the [SunVox Library](https://warmplace.ru/soft/sunvox/) - a small, fast and powerful modular synthesizer with a pattern-based sequencer (tracker). + +The objective of this project is to provide easy-to-use and discoverable C# bindings for the SunVox Library. The purpose is to enable developers to use SunVox as a sound engine and/or a dynamic music subsystem in their C# applications, including games. + +SunVox is created and maintained by [Alexander Zolotov](https://warmplace.ru/). + +Table of Contents + +- [SunSharp](#sunsharp) + - [State of the project](#state-of-the-project) + - [Where to start](#where-to-start) + - [How To Use](#how-to-use) + - [Contributing](#contributing) + - [Questions \& Answers](#questions--answers) + +## State of the project + +While the project is currently in active development, the latest (dev) NuGet packages should be reasonably stable and usable in a project. + +The targeted SunVox version is 2.1.4. + +The following features are planned or in progress: + +- complete test coverage; +- separate build of the SunVox library; + - own extensions to the SunVox library: + - separate audio I/O per slot; + - conditional effect execution; + - callback effects; + - log callback function instead of STDOUT logging; + - 3D positioning/panning module; +- updated Unity package; +- Godot package; +- more examples and documentation; +- hosting the library in a separate process to avoid crashes; +- WASM support (SunVox has support for this, but it needs to be integrated into the wrapper) + +Any contributions are welcome! + +## Where to start + +For API reference and documentation, please visit the [GitHub Pages site](https://sotakebk.github.io/SunSharp/). +Information about the underlying SunVox Library can be found on the [official SunVox website](https://warmplace.ru/soft/sunvox/sunvox_lib.php). -Target SunVox version: 2.1b. -## How to install Two packages are available on NuGet: -* [SunSharp](https://www.nuget.org/packages/Sotakebk.SunSharp/) ![Nuget](https://img.shields.io/nuget/v/Sotakebk.SunSharp) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp) -* [SunSharp.Redistribution](https://www.nuget.org/packages/Sotakebk.SunSharp.Redistribution/) ![Nuget](https://img.shields.io/nuget/v/Sotakebk.SunSharp.Redistribution) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp.Redistribution) -To use the wrapper, install the *SunSharp* package. -To get automatically managed binaries, install the *SunSharp.Redistribution* package. Alternatively, you may load the library and provide necessary function delegates yourself (see: *SunSharp.LibraryLoading::ProxyClass* and *SunSharp.Redistribution::LibraryLoader*). +- [SunSharp](https://www.nuget.org/packages/Sotakebk.SunSharp/) ![Nuget](https://img.shields.io/nuget/vpre/Sotakebk.SunSharp) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp) +- [SunSharp.Redistribution](https://www.nuget.org/packages/Sotakebk.SunSharp.Redistribution/) ![Nuget](https://img.shields.io/nuget/vpre/Sotakebk.SunSharp.Redistribution) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp.Redistribution) -Platforms supported by the binaries in *SunSharp.Redistribution* are: -* Windows x86, x86_64; -* Linux x86, x86_64, arm64; -* macOS x86_64, arm64. +For future development, please consider using the `2.0.0-dev` pre-release versions of the packages, as they contain major improvements, new features, and bug fixes. -There is also a [Unity package](https://github.com/Sotakebk/SunSharpUnity). +The `SunSharp` package contains the C# wrapper code only, while the `SunSharp.Redistribution` package contains pre-built SunVox library binaries for multiple platforms and a loader for them. Depending on your use case, you may choose to use only the `SunSharp` package and provide your own SunVox library binaries. If you are working with a game engine, you may need to bind the library manually. -## How to start -### Object wrapper -After obtaining an instance of *ISunVoxLib* representing the loaded library, you may create an 'instance' of the engine. All library functions are grouped into objects that make sense together. +Depending on the engine, a dedicated package may be available: -Here's an example that plays a song, then waits until it's finished: -```csharp -using SunSharp.ObjectWrapper; -/* ... */ -var sv = new SunVox(lib)) -var slot = sv.Slots[0]; -slot.Open(); -slot.Load("song.sunvox"); -slot.SetAutostop(true); -slot.Rewind(0); -slot.Play(); -int line = 0; -while (line != slot.GetSongLengthInLines() - 1 || slot.IsPlaying()) - line = slot.GetCurrentLine(); - -WriteLine("Song finished"); -slot.Close(); -sv.Dispose(); -``` -### Thin wrapper -If you wish to use the functions as provided, you may use the thin wrapper. All the calls are directly available from the *ISunVoxLib* interface, though using extensions provided in *SunSharp.ThinWrapper* namespace is advisable. The extension methods handle marshalling and other annoying boilerplate for you; the names are very similar to those in official documentation, and their usage should be very intuitive. +- Unity: [SunSharpUnity](https://github.com/Sotakebk/SunSharpUnity); +- Godot: (in progress) -Remember, you will have to deal with locking/unlocking yourself! +### How To Use + +Quick start example: -Here's an example, equivalent to object wrapper code: ```csharp -using SunSharp.ThinWrapper; -/* ... */ -lib.Init(sampleRate: -1); -lib.OpenSlot(0); -lib.Load(0, "song.sunvox"); -lib.SetAutostop(0, autostop: true); -lib.Rewind(0, line: 0); -lib.Play(0); -int line = 0; -while (line != lib.GetSongLengthInLines(0) - 1 || lib.IsPlaying(0)) - line = lib.GetCurrentLine(0); - -lib.CloseSlot(0); -lib.Deinit(); +// TODO ``` -### More examples -More examples available in the [Examples](/Examples) folder. -## Bug reporting -Please use the issues page of this repository. If the problem is with the underlying library, I will pass the necessary information to the SunVox forums myself. +There is code available in the [examples](/examples) folder of the repository that contains source code for simple console applications demonstrating the usage of the wrapper. + +## Contributing + +Any contributions are welcome! Feel free to open issues or pull requests on GitHub. + +Additional information on contributing can be found on the project [GitHub Pages site](https://sotakebk.github.io/SunSharp/). ## Questions & Answers -##### Can I use multiple SunVox instances? + +**Can I use multiple SunVox instances?** + Due to engine limitations, only one instance can be used per loaded library. Since it is possible to load multiple libraries, or versions of the same library into your process, it should be possible. -##### Will it work on Android/iOS/whatever? -Maybe? My code is basically a wrapper, so it should be platform invariant. If the platform in question is supported by the SunVox Library, and there is a binary provided, you should be able to load it yourself. -##### Is the library safe? -If you want to, you can shoot yourself in the foot, although there should be warning signs along the way. The code should be transparent enough that any unexpected behaviour should originate from SunVox itself. No promises are made, but if you don't mix thin and object wrapper code, it should be fine. + +**Will it work on Android/iOS/whatever?** + +It is currently not tested on mobile platforms, but in theory, it should be possible to use the SunVox library binaries for those platforms, load them and bind them with the wrapper. + +**Is the library safe?** + +The wrapper code should be safe. The underlying SunVox library may not be. There are known issues with memory corruption and crashes in some scenarios, but they only happen in edge cases. If you are using the library in a safe manner (e.g., not calling functions from multiple threads simultaneously), and ensure proper usage (e.g., by checking if the underlying module is of the expected type), it should be fine. + +If you encounter any issues, please report them. + +**Can I use this in my commercial project?** + +Yes, you can. + +- The wrapper is licensed under the MIT license. +- The SunVox library is distributed under the MIT license, and requires attribution and a note that it is based on SunVox. Please refer to the [author's website](https://warmplace.ru) for more details. diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000..1fcb152 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +out diff --git a/docs/articles/contributing.md b/docs/articles/contributing.md new file mode 100644 index 0000000..39b7625 --- /dev/null +++ b/docs/articles/contributing.md @@ -0,0 +1 @@ +# Getting Started with SunSharp diff --git a/docs/articles/getting-started.md b/docs/articles/getting-started.md new file mode 100644 index 0000000..39b7625 --- /dev/null +++ b/docs/articles/getting-started.md @@ -0,0 +1 @@ +# Getting Started with SunSharp diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml new file mode 100644 index 0000000..ae140f8 --- /dev/null +++ b/docs/articles/toc.yml @@ -0,0 +1,4 @@ +- name: Getting Started + href: getting-started.md +- name: Contributing + href: contributing.md diff --git a/docs/docfx.json b/docs/docfx.json new file mode 100644 index 0000000..cb2c6fd --- /dev/null +++ b/docs/docfx.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", + "metadata": [ + { + "src": [ + { + "src": "../src", + "files": [ + "SunSharp/SunSharp.csproj", + "SunSharp.Redistribution/SunSharp.Redistribution.csproj" + ] + } + ], + "output": "out/api", + "filter": "filterConfig.yml" + } + ], + "build": { + "content": [ + { + "files": [ + "**/*.{md,yml}" + ], + "exclude": [ + "_site/**", + "obj/**" + ] + } + ], + "resource": [ + { + "files": [ + "images/**" + ] + } + ], + "output": "out/site", + "template": [ + "default", + "modern" + ], + "globalMetadata": { + "_appName": "SunSharp", + "_appTitle": "SunSharp Documentation", + "_appFooter": "SunSharp is licensed under the MIT License.", + "_enableSearch": true, + "_enableNewTab": true, + "pdf": false + }, + "fileMetadata": { + "_appLogoPath": { + "**/*": "images/logo.png" + } + }, + "markdownEngineProperties": { + "markdigExtensions": [ + "attributes", + "customcontainers" + ] + } + } +} diff --git a/docs/filterConfig.yml b/docs/filterConfig.yml new file mode 100644 index 0000000..c0fab73 --- /dev/null +++ b/docs/filterConfig.yml @@ -0,0 +1,9 @@ +### YamlMime:ManagedReference +apiRules: +- exclude: + uidRegex: ^System\. + type: Type +- exclude: + hasAttribute: + uid: System.Runtime.CompilerServices.CompilerGeneratedAttribute + type: Type diff --git a/docs/images/logo.png b/docs/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae9a8fcad43224a75f61c8b38bfa687234f685a GIT binary patch literal 2415 zcmV-#36S=QP)0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tk-tmBKpe$i(@I4u4rUN>$WS|35EXHhDi*;)X)CnqU~=g%XktiG zTpR`0f`dO6s}3&Cx;nTDg5VDj{{V4PbdeIjmlRsWcyQc@clRE5?*O4$W11Bj2Q=L_ zGs%RMFRV!6R|p6}L<|v`Swy;<}!1{BC%BNVx@~&#ngzWh@+~eQ@)V* zSmnIMS*z7q`=0!Tk)pnw=bb>jVfs16O*-ztIF{K1pwM zwCE8qunk;XcQj=WxZDATo($QPT`5RYD3yTsGy0|iFn9~}t$Mw+_i_3FCbjm>00009a7bBm001r{001r{0eGc9b^rhX2XskI zMF;8v1QaGZkW>dr0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbU zSxH1eRA}DqT3<|3?;Ae?9wZ>e;}9F^L|tntre=~!wwkM4tIZqdyveQFGHV&R+Pr9O z-mp2CYut3vgfU>F`AK6L0%d=s6WofeBFnjOgufVsK3 z_V)H9-Sq0!t1JPa{P~QZo}O-LY0+pj$#dz6nw*vtF&KfYA%`%y6YHI4&uU{|> zN25`v(`mI@$vQ(rL+8(*CwmV;P-$uDfddEdvejyhG071CkH@1>DCBZ^5}g}2Zrr(Z zr=+ALrXE2Mfj~ff+H5xRQEju?0)aq5K|yJ0DS{v|;4=x}+qZ8?6dpWyaOKJsKA#`| z6AZ&#E|>V+*x2y<{bsZI-Me=mK77FEB$LVH@pwX^u(h?dv9U3}7yfh?a=YE5qoXk< zB_$)`PJI6SIk_Q*Vg3F6 z=}(6zPo8A)99Uah8y+4ew|DX4#pF>M06?u)r}R57FAs*{wzf8d!H|`602e-=KR7rT z4u@qj8D6upvZB}PlZ5*)3?Dy!{Qdj)4<9~USy>5%LM#^R>({T5NCa2t@9!6j#amlj z3vp@x#>PY<5pk{&^6c5OT!a#KyM1C} zBH;#-PK2|tu<-x7&tx)X7XSc2tJMw+48*rxS68P{D3WiZxXjGV#G7Bge*MdrFWC*| z002s*GQRER=4Po>ilS&b-s77o5wvo-+?zLVraVA01HfoBip65G>qm|pk;~4?*}r>E!Y)vJdOAO6>I3j{$_DwRf~-A8N{6&11B>|Msp(dl#sgMpXV*Vl=JX4e2HFE1zJ z2!dK#S|%nYk|a~(7Uc-B$8@cDc`pARorR8%CSUWhkUnWeOnCG{SUXL)(qVzI2RuLpxc7K@di zpHHXL$>Ah^4Q#Pk2rCYU!(=iO-e2H_-@kw70)WTkdGqE?Utb@&5(mI$vx|$1sZ=V3 zLSeJn91bT2Ks--Dr_jnKgT~WUAnYy z-@diAHKWm(WH1c|Lz?$xc`2V=5qHS$$#AjJq zSyffl!Gi|{0s)uHEh;L?&(A0F(rvxe%n<+xf>u{oH5!fE?M4uU$Kw?i7XINom0SbZ h%Ln!V>;cG%`~!_W?8l3c+IRo}002ovPDHLkV1k>Cd&~d; literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..2eb6e49 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,11 @@ +--- +_layout: landing +--- + +# SunSharp Documentation + +## Quick Links + +- [Getting Started](articles/getting-started.md) - Get up and running with SunSharp +- [Contributing](articles/contributing.md) - Learn how to contribute to the project +- [API Reference](xref:SunSharp) - Complete API documentation diff --git a/docs/toc.yml b/docs/toc.yml new file mode 100644 index 0000000..aa6c95f --- /dev/null +++ b/docs/toc.yml @@ -0,0 +1,6 @@ +- name: Home + href: index.md +- name: Articles + href: articles/ +- name: API Reference + href: out/api/ diff --git a/scripts/generate-docs.sh b/scripts/generate-docs.sh new file mode 100644 index 0000000..8154578 --- /dev/null +++ b/scripts/generate-docs.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DOCFX_CMD="docfx" + +get_project_dir() { + local dir="$SCRIPT_DIR" + while [ ! -d "$dir/.git" ] && [ "$dir" != "/" ]; do + dir="$(dirname "$dir")" + done + if [ "$dir" == "/" ]; then + echo "Error: Could not find the root directory of the repository." >&2 + exit 1 + fi + echo "$dir" +} + +PROJECT_DIR="$(get_project_dir)" + +check_dotnet() { + if ! command -v dotnet &> /dev/null; then + echo ".NET SDK is not installed." >&2 + exit 1 + fi + + DOTNET_VERSION="$(dotnet --version)" + echo "Using .NET SDK version $DOTNET_VERSION" +} + +install_docfx() { + if dotnet tool list -g | grep -q "docfx"; then + : + else + echo "Installing DocFX" + dotnet tool install -g docfx + fi + + VERSION="$($DOCFX_CMD --version)" + + echo "Using DocFX $VERSION" +} + +clean() { + echo "Cleaning generated documentation files" + rm -rf "$PROJECT_DIR/docs/out" +} + +serve() { + echo "Serving documentation with hot-reload" + echo "Press Ctrl+C to stop" + $DOCFX_CMD "$PROJECT_DIR/docs/docfx.json" --serve +} + +main() { + check_dotnet + install_docfx + clean + serve +} + +main "$@" diff --git a/.gitignore b/src/.gitignore similarity index 100% rename from .gitignore rename to src/.gitignore diff --git a/CodeGeneration.Tests/AssemblyInfo.cs b/src/CodeGeneration.Tests/AssemblyInfo.cs similarity index 100% rename from CodeGeneration.Tests/AssemblyInfo.cs rename to src/CodeGeneration.Tests/AssemblyInfo.cs diff --git a/CodeGeneration.Tests/CodeGeneration.Tests.csproj b/src/CodeGeneration.Tests/CodeGeneration.Tests.csproj similarity index 83% rename from CodeGeneration.Tests/CodeGeneration.Tests.csproj rename to src/CodeGeneration.Tests/CodeGeneration.Tests.csproj index b88abca..6b28f9a 100644 --- a/CodeGeneration.Tests/CodeGeneration.Tests.csproj +++ b/src/CodeGeneration.Tests/CodeGeneration.Tests.csproj @@ -34,5 +34,13 @@ + + + SUNSHARP_GENERATION + + + + SUNSHARP_RELEASE + \ No newline at end of file diff --git a/CodeGeneration.Tests/GeneratorTests.cs b/src/CodeGeneration.Tests/GeneratorTests.cs similarity index 100% rename from CodeGeneration.Tests/GeneratorTests.cs rename to src/CodeGeneration.Tests/GeneratorTests.cs diff --git a/CodeGeneration.Tests/GlobalUsings.cs b/src/CodeGeneration.Tests/GlobalUsings.cs similarity index 100% rename from CodeGeneration.Tests/GlobalUsings.cs rename to src/CodeGeneration.Tests/GlobalUsings.cs diff --git a/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs b/src/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs similarity index 100% rename from CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs rename to src/CodeGeneration.Tests/Logic/KnownModuleTypesTests.cs diff --git a/CodeGeneration.Tests/Logic/ModuleDataTests.cs b/src/CodeGeneration.Tests/Logic/ModuleDataTests.cs similarity index 100% rename from CodeGeneration.Tests/Logic/ModuleDataTests.cs rename to src/CodeGeneration.Tests/Logic/ModuleDataTests.cs diff --git a/CodeGeneration/AssemblyInfo.cs b/src/CodeGeneration/AssemblyInfo.cs similarity index 100% rename from CodeGeneration/AssemblyInfo.cs rename to src/CodeGeneration/AssemblyInfo.cs diff --git a/CodeGeneration/CodeGeneration.csproj b/src/CodeGeneration/CodeGeneration.csproj similarity index 68% rename from CodeGeneration/CodeGeneration.csproj rename to src/CodeGeneration/CodeGeneration.csproj index e9b0309..5e7ec00 100644 --- a/CodeGeneration/CodeGeneration.csproj +++ b/src/CodeGeneration/CodeGeneration.csproj @@ -19,4 +19,12 @@ + + SUNSHARP_GENERATION + + + + SUNSHARP_RELEASE + + \ No newline at end of file diff --git a/CodeGeneration/GeneratorDiscovery.cs b/src/CodeGeneration/GeneratorDiscovery.cs similarity index 100% rename from CodeGeneration/GeneratorDiscovery.cs rename to src/CodeGeneration/GeneratorDiscovery.cs diff --git a/CodeGeneration/GeneratorResult.cs b/src/CodeGeneration/GeneratorResult.cs similarity index 100% rename from CodeGeneration/GeneratorResult.cs rename to src/CodeGeneration/GeneratorResult.cs diff --git a/CodeGeneration/Generators/BaseGenerator.cs b/src/CodeGeneration/Generators/BaseGenerator.cs similarity index 100% rename from CodeGeneration/Generators/BaseGenerator.cs rename to src/CodeGeneration/Generators/BaseGenerator.cs diff --git a/CodeGeneration/Generators/GeneratorProvider.cs b/src/CodeGeneration/Generators/GeneratorProvider.cs similarity index 100% rename from CodeGeneration/Generators/GeneratorProvider.cs rename to src/CodeGeneration/Generators/GeneratorProvider.cs diff --git a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs b/src/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs similarity index 96% rename from CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs rename to src/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs index 5d885a8..3addd8d 100644 --- a/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs +++ b/src/CodeGeneration/Generators/ModuleHandles/BasicModuleGenerator.cs @@ -31,7 +31,7 @@ protected override string GenerateBody() var moduleData = ModuleDataLoader.LoadFromFile(PathHelper.GetProjectFilePath("CodeGeneration/Logic/ModuleData.g.json")); CodeGenerationHelper.AppendHeader(Context); - AppendLine("#if !GENERATION"); + AppendLine("#if !SUNSHARP_GENERATION"); AppendLine(); AppendLine("using System;"); AppendLine(); @@ -96,28 +96,25 @@ protected virtual void GenerateInterfaceCurveWrite(int i, CurveDescription c) protected virtual void GenerateInterfaceCurveXmlDoc(int i, CurveDescription c, bool write) { AppendLine("/// "); + AppendLine("/// "); if (c.Description != null) { - var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None); - for (int l = 0; l < descriptionLines.Length; l++) - { - var line = descriptionLines[l]; - AppendLine($"/// {line}"); - if (l == descriptionLines.Length - 1) - { - AppendLine("///
    "); - } - } + var descriptionLines = c.Description.Split(["\r\n", "\r", "\n"], StringSplitOptions.None) + .Where(l => !string.IsNullOrWhiteSpace(l)); + AppendLine($"/// {string.Join("
    ", descriptionLines)}"); } + AppendLine("///
    "); + AppendLine("/// "); if (write) { - AppendLine($"///
    Write to curve {i} of {FriendlyName}."); + AppendLine($"/// Write to curve {i} of {FriendlyName}."); } else { - AppendLine($"///
    Read from curve {i} of {FriendlyName}."); + AppendLine($"/// Read from curve {i} of {FriendlyName}."); } - AppendLine($"///
    The curve contains {c.Size} values in range of {c.MinValue} to {c.MaxValue}."); + AppendLine("///
    "); + AppendLine($"/// The curve contains {c.Size} values in range of {c.MinValue} to {c.MaxValue}."); AppendLine("///
    "); } @@ -159,7 +156,7 @@ private void GenerateMakeEventXmlDoc(int i, ControllerDescription c) AppendLine($"/// {line}"); if (l == descriptionLines.Length - 1) { - AppendLine("///
    "); + AppendLine("///
    "); } } } @@ -213,7 +210,7 @@ protected virtual void GenerateGetterSetterXmlDoc(int i, ControllerDescription c AppendLine($"/// {line}"); if (l == descriptionLines.Length - 1) { - AppendLine("///
    "); + AppendLine("///
    "); } } } @@ -415,10 +412,10 @@ protected virtual void GenerateStructCurveWritesReads() foreach (var (i, c) in ModuleDescription.Curves) { AppendLine(); - AppendLine($"/// "); AppendLine($"public int ReadCurve{c.FriendlyName}(float[] buffer) => ModuleHandle.ReadCurve({i}, buffer);"); AppendLine(); - AppendLine($"/// "); AppendLine($"public int WriteCurve{c.FriendlyName}(float[] buffer) => ModuleHandle.WriteCurve({i}, buffer);"); } } diff --git a/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs b/src/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs similarity index 98% rename from CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs rename to src/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs index 366b80e..19a6958 100644 --- a/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs +++ b/src/CodeGeneration/Generators/ModuleHandles/FmxModuleGenerator.cs @@ -121,13 +121,13 @@ private void GenerateGroupedXmlDoc(int firstIndex, string name, ControllerDescri AppendLine($"/// {line}"); if (l == descriptionLines.Length - 1) { - AppendLine("///
    "); + AppendLine("///
    "); } } - AppendLine("///
    "); + AppendLine("///
    "); } AppendLine($"/// This method accesses one of 5 grouped controllers starting at controller {firstIndex}."); - AppendLine("///
    "); + AppendLine("///
    "); if (c.ControllerType == ControllerType.Normal) { AppendLine($"/// Value range: displayed: {c.MinDisplayedValue} to {c.MaxDisplayedValue}, real: {c.MinValue} to {c.MaxValue}"); diff --git a/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs b/src/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs similarity index 100% rename from CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs rename to src/CodeGeneration/Generators/ModuleHandles/MetaModuleGenerator.cs diff --git a/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs b/src/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs similarity index 100% rename from CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs rename to src/CodeGeneration/Generators/ModuleHandles/PerTypeModuleHandleGeneratorProvider.cs diff --git a/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs b/src/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs similarity index 98% rename from CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs rename to src/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs index 0b66168..f93a6ac 100644 --- a/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs +++ b/src/CodeGeneration/Generators/ModuleHandles/SynthModuleHandleGenerator.cs @@ -17,7 +17,7 @@ public static BaseGenerator[] GetGenerators() protected override string GenerateBody() { CodeGenerationHelper.AppendHeader(Context); - AppendLine("#if !GENERATION"); + AppendLine("#if !SUNSHARP_GENERATION"); AppendLine("using SunSharp.Modules;"); AppendLine(); AppendLine("namespace SunSharp"); diff --git a/CodeGeneration/Generators/NativeProxyGenerator.cs b/src/CodeGeneration/Generators/NativeProxyGenerator.cs similarity index 100% rename from CodeGeneration/Generators/NativeProxyGenerator.cs rename to src/CodeGeneration/Generators/NativeProxyGenerator.cs diff --git a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs similarity index 99% rename from CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs rename to src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs index 6617f72..d03139c 100644 --- a/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs +++ b/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -52,7 +52,7 @@ private static KnownModuleData ReadModuleDataFromSunVox() var instance = LibraryLoader.Load(); loaded = true; var thinWrapper = new SunVoxLib(instance); -#if RELEASE +#if SUNSHARP_RELEASE using var sunVox = new SunVox(instance, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); #else using var sunVox = new SunVox(thinWrapper, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); diff --git a/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs b/src/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs similarity index 100% rename from CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs rename to src/CodeGeneration/Generators/OwnData/ModuleDataSchemaGenerator.cs diff --git a/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs b/src/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs similarity index 100% rename from CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs rename to src/CodeGeneration/Generators/SunVoxHeaderInterfaceGenerator.cs diff --git a/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs b/src/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs similarity index 100% rename from CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs rename to src/CodeGeneration/Generators/SunVoxLibWithLoggerGenerator.cs diff --git a/CodeGeneration/Generators/SynthModuleTypeGenerator.cs b/src/CodeGeneration/Generators/SynthModuleTypeGenerator.cs similarity index 98% rename from CodeGeneration/Generators/SynthModuleTypeGenerator.cs rename to src/CodeGeneration/Generators/SynthModuleTypeGenerator.cs index f02ec8e..c57eaa3 100644 --- a/CodeGeneration/Generators/SynthModuleTypeGenerator.cs +++ b/src/CodeGeneration/Generators/SynthModuleTypeGenerator.cs @@ -16,7 +16,7 @@ public static BaseGenerator[] GetGenerators() protected override string GenerateBody() { CodeGenerationHelper.AppendHeader(Context); - AppendLine("#if !GENERATION"); + AppendLine("#if !SUNSHARP_GENERATION"); AppendLine("namespace SunSharp"); AppendLine("{"); AddIndent(() => diff --git a/CodeGeneration/Logic/CodeGenerationContext.cs b/src/CodeGeneration/Logic/CodeGenerationContext.cs similarity index 100% rename from CodeGeneration/Logic/CodeGenerationContext.cs rename to src/CodeGeneration/Logic/CodeGenerationContext.cs diff --git a/CodeGeneration/Logic/CodeGenerationHelper.cs b/src/CodeGeneration/Logic/CodeGenerationHelper.cs similarity index 100% rename from CodeGeneration/Logic/CodeGenerationHelper.cs rename to src/CodeGeneration/Logic/CodeGenerationHelper.cs diff --git a/CodeGeneration/Logic/KnownModuleData.cs b/src/CodeGeneration/Logic/KnownModuleData.cs similarity index 100% rename from CodeGeneration/Logic/KnownModuleData.cs rename to src/CodeGeneration/Logic/KnownModuleData.cs diff --git a/CodeGeneration/Logic/KnownModuleTypes.cs b/src/CodeGeneration/Logic/KnownModuleTypes.cs similarity index 100% rename from CodeGeneration/Logic/KnownModuleTypes.cs rename to src/CodeGeneration/Logic/KnownModuleTypes.cs diff --git a/CodeGeneration/Logic/ModuleData.g.json b/src/CodeGeneration/Logic/ModuleData.g.json similarity index 100% rename from CodeGeneration/Logic/ModuleData.g.json rename to src/CodeGeneration/Logic/ModuleData.g.json diff --git a/CodeGeneration/Logic/ModuleData.g.schema.json b/src/CodeGeneration/Logic/ModuleData.g.schema.json similarity index 100% rename from CodeGeneration/Logic/ModuleData.g.schema.json rename to src/CodeGeneration/Logic/ModuleData.g.schema.json diff --git a/CodeGeneration/Logic/ModuleDataLoader.cs b/src/CodeGeneration/Logic/ModuleDataLoader.cs similarity index 100% rename from CodeGeneration/Logic/ModuleDataLoader.cs rename to src/CodeGeneration/Logic/ModuleDataLoader.cs diff --git a/CodeGeneration/Logic/SunVoxHeaderParser.cs b/src/CodeGeneration/Logic/SunVoxHeaderParser.cs similarity index 100% rename from CodeGeneration/Logic/SunVoxHeaderParser.cs rename to src/CodeGeneration/Logic/SunVoxHeaderParser.cs diff --git a/CodeGeneration/PathHelper.cs b/src/CodeGeneration/PathHelper.cs similarity index 97% rename from CodeGeneration/PathHelper.cs rename to src/CodeGeneration/PathHelper.cs index 7c43ab9..293ec66 100644 --- a/CodeGeneration/PathHelper.cs +++ b/src/CodeGeneration/PathHelper.cs @@ -10,7 +10,6 @@ public static string GetProjectFilePath(string pathFromRoot, [CallerFilePath] st { "CodeGeneration", "CodeGeneration.Tests", - "Examples", "SunSharp", "SunSharp.IntegrationTests", "SunSharp.Redistribution", diff --git a/CodeGeneration/Program.cs b/src/CodeGeneration/Program.cs similarity index 100% rename from CodeGeneration/Program.cs rename to src/CodeGeneration/Program.cs diff --git a/SunSharp.IntegrationTests/AssemblyInfo.cs b/src/SunSharp.IntegrationTests/AssemblyInfo.cs similarity index 100% rename from SunSharp.IntegrationTests/AssemblyInfo.cs rename to src/SunSharp.IntegrationTests/AssemblyInfo.cs diff --git a/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs b/src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs similarity index 100% rename from SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs rename to src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs diff --git a/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs b/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs similarity index 97% rename from SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs rename to src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs index 70d95bc..55c1a50 100644 --- a/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs +++ b/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs @@ -1,3 +1,5 @@ +#if !SUNSHARP_GENERATION + using System.Collections.Generic; using System.Linq; @@ -5,15 +7,13 @@ namespace SunSharp.IntegrationTests.AudioTests; internal class SimpleAudioTest : BaseAudioTest { -#if !GENERATION - [Test] public void SimpleArpeggio() { const string hash = "FLBVvS3nffTDsajOlBeceZsIero8UpCd4RFwyXhJBVM="; const int sampleRate = 44100; -#if RELEASE +#if SUNSHARP_RELEASE using var sunVox = new SunVox(_libc!, 44100, OutputType.Int16); #else using var sunVox = new SunVox(Lib, 44100, OutputType.Int16); @@ -69,6 +69,6 @@ public void SimpleArpeggio() slot.SaveToFile(GetTestAudioPath("SimpleAudioTest.sunvox")); TestResultantAudio(final, hash, "SimpleAudioTest.wav"); } +} #endif -} diff --git a/SunSharp.IntegrationTests/AudioTests/output/.gitignore b/src/SunSharp.IntegrationTests/AudioTests/output/.gitignore similarity index 100% rename from SunSharp.IntegrationTests/AudioTests/output/.gitignore rename to src/SunSharp.IntegrationTests/AudioTests/output/.gitignore diff --git a/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt b/src/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt similarity index 100% rename from SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt rename to src/SunSharp.IntegrationTests/AudioTests/output/whatisthis.txt diff --git a/SunSharp.IntegrationTests/BaseIntegrationTest.cs b/src/SunSharp.IntegrationTests/BaseIntegrationTest.cs similarity index 100% rename from SunSharp.IntegrationTests/BaseIntegrationTest.cs rename to src/SunSharp.IntegrationTests/BaseIntegrationTest.cs diff --git a/SunSharp.IntegrationTests/GlobalUsings.cs b/src/SunSharp.IntegrationTests/GlobalUsings.cs similarity index 100% rename from SunSharp.IntegrationTests/GlobalUsings.cs rename to src/SunSharp.IntegrationTests/GlobalUsings.cs diff --git a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj b/src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj similarity index 84% rename from SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj rename to src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj index 5a20d0c..e939055 100644 --- a/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj +++ b/src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj @@ -40,4 +40,12 @@ + + SUNSHARP_GENERATION + + + + SUNSHARP_RELEASE + + \ No newline at end of file diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs b/src/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs similarity index 100% rename from SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs rename to src/SunSharp.IntegrationTests/SunVoxLibTests/NoteTests.cs diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs b/src/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs similarity index 100% rename from SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs rename to src/SunSharp.IntegrationTests/SunVoxLibTests/OtherTests.cs diff --git a/SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox b/src/SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox similarity index 100% rename from SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox rename to src/SunSharp.IntegrationTests/SunVoxLibTests/all_notes.sunvox diff --git a/SunSharp.Redistribution/LibraryLoader.cs b/src/SunSharp.Redistribution/LibraryLoader.cs similarity index 100% rename from SunSharp.Redistribution/LibraryLoader.cs rename to src/SunSharp.Redistribution/LibraryLoader.cs diff --git a/SunSharp.Redistribution/LibraryLoadingException.cs b/src/SunSharp.Redistribution/LibraryLoadingException.cs similarity index 100% rename from SunSharp.Redistribution/LibraryLoadingException.cs rename to src/SunSharp.Redistribution/LibraryLoadingException.cs diff --git a/SunSharp.Redistribution/README.md b/src/SunSharp.Redistribution/README.md similarity index 100% rename from SunSharp.Redistribution/README.md rename to src/SunSharp.Redistribution/README.md diff --git a/SunSharp.Redistribution/RELEASE-NOTES.txt b/src/SunSharp.Redistribution/RELEASE-NOTES.txt similarity index 100% rename from SunSharp.Redistribution/RELEASE-NOTES.txt rename to src/SunSharp.Redistribution/RELEASE-NOTES.txt diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj similarity index 91% rename from SunSharp.Redistribution/SunSharp.Redistribution.csproj rename to src/SunSharp.Redistribution/SunSharp.Redistribution.csproj index b3e04d9..cea6510 100644 --- a/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -64,4 +64,12 @@ + + SUNSHARP_GENERATION + + + + SUNSHARP_RELEASE + + diff --git a/SunSharp.Redistribution/SunSharp.Redistribution.nuspec b/src/SunSharp.Redistribution/SunSharp.Redistribution.nuspec similarity index 100% rename from SunSharp.Redistribution/SunSharp.Redistribution.nuspec rename to src/SunSharp.Redistribution/SunSharp.Redistribution.nuspec diff --git a/SunSharp.Redistribution/UnixLibraryHandler.cs b/src/SunSharp.Redistribution/UnixLibraryHandler.cs similarity index 100% rename from SunSharp.Redistribution/UnixLibraryHandler.cs rename to src/SunSharp.Redistribution/UnixLibraryHandler.cs diff --git a/SunSharp.Redistribution/WindowsLibraryHandler.cs b/src/SunSharp.Redistribution/WindowsLibraryHandler.cs similarity index 100% rename from SunSharp.Redistribution/WindowsLibraryHandler.cs rename to src/SunSharp.Redistribution/WindowsLibraryHandler.cs diff --git a/SunSharp.Redistribution/license.txt b/src/SunSharp.Redistribution/license.txt similarity index 100% rename from SunSharp.Redistribution/license.txt rename to src/SunSharp.Redistribution/license.txt diff --git a/SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so b/src/SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so rename to src/SunSharp.Redistribution/runtimes/linux-arm/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so b/src/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so rename to src/SunSharp.Redistribution/runtimes/linux-arm64/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/linux-x64/native/sunvox.so b/src/SunSharp.Redistribution/runtimes/linux-x64/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/runtimes/linux-x64/native/sunvox.so rename to src/SunSharp.Redistribution/runtimes/linux-x64/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so b/src/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so similarity index 100% rename from SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so rename to src/SunSharp.Redistribution/runtimes/linux-x86/native/sunvox.so diff --git a/SunSharp.Redistribution/runtimes/osx-arm64/native/sunvox.dylib b/src/SunSharp.Redistribution/runtimes/osx-arm64/native/sunvox.dylib similarity index 100% rename from SunSharp.Redistribution/runtimes/osx-arm64/native/sunvox.dylib rename to src/SunSharp.Redistribution/runtimes/osx-arm64/native/sunvox.dylib diff --git a/SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib b/src/SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib similarity index 100% rename from SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib rename to src/SunSharp.Redistribution/runtimes/osx-x64/native/sunvox.dylib diff --git a/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll b/src/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll similarity index 100% rename from SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll rename to src/SunSharp.Redistribution/runtimes/win-x64/native/sunvox.dll diff --git a/SunSharp.Redistribution/runtimes/win-x86/native/sunvox.dll b/src/SunSharp.Redistribution/runtimes/win-x86/native/sunvox.dll similarity index 100% rename from SunSharp.Redistribution/runtimes/win-x86/native/sunvox.dll rename to src/SunSharp.Redistribution/runtimes/win-x86/native/sunvox.dll diff --git a/SunSharp.Tests/AssemblyInfo.cs b/src/SunSharp.Tests/AssemblyInfo.cs similarity index 100% rename from SunSharp.Tests/AssemblyInfo.cs rename to src/SunSharp.Tests/AssemblyInfo.cs diff --git a/SunSharp.Tests/EffectExtensionsTests.cs b/src/SunSharp.Tests/EffectExtensionsTests.cs similarity index 100% rename from SunSharp.Tests/EffectExtensionsTests.cs rename to src/SunSharp.Tests/EffectExtensionsTests.cs diff --git a/SunSharp.Tests/FineTunePairTests.cs b/src/SunSharp.Tests/FineTunePairTests.cs similarity index 100% rename from SunSharp.Tests/FineTunePairTests.cs rename to src/SunSharp.Tests/FineTunePairTests.cs diff --git a/SunSharp.Tests/GlobalUsings.cs b/src/SunSharp.Tests/GlobalUsings.cs similarity index 100% rename from SunSharp.Tests/GlobalUsings.cs rename to src/SunSharp.Tests/GlobalUsings.cs diff --git a/SunSharp.Tests/MicrotonesTests.cs b/src/SunSharp.Tests/MicrotonesTests.cs similarity index 100% rename from SunSharp.Tests/MicrotonesTests.cs rename to src/SunSharp.Tests/MicrotonesTests.cs diff --git a/SunSharp.Tests/ModuleFlagsTests.cs b/src/SunSharp.Tests/ModuleFlagsTests.cs similarity index 100% rename from SunSharp.Tests/ModuleFlagsTests.cs rename to src/SunSharp.Tests/ModuleFlagsTests.cs diff --git a/SunSharp.Tests/Native/Loader/NativeProxyTests.cs b/src/SunSharp.Tests/Native/Loader/NativeProxyTests.cs similarity index 100% rename from SunSharp.Tests/Native/Loader/NativeProxyTests.cs rename to src/SunSharp.Tests/Native/Loader/NativeProxyTests.cs diff --git a/SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs b/src/SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs similarity index 100% rename from SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs rename to src/SunSharp.Tests/Native/SunVoxLibAudioCallbackTests.cs diff --git a/SunSharp.Tests/Native/SunVoxLibModulesTests.cs b/src/SunSharp.Tests/Native/SunVoxLibModulesTests.cs similarity index 100% rename from SunSharp.Tests/Native/SunVoxLibModulesTests.cs rename to src/SunSharp.Tests/Native/SunVoxLibModulesTests.cs diff --git a/SunSharp.Tests/Native/SunVoxLibPatternsTests.cs b/src/SunSharp.Tests/Native/SunVoxLibPatternsTests.cs similarity index 100% rename from SunSharp.Tests/Native/SunVoxLibPatternsTests.cs rename to src/SunSharp.Tests/Native/SunVoxLibPatternsTests.cs diff --git a/SunSharp.Tests/Native/SunVoxLibTests.cs b/src/SunSharp.Tests/Native/SunVoxLibTests.cs similarity index 100% rename from SunSharp.Tests/Native/SunVoxLibTests.cs rename to src/SunSharp.Tests/Native/SunVoxLibTests.cs diff --git a/SunSharp.Tests/NoteTests.cs b/src/SunSharp.Tests/NoteTests.cs similarity index 100% rename from SunSharp.Tests/NoteTests.cs rename to src/SunSharp.Tests/NoteTests.cs diff --git a/SunSharp.Tests/PatternEventTests.cs b/src/SunSharp.Tests/PatternEventTests.cs similarity index 100% rename from SunSharp.Tests/PatternEventTests.cs rename to src/SunSharp.Tests/PatternEventTests.cs diff --git a/SunSharp.Tests/SlotTests.cs b/src/SunSharp.Tests/SlotTests.cs similarity index 99% rename from SunSharp.Tests/SlotTests.cs rename to src/SunSharp.Tests/SlotTests.cs index f04104d..8a40b85 100644 --- a/SunSharp.Tests/SlotTests.cs +++ b/src/SunSharp.Tests/SlotTests.cs @@ -4,7 +4,7 @@ namespace SunSharp.Tests; public class SlotTests { -#if !RELEASE +#if !SUNSHARP_RELEASE private static (Slot slot, ISunVoxLib mockLib, ISunVox mockSunVox) CreateTestSlot(int slotId = 0) { diff --git a/SunSharp.Tests/SunSharp.Tests.csproj b/src/SunSharp.Tests/SunSharp.Tests.csproj similarity index 83% rename from SunSharp.Tests/SunSharp.Tests.csproj rename to src/SunSharp.Tests/SunSharp.Tests.csproj index 31af5ed..e68e7c7 100644 --- a/SunSharp.Tests/SunSharp.Tests.csproj +++ b/src/SunSharp.Tests/SunSharp.Tests.csproj @@ -35,4 +35,12 @@ + + SUNSHARP_GENERATION + + + + SUNSHARP_RELEASE + + \ No newline at end of file diff --git a/SunSharp.Tests/SunVoxExceptionTests.cs b/src/SunSharp.Tests/SunVoxExceptionTests.cs similarity index 100% rename from SunSharp.Tests/SunVoxExceptionTests.cs rename to src/SunSharp.Tests/SunVoxExceptionTests.cs diff --git a/SunSharp.Tests/SunVoxTests.cs b/src/SunSharp.Tests/SunVoxTests.cs similarity index 99% rename from SunSharp.Tests/SunVoxTests.cs rename to src/SunSharp.Tests/SunVoxTests.cs index 0e20a0f..fd97874 100644 --- a/SunSharp.Tests/SunVoxTests.cs +++ b/src/SunSharp.Tests/SunVoxTests.cs @@ -4,7 +4,7 @@ namespace SunSharp.Tests; public class SunVoxTests { -#if !RELEASE +#if !SUNSHARP_RELEASE [Test, AutoData] public void Constructor_WithOwnAudioStream_ShouldInitializeCorrectly(int sampleRate) diff --git a/SunSharp.Tests/SunVoxVersionTests.cs b/src/SunSharp.Tests/SunVoxVersionTests.cs similarity index 100% rename from SunSharp.Tests/SunVoxVersionTests.cs rename to src/SunSharp.Tests/SunVoxVersionTests.cs diff --git a/SunSharp.Tests/SynthesizerTests.cs b/src/SunSharp.Tests/SynthesizerTests.cs similarity index 99% rename from SunSharp.Tests/SynthesizerTests.cs rename to src/SunSharp.Tests/SynthesizerTests.cs index 75eb728..003c76f 100644 --- a/SunSharp.Tests/SynthesizerTests.cs +++ b/src/SunSharp.Tests/SynthesizerTests.cs @@ -1,10 +1,13 @@ +#if !SUNSHARP_RELEASE +#if !SUNSHARP_GENERATION + +using SunSharp.Native; +using System.Linq; + namespace SunSharp.Tests; public class SynthesizerTests { -#if !RELEASE -#if !GENERATION - private static (Synthesizer synthesizer, ISunVoxLib mockLib, Slot slot) CreateTestSynthesizer(int slotId = 0) { var mockLib = Substitute.For(); @@ -617,6 +620,7 @@ public void ISynthesizer_Slot_ShouldReturnSlot() } #endregion Interface Implementation +} + #endif #endif -} diff --git a/SunSharp.Tests/TimelineTests.cs b/src/SunSharp.Tests/TimelineTests.cs similarity index 99% rename from SunSharp.Tests/TimelineTests.cs rename to src/SunSharp.Tests/TimelineTests.cs index 442cd74..e926a0b 100644 --- a/SunSharp.Tests/TimelineTests.cs +++ b/src/SunSharp.Tests/TimelineTests.cs @@ -5,7 +5,7 @@ namespace SunSharp.Tests; public class TimelineTests { -#if !RELEASE +#if !SUNSHARP_RELEASE private static (Timeline timeline, ISunVoxLib mockLib, Slot slot) CreateTestTimeline(int slotId = 0) { diff --git a/SunSharp.Tests/UtilityHelperTests.cs b/src/SunSharp.Tests/UtilityHelperTests.cs similarity index 100% rename from SunSharp.Tests/UtilityHelperTests.cs rename to src/SunSharp.Tests/UtilityHelperTests.cs diff --git a/SunSharp.sln b/src/SunSharp.sln similarity index 87% rename from SunSharp.sln rename to src/SunSharp.sln index cbff481..d99ef64 100644 --- a/SunSharp.sln +++ b/src/SunSharp.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.1.11312.151 d18.0 +VisualStudioVersion = 18.1.11312.151 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp", "SunSharp\SunSharp.csproj", "{E493B5CE-53F6-48F1-948B-B4A37686126F}" EndProject @@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SunSharp.Tests", "SunSharp. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeGeneration.Tests", "CodeGeneration.Tests\CodeGeneration.Tests.csproj", "{141E1647-DA19-4B10-BED6-9CA8DA570D64}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{19B23551-D241-425A-B92B-385F5222FC77}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -60,12 +58,6 @@ Global {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Generation|Any CPU.Build.0 = Generation|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.ActiveCfg = Release|Any CPU {141E1647-DA19-4B10-BED6-9CA8DA570D64}.Release|Any CPU.Build.0 = Release|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Debug|Any CPU.Build.0 = Debug|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Generation|Any CPU.ActiveCfg = Generation|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Generation|Any CPU.Build.0 = Generation|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.ActiveCfg = Release|Any CPU - {19B23551-D241-425A-B92B-385F5222FC77}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SunSharp/Diagnostics/Logger.cs b/src/SunSharp/Diagnostics/Logger.cs similarity index 100% rename from SunSharp/Diagnostics/Logger.cs rename to src/SunSharp/Diagnostics/Logger.cs diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.cs b/src/SunSharp/Diagnostics/SunVoxLibWithLogger.cs similarity index 100% rename from SunSharp/Diagnostics/SunVoxLibWithLogger.cs rename to src/SunSharp/Diagnostics/SunVoxLibWithLogger.cs diff --git a/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs b/src/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs similarity index 100% rename from SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs rename to src/SunSharp/Diagnostics/SunVoxLibWithLogger.g.cs diff --git a/SunSharp/Effects.cs b/src/SunSharp/Effects.cs similarity index 100% rename from SunSharp/Effects.cs rename to src/SunSharp/Effects.cs diff --git a/SunSharp/Enums.cs b/src/SunSharp/Enums.cs similarity index 100% rename from SunSharp/Enums.cs rename to src/SunSharp/Enums.cs diff --git a/SunSharp/FineTunePair.cs b/src/SunSharp/FineTunePair.cs similarity index 100% rename from SunSharp/FineTunePair.cs rename to src/SunSharp/FineTunePair.cs diff --git a/SunSharp/Microtones.cs b/src/SunSharp/Microtones.cs similarity index 100% rename from SunSharp/Microtones.cs rename to src/SunSharp/Microtones.cs diff --git a/SunSharp/ModuleFlags.cs b/src/SunSharp/ModuleFlags.cs similarity index 100% rename from SunSharp/ModuleFlags.cs rename to src/SunSharp/ModuleFlags.cs diff --git a/SunSharp/Modules/ControllerSpecificEnums.cs b/src/SunSharp/Modules/ControllerSpecificEnums.cs similarity index 98% rename from SunSharp/Modules/ControllerSpecificEnums.cs rename to src/SunSharp/Modules/ControllerSpecificEnums.cs index 9dfcf93..f572cc5 100644 --- a/SunSharp/Modules/ControllerSpecificEnums.cs +++ b/src/SunSharp/Modules/ControllerSpecificEnums.cs @@ -742,13 +742,17 @@ public enum ModulationType { Amplitude = 0, - /// Default signal delay (when modulating inputs are silent) = 20ms; delay range: - /// 40ms (mod.amp >= 1) ... 20ms (mod.amp = 0) ... 0ms (mod.amp <= -1). + /// + /// Default signal delay (when modulating inputs are silent) = 20ms; delay range: + /// 40ms (mod.amp >= 1) ... 20ms (mod.amp = 0) ... 0ms (mod.amp <= -1). + /// Phase = 1, - /// Absolute amplitude values will be used. Default signal delay (when modulating - /// inputs are silent) = 0ms; delay range: 40ms (mod.amp >= 1) ... 0ms (mod.amp = 0) ... - /// 40ms (mod.amp <= -1). + /// + /// Absolute amplitude values will be used. Default signal delay (when modulating + /// inputs are silent) = 0ms; delay range: 40ms (mod.amp >= 1) ... 0ms (mod.amp = 0) ... + /// 40ms (mod.amp <= -1). + /// PhaseAbsolute = 2, Add = 3, diff --git a/SunSharp/Modules/IncorrectSynthHandleTypeException.cs b/src/SunSharp/Modules/IncorrectSynthHandleTypeException.cs similarity index 100% rename from SunSharp/Modules/IncorrectSynthHandleTypeException.cs rename to src/SunSharp/Modules/IncorrectSynthHandleTypeException.cs diff --git a/SunSharp/Modules/MetaModuleModuleHandle.cs b/src/SunSharp/Modules/MetaModuleModuleHandle.cs similarity index 99% rename from SunSharp/Modules/MetaModuleModuleHandle.cs rename to src/SunSharp/Modules/MetaModuleModuleHandle.cs index 50fb3e2..3af2cfc 100644 --- a/SunSharp/Modules/MetaModuleModuleHandle.cs +++ b/src/SunSharp/Modules/MetaModuleModuleHandle.cs @@ -1,4 +1,4 @@ -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/SamplerModuleHandle.cs b/src/SunSharp/Modules/SamplerModuleHandle.cs similarity index 97% rename from SunSharp/Modules/SamplerModuleHandle.cs rename to src/SunSharp/Modules/SamplerModuleHandle.cs index 70565b9..4396b2c 100644 --- a/SunSharp/Modules/SamplerModuleHandle.cs +++ b/src/SunSharp/Modules/SamplerModuleHandle.cs @@ -1,4 +1,4 @@ -#if !GENERATION +#if !SUNSHARP_GENERATION namespace SunSharp.Modules { diff --git a/SunSharp/Modules/TypedModuleHandle.cs b/src/SunSharp/Modules/TypedModuleHandle.cs similarity index 100% rename from SunSharp/Modules/TypedModuleHandle.cs rename to src/SunSharp/Modules/TypedModuleHandle.cs diff --git a/SunSharp/Modules/VorbisPlayerModuleHandle.cs b/src/SunSharp/Modules/VorbisPlayerModuleHandle.cs similarity index 96% rename from SunSharp/Modules/VorbisPlayerModuleHandle.cs rename to src/SunSharp/Modules/VorbisPlayerModuleHandle.cs index 87a5e00..9e748f9 100644 --- a/SunSharp/Modules/VorbisPlayerModuleHandle.cs +++ b/src/SunSharp/Modules/VorbisPlayerModuleHandle.cs @@ -1,4 +1,4 @@ -#if !GENERATION +#if !SUNSHARP_GENERATION namespace SunSharp.Modules { diff --git a/SunSharp/Modules/g/AdsrModuleHandle.g.cs b/src/SunSharp/Modules/g/AdsrModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/AdsrModuleHandle.g.cs rename to src/SunSharp/Modules/g/AdsrModuleHandle.g.cs index a934969..1766226 100644 --- a/SunSharp/Modules/g/AdsrModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/AdsrModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs b/src/SunSharp/Modules/g/AmplifierModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/AmplifierModuleHandle.g.cs rename to src/SunSharp/Modules/g/AmplifierModuleHandle.g.cs index 9404e45..9ad74cc 100644 --- a/SunSharp/Modules/g/AmplifierModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/AmplifierModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs b/src/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs similarity index 98% rename from SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs rename to src/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs index 07ddc5d..d9f7d48 100644 --- a/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/AnalogGeneratorModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -165,7 +165,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Pitch deviation of the additional oscillator (off in the zero position). /// One semitone = 64. - ///
    + ///
    /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 8 'Osc2' ///
    @@ -174,7 +174,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Pitch deviation of the additional oscillator (off in the zero position). /// One semitone = 64. - ///
    + ///
    /// Value range: displayed: -1000 to 1000, real: 0 to 2000 /// Original name: 8 'Osc2' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -184,7 +184,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Pitch deviation of the additional oscillator (off in the zero position). /// One semitone = 64. - ///
    + ///
    /// This is a helper method to automatically handle turning target controller values into column values. /// For this controller the input value is mapped from displayed range (-1000 to 1000) to column range (0 to 0x8000). Out of range values are clamped. ///
    @@ -336,14 +336,14 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Quality mode of the module. - ///
    + ///
    /// Original name: 17 'Mode' ///
    Quality GetMode(); /// /// Quality mode of the module. - ///
    + ///
    /// Original name: 17 'Mode' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -351,7 +351,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Quality mode of the module. - ///
    + ///
    /// This is a helper method to automatically handle turning target controller values into column values. /// For this controller the input value is taken as is, only clamped to column value range. ///
    @@ -359,7 +359,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Amount of white noise added to the signal. - ///
    + ///
    /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 18 'Noise' ///
    @@ -367,7 +367,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Amount of white noise added to the signal. - ///
    + ///
    /// Value range: displayed: 0 to 256, real: 0 to 256 /// Original name: 18 'Noise' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -376,7 +376,7 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle /// /// Amount of white noise added to the signal. - ///
    + ///
    /// This is a helper method to automatically handle turning target controller values into column values. /// For this controller the input value is mapped from displayed range (0 to 256) to column range (0 to 0x8000). Out of range values are clamped. ///
    @@ -438,18 +438,24 @@ public partial interface IAnalogGeneratorModuleHandle : ITypedModuleHandle PatternEvent MakeSecondaryOscillatorPhaseEvent(int value); /// + /// /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. - ///
    - ///
    Write to curve 0 of AnalogGenerator. - ///
    The curve contains 32 values in range of -1 to 1. + ///
    + /// + /// Write to curve 0 of AnalogGenerator. + /// + /// The curve contains 32 values in range of -1 to 1. ///
    int WriteCurveSynth(float[] buffer); /// + /// /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. - ///
    - ///
    Read from curve 0 of AnalogGenerator. - ///
    The curve contains 32 values in range of -1 to 1. + ///
    + /// + /// Read from curve 0 of AnalogGenerator. + /// + /// The curve contains 32 values in range of -1 to 1. ///
    int ReadCurveSynth(float[] buffer); } @@ -878,10 +884,10 @@ public PatternEvent MakeSecondaryOscillatorPhaseEvent(int value) return PatternEvent.ControllerEvent(ModuleHandle.Id, 21, (ushort)Math.Clamp(value, 0, 0x8000)); } - /// public int ReadCurveSynth(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveSynth(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); } } diff --git a/SunSharp/Modules/g/CompressorModuleHandle.g.cs b/src/SunSharp/Modules/g/CompressorModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/CompressorModuleHandle.g.cs rename to src/SunSharp/Modules/g/CompressorModuleHandle.g.cs index d0a858b..522985e 100644 --- a/SunSharp/Modules/g/CompressorModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/CompressorModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs b/src/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs rename to src/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs index 9aa2983..0e9675c 100644 --- a/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/ControlToNoteModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs b/src/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/DcBlockerModuleHandle.g.cs rename to src/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs index 04f6584..f173a2c 100644 --- a/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/DcBlockerModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/DelayModuleHandle.g.cs b/src/SunSharp/Modules/g/DelayModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/DelayModuleHandle.g.cs rename to src/SunSharp/Modules/g/DelayModuleHandle.g.cs index fcc853b..3a89b5c 100644 --- a/SunSharp/Modules/g/DelayModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/DelayModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/DistortionModuleHandle.g.cs b/src/SunSharp/Modules/g/DistortionModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/DistortionModuleHandle.g.cs rename to src/SunSharp/Modules/g/DistortionModuleHandle.g.cs index e00b85c..9a5d029 100644 --- a/SunSharp/Modules/g/DistortionModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/DistortionModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs b/src/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/DrumSynthModuleHandle.g.cs rename to src/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs index 25ec275..4c0e30f 100644 --- a/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/DrumSynthModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/EchoModuleHandle.g.cs b/src/SunSharp/Modules/g/EchoModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/EchoModuleHandle.g.cs rename to src/SunSharp/Modules/g/EchoModuleHandle.g.cs index 9208a2d..29b111e 100644 --- a/SunSharp/Modules/g/EchoModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/EchoModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -128,7 +128,7 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Expressed as Delay/32768. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Right channel offset' ///
    @@ -136,7 +136,7 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Expressed as Delay/32768. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name: 6 'Right channel offset' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -145,7 +145,7 @@ public partial interface IEchoModuleHandle : ITypedModuleHandle /// /// Expressed as Delay/32768. - ///
    + ///
    /// This is a helper method to automatically handle turning target controller values into column values. /// For this controller the input value is mapped from displayed range (0 to 32768) to column range (0 to 0x8000). Out of range values are clamped. ///
    diff --git a/SunSharp/Modules/g/EqModuleHandle.g.cs b/src/SunSharp/Modules/g/EqModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/EqModuleHandle.g.cs rename to src/SunSharp/Modules/g/EqModuleHandle.g.cs index e84e4d8..9ad2fb1 100644 --- a/SunSharp/Modules/g/EqModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/EqModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs b/src/SunSharp/Modules/g/FeedbackModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FeedbackModuleHandle.g.cs rename to src/SunSharp/Modules/g/FeedbackModuleHandle.g.cs index cb3cc0b..2050106 100644 --- a/SunSharp/Modules/g/FeedbackModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FeedbackModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FftModuleHandle.g.cs b/src/SunSharp/Modules/g/FftModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FftModuleHandle.g.cs rename to src/SunSharp/Modules/g/FftModuleHandle.g.cs index 56f7a26..2d34934 100644 --- a/SunSharp/Modules/g/FftModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FftModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FilterModuleHandle.g.cs b/src/SunSharp/Modules/g/FilterModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FilterModuleHandle.g.cs rename to src/SunSharp/Modules/g/FilterModuleHandle.g.cs index a581de6..5c795cc 100644 --- a/SunSharp/Modules/g/FilterModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FilterModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FilterProModuleHandle.g.cs b/src/SunSharp/Modules/g/FilterProModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FilterProModuleHandle.g.cs rename to src/SunSharp/Modules/g/FilterProModuleHandle.g.cs index 42cdae8..d81b31c 100644 --- a/SunSharp/Modules/g/FilterProModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FilterProModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FlangerModuleHandle.g.cs b/src/SunSharp/Modules/g/FlangerModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FlangerModuleHandle.g.cs rename to src/SunSharp/Modules/g/FlangerModuleHandle.g.cs index 45ba1f7..478bb33 100644 --- a/SunSharp/Modules/g/FlangerModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FlangerModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FmModuleHandle.g.cs b/src/SunSharp/Modules/g/FmModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/FmModuleHandle.g.cs rename to src/SunSharp/Modules/g/FmModuleHandle.g.cs index 25dc055..082644b 100644 --- a/SunSharp/Modules/g/FmModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FmModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/FmxModuleHandle.g.cs b/src/SunSharp/Modules/g/FmxModuleHandle.g.cs similarity index 98% rename from SunSharp/Modules/g/FmxModuleHandle.g.cs rename to src/SunSharp/Modules/g/FmxModuleHandle.g.cs index c8472d9..7b224f0 100644 --- a/SunSharp/Modules/g/FmxModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/FmxModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -264,7 +264,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 9. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 9-13 '1 Volume' ///
    @@ -273,7 +273,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 9. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 9-13 '1 Volume' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -283,7 +283,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 9. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 9-13 '1 Volume' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -293,7 +293,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 14. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 14-18 '1 Attack' ///
    @@ -302,7 +302,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 14. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 14-18 '1 Attack' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -312,7 +312,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 14. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 14-18 '1 Attack' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -322,7 +322,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 19. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 19-23 '1 Decay' ///
    @@ -331,7 +331,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 19. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 19-23 '1 Decay' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -341,7 +341,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 19. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 19-23 '1 Decay' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -351,7 +351,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 24. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 24-28 '1 Sustain level' ///
    @@ -360,7 +360,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 24. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 24-28 '1 Sustain level' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -370,7 +370,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 24. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 24-28 '1 Sustain level' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -380,7 +380,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 29. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 29-33 '1 Release' ///
    @@ -389,7 +389,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 29. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 29-33 '1 Release' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -399,7 +399,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 29. - ///
    + ///
    /// Value range: displayed: 0 to 10000, real: 0 to 10000 /// Original name pattern: 29-33 '1 Release' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -409,7 +409,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 34. - ///
    + ///
    /// Original name pattern: 34-38 '1 Attack curve' ///
    /// Index of the controller in the group (0-4) @@ -417,7 +417,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 34. - ///
    + ///
    /// Original name pattern: 34-38 '1 Attack curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -426,7 +426,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 34. - ///
    + ///
    /// Original name pattern: 34-38 '1 Attack curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -435,7 +435,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 39. - ///
    + ///
    /// Original name pattern: 39-43 '1 Decay curve' ///
    /// Index of the controller in the group (0-4) @@ -443,7 +443,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 39. - ///
    + ///
    /// Original name pattern: 39-43 '1 Decay curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -452,7 +452,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 39. - ///
    + ///
    /// Original name pattern: 39-43 '1 Decay curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -461,7 +461,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 44. - ///
    + ///
    /// Original name pattern: 44-48 '1 Release curve' ///
    /// Index of the controller in the group (0-4) @@ -469,7 +469,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 44. - ///
    + ///
    /// Original name pattern: 44-48 '1 Release curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -478,7 +478,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 44. - ///
    + ///
    /// Original name pattern: 44-48 '1 Release curve' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -487,7 +487,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 49. - ///
    + ///
    /// Original name pattern: 49-53 '1 Sustain' ///
    /// Index of the controller in the group (0-4) @@ -495,7 +495,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 49. - ///
    + ///
    /// Original name pattern: 49-53 '1 Sustain' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -504,7 +504,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 49. - ///
    + ///
    /// Original name pattern: 49-53 '1 Sustain' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -513,7 +513,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 54. - ///
    + ///
    /// Original name pattern: 54-58 '1 Sustain pedal' ///
    /// Index of the controller in the group (0-4) @@ -521,7 +521,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 54. - ///
    + ///
    /// Original name pattern: 54-58 '1 Sustain pedal' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -530,7 +530,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 54. - ///
    + ///
    /// Original name pattern: 54-58 '1 Sustain pedal' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -539,7 +539,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 59. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 59-63 '1 Envelope scaling per key' ///
    @@ -548,7 +548,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 59. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 59-63 '1 Envelope scaling per key' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -558,7 +558,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 59. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 59-63 '1 Envelope scaling per key' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -568,7 +568,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 64. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 64-68 '1 Volume scaling per key' ///
    @@ -577,7 +577,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 64. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 64-68 '1 Volume scaling per key' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -587,7 +587,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 64. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 64-68 '1 Volume scaling per key' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -597,7 +597,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 69. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 69-73 '1 Velocity sensitivity' ///
    @@ -606,7 +606,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 69. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 69-73 '1 Velocity sensitivity' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -616,7 +616,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 69. - ///
    + ///
    /// Value range: displayed: -128 to 128, real: 0 to 256 /// Original name pattern: 69-73 '1 Velocity sensitivity' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -626,7 +626,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 74. - ///
    + ///
    /// Original name pattern: 74-78 '1 Waveform' ///
    /// Index of the controller in the group (0-4) @@ -634,7 +634,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 74. - ///
    + ///
    /// Original name pattern: 74-78 '1 Waveform' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -643,7 +643,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 74. - ///
    + ///
    /// Original name pattern: 74-78 '1 Waveform' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -652,7 +652,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 79. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 79-83 '1 Noise' ///
    @@ -661,7 +661,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 79. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 79-83 '1 Noise' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -671,7 +671,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 79. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 79-83 '1 Noise' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -681,7 +681,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 84. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 84-88 '1 Phase' ///
    @@ -690,7 +690,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 84. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 84-88 '1 Phase' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -700,7 +700,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 84. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 84-88 '1 Phase' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -710,7 +710,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 89. - ///
    + ///
    /// Value range: displayed: 0 to 32000, real: 0 to 32000 /// Original name pattern: 89-93 '1 Freq multiply' ///
    @@ -719,7 +719,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 89. - ///
    + ///
    /// Value range: displayed: 0 to 32000, real: 0 to 32000 /// Original name pattern: 89-93 '1 Freq multiply' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -729,7 +729,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 89. - ///
    + ///
    /// Value range: displayed: 0 to 32000, real: 0 to 32000 /// Original name pattern: 89-93 '1 Freq multiply' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -739,7 +739,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 94. - ///
    + ///
    /// Value range: displayed: -8192 to 8192, real: 0 to 16384 /// Original name pattern: 94-98 '1 Constant pitch' ///
    @@ -748,7 +748,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 94. - ///
    + ///
    /// Value range: displayed: -8192 to 8192, real: 0 to 16384 /// Original name pattern: 94-98 '1 Constant pitch' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -758,7 +758,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 94. - ///
    + ///
    /// Value range: displayed: -8192 to 8192, real: 0 to 16384 /// Original name pattern: 94-98 '1 Constant pitch' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -768,7 +768,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 99. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 99-103 '1 Self-modulation' ///
    @@ -777,7 +777,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 99. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 99-103 '1 Self-modulation' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -787,7 +787,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 99. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 99-103 '1 Self-modulation' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -797,7 +797,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 104. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 104-108 '1 Feedback' ///
    @@ -806,7 +806,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 104. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 104-108 '1 Feedback' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -816,7 +816,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 104. - ///
    + ///
    /// Value range: displayed: 0 to 32768, real: 0 to 32768 /// Original name pattern: 104-108 '1 Feedback' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. @@ -826,7 +826,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 109. - ///
    + ///
    /// Original name pattern: 109-113 '1 Modulation type' ///
    /// Index of the controller in the group (0-4) @@ -834,7 +834,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 109. - ///
    + ///
    /// Original name pattern: 109-113 '1 Modulation type' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -843,7 +843,7 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle /// /// This method accesses one of 5 grouped controllers starting at controller 109. - ///
    + ///
    /// Original name pattern: 109-113 '1 Modulation type' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -851,18 +851,24 @@ public partial interface IFmxModuleHandle : ITypedModuleHandle PatternEvent MakeModulationTypeEvent(int index, FmxModulationType value); /// + /// /// Used as a waveform where 'Custom' waveform type was applied. - ///
    - ///
    Write to curve 0 of Fmx. - ///
    The curve contains 256 values in range of -1 to 1. + ///
    + /// + /// Write to curve 0 of Fmx. + /// + /// The curve contains 256 values in range of -1 to 1. ///
    int WriteCurveCustomWaveform(float[] buffer); /// + /// /// Used as a waveform where 'Custom' waveform type was applied. - ///
    - ///
    Read from curve 0 of Fmx. - ///
    The curve contains 256 values in range of -1 to 1. + ///
    + /// + /// Read from curve 0 of Fmx. + /// + /// The curve contains 256 values in range of -1 to 1. ///
    int ReadCurveCustomWaveform(float[] buffer); } @@ -1833,10 +1839,10 @@ public PatternEvent MakeModulationTypeEvent(int index, FmxModulationType value) return PatternEvent.ControllerEvent(ModuleHandle.Id, (byte)(109 + index), (ushort)Math.Clamp((int)value, 0, 0x8000)); } - /// public int ReadCurveCustomWaveform(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveCustomWaveform(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); } } diff --git a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs b/src/SunSharp/Modules/g/GeneratorModuleHandle.g.cs similarity index 98% rename from SunSharp/Modules/g/GeneratorModuleHandle.g.cs rename to src/SunSharp/Modules/g/GeneratorModuleHandle.g.cs index 0674a31..249f814 100644 --- a/SunSharp/Modules/g/GeneratorModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/GeneratorModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -199,18 +199,24 @@ public partial interface IGeneratorModuleHandle : ITypedModuleHandle PatternEvent MakeDutyCycleEvent(int value); /// + /// /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. - ///
    - ///
    Write to curve 0 of Generator. - ///
    The curve contains 32 values in range of -1 to 1. + ///
    + /// + /// Write to curve 0 of Generator. + /// + /// The curve contains 32 values in range of -1 to 1. ///
    int WriteCurveSynth(float[] buffer); /// + /// /// Used for 'Drawn', 'DrawnSpline' and 'Harmonics' waveforms. - ///
    - ///
    Read from curve 0 of Generator. - ///
    The curve contains 32 values in range of -1 to 1. + ///
    + /// + /// Read from curve 0 of Generator. + /// + /// The curve contains 32 values in range of -1 to 1. ///
    int ReadCurveSynth(float[] buffer); } @@ -487,10 +493,10 @@ public PatternEvent MakeDutyCycleEvent(int value) return PatternEvent.ControllerEvent(ModuleHandle.Id, 9, (ushort)Math.Clamp(value, 0, 0x8000)); } - /// public int ReadCurveSynth(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveSynth(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); } } diff --git a/SunSharp/Modules/g/GlideModuleHandle.g.cs b/src/SunSharp/Modules/g/GlideModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/GlideModuleHandle.g.cs rename to src/SunSharp/Modules/g/GlideModuleHandle.g.cs index 716157f..fc5b103 100644 --- a/SunSharp/Modules/g/GlideModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/GlideModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/GpioModuleHandle.g.cs b/src/SunSharp/Modules/g/GpioModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/GpioModuleHandle.g.cs rename to src/SunSharp/Modules/g/GpioModuleHandle.g.cs index 8a5c1ab..5cbc5b3 100644 --- a/SunSharp/Modules/g/GpioModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/GpioModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/InputModuleHandle.g.cs b/src/SunSharp/Modules/g/InputModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/InputModuleHandle.g.cs rename to src/SunSharp/Modules/g/InputModuleHandle.g.cs index a850a2a..0ebf054 100644 --- a/SunSharp/Modules/g/InputModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/InputModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/KickerModuleHandle.g.cs b/src/SunSharp/Modules/g/KickerModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/KickerModuleHandle.g.cs rename to src/SunSharp/Modules/g/KickerModuleHandle.g.cs index aa49168..7072041 100644 --- a/SunSharp/Modules/g/KickerModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/KickerModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/LfoModuleHandle.g.cs b/src/SunSharp/Modules/g/LfoModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/LfoModuleHandle.g.cs rename to src/SunSharp/Modules/g/LfoModuleHandle.g.cs index 4e18926..405bab5 100644 --- a/SunSharp/Modules/g/LfoModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/LfoModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/LoopModuleHandle.g.cs b/src/SunSharp/Modules/g/LoopModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/LoopModuleHandle.g.cs rename to src/SunSharp/Modules/g/LoopModuleHandle.g.cs index 829df92..4e6b99a 100644 --- a/SunSharp/Modules/g/LoopModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/LoopModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -124,14 +124,14 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Max buffer size in seconds - ///
    + ///
    /// Original name: 6 'Max buffer size' ///
    int GetMaxBufferSize(ValueScalingMode valueScalingMode = ValueScalingMode.Displayed); /// /// Max buffer size in seconds - ///
    + ///
    /// Original name: 6 'Max buffer size' /// Note: equivalent will be used internally, which may introduce latency. It will also be affected by the event timestamp set. ///
    @@ -139,7 +139,7 @@ public partial interface ILoopModuleHandle : ITypedModuleHandle /// /// Max buffer size in seconds - ///
    + ///
    /// This is a helper method to automatically handle turning target controller values into column values. /// For this controller the input value is taken as is, only clamped to column value range. ///
    diff --git a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs b/src/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/MetaModuleModuleHandle.g.cs rename to src/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs index 3d6305b..5483ee8 100644 --- a/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/MetaModuleModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs b/src/SunSharp/Modules/g/ModulatorModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/ModulatorModuleHandle.g.cs rename to src/SunSharp/Modules/g/ModulatorModuleHandle.g.cs index 83ba183..e829343 100644 --- a/SunSharp/Modules/g/ModulatorModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/ModulatorModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs b/src/SunSharp/Modules/g/MultiControlModuleHandle.g.cs similarity index 97% rename from SunSharp/Modules/g/MultiControlModuleHandle.g.cs rename to src/SunSharp/Modules/g/MultiControlModuleHandle.g.cs index ba05486..6360721 100644 --- a/SunSharp/Modules/g/MultiControlModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/MultiControlModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -131,18 +131,24 @@ public partial interface IMultiControlModuleHandle : ITypedModuleHandle PatternEvent MakeSampleRateEvent(int value); /// + /// /// Modifies values. - ///
    - ///
    Write to curve 0 of MultiControl. - ///
    The curve contains 257 values in range of 0 to 1. + ///
    + /// + /// Write to curve 0 of MultiControl. + /// + /// The curve contains 257 values in range of 0 to 1. ///
    int WriteCurveValueMap(float[] buffer); /// + /// /// Modifies values. - ///
    - ///
    Read from curve 0 of MultiControl. - ///
    The curve contains 257 values in range of 0 to 1. + ///
    + /// + /// Read from curve 0 of MultiControl. + /// + /// The curve contains 257 values in range of 0 to 1. ///
    int ReadCurveValueMap(float[] buffer); } @@ -372,10 +378,10 @@ public PatternEvent MakeSampleRateEvent(int value) return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp(value, 0, 0x8000)); } - /// public int ReadCurveValueMap(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveValueMap(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); } } diff --git a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs b/src/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs similarity index 94% rename from SunSharp/Modules/g/MultiSynthModuleHandle.g.cs rename to src/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs index 4e0e01b..a131e0b 100644 --- a/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/MultiSynthModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -167,50 +167,68 @@ public partial interface IMultiSynthModuleHandle : ITypedModuleHandle PatternEvent MakeCurve2InfluenceEvent(int value); /// + /// /// Velocity to apply to arriving note. - ///
    - ///
    Write to curve 0 of MultiSynth. - ///
    The curve contains 128 values in range of 0 to 1. + ///
    + /// + /// Write to curve 0 of MultiSynth. + /// + /// The curve contains 128 values in range of 0 to 1. ///
    int WriteCurveNoteToVelocity(float[] buffer); /// + /// /// Velocity to apply to arriving note. - ///
    - ///
    Read from curve 0 of MultiSynth. - ///
    The curve contains 128 values in range of 0 to 1. + ///
    + /// + /// Read from curve 0 of MultiSynth. + /// + /// The curve contains 128 values in range of 0 to 1. ///
    int ReadCurveNoteToVelocity(float[] buffer); /// + /// /// Map velocity values. - ///
    - ///
    Write to curve 1 of MultiSynth. - ///
    The curve contains 257 values in range of 0 to 1. + ///
    + /// + /// Write to curve 1 of MultiSynth. + /// + /// The curve contains 257 values in range of 0 to 1. ///
    int WriteCurveVelocityToVelocity(float[] buffer); /// + /// /// Map velocity values. - ///
    - ///
    Read from curve 1 of MultiSynth. - ///
    The curve contains 257 values in range of 0 to 1. + ///
    + /// + /// Read from curve 1 of MultiSynth. + /// + /// The curve contains 257 values in range of 0 to 1. ///
    int ReadCurveVelocityToVelocity(float[] buffer); /// + /// /// Map incoming note to a pitch value. - ///
    - ///
    Write to curve 2 of MultiSynth. - ///
    The curve contains 128 values in range of 0.2500038 to 0.74610513. + ///
    + /// + /// Write to curve 2 of MultiSynth. + /// + /// The curve contains 128 values in range of 0.2500038 to 0.74610513. ///
    int WriteCurveNoteToPitch(float[] buffer); /// + /// /// Map incoming note to a pitch value. - ///
    - ///
    Read from curve 2 of MultiSynth. - ///
    The curve contains 128 values in range of 0.2500038 to 0.74610513. + ///
    + /// + /// Read from curve 2 of MultiSynth. + /// + /// The curve contains 128 values in range of 0.2500038 to 0.74610513. ///
    int ReadCurveNoteToPitch(float[] buffer); } @@ -464,22 +482,22 @@ public PatternEvent MakeCurve2InfluenceEvent(int value) return PatternEvent.ControllerEvent(ModuleHandle.Id, 7, (ushort)Math.Clamp(value, 0, 0x8000)); } - /// public int ReadCurveNoteToVelocity(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveNoteToVelocity(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); - /// public int ReadCurveVelocityToVelocity(float[] buffer) => ModuleHandle.ReadCurve(1, buffer); - /// public int WriteCurveVelocityToVelocity(float[] buffer) => ModuleHandle.WriteCurve(1, buffer); - /// public int ReadCurveNoteToPitch(float[] buffer) => ModuleHandle.ReadCurve(2, buffer); - /// public int WriteCurveNoteToPitch(float[] buffer) => ModuleHandle.WriteCurve(2, buffer); } } diff --git a/SunSharp/Modules/g/OutputModuleHandle.g.cs b/src/SunSharp/Modules/g/OutputModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/OutputModuleHandle.g.cs rename to src/SunSharp/Modules/g/OutputModuleHandle.g.cs index e5eb36b..5809fb1 100644 --- a/SunSharp/Modules/g/OutputModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/OutputModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs b/src/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs rename to src/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs index a2e10e1..5a5af6a 100644 --- a/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/PitchDetectorModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs b/src/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/PitchShifterModuleHandle.g.cs rename to src/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs index 08a7cd3..d1723c7 100644 --- a/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/PitchShifterModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs b/src/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/PitchToControlModuleHandle.g.cs rename to src/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs index 70801b6..321844f 100644 --- a/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/PitchToControlModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/ReverbModuleHandle.g.cs b/src/SunSharp/Modules/g/ReverbModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/ReverbModuleHandle.g.cs rename to src/SunSharp/Modules/g/ReverbModuleHandle.g.cs index 666ddf9..e6f1dc4 100644 --- a/SunSharp/Modules/g/ReverbModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/ReverbModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/SamplerModuleHandle.g.cs b/src/SunSharp/Modules/g/SamplerModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/SamplerModuleHandle.g.cs rename to src/SunSharp/Modules/g/SamplerModuleHandle.g.cs index cd7a0bb..e22ed14 100644 --- a/SunSharp/Modules/g/SamplerModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/SamplerModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs b/src/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/SoundToControlModuleHandle.g.cs rename to src/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs index 94ca438..bb2d627 100644 --- a/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/SoundToControlModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs b/src/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs rename to src/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs index dea9434..bff5e52 100644 --- a/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/SpectraVoiceModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs b/src/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs rename to src/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs index 16a6709..9ea37c3 100644 --- a/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/VelocityToControlModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/VibratoModuleHandle.g.cs b/src/SunSharp/Modules/g/VibratoModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/VibratoModuleHandle.g.cs rename to src/SunSharp/Modules/g/VibratoModuleHandle.g.cs index 31b32d3..f6c77ca 100644 --- a/SunSharp/Modules/g/VibratoModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/VibratoModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs b/src/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/VocalFilterModuleHandle.g.cs rename to src/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs index fd5ba56..1a546d2 100644 --- a/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/VocalFilterModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs b/src/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs similarity index 99% rename from SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs rename to src/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs index b8bd2ed..c237a45 100644 --- a/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/VorbisPlayerModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; diff --git a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs b/src/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs similarity index 97% rename from SunSharp/Modules/g/WaveShaperModuleHandle.g.cs rename to src/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs index 9d98b9e..865d632 100644 --- a/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs +++ b/src/SunSharp/Modules/g/WaveShaperModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using System; @@ -125,18 +125,24 @@ public partial interface IWaveShaperModuleHandle : ITypedModuleHandle PatternEvent MakeDcBlockerEvent(Toggle value); /// + /// /// Maps input to output. - ///
    - ///
    Write to curve 0 of WaveShaper. - ///
    The curve contains 256 values in range of 0 to 1. + ///
    + /// + /// Write to curve 0 of WaveShaper. + /// + /// The curve contains 256 values in range of 0 to 1. ///
    int WriteCurveValueMap(float[] buffer); /// + /// /// Maps input to output. - ///
    - ///
    Read from curve 0 of WaveShaper. - ///
    The curve contains 256 values in range of 0 to 1. + ///
    + /// + /// Read from curve 0 of WaveShaper. + /// + /// The curve contains 256 values in range of 0 to 1. ///
    int ReadCurveValueMap(float[] buffer); } @@ -361,10 +367,10 @@ public PatternEvent MakeDcBlockerEvent(Toggle value) return PatternEvent.ControllerEvent(ModuleHandle.Id, 5, (ushort)Math.Clamp((int)value, 0, 0x8000)); } - /// public int ReadCurveValueMap(float[] buffer) => ModuleHandle.ReadCurve(0, buffer); - /// public int WriteCurveValueMap(float[] buffer) => ModuleHandle.WriteCurve(0, buffer); } } diff --git a/SunSharp/Native/ISunVoxLib.Modules.cs b/src/SunSharp/Native/ISunVoxLib.Modules.cs similarity index 100% rename from SunSharp/Native/ISunVoxLib.Modules.cs rename to src/SunSharp/Native/ISunVoxLib.Modules.cs diff --git a/SunSharp/Native/ISunVoxLib.Patterns.cs b/src/SunSharp/Native/ISunVoxLib.Patterns.cs similarity index 100% rename from SunSharp/Native/ISunVoxLib.Patterns.cs rename to src/SunSharp/Native/ISunVoxLib.Patterns.cs diff --git a/SunSharp/Native/ISunVoxLib.cs b/src/SunSharp/Native/ISunVoxLib.cs similarity index 100% rename from SunSharp/Native/ISunVoxLib.cs rename to src/SunSharp/Native/ISunVoxLib.cs diff --git a/SunSharp/Native/ISunVoxLibC.g.cs b/src/SunSharp/Native/ISunVoxLibC.g.cs similarity index 100% rename from SunSharp/Native/ISunVoxLibC.g.cs rename to src/SunSharp/Native/ISunVoxLibC.g.cs diff --git a/SunSharp/Native/Loader/ILibraryHandler.cs b/src/SunSharp/Native/Loader/ILibraryHandler.cs similarity index 100% rename from SunSharp/Native/Loader/ILibraryHandler.cs rename to src/SunSharp/Native/Loader/ILibraryHandler.cs diff --git a/SunSharp/Native/Loader/NativeProxy.cs b/src/SunSharp/Native/Loader/NativeProxy.cs similarity index 100% rename from SunSharp/Native/Loader/NativeProxy.cs rename to src/SunSharp/Native/Loader/NativeProxy.cs diff --git a/SunSharp/Native/Loader/NativeProxy.g.cs b/src/SunSharp/Native/Loader/NativeProxy.g.cs similarity index 100% rename from SunSharp/Native/Loader/NativeProxy.g.cs rename to src/SunSharp/Native/Loader/NativeProxy.g.cs diff --git a/SunSharp/Native/SunVoxLib.Modules.cs b/src/SunSharp/Native/SunVoxLib.Modules.cs similarity index 100% rename from SunSharp/Native/SunVoxLib.Modules.cs rename to src/SunSharp/Native/SunVoxLib.Modules.cs diff --git a/SunSharp/Native/SunVoxLib.Patterns.cs b/src/SunSharp/Native/SunVoxLib.Patterns.cs similarity index 100% rename from SunSharp/Native/SunVoxLib.Patterns.cs rename to src/SunSharp/Native/SunVoxLib.Patterns.cs diff --git a/SunSharp/Native/SunVoxLib.cs b/src/SunSharp/Native/SunVoxLib.cs similarity index 100% rename from SunSharp/Native/SunVoxLib.cs rename to src/SunSharp/Native/SunVoxLib.cs diff --git a/SunSharp/Native/sunvox.h b/src/SunSharp/Native/sunvox.h similarity index 100% rename from SunSharp/Native/sunvox.h rename to src/SunSharp/Native/sunvox.h diff --git a/SunSharp/Note.cs b/src/SunSharp/Note.cs similarity index 100% rename from SunSharp/Note.cs rename to src/SunSharp/Note.cs diff --git a/SunSharp/NoteName.cs b/src/SunSharp/NoteName.cs similarity index 100% rename from SunSharp/NoteName.cs rename to src/SunSharp/NoteName.cs diff --git a/SunSharp/PatternEvent.cs b/src/SunSharp/PatternEvent.cs similarity index 100% rename from SunSharp/PatternEvent.cs rename to src/SunSharp/PatternEvent.cs diff --git a/SunSharp/PatternHandle.cs b/src/SunSharp/PatternHandle.cs similarity index 92% rename from SunSharp/PatternHandle.cs rename to src/SunSharp/PatternHandle.cs index 0dfce20..13a814a 100644 --- a/SunSharp/PatternHandle.cs +++ b/src/SunSharp/PatternHandle.cs @@ -29,8 +29,8 @@ public interface IPatternHandle /// int GetLength(); - /// - void Resize(int? tracks = null, int? lines = null); + /// + void SetPatternSize(int? tracks = null, int? lines = null); /// (PatternEvent[] data, int tracks, int lines)? GetData(); @@ -59,7 +59,7 @@ public interface IPatternHandle ///
    public readonly struct PatternHandle : IPatternHandle { -#if RELEASE +#if SUNSHARP_RELEASE private readonly SunVoxLib _lib; #else private readonly ISunVoxLib _lib; @@ -114,13 +114,8 @@ public void SetPosition(int x, int y) /// public int GetLength() => _lib.GetPatternLines(_slotId, Id); - /// - /// Resize the pattern. - /// - /// to leave as is. - /// to leave as is. /// - public void Resize(int? tracks = null, int? lines = null) + public void SetPatternSize(int? tracks = null, int? lines = null) { _lib.SetPatternSize(_slotId, Id, tracks, lines); } diff --git a/SunSharp/README.md b/src/SunSharp/README.md similarity index 100% rename from SunSharp/README.md rename to src/SunSharp/README.md diff --git a/SunSharp/RELEASE-NOTES.txt b/src/SunSharp/RELEASE-NOTES.txt similarity index 100% rename from SunSharp/RELEASE-NOTES.txt rename to src/SunSharp/RELEASE-NOTES.txt diff --git a/SunSharp/Slot.cs b/src/SunSharp/Slot.cs similarity index 99% rename from SunSharp/Slot.cs rename to src/SunSharp/Slot.cs index 9dba436..b5d4075 100644 --- a/SunSharp/Slot.cs +++ b/src/SunSharp/Slot.cs @@ -190,7 +190,7 @@ public sealed class Slot : ISlot /// /// SunVox instance this slot belongs to. /// -#if RELEASE +#if SUNSHARP_RELEASE public SunVox SunVox { get; } #else public ISunVox SunVox { get; } @@ -210,7 +210,7 @@ public sealed class Slot : ISlot /// /// Underlying library instance. /// -#if RELEASE +#if SUNSHARP_RELEASE public SunVoxLib Library { get; } #else public ISunVoxLib Library { get; } @@ -222,7 +222,7 @@ public sealed class Slot : ISlot public bool IsOpen { get; private set; } private readonly object _slotManagementLock; -#if RELEASE +#if SUNSHARP_RELEASE internal Slot(int id, object slotManagementLock, SunVox sunVox) #else internal Slot(int id, object slotManagementLock, ISunVox sunVox) diff --git a/SunSharp/SlotLock.cs b/src/SunSharp/SlotLock.cs similarity index 100% rename from SunSharp/SlotLock.cs rename to src/SunSharp/SlotLock.cs diff --git a/SunSharp/Slots.cs b/src/SunSharp/Slots.cs similarity index 100% rename from SunSharp/Slots.cs rename to src/SunSharp/Slots.cs diff --git a/SunSharp/Speed.cs b/src/SunSharp/Speed.cs similarity index 100% rename from SunSharp/Speed.cs rename to src/SunSharp/Speed.cs diff --git a/SunSharp/SunSharp.csproj b/src/SunSharp/SunSharp.csproj similarity index 96% rename from SunSharp/SunSharp.csproj rename to src/SunSharp/SunSharp.csproj index a3dbfd2..ebef059 100644 --- a/SunSharp/SunSharp.csproj +++ b/src/SunSharp/SunSharp.csproj @@ -38,11 +38,11 @@ - GENERATION + SUNSHARP_GENERATION - RELEASE + SUNSHARP_RELEASE diff --git a/SunSharp/SunSharp.sln b/src/SunSharp/SunSharp.sln similarity index 100% rename from SunSharp/SunSharp.sln rename to src/SunSharp/SunSharp.sln diff --git a/SunSharp/SunVox.cs b/src/SunSharp/SunVox.cs similarity index 99% rename from SunSharp/SunVox.cs rename to src/SunSharp/SunVox.cs index 2db136a..3ad5be8 100644 --- a/SunSharp/SunVox.cs +++ b/src/SunSharp/SunVox.cs @@ -73,7 +73,7 @@ public sealed class SunVox : ISunVox /// /// The underlying library interface. Direct use may break existing abstractions. /// -#if RELEASE +#if SUNSHARP_RELEASE public SunVoxLib Library { get; } #else public ISunVoxLib Library { get; } @@ -111,7 +111,7 @@ public sealed class SunVox : ISunVox /// Leave for the value to be assigned by the engine. /// Leave for the value to be assigned by the engine. /// Limit information sent to Standard Output. -#if RELEASE +#if SUNSHARP_RELEASE public SunVox(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #else @@ -132,7 +132,7 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, var configuration = AssembleConfigurationParams(bufferSize, deviceIn, deviceOut, driver); -#if RELEASE +#if SUNSHARP_RELEASE Library = new SunVoxLib(library); #else Library = library; @@ -155,7 +155,7 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, /// Use to promise that audio callback and other methods will be called from one thread. /// Limit information sent to Standard Output. /// -#if RELEASE +#if SUNSHARP_RELEASE public SunVox(ISunVoxLibC library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) @@ -177,7 +177,7 @@ public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioCh throw new ArgumentException($"Invalid value: {sampleRate}", nameof(sampleRate)); } -#if RELEASE +#if SUNSHARP_RELEASE Library = new SunVoxLib(library); #else Library = library; diff --git a/SunSharp/SunVoxException.cs b/src/SunSharp/SunVoxException.cs similarity index 100% rename from SunSharp/SunVoxException.cs rename to src/SunSharp/SunVoxException.cs diff --git a/SunSharp/SunVoxVersion.cs b/src/SunSharp/SunVoxVersion.cs similarity index 100% rename from SunSharp/SunVoxVersion.cs rename to src/SunSharp/SunVoxVersion.cs diff --git a/SunSharp/SynthModuleHandle.cs b/src/SunSharp/SynthModuleHandle.cs similarity index 99% rename from SunSharp/SynthModuleHandle.cs rename to src/SunSharp/SynthModuleHandle.cs index 339f618..4b70525 100644 --- a/SunSharp/SynthModuleHandle.cs +++ b/src/SunSharp/SynthModuleHandle.cs @@ -159,7 +159,7 @@ public partial interface ISynthModuleHandle : IGenericSynthModuleHandle ///
    public readonly partial struct SynthModuleHandle : ISynthModuleHandle { -#if RELEASE +#if SUNSHARP_RELEASE private readonly SunVoxLib _lib; #else private readonly ISunVoxLib _lib; diff --git a/SunSharp/SynthModuleHandle.g.cs b/src/SunSharp/SynthModuleHandle.g.cs similarity index 99% rename from SunSharp/SynthModuleHandle.g.cs rename to src/SunSharp/SynthModuleHandle.g.cs index f4c9772..59d8419 100644 --- a/SunSharp/SynthModuleHandle.g.cs +++ b/src/SunSharp/SynthModuleHandle.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION using SunSharp.Modules; namespace SunSharp diff --git a/SunSharp/SynthModuleType.cs b/src/SunSharp/SynthModuleType.cs similarity index 97% rename from SunSharp/SynthModuleType.cs rename to src/SunSharp/SynthModuleType.cs index b1eb23f..3f9afa0 100644 --- a/SunSharp/SynthModuleType.cs +++ b/src/SunSharp/SynthModuleType.cs @@ -1,4 +1,4 @@ -#if GENERATION +#if SUNSHARP_GENERATION namespace SunSharp { diff --git a/SunSharp/SynthModuleType.g.cs b/src/SunSharp/SynthModuleType.g.cs similarity index 99% rename from SunSharp/SynthModuleType.g.cs rename to src/SunSharp/SynthModuleType.g.cs index 379d7d6..6dc50a9 100644 --- a/SunSharp/SynthModuleType.g.cs +++ b/src/SunSharp/SynthModuleType.g.cs @@ -4,7 +4,7 @@ #nullable enable -#if !GENERATION +#if !SUNSHARP_GENERATION namespace SunSharp { public enum SynthModuleType diff --git a/SunSharp/Synthesizer.cs b/src/SunSharp/Synthesizer.cs similarity index 99% rename from SunSharp/Synthesizer.cs rename to src/SunSharp/Synthesizer.cs index bdba1cf..04dddca 100644 --- a/SunSharp/Synthesizer.cs +++ b/src/SunSharp/Synthesizer.cs @@ -63,7 +63,7 @@ public interface ISynthesizer : IEnumerable ///
    public class Synthesizer : ISynthesizer, IEnumerable { -#if RELEASE +#if SUNSHARP_RELEASE private readonly SunVoxLib _lib; #else private readonly ISunVoxLib _lib; diff --git a/SunSharp/Timeline.cs b/src/SunSharp/Timeline.cs similarity index 99% rename from SunSharp/Timeline.cs rename to src/SunSharp/Timeline.cs index a3cfc88..d2786b6 100644 --- a/SunSharp/Timeline.cs +++ b/src/SunSharp/Timeline.cs @@ -48,7 +48,7 @@ public sealed class Timeline : ITimeline, IEnumerable /// ISlot ITimeline.Slot => Slot; -#if RELEASE +#if SUNSHARP_RELEASE private readonly SunVoxLib _lib; #else private readonly ISunVoxLib _lib; diff --git a/SunSharp/UtilityHelper.cs b/src/SunSharp/UtilityHelper.cs similarity index 100% rename from SunSharp/UtilityHelper.cs rename to src/SunSharp/UtilityHelper.cs diff --git a/SunSharp/VirtualPattern.cs b/src/SunSharp/VirtualPattern.cs similarity index 67% rename from SunSharp/VirtualPattern.cs rename to src/SunSharp/VirtualPattern.cs index 1662f85..e992d94 100644 --- a/SunSharp/VirtualPattern.cs +++ b/src/SunSharp/VirtualPattern.cs @@ -8,8 +8,8 @@ public interface IVirtualPattern /// ISlot Slot { get; } - /// - uint GetCurrentTick(); + /// + uint GetTicks(); /// uint GetTicksPerSecond(); @@ -40,7 +40,7 @@ public sealed class VirtualPattern : IVirtualPattern /// ISlot IVirtualPattern.Slot => Slot; -#if RELEASE +#if SUNSHARP_RELEASE private readonly SunVoxLib _lib; #else private readonly ISunVoxLib _lib; @@ -55,7 +55,7 @@ internal VirtualPattern(Slot slot) } /// - public uint GetCurrentTick() + public uint GetTicks() { return _lib.GetTicks(); } @@ -66,28 +66,13 @@ public uint GetTicksPerSecond() return _lib.GetTicksPerSecond(); } - /// - /// Set the timestamp of events sent by . - /// Every event has a timestamp (when it was generated, e.g., key press time). - /// If nonzero: event is heard at timestamp + sound latency * 2. - /// - /// - /// Timestamp (in system ticks) for future events. - /// If not zero, must be ≥ previous value for same slot. See and . - /// - /// Thrown when the operation fails. - /// Calls . + /// public void SetEventTiming(int timestamp) { _lib.SetEventTiming(_id, timestamp); } - /// - /// Reset the timestamp of events sent by . - /// Event is heard as quickly as possible. - /// - /// Thrown when the operation fails. - /// Calls . + /// public void ResetEventTiming() { _lib.ResetEventTiming(_id); diff --git a/SunSharp/license.txt b/src/SunSharp/license.txt similarity index 100% rename from SunSharp/license.txt rename to src/SunSharp/license.txt From 4dc75cf7d8872d21070fc1cdf002e4929196a634 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Wed, 4 Feb 2026 22:37:53 +0100 Subject: [PATCH 21/27] workflow dispatch parameter --- .github/workflows/docs.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b2932d1..7de93d7 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,7 +1,14 @@ name: Documentation on: - workflow_dispatch: {} + workflow_dispatch: + inputs: + publish: + description: 'Whether to publish the generated documentation to GitHub Pages.' + required: false + default: 'false' + type: boolean + push: branches: ["main"] paths: @@ -55,14 +62,18 @@ jobs: retention-days: 1 - name: Upload Pages artifact - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + if: > + (github.event_name == 'push' && github.ref == 'refs/heads/main') + || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') uses: actions/upload-pages-artifact@v3 with: path: docs/out/site retention-days: 1 deploy: - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + if: > + (github.event_name == 'push' && github.ref == 'refs/heads/main') + || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') runs-on: ubuntu-latest needs: build environment: From 8b4e73400fba9e02636b21e4b685762e95014079 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Wed, 4 Feb 2026 22:48:23 +0100 Subject: [PATCH 22/27] Test and build, fixes to build --- .github/workflows/build.yml | 101 ++++++++++++++++++ .github/workflows/docs.yml | 6 ++ scripts/generate-docs.sh | 2 + src/CodeGeneration/GeneratorDiscovery.cs | 2 +- .../LibraryHandlerBase.cs | 63 +++++++++++ src/SunSharp.Redistribution/LibraryLoader.cs | 4 +- .../LinuxLibraryHandler.cs | 76 +++++++++++++ .../MacOsLibraryLoader.cs | 76 +++++++++++++ .../SunSharp.Redistribution.csproj | 2 +- .../UnixLibraryHandler.cs | 97 ----------------- .../WindowsLibraryHandler.cs | 72 +++++-------- src/SunSharp/SunSharp.csproj | 2 +- 12 files changed, 353 insertions(+), 150 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 src/SunSharp.Redistribution/LibraryHandlerBase.cs create mode 100644 src/SunSharp.Redistribution/LinuxLibraryHandler.cs create mode 100644 src/SunSharp.Redistribution/MacOsLibraryLoader.cs delete mode 100644 src/SunSharp.Redistribution/UnixLibraryHandler.cs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e4e2881 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,101 @@ +name: Build and Test + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + inputs: + build-packages: + description: 'Whether to build NuGet packages.' + required: false + default: 'false' + type: boolean + +permissions: + contents: read + +run-name: Build and Test SunSharp + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + fail-fast: false + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '10.0.x' + + - name: Restore dependencies + run: dotnet restore src/SunSharp.sln + + - name: Run CodeGeneration tests + run: dotnet test src/CodeGeneration.Tests/CodeGeneration.Tests.csproj --configuration Generation --verbosity normal --logger "trx;LogFileName=codegen-test-results.trx" + continue-on-error: false + + - name: Run unit tests + run: dotnet test src/SunSharp.Tests/SunSharp.Tests.csproj --configuration Debug --verbosity normal --logger "trx;LogFileName=test-results.trx" + continue-on-error: true + + - name: Run integration tests + run: dotnet test src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj --configuration Release --verbosity normal --logger "trx;LogFileName=integration-test-results.trx" + continue-on-error: true + + - name: Upload test results + uses: actions/upload-artifact@v4 + if: always() + with: + name: test-results-${{ matrix.os }}-${{ matrix.dotnet-version }} + path: '**/*.trx' + retention-days: 1 + + package: + runs-on: ubuntu-latest + if: > + (github.event_name == 'push' && github.ref == 'refs/heads/main') + || (github.event_name == 'workflow_dispatch' && github.event.inputs.build-packages == 'true') + needs: build + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '10.0.x' + + - name: Restore dependencies + run: dotnet restore src/SunSharp.sln + + - name: Build solution + run: dotnet build src/SunSharp.sln --configuration Release --no-restore + + - name: Pack SunSharp + run: dotnet pack src/SunSharp/SunSharp.csproj --configuration Release --no-build --output ./artifacts + + - name: Pack SunSharp.Redistribution + run: dotnet pack src/SunSharp.Redistribution/SunSharp.Redistribution.csproj --configuration Release --no-build --output ./artifacts + + - name: Upload NuGet packages + uses: actions/upload-artifact@v4 + with: + name: nuget-packages + path: ./artifacts/*.nupkg + retention-days: 1 + + - name: Upload NuGet symbols + uses: actions/upload-artifact@v4 + with: + name: nuget-symbols + path: ./artifacts/*.snupkg + retention-days: 1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7de93d7..044a50c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -28,11 +28,14 @@ on: permissions: contents: read pages: write + id-token: write concurrency: group: "pages" cancel-in-progress: false +run-name: Build and Deploy Documentation + jobs: build: runs-on: ubuntu-latest @@ -48,6 +51,9 @@ jobs: - name: Install DocFX run: dotnet tool install -g docfx + - name: Restore dependencies + run: dotnet restore src/SunSharp.sln + - name: Generate API metadata run: docfx metadata docs/docfx.json diff --git a/scripts/generate-docs.sh b/scripts/generate-docs.sh index 8154578..2d4a984 100644 --- a/scripts/generate-docs.sh +++ b/scripts/generate-docs.sh @@ -47,6 +47,8 @@ clean() { } serve() { + echo "Restoring project dependencies" + dotnet restore src/SunSharp.sln echo "Serving documentation with hot-reload" echo "Press Ctrl+C to stop" $DOCFX_CMD "$PROJECT_DIR/docs/docfx.json" --serve diff --git a/src/CodeGeneration/GeneratorDiscovery.cs b/src/CodeGeneration/GeneratorDiscovery.cs index ea01db8..4147c18 100644 --- a/src/CodeGeneration/GeneratorDiscovery.cs +++ b/src/CodeGeneration/GeneratorDiscovery.cs @@ -61,7 +61,7 @@ public async Task GenerateAsync(CancellationToken cancellationT originalFileContent = await File.ReadAllTextAsync(targetPath, cancellationToken).ConfigureAwait(false); } - var sourceCodeIsTheSame = string.Equals(source, originalFileContent, StringComparison.Ordinal); + var sourceCodeIsTheSame = string.Equals(source.ReplaceLineEndings(), originalFileContent?.ReplaceLineEndings(), StringComparison.Ordinal); return sourceCodeIsTheSame ? GeneratorResult.SuccessNoChanges(Name, targetPath) : GeneratorResult.SuccessWithChanges(Name, targetPath, source); diff --git a/src/SunSharp.Redistribution/LibraryHandlerBase.cs b/src/SunSharp.Redistribution/LibraryHandlerBase.cs new file mode 100644 index 0000000..faed39c --- /dev/null +++ b/src/SunSharp.Redistribution/LibraryHandlerBase.cs @@ -0,0 +1,63 @@ +using System; +using System.Runtime.InteropServices; +using SunSharp.Native.Loader; + +namespace SunSharp.Redistribution +{ + internal abstract class LibraryHandlerBase : ILibraryHandler + { + private readonly object _lock = new object(); + private volatile IntPtr _ptr = IntPtr.Zero; + + protected LibraryHandlerBase(string path) + { + _path = path ?? throw new ArgumentNullException(nameof(path)); + } + + private readonly string _path; + protected string Path => _path; + protected object Lock => _lock; + protected IntPtr Handle + { + get => _ptr; + set => _ptr = value; + } + + public bool IsLibraryLoaded => _ptr != IntPtr.Zero; + + public abstract void LoadLibrary(); + public abstract void UnloadLibrary(); + + public Delegate GetFunctionByName(string name, Type delegateType) + { + ValidateDelegateType(delegateType); + + lock (_lock) + { + if (!IsLibraryLoaded) + { + throw new LibraryLoadingException("SunVoxLib is not loaded."); + } + + var ptr = GetFunctionPointer(_ptr, name); + if (ptr != IntPtr.Zero) + { + return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); + } + + throw CreateFunctionLoadException(name); + } + } + + protected abstract IntPtr GetFunctionPointer(IntPtr handle, string name); + protected abstract Exception CreateFunctionLoadException(string name); + + private static void ValidateDelegateType(Type delegateType) + { + if (!typeof(Delegate).IsAssignableFrom(delegateType)) + { + throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); + } + } + } +} diff --git a/src/SunSharp.Redistribution/LibraryLoader.cs b/src/SunSharp.Redistribution/LibraryLoader.cs index 0d6adb8..fdcc657 100644 --- a/src/SunSharp.Redistribution/LibraryLoader.cs +++ b/src/SunSharp.Redistribution/LibraryLoader.cs @@ -66,7 +66,7 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() throw new DllNotFoundException($"The SunVox library was not found at the expected location: {path}"); } - return new UnixLibraryHandler(path); + return new LinuxLibraryHandler(path); } if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) @@ -83,7 +83,7 @@ private static ILibraryHandler GetPlatformSpecificLibraryHandler() throw new DllNotFoundException($"The SunVox library was not found at the expected location: {path}"); } - return new UnixLibraryHandler(path); + return new MacOsLibraryLoader(path); } throw new PlatformNotSupportedException(errorMessage); diff --git a/src/SunSharp.Redistribution/LinuxLibraryHandler.cs b/src/SunSharp.Redistribution/LinuxLibraryHandler.cs new file mode 100644 index 0000000..c98043d --- /dev/null +++ b/src/SunSharp.Redistribution/LinuxLibraryHandler.cs @@ -0,0 +1,76 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Redistribution +{ + internal sealed class LinuxLibraryHandler : LibraryHandlerBase + { + public LinuxLibraryHandler(string path) : base(path) + { + } + + public override void LoadLibrary() + { + lock (Lock) + { + if (IsLibraryLoaded) + { + return; + } + + var ptr = dlopen(Path, 0x002); + if (ptr == IntPtr.Zero) + { + var error = dlerror() ?? ""; + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{Path}' with error '{error}'."); + } + + Handle = ptr; + } + } + + public override void UnloadLibrary() + { + lock (Lock) + { + if (!IsLibraryLoaded) + { + return; + } + + var code = dlclose(Handle); + if (code != 0) + { + var error = dlerror() ?? ""; + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error '{error}'."); + } + + Handle = IntPtr.Zero; + } + } + + protected override IntPtr GetFunctionPointer(IntPtr handle, string name) + { + return dlsym(handle, name); + } + + protected override Exception CreateFunctionLoadException(string name) + { + var error = dlerror(); + return new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error}'."); + } + + [DllImport("libdl.so.2", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + public static extern IntPtr dlopen([MarshalAs(UnmanagedType.LPUTF8Str)] string filename, int flags); + + [DllImport("libdl.so.2", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + public static extern IntPtr dlsym(IntPtr handle, [MarshalAs(UnmanagedType.LPUTF8Str)] string symbol); + + [DllImport("libdl.so.2")] + public static extern int dlclose(IntPtr handle); + + [DllImport("libdl.so.2", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + [return: MarshalAs(UnmanagedType.LPUTF8Str)] + public static extern string? dlerror(); + } +} diff --git a/src/SunSharp.Redistribution/MacOsLibraryLoader.cs b/src/SunSharp.Redistribution/MacOsLibraryLoader.cs new file mode 100644 index 0000000..d96c197 --- /dev/null +++ b/src/SunSharp.Redistribution/MacOsLibraryLoader.cs @@ -0,0 +1,76 @@ +using System; +using System.Runtime.InteropServices; + +namespace SunSharp.Redistribution +{ + internal sealed class MacOsLibraryLoader : LibraryHandlerBase + { + public MacOsLibraryLoader(string path) : base(path) + { + } + + public override void LoadLibrary() + { + lock (Lock) + { + if (IsLibraryLoaded) + { + return; + } + + var ptr = dlopen(Path, 0); + if (ptr == IntPtr.Zero) + { + var error = dlerror() ?? ""; + throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{Path}' with error '{error}'."); + } + + Handle = ptr; + } + } + + public override void UnloadLibrary() + { + lock (Lock) + { + if (!IsLibraryLoaded) + { + return; + } + + var code = dlclose(Handle); + if (code != 0) + { + var error = dlerror() ?? ""; + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error '{error}'."); + } + + Handle = IntPtr.Zero; + } + } + + protected override IntPtr GetFunctionPointer(IntPtr handle, string name) + { + return dlsym(handle, name); + } + + protected override Exception CreateFunctionLoadException(string name) + { + var error = dlerror(); + return new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error}'."); + } + + [DllImport("libSystem.dylib", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + public static extern IntPtr dlopen([MarshalAs(UnmanagedType.LPUTF8Str)] string filename, int flags); + + [DllImport("libSystem.dylib", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + public static extern IntPtr dlsym(IntPtr handle, [MarshalAs(UnmanagedType.LPUTF8Str)] string symbol); + + [DllImport("libSystem.dylib")] + public static extern int dlclose(IntPtr handle); + + [DllImport("libSystem.dylib", CharSet = CharSet.Unicode, BestFitMapping = false, ThrowOnUnmappableChar = true)] + [return: MarshalAs(UnmanagedType.LPUTF8Str)] + public static extern string? dlerror(); + } +} diff --git a/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj b/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj index cea6510..bb477b0 100644 --- a/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj +++ b/src/SunSharp.Redistribution/SunSharp.Redistribution.csproj @@ -6,7 +6,7 @@ True Sotakebk.SunSharp.Redistribution SunSharp.Redistribution - 2.0.0-dev0 + 2.0.0-dev20260205 0.0.0.0 Sotakebk SunSharp.Redistribution diff --git a/src/SunSharp.Redistribution/UnixLibraryHandler.cs b/src/SunSharp.Redistribution/UnixLibraryHandler.cs deleted file mode 100644 index 6d9f1b7..0000000 --- a/src/SunSharp.Redistribution/UnixLibraryHandler.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using SunSharp.Native.Loader; - -namespace SunSharp.Redistribution -{ - internal sealed class UnixLibraryHandler : ILibraryHandler - { - private readonly object _lock = new object(); - private readonly string _path; - private volatile IntPtr _ptr = IntPtr.Zero; - - public UnixLibraryHandler(string path) - { - _path = path; - } - - public bool IsLibraryLoaded => _ptr != IntPtr.Zero; - - public void LoadLibrary() - { - lock (_lock) - { - if (IsLibraryLoaded) - { - return; - } - - var ptr = dlopen(_path, 0); - if (ptr == IntPtr.Zero) - { - var error = dlerror(); - throw new LibraryLoadingException($"Failed to load SunVoxLib from path '{_path}' with error '{error}'."); - } - - _ptr = ptr; - } - } - - public void UnloadLibrary() - { - lock (_lock) - { - if (!IsLibraryLoaded) - { - return; - } - - var code = dlclose(_ptr); - if (code != 0) - { - var error = dlerror(); - throw new LibraryLoadingException($"Failed to unload SunVoxLib with error '{error}'."); - } - - _ptr = IntPtr.Zero; - } - } - - public Delegate GetFunctionByName(string name, Type delegateType) - { - if (delegateType.IsAssignableFrom(typeof(Delegate))) - { - throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); - } - - lock (_lock) - { - if (!IsLibraryLoaded) - { - throw new LibraryLoadingException("SunVoxLib is not loaded."); - } - - var ptr = dlsym(_ptr, name); - if (ptr != IntPtr.Zero) - { - return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); - } - - var error = dlerror(); - throw new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error}'."); - } - } - - [DllImport("libdl.so", CharSet = CharSet.Unicode)] - public static extern IntPtr dlopen(string filename, int flags); - - [DllImport("libdl.so", CharSet = CharSet.Unicode)] - public static extern IntPtr dlsym(IntPtr handle, string symbol); - - [DllImport("libdl.so")] - public static extern int dlclose(IntPtr handle); - - [DllImport("libdl.so", CharSet = CharSet.Unicode)] - public static extern string dlerror(); - } -} diff --git a/src/SunSharp.Redistribution/WindowsLibraryHandler.cs b/src/SunSharp.Redistribution/WindowsLibraryHandler.cs index 03c1c20..7ba41bd 100644 --- a/src/SunSharp.Redistribution/WindowsLibraryHandler.cs +++ b/src/SunSharp.Redistribution/WindowsLibraryHandler.cs @@ -1,54 +1,46 @@ using System; using System.Runtime.InteropServices; -using SunSharp.Native.Loader; namespace SunSharp.Redistribution { - internal sealed class WindowsLibraryHandler : ILibraryHandler + internal sealed class WindowsLibraryHandler : LibraryHandlerBase { - private readonly object _lock = new object(); - private readonly string _path; - private volatile IntPtr _ptr = IntPtr.Zero; - - public WindowsLibraryHandler(string path) + public WindowsLibraryHandler(string path) : base(path) { - _path = path; } - public bool IsLibraryLoaded => _ptr != IntPtr.Zero; - - public void LoadLibrary() + public override void LoadLibrary() { - lock (_lock) + lock (Lock) { if (IsLibraryLoaded) { - throw new LibraryLoadingException("SunVoxLib is already loaded."); + return; } - var ptr = LoadLibrary(_path); + var ptr = LoadLibraryW(Path); if (ptr == IntPtr.Zero) { var error = Marshal.GetHRForLastWin32Error(); throw new LibraryLoadingException( - $"Failed to load SunVoxLib from path '{_path}' with error '{error:X8}'."); + $"Failed to load SunVoxLib from path '{Path}' with error '{error:X8}'."); } - _ptr = ptr; + Handle = ptr; } } - public void UnloadLibrary() + public override void UnloadLibrary() { - lock (_lock) + lock (Lock) { if (!IsLibraryLoaded) { - throw new LibraryLoadingException("SunVoxLib is not loaded."); + return; } - var ptr = _ptr; - _ptr = IntPtr.Zero; + var ptr = Handle; + Handle = IntPtr.Zero; var value = FreeLibrary(ptr); if (value != 0) { @@ -56,41 +48,25 @@ public void UnloadLibrary() } var error = Marshal.GetHRForLastWin32Error(); - throw new LibraryLoadingException($"Failed to unload SunVoxLib with error error '{error:X8}'."); + throw new LibraryLoadingException($"Failed to unload SunVoxLib with error '{error:X8}'."); } } - public Delegate GetFunctionByName(string name, Type delegateType) + protected override IntPtr GetFunctionPointer(IntPtr handle, string name) { - if (delegateType.IsAssignableFrom(typeof(Delegate))) - { - throw new ArgumentException($"Type {delegateType.Name} is not a delegate type"); - } - - lock (_lock) - { - if (!IsLibraryLoaded) - { - throw new LibraryLoadingException("SunVoxLib is not loaded."); - } - - var ptr = GetProcAddress(_ptr, name); - if (ptr != IntPtr.Zero) - { - return Marshal.GetDelegateForFunctionPointer(ptr, delegateType); - } + return GetProcAddress(handle, name); + } - var error = Marshal.GetHRForLastWin32Error(); - throw new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error:X8}'."); - } + protected override Exception CreateFunctionLoadException(string name) + { + var error = Marshal.GetHRForLastWin32Error(); + return new LibraryLoadingException($"Failed to load SunVoxLib function '{name}' with error '{error:X8}'."); } - [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, - CharSet = CharSet.Ansi)] - private static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string dllToLoad); + [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)] + static extern IntPtr LoadLibraryW([MarshalAs(UnmanagedType.LPWStr)] string lpFilename); - [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, - CharSet = CharSet.Ansi)] + [DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true, CharSet = CharSet.Ansi)] private static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procedureName); diff --git a/src/SunSharp/SunSharp.csproj b/src/SunSharp/SunSharp.csproj index ebef059..9c5f858 100644 --- a/src/SunSharp/SunSharp.csproj +++ b/src/SunSharp/SunSharp.csproj @@ -13,7 +13,7 @@ https://github.com/Sotakebk/SunSharp.git git sunvox;music;wrapper - 2.0.0-dev0 + 2.0.0-dev20260205 0.0.0.0 True True From 0403c86704acd7eb33d6c5fa2d663bd5c17bde0c Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:14:36 +0100 Subject: [PATCH 23/27] improvements, PR workflow, some documentation --- .github/workflows/build.yml | 129 +++++++++--------- .github/workflows/docs.yml | 24 ++-- .github/workflows/pr_validation.yml | 57 ++++++++ README.md | 19 ++- docs/articles/contributing.md | 14 +- docs/articles/getting-started.md | 55 ++++++++ examples/.gitignore | 6 + examples/Examples/Example1/Example1.csproj | 14 ++ examples/Examples/Example1/Program.cs | 82 +++++++++++ examples/Examples/Example2/Example2.csproj | 20 +++ examples/Examples/Example2/Program.cs | 28 ++++ .../Examples/Example2/bass_and_melody.sunvox | Bin 0 -> 3112 bytes examples/Examples/Examples.slnx | 6 + .../Generators/OwnData/ModuleDataGenerator.cs | 44 +++--- .../AudioTests/BaseAudioTest.cs | 11 ++ .../AudioTests/SimpleAudioTest.cs | 7 +- .../BaseIntegrationTest.cs | 4 +- ...ibraryLoader.cs => SunVoxLibraryLoader.cs} | 2 +- src/SunSharp.Tests/SunVoxTests.cs | 76 +++++------ src/SunSharp/SunSharp.csproj | 6 +- src/SunSharp/SunVox.cs | 101 ++++++++++---- src/SunSharp/Synthesizer.cs | 13 ++ 22 files changed, 533 insertions(+), 185 deletions(-) create mode 100644 .github/workflows/pr_validation.yml create mode 100644 examples/.gitignore create mode 100644 examples/Examples/Example1/Example1.csproj create mode 100644 examples/Examples/Example1/Program.cs create mode 100644 examples/Examples/Example2/Example2.csproj create mode 100644 examples/Examples/Example2/Program.cs create mode 100644 examples/Examples/Example2/bass_and_melody.sunvox create mode 100644 examples/Examples/Examples.slnx rename src/SunSharp.Redistribution/{LibraryLoader.cs => SunVoxLibraryLoader.cs} (99%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e4e2881..ee5371b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,15 +2,15 @@ name: Build and Test on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] workflow_dispatch: inputs: build-packages: - description: 'Whether to build NuGet packages.' + description: "Whether to build NuGet packages." required: false - default: 'false' + default: "false" type: boolean permissions: @@ -27,36 +27,33 @@ jobs: fail-fast: false steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '10.0.x' - - - name: Restore dependencies - run: dotnet restore src/SunSharp.sln - - - name: Run CodeGeneration tests - run: dotnet test src/CodeGeneration.Tests/CodeGeneration.Tests.csproj --configuration Generation --verbosity normal --logger "trx;LogFileName=codegen-test-results.trx" - continue-on-error: false - - - name: Run unit tests - run: dotnet test src/SunSharp.Tests/SunSharp.Tests.csproj --configuration Debug --verbosity normal --logger "trx;LogFileName=test-results.trx" - continue-on-error: true - - - name: Run integration tests - run: dotnet test src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj --configuration Release --verbosity normal --logger "trx;LogFileName=integration-test-results.trx" - continue-on-error: true - - - name: Upload test results - uses: actions/upload-artifact@v4 - if: always() - with: - name: test-results-${{ matrix.os }}-${{ matrix.dotnet-version }} - path: '**/*.trx' - retention-days: 1 + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "10.0.x" + + - name: Run CodeGeneration tests + run: dotnet test src/CodeGeneration.Tests/CodeGeneration.Tests.csproj --configuration Generation --verbosity normal --logger "trx;LogFileName=codegen-test-results.trx" + continue-on-error: false + + - name: Run unit tests + run: dotnet test src/SunSharp.Tests/SunSharp.Tests.csproj --configuration Debug --verbosity normal --logger "trx;LogFileName=test-results.trx" + continue-on-error: true + + - name: Run integration tests + run: dotnet test src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj --configuration Release --verbosity normal --logger "trx;LogFileName=integration-test-results.trx" + continue-on-error: true + + - name: Upload test results + uses: actions/upload-artifact@v4 + if: always() + with: + name: test-results-${{ matrix.os }}-${{ matrix.dotnet-version }} + path: "**/*.trx" + retention-days: 1 package: runs-on: ubuntu-latest @@ -64,38 +61,34 @@ jobs: (github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'workflow_dispatch' && github.event.inputs.build-packages == 'true') needs: build - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '10.0.x' - - - name: Restore dependencies - run: dotnet restore src/SunSharp.sln - - - name: Build solution - run: dotnet build src/SunSharp.sln --configuration Release --no-restore - - - name: Pack SunSharp - run: dotnet pack src/SunSharp/SunSharp.csproj --configuration Release --no-build --output ./artifacts - - - name: Pack SunSharp.Redistribution - run: dotnet pack src/SunSharp.Redistribution/SunSharp.Redistribution.csproj --configuration Release --no-build --output ./artifacts - - - name: Upload NuGet packages - uses: actions/upload-artifact@v4 - with: - name: nuget-packages - path: ./artifacts/*.nupkg - retention-days: 1 - - - name: Upload NuGet symbols - uses: actions/upload-artifact@v4 - with: - name: nuget-symbols - path: ./artifacts/*.snupkg - retention-days: 1 + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "10.0.x" + + - name: Build solution + run: dotnet build src/SunSharp.sln --configuration Release + + - name: Pack SunSharp + run: dotnet pack src/SunSharp/SunSharp.csproj --configuration Release --no-build --output ./artifacts + + - name: Pack SunSharp.Redistribution + run: dotnet pack src/SunSharp.Redistribution/SunSharp.Redistribution.csproj --configuration Release --no-build --output ./artifacts + + - name: Upload NuGet packages + uses: actions/upload-artifact@v4 + with: + name: nuget-packages + path: ./artifacts/*.nupkg + retention-days: 1 + + - name: Upload NuGet symbols + uses: actions/upload-artifact@v4 + with: + name: nuget-symbols + path: ./artifacts/*.snupkg + retention-days: 1 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 044a50c..f2e4994 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,26 +4,26 @@ on: workflow_dispatch: inputs: publish: - description: 'Whether to publish the generated documentation to GitHub Pages.' + description: "Whether to publish the generated documentation to GitHub Pages." required: false - default: 'false' + default: "false" type: boolean - + push: branches: ["main"] paths: - - 'docs/**' - - 'SunSharp/**' - - 'SunSharp.Redistribution/**' - - '.github/workflows/docs.yml' + - "docs/**" + - "SunSharp/**" + - "SunSharp.Redistribution/**" + - ".github/workflows/docs.yml" pull_request: branches: ["main"] paths: - - 'docs/**' - - 'SunSharp/**' - - 'SunSharp.Redistribution/**' - - '.github/workflows/docs.yml' + - "docs/**" + - "SunSharp/**" + - "SunSharp.Redistribution/**" + - ".github/workflows/docs.yml" permissions: contents: read @@ -46,7 +46,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: '10.0.x' + dotnet-version: "10.0.x" - name: Install DocFX run: dotnet tool install -g docfx diff --git a/.github/workflows/pr_validation.yml b/.github/workflows/pr_validation.yml new file mode 100644 index 0000000..a64c86b --- /dev/null +++ b/.github/workflows/pr_validation.yml @@ -0,0 +1,57 @@ +name: PR Validation + +on: + pull_request: + branches: ["main"] + +permissions: + contents: read + +run-name: Build and Deploy Documentation + +jobs: + build-docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "10.0.x" + + - name: Install DocFX + run: dotnet tool install -g docfx + + - name: Generate API metadata + run: docfx metadata docs/docfx.json + + - name: Build documentation + run: docfx build docs/docfx.json + + build-and-run-tests: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: "10.0.x" + + - name: Run CodeGeneration tests + run: dotnet test src/CodeGeneration.Tests/CodeGeneration.Tests.csproj --configuration Generation --verbosity normal --logger "trx;LogFileName=codegen-test-results.trx" + continue-on-error: false + + - name: Run unit tests + run: dotnet test src/SunSharp.Tests/SunSharp.Tests.csproj --configuration Debug --verbosity normal --logger "trx;LogFileName=test-results.trx" + continue-on-error: true + + - name: Run integration tests + run: dotnet test src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj --configuration Release --verbosity normal --logger "trx;LogFileName=integration-test-results.trx" + continue-on-error: true + + - name: Build examples + run: dotnet build examples/Examples.sln --configuration Release \ No newline at end of file diff --git a/README.md b/README.md index 914b323..6a679fc 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,29 @@ Depending on the engine, a dedicated package may be available: - Unity: [SunSharpUnity](https://github.com/Sotakebk/SunSharpUnity); - Godot: (in progress) +If you need testability in your project, the API has full interface coverage, allowing you to mock the SunVox library calls with ease. + ### How To Use Quick start example: ```csharp -// TODO +using SunSharp; +using SunSharp.Redistribution; + +var libc = SunVoxLibraryLoader.Load(); +using var sunVox = SunVox.WithOwnAudioStream(libc); +var slot = sunVox.Slots[0]; + +slot.Open(); +slot.Load("bass_and_melody.sunvox"); +slot.SetAutomaticStop(false); +slot.StartPlaybackFromBeginning(); + +do +{ + Thread.Sleep(100); +} while (slot.IsPlaying() || slot.GetCurrentSignalLevel() > 0); ``` There is code available in the [examples](/examples) folder of the repository that contains source code for simple console applications demonstrating the usage of the wrapper. diff --git a/docs/articles/contributing.md b/docs/articles/contributing.md index 39b7625..8003b9d 100644 --- a/docs/articles/contributing.md +++ b/docs/articles/contributing.md @@ -1 +1,13 @@ -# Getting Started with SunSharp +# Contributing + +Parts of the code are generated using code generation tools. This should, in theory, allow for easier maintenance, especially if upgrading the underlying SunVox library to a newer version. This way parts of the code can be regenerated automatically. + +This is the reason why there is a special "SUNSHARP_GENERATION" constant and a build configuration named "Generation". When running the code generation project, the generated code is automatically updated. The same generators are also used in the unit tests to verify that the generated code is correct and up to date. + +Because the CodeGeneration project depends on the main SunSharp project, it is not possible to run it as a pre-build step. Instead, it needs to be run manually whenever the generated code needs to be updated. This is done to avoid potential issues with build order and dependencies. Additionally, this also causes the need for preprocessor directives to exclude parts of code that depend on, or that are generated by, the CodeGeneration project when building in the "Generation" configuration. + +Additionally, to reduce runtime overhead, the code is built with a struct for a wrapper around the C interface in release mode, and an interface in debug mode. This mainly affects the object-oriented API, as the functional API is mostly simple function calls. + +## Pull Requests + +There is a github workflow that runs on pull requests to validate the changes. It runs the unit tests, integration tests, builds the solution, and builds the documentation. diff --git a/docs/articles/getting-started.md b/docs/articles/getting-started.md index 39b7625..74e9093 100644 --- a/docs/articles/getting-started.md +++ b/docs/articles/getting-started.md @@ -1 +1,56 @@ # Getting Started with SunSharp + +For API reference and documentation, please visit the [GitHub Pages site](https://sotakebk.github.io/SunSharp/). +Information about the underlying SunVox Library can be found on the [official SunVox website](https://warmplace.ru/soft/sunvox/sunvox_lib.php). + +## Packages + +Two packages are available on NuGet: + +- [SunSharp](https://www.nuget.org/packages/Sotakebk.SunSharp/) ![Nuget](https://img.shields.io/nuget/vpre/Sotakebk.SunSharp) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp) +- [SunSharp.Redistribution](https://www.nuget.org/packages/Sotakebk.SunSharp.Redistribution/) ![Nuget](https://img.shields.io/nuget/vpre/Sotakebk.SunSharp.Redistribution) ![Nuget](https://img.shields.io/nuget/dt/Sotakebk.SunSharp.Redistribution) + +For future development, please consider using the `2.0.0-dev` pre-release versions of the packages, as they contain major improvements, new features, and bug fixes. + +The `SunSharp` package contains the C# wrapper code only, while the `SunSharp.Redistribution` package contains pre-built SunVox library binaries for multiple platforms and a loader for them. Depending on your use case, you may choose to use only the `SunSharp` package and provide your own SunVox library binaries. If you are working with a game engine, you may need to bind the library manually. + +Depending on the engine, a dedicated package may be available: + +- Unity: [SunSharpUnity](https://github.com/Sotakebk/SunSharpUnity); +- Godot: (in progress) + +## Usage + +There are two methods of using the wrapper in your project: + +- using the object-oriented API, which provides a more user-friendly interface and is recommended for most use cases; +- using the functional API, which provides a more direct mapping to the underlying C API and may be useful for advanced users or for performance-critical code. + +## Testability + +If you need testability in your project, the API has full interface coverage, allowing you to mock the SunVox library calls with ease. + +## Examples + +For a quick start, see the example below: + +```csharp +using SunSharp; +using SunSharp.Redistribution; + +var libc = SunVoxLibraryLoader.Load(); +using var sunVox = SunVox.WithOwnAudioStream(libc); +var slot = sunVox.Slots[0]; + +slot.Open(); +slot.Load("bass_and_melody.sunvox"); +slot.SetAutomaticStop(false); +slot.StartPlaybackFromBeginning(); + +do +{ + Thread.Sleep(100); +} while (slot.IsPlaying() || slot.GetCurrentSignalLevel() > 0); +``` + +There is code available in the [examples](https://github.com/Sotakebk/SunSharp/tree/master/Examples) folder of the repository that contains source code for simple console applications demonstrating the usage of the wrapper. diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..ca202c8 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,6 @@ +**/[Bb]in +**/[Oo]bj +.vs +.editorconfig +*.DotSettings.user +[Tt]est[Rr]esults diff --git a/examples/Examples/Example1/Example1.csproj b/examples/Examples/Example1/Example1.csproj new file mode 100644 index 0000000..f5bdf8a --- /dev/null +++ b/examples/Examples/Example1/Example1.csproj @@ -0,0 +1,14 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + diff --git a/examples/Examples/Example1/Program.cs b/examples/Examples/Example1/Program.cs new file mode 100644 index 0000000..8256eb4 --- /dev/null +++ b/examples/Examples/Example1/Program.cs @@ -0,0 +1,82 @@ +using SunSharp; +using SunSharp.Modules; +using SunSharp.Redistribution; + +var libc = SunVoxLibraryLoader.Load(); +using var sunVox = SunVox.WithOwnAudioStream(libc); + +if (!sunVox.Slots.TryOpenNewSlot(out var slot)) +{ + return -1; +} + +// construct a simple arpeggiated melody in a pattern +using (var l = slot.AcquireLock()) +{ + var generator = slot.Synthesizer.CreateModule(SynthModuleType.Generator, "generator").AsGenerator(); + generator.SetAttack(0); + generator.SetSustain(Toggle.Off); + generator.SetRelease(100); + + var echo = slot.Synthesizer.CreateModule(SynthModuleType.Echo, "echo").AsEcho(); + echo.SetDelayUnit(EchoDelayUnit.OneThirdLine); + echo.SetDelay(4); + echo.SetFeedback(60); + + var delay = slot.Synthesizer.CreateModule(SynthModuleType.Delay, "delay").AsDelay(); + delay.SetDelayUnit(DelayUnit.Line); + delay.SetDelayL(2); + delay.SetDelayR(3); + delay.SetInverse(Toggle.On); + delay.SetWet(250); + delay.SetDry(512); + + generator.ConnectOutput(delay); + delay.ConnectOutput(echo); + echo.ConnectOutput(slot.Synthesizer.Output); + + var chord1 = new[] + { + Note.C(4), Note.E(4), Note.G(4), Note.A(4) + }; + + var chord2 = new[] + { + Note.A(3), Note.D(4), Note.F(4), Note.G(4) + }; + + var chord3 = new[] + { + Note.B(3), Note.C(4), Note.E(4), Note.F(4) + }; + + var chords = new[] { chord1, chord2, chord3, chord1 }; + + var indices = new[] { 0, 1, 2, 3, 1, 0 }; + + var length = chords.Length * indices.Length * 2; + var pattern = slot.Timeline.CreatePattern(lines: length + 2, tracks: 1, x: 0, y: 0); + + for (int i = 0; i < length; i += 2) + { + var index = indices[i / 2 % indices.Length]; + var chord = (i /2) / indices.Length % chords.Length; + + pattern.SetEvent(0, i, generator.MakeNoteEvent(chords[chord][index])); + } + + pattern.SetEvent(0, length + 1, generator.MakeNoteEvent(Note.C(4))); +} + +slot.VirtualPattern.SetEventTiming(0); +slot.VirtualPattern.SendEvent(0, PatternEvent.EffectEvent(null, Effect.SetBpm, 89)); + +slot.SetAutomaticStop(true); +slot.StartPlaybackFromBeginning(); +List buffers = []; +do +{ + Thread.Sleep(100); +} while (slot.IsPlaying() || slot.GetCurrentSignalLevel() > 1); + +return 0; diff --git a/examples/Examples/Example2/Example2.csproj b/examples/Examples/Example2/Example2.csproj new file mode 100644 index 0000000..45dfc50 --- /dev/null +++ b/examples/Examples/Example2/Example2.csproj @@ -0,0 +1,20 @@ + + + + Exe + net10.0 + enable + enable + + + + + PreserveNewest + + + + + + + + diff --git a/examples/Examples/Example2/Program.cs b/examples/Examples/Example2/Program.cs new file mode 100644 index 0000000..bb65358 --- /dev/null +++ b/examples/Examples/Example2/Program.cs @@ -0,0 +1,28 @@ +using SunSharp; +using SunSharp.Redistribution; + +var libc = SunVoxLibraryLoader.Load(); +using var sunVox = SunVox.WithOwnAudioStream(libc); + +if (!sunVox.Slots.TryOpenNewSlot(out var slot)) +{ + return -1; +} + +slot.Load("bass_and_melody.sunvox"); +slot.SetAutomaticStop(false); +slot.StartPlaybackFromBeginning(); + +var start = DateTime.UtcNow; +do +{ + Thread.Sleep(100); +} while (DateTime.UtcNow - start < TimeSpan.FromSeconds(10)); +slot.SetAutomaticStop(true); + +do +{ + Thread.Sleep(100); +} while (slot.IsPlaying() || slot.GetCurrentSignalLevel() > 0); + +return 0; diff --git a/examples/Examples/Example2/bass_and_melody.sunvox b/examples/Examples/Example2/bass_and_melody.sunvox new file mode 100644 index 0000000000000000000000000000000000000000..d3f33effb896c140031ce917577100be45be3f7c GIT binary patch literal 3112 zcmds2&2AGh5O!LMC_;jW3sNqNgv2RQQhubK$Yy_%Rd%yhyb0NysH&oRGp> z@DxZq0HSZu_u$5X^D^W0Y}`%Kbc2KtuD1UC`SaMG8BfF@95QGFrzdV9*x4^NVUS@S z7>GZ@C%9uHz71d0>Pd{_)*$q;zl5)A22L6JgIfJ%wRTuNcwyA*)#ryS5SA3N5@W$A z3~_w?ckoz@&~FmEek=2#XNAZy zHk;Y~*=e~yo62GCA9q_8#sV5|rZ7no?z&mD`EWSQtj2MiVW(@$Whz3iSUU4e^-on# zyqlY^-&1yIp3X({#J|qzxEkB4Cp)x$`v{d9yKnaR ze!FZxZkpz&MoIgFuv{A<%#KwNdV;))kWkUIfD`cY4d}z^NQ{VV&34q7%u^Pff3D9^PGOzCoNwuWNMs>oAsWTDznPJo__} zX-odK9;&STIg@v2cLU5tdH=Q@HPm5chvXK`YA*^a;Pm$!?1)@$e}IiCx1Hm+ + + + + + diff --git a/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs b/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs index d03139c..f0bae03 100644 --- a/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs +++ b/src/CodeGeneration/Generators/OwnData/ModuleDataGenerator.cs @@ -46,41 +46,29 @@ protected override string GenerateBody() private static KnownModuleData ReadModuleDataFromSunVox() { - bool loaded = false; - try - { - var instance = LibraryLoader.Load(); - loaded = true; - var thinWrapper = new SunVoxLib(instance); + var instance = SunVoxLibraryLoader.Load(); + var thinWrapper = new SunVoxLib(instance); #if SUNSHARP_RELEASE - using var sunVox = new SunVox(instance, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); + using var sunVox = SunVox.WithUserManagedAudio(instance, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); #else - using var sunVox = new SunVox(thinWrapper, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); + using var sunVox = SunVox.WithUserManagedAudio(thinWrapper, 48000, OutputType.Float32, singleThreaded: true, noDebugOutput: false); #endif - var slot = sunVox.Slots[0]; + var slot = sunVox.Slots[0]; - slot.Open(); - foreach (var module in KnownModuleTypes.ModuleTypes.Where(m => m.Index > 0)) - { - thinWrapper.CreateModule(0, module.InternalName, module.InternalName); - } - var modules = CreateModuleDescriptions(slot); + slot.Open(); + foreach (var module in KnownModuleTypes.ModuleTypes.Where(m => m.Index > 0)) + { + thinWrapper.CreateModule(0, module.InternalName, module.InternalName); + } + var modules = CreateModuleDescriptions(slot); - slot.Close(); - Console.WriteLine("Logs: " + sunVox.GetLog(0xFFFF)); + slot.Close(); + Console.WriteLine("Logs: " + sunVox.GetLog(0xFFFF)); - return new KnownModuleData() - { - Modules = modules - }; - } - finally + return new KnownModuleData() { - if (loaded) - { - LibraryLoader.Unload(); - } - } + Modules = modules + }; } private static Dictionary CreateModuleDescriptions(Slot slot) diff --git a/src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs b/src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs index 2f6353e..297fe55 100644 --- a/src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs +++ b/src/SunSharp.IntegrationTests/AudioTests/BaseAudioTest.cs @@ -96,4 +96,15 @@ private object ComputeHash(byte[] data) var hashBytes = sha256.ComputeHash(data); return Convert.ToBase64String(hashBytes); } + + + protected SunVox MakeSunVoxWithUserManagedAudio(int sampleRate, OutputType outputType) + { + +#if SUNSHARP_RELEASE + return SunVox.WithUserManagedAudio(_libc!, sampleRate, outputType); +#else + return SunVox.WithUserManagedAudio(Lib, sampleRate, outputType); +#endif + } } diff --git a/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs b/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs index 55c1a50..4b1c18b 100644 --- a/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs +++ b/src/SunSharp.IntegrationTests/AudioTests/SimpleAudioTest.cs @@ -13,11 +13,8 @@ public void SimpleArpeggio() const string hash = "FLBVvS3nffTDsajOlBeceZsIero8UpCd4RFwyXhJBVM="; const int sampleRate = 44100; -#if SUNSHARP_RELEASE - using var sunVox = new SunVox(_libc!, 44100, OutputType.Int16); -#else - using var sunVox = new SunVox(Lib, 44100, OutputType.Int16); -#endif + using var sunVox = MakeSunVoxWithUserManagedAudio(sampleRate, OutputType.Int16); + if (!sunVox.Slots.TryOpenNewSlot(out var slot)) { Assert.Fail("Failed to open new slot"); diff --git a/src/SunSharp.IntegrationTests/BaseIntegrationTest.cs b/src/SunSharp.IntegrationTests/BaseIntegrationTest.cs index 215a54d..f2e766f 100644 --- a/src/SunSharp.IntegrationTests/BaseIntegrationTest.cs +++ b/src/SunSharp.IntegrationTests/BaseIntegrationTest.cs @@ -18,13 +18,13 @@ protected ISunVoxLibC GetLoadedLibrary() [OneTimeSetUp] protected virtual void OneTimeSetUp() { - _libc = LibraryLoader.Load(); + _libc = SunVoxLibraryLoader.Load(); } [OneTimeTearDown] protected virtual void OneTimeTearDown() { - LibraryLoader.Unload(); + SunVoxLibraryLoader.Unload(); } [SetUp] diff --git a/src/SunSharp.Redistribution/LibraryLoader.cs b/src/SunSharp.Redistribution/SunVoxLibraryLoader.cs similarity index 99% rename from src/SunSharp.Redistribution/LibraryLoader.cs rename to src/SunSharp.Redistribution/SunVoxLibraryLoader.cs index fdcc657..f399695 100644 --- a/src/SunSharp.Redistribution/LibraryLoader.cs +++ b/src/SunSharp.Redistribution/SunVoxLibraryLoader.cs @@ -22,7 +22,7 @@ namespace SunSharp.Redistribution /// any memory leaks. You should keep the same library instance loaded in most use-cases. /// /// - public static class LibraryLoader + public static class SunVoxLibraryLoader { private static readonly object Lock = new object(); diff --git a/src/SunSharp.Tests/SunVoxTests.cs b/src/SunSharp.Tests/SunVoxTests.cs index fd97874..0195c10 100644 --- a/src/SunSharp.Tests/SunVoxTests.cs +++ b/src/SunSharp.Tests/SunVoxTests.cs @@ -7,7 +7,7 @@ public class SunVoxTests #if !SUNSHARP_RELEASE [Test, AutoData] - public void Constructor_WithOwnAudioStream_ShouldInitializeCorrectly(int sampleRate) + public void WithOwnAudioStream_ShouldInitializeCorrectly(int sampleRate) { // Arrange var mockLib = Substitute.For(); @@ -17,7 +17,7 @@ public void Constructor_WithOwnAudioStream_ShouldInitializeCorrectly(int sampleR mockLib.GetSampleRate().Returns(expectedSampleRate); // Act - using var sunvox = new SunVox(mockLib, AudioChannels.Stereo); + using var sunvox = SunVox.WithOwnAudioStream(mockLib, AudioChannels.Stereo); // Assert sunvox.Channels.Should().Be(AudioChannels.Stereo); @@ -31,49 +31,49 @@ public void Constructor_WithOwnAudioStream_ShouldInitializeCorrectly(int sampleR } [Test] - public void Constructor_WithOwnAudioStream_WithBufferSize_ShouldIncludeInConfig() + public void WithOwnAudioStream_WithBufferSize_ShouldIncludeInConfig() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, bufferSize: 2048); + using var sunvox = SunVox.WithOwnAudioStream(mockLib, bufferSize: 2048); // Assert mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("buffer=2048")), Arg.Any(), Arg.Any()); } [Test] - public void Constructor_WithOwnAudioStream_WithDevices_ShouldIncludeInConfig() + public void WithOwnAudioStream_WithDevices_ShouldIncludeInConfig() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, deviceIn: "input_device", deviceOut: "output_device"); + using var sunvox = SunVox.WithOwnAudioStream(mockLib, deviceIn: "input_device", deviceOut: "output_device"); // Assert mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("audiodevice_in=input_device") && s.Contains("audiodevice=output_device")), Arg.Any(), Arg.Any()); } [Test] - public void Constructor_WithOwnAudioStream_WithDriver_ShouldIncludeInConfig() + public void WithOwnAudioStream_WithDriver_ShouldIncludeInConfig() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, driver: "asio"); + using var sunvox = SunVox.WithOwnAudioStream(mockLib, driver: "asio"); // Assert mockLib.Received(1).Initialize(-1, Arg.Is(s => s != null && s.Contains("audiodriver=asio")), Arg.Any(), Arg.Any()); } [Test, AutoData] - public void Constructor_WithUserCallback_Float32_ShouldInitializeCorrectly(int sampleRate) + public void WithUserManagedAudio_Float32_ShouldInitializeCorrectly(int sampleRate) { // Arrange var mockLib = Substitute.For(); @@ -81,7 +81,7 @@ public void Constructor_WithUserCallback_Float32_ShouldInitializeCorrectly(int s mockLib.GetSampleRate().Returns(sampleRate); // Act - using var sunvox = new SunVox(mockLib, sampleRate, OutputType.Float32, AudioChannels.Stereo); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, sampleRate, OutputType.Float32, AudioChannels.Stereo); // Assert sunvox.Channels.Should().Be(AudioChannels.Stereo); @@ -93,14 +93,14 @@ public void Constructor_WithUserCallback_Float32_ShouldInitializeCorrectly(int s } [Test, AutoData] - public void Constructor_WithUserCallback_Int16_ShouldInitializeCorrectly(int sampleRate) + public void WithUserManagedAudio_Int16_ShouldInitializeCorrectly(int sampleRate) { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, sampleRate, OutputType.Int16, AudioChannels.Stereo); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, sampleRate, OutputType.Int16, AudioChannels.Stereo); // Assert sunvox.OutputType.Should().Be(OutputType.Int16); @@ -109,42 +109,42 @@ public void Constructor_WithUserCallback_Int16_ShouldInitializeCorrectly(int sam } [Test] - public void Constructor_WithUserCallback_ShouldCallInitializeWithCorrectFlags() + public void WithUserManagedAudio_ShouldCallInitializeWithCorrectFlags() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32, singleThreaded: true, noDebugOutput: true); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32, singleThreaded: true, noDebugOutput: true); // Assert mockLib.Received(1).Initialize(44100, null, AudioChannels.Stereo, SunVoxInitOptions.UserAudioCallback | SunVoxInitOptions.NoDebugOutput | SunVoxInitOptions.AudioFloat32 | SunVoxInitOptions.OneThread); } [Test] - public void Constructor_WithUserCallback_InvalidSampleRate_ShouldThrow() + public void WithUserManagedAudio_InvalidSampleRate_ShouldThrow() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - Action act = () => new SunVox(mockLib, 0, OutputType.Float32); + Action act = () => SunVox.WithUserManagedAudio(mockLib, 0, OutputType.Float32); // Assert act.Should().Throw().WithMessage("*Invalid value: 0*").And.ParamName.Should().Be("sampleRate"); } [Test] - public void Constructor_WithUserCallback_NegativeSampleRate_ShouldThrow() + public void WithUserManagedAudio_NegativeSampleRate_ShouldThrow() { // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - Action act = () => new SunVox(mockLib, -1, OutputType.Float32); + Action act = () => SunVox.WithUserManagedAudio(mockLib, -1, OutputType.Float32); // Assert act.Should().Throw().WithMessage("*Invalid value: -1*").And.ParamName.Should().Be("sampleRate"); @@ -160,7 +160,7 @@ public void Properties_ShouldReturnCorrectValues() mockLib.GetSampleRate().Returns(48000); // Act - using var sunvox = new SunVox(mockLib, AudioChannels.Stereo); + using var sunvox = SunVox.WithOwnAudioStream(mockLib, AudioChannels.Stereo); // Assert sunvox.Version.Should().Be(expectedVersion); @@ -177,7 +177,7 @@ public void NeedsUserCallback_WithOwnAudioStream_ShouldReturnFalse() mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Assert sunvox.NeedsUserCallback.Should().BeFalse(); @@ -191,7 +191,7 @@ public void NeedsUserCallback_WithUserCallback_ShouldReturnTrue() mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); // Act - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32); // Assert sunvox.NeedsUserCallback.Should().BeTrue(); @@ -203,7 +203,7 @@ public void UpdateInputDevices_ShouldCallLibraryMethod() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act sunvox.UpdateInputDevices(); @@ -219,7 +219,7 @@ public void AudioCallback_Float32_WithCorrectOutputType_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32); var buffer = new float[256]; // Act @@ -236,7 +236,7 @@ public void AudioCallback_Float32_WithWrongOutputType_ShouldThrow() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Int16); var buffer = new float[256]; // Act @@ -252,7 +252,7 @@ public void AudioCallback_Float32_WithoutUserCallback_ShouldThrow() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); var buffer = new float[256]; // Act @@ -269,7 +269,7 @@ public void AudioCallback_Float32WithInput_Float32_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32); var outputBuffer = new float[256]; var inputBuffer = new float[256]; @@ -288,7 +288,7 @@ public void AudioCallback_Float32WithInput_Int16_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32); var outputBuffer = new float[256]; var inputBuffer = new short[256]; @@ -307,7 +307,7 @@ public void AudioCallback_Int16_WithCorrectOutputType_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Int16); var buffer = new short[256]; // Act @@ -324,7 +324,7 @@ public void AudioCallback_Int16_WithWrongOutputType_ShouldThrow() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Float32); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Float32); var buffer = new short[256]; // Act @@ -341,7 +341,7 @@ public void AudioCallback_Int16WithInput_Float32_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Int16); var outputBuffer = new short[256]; var inputBuffer = new float[256]; @@ -360,7 +360,7 @@ public void AudioCallback_Int16WithInput_Int16_ShouldCallLibrary() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.AudioCallback(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(true); - using var sunvox = new SunVox(mockLib, 44100, OutputType.Int16); + using var sunvox = SunVox.WithUserManagedAudio(mockLib, 44100, OutputType.Int16); var outputBuffer = new short[256]; var inputBuffer = new short[256]; @@ -379,7 +379,7 @@ public void GetTicks_ShouldCallLibraryMethod() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.GetTicks().Returns(12345u); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act var result = sunvox.GetTicks(); @@ -396,7 +396,7 @@ public void GetTicksPerSecond_ShouldCallLibraryMethod() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.GetTicksPerSecond().Returns(1000u); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act var result = sunvox.GetTicksPerSecond(); @@ -413,7 +413,7 @@ public void GetLog_ShouldCallLibraryMethod() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.GetLog(100).Returns("Test log message"); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act var result = sunvox.GetLog(100); @@ -430,7 +430,7 @@ public void GetLog_WithNull_ShouldReturnNull() var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); mockLib.GetLog(Arg.Any()).Returns((string?)null); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act var result = sunvox.GetLog(100); @@ -445,7 +445,7 @@ public void Dispose_ShouldCallDeinitialize() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act sunvox.Dispose(); @@ -460,7 +460,7 @@ public void Dispose_CalledMultipleTimes_ShouldOnlyDeinitializeOnce() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act sunvox.Dispose(); @@ -477,7 +477,7 @@ public void Deinitialized_AfterDispose_ShouldBeTrue() // Arrange var mockLib = Substitute.For(); mockLib.Initialize(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any()).Returns(new SunVoxVersion(2, 1, 0, 0)); - using var sunvox = new SunVox(mockLib); + using var sunvox = SunVox.WithOwnAudioStream(mockLib); // Act sunvox.Deinitialized.Should().BeFalse(); diff --git a/src/SunSharp/SunSharp.csproj b/src/SunSharp/SunSharp.csproj index 9c5f858..6ca6835 100644 --- a/src/SunSharp/SunSharp.csproj +++ b/src/SunSharp/SunSharp.csproj @@ -44,7 +44,11 @@ SUNSHARP_RELEASE - + + + SUNSHARP_RELEASE + + diff --git a/src/SunSharp/SunVox.cs b/src/SunSharp/SunVox.cs index 3ad5be8..28bf1d5 100644 --- a/src/SunSharp/SunVox.cs +++ b/src/SunSharp/SunVox.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using SunSharp.Modules; using SunSharp.Native; namespace SunSharp @@ -101,6 +102,32 @@ public sealed class SunVox : ISunVox ///
    public AudioChannels Channels { get; } +#if SUNSHARP_RELEASE + internal SunVox(SunVoxLib sunVoxLib, AudioChannels channels, SunVoxVersion version, int sampleRate, bool singleThreaded, OutputType? outputType) + { + Library = sunVoxLib; + Channels = channels; + Version = version; + SampleRate = sampleRate; + SingleThreaded = singleThreaded; + OutputType = outputType; + Slots = new Slots(this); + } +#else + + internal SunVox(ISunVoxLib sunVoxLib, AudioChannels channels, SunVoxVersion version, int sampleRate, bool singleThreaded, OutputType? outputType) + { + Library = sunVoxLib; + Channels = channels; + Version = version; + SampleRate = sampleRate; + SingleThreaded = singleThreaded; + OutputType = outputType; + Slots = new Slots(this); + } + +#endif + /// /// Create an instance of the engine with own audio stream and threading. /// @@ -112,11 +139,10 @@ public sealed class SunVox : ISunVox /// Leave for the value to be assigned by the engine. /// Limit information sent to Standard Output. #if SUNSHARP_RELEASE - - public SunVox(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) + public static SunVox WithOwnAudioStream(ISunVoxLibC library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #else - public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) + public static SunVox WithOwnAudioStream(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, uint? bufferSize = null, string? deviceIn = null, string? deviceOut = null, string? driver = null, bool noDebugOutput = true) #endif { if (library == null) @@ -133,16 +159,22 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, var configuration = AssembleConfigurationParams(bufferSize, deviceIn, deviceOut, driver); #if SUNSHARP_RELEASE - Library = new SunVoxLib(library); + var wrappedLibrary = new SunVoxLib(library); #else - Library = library; + var wrappedLibrary = library; #endif - Version = Library.Initialize(sampleRate: -1, config: configuration, channels: channels, options: flags); - SampleRate = Library.GetSampleRate(); - SingleThreaded = false; - OutputType = null; - Channels = channels; - Slots = new Slots(this); + + var version = wrappedLibrary.Initialize(sampleRate: -1, config: configuration, channels: channels, options: flags); + try + { + var sampleRate = wrappedLibrary.GetSampleRate(); + return new SunVox(wrappedLibrary, channels, version, sampleRate, false, null); + } + catch (Exception) + { + wrappedLibrary.Deinitialize(); + throw; + } } /// @@ -155,14 +187,13 @@ public SunVox(ISunVoxLib library, AudioChannels channels = AudioChannels.Stereo, /// Use to promise that audio callback and other methods will be called from one thread. /// Limit information sent to Standard Output. /// + /// #if SUNSHARP_RELEASE - - public SunVox(ISunVoxLibC library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, - bool singleThreaded = false, bool noDebugOutput = true) + public static SunVox WithUserManagedAudio(ISunVoxLibC library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) #else - public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, - bool singleThreaded = false, bool noDebugOutput = true) + public static SunVox WithUserManagedAudio(ISunVoxLib library, int sampleRate, OutputType outputType, AudioChannels channels = AudioChannels.Stereo, bool singleThreaded = false, bool noDebugOutput = true) + #endif { if (library == null) @@ -178,16 +209,23 @@ public SunVox(ISunVoxLib library, int sampleRate, OutputType outputType, AudioCh } #if SUNSHARP_RELEASE - Library = new SunVoxLib(library); + var wrappedLibrary = new SunVoxLib(library); #else - Library = library; + var wrappedLibrary = library; #endif - Version = Library.Initialize(sampleRate: sampleRate, channels: channels, options: flags); - SampleRate = Library.GetSampleRate(); - SingleThreaded = false; - Channels = channels; - OutputType = outputType; - Slots = new Slots(this); + + var version = wrappedLibrary.Initialize(sampleRate: sampleRate, channels: channels, options: flags); + try + { + // check if the library accepted the requested sample rate, as it may choose a different one if the requested one is not supported + sampleRate = wrappedLibrary.GetSampleRate(); + return new SunVox(wrappedLibrary, channels, version, sampleRate, singleThreaded, outputType); + } + catch (Exception) + { + wrappedLibrary.Deinitialize(); + throw; + } } private static string? AssembleConfigurationParams(uint? bufferSize, string? deviceIn, string? deviceOut, string? driver) @@ -253,14 +291,21 @@ private void Dispose(bool disposing) } Deinitialized = true; - try + if (disposing) { Library.Deinitialize(); } - catch (SunVoxException) + else { - // swallow exceptions on deinitialization - // this is because Deinitialize may fail if already deinitialized elsewhere somehow + try + { + Library.Deinitialize(); + } + catch (SunVoxException) + { + // swallow exceptions on deinitialization + // this is because Deinitialize may fail if already deinitialized elsewhere somehow + } } } } diff --git a/src/SunSharp/Synthesizer.cs b/src/SunSharp/Synthesizer.cs index 04dddca..c239165 100644 --- a/src/SunSharp/Synthesizer.cs +++ b/src/SunSharp/Synthesizer.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using SunSharp.Modules; using SunSharp.Native; namespace SunSharp @@ -12,6 +13,11 @@ public interface ISynthesizer : IEnumerable /// ISlot Slot { get; } +#if !SUNSHARP_GENERATION + /// + IOutputModuleHandle Output { get; } +#endif + /// int GetUpperModuleCount(); @@ -77,6 +83,13 @@ public class Synthesizer : ISynthesizer, IEnumerable ISlot ISynthesizer.Slot => Slot; +#if !SUNSHARP_GENERATION + + public OutputModuleHandle Output => GetModule(0).AsOutput(); + + IOutputModuleHandle ISynthesizer.Output => GetModule(0).AsOutput(); +#endif + internal Synthesizer(Slot slot) { Slot = slot; From ce3593f519e099d53ddec97f38bf917d6f7b1fea Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:23:09 +0100 Subject: [PATCH 24/27] wrong branch name oops --- .github/workflows/build.yml | 4 ++-- .github/workflows/docs.yml | 4 ++-- .github/workflows/pr_validation.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee5371b..9edcd8c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,9 @@ name: Build and Test on: push: - branches: [main] + branches: ["master"] pull_request: - branches: [main] + branches: ["master"] workflow_dispatch: inputs: build-packages: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index f2e4994..a56edfc 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,7 +10,7 @@ on: type: boolean push: - branches: ["main"] + branches: ["master"] paths: - "docs/**" - "SunSharp/**" @@ -18,7 +18,7 @@ on: - ".github/workflows/docs.yml" pull_request: - branches: ["main"] + branches: ["master"] paths: - "docs/**" - "SunSharp/**" diff --git a/.github/workflows/pr_validation.yml b/.github/workflows/pr_validation.yml index a64c86b..ffeeca2 100644 --- a/.github/workflows/pr_validation.yml +++ b/.github/workflows/pr_validation.yml @@ -2,7 +2,7 @@ name: PR Validation on: pull_request: - branches: ["main"] + branches: ["master"] permissions: contents: read From 6a4e80e3d1b9cc2f1158dd11922a1e0ebcfb57bf Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:29:28 +0100 Subject: [PATCH 25/27] fix folder structure --- examples/.gitignore | 4 ++-- examples/{Examples => }/Example1/Example1.csproj | 2 +- examples/{Examples => }/Example1/Program.cs | 0 examples/{Examples => }/Example2/Example2.csproj | 2 +- examples/{Examples => }/Example2/Program.cs | 0 .../{Examples => }/Example2/bass_and_melody.sunvox | Bin examples/Examples.slnx | 6 ++++++ examples/Examples/Examples.slnx | 6 ------ 8 files changed, 10 insertions(+), 10 deletions(-) rename examples/{Examples => }/Example1/Example1.csproj (72%) rename examples/{Examples => }/Example1/Program.cs (100%) rename examples/{Examples => }/Example2/Example2.csproj (80%) rename examples/{Examples => }/Example2/Program.cs (100%) rename examples/{Examples => }/Example2/bass_and_melody.sunvox (100%) create mode 100644 examples/Examples.slnx delete mode 100644 examples/Examples/Examples.slnx diff --git a/examples/.gitignore b/examples/.gitignore index ca202c8..98288f8 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -1,5 +1,5 @@ -**/[Bb]in -**/[Oo]bj +*/[Bb]in +*/[Oo]bj .vs .editorconfig *.DotSettings.user diff --git a/examples/Examples/Example1/Example1.csproj b/examples/Example1/Example1.csproj similarity index 72% rename from examples/Examples/Example1/Example1.csproj rename to examples/Example1/Example1.csproj index f5bdf8a..1c09de2 100644 --- a/examples/Examples/Example1/Example1.csproj +++ b/examples/Example1/Example1.csproj @@ -8,7 +8,7 @@ - + diff --git a/examples/Examples/Example1/Program.cs b/examples/Example1/Program.cs similarity index 100% rename from examples/Examples/Example1/Program.cs rename to examples/Example1/Program.cs diff --git a/examples/Examples/Example2/Example2.csproj b/examples/Example2/Example2.csproj similarity index 80% rename from examples/Examples/Example2/Example2.csproj rename to examples/Example2/Example2.csproj index 45dfc50..c889649 100644 --- a/examples/Examples/Example2/Example2.csproj +++ b/examples/Example2/Example2.csproj @@ -14,7 +14,7 @@ - + diff --git a/examples/Examples/Example2/Program.cs b/examples/Example2/Program.cs similarity index 100% rename from examples/Examples/Example2/Program.cs rename to examples/Example2/Program.cs diff --git a/examples/Examples/Example2/bass_and_melody.sunvox b/examples/Example2/bass_and_melody.sunvox similarity index 100% rename from examples/Examples/Example2/bass_and_melody.sunvox rename to examples/Example2/bass_and_melody.sunvox diff --git a/examples/Examples.slnx b/examples/Examples.slnx new file mode 100644 index 0000000..ccb5ed7 --- /dev/null +++ b/examples/Examples.slnx @@ -0,0 +1,6 @@ + + + + + + diff --git a/examples/Examples/Examples.slnx b/examples/Examples/Examples.slnx deleted file mode 100644 index 33461ec..0000000 --- a/examples/Examples/Examples.slnx +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - From e655b30707227207bd5cae0c4feb0b0a80c5b768 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:31:26 +0100 Subject: [PATCH 26/27] don't continue tests on error --- .github/workflows/build.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9edcd8c..e481afc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,15 +37,12 @@ jobs: - name: Run CodeGeneration tests run: dotnet test src/CodeGeneration.Tests/CodeGeneration.Tests.csproj --configuration Generation --verbosity normal --logger "trx;LogFileName=codegen-test-results.trx" - continue-on-error: false - name: Run unit tests run: dotnet test src/SunSharp.Tests/SunSharp.Tests.csproj --configuration Debug --verbosity normal --logger "trx;LogFileName=test-results.trx" - continue-on-error: true - name: Run integration tests run: dotnet test src/SunSharp.IntegrationTests/SunSharp.IntegrationTests.csproj --configuration Release --verbosity normal --logger "trx;LogFileName=integration-test-results.trx" - continue-on-error: true - name: Upload test results uses: actions/upload-artifact@v4 From 9cdfe45649ffee30fd39dc552ace5fce2b0a2e80 Mon Sep 17 00:00:00 2001 From: Sotakebk <81926249+Sotakebk@users.noreply.github.com> Date: Thu, 5 Feb 2026 18:38:20 +0100 Subject: [PATCH 27/27] oops, examples use .slnx --- .github/workflows/pr_validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr_validation.yml b/.github/workflows/pr_validation.yml index ffeeca2..b4c9c9f 100644 --- a/.github/workflows/pr_validation.yml +++ b/.github/workflows/pr_validation.yml @@ -54,4 +54,4 @@ jobs: continue-on-error: true - name: Build examples - run: dotnet build examples/Examples.sln --configuration Release \ No newline at end of file + run: dotnet build examples/Examples.slnx --configuration Release \ No newline at end of file

    a85xSEH?p#K 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Ɇ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 diff --git a/SunSharp.Redistribution/runtimes/macos-x86-64/native/sunvox.dylib b/SunSharp.Redistribution/runtimes/macos-x86-64/native/sunvox.dylib deleted file mode 100644 index e55890e631865c9c688a156c6a4645d016ab3388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 859976 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%0A)*o}~wyrQoz&FnTE0*?SX=_c4=C2o^we@!f=z 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 v23{pRCmk+Hf`3g%4dfA;FQF9bZ+2vtI-Vd$ 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