diff options
| author | Christian Glöckner <cgloeckner@freenet.de> | 2016-01-25 16:20:30 +0100 | 
|---|---|---|
| committer | André Nusser <andre.nusser@googlemail.com> | 2016-02-09 09:03:17 +0100 | 
| commit | c9edca027eb2d2e257ff4a13fc257385d7c64d39 (patch) | |
| tree | f2f003225fc5177fa45bb61e8058aa5acb3be798 /drumgizmo/input | |
| parent | d3554736c13531898fb720b34772a595620e661a (diff) | |
Base Midi-Engines on Midi-Engine Base Class (+ Minor Renaming)
Diffstat (limited to 'drumgizmo/input')
| -rw-r--r-- | drumgizmo/input/jackmidi.cc | 50 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi.h | 9 | ||||
| -rw-r--r-- | drumgizmo/input/midifile.cc | 21 | ||||
| -rw-r--r-- | drumgizmo/input/midifile.h | 11 | 
4 files changed, 29 insertions, 62 deletions
| diff --git a/drumgizmo/input/jackmidi.cc b/drumgizmo/input/jackmidi.cc index 386adac..4aebf69 100644 --- a/drumgizmo/input/jackmidi.cc +++ b/drumgizmo/input/jackmidi.cc @@ -33,12 +33,10 @@  static int const NOTE_ON = 0x90;  JackMidiInputEngine::JackMidiInputEngine(JackClient &client) -	: AudioInputEngine{} +	: AudioInputEngineMidi{}  	, JackProcess{}  	, client(client)  	, port{nullptr} -	, midimap{} -	, midi_mapper{}  	, pos{0u}  	, list{nullptr}  	, listsize{0u} @@ -46,30 +44,18 @@ JackMidiInputEngine::JackMidiInputEngine(JackClient &client)  	client.add(*this);  } -JackMidiInputEngine::~JackMidiInputEngine() { client.remove(*this); } - -bool JackMidiInputEngine::isMidiEngine() { return true; } +JackMidiInputEngine::~JackMidiInputEngine() +{ +	client.remove(*this); +} -bool JackMidiInputEngine::init(Instruments &instruments) +bool JackMidiInputEngine::init(Instruments& instruments)  { -	if (midimap == "") -	{ -		std::cerr << "[JackMidiInputEngine] Missing midimap filename\n"; -		return false; -	} -	MidiMapParser p{midimap}; -	if (p.parse()) -	{ -		std::cerr << "[JackmidiInputEngine] Failed to parse midimap '" << midimap +	if (!loadMidiMap(midimap, instruments)) { +		std::cerr << "[MidifileInputEngine] Failed to parse midimap '" << midimap  		          << "'\n";  		return false;  	} -	midi_mapper.midimap = p.midimap; -	for (auto i = 0u; i < instruments.size(); ++i) -	{ -		auto name = instruments[i]->name(); -		midi_mapper.instrmap[name] = i; -	}  	port = std::make_unique<JackPort>(client, "drumgizmo_midiin",  	                                  JACK_DEFAULT_MIDI_TYPE, JackPortIsInput);  	return true; @@ -95,9 +81,13 @@ bool JackMidiInputEngine::start()  	return true;  } -void JackMidiInputEngine::stop() {} +void JackMidiInputEngine::stop() +{ +} -void JackMidiInputEngine::pre() {} +void JackMidiInputEngine::pre() +{ +}  event_t *JackMidiInputEngine::run(size_t pos, size_t len, size_t *nevents)  { @@ -109,7 +99,9 @@ event_t *JackMidiInputEngine::run(size_t pos, size_t len, size_t *nevents)  	return l;  } -void JackMidiInputEngine::post() {} +void JackMidiInputEngine::post() +{ +}  void JackMidiInputEngine::process(jack_nframes_t num_frames)  { @@ -132,7 +124,7 @@ void JackMidiInputEngine::process(jack_nframes_t num_frames)  		int key = event.buffer[1];  		int velocity = event.buffer[2];  		printf("Event key:%d vel:%d\n", key, velocity); -		int k = midi_mapper.lookup(key); +		int k = mmap.lookup(key);  		if (k != -1 && velocity)  		{  			list[listsize].type = TYPE_ONSET; @@ -145,9 +137,3 @@ void JackMidiInputEngine::process(jack_nframes_t num_frames)  	jack_midi_clear_buffer(buffer);  	pos += num_frames;  } - -/* -    DrumKit* kit; -    size_t pos; -    EventQueue *eventqueue; -*/ diff --git a/drumgizmo/input/jackmidi.h b/drumgizmo/input/jackmidi.h index e129071..10111a4 100644 --- a/drumgizmo/input/jackmidi.h +++ b/drumgizmo/input/jackmidi.h @@ -29,21 +29,20 @@  #include <jack/jack.h>  #include <jack/midiport.h> -#include "audioinputengine.h" +#include "audioinputenginemidi.h"  #include "midimapper.h"  #include "midimapparser.h"  #include "../jackclient.h"  class JackMidiInputEngine -	: public AudioInputEngine +	: public AudioInputEngineMidi  	, public JackProcess  {  public:  	JackMidiInputEngine(JackClient &client);  	~JackMidiInputEngine(); -	// based on AudioInputEngine -	bool isMidiEngine() override; +	// based on AudioInputEngineMidi  	bool init(Instruments& instruments) override;  	void setParm(std::string parm, std::string value) override;  	bool start() override; @@ -59,8 +58,6 @@ private:  	JackClient &client;  	std::unique_ptr<JackPort> port; -	std::string midimap; -	MidiMapper midi_mapper;  	std::size_t pos;  	event_t* list; diff --git a/drumgizmo/input/midifile.cc b/drumgizmo/input/midifile.cc index 4e36c9d..7d27998 100644 --- a/drumgizmo/input/midifile.cc +++ b/drumgizmo/input/midifile.cc @@ -31,10 +31,10 @@  static int const NOTE_ON = 0x90;  MidifileInputEngine::MidifileInputEngine() -	: smf{nullptr} +	: AudioInputEngineMidi{} +	, smf{nullptr}  	, current_event{nullptr}  	, file{} -	, midimap{}  	, speed{1.f}  	, track{-1} // all tracks  	, loop{false} @@ -50,11 +50,6 @@ MidifileInputEngine::~MidifileInputEngine()  	}  } -bool MidifileInputEngine::isMidiEngine() -{ -	return true; -} -  bool MidifileInputEngine::init(Instruments& instruments)  {  	if (file == "") @@ -74,19 +69,11 @@ bool MidifileInputEngine::init(Instruments& instruments)  		          << "'\n";  		return false;  	} -	MidiMapParser p{midimap}; -	if (p.parse()) -	{ +	if (!loadMidiMap(midimap, instruments)) {  		std::cerr << "[MidifileInputEngine] Failed to parse midimap '" << midimap  		          << "'\n";  		return false;  	} -	midi_mapper.midimap = p.midimap; -	for (auto i = 0u; i < instruments.size(); ++i) -	{ -		auto name = instruments[i]->name(); -		midi_mapper.instrmap[name] = i; -	}  	return true;  } @@ -176,7 +163,7 @@ event_t *MidifileInputEngine::run(size_t pos, size_t len, size_t *nevents)  				size_t evpos = current_event->time_seconds * (44100.0 / speed);  				evs[num_events].offset = evpos - pos; -				int i = midi_mapper.lookup(key); +				int i = mmap.lookup(key);  				if (i != -1)  				{  					evs[num_events].instrument = i; diff --git a/drumgizmo/input/midifile.h b/drumgizmo/input/midifile.h index a7e4cf0..5eb84f0 100644 --- a/drumgizmo/input/midifile.h +++ b/drumgizmo/input/midifile.h @@ -30,19 +30,18 @@  #include <event.h>  #include <smf.h> -#include "audioinputengine.h" +#include "audioinputenginemidi.h"  #include "midimapper.h"  #include "midimapparser.h"  class MidifileInputEngine -	: public AudioInputEngine +	: public AudioInputEngineMidi  {  public:  	MidifileInputEngine();  	~MidifileInputEngine(); -	// based on AudioInputEngine -	bool isMidiEngine() override; +	// based on AudioInputEngineMidi  	bool init(Instruments& instruments) override;  	void setParm(std::string parm, std::string value) override;  	bool start() override; @@ -55,9 +54,7 @@ private:  	smf_t* smf;  	smf_event_t* current_event; -	MidiMapper midi_mapper; - -	std::string file, midimap; +	std::string file;  	float speed;  	int track;  	bool loop; | 
