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/fluid/fluid.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 muse2/synti/fluid/fluid.h (limited to 'muse2/synti/fluid/fluid.h') diff --git a/muse2/synti/fluid/fluid.h b/muse2/synti/fluid/fluid.h new file mode 100644 index 00000000..c1669846 --- /dev/null +++ b/muse2/synti/fluid/fluid.h @@ -0,0 +1,84 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: fluid.h,v 1.7.2.4 2009/11/19 04:20:33 terminator356 Exp $ +// +// This file is derived from fluid Synth and modified +// for MusE. +// Parts of fluid are derived from Smurf Sound Font Editor. +// Parts of Smurf Sound Font Editor are derived from +// awesfx utilities +// Smurf: Copyright (C) 1999-2000 Josh Green +// fluid: Copyright (C) 2001 Peter Hanappe +// MusE: Copyright (C) 2001 Werner Schweer +// awesfx: Copyright (C) 1996-1999 Takashi Iwai +//========================================================= + +#ifndef _SYNTH_H +#define _SYNTH_H + +#include +#include +#include "libsynti/mess.h" + +enum SfOp { SF_REPLACE = 1, SF_ADD, SF_REMOVE }; +class FLUIDGui; + +//--------------------------------------------------------- +// ISynth +//--------------------------------------------------------- + +class ISynth : public Mess { + bool _busy; + bool _gmMode; + + unsigned char* initBuffer; + int initLen; + + fluid_synth_t* _fluidsynth; + char* sfont; + mutable fluid_sfont_t* fluid_font; + int fontId; + + int readFd, writeFd; + + mutable MidiPatch patch; + + pthread_t helperThread; + FLUIDGui* gui; + + void gmOn(bool); + void sysexSoundFont(SfOp op, const char* data); + + void allNotesOff(); + void resetAllController(int); + + virtual void processMessages(); + virtual void process(float**, int, int); + virtual bool playNote(int channel, int pitch, int velo); + virtual bool setController(int, int, int); + virtual bool sysex(int len, const unsigned char* p); + + virtual bool processEvent(const MidiPlayEvent&); + virtual const char* getPatchName (int, int, int, bool) const; + virtual const MidiPatch* getPatchInfo(int, const MidiPatch *) const; + virtual void getInitData(int*, const unsigned char**); + + virtual bool guiVisible() const; + virtual void showGui(bool); + virtual bool hasGui() const { return true; } + + public: + ISynth(); + ~ISynth(); + + fluid_synth_t* synth() { return _fluidsynth; } + const fluid_synth_t* synth() const { return _fluidsynth; } + char* getFont() const { return sfont; } + void setFontId(int id) { fontId = id; } + int getFontId() const { return fontId; } + bool init(const char* name); + void noRTHelper(); + }; + +#endif /* _SYNTH_H */ -- cgit v1.2.3