Browse Source

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

# Conflicts:
#	flizzer_tracker/application.fam
Willy-JL 1 year ago
parent
commit
e06c164aab

+ 1 - 1
flizzer_tracker/application.fam

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

+ 6 - 1
flizzer_tracker/docs/changelog.md

@@ -1,3 +1,8 @@
+# Flizzer Tracker v0.4 #
+
+## Added ##
+- Vxx effect (detune)
+
 # Flizzer Tracker v0.3 #
 
 ## Added ##
@@ -12,4 +17,4 @@
 
 # Flizzer Tracker v0.1 #
 
-- Initial release
+- Initial release

+ 5 - 0
flizzer_tracker/tracker_engine/do_effects.c

@@ -457,6 +457,11 @@ void do_command(
         break;
     }
 
+    case TE_EFFECT_PITCH: {
+        te_channel->finetune_note = ((int16_t)(opcode & 0xff) - 0x80) * 2;
+        break;
+    }
+
     case TE_EFFECT_ARPEGGIO_ABS: {
         te_channel->arpeggio_note = 0;
         te_channel->fixed_note = ((opcode & 0xff) << 8);

+ 2 - 1
flizzer_tracker/tracker_engine/tracker_engine.c

@@ -444,7 +444,8 @@ void tracker_engine_advance_channel(TrackerEngine* tracker_engine, uint8_t chan)
 
         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);
+                           vib + ((int16_t)te_channel->arpeggio_note << 8) 
+                           + te_channel->finetune_note;
 
         if(chn_note < 0) {
             chn_note = 0;

+ 2 - 1
flizzer_tracker/tracker_engine/tracker_engine_defs.h

@@ -98,8 +98,8 @@ typedef enum {
 
     TE_EFFECT_PORTA_UP_SEMITONE = 0x1d00, // Txx
     TE_EFFECT_PORTA_DOWN_SEMITONE = 0x1e00, // Uxx
+    TE_EFFECT_PITCH = 0x1f00, //Vxx
     /*
-    TE_EFFECT_ = 0x1f00, //Vxx
     TE_EFFECT_ = 0x2000, //Wxx
     */
 
@@ -155,6 +155,7 @@ typedef struct {
     uint8_t channel_flags;
 
     uint16_t note, target_note, last_note, fixed_note;
+    int16_t finetune_note;
     int16_t arpeggio_note;
 
     uint8_t volume;

+ 1 - 0
flizzer_tracker/view/opcode_description.c

@@ -56,6 +56,7 @@ static const OpcodeDescription opcode_desc[] = {
     {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_DOWN_SEMITONE, 0x7f00, "PORTAMENTO DOWN (SEMITONES)", "PD.SEM"},
+    {TE_EFFECT_PITCH, 0x7f00, "DETUNE 80=CENT.,0=-1SEM,FF=+1SEM", "DETUNE"},
     {TE_EFFECT_LEGATO, 0x7f00, "LEGATO", "LEGATO"},
     {TE_EFFECT_ARPEGGIO_ABS, 0x7f00, "ABSOLUTE ARPEGGIO NOTE", ""},
     {TE_EFFECT_TRIGGER_RELEASE, 0x7f00, "TRIGGER RELEASE", "TR.REL"},