4 |
* * |
* * |
5 |
* Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck * |
* Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck * |
6 |
* Copyright (C) 2005-2008 Christian Schoenebeck * |
* Copyright (C) 2005-2008 Christian Schoenebeck * |
7 |
* Copyright (C) 2009-2011 Christian Schoenebeck and Grigor Iliev * |
* Copyright (C) 2009-2012 Christian Schoenebeck and Grigor Iliev * |
8 |
* * |
* * |
9 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
10 |
* it under the terms of the GNU General Public License as published by * |
* it under the terms of the GNU General Public License as published by * |
312 |
// lower minimum release time |
// lower minimum release time |
313 |
const float minReleaseTime = (float) MaxSamplesPerCycle / (float) SampleRate; |
const float minReleaseTime = (float) MaxSamplesPerCycle / (float) SampleRate; |
314 |
for (VoiceIterator iterVoice = pVoicePool->allocAppend(); iterVoice == pVoicePool->last(); iterVoice = pVoicePool->allocAppend()) { |
for (VoiceIterator iterVoice = pVoicePool->allocAppend(); iterVoice == pVoicePool->last(); iterVoice = pVoicePool->allocAppend()) { |
315 |
iterVoice->pEG1->CalculateFadeOutCoeff(minReleaseTime, SampleRate); |
iterVoice->CalculateFadeOutCoeff(minReleaseTime, SampleRate); |
316 |
} |
} |
317 |
pVoicePool->clear(); |
pVoicePool->clear(); |
318 |
} |
} |
345 |
pDiskThread->StartThread(); |
pDiskThread->StartThread(); |
346 |
dmsg(1,("OK\n")); |
dmsg(1,("OK\n")); |
347 |
|
|
348 |
|
bool printEqInfo = true; |
349 |
for (VoiceIterator iterVoice = pVoicePool->allocAppend(); iterVoice == pVoicePool->last(); iterVoice = pVoicePool->allocAppend()) { |
for (VoiceIterator iterVoice = pVoicePool->allocAppend(); iterVoice == pVoicePool->last(); iterVoice = pVoicePool->allocAppend()) { |
350 |
if (!iterVoice->pDiskThread) { |
if (!iterVoice->pDiskThread) { |
351 |
dmsg(0,("Engine -> voice::trigger: !pDiskThread\n")); |
dmsg(0,("Engine -> voice::trigger: !pDiskThread\n")); |
352 |
exit(EXIT_FAILURE); |
exit(EXIT_FAILURE); |
353 |
} |
} |
354 |
|
|
355 |
|
iterVoice->CreateEq(); |
356 |
|
|
357 |
|
if(printEqInfo) { |
358 |
|
iterVoice->PrintEqInfo(); |
359 |
|
printEqInfo = false; |
360 |
|
} |
361 |
} |
} |
362 |
pVoicePool->clear(); |
pVoicePool->clear(); |
363 |
|
|
968 |
} |
} |
969 |
case 10: { // panpot |
case 10: { // panpot |
970 |
//TODO: not sample accurate yet |
//TODO: not sample accurate yet |
|
pChannel->GlobalPanLeft = PanCurve[128 - itControlChangeEvent->Param.CC.Value]; |
|
|
pChannel->GlobalPanRight = PanCurve[itControlChangeEvent->Param.CC.Value]; |
|
971 |
pChannel->iLastPanRequest = itControlChangeEvent->Param.CC.Value; |
pChannel->iLastPanRequest = itControlChangeEvent->Param.CC.Value; |
972 |
break; |
break; |
973 |
} |
} |