106 |
// abstract methods derived from interface class 'InstrumentConsumer' |
// abstract methods derived from interface class 'InstrumentConsumer' |
107 |
virtual void ResourceToBeUpdated(::gig::Instrument* pResource, void*& pUpdateArg); |
virtual void ResourceToBeUpdated(::gig::Instrument* pResource, void*& pUpdateArg); |
108 |
virtual void ResourceUpdated(::gig::Instrument* pOldResource, ::gig::Instrument* pNewResource, void* pUpdateArg); |
virtual void ResourceUpdated(::gig::Instrument* pOldResource, ::gig::Instrument* pNewResource, void* pUpdateArg); |
109 |
protected: |
//protected: |
110 |
struct midi_key_info_t { |
struct midi_key_info_t { |
111 |
RTList<Voice>* pActiveVoices; ///< Contains the active voices associated with the MIDI key. |
RTList<Voice>* pActiveVoices; ///< Contains the active voices associated with the MIDI key. |
112 |
bool KeyPressed; ///< Is true if the respective MIDI key is currently pressed. |
bool KeyPressed; ///< Is true if the respective MIDI key is currently pressed. |
148 |
bool SustainPedal; ///< true if sustain pedal is down |
bool SustainPedal; ///< true if sustain pedal is down |
149 |
double GlobalVolume; ///< overall volume (a value < 1.0 means attenuation, a value > 1.0 means amplification) |
double GlobalVolume; ///< overall volume (a value < 1.0 means attenuation, a value > 1.0 means amplification) |
150 |
int Pitch; ///< Current (absolute) MIDI pitch value. |
int Pitch; ///< Current (absolute) MIDI pitch value. |
151 |
|
int CurrentKeyDimension; ///< Current value (0-127) for the keyboard dimension, altered by pressing a keyswitching key. |
152 |
int ActiveVoiceCount; ///< number of currently active voices |
int ActiveVoiceCount; ///< number of currently active voices |
153 |
int ActiveVoiceCountMax; ///< the maximum voice usage since application start |
int ActiveVoiceCountMax; ///< the maximum voice usage since application start |
154 |
bool SuspensionRequested; |
bool SuspensionRequested; |
159 |
int8_t ScaleTuning[12]; ///< contains optional detune factors (-64..+63 cents) for all 12 semitones of an octave |
int8_t ScaleTuning[12]; ///< contains optional detune factors (-64..+63 cents) for all 12 semitones of an octave |
160 |
RTList<Voice>::Iterator itLastStolenVoice; ///< Only for voice stealing: points to the last voice which was theft in current audio fragment, NULL otherwise. |
RTList<Voice>::Iterator itLastStolenVoice; ///< Only for voice stealing: points to the last voice which was theft in current audio fragment, NULL otherwise. |
161 |
RTList<uint>::Iterator iuiLastStolenKey; ///< Only for voice stealing: key number of last key on which the last voice was theft in current audio fragment, NULL otherwise. |
RTList<uint>::Iterator iuiLastStolenKey; ///< Only for voice stealing: key number of last key on which the last voice was theft in current audio fragment, NULL otherwise. |
162 |
|
int MaxFadeOutPos; ///< The last position in an audio fragment to allow a instant fade out (e.g. for voice stealing) without leading to clicks. |
163 |
|
|
164 |
void ProcessNoteOn(Pool<Event>::Iterator& itNoteOnEvent); |
void ProcessNoteOn(Pool<Event>::Iterator& itNoteOnEvent); |
165 |
void ProcessNoteOff(Pool<Event>::Iterator& itNoteOffEvent); |
void ProcessNoteOff(Pool<Event>::Iterator& itNoteOffEvent); |
166 |
void ProcessPitchbend(Pool<Event>::Iterator& itPitchbendEvent); |
void ProcessPitchbend(Pool<Event>::Iterator& itPitchbendEvent); |
167 |
void ProcessControlChange(Pool<Event>::Iterator& itControlChangeEvent); |
void ProcessControlChange(Pool<Event>::Iterator& itControlChangeEvent); |
168 |
void ProcessSysex(Pool<Event>::Iterator& itSysexEvent); |
void ProcessSysex(Pool<Event>::Iterator& itSysexEvent); |
169 |
Pool<Voice>::Iterator LaunchVoice(Pool<Event>::Iterator& itNoteOnEvent, int iLayer = 0, bool ReleaseTriggerVoice = false, bool VoiceStealing = true); |
Pool<Voice>::Iterator LaunchVoice(Pool<Event>::Iterator& itNoteOnEvent, int iLayer, bool ReleaseTriggerVoice, bool VoiceStealing); |
170 |
void StealVoice(Pool<Event>::Iterator& itNoteOnEvent, int iLayer, bool ReleaseTriggerVoice); |
void StealVoice(Pool<Event>::Iterator& itNoteOnEvent); |
171 |
void KillVoiceImmediately(Pool<Voice>::Iterator& itVoice); |
void FreeVoice(Pool<Voice>::Iterator& itVoice); |
172 |
|
void FreeKey(midi_key_info_t* pKey); |
173 |
void ResetSynthesisParameters(Event::destination_t dst, float val); |
void ResetSynthesisParameters(Event::destination_t dst, float val); |
174 |
void ResetInternal(); |
void ResetInternal(); |
175 |
|
|