diff options
| -rw-r--r-- | src/drumgizmo.cc | 46 | ||||
| -rw-r--r-- | src/drumgizmo.h | 9 | 
2 files changed, 37 insertions, 18 deletions
| diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index 46250f0..aa6be23 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -107,9 +107,9 @@ bool DrumGizmo::loadkit(std::string file)  	loader.loadKit(&kit);  #ifdef WITH_RESAMPLER -	for(auto& chresampler: resampler) +	for(int i = 0; i < MAX_NUM_CHANNELS; ++i)  	{ -		chresampler.setup(kit.getSamplerate(), settings.samplerate.load()); +		resampler[i].setup(kit.getSamplerate(), settings.samplerate.load());  	}  #endif/*WITH_RESAMPLER*/ @@ -602,9 +602,9 @@ void DrumGizmo::setSamplerate(int samplerate)  	DEBUG(dgeditor, "%s samplerate: %d\n", __PRETTY_FUNCTION__, samplerate);  	settings.samplerate.store(samplerate);  #ifdef WITH_RESAMPLER -	for(auto& chresampler: resampler) +	for(int i = 0; i < MAX_NUM_CHANNELS; ++i)  	{ -		chresampler.setup(kit.getSamplerate(), settings.samplerate.load()); +		resampler[i].setup(kit.getSamplerate(), settings.samplerate.load());  	}  	if(resampler[0].getRatio() != 1)  	{ @@ -613,6 +613,28 @@ void DrumGizmo::setSamplerate(int samplerate)  #endif/*WITH_RESAMPLER*/  } +std::string float2str(float a) +{ +	char buf[256]; +	snprintf_nol(buf, sizeof(buf) - 1, "%f", a); +	return buf; +} + +std::string bool2str(bool a) +{ +	return a?"true":"false"; +} + +float str2float(std::string a) +{ +	if(a == "") +	{ +		return 0.0; +	} + +	return atof_nol(a.c_str()); +} +  std::string DrumGizmo::configString()  {  	std::string mmapfile; @@ -627,15 +649,15 @@ std::string DrumGizmo::configString()  		"  <value name=\"drumkitfile\">" + kit.getFile() + "</value>\n"  		"  <value name=\"midimapfile\">" + mmapfile + "</value>\n"  		"  <value name=\"enable_velocity_modifier\">" + -		std::to_string(settings.enable_velocity_modifier.load()) + "</value>\n" +		bool2str(settings.enable_velocity_modifier.load()) + "</value>\n"  		"  <value name=\"velocity_modifier_falloff\">" + -		std::to_string(settings.velocity_modifier_falloff.load()) + "</value>\n" +		float2str(settings.velocity_modifier_falloff.load()) + "</value>\n"  		"  <value name=\"velocity_modifier_weight\">" + -		std::to_string(settings.velocity_modifier_weight.load()) + "</value>\n" +		float2str(settings.velocity_modifier_weight.load()) + "</value>\n"  		"  <value name=\"enable_velocity_randomiser\">" + -		std::to_string(settings.enable_velocity_randomiser.load()) + "</value>\n" +		bool2str(settings.enable_velocity_randomiser.load()) + "</value>\n"  		"  <value name=\"velocity_randomiser_weight\">" + -		std::to_string(settings.velocity_randomiser_weight.load()) + "</value>\n" +		float2str(settings.velocity_randomiser_weight.load()) + "</value>\n"  		"</config>";  } @@ -658,12 +680,12 @@ bool DrumGizmo::setConfigString(std::string cfg)  	if(p.value("velocity_modifier_falloff") != "")  	{ -		settings.velocity_modifier_falloff.store(std::stof(p.value("velocity_modifier_falloff"))); +		settings.velocity_modifier_falloff.store(str2float(p.value("velocity_modifier_falloff")));  	}  	if(p.value("velocity_modifier_weight") != "")  	{ -		settings.velocity_modifier_weight.store(std::stof(p.value("velocity_modifier_weight"))); +		settings.velocity_modifier_weight.store(str2float(p.value("velocity_modifier_weight")));  	}  	if(p.value("enable_velocity_randomiser") != "") @@ -673,7 +695,7 @@ bool DrumGizmo::setConfigString(std::string cfg)  	if(p.value("velocity_randomiser_weight") != "")  	{ -		settings.velocity_randomiser_weight.store(std::stof(p.value("velocity_randomiser_weight"))); +		settings.velocity_randomiser_weight.store(str2float(p.value("velocity_randomiser_weight")));  	}  	if(p.value("enable_resampling") != "") diff --git a/src/drumgizmo.h b/src/drumgizmo.h index 13c657d..7af5dbb 100644 --- a/src/drumgizmo.h +++ b/src/drumgizmo.h @@ -42,7 +42,9 @@  #include "configfile.h"  #include "settings.h" +#define MAX_NUM_CHANNELS 64  #define REFSFILE "refs.conf" +#define RESAMPLER_INPUT_BUFFER 64  class DrumGizmo  { @@ -71,11 +73,6 @@ public:  	void setFreeWheel(bool freewheel); -private: -	static const int MAX_NUM_CHANNELS = 64; -	static const int RESAMPLER_OUTPUT_BUFFER = 4096; -	static const int RESAMPLER_INPUT_BUFFER = 64; -  protected:  	DrumKitLoader loader; @@ -88,7 +85,7 @@ protected:  	std::list< Event* > activeevents[MAX_NUM_CHANNELS];  	CHResampler resampler[MAX_NUM_CHANNELS]; -	sample_t resampler_output_buffer[MAX_NUM_CHANNELS][RESAMPLER_OUTPUT_BUFFER]; +	sample_t resampler_output_buffer[MAX_NUM_CHANNELS][4096];  	sample_t resampler_input_buffer[MAX_NUM_CHANNELS][RESAMPLER_INPUT_BUFFER];  	std::map<std::string, AudioFile *> audiofiles; | 
