@ -70,10 +70,12 @@ CMiniDexed::CMiniDexed (CConfig *pConfig, CInterruptSystem *pInterrupt,
m_bSavePerformance ( false ) ,
m_bSavePerformance ( false ) ,
m_bSavePerformanceNewFile ( false ) ,
m_bSavePerformanceNewFile ( false ) ,
m_bSetNewPerformance ( false ) ,
m_bSetNewPerformance ( false ) ,
m_bSetNewPerformance2 ( false ) ,
m_bSetNewPerformanceBank ( false ) ,
m_bSetNewPerformanceBank ( false ) ,
m_bSetFirstPerformance ( false ) ,
m_bSetFirstPerformance ( false ) ,
m_bDeletePerformance ( false ) ,
m_bDeletePerformance ( false ) ,
m_bLoadPerformanceBusy ( false ) ,
m_bLoadPerformanceBusy ( false ) ,
m_bLoadPerformanceBusy2 ( false ) ,
m_bLoadPerformanceBankBusy ( false )
m_bLoadPerformanceBankBusy ( false )
{
{
assert ( m_pConfig ) ;
assert ( m_pConfig ) ;
@ -329,7 +331,7 @@ bool CMiniDexed::Initialize (void)
m_PerformanceConfig . Init ( m_nToneGenerators ) ;
m_PerformanceConfig . Init ( m_nToneGenerators ) ;
if ( m_PerformanceConfig . Load ( ) )
if ( m_PerformanceConfig . Load ( ) )
{
{
LoadPerformanceParameters ( ) ;
LoadPerformanceParameters ( 0 ) ;
}
}
else
else
{
{
@ -447,6 +449,16 @@ void CMiniDexed::Process (bool bPlugAndPlayUpdated)
}
}
pScheduler - > Yield ( ) ;
pScheduler - > Yield ( ) ;
}
}
if ( m_bSetNewPerformance2 & & ! m_bSetNewPerformanceBank & & ! m_bLoadPerformanceBusy2 & & ! m_bLoadPerformanceBankBusy )
{
DoSetNewPerformance2 ( ) ;
if ( m_nSetNewPerformanceID2 = = GetActualPerformanceID ( ) )
{
m_bSetNewPerformance2 = false ;
}
pScheduler - > Yield ( ) ;
}
if ( m_bDeletePerformance )
if ( m_bDeletePerformance )
{
{
@ -1945,6 +1957,14 @@ bool CMiniDexed::SetNewPerformance(unsigned nID)
return true ;
return true ;
}
}
bool CMiniDexed : : SetNewPerformance2 ( unsigned nID )
{
m_bSetNewPerformance2 = true ;
m_nSetNewPerformanceID2 = nID ;
return true ;
}
bool CMiniDexed : : SetNewPerformanceBank ( unsigned nBankID )
bool CMiniDexed : : SetNewPerformanceBank ( unsigned nBankID )
{
{
m_bSetNewPerformanceBank = true ;
m_bSetNewPerformanceBank = true ;
@ -1968,7 +1988,7 @@ bool CMiniDexed::DoSetNewPerformance (void)
if ( m_PerformanceConfig . Load ( ) )
if ( m_PerformanceConfig . Load ( ) )
{
{
LoadPerformanceParameters ( ) ;
LoadPerformanceParameters ( 0 ) ;
m_bLoadPerformanceBusy = false ;
m_bLoadPerformanceBusy = false ;
return true ;
return true ;
}
}
@ -1980,6 +2000,27 @@ bool CMiniDexed::DoSetNewPerformance (void)
}
}
}
}
bool CMiniDexed : : DoSetNewPerformance2 ( void )
{
m_bLoadPerformanceBusy2 = true ;
unsigned nID = m_nSetNewPerformanceID2 ;
m_PerformanceConfig . SetNewPerformance ( nID ) ;
if ( m_PerformanceConfig . Load ( ) )
{
LoadPerformanceParameters ( 1 ) ;
m_bLoadPerformanceBusy2 = false ;
return true ;
}
else
{
SetMIDIChannel ( CMIDIDevice : : OmniMode , 0 ) ;
m_bLoadPerformanceBusy2 = false ;
return false ;
}
}
bool CMiniDexed : : DoSetNewPerformanceBank ( void )
bool CMiniDexed : : DoSetNewPerformanceBank ( void )
{
{
m_bLoadPerformanceBankBusy = true ;
m_bLoadPerformanceBankBusy = true ;
@ -2026,50 +2067,63 @@ bool CMiniDexed::DoSavePerformanceNewFile (void)
}
}
void CMiniDexed : : LoadPerformanceParameters ( void )
void CMiniDexed : : LoadPerformanceParameters ( unsigned part )
{
{
for ( unsigned nTG = 0 ; nTG < CConfig : : AllToneGenerators ; nTG + + )
for ( unsigned nTG = 0 ; nTG < CConfig : : AllToneGenerators ; nTG + + )
{
{
unsigned nTargetTG = part * 8 + nTG ;
BankSelect ( m_PerformanceConfig . GetBankNumber ( nTG ) , nTG ) ;
unsigned nChannel = m_PerformanceConfig . GetMIDIChannel ( nTG ) ;
ProgramChange ( m_PerformanceConfig . GetVoiceNumber ( nTG ) , nTG ) ;
SetMIDIChannel ( m_PerformanceConfig . GetMIDIChannel ( nTG ) , nTG ) ;
if ( nTargetTG > = CConfig : : AllToneGenerators )
SetVolume ( m_PerformanceConfig . GetVolume ( nTG ) , nTG ) ;
break ;
SetPan ( m_PerformanceConfig . GetPan ( nTG ) , nTG ) ;
SetMasterTune ( m_PerformanceConfig . GetDetune ( nTG ) , nTG ) ;
if ( part = = 0 & & nTG > = 8 & & nChannel = = CMIDIDevice : : Disabled )
SetCutoff ( m_PerformanceConfig . GetCutoff ( nTG ) , nTG ) ;
continue ;
SetResonance ( m_PerformanceConfig . GetResonance ( nTG ) , nTG ) ;
setPitchbendRange ( m_PerformanceConfig . GetPitchBendRange ( nTG ) , nTG ) ;
if ( part = = 1 & & nChannel + 8 < CMIDIDevice : : Channels )
setPitchbendStep ( m_PerformanceConfig . GetPitchBendStep ( nTG ) , nTG ) ;
nChannel + = 8 ;
setPortamentoMode ( m_PerformanceConfig . GetPortamentoMode ( nTG ) , nTG ) ;
setPortamentoGlissando ( m_PerformanceConfig . GetPortamentoGlissando ( nTG ) , nTG ) ;
BankSelect ( m_PerformanceConfig . GetBankNumber ( nTG ) , nTargetTG ) ;
setPortamentoTime ( m_PerformanceConfig . GetPortamentoTime ( nTG ) , nTG ) ;
ProgramChange ( m_PerformanceConfig . GetVoiceNumber ( nTG ) , nTargetTG ) ;
SetMIDIChannel ( nChannel , nTargetTG ) ;
m_nNoteLimitLow [ nTG ] = m_PerformanceConfig . GetNoteLimitLow ( nTG ) ;
SetVolume ( m_PerformanceConfig . GetVolume ( nTG ) , nTargetTG ) ;
m_nNoteLimitHigh [ nTG ] = m_PerformanceConfig . GetNoteLimitHigh ( nTG ) ;
SetPan ( m_PerformanceConfig . GetPan ( nTG ) , nTargetTG ) ;
m_nNoteShift [ nTG ] = m_PerformanceConfig . GetNoteShift ( nTG ) ;
SetMasterTune ( m_PerformanceConfig . GetDetune ( nTG ) , nTargetTG ) ;
SetCutoff ( m_PerformanceConfig . GetCutoff ( nTG ) , nTargetTG ) ;
SetResonance ( m_PerformanceConfig . GetResonance ( nTG ) , nTargetTG ) ;
setPitchbendRange ( m_PerformanceConfig . GetPitchBendRange ( nTG ) , nTargetTG ) ;
setPitchbendStep ( m_PerformanceConfig . GetPitchBendStep ( nTG ) , nTargetTG ) ;
setPortamentoMode ( m_PerformanceConfig . GetPortamentoMode ( nTG ) , nTargetTG ) ;
setPortamentoGlissando ( m_PerformanceConfig . GetPortamentoGlissando ( nTG ) , nTargetTG ) ;
setPortamentoTime ( m_PerformanceConfig . GetPortamentoTime ( nTG ) , nTargetTG ) ;
m_nNoteLimitLow [ nTargetTG ] = m_PerformanceConfig . GetNoteLimitLow ( nTG ) ;
m_nNoteLimitHigh [ nTargetTG ] = m_PerformanceConfig . GetNoteLimitHigh ( nTG ) ;
m_nNoteShift [ nTargetTG ] = m_PerformanceConfig . GetNoteShift ( nTG ) ;
if ( m_PerformanceConfig . VoiceDataFilled ( nTG ) )
if ( m_PerformanceConfig . VoiceDataFilled ( nTG ) )
{
{
uint8_t * tVoiceData = m_PerformanceConfig . GetVoiceDataFromTxt ( nTG ) ;
uint8_t * tVoiceData = m_PerformanceConfig . GetVoiceDataFromTxt ( nTG ) ;
m_pTG [ nTG ] - > loadVoiceParameters ( tVoiceData ) ;
m_pTG [ nTargetT G ] - > loadVoiceParameters ( tVoiceData ) ;
setOPMask ( 0b111111 , nTG ) ;
setOPMask ( 0b111111 , nTargetT G ) ;
}
}
setMonoMode ( m_PerformanceConfig . GetMonoMode ( nTG ) ? 1 : 0 , nTG ) ;
setMonoMode ( m_PerformanceConfig . GetMonoMode ( nTG ) ? 1 : 0 , nTargetT G ) ;
SetReverbSend ( m_PerformanceConfig . GetReverbSend ( nTG ) , nTG ) ;
SetReverbSend ( m_PerformanceConfig . GetReverbSend ( nTG ) , nTargetT G ) ;
setModWheelRange ( m_PerformanceConfig . GetModulationWheelRange ( nTG ) , nTG ) ;
setModWheelRange ( m_PerformanceConfig . GetModulationWheelRange ( nTG ) , nTargetT G ) ;
setModWheelTarget ( m_PerformanceConfig . GetModulationWheelTarget ( nTG ) , nTG ) ;
setModWheelTarget ( m_PerformanceConfig . GetModulationWheelTarget ( nTG ) , nTargetT G ) ;
setFootControllerRange ( m_PerformanceConfig . GetFootControlRange ( nTG ) , nTG ) ;
setFootControllerRange ( m_PerformanceConfig . GetFootControlRange ( nTG ) , nTargetT G ) ;
setFootControllerTarget ( m_PerformanceConfig . GetFootControlTarget ( nTG ) , nTG ) ;
setFootControllerTarget ( m_PerformanceConfig . GetFootControlTarget ( nTG ) , nTargetT G ) ;
setBreathControllerRange ( m_PerformanceConfig . GetBreathControlRange ( nTG ) , nTG ) ;
setBreathControllerRange ( m_PerformanceConfig . GetBreathControlRange ( nTG ) , nTargetT G ) ;
setBreathControllerTarget ( m_PerformanceConfig . GetBreathControlTarget ( nTG ) , nTG ) ;
setBreathControllerTarget ( m_PerformanceConfig . GetBreathControlTarget ( nTG ) , nTargetT G ) ;
setAftertouchRange ( m_PerformanceConfig . GetAftertouchRange ( nTG ) , nTG ) ;
setAftertouchRange ( m_PerformanceConfig . GetAftertouchRange ( nTG ) , nTargetT G ) ;
setAftertouchTarget ( m_PerformanceConfig . GetAftertouchTarget ( nTG ) , nTG ) ;
setAftertouchTarget ( m_PerformanceConfig . GetAftertouchTarget ( nTG ) , nTargetT G ) ;
}
}
if ( part = = 0 )
{
// Effects
// Effects
SetParameter ( ParameterCompressorEnable , m_PerformanceConfig . GetCompressorEnable ( ) ? 1 : 0 ) ;
SetParameter ( ParameterCompressorEnable , m_PerformanceConfig . GetCompressorEnable ( ) ? 1 : 0 ) ;
SetParameter ( ParameterReverbEnable , m_PerformanceConfig . GetReverbEnable ( ) ? 1 : 0 ) ;
SetParameter ( ParameterReverbEnable , m_PerformanceConfig . GetReverbEnable ( ) ? 1 : 0 ) ;
@ -2079,8 +2133,9 @@ void CMiniDexed::LoadPerformanceParameters(void)
SetParameter ( ParameterReverbLowPass , m_PerformanceConfig . GetReverbLowPass ( ) ) ;
SetParameter ( ParameterReverbLowPass , m_PerformanceConfig . GetReverbLowPass ( ) ) ;
SetParameter ( ParameterReverbDiffusion , m_PerformanceConfig . GetReverbDiffusion ( ) ) ;
SetParameter ( ParameterReverbDiffusion , m_PerformanceConfig . GetReverbDiffusion ( ) ) ;
SetParameter ( ParameterReverbLevel , m_PerformanceConfig . GetReverbLevel ( ) ) ;
SetParameter ( ParameterReverbLevel , m_PerformanceConfig . GetReverbLevel ( ) ) ;
}
m_UI . DisplayChanged ( ) ;
m_UI . DisplayChanged ( ) ;
}
}
std : : string CMiniDexed : : GetNewPerformanceDefaultName ( void )
std : : string CMiniDexed : : GetNewPerformanceDefaultName ( void )
@ -2137,7 +2192,7 @@ bool CMiniDexed::DoDeletePerformance(void)
{
{
if ( m_PerformanceConfig . Load ( ) )
if ( m_PerformanceConfig . Load ( ) )
{
{
LoadPerformanceParameters ( ) ;
LoadPerformanceParameters ( 0 ) ;
return true ;
return true ;
}
}
else
else