@@ -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; | |||
@@ -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) | |||
@@ -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; | |||
@@ -18,17 +18,37 @@ | |||
#include "CarlaNative.h" | |||
#include "CarlaMIDI.h" | |||
#include <stdlib.h> | |||
// ----------------------------------------------------------------------- | |||
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, | |||
@@ -18,17 +18,37 @@ | |||
#include "CarlaNative.h" | |||
#include "CarlaMIDI.h" | |||
#include <stdlib.h> | |||
// ----------------------------------------------------------------------- | |||
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, | |||
@@ -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; | |||
@@ -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 | |||
# -------------------------------------------------------------- | |||