MS Toolchain; Tuning Knob (#17)
* 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>
This commit is contained in:
parent
a746e4d18e
commit
dfb6264ce0
|
@ -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 XDB_MESSAGE(type, fmt, ...)
|
||||||
#define GDB_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 */
|
||||||
|
|
Loading…
Reference in New Issue