LTVA1 пре 3 година
родитељ
комит
f5babb3ad6
3 измењених фајлова са 11 додато и 2 уклоњено
  1. 3 1
      flizzer_tracker.c
  2. 7 1
      input/instrument.c
  3. 1 0
      util.c

+ 3 - 1
flizzer_tracker.c

@@ -126,7 +126,7 @@ int32_t flizzer_tracker_app(void *p)
     UNUSED(st);
     furi_record_close(RECORD_STORAGE);
 
-    FlizzerTrackerApp *tracker = init_tracker(44100, 50, true, 1024);
+    FlizzerTrackerApp *tracker = init_tracker(44100, 50, false, 1024);
 
     // Текущее событие типа кастомного типа FlizzerTrackerEvent
     FlizzerTrackerEvent event;
@@ -231,6 +231,8 @@ int32_t flizzer_tracker_app(void *p)
         {
             stop_song(tracker);
 
+            tracker->tracker_engine.sequence_position = tracker->tracker_engine.pattern_position = 0;
+
             tracker->dialogs = furi_record_open(RECORD_DIALOGS);
             tracker->is_loading = true;
 

+ 7 - 1
input/instrument.c

@@ -419,10 +419,16 @@ void instrument_edit_event(FlizzerTrackerApp *tracker, FlizzerTrackerEvent *even
 
     if (event->input.key == InputKeyOk && event->input.type == InputTypeLong && !tracker->editing)
     {
-        // play_song(tracker, true);
         reset_buffer(&tracker->sound_engine);
         tracker_engine_set_song(&tracker->tracker_engine, NULL);
 
+        for(int i = 1; i < SONG_MAX_CHANNELS; i++)
+        {
+            tracker->tracker_engine.channel[i].channel_flags &= TEC_PLAYING;
+            tracker->tracker_engine.sound_engine->channel[i].frequency = 0;
+            tracker->tracker_engine.sound_engine->channel[i].waveform = 0;
+        }
+
         Instrument *inst = tracker->song.instrument[tracker->current_instrument];
         tracker_engine_trigger_instrument_internal(&tracker->tracker_engine, 0, inst, (MIDDLE_C << 8));
         tracker->tracker_engine.playing = true;

+ 1 - 0
util.c

@@ -23,6 +23,7 @@ void play_song(FlizzerTrackerApp *tracker, bool from_cursor)
 
     tracker_engine_set_rate(tracker->song.rate);
 
+    tracker->tracker_engine.current_tick = 0;
     tracker_engine_set_song(&tracker->tracker_engine, &tracker->song);
 
     play();