Skip to content

Commit

Permalink
REALLY fixed midi implementation to use a cross-platform library (#55)…
Browse files Browse the repository at this point in the history
…; I think...maybe not
  • Loading branch information
brentmaxwell committed Feb 8, 2024
1 parent d6621bf commit 19616dc
Showing 1 changed file with 32 additions and 23 deletions.
55 changes: 32 additions & 23 deletions LtAmpDotNet/LtAmpDotNet.Cli/Commands/MidiCommandDefinition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ internal async Task Start(List<uint> deviceIds)
await OpenAmp();
Amp!.MessageReceived += Amp_MessageReceived;
Amp!.CurrentPresetStatusMessageReceived += Amp_CurrentPresetStatusMessageReceived;
Amp!.GetCurrentPreset();
Console.WriteLine("Connected");
while ((Console.ReadLine()) != null)
{
Expand Down Expand Up @@ -96,6 +97,7 @@ internal void LoadPreset(int value)
if (Amp != null && Amp.IsOpen && value > 0 && value <= LtAmplifier.NUM_OF_PRESETS)
{
Amp.LoadPreset(value);
Amp!.GetCurrentPreset();
}
}

Expand All @@ -119,32 +121,39 @@ internal void SetDspParameter(NodeIdType nodeId, string parameter, int value)
{
if (Amp != null && Amp.IsOpen)
{
DspUnitUiParameter currentParameterDefinition = currentPreset.AudioGraph.Nodes.SingleOrDefault(x => x.NodeId == nodeId)?.Definition.Ui?.UiParameters?.SingleOrDefault(x => x.ControlId == parameter)!;
DspUnitParameter currentParameter = currentPreset.AudioGraph.Nodes.SingleOrDefault(x => x.NodeId == nodeId)?.DspUnitParameters?.SingleOrDefault(x => x.Name == parameter)!;

if (currentParameterDefinition != null)
try
{
switch (currentParameter.ParameterType)
DspUnitUiParameter currentParameterDefinition = currentPreset.AudioGraph.Nodes.SingleOrDefault(x => x.NodeId == nodeId)?.Definition.Ui?.UiParameters?.SingleOrDefault(x => x.ControlId == parameter)!;
DspUnitParameter currentParameter = currentPreset.AudioGraph.Nodes.SingleOrDefault(x => x.NodeId == nodeId)?.DspUnitParameters?.SingleOrDefault(x => x.Name == parameter)!;

if (currentParameterDefinition != null)
{
case DspUnitParameterType.Boolean:
currentParameter.Value = value > 64;
break;
case DspUnitParameterType.String:
int itemNumber = (int)Math.Round(((float)value).Remap(0, 128, 0, currentParameterDefinition.ListItems!.Count()), 0);
currentParameter.Value = currentParameterDefinition.ListItems!.ToArray()[itemNumber];
break;
case DspUnitParameterType.Integer:
currentParameter.Value = currentParameterDefinition.NumTicks > 0
? (int)Math.Round(((float)value).Remap(0, 128, 0, 91), 0)
: (dynamic)(int)Math.Round(((float)value).Remap(0, 128, currentParameterDefinition.Min!.Value, currentParameterDefinition.Max!.Value), 0);
break;
case DspUnitParameterType.Float:
currentParameter.Value = currentParameterDefinition.NumTicks > 0
? ((float)value).Remap(0, 128, 0, 91)
: (dynamic)((float)value).Remap(0, 128, currentParameterDefinition.Min!.Value, currentParameterDefinition.Max!.Value);
break;
switch (currentParameter.ParameterType)
{
case DspUnitParameterType.Boolean:
currentParameter.Value = value > 64;
break;
case DspUnitParameterType.String:
int itemNumber = (int)Math.Round(((float)value).Remap(0, 128, 0, currentParameterDefinition.ListItems!.Count()), 0);
currentParameter.Value = currentParameterDefinition.ListItems!.ToArray()[itemNumber];
break;
case DspUnitParameterType.Integer:
currentParameter.Value = currentParameterDefinition.NumTicks > 0
? (int)Math.Round(((float)value).Remap(0, 128, 0, 91), 0)
: (dynamic)(int)Math.Round(((float)value).Remap(0, 128, currentParameterDefinition.Min!.Value, currentParameterDefinition.Max!.Value), 0);
break;
case DspUnitParameterType.Float:
currentParameter.Value = currentParameterDefinition.NumTicks > 0
? ((float)value).Remap(0, 128, 0, 91)
: (dynamic)((float)value).Remap(0, 128, currentParameterDefinition.Min!.Value, currentParameterDefinition.Max!.Value);
break;
}
Amp.SetDspUnitParameter(nodeId, new DspUnitParameter() { Name = currentParameterDefinition.ControlId, Value = value });
}
Amp.SetDspUnitParameter(nodeId, new DspUnitParameter() { Name = currentParameterDefinition.ControlId, Value = value });
}
catch (Exception ex)
{
Console.WriteLine("Error setting DSP parameter");
}
}
}
Expand Down

0 comments on commit 19616dc

Please sign in to comment.