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. |
158 |
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 |
159 |
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. |
160 |
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. |
161 |
|
int MaxFadeOutPos; ///< The last position in an audio fragment to allow a instant fade out (e.g. for voice stealing) without leading to clicks. |
162 |
|
|
163 |
void ProcessNoteOn(Pool<Event>::Iterator& itNoteOnEvent); |
void ProcessNoteOn(Pool<Event>::Iterator& itNoteOnEvent); |
164 |
void ProcessNoteOff(Pool<Event>::Iterator& itNoteOffEvent); |
void ProcessNoteOff(Pool<Event>::Iterator& itNoteOffEvent); |
165 |
void ProcessPitchbend(Pool<Event>::Iterator& itPitchbendEvent); |
void ProcessPitchbend(Pool<Event>::Iterator& itPitchbendEvent); |
166 |
void ProcessControlChange(Pool<Event>::Iterator& itControlChangeEvent); |
void ProcessControlChange(Pool<Event>::Iterator& itControlChangeEvent); |
167 |
void ProcessSysex(Pool<Event>::Iterator& itSysexEvent); |
void ProcessSysex(Pool<Event>::Iterator& itSysexEvent); |
168 |
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); |
169 |
void StealVoice(Pool<Event>::Iterator& itNoteOnEvent, int iLayer, bool ReleaseTriggerVoice); |
void StealVoice(Pool<Event>::Iterator& itNoteOnEvent); |
170 |
void KillVoiceImmediately(Pool<Voice>::Iterator& itVoice); |
void FreeVoice(Pool<Voice>::Iterator& itVoice); |
171 |
|
void FreeKey(midi_key_info_t* pKey); |
172 |
void ResetSynthesisParameters(Event::destination_t dst, float val); |
void ResetSynthesisParameters(Event::destination_t dst, float val); |
173 |
void ResetInternal(); |
void ResetInternal(); |
174 |
|
|