|
|
|
@ -48,7 +48,7 @@ float note_frequency = 0; |
|
|
|
|
float note_length = 0; |
|
|
|
|
uint8_t note_tempo = TEMPO_DEFAULT; |
|
|
|
|
float note_timbre = TIMBRE_DEFAULT; |
|
|
|
|
uint16_t note_position = 0; |
|
|
|
|
uint32_t note_position = 0; |
|
|
|
|
float (* notes_pointer)[][2]; |
|
|
|
|
uint16_t notes_count; |
|
|
|
|
bool notes_repeat; |
|
|
|
@ -235,6 +235,31 @@ static void end_cb1(DACDriver * dacp, dacsample_t * samples, size_t rows) { |
|
|
|
|
samples[s] = DAC_OFF_VALUE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (playing_notes) { |
|
|
|
|
note_position += rows; |
|
|
|
|
|
|
|
|
|
// end of the note
|
|
|
|
|
if ((note_position >= (note_length*420))) { |
|
|
|
|
stop_note((*notes_pointer)[current_note][0]); |
|
|
|
|
current_note++; |
|
|
|
|
if (current_note >= notes_count) { |
|
|
|
|
if (notes_repeat) { |
|
|
|
|
current_note = 0; |
|
|
|
|
} else { |
|
|
|
|
playing_notes = false; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
play_note((*notes_pointer)[current_note][0], 15); |
|
|
|
|
envelope_index = 0; |
|
|
|
|
note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); |
|
|
|
|
|
|
|
|
|
note_position = note_position - (note_length*420); |
|
|
|
|
// note_position = 0;
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -394,9 +419,9 @@ void play_note(float freq, int vol) { |
|
|
|
|
if (audio_config.enable && voices < 8) { |
|
|
|
|
|
|
|
|
|
// Cancel notes if notes are playing
|
|
|
|
|
if (playing_notes) { |
|
|
|
|
stop_all_notes(); |
|
|
|
|
} |
|
|
|
|
// if (playing_notes) {
|
|
|
|
|
// stop_all_notes();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
playing_note = true; |
|
|
|
|
|
|
|
|
@ -419,11 +444,6 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat) { |
|
|
|
|
|
|
|
|
|
if (audio_config.enable) { |
|
|
|
|
|
|
|
|
|
// Cancel note if a note is playing
|
|
|
|
|
if (playing_note) { |
|
|
|
|
stop_all_notes(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
playing_notes = true; |
|
|
|
|
|
|
|
|
|
notes_pointer = np; |
|
|
|
@ -433,10 +453,11 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat) { |
|
|
|
|
place = 0; |
|
|
|
|
current_note = 0; |
|
|
|
|
|
|
|
|
|
note_frequency = (*notes_pointer)[current_note][0]; |
|
|
|
|
note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); |
|
|
|
|
note_position = 0; |
|
|
|
|
|
|
|
|
|
play_note((*notes_pointer)[current_note][0], 15); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|