75 |
|
|
76 |
virtual AbstractEngine::Format GetEngineFormat() = 0; |
virtual AbstractEngine::Format GetEngineFormat() = 0; |
77 |
|
|
78 |
|
friend class AbstractVoice; |
79 |
friend class AbstractEngine; |
friend class AbstractEngine; |
80 |
template<class TV, class TRR, class TR, class TD, class TIM, class TI> friend class EngineBase; |
template<class TV, class TRR, class TR, class TD, class TIM, class TI> friend class EngineBase; |
81 |
|
template<class EC, class R, class S, class D> friend class VoiceBase; |
82 |
|
|
83 |
protected: |
protected: |
84 |
AbstractEngineChannel(); |
AbstractEngineChannel(); |
114 |
int iLastPanRequest; ///< just for the return value of Pan(), so we don't have to make an injective function |
int iLastPanRequest; ///< just for the return value of Pan(), so we don't have to make an injective function |
115 |
int iEngineIndexSelf; ///< Reflects the index of this EngineChannel in the Engine's ArrayList. |
int iEngineIndexSelf; ///< Reflects the index of this EngineChannel in the Engine's ArrayList. |
116 |
bool bStatusChanged; ///< true in case an engine parameter has changed (e.g. new instrument, another volumet) |
bool bStatusChanged; ///< true in case an engine parameter has changed (e.g. new instrument, another volumet) |
117 |
|
uint32_t RoundRobinIndex; ///< counter for round robin sample selection, incremented for each note on |
118 |
|
|
119 |
SynchronizedConfig< ArrayList<VirtualMidiDevice*> > virtualMidiDevices; |
SynchronizedConfig< ArrayList<VirtualMidiDevice*> > virtualMidiDevices; |
120 |
SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread; |
SynchronizedConfig< ArrayList<VirtualMidiDevice*> >::Reader virtualMidiDevicesReader_AudioThread; |