shithub: m8c

Download patch

ref: 174d07c60c9fdae8090b929a064acacf17595bd7
parent: 15fdd8e0a6862df8ae183cb3821d01758920343a
author: Jorge Molero <jmolerocalafell@gmail.com>
date: Sat Apr 6 18:28:35 EDT 2024

Feat: Configurable jazzkeys keys

Add the four jazzkeys to the config file and uses them to make changes
in the velocity and octave when in jazzkeys mode.

--- a/src/config.c
+++ b/src/config.c
@@ -47,6 +47,10 @@
   c.key_edit_alt = SDL_SCANCODE_S;
   c.key_delete = SDL_SCANCODE_DELETE;
   c.key_reset = SDL_SCANCODE_R;
+  c.key_jazz_inc_octave = SDL_SCANCODE_KP_MULTIPLY;
+  c.key_jazz_dec_octave = SDL_SCANCODE_KP_DIVIDE;
+  c.key_jazz_inc_velocity = SDL_SCANCODE_KP_MINUS;
+  c.key_jazz_dec_velocity = SDL_SCANCODE_KP_PLUS;
 
   c.gamepad_up = SDL_CONTROLLER_BUTTON_DPAD_UP;
   c.gamepad_left = SDL_CONTROLLER_BUTTON_DPAD_LEFT;
@@ -82,7 +86,7 @@
 
   SDL_Log("Writing config file to %s", config_path);
 
-  const unsigned int INI_LINE_COUNT = 44;
+  const unsigned int INI_LINE_COUNT = 48;
   const unsigned int LINELEN = 50;
 
   // Entries for the config file
@@ -129,6 +133,14 @@
            conf->key_delete);
   snprintf(ini_values[initPointer++], LINELEN, "key_reset=%d\n",
            conf->key_reset);
+  snprintf(ini_values[initPointer++], LINELEN, "key_jazz_inc_octave=%d\n",
+           conf->key_jazz_inc_octave);
+  snprintf(ini_values[initPointer++], LINELEN, "key_jazz_dec_octave=%d\n",
+           conf->key_jazz_dec_octave);
+  snprintf(ini_values[initPointer++], LINELEN, "key_jazz_inc_velocity=%d\n",
+           conf->key_jazz_inc_velocity);
+  snprintf(ini_values[initPointer++], LINELEN, "key_jazz_dec_velocity=%d\n",
+           conf->key_jazz_dec_velocity);
   snprintf(ini_values[initPointer++], LINELEN, "[gamepad]\n");
   snprintf(ini_values[initPointer++], LINELEN, "gamepad_up=%d\n",
            conf->gamepad_up);
@@ -289,6 +301,10 @@
   const char *key_edit_alt = ini_get(ini, "keyboard", "key_edit_alt");
   const char *key_delete = ini_get(ini, "keyboard", "key_delete");
   const char *key_reset = ini_get(ini, "keyboard", "key_reset");
+  const char *key_jazz_inc_octave = ini_get(ini, "keyboard", "key_jazz_inc_octave");
+  const char *key_jazz_dec_octave = ini_get(ini, "keyboard", "key_jazz_dec_octave");
+  const char *key_jazz_inc_velocity = ini_get(ini, "keyboard", "key_jazz_inc_velocity");
+  const char *key_jazz_dec_velocity = ini_get(ini, "keyboard", "key_jazz_dec_velocity");
 
   if (key_up)
     conf->key_up = SDL_atoi(key_up);
@@ -318,6 +334,14 @@
     conf->key_delete = SDL_atoi(key_delete);
   if (key_reset)
     conf->key_reset = SDL_atoi(key_reset);
+  if (key_jazz_inc_octave)
+    conf->key_jazz_inc_octave = SDL_atoi(key_jazz_inc_octave);
+  if (key_jazz_dec_octave)
+    conf->key_jazz_dec_octave = SDL_atoi(key_jazz_dec_octave);
+  if (key_jazz_inc_velocity)
+    conf->key_jazz_inc_velocity = SDL_atoi(key_jazz_inc_velocity);
+  if (key_jazz_dec_velocity)
+    conf->key_jazz_dec_velocity = SDL_atoi(key_jazz_dec_velocity);
 }
 
 void read_gamepad_config(ini_t *ini, config_params_s *conf) {
--- a/src/config.h
+++ b/src/config.h
@@ -31,6 +31,10 @@
   int key_edit_alt;
   int key_delete;
   int key_reset;
+  int key_jazz_inc_octave;
+  int key_jazz_dec_octave;
+  int key_jazz_inc_velocity;
+  int key_jazz_dec_velocity;
 
   int gamepad_up;
   int gamepad_left;
--- a/src/input.c
+++ b/src/input.c
@@ -98,7 +98,11 @@
   }
 }
 
-static input_msg_s handle_keyjazz(SDL_Event *event, uint8_t keyvalue) {
+static input_msg_s handle_keyjazz(
+  SDL_Event *event,
+  uint8_t keyvalue,
+  config_params_s *conf
+) {
   input_msg_s key = {keyjazz, keyvalue, keyjazz_velocity, event->type};
   switch (event->key.keysym.scancode) {
   case SDL_SCANCODE_Z:
@@ -188,49 +192,38 @@
   case SDL_SCANCODE_P:
     key.value = 28 + keyjazz_base_octave * 12;
     break;
-  case SDL_SCANCODE_KP_DIVIDE:
+  default:
     key.type = normal;
-    if (event->type == SDL_KEYDOWN && keyjazz_base_octave > 0) {
-      keyjazz_base_octave--;
-      display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+    if (event->key.keysym.scancode == conf->key_jazz_dec_octave) {
+        if (event->type == SDL_KEYDOWN && keyjazz_base_octave > 0) {
+            keyjazz_base_octave--;
+            display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+        }
+    } else if (event->key.keysym.scancode == conf->key_jazz_inc_octave) {
+        if (event->type == SDL_KEYDOWN && keyjazz_base_octave < 8) {
+            keyjazz_base_octave++;
+            display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+        }
+    } else if (event->key.keysym.scancode == conf->key_jazz_dec_velocity) {
+        if ((event->key.keysym.mod & KMOD_ALT) > 0) {
+            if (keyjazz_velocity > 1)
+                keyjazz_velocity -= 1;
+        } else {
+            if (keyjazz_velocity > 0x10)
+                keyjazz_velocity -= 0x10;
+        }
+        display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
+    } else if (event->key.keysym.scancode == conf->key_jazz_inc_velocity) {
+        if ((event->key.keysym.mod & KMOD_ALT) > 0) {
+            if (keyjazz_velocity < 0x7F)
+                keyjazz_velocity += 1;
+        } else {
+            if (keyjazz_velocity < 0x6F)
+                keyjazz_velocity += 0x10;
+        }
+        display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
     }
     break;
-  case SDL_SCANCODE_KP_MULTIPLY:
-    key.type = normal;
-    if (event->type == SDL_KEYDOWN && keyjazz_base_octave < 8) {
-      keyjazz_base_octave++;
-      display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
-    }
-    break;
-  case SDL_SCANCODE_KP_MINUS:
-    key.type = normal;
-    if (event->type == SDL_KEYDOWN) {
-      if ((event->key.keysym.mod & KMOD_ALT) > 0) {
-        if (keyjazz_velocity > 1)
-          keyjazz_velocity -= 1;
-      } else {
-        if (keyjazz_velocity > 0x10)
-          keyjazz_velocity -= 0x10;
-      }
-      display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
-    }
-    break;
-  case SDL_SCANCODE_KP_PLUS:
-    key.type = normal;
-    if (event->type == SDL_KEYDOWN) {
-      if ((event->key.keysym.mod & KMOD_ALT) > 0) {
-        if (keyjazz_velocity < 0x7F)
-          keyjazz_velocity += 1;
-      } else {
-        if (keyjazz_velocity < 0x6F)
-          keyjazz_velocity += 0x10;
-      }
-      display_keyjazz_overlay(1, keyjazz_base_octave, keyjazz_velocity);
-    }
-    break;
-  default:
-    key.type = normal;
-    break;
   }
 
   return key;
@@ -429,7 +422,7 @@
     key = handle_normal_keys(&event, conf, 0);
 
     if (keyjazz_enabled)
-      key = handle_keyjazz(&event, key.value);
+      key = handle_keyjazz(&event, key.value, conf);
     break;
 
   default:
--