|
|
@ -49,33 +49,26 @@ Dexed::Dexed(double rate) : lvtk::Synth<DexedVoice, Dexed>(p_n_ports, p_midi_in) |
|
|
|
Env::init_sr(rate); |
|
|
|
Env::init_sr(rate); |
|
|
|
fx.init(rate); |
|
|
|
fx.init(rate); |
|
|
|
|
|
|
|
|
|
|
|
if(!(engineMkI=new EngineMkI)) |
|
|
|
if(!(engineMkI=new (std::nothrow) EngineMkI)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
TRACE("Cannot not create engine EngineMkI"); |
|
|
|
TRACE("Cannot not create engine EngineMkI"); |
|
|
|
exit(400); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
if(!(engineOpl=new EngineOpl)) |
|
|
|
if(!(engineOpl=new (std::nothrow) EngineOpl)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if(engineMkI) |
|
|
|
|
|
|
|
delete(engineMkI); |
|
|
|
delete(engineMkI); |
|
|
|
TRACE("Cannot not create engine EngineOpl"); |
|
|
|
TRACE("Cannot not create engine EngineOpl"); |
|
|
|
exit(401); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
if(!(engineMsfa=new FmCore)) |
|
|
|
if(!(engineMsfa=new (std::nothrow) FmCore)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if(engineMkI) |
|
|
|
|
|
|
|
delete(engineMkI); |
|
|
|
delete(engineMkI); |
|
|
|
if(engineOpl) |
|
|
|
|
|
|
|
delete(engineOpl); |
|
|
|
delete(engineOpl); |
|
|
|
TRACE("Cannot create engine FmCore"); |
|
|
|
TRACE("Cannot create engine FmCore"); |
|
|
|
exit(402); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for(i=0; i<MAX_ACTIVE_NOTES; i++) { |
|
|
|
for(i=0; i<MAX_ACTIVE_NOTES; i++) { |
|
|
|
if(!(voices[i].dx7_note = new Dx7Note)) |
|
|
|
if(!(voices[i].dx7_note = new (std::nothrow) Dx7Note)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
TRACE("Cannot create DX7Note [%d]",i); |
|
|
|
TRACE("Cannot create DX7Note [%d]",i); |
|
|
|
exit(403); |
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
voices[i].keydown = false; |
|
|
|
voices[i].keydown = false; |
|
|
|
voices[i].sustained = false; |
|
|
|
voices[i].sustained = false; |
|
|
@ -103,15 +96,11 @@ Dexed::Dexed(double rate) : lvtk::Synth<DexedVoice, Dexed>(p_n_ports, p_midi_in) |
|
|
|
|
|
|
|
|
|
|
|
bufsize_=256; |
|
|
|
bufsize_=256; |
|
|
|
|
|
|
|
|
|
|
|
if(!(outbuf_=new float[bufsize_])) |
|
|
|
if(!(outbuf_=new (std::nothrow) float[bufsize_])) |
|
|
|
{ |
|
|
|
|
|
|
|
TRACE("Cannot create outbuf_ buffer"); |
|
|
|
TRACE("Cannot create outbuf_ buffer"); |
|
|
|
exit(404); |
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lfo.reset(data+137); |
|
|
|
lfo.reset(data+137); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setMonoMode(false); |
|
|
|
setMonoMode(false); |
|
|
|
|
|
|
|
|
|
|
|
sustain = false; |
|
|
|
sustain = false; |
|
|
@ -133,24 +122,15 @@ Dexed::~Dexed() |
|
|
|
{ |
|
|
|
{ |
|
|
|
TRACE("Hi"); |
|
|
|
TRACE("Hi"); |
|
|
|
|
|
|
|
|
|
|
|
if(outbuf_) |
|
|
|
|
|
|
|
delete [] outbuf_; |
|
|
|
delete [] outbuf_; |
|
|
|
|
|
|
|
|
|
|
|
currentNote = -1; |
|
|
|
currentNote = -1; |
|
|
|
|
|
|
|
|
|
|
|
for (uint8_t note = 0; note < MAX_ACTIVE_NOTES; ++note) |
|
|
|
for (uint8_t note = 0; note < MAX_ACTIVE_NOTES; ++note) |
|
|
|
{ |
|
|
|
|
|
|
|
if(voices[note].dx7_note) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
delete voices[note].dx7_note; |
|
|
|
delete voices[note].dx7_note; |
|
|
|
}
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(engineMsfa) |
|
|
|
|
|
|
|
delete(engineMsfa); |
|
|
|
delete(engineMsfa); |
|
|
|
if(engineOpl) |
|
|
|
|
|
|
|
delete(engineOpl); |
|
|
|
delete(engineOpl); |
|
|
|
if(engineMkI) |
|
|
|
|
|
|
|
delete(engineMkI); |
|
|
|
delete(engineMkI); |
|
|
|
|
|
|
|
|
|
|
|
TRACE("Bye"); |
|
|
|
TRACE("Bye"); |
|
|
|