From 087087e65c0ea0b19d21c4a8b44833bf0a951e86 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 12 Feb 2015 22:18:39 +0100 Subject: Add 'enable_resampling' config option for runtime disabling of the resampler. --- src/configuration.cc | 17 +---------------- src/configuration.h | 2 ++ src/drumgizmo.cc | 41 +++++++++++++++++++++++++---------------- 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/src/configuration.cc b/src/configuration.cc index 965dcf9..5c733ee 100644 --- a/src/configuration.cc +++ b/src/configuration.cc @@ -35,19 +35,4 @@ float Conf::velocity_randomiser_weight = 0.1; int Conf::samplerate = 44100; -#ifdef TEST_CONFIGURATION -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; - -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_CONFIGURATION*/ +bool Conf::enable_resampling = true; diff --git a/src/configuration.h b/src/configuration.h index c49f997..b8be49f 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -36,6 +36,8 @@ namespace Conf { extern float velocity_randomiser_weight; extern int samplerate; + + extern bool enable_resampling; }; diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index 6b48cda..71043af 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -265,24 +265,26 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples) // // Write audio // -#ifndef WITH_RESAMPLER - // No resampling needed - for(size_t c = 0; c < kit.channels.size(); c++) { - sample_t *buf = samples; - bool internal = false; - if(oe->getBuffer(c)) { - buf = oe->getBuffer(c); - internal = true; - } - if(buf) { - memset(buf, 0, nsamples * sizeof(sample_t)); - - getSamples(c, pos, buf, nsamples); +#ifdef WITH_RESAMPLER + if(Conf::enable_resampling == false) { // No resampling needed +#endif + for(size_t c = 0; c < kit.channels.size(); c++) { + sample_t *buf = samples; + bool internal = false; + if(oe->getBuffer(c)) { + buf = oe->getBuffer(c); + internal = true; + } + if(buf) { + memset(buf, 0, nsamples * sizeof(sample_t)); + + getSamples(c, pos, buf, nsamples); - if(!internal) oe->run(c, samples, nsamples); + if(!internal) oe->run(c, samples, nsamples); + } } - } -#else/*WITH_RESAMPLER*/ +#ifdef WITH_RESAMPLER + } else { // Resampling needed // @@ -320,6 +322,8 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples) for(size_t c = 0; c < kit.channels.size(); c++) { oe->run(c, resampler_output_buffer[c], nsamples); } + + } #endif/*WITH_RESAMPLER*/ ie->post(); @@ -528,6 +532,11 @@ bool DrumGizmo::setConfigString(std::string cfg) str2float(p.value("velocity_randomiser_weight")); } + if(p.value("enable_resampling") != "") { + Conf::enable_resampling = + p.value("enable_resampling") == "true"; + } + std::string newkit = p.value("drumkitfile"); if(newkit != "" && kit.file() != newkit) { /* -- cgit v1.2.3