Dateien hochladen nach „“

pull/74/head
positionhigh 3 years ago
parent 396150a5b2
commit db599940d7
  1. 135
      MicroDexed.ino

@ -768,92 +768,95 @@ void loop()
******************************************************************************/ ******************************************************************************/
void handleNoteOn(byte inChannel, byte inNumber, byte inVelocity) void handleNoteOn(byte inChannel, byte inNumber, byte inVelocity)
{ {
// Check for MicroDexed //Ignore the note when playing & recording the same note into the sequencer
for (uint8_t instance_id = 0; instance_id < NUM_DEXED; instance_id++) if (seq_recording == false || (seq_recording && inNumber != seq_note_in ))
{ {
if (checkMidiChannel(inChannel, instance_id)) // Check for MicroDexed
for (uint8_t instance_id = 0; instance_id < NUM_DEXED; instance_id++)
{ {
if (inNumber >= configuration.dexed[instance_id].lowest_note && inNumber <= configuration.dexed[instance_id].highest_note) if (checkMidiChannel(inChannel, instance_id))
{ {
if (configuration.dexed[instance_id].polyphony > 0) if (inNumber >= configuration.dexed[instance_id].lowest_note && inNumber <= configuration.dexed[instance_id].highest_note)
MicroDexed[instance_id]->keydown(inNumber, uint8_t(float(configuration.dexed[instance_id].velocity_level / 127.0)*inVelocity + 0.5)); {
if (configuration.dexed[instance_id].polyphony > 0)
MicroDexed[instance_id]->keydown(inNumber, uint8_t(float(configuration.dexed[instance_id].velocity_level / 127.0)*inVelocity + 0.5));
midi_voices[instance_id]++; midi_voices[instance_id]++;
#ifdef TEENSY4 #ifdef TEENSY4
if (LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_voice_select)) if (LCDML.FUNC_getID() == LCDML.OTHER_getIDFromFunction(UI_func_voice_select))
{ {
midi_decay_timer = 0; midi_decay_timer = 0;
midi_decay[instance_id] = min(inVelocity / 5, 7); midi_decay[instance_id] = min(inVelocity / 5, 7);
} }
#endif #endif
#ifdef DEBUG #ifdef DEBUG
char note_name[4]; char note_name[4];
getNoteName(note_name, inNumber); getNoteName(note_name, inNumber);
Serial.print(F("Keydown ")); Serial.print(F("Keydown "));
Serial.print(note_name); Serial.print(note_name);
Serial.print(F(" instance ")); Serial.print(F(" instance "));
Serial.print(instance_id, DEC); Serial.print(instance_id, DEC);
Serial.print(F(" MIDI-channel ")); Serial.print(F(" MIDI-channel "));
Serial.print(inChannel, DEC); Serial.print(inChannel, DEC);
Serial.println(); Serial.println();
#endif #endif
return; return;
}
} }
} }
}
#if NUM_DRUMS > 0 #if NUM_DRUMS > 0
// Check for Drum // Check for Drum
if (inChannel == DRUM_MIDI_CHANNEL) if (inChannel == DRUM_MIDI_CHANNEL)
{ {
if (drum_counter >= NUM_DRUMS) if (drum_counter >= NUM_DRUMS)
drum_counter = 0; drum_counter = 0;
#ifdef DEBUG #ifdef DEBUG
char note_name[4]; char note_name[4];
getNoteName(note_name, inNumber); getNoteName(note_name, inNumber);
Serial.print(F("=> Drum[")); Serial.print(F("=> Drum["));
Serial.print(drum_counter, DEC); Serial.print(drum_counter, DEC);
Serial.print(F("]: ")); Serial.print(F("]: "));
Serial.println(note_name); Serial.println(note_name);
#endif #endif
for (uint8_t d = 0; d < NUM_DRUMSET_CONFIG; d++)
for (uint8_t d = 0; d < NUM_DRUMSET_CONFIG; d++)
{
if (inNumber == drum_config[d].midinote)
{ {
uint8_t slot = drum_get_slot(drum_config[d].drum_class); if (inNumber == drum_config[d].midinote)
float pan = mapfloat(drum_config[d].pan, -1.0, 1.0, 0.0, 1.0); {
uint8_t slot = drum_get_slot(drum_config[d].drum_class);
drum_mixer_r.gain(slot, (1.0 - pan) * pseudo_log_curve(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max))); float pan = mapfloat(drum_config[d].pan, -1.0, 1.0, 0.0, 1.0);
drum_mixer_l.gain(slot, (pan) * pseudo_log_curve(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max)));
drum_reverb_send_mixer_r.gain(slot, (1.0 - pan) * pseudo_log_curve(drum_config[d].reverb_send)); drum_mixer_r.gain(slot, (1.0 - pan) * pseudo_log_curve(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max)));
drum_reverb_send_mixer_l.gain(slot, pan * pseudo_log_curve(drum_config[d].reverb_send)); drum_mixer_l.gain(slot, (pan) * pseudo_log_curve(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max)));
drum_reverb_send_mixer_r.gain(slot, (1.0 - pan) * pseudo_log_curve(drum_config[d].reverb_send));
if (drum_config[d].drum_data != NULL) drum_reverb_send_mixer_l.gain(slot, pan * pseudo_log_curve(drum_config[d].reverb_send));
Drum[slot]->play(drum_config[d].drum_data);
if (drum_config[d].drum_data != NULL)
#ifdef DEBUG Drum[slot]->play(drum_config[d].drum_data);
Serial.print(F("Drum "));
Serial.print(drum_config[d].shortname); #ifdef DEBUG
Serial.print(F(" [")); Serial.print(F("Drum "));
Serial.print(drum_config[d].name); Serial.print(drum_config[d].shortname);
Serial.print(F("], Slot ")); Serial.print(F(" ["));
Serial.print(slot); Serial.print(drum_config[d].name);
Serial.print(F(": V")); Serial.print(F("], Slot "));
Serial.print(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max), 2); Serial.print(slot);
Serial.print(F(" P")); Serial.print(F(": V"));
Serial.print(drum_config[d].pan, 2); Serial.print(mapfloat(inVelocity, 0, 127, drum_config[d].vol_min, drum_config[d].vol_max), 2);
Serial.print(F(" PAN")); Serial.print(F(" P"));
Serial.print(pan, 2); Serial.print(drum_config[d].pan, 2);
Serial.print(F(" RS")); Serial.print(F(" PAN"));
Serial.println(drum_config[d].reverb_send, 2); Serial.print(pan, 2);
Serial.print(F(" RS"));
Serial.println(drum_config[d].reverb_send, 2);
#endif #endif
break; break;
}
} }
} }
}
#endif #endif
}
} }
#if NUM_DRUMS > 0 #if NUM_DRUMS > 0

Loading…
Cancel
Save