diff options
Diffstat (limited to 'muse/midiplugins/drumglue/drumglue.h')
-rw-r--r-- | muse/midiplugins/drumglue/drumglue.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/muse/midiplugins/drumglue/drumglue.h b/muse/midiplugins/drumglue/drumglue.h new file mode 100644 index 00000000..49a19b55 --- /dev/null +++ b/muse/midiplugins/drumglue/drumglue.h @@ -0,0 +1,86 @@ +//========================================================= +// MusE +// Linux Music Editor +// +// drumglue - filter +// +// (C) Copyright 2008 Robert Jonsson (rj@spamatica.se) +// (C) Copyright 2005- Werner Schweer (ws@seh.de) +// Copyright: See COPYING file that comes with this distribution +//========================================================= + +#ifndef __DRUMGLUE_H__ +#define __DRUMGLUE_H__ + +#include <QtGui> + +#include "../libmidiplugin/mempi.h" + +#include "drumgluegui.h" +//--------------------------------------------------------- +// drumglue - filter +//--------------------------------------------------------- + +struct DrumOutputInstrument { + int outKey; // key to send + int lowestVelocity; // lower velocity valid for this instrument + int highestVelocity; // highest velocity valid for this instrument + bool prefer; // true if this instrument is preferred + bool preferFast; // true if this instrument is preferred for fast transitions +}; + +class DrumInstrument { + public: + DrumInstrument() + { + inKey=0; + lastOutputIndex=0; + outputTime=0; + } + + int getNextIndex(int velocity); + int getVelocity(int index, int velocity); + + + int inKey; // the key which triggers this instrument + QString name; + QList <DrumOutputInstrument *> outputInstruments; + +// storage of runtime variables + int lastOutputIndex; + unsigned int outputTime; +}; + + + + +class DrumGlue : public Mempi { + friend class DrumGlueGui; + friend class GlobalInstrumentView; + friend class OutputInstrumentView; + + QList<DrumInstrument *> drumInstruments; + + DrumGlueGui* gui; + + mutable unsigned char *saveData; + + virtual void process(unsigned, unsigned, MidiEventList*, MidiEventList*); + + public: + DrumGlue(const char* name, const MempiHost*); + ~DrumGlue(); + virtual bool init(); + + virtual bool hasGui() const { return true; } + virtual bool guiVisible() const { return gui->isVisible(); } + virtual void showGui(bool val) { gui->setShown(val); } + virtual void getGeometry(int* x, int* y, int* w, int* h) const; + virtual void setGeometry(int, int, int, int); + + virtual void getInitData(int*, const unsigned char**) const; + virtual void setInitData(int, const unsigned char*); + }; + +#endif + |