diff options
author | Christian Glöckner <cgloeckner@freenet.de> | 2016-03-29 11:01:21 +0200 |
---|---|---|
committer | André Nusser <andre.nusser@googlemail.com> | 2016-03-31 17:35:47 +0200 |
commit | 94d33d51ee136d88a2d81bfce47efd2836e845d0 (patch) | |
tree | 9a27e8ac61cf3872386f9d4d154cfb1dfd2b0b0c | |
parent | 13b5fabc8c3722e7e30b22d50f44e2a3bba3ef11 (diff) |
Refactored class BeatMapper
-rw-r--r-- | src/beatmapper.cc | 76 | ||||
-rw-r--r-- | src/beatmapper.h | 22 |
2 files changed, 53 insertions, 45 deletions
diff --git a/src/beatmapper.cc b/src/beatmapper.cc index 78441cb..b61f0b5 100644 --- a/src/beatmapper.cc +++ b/src/beatmapper.cc @@ -30,48 +30,58 @@ #define DEF 2.0 -BeatMapper::BeatMapper(Instrument *instrument) +BeatMapper::BeatMapper(const Instrument& instrument) + : instrument{instrument} + , hist{} + , C{1.3} + , mindist{4} + , last{mindist} { - this->instrument = instrument; - for(size_t i = 0; i < HISTORY_SIZE; i++) hist[i] = DEF; - C = 1.3; - mindist = 4; - last = mindist; + for(size_t i = 0; i < HISTORY_SIZE; ++i) + { + hist[i] = DEF; + } } - -Sample *BeatMapper::map(jack_nframes_t nframes) +Sample* BeatMapper::map(jack_nframes_t nframes) { - return NULL; - Sample *sample = NULL; - - jack_default_audio_sample_t *buffer; - buffer = (jack_default_audio_sample_t *)jack_port_get_buffer(instrument->port, nframes); - - float e = 0.0; - for(size_t i = 0; i < nframes; i++) { - e += buffer[i] * buffer[i]; - } + return nullptr; + + // moved the following to comment by glocke since return makes this + // unreachable + /* + Sample *sample = nullptr; + + jack_default_audio_sample_t *buffer; + buffer = (jack_default_audio_sample_t + *)jack_port_get_buffer(instrument->port, nframes); + + float e = 0.0; + for(size_t i = 0; i < nframes; i++) { + e += buffer[i] * buffer[i]; + } - float E = 0.0; - for(size_t i = 0; i < HISTORY_SIZE; i++) E += hist[i] / (float)HISTORY_SIZE; - if(E == 0) E = DEF; // We do not have a connection + float E = 0.0; + for(size_t i = 0; i < HISTORY_SIZE; i++) E += hist[i] / (float)HISTORY_SIZE; + if(E == 0) E = DEF; // We do not have a connection - // printf("last: %d, E: %f, e: %f - threshold: %f\n", last, E, e, 1.3 * E); + // printf("last: %d, E: %f, e: %f - threshold: %f\n", last, E, e, 1.3 * + E); - // Shift history and save new value - for(size_t i = 0; i < HISTORY_SIZE - 1; i++) hist[i] = hist[i+1]; - hist[HISTORY_SIZE - 1] = e>DEF?e:DEF; + // Shift history and save new value + for(size_t i = 0; i < HISTORY_SIZE - 1; i++) hist[i] = hist[i+1]; + hist[HISTORY_SIZE - 1] = e>DEF?e:DEF; - if(instrument->name == "hihat" && e > 0) printf("e: %f\n", e); + if(instrument->name == "hihat" && e > 0) printf("e: %f\n", e); - if(e > C * E && last > mindist) { - Velocity *v = instrument->getVelocity(127); - if(v) sample = v->getSample(); - } + if(e > C * E && last > mindist) { + Velocity *v = instrument->getVelocity(127); + if(v) sample = v->getSample(); + } - last++; - if(sample) last = 0; + last++; + if(sample) last = 0; - return sample; + return sample; + */ } diff --git a/src/beatmapper.h b/src/beatmapper.h index fde1988..405b3d6 100644 --- a/src/beatmapper.h +++ b/src/beatmapper.h @@ -24,8 +24,7 @@ * along with DrumGizmo; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef __DRUMGIZMO_BEATMAPPER_H__ -#define __DRUMGIZMO_BEATMAPPER_H__ +#pragma once #include <jack/jack.h> @@ -36,19 +35,18 @@ #define HISTORY_SIZE 200 -class BeatMapper { +class BeatMapper +{ public: - BeatMapper(Instrument *instrument); + BeatMapper(const Instrument& instrument); - Sample *map(jack_nframes_t nframes); + Sample* map(jack_nframes_t nframes); private: - Instrument *instrument; - float hist[HISTORY_SIZE]; - float C; + const Instrument& instrument; + float hist[HISTORY_SIZE]; + float C; - size_t mindist; - size_t last; + size_t mindist; + size_t last; }; - -#endif/*__DRUMGIZMO_BEATMAPPER_H__*/ |