Procházet zdrojové kódy

Merge flizzer_tracker from https://github.com/LTVA1/flizzer_tracker

# Conflicts:
#	flizzer_tracker/application.fam
Willy-JL před 1 rokem
rodič
revize
58df953b8f

+ 1 - 1
flizzer_tracker/application.fam

@@ -6,7 +6,7 @@ App(
     cdefines=["APP_FLIZZER_TRACKER"],
     stack_size=2 * 1024,
     order=90,
-    fap_version=(0, 6),
+    fap_version=(0, 7),
     fap_description="An advanced Flipper Zero chiptune tracker with 4 channels",
     fap_author="LTVA",
     fap_weburl="https://github.com/LTVA1/flizzer_tracker",

+ 4 - 3
flizzer_tracker/sound_engine/sound_engine.c

@@ -109,16 +109,17 @@ void sound_engine_fill_buffer(
             SoundEngineChannel* channel = &sound_engine->channel[chan];
 
             if(channel->frequency > 0) {
+                channel->sync_bit = 0;
                 uint32_t prev_acc = channel->accumulator;
 
                 channel->accumulator += channel->frequency;
 
-                channel->sync_bit |= (channel->accumulator & ACC_LENGTH);
+                channel->sync_bit |= (channel->accumulator > ACC_LENGTH ? 1 : 0);
 
                 channel->accumulator &= ACC_LENGTH - 1;
 
                 if(channel->flags & SE_ENABLE_HARD_SYNC) {
-                    uint8_t hard_sync_src = channel->hard_sync == 0xff ? i : channel->hard_sync;
+                    uint8_t hard_sync_src = channel->hard_sync == 0xff ? chan : channel->hard_sync;
 
                     if(sound_engine->channel[hard_sync_src].sync_bit) {
                         channel->accumulator = 0;
@@ -129,7 +130,7 @@ void sound_engine_fill_buffer(
                     sound_engine_osc(sound_engine, channel, prev_acc) - WAVE_AMP / 2;
 
                 if(channel->flags & SE_ENABLE_RING_MOD) {
-                    uint8_t ring_mod_src = channel->ring_mod == 0xff ? i : channel->ring_mod;
+                    uint8_t ring_mod_src = channel->ring_mod == 0xff ? chan : channel->ring_mod;
                     channel_output[chan] =
                         channel_output[chan] * channel_output[ring_mod_src] / WAVE_AMP;
                 }

+ 1 - 1
flizzer_tracker/tracker_engine/tracker_engine.c

@@ -89,7 +89,7 @@ void set_default_instrument(Instrument* inst) {
     inst->adsr.volume = 0x80;
 
     inst->filter_type = FIL_OUTPUT_LOWPASS;
-    inst->filter_cutoff = 0xff;
+    inst->filter_cutoff = 0xd0;
 
     inst->program_period = 1;