From 8a2c2824a59d7644e13bc52c9a0ecbd641f21f95 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Wed, 13 Oct 2010 19:34:22 +0000 Subject: new branch muse2, first checkin --- muse2/synti/libsynti/mess.h | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 muse2/synti/libsynti/mess.h (limited to 'muse2/synti/libsynti/mess.h') diff --git a/muse2/synti/libsynti/mess.h b/muse2/synti/libsynti/mess.h new file mode 100644 index 00000000..921dbd6c --- /dev/null +++ b/muse2/synti/libsynti/mess.h @@ -0,0 +1,97 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: mess.h,v 1.3.2.3 2009/11/19 04:20:33 terminator356 Exp $ +// (C) Copyright 2001-2004 Werner Schweer (ws@seh.de) +//========================================================= + +#ifndef __MESS_H__ +#define __MESS_H__ + +#define MESS_MAJOR_VERSION 1 +#define MESS_MINOR_VERSION 1 + +#include "mpevent.h" + +class QWidget; +class QString; +class MessP; + +//--------------------------------------------------------- +// MidiPatch +//--------------------------------------------------------- + +struct MidiPatch { + signed char typ; // 1 - GM 2 - GS 4 - XG + signed char hbank, lbank, prog; + const char* name; + }; + +//--------------------------------------------------------- +// Mess +// MusE experimental software synth +// Instance virtual interface class +//--------------------------------------------------------- + +class Mess { + MessP* d; + + int _sampleRate; + int _channels; // 1 - mono, 2 - stereo + + public: + Mess(int channels); + virtual ~Mess(); + + int channels() const { return _channels; } + int sampleRate() const { return _sampleRate; } + void setSampleRate(int r) { _sampleRate = r; } + + virtual void processMessages() { }; + virtual void process(float** data, int offset, int len) = 0; + + // the synti has to (re-)implement processEvent() or provide + // some of the next three functions: + + virtual bool processEvent(const MidiPlayEvent&); + virtual bool setController(int, int, int) { return false; } + virtual bool playNote(int, int, int) { return false; } + virtual bool sysex(int, const unsigned char*) { return false; } + + virtual void getInitData(int*, const unsigned char**) const {} + virtual int getControllerInfo(int, const char**, int*, int*, int*, int*) const {return 0;} + virtual const char* getPatchName(int, int, int, bool) const { return "?"; } + virtual const MidiPatch* getPatchInfo(int, const MidiPatch*) const { return 0; } + + // synthesizer -> host communication + void sendEvent(MidiPlayEvent); // called from synti + MidiPlayEvent receiveEvent(); // called from host + int eventsPending() const; + + // GUI interface routines + virtual bool hasGui() const { return false; } + virtual bool guiVisible() const { return false; } + virtual void showGui(bool) {} + virtual void getGeometry(int* x, int* y, int* w, int* h) const; + virtual void setGeometry(int, int, int, int) {} + }; + +//--------------------------------------------------------- +// MESS +// Class descriptor +//--------------------------------------------------------- + +struct MESS { + const char* name; + const char* description; + const char* version; + int majorMessVersion, minorMessVersion; + Mess* (*instantiate)(int sr, QWidget* parent, QString* projectPathPtr, const char* name); + }; + +extern "C" { + const MESS* mess_descriptor(); + } + +#endif + -- cgit v1.2.3