109 |
ProcessFxSendControllers(pChannel, itControlChangeEvent); |
ProcessFxSendControllers(pChannel, itControlChangeEvent); |
110 |
} |
} |
111 |
|
|
112 |
|
void Engine::ProcessChannelPressure(LinuxSampler::EngineChannel* pEngineChannel, Pool<Event>::Iterator& itChannelPressureEvent) { |
113 |
|
// if required: engine global aftertouch handling (apart from the per voice handling) |
114 |
|
} |
115 |
|
|
116 |
|
void Engine::ProcessPolyphonicKeyPressure(LinuxSampler::EngineChannel* pEngineChannel, Pool<Event>::Iterator& itNotePressureEvent) { |
117 |
|
// if required: engine global aftertouch handling (apart from the per voice handling) |
118 |
|
} |
119 |
|
|
120 |
DiskThread* Engine::CreateDiskThread() { |
DiskThread* Engine::CreateDiskThread() { |
121 |
return new DiskThread ( |
return new DiskThread ( |
122 |
iMaxDiskStreams, |
iMaxDiskStreams, |
177 |
// if nothing defined for this key |
// if nothing defined for this key |
178 |
if (!pRegion) return Pool<Voice>::Iterator(); // nothing to do |
if (!pRegion) return Pool<Voice>::Iterator(); // nothing to do |
179 |
|
|
180 |
// only mark the first voice of a layered voice (group) to be in a |
int iKeyGroup = pRegion->KeyGroup; |
181 |
// key group, so the layered voices won't kill each other |
// only need to send a group event from the first voice in a layered region, |
182 |
int iKeyGroup = (iLayer == 0 && !ReleaseTriggerVoice) ? pRegion->KeyGroup : 0; |
// as all layers in a region always belongs to the same key group |
183 |
|
if (HandleKeyGroupConflicts && iLayer == 0) pChannel->HandleKeyGroupConflicts(iKeyGroup, itNoteOnEvent); |
|
if (HandleKeyGroupConflicts) pChannel->HandleKeyGroupConflicts(iKeyGroup, itNoteOnEvent); |
|
184 |
|
|
185 |
Voice::type_t VoiceType = Voice::type_normal; |
Voice::type_t VoiceType = Voice::type_normal; |
186 |
|
|
298 |
// return if this is a release triggered voice and there is no |
// return if this is a release triggered voice and there is no |
299 |
// releasetrigger dimension (could happen if an instrument |
// releasetrigger dimension (could happen if an instrument |
300 |
// change has occured between note on and off) |
// change has occured between note on and off) |
301 |
if (ReleaseTriggerVoice && VoiceType != Voice::type_release_trigger) return Pool<Voice>::Iterator(); |
if (ReleaseTriggerVoice && !(VoiceType & Voice::type_release_trigger)) return Pool<Voice>::Iterator(); |
302 |
|
|
303 |
::gig::DimensionRegion* pDimRgn = pRegion->GetDimensionRegionByValue(DimValues); |
::gig::DimensionRegion* pDimRgn = pRegion->GetDimensionRegionByValue(DimValues); |
304 |
|
if (!pDimRgn) return Pool<Voice>::Iterator(); // error (could not resolve dimension region) |
305 |
|
|
306 |
// no need to continue if sample is silent |
// no need to continue if sample is silent |
307 |
if (!pDimRgn->pSample || !pDimRgn->pSample->SamplesTotal) return Pool<Voice>::Iterator(); |
if (!pDimRgn->pSample || !pDimRgn->pSample->SamplesTotal) return Pool<Voice>::Iterator(); |
327 |
} |
} |
328 |
|
|
329 |
String Engine::Version() { |
String Engine::Version() { |
330 |
String s = "$Revision: 1.108 $"; |
String s = "$Revision$"; |
331 |
return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword |
return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword |
332 |
} |
} |
333 |
|
|