Przeglądaj źródła

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

# Conflicts:
#	flizzer_tracker/application.fam
Willy-JL 1 rok temu
rodzic
commit
e677733780

+ 5 - 0
flizzer_tracker/.vscode/settings.json

@@ -0,0 +1,5 @@
+{
+    "files.associations": {
+        "tracker_engine.h": "c"
+    }
+}

+ 1 - 1
flizzer_tracker/application.fam

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

+ 5 - 0
flizzer_tracker/docs/changelog.md

@@ -1,3 +1,8 @@
+# Flizzer Tracker v0.3 #
+
+## Added ##
+- Qxx effect (set tracker engine rate)
+
 # Flizzer Tracker v0.2 #
 # Flizzer Tracker v0.2 #
 
 
 ## Added ##
 ## Added ##

+ 10 - 0
flizzer_tracker/tracker_engine/do_effects.c

@@ -5,6 +5,8 @@
 #include "../sound_engine/sound_engine_filter.h"
 #include "../sound_engine/sound_engine_filter.h"
 #include "tracker_engine.h"
 #include "tracker_engine.h"
 
 
+#include "../flizzer_tracker_hal.h"
+
 void do_command(
 void do_command(
     uint16_t opcode,
     uint16_t opcode,
     TrackerEngine* tracker_engine,
     TrackerEngine* tracker_engine,
@@ -427,6 +429,14 @@ void do_command(
         break;
         break;
     }
     }
 
 
+    case TE_EFFECT_SET_RATE: {
+        if(tick == 0 && (opcode & 0xff) > 0) {
+            tracker_engine_set_rate(opcode & 0xff);
+        }
+
+        break;
+    }
+
     case TE_EFFECT_PORTA_UP_SEMITONE: {
     case TE_EFFECT_PORTA_UP_SEMITONE: {
         uint32_t prev = te_channel->note;
         uint32_t prev = te_channel->note;
 
 

+ 2 - 3
flizzer_tracker/tracker_engine/tracker_engine_defs.h

@@ -90,9 +90,8 @@ typedef enum {
     TE_EFFECT_SET_SUSTAIN = 0x1700, // Nxx
     TE_EFFECT_SET_SUSTAIN = 0x1700, // Nxx
     TE_EFFECT_SET_RELEASE = 0x1800, // Oxx
     TE_EFFECT_SET_RELEASE = 0x1800, // Oxx
     TE_EFFECT_PROGRAM_RESTART = 0x1900, // Pxx
     TE_EFFECT_PROGRAM_RESTART = 0x1900, // Pxx
-    /*
-    TE_EFFECT_ = 0x1a00, //Qxx
-    */
+    
+    TE_EFFECT_SET_RATE = 0x1a00, //Qxx
 
 
     TE_EFFECT_SET_RING_MOD_SRC = 0x1b00, // Rxx
     TE_EFFECT_SET_RING_MOD_SRC = 0x1b00, // Rxx
     TE_EFFECT_SET_HARD_SYNC_SRC = 0x1c00, // Sxx
     TE_EFFECT_SET_HARD_SYNC_SRC = 0x1c00, // Sxx

+ 1 - 0
flizzer_tracker/view/opcode_description.c

@@ -51,6 +51,7 @@ static const OpcodeDescription opcode_desc[] = {
     {TE_EFFECT_SET_SUSTAIN, 0x7f00, "SET ENVELOPE SUSTAIN", "ADSR S"},
     {TE_EFFECT_SET_SUSTAIN, 0x7f00, "SET ENVELOPE SUSTAIN", "ADSR S"},
     {TE_EFFECT_SET_RELEASE, 0x7f00, "SET ENVELOPE RELEASE", "ADSR R"},
     {TE_EFFECT_SET_RELEASE, 0x7f00, "SET ENVELOPE RELEASE", "ADSR R"},
     {TE_EFFECT_PROGRAM_RESTART, 0x7f00, "RESTART INSTRUMENT PROGRAM", "P.RES."},
     {TE_EFFECT_PROGRAM_RESTART, 0x7f00, "RESTART INSTRUMENT PROGRAM", "P.RES."},
+    {TE_EFFECT_SET_RATE, 0x7f00, "SET TRACKER ENGINE RATE (HZ)", "E.RATE"},
     {TE_EFFECT_SET_RING_MOD_SRC, 0x7f00, "SET RING MODULATION SOURCE CH.", "R.SRC"},
     {TE_EFFECT_SET_RING_MOD_SRC, 0x7f00, "SET RING MODULATION SOURCE CH.", "R.SRC"},
     {TE_EFFECT_SET_HARD_SYNC_SRC, 0x7f00, "SET HARD SYNC SOURCE CHANNEL", "S.SRC"},
     {TE_EFFECT_SET_HARD_SYNC_SRC, 0x7f00, "SET HARD SYNC SOURCE CHANNEL", "S.SRC"},
     {TE_EFFECT_PORTA_UP_SEMITONE, 0x7f00, "PORTAMENTO UP (SEMITONES)", "PU.SEM"},
     {TE_EFFECT_PORTA_UP_SEMITONE, 0x7f00, "PORTAMENTO UP (SEMITONES)", "PU.SEM"},