60 |
Engine(); |
Engine(); |
61 |
virtual ~Engine(); |
virtual ~Engine(); |
62 |
void Connect(AudioOutputDevice* pAudioOut); |
void Connect(AudioOutputDevice* pAudioOut); |
|
::gig::DimensionRegion** ChangeInstrument(EngineChannel* pEngineChannel, ::gig::Instrument* pInstrument); |
|
63 |
void SuspendAll(); |
void SuspendAll(); |
64 |
void ResumeAll(); |
void ResumeAll(); |
65 |
void Suspend(::gig::Region* pRegion); |
void Suspend(::gig::Region* pRegion); |
127 |
int MaxFadeOutPos; ///< The last position in an audio fragment to allow an instant fade out (e.g. for voice stealing) without leading to clicks. |
int MaxFadeOutPos; ///< The last position in an audio fragment to allow an instant fade out (e.g. for voice stealing) without leading to clicks. |
128 |
uint32_t RandomSeed; ///< State of the random number generator used by the random dimension. |
uint32_t RandomSeed; ///< State of the random number generator used by the random dimension. |
129 |
Mutex ResetInternalMutex; ///< Mutex to protect the ResetInternal function for concurrent usage (e.g. by the lscp and instrument loader threads). |
Mutex ResetInternalMutex; ///< Mutex to protect the ResetInternal function for concurrent usage (e.g. by the lscp and instrument loader threads). |
130 |
|
Pool< ::gig::DimensionRegion*>* pDimRegionPool[2]; ///< Double buffered pool, used by the engine channels to keep track of dimension regions in use. |
131 |
|
|
132 |
void ProcessEvents(EngineChannel* pEngineChannel, uint Samples); |
void ProcessEvents(EngineChannel* pEngineChannel, uint Samples); |
133 |
void RenderActiveVoices(EngineChannel* pEngineChannel, uint Samples); |
void RenderActiveVoices(EngineChannel* pEngineChannel, uint Samples); |
158 |
|
|
159 |
friend class Voice; |
friend class Voice; |
160 |
private: |
private: |
|
|
|
|
/// Command used by the instrument loader thread to |
|
|
/// request an instrument change on a channel. |
|
|
struct instrument_change_command_t { |
|
|
EngineChannel* pEngineChannel; |
|
|
::gig::Instrument* pInstrument; |
|
|
}; |
|
|
struct instrument_change_reply_t { |
|
|
int dummy; |
|
|
}; |
|
|
RingBuffer<instrument_change_command_t,false>* InstrumentChangeQueue; ///< Contains the instrument change command |
|
|
RingBuffer<instrument_change_reply_t,false>* InstrumentChangeReplyQueue; ///< Contains the acknowledge of an instrument change |
|
|
::gig::DimensionRegion** pDimRegionsInUse; ///< After an instrument change, this contains a list of dimension regions that are still in use by playing voices |
|
|
|
|
161 |
Pool< ::gig::Region*> SuspendedRegions; |
Pool< ::gig::Region*> SuspendedRegions; |
162 |
Mutex SuspendedRegionsMutex; |
Mutex SuspendedRegionsMutex; |
163 |
Condition SuspensionChangeOngoing; |
Condition SuspensionChangeOngoing; |