2 |
* * |
* * |
3 |
* LinuxSampler - modular, streaming capable sampler * |
* LinuxSampler - modular, streaming capable sampler * |
4 |
* * |
* * |
5 |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
* Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck * |
6 |
* Copyright (C) 2005, 2006 Christian Schoenebeck * |
* Copyright (C) 2005-2008 Christian Schoenebeck * |
7 |
* * |
* * |
8 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
9 |
* it under the terms of the GNU General Public License as published by * |
* it under the terms of the GNU General Public License as published by * |
25 |
#define __LS_ENGINE_H__ |
#define __LS_ENGINE_H__ |
26 |
|
|
27 |
#include "../common/global.h" |
#include "../common/global.h" |
28 |
|
#include "InstrumentManager.h" |
29 |
|
|
30 |
namespace LinuxSampler { |
namespace LinuxSampler { |
31 |
|
|
32 |
|
// just symbol prototyping |
33 |
|
class MidiInputPort; |
34 |
|
|
35 |
/** @brief LinuxSampler Sampler Engine Interface |
/** @brief LinuxSampler Sampler Engine Interface |
36 |
* |
* |
37 |
* Abstract base interface class for all LinuxSampler engines which |
* Abstract base interface class for all LinuxSampler engines which |
46 |
// (these have to be implemented by the descendant) |
// (these have to be implemented by the descendant) |
47 |
|
|
48 |
virtual int RenderAudio(uint Samples) = 0; |
virtual int RenderAudio(uint Samples) = 0; |
49 |
virtual void SendSysex(void* pData, uint Size) = 0; |
virtual void SendSysex(void* pData, uint Size, MidiInputPort* pSender) = 0; |
50 |
virtual void Reset() = 0; |
virtual void Reset() = 0; |
51 |
virtual void Enable() = 0; |
virtual void Enable() = 0; |
52 |
virtual void Disable() = 0; |
virtual void Disable() = 0; |
61 |
virtual String Version() = 0; |
virtual String Version() = 0; |
62 |
virtual String EngineName() = 0; |
virtual String EngineName() = 0; |
63 |
|
|
64 |
|
/** |
65 |
|
* Returns pointer to the Engine's InstrumentManager or NULL if |
66 |
|
* the Engine does not provide an InstrumentManager. |
67 |
|
* |
68 |
|
* <b>Important:</b> All engine instances of the same engine |
69 |
|
* type have to return the same InstrumentManager, that is all |
70 |
|
* instances of the same engine type have to share one and |
71 |
|
* the same InstrumentManager object. |
72 |
|
*/ |
73 |
|
virtual InstrumentManager* GetInstrumentManager() = 0; |
74 |
|
|
75 |
protected: |
protected: |
76 |
virtual ~Engine() {}; // MUST only be destroyed by EngineFactory |
virtual ~Engine() {}; // MUST only be destroyed by EngineFactory |
77 |
|
void Unregister(); // Remove self from EngineFactory. |
78 |
friend class EngineFactory; |
friend class EngineFactory; |
79 |
}; |
}; |
80 |
|
|