From 054bd2db1f65a4d873be378ff43a0f809a0bd1e3 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 14:31:51 -0500 Subject: [PATCH 1/9] add semitones parameter --- source/native-plugins/midi-transpose.c | 85 +++++++++++++++++--------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index e2ba97e62..d0f5ba94e 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -25,6 +25,8 @@ typedef struct { const NativeHostDescriptor* host; int octaves; + int semitones; + bool invert; } MidiTransposeHandle; // ----------------------------------------------------------------------- @@ -38,6 +40,7 @@ static NativePluginHandle miditranspose_instantiate(const NativeHostDescriptor* handle->host = host; handle->octaves = 0; + handle->semitones = 0; return handle; } @@ -50,7 +53,7 @@ static void miditranspose_cleanup(NativePluginHandle handle) static uint32_t miditranspose_get_parameter_count(NativePluginHandle handle) { - return 1; + return 2; // unused (void)handle; @@ -58,50 +61,74 @@ static uint32_t miditranspose_get_parameter_count(NativePluginHandle handle) static const NativeParameter* miditranspose_get_parameter_info(NativePluginHandle handle, uint32_t index) { - if (index != 0) + if (index >= miditranspose_get_parameter_count(handle)) return NULL; - static NativeParameter param; - - param.name = "Octaves"; - param.unit = NULL; - param.hints = NATIVE_PARAMETER_IS_ENABLED|NATIVE_PARAMETER_IS_AUTOMABLE|NATIVE_PARAMETER_IS_INTEGER; - param.ranges.def = 0.0f; - param.ranges.min = -8.0f; - param.ranges.max = 8.0f; - param.ranges.step = 1.0f; - param.ranges.stepSmall = 1.0f; - param.ranges.stepLarge = 1.0f; - param.scalePointCount = 0; - param.scalePoints = NULL; - - return ¶m; - - // unused - (void)handle; + static NativeParameter param[] = + { + { + .name = "Octaves", + .unit = NULL, + .hints = NATIVE_PARAMETER_IS_ENABLED|NATIVE_PARAMETER_IS_AUTOMABLE|NATIVE_PARAMETER_IS_INTEGER, + .ranges.def = 0.0f, + .ranges.min = -8.0f, + .ranges.max = 8.0f, + .ranges.step = 1.0f, + .ranges.stepSmall = 1.0f, + .ranges.stepLarge = 1.0f, + .scalePointCount = 0, + .scalePoints = NULL, + }, + { + .name = "Semitones", + .unit = NULL, + .hints = NATIVE_PARAMETER_IS_ENABLED|NATIVE_PARAMETER_IS_AUTOMABLE|NATIVE_PARAMETER_IS_INTEGER, + .ranges.def = 0.0f, + .ranges.min = -12.0f, + .ranges.max = 12.0f, + .ranges.step = 1.0f, + .ranges.stepSmall = 1.0f, + .ranges.stepLarge = 1.0f, + .scalePointCount = 0, + .scalePoints = NULL, + }, + }; + return ¶m[index]; } static float miditranspose_get_parameter_value(NativePluginHandle handle, uint32_t index) { - if (index != 0) + switch (index) + { + case 0: + return (float)handlePtr->octaves; + case 1: + return (float)handlePtr->semitones; + default: return 0.0f; - - return (float)handlePtr->octaves; + } } static void miditranspose_set_parameter_value(NativePluginHandle handle, uint32_t index, float value) { - if (index != 0) - return; + switch (index) + { + case 0: + handlePtr->octaves = (int)value; + case 1: + handlePtr->semitones = (int)value; + default: + return; + } - handlePtr->octaves = (int)value; } static void miditranspose_process(NativePluginHandle handle, float** inBuffer, float** outBuffer, uint32_t frames, const NativeMidiEvent* midiEvents, uint32_t midiEventCount) { const NativeHostDescriptor* const host = handlePtr->host; const int octaves = handlePtr->octaves; - NativeMidiEvent tmpEvent; + const int semitones = handlePtr->semitones; + NativeMidiEvent tmpEvent; for (uint32_t i=0; i < midiEventCount; ++i) { @@ -112,7 +139,7 @@ static void miditranspose_process(NativePluginHandle handle, float** inBuffer, f if (status == MIDI_STATUS_NOTE_OFF || status == MIDI_STATUS_NOTE_ON) { int oldnote = midiEvent->data[1]; - int newnote = oldnote + octaves*12; + int newnote = oldnote + octaves*12 + semitones; if (newnote < 0 || newnote >= MAX_MIDI_NOTE) continue; @@ -151,7 +178,7 @@ static const NativePluginDescriptor miditransposeDesc = { .audioOuts = 0, .midiIns = 1, .midiOuts = 1, - .paramIns = 1, + .paramIns = 2, .paramOuts = 0, .name = "MIDI Transpose", .label = "miditranspose", From a671765e72666e905cf94a73199f08746320ada1 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 14:45:39 -0500 Subject: [PATCH 2/9] ensured breaks in switch cases --- source/native-plugins/midi-transpose.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index d0f5ba94e..df3bb2a78 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -26,7 +26,6 @@ typedef struct { const NativeHostDescriptor* host; int octaves; int semitones; - bool invert; } MidiTransposeHandle; // ----------------------------------------------------------------------- @@ -101,11 +100,13 @@ static float miditranspose_get_parameter_value(NativePluginHandle handle, uint32 switch (index) { case 0: - return (float)handlePtr->octaves; + return (float)handlePtr->octaves; + break; case 1: - return (float)handlePtr->semitones; + return (float)handlePtr->semitones; + break; default: - return 0.0f; + return 0.0f; } } @@ -114,11 +115,13 @@ static void miditranspose_set_parameter_value(NativePluginHandle handle, uint32_ switch (index) { case 0: - handlePtr->octaves = (int)value; + handlePtr->octaves = (int)value; + break; case 1: - handlePtr->semitones = (int)value; + handlePtr->semitones = (int)value; + break; default: - return; + return; } } From c162fc210564ea15bb61ad27e9594b8d98a38331 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 14:57:19 -0500 Subject: [PATCH 3/9] added semitones parameter to midi-transpose --- source/native-plugins/_data.all.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/native-plugins/_data.all.cpp b/source/native-plugins/_data.all.cpp index ecbf9fac6..afa6221c0 100644 --- a/source/native-plugins/_data.all.cpp +++ b/source/native-plugins/_data.all.cpp @@ -155,7 +155,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { /* audioOuts */ 0, /* midiIns */ 1, /* midiOuts */ 1, - /* paramIns */ 1, + /* paramIns */ 2, /* paramOuts */ 0, /* name */ "MIDI Transpose", /* label */ "miditranspose", From ed7ae51d684c9d63ad35e8291080e84d625b8f4c Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 14:59:12 -0500 Subject: [PATCH 4/9] added semitones to midi-transpose --- source/native-plugins/_data.base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/native-plugins/_data.base.cpp b/source/native-plugins/_data.base.cpp index 0956d3514..6537677a5 100644 --- a/source/native-plugins/_data.base.cpp +++ b/source/native-plugins/_data.base.cpp @@ -139,7 +139,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { /* audioOuts */ 0, /* midiIns */ 1, /* midiOuts */ 1, - /* paramIns */ 1, + /* paramIns */ 2, /* paramOuts */ 0, /* name */ "MIDI Transpose", /* label */ "miditranspose", From 69229d7b586f5b6f52c91ed28455643612f8ec50 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 15:54:13 -0500 Subject: [PATCH 5/9] corrected indentation --- source/native-plugins/midi-transpose.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index df3bb2a78..a8be3bdf6 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -131,7 +131,7 @@ static void miditranspose_process(NativePluginHandle handle, float** inBuffer, f const NativeHostDescriptor* const host = handlePtr->host; const int octaves = handlePtr->octaves; const int semitones = handlePtr->semitones; - NativeMidiEvent tmpEvent; + NativeMidiEvent tmpEvent; for (uint32_t i=0; i < midiEventCount; ++i) { From 55dff89bf714b5c803ced803773c9eabe1d0c95a Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Thu, 1 Mar 2018 15:58:40 -0500 Subject: [PATCH 6/9] corrected indentation --- source/native-plugins/midi-transpose.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index a8be3bdf6..fda4a8671 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -112,17 +112,17 @@ static float miditranspose_get_parameter_value(NativePluginHandle handle, uint32 static void miditranspose_set_parameter_value(NativePluginHandle handle, uint32_t index, float value) { - switch (index) - { - case 0: - handlePtr->octaves = (int)value; - break; - case 1: - handlePtr->semitones = (int)value; - break; - default: - return; - } + switch (index) + { + case 0: + handlePtr->octaves = (int)value; + break; + case 1: + handlePtr->semitones = (int)value; + break; + default: + return; + } } From bd7618fb424eaeec953381205a1aa21958105a85 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Sat, 10 Mar 2018 12:05:51 -0500 Subject: [PATCH 7/9] removed unnecessary breaks --- source/native-plugins/midi-transpose.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index fda4a8671..db83fbad8 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -101,10 +101,8 @@ static float miditranspose_get_parameter_value(NativePluginHandle handle, uint32 { case 0: return (float)handlePtr->octaves; - break; case 1: return (float)handlePtr->semitones; - break; default: return 0.0f; } @@ -116,10 +114,8 @@ static void miditranspose_set_parameter_value(NativePluginHandle handle, uint32_ { case 0: handlePtr->octaves = (int)value; - break; case 1: handlePtr->semitones = (int)value; - break; default: return; } From 2c5414c5e54ce75a81e3692690f090a7cc368996 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Sat, 10 Mar 2018 12:10:58 -0500 Subject: [PATCH 8/9] hardcoded parameter count --- source/native-plugins/midi-transpose.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index db83fbad8..22c5262f3 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -60,7 +60,7 @@ static uint32_t miditranspose_get_parameter_count(NativePluginHandle handle) static const NativeParameter* miditranspose_get_parameter_info(NativePluginHandle handle, uint32_t index) { - if (index >= miditranspose_get_parameter_count(handle)) + if (index >= 2) return NULL; static NativeParameter param[] = From 0519e91eca6d7b7240354ff8e749c6d2f2e46a14 Mon Sep 17 00:00:00 2001 From: HeyCitizen Date: Sat, 10 Mar 2018 12:25:49 -0500 Subject: [PATCH 9/9] replaced necessary breaks --- source/native-plugins/midi-transpose.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/native-plugins/midi-transpose.c b/source/native-plugins/midi-transpose.c index 22c5262f3..60a80eaad 100644 --- a/source/native-plugins/midi-transpose.c +++ b/source/native-plugins/midi-transpose.c @@ -114,8 +114,10 @@ static void miditranspose_set_parameter_value(NativePluginHandle handle, uint32_ { case 0: handlePtr->octaves = (int)value; + break; case 1: handlePtr->semitones = (int)value; + break; default: return; }