Revert "Fixed gate logic."

This reverts commit 7980d5f881.
This commit is contained in:
Francois Best 2014-05-21 08:57:22 +02:00
parent 7980d5f881
commit 97e2c554de
1 changed files with 31 additions and 30 deletions

View File

@ -18,12 +18,12 @@ MidiNoteList<sMaxNumNotes> midiNotes;
// -----------------------------------------------------------------------------
inline void handleGateChanged(bool inGateActive)
void handleGateChanged(bool inGateActive)
{
digitalWrite(sGatePin, inGateActive ? HIGH : LOW);
}
inline void pulseGate()
void pulseGate()
{
handleGateChanged(false);
delay(1);
@ -32,11 +32,15 @@ inline void pulseGate()
// -----------------------------------------------------------------------------
void handleNoteOn(byte inChannel, byte inNote, byte inVelocity)
void handleNotesChanged()
{
if (midiNotes.empty())
{
handleGateChanged(false);
noTone(sAudioOutPin);
}
else
{
const bool firstNote = midiNotes.empty();
midiNotes.add(MidiNote(inNote, inVelocity));
// Possible playing modes:
// Mono Low: use midiNotes.getLow
// Mono High: use midiNotes.getHigh
@ -46,26 +50,23 @@ void handleNoteOn(byte inChannel, byte inNote, byte inVelocity)
if (midiNotes.getLast(currentNote))
{
tone(sAudioOutPin, sNotePitches[currentNote]);
if (firstNote)
{
handleGateChanged(true);
}
else
{
pulseGate(); // Retrigger envelopes. Remove for legato effect.
}
}
}
// -----------------------------------------------------------------------------
void handleNoteOn(byte inChannel, byte inNote, byte inVelocity)
{
midiNotes.add(MidiNote(inNote, inVelocity));
handleNotesChanged();
}
void handleNoteOff(byte inChannel, byte inNote, byte inVelocity)
{
midiNotes.remove(inNote);
if (midiNotes.empty())
{
handleGateChanged(false);
noTone(sAudioOutPin);
}
handleNotesChanged();
}
// -----------------------------------------------------------------------------