* CMake and Visual Studio build files ignored * Add CMakeLists * Replace POSIX mutex with std::mutex * Mutex unlock return value isn't used, changed signature to void * C++ preprocessor demands different VA_ARGS syntax * Superfluous include directory * Expand tuning knob range to +/-1 octave. --------- Co-authored-by: yaw-man <ywmn@proton.me> Co-authored-by: wan-may <wnmy@protonmail.com>pull/18/head
@@ -16,3 +16,6 @@ | |||||
bin/ | bin/ | ||||
build/ | build/ | ||||
.vs/ | |||||
out/ |
@@ -0,0 +1,3 @@ | |||||
cmake_minimum_required(VERSION 3.11) | |||||
add_subdirectory(dpf) | |||||
add_subdirectory(plugins/Nekobi) |
@@ -0,0 +1,12 @@ | |||||
DPF_ADD_PLUGIN(Nekobi | |||||
TARGETS vst2 | |||||
FILES_DSP | |||||
DistrhoPluginNekobi.cpp | |||||
FILES_UI | |||||
DistrhoArtworkNekobi.cpp | |||||
DistrhoUINekobi.cpp) | |||||
target_include_directories(Nekobi PUBLIC | |||||
"." | |||||
"nekobee-src" | |||||
) |
@@ -18,7 +18,6 @@ | |||||
#include "DistrhoPluginNekobi.hpp" | #include "DistrhoPluginNekobi.hpp" | ||||
extern "C" { | |||||
#include "nekobee-src/nekobee_synth.c" | #include "nekobee-src/nekobee_synth.c" | ||||
#include "nekobee-src/nekobee_voice.c" | #include "nekobee-src/nekobee_voice.c" | ||||
@@ -31,7 +30,7 @@ extern "C" { | |||||
bool dssp_voicelist_mutex_trylock(nekobee_synth_t* const synth) | bool dssp_voicelist_mutex_trylock(nekobee_synth_t* const synth) | ||||
{ | { | ||||
/* Attempt the mutex lock */ | /* Attempt the mutex lock */ | ||||
if (pthread_mutex_trylock(&synth->voicelist_mutex) != 0) | |||||
if (!synth->voicelist_mutex.try_lock()) | |||||
{ | { | ||||
synth->voicelist_mutex_grab_failed = 1; | synth->voicelist_mutex_grab_failed = 1; | ||||
return false; | return false; | ||||
@@ -47,9 +46,9 @@ bool dssp_voicelist_mutex_trylock(nekobee_synth_t* const synth) | |||||
return true; | return true; | ||||
} | } | ||||
bool dssp_voicelist_mutex_unlock(nekobee_synth_t* const synth) | |||||
void dssp_voicelist_mutex_unlock(nekobee_synth_t* const synth) | |||||
{ | { | ||||
return (pthread_mutex_unlock(&synth->voicelist_mutex) == 0); | |||||
synth->voicelist_mutex.unlock(); | |||||
} | } | ||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
@@ -79,7 +78,6 @@ void nekobee_handle_raw_event(nekobee_synth_t* const synth, const uint8_t size, | |||||
} | } | ||||
} | } | ||||
} /* extern "C" */ | |||||
START_NAMESPACE_DISTRHO | START_NAMESPACE_DISTRHO | ||||
@@ -109,7 +107,6 @@ DistrhoPluginNekobi::DistrhoPluginNekobi() | |||||
fSynth.voice = nekobee_voice_new(); | fSynth.voice = nekobee_voice_new(); | ||||
fSynth.voicelist_mutex_grab_failed = 0; | fSynth.voicelist_mutex_grab_failed = 0; | ||||
pthread_mutex_init(&fSynth.voicelist_mutex, nullptr); | |||||
fSynth.channel_pressure = 0; | fSynth.channel_pressure = 0; | ||||
fSynth.pitch_wheel_sensitivity = 0; | fSynth.pitch_wheel_sensitivity = 0; | ||||
@@ -299,7 +296,7 @@ void DistrhoPluginNekobi::setParameterValue(uint32_t index, float value) | |||||
break; | break; | ||||
case paramTuning: | case paramTuning: | ||||
fParams.tuning = value; | fParams.tuning = value; | ||||
fSynth.tuning = (value+12.0f)/24.0f * 1.5 + 0.5f; // FIXME: log? | |||||
fSynth.tuning = exp2f( value / 12.0f ); | |||||
DISTRHO_SAFE_ASSERT(fSynth.tuning >= 0.5f && fSynth.tuning <= 2.0f); | DISTRHO_SAFE_ASSERT(fSynth.tuning >= 0.5f && fSynth.tuning <= 2.0f); | ||||
break; | break; | ||||
case paramCutoff: | case paramCutoff: | ||||
@@ -21,9 +21,7 @@ | |||||
#include "DistrhoPlugin.hpp" | #include "DistrhoPlugin.hpp" | ||||
extern "C" { | |||||
#include "nekobee-src/nekobee_synth.h" | #include "nekobee-src/nekobee_synth.h" | ||||
} | |||||
START_NAMESPACE_DISTRHO | START_NAMESPACE_DISTRHO | ||||
@@ -63,8 +63,8 @@ | |||||
#else /* !XSYNTH_DEBUG */ | #else /* !XSYNTH_DEBUG */ | ||||
#define XDB_MESSAGE(type, fmt...) | |||||
#define GDB_MESSAGE(type, fmt...) | |||||
#define XDB_MESSAGE(type, fmt, ...) | |||||
#define GDB_MESSAGE(type, fmt, ...) | |||||
#define XSYNTH_DEBUG_INIT(x) | #define XSYNTH_DEBUG_INIT(x) | ||||
#endif /* XSYNTH_DEBUG */ | #endif /* XSYNTH_DEBUG */ | ||||
@@ -29,7 +29,7 @@ | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <math.h> | #include <math.h> | ||||
#include <pthread.h> | |||||
#include <mutex> | |||||
#include "nekobee.h" | #include "nekobee.h" | ||||
#include "nekobee_synth.h" | #include "nekobee_synth.h" | ||||
@@ -26,7 +26,7 @@ | |||||
#ifndef _XSYNTH_SYNTH_H | #ifndef _XSYNTH_SYNTH_H | ||||
#define _XSYNTH_SYNTH_H | #define _XSYNTH_SYNTH_H | ||||
#include <pthread.h> | |||||
#include <mutex> | |||||
#include "nekobee.h" | #include "nekobee.h" | ||||
#include "nekobee_types.h" | #include "nekobee_types.h" | ||||
@@ -64,7 +64,7 @@ struct _nekobee_synth_t { | |||||
//nekobee_voice_t *voice[XSYNTH_MAX_POLYPHONY]; | //nekobee_voice_t *voice[XSYNTH_MAX_POLYPHONY]; | ||||
nekobee_voice_t *voice; | nekobee_voice_t *voice; | ||||
pthread_mutex_t voicelist_mutex; | |||||
std::mutex voicelist_mutex; | |||||
int voicelist_mutex_grab_failed; | int voicelist_mutex_grab_failed; | ||||
/* current non-paramter-mapped controller values */ | /* current non-paramter-mapped controller values */ | ||||