From e88f5c83ea442c0a1e8abdd42a1e0b56bc841b7f Mon Sep 17 00:00:00 2001 From: Cassandra de la Cruz-Munoz Date: Wed, 16 Aug 2023 14:19:45 -0400 Subject: [PATCH] create VmcExtMidiCcVal and use it in Marionette --- Marionette.cs | 17 +------------ VmcMessages/VmcExtMidiCcVal.cs | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 VmcMessages/VmcExtMidiCcVal.cs diff --git a/Marionette.cs b/Marionette.cs index b255761..7788013 100644 --- a/Marionette.cs +++ b/Marionette.cs @@ -78,7 +78,7 @@ namespace godotVmcSharp new VmcExtMidiNote(m); break; case "/VMC/Ext/Midi/CC/Val": - MidiValue(m.Data); + new VmcExtMidiCcVal(m); break; case "/VMC/Ext/Midi/CC/Bit": MidiButton(m.Data); @@ -106,21 +106,6 @@ namespace godotVmcSharp break; } } - private void MidiValue(List data) - { - var addr = "/VMC/Ext/Midi/CC/Val"; - if (data[0].Type != 'i') - { - GD.Print(InvalidArgumentType.GetErrorString(addr, "knob", 'i', data[0].Type)); - return; - } - if (data[1].Type != 'f') - { - GD.Print(InvalidArgumentType.GetErrorString(addr, "value", 'f', data[1].Type)); - return; - } - GD.Print($"CC value input on knob {(int)data[0].Value} with value {(float)data[1].Value}."); - } private void MidiButton(List data) { var addr = "/VMC/Ext/Midi/CC/Bit"; diff --git a/VmcMessages/VmcExtMidiCcVal.cs b/VmcMessages/VmcExtMidiCcVal.cs new file mode 100644 index 0000000..521245a --- /dev/null +++ b/VmcMessages/VmcExtMidiCcVal.cs @@ -0,0 +1,44 @@ +/* + godotVmcSharp + Copyright (C) 2023 Cassandra de la Cruz-Munoz + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +using Godot; +using godotOscSharp; + +namespace godotVmcSharp +{ + public class VmcExtMidiCcVal : VmcMessage + { + public int knob { get; } + public float value { get; } + public VmcExtMidiCcVal(godotOscSharp.OscMessage m) : base(m.Address) + { + if (m.Data[0].Type != 'i') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "knob", 'i', m.Data[0].Type)); + return; + } + if (m.Data[1].Type != 'f') + { + GD.Print(InvalidArgumentType.GetErrorString(addr, "value", 'f', m.Data[1].Type)); + return; + } + knob = (int)m.Data[0].Value; + value = (int)m.Data[1].Value; + } + } +} \ No newline at end of file