|
|
@@ -10,7 +10,11 @@ void tracker_engine_init(TrackerEngine* tracker_engine, uint8_t rate, SoundEngin
|
|
|
memset(tracker_engine, 0, sizeof(TrackerEngine));
|
|
|
|
|
|
furi_hal_interrupt_set_isr_ex(
|
|
|
- FuriHalInterruptIdTIM2, 14, tracker_engine_timer_isr, (void*)tracker_engine);
|
|
|
+ FuriHalInterruptIdTIM2,
|
|
|
+ FuriHalInterruptPriorityHighest,
|
|
|
+ tracker_engine_timer_isr,
|
|
|
+ (void*)tracker_engine);
|
|
|
+
|
|
|
tracker_engine_init_hardware(rate);
|
|
|
|
|
|
tracker_engine->sound_engine = sound_engine;
|
|
|
@@ -38,7 +42,8 @@ void tracker_engine_deinit_song(TrackerSong* song, bool free_song) {
|
|
|
void tracker_engine_deinit(TrackerEngine* tracker_engine, bool free_song) {
|
|
|
tracker_engine_deinit_song(tracker_engine->song, free_song);
|
|
|
|
|
|
- furi_hal_interrupt_set_isr_ex(FuriHalInterruptIdTIM2, 13, NULL, NULL);
|
|
|
+ furi_hal_interrupt_set_isr_ex(
|
|
|
+ FuriHalInterruptIdTIM2, FuriHalInterruptPriorityHighest, NULL, NULL);
|
|
|
tracker_engine_stop();
|
|
|
}
|
|
|
|
|
|
@@ -400,9 +405,9 @@ void tracker_engine_advance_channel(TrackerEngine* tracker_engine, uint8_t chan)
|
|
|
|
|
|
else {
|
|
|
te_channel->vibrato_position += ((uint32_t)te_channel->vibrato_speed << 21);
|
|
|
- vib =
|
|
|
- (int32_t)(sound_engine_triangle(te_channel->vibrato_position >> 9) - WAVE_AMP / 2) *
|
|
|
- (int32_t)te_channel->vibrato_depth / (256 * 128);
|
|
|
+ vib = (int32_t)(sound_engine_triangle(te_channel->vibrato_position >> 9) -
|
|
|
+ WAVE_AMP / 2) *
|
|
|
+ (int32_t)te_channel->vibrato_depth / (256 * 128);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -437,9 +442,9 @@ void tracker_engine_advance_channel(TrackerEngine* tracker_engine, uint8_t chan)
|
|
|
tracker_engine->sound_engine->channel[chan].pw = tracker_engine->channel[chan].pw;
|
|
|
}
|
|
|
|
|
|
- int32_t chn_note =
|
|
|
- (int16_t)(te_channel->fixed_note != 0xffff ? te_channel->fixed_note : te_channel->note) +
|
|
|
- vib + ((int16_t)te_channel->arpeggio_note << 8);
|
|
|
+ int32_t chn_note = (int16_t)(te_channel->fixed_note != 0xffff ? te_channel->fixed_note :
|
|
|
+ te_channel->note) +
|
|
|
+ vib + ((int16_t)te_channel->arpeggio_note << 8);
|
|
|
|
|
|
if(chn_note < 0) {
|
|
|
chn_note = 0;
|