From 40c7bcf58d6b049f537fdc9d57ab0a597f255a29 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 1 Jan 2014 08:37:36 +0000 Subject: [PATCH] Minor changes for type safety --- source/backend/engine/CarlaEngineNative.cpp | 2 +- source/modules/carla_native/bypass.c | 5 +- source/modules/carla_native/lfo.c | 40 +++---- source/modules/carla_native/midi-split.c | 30 ++++- source/modules/carla_native/midi-through.c | 30 ++++- source/modules/carla_native/midi-transpose.c | 2 +- source/plugin/Makefile | 114 +++++++++---------- 7 files changed, 135 insertions(+), 88 deletions(-) diff --git a/source/backend/engine/CarlaEngineNative.cpp b/source/backend/engine/CarlaEngineNative.cpp index 17b1d1ee2..f073ee5e1 100644 --- a/source/backend/engine/CarlaEngineNative.cpp +++ b/source/backend/engine/CarlaEngineNative.cpp @@ -456,7 +456,7 @@ protected: // --------------------------------------------------------------- // Time Info - const NativeTimeInfo* timeInfo(NativePluginClass::getTimeInfo()); + const NativeTimeInfo* const timeInfo(NativePluginClass::getTimeInfo()); pData->timeInfo.playing = timeInfo->playing; pData->timeInfo.frame = timeInfo->frame; diff --git a/source/modules/carla_native/bypass.c b/source/modules/carla_native/bypass.c index cc10fdee3..bb33c0550 100644 --- a/source/modules/carla_native/bypass.c +++ b/source/modules/carla_native/bypass.c @@ -24,7 +24,10 @@ static NativePluginHandle bypass_instantiate(const NativeHostDescriptor* host) { // dummy, return non-NULL - return (NativePluginHandle)host; + return (NativePluginHandle)0x1; + + // unused + (void)host; } static void bypass_process(NativePluginHandle handle, float** inBuffer, float** outBuffer, uint32_t frames, const NativeMidiEvent* midiEvents, uint32_t midiEventCount) diff --git a/source/modules/carla_native/lfo.c b/source/modules/carla_native/lfo.c index 563fc057b..2d5f53f3d 100644 --- a/source/modules/carla_native/lfo.c +++ b/source/modules/carla_native/lfo.c @@ -35,12 +35,12 @@ typedef enum { } LfoParams; typedef struct { - const NativeHostDescriptor* host; - int mode; - float speed; - float multiplier; - float baseStart; - float value; + const NativeHostDescriptor* host; + int mode; + double speed; + float multiplier; + float baseStart; + float value; } LfoHandle; // ----------------------------------------------------------------------- @@ -173,7 +173,7 @@ static float lfo_get_parameter_value(NativePluginHandle handle, uint32_t index) case PARAM_MODE: return (float)handlePtr->mode; case PARAM_SPEED: - return handlePtr->speed; + return (float)handlePtr->speed; case PARAM_MULTIPLIER: return handlePtr->multiplier; case PARAM_BASE_START: @@ -215,42 +215,42 @@ static void lfo_process(NativePluginHandle handle, float** inBuffer, float** out if (! timeInfo->playing) return; - const float bpm = timeInfo->bbt.valid ? timeInfo->bbt.beatsPerMinute : 120.0; - const float sampleRate = host->get_sample_rate(host->handle); + const double bpm = timeInfo->bbt.valid ? timeInfo->bbt.beatsPerMinute : 120.0; + const double sampleRate = host->get_sample_rate(host->handle); - const float speedRate = handlePtr->speed/(bpm/60.0f/sampleRate); - const uint speedRatei = speedRate; + const double speedRate = handlePtr->speed/(bpm/60.0/sampleRate); + const uint speedRatei = (uint)speedRate; - float value = 0.0f; + double value = 0.0; switch (handlePtr->mode) { case 1: // Triangle - value = fabs(1.0f-(float)(timeInfo->frame % speedRatei)/(speedRate/2.0f)); + value = fabs(1.0-(double)(timeInfo->frame % speedRatei)/(speedRate/2.0)); break; case 2: // Sawtooth - value = (float)(timeInfo->frame % speedRatei)/speedRate; + value = (double)(timeInfo->frame % speedRatei)/speedRate; break; case 3: // Sawtooth (inverted) - value = 1.0f - (float)(timeInfo->frame % speedRatei)/speedRate; + value = 1.0 - (double)(timeInfo->frame % speedRatei)/speedRate; break; case 4: // Sine -- TODO! - value = 0.0f; + value = 0.0; break; case 5: // Square - value = (timeInfo->frame % speedRatei <= speedRatei/2) ? 1.0f : 0.0f; + value = (timeInfo->frame % speedRatei <= speedRatei/2) ? 1.0 : 0.0; break; } value *= handlePtr->multiplier; value += handlePtr->baseStart; - if (value <= 0.0f) + if (value <= 0.0) handlePtr->value = 0.0f; - else if (value >= 1.0f) + else if (value >= 1.0) handlePtr->value = 1.0f; else - handlePtr->value = value; + handlePtr->value = (float)value; return; diff --git a/source/modules/carla_native/midi-split.c b/source/modules/carla_native/midi-split.c index 53e7e02d7..cd672db67 100644 --- a/source/modules/carla_native/midi-split.c +++ b/source/modules/carla_native/midi-split.c @@ -18,17 +18,37 @@ #include "CarlaNative.h" #include "CarlaMIDI.h" +#include + +// ----------------------------------------------------------------------- + +typedef struct { + const NativeHostDescriptor* host; +} MidiSplitHandle; + // ----------------------------------------------------------------------- static NativePluginHandle midiSplit_instantiate(const NativeHostDescriptor* host) { - // use HostDescriptor as PluginHandle - return (NativePluginHandle)host; + MidiSplitHandle* const handle = (MidiSplitHandle*)malloc(sizeof(MidiSplitHandle)); + + if (handle == NULL) + return NULL; + + handle->host = host; + return handle; +} + +#define handlePtr ((MidiSplitHandle*)handle) + +static void midiSplit_cleanup(NativePluginHandle handle) +{ + free(handlePtr); } static void midiSplit_process(NativePluginHandle handle, float** inBuffer, float** outBuffer, uint32_t frames, const NativeMidiEvent* midiEvents, uint32_t midiEventCount) { - const NativeHostDescriptor* const host = (const NativeHostDescriptor*)handle; + const NativeHostDescriptor* const host = handlePtr->host; NativeMidiEvent tmpEvent; for (uint32_t i=0; i < midiEventCount; ++i) @@ -60,6 +80,8 @@ static void midiSplit_process(NativePluginHandle handle, float** inBuffer, float (void)frames; } +#undef handlePtr + // ----------------------------------------------------------------------- static const NativePluginDescriptor midiSplitDesc = { @@ -78,7 +100,7 @@ static const NativePluginDescriptor midiSplitDesc = { .copyright = "GNU GPL v2+", .instantiate = midiSplit_instantiate, - .cleanup = NULL, + .cleanup = midiSplit_cleanup, .get_parameter_count = NULL, .get_parameter_info = NULL, diff --git a/source/modules/carla_native/midi-through.c b/source/modules/carla_native/midi-through.c index 09a0fdb18..5b68c2b6e 100644 --- a/source/modules/carla_native/midi-through.c +++ b/source/modules/carla_native/midi-through.c @@ -18,17 +18,37 @@ #include "CarlaNative.h" #include "CarlaMIDI.h" +#include + +// ----------------------------------------------------------------------- + +typedef struct { + const NativeHostDescriptor* host; +} MidiThroughHandle; + // ----------------------------------------------------------------------- static NativePluginHandle midiThrough_instantiate(const NativeHostDescriptor* host) { - // use HostDescriptor as PluginHandle - return (NativePluginHandle)host; + MidiThroughHandle* const handle = (MidiThroughHandle*)malloc(sizeof(MidiThroughHandle)); + + if (handle == NULL) + return NULL; + + handle->host = host; + return handle; +} + +#define handlePtr ((MidiThroughHandle*)handle) + +static void midiThrough_cleanup(NativePluginHandle handle) +{ + free(handlePtr); } static void midiThrough_process(NativePluginHandle handle, float** inBuffer, float** outBuffer, uint32_t frames, const NativeMidiEvent* midiEvents, uint32_t midiEventCount) { - const NativeHostDescriptor* const host = (const NativeHostDescriptor*)handle; + const NativeHostDescriptor* const host = handlePtr->host; for (uint32_t i=0; i < midiEventCount; ++i) host->write_midi_event(host->handle, &midiEvents[i]); @@ -41,6 +61,8 @@ static void midiThrough_process(NativePluginHandle handle, float** inBuffer, flo (void)frames; } +#undef handlePtr + // ----------------------------------------------------------------------- static const NativePluginDescriptor midiThroughDesc = { @@ -59,7 +81,7 @@ static const NativePluginDescriptor midiThroughDesc = { .copyright = "GNU GPL v2+", .instantiate = midiThrough_instantiate, - .cleanup = NULL, + .cleanup = midiThrough_cleanup, .get_parameter_count = NULL, .get_parameter_info = NULL, diff --git a/source/modules/carla_native/midi-transpose.c b/source/modules/carla_native/midi-transpose.c index 09832daf0..3c37afde5 100644 --- a/source/modules/carla_native/midi-transpose.c +++ b/source/modules/carla_native/midi-transpose.c @@ -120,7 +120,7 @@ static void midiTranspose_process(NativePluginHandle handle, float** inBuffer, f tmpEvent.port = midiEvent->port; tmpEvent.time = midiEvent->time; tmpEvent.data[0] = midiEvent->data[0]; - tmpEvent.data[1] = newnote; + tmpEvent.data[1] = (uint8_t)newnote; tmpEvent.data[2] = midiEvent->data[2]; tmpEvent.data[3] = midiEvent->data[3]; tmpEvent.size = midiEvent->size; diff --git a/source/plugin/Makefile b/source/plugin/Makefile index 74f94a19d..be1feb32d 100644 --- a/source/plugin/Makefile +++ b/source/plugin/Makefile @@ -6,25 +6,25 @@ include ../Makefile.mk -BUILD_CXX_FLAGS += -I../includes -I../modules -I../utils +BUILD_CXX_FLAGS += -I../includes -I../utils -isystem ../modules # -------------------------------------------------------------- -ifeq ($(HAVE_OPENGL),true) -BUILD_CXX_FLAGS += -DWANT_OPENGL -endif - -ifeq ($(HAVE_AF_DEPS),true) -BUILD_CXX_FLAGS += -DWANT_AUDIOFILE -endif - -ifeq ($(HAVE_MF_DEPS),true) -BUILD_CXX_FLAGS += -DWANT_MIDIFILE -endif - -ifeq ($(HAVE_ZYN_DEPS),true) -BUILD_CXX_FLAGS += -DWANT_ZYNADDSUBFX -endif +# ifeq ($(HAVE_OPENGL),true) +# BUILD_CXX_FLAGS += -DWANT_OPENGL +# endif +# +# ifeq ($(HAVE_AF_DEPS),true) +# BUILD_CXX_FLAGS += -DWANT_AUDIOFILE +# endif +# +# ifeq ($(HAVE_MF_DEPS),true) +# BUILD_CXX_FLAGS += -DWANT_MIDIFILE +# endif +# +# ifeq ($(HAVE_ZYN_DEPS),true) +# BUILD_CXX_FLAGS += -DWANT_ZYNADDSUBFX +# endif # -------------------------------------------------------------- # Common @@ -45,61 +45,61 @@ endif # -------------------------------------------------------------- # Native -ifeq ($(HAVE_AF_DEPS),true) -LINK_FLAGS += $(shell pkg-config --libs sndfile) -ifeq ($(HAVE_FFMPEG),true) -LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) -endif -endif - -ifeq ($(HAVE_MF_DEPS),true) -LINK_FLAGS += $(shell pkg-config --libs smf) -endif - -ifeq ($(HAVE_ZYN_DEPS),true) -LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) -ifeq ($(HAVE_ZYN_UI_DEPS),true) -LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) -endif -endif +# ifeq ($(HAVE_AF_DEPS),true) +# LINK_FLAGS += $(shell pkg-config --libs sndfile) +# ifeq ($(HAVE_FFMPEG),true) +# LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) +# endif +# endif +# +# ifeq ($(HAVE_MF_DEPS),true) +# LINK_FLAGS += $(shell pkg-config --libs smf) +# endif +# +# ifeq ($(HAVE_ZYN_DEPS),true) +# LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) +# ifeq ($(HAVE_ZYN_UI_DEPS),true) +# LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) +# endif +# endif # -------------------------------------------------------------- # Libs -LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) -LINK_FLAGS += $(JUCE_CORE_LIBS) -LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) -LINK_FLAGS += $(JUCE_EVENTS_LIBS) -LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) -LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) +# LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) +# LINK_FLAGS += $(JUCE_CORE_LIBS) +# LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) +# LINK_FLAGS += $(JUCE_EVENTS_LIBS) +# LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) +# LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) LINK_FLAGS += $(RTMEMPOOL_LIBS) -ifeq ($(HAVE_OPENGL),true) -LINK_FLAGS += $(DGL_LIBS) -endif +# ifeq ($(HAVE_OPENGL),true) +# LINK_FLAGS += $(DGL_LIBS) +# endif -ifeq ($(CARLA_PLUGIN_SUPPORT),true) -LINK_FLAGS += $(LILV_LIBS) -endif +# ifeq ($(CARLA_PLUGIN_SUPPORT),true) +# LINK_FLAGS += $(LILV_LIBS) +# endif # -------------------------------------------------------------- LIBS = ../modules/carla_native.a -LIBS += ../modules/juce_audio_basics.a -LIBS += ../modules/juce_core.a -LIBS += ../modules/juce_data_structures.a -LIBS += ../modules/juce_events.a -LIBS += ../modules/juce_graphics.a -LIBS += ../modules/juce_gui_basics.a +# LIBS += ../modules/juce_audio_basics.a +# LIBS += ../modules/juce_core.a +# LIBS += ../modules/juce_data_structures.a +# LIBS += ../modules/juce_events.a +# LIBS += ../modules/juce_graphics.a +# LIBS += ../modules/juce_gui_basics.a LIBS += ../modules/rtmempool.a -ifeq ($(HAVE_OPENGL),true) -LIBS += ../modules/dgl.a -endif +# ifeq ($(HAVE_OPENGL),true) +# LIBS += ../modules/dgl.a +# endif -ifeq ($(CARLA_PLUGIN_SUPPORT),true) -LIBS += ../modules/lilv.a -endif +# ifeq ($(CARLA_PLUGIN_SUPPORT),true) +# LIBS += ../modules/lilv.a +# endif # --------------------------------------------------------------