[PATCH] Spectrum views enhancement & small eq fixes

Raphaël Doursenaud <[email protected]> Wed, 27 Feb 2008 01:05:01 +0100
Newsgroups gmane.comp.audio.jamin.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This small patch against current CVS fixes a few annoyances I got for a
long time with JAMin.

1) Relabeled geq sliders with correct frequency.

2) Correctly calculate tooltip frequency from new geq labels.

3) Correct spectrum view frequency labels.

4) Accurate frequency display in spectrum view (fixes bug #1736245).

5) Same on hdeq display. As a side effect, removed rising/decaying display.
Plan to reintroduce it in a more flexible manner later.

6) Fix for "pen tool" measurement induced by new hdeq display.

Accuracy of spectrum displays and measurements has been tested with the
excellent japa & jaaa as sound generators and display references.
This is my first C code ever. Please review, comment or commit ;)
- --
Raphaël Doursenaud
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHxKktaZKmNAdXaVURAgegAJ9bKFu0PJcQw62uAtD6/9C55rZnyQCgyLfm
yiZw7QVcgSW3ZKoceqqe5u0=
=H11K
-----END PGP SIGNATURE-----

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

_______________________________________________
Jamin-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jamin-devel
spectrum.patch (text/x-patch, 17.2 KB)
diff -Nurp jamin.cvs/jam-ui.glade jamin/jam-ui.glade
--- jamin.cvs/jam-ui.glade	2008-02-25 20:38:44.000000000 +0100
+++ jamin/jam-ui.glade	2008-02-25 19:47:49.000000000 +0100
@@ -1695,7 +1695,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label132">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">31</property>
+						      <property name="label" translatable="yes">31.5</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -1763,7 +1763,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label133">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">39</property>
+						      <property name="label" translatable="yes">40</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -1899,7 +1899,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label135">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">62</property>
+						      <property name="label" translatable="yes">63</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -1967,7 +1967,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label136">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">79</property>
+						      <property name="label" translatable="yes">80</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2171,7 +2171,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label139">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">158</property>
+						      <property name="label" translatable="yes">160</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2307,7 +2307,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label141">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">251</property>
+						      <property name="label" translatable="yes">250</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2375,7 +2375,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label142">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">317</property>
+						      <property name="label" translatable="yes">315</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2511,7 +2511,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label144">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">503</property>
+						      <property name="label" translatable="yes">500</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2579,7 +2579,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label145">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">634</property>
+						      <property name="label" translatable="yes">630</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2783,7 +2783,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label148">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">1k2</property>
+						      <property name="label" translatable="yes">1k25</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -2851,7 +2851,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label149">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">1k5</property>
+						      <property name="label" translatable="yes">1k6</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -3055,7 +3055,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label151">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">3k2</property>
+						      <property name="label" translatable="yes">3k15</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -3259,7 +3259,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label154">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">6k</property>
+						      <property name="label" translatable="yes">6k3</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -3463,7 +3463,7 @@
 						  <child>
 						    <widget class="GtkLabel" id="label157">
 						      <property name="visible">True</property>
-						      <property name="label" translatable="yes">12k</property>
+						      <property name="label" translatable="yes">12k5</property>
 						      <property name="use_underline">False</property>
 						      <property name="use_markup">False</property>
 						      <property name="justify">GTK_JUSTIFY_LEFT</property>
diff -Nurp jamin.cvs/src/callbacks.c jamin/src/callbacks.c
--- jamin.cvs/src/callbacks.c	2008-02-25 20:38:44.000000000 +0100
+++ jamin/src/callbacks.c	2008-02-26 09:02:20.000000000 +0100
@@ -28,6 +28,7 @@
 #include <string.h>
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
+#include <locale.h>
 
 
 #include "main.h"
@@ -2780,14 +2781,21 @@ on_eqb_value_changed                   (
   char *freq = NULL;
   char *amp = NULL;
   int th, hu, val;
+  char buffer[5];
+  struct lconv *ptr;
+  char *decimal;
 
   th = 0;
   hu = 0;
   val = 0;
+  ptr = localeconv();
+  decimal = ptr->decimal_point;
+
   if (strchr (gtk_label_get_text (GTK_LABEL (range)), 'k'))
     {
       sscanf (gtk_label_get_text (GTK_LABEL (range)), "%dk%d", &th, &hu);
-      val = th * 1000 + hu * 100;
+      sprintf(buffer,"%d%s%d", th, decimal, hu);
+      val = (int) (atof(buffer) * 1000);
     }
   else
     {
@@ -2835,14 +2843,21 @@ on_eqbl_enter_notify_event             (
 {
   char *freq = NULL;
   int th, hu, val;
+  char buffer[5];
+  struct lconv *ptr;
+  char *decimal;
 
   th = 0;
   hu = 0;
   val = 0;
+  ptr = localeconv();
+  decimal = ptr->decimal_point;
+
   if (strchr (gtk_label_get_text (GTK_LABEL (widget)), 'k'))
     {
       sscanf (gtk_label_get_text (GTK_LABEL (widget)), "%dk%d", &th, &hu);
-      val = th * 1000 + hu * 100;
+      sprintf(buffer,"%d%s%d", th, decimal, hu);
+      val = (int) (atof(buffer) * 1000);
     }
   else
     {
diff -Nurp jamin.cvs/src/hdeq.c jamin/src/hdeq.c
--- jamin.cvs/src/hdeq.c	2008-02-25 20:38:44.000000000 +0100
+++ jamin/src/hdeq.c	2008-02-26 09:05:12.000000000 +0100
@@ -1423,7 +1423,7 @@ void hdeq_curve_motion (GdkEventMotion *
             (double) EQ_curve_height) * EQ_curve_range_y) + 
             EQ_gain_lower;
 
-        s_gain = -(EQ_SPECTRUM_RANGE - (((((double) EQ_curve_height - 
+        s_gain = 8 -(EQ_SPECTRUM_RANGE - (((((double) EQ_curve_height - 
             (double) y) / (double) EQ_curve_height) * EQ_SPECTRUM_RANGE)));
 
 	coords = g_strdup_printf(_("%dHz , EQ : %.1fdb , Spectrum : %ddb"), NINT
diff -Nurp jamin.cvs/src/interface.c jamin/src/interface.c
--- jamin.cvs/src/interface.c	2008-02-25 20:38:44.000000000 +0100
+++ jamin/src/interface.c	2008-02-25 19:47:49.000000000 +0100
@@ -1311,7 +1311,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb2), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb2), TRUE);
 
-  label132 = gtk_label_new (_("31"));
+  label132 = gtk_label_new (_("31.5"));
   gtk_widget_set_name (label132, "label132");
   gtk_widget_show (label132);
   gtk_box_pack_start (GTK_BOX (vbox52), label132, FALSE, FALSE, 0);
@@ -1333,7 +1333,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb3), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb3), TRUE);
 
-  label133 = gtk_label_new (_("39"));
+  label133 = gtk_label_new (_("40"));
   gtk_widget_set_name (label133, "label133");
   gtk_widget_show (label133);
   gtk_box_pack_start (GTK_BOX (vbox53), label133, FALSE, FALSE, 0);
@@ -1377,7 +1377,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb5), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb5), TRUE);
 
-  label135 = gtk_label_new (_("62"));
+  label135 = gtk_label_new (_("63"));
   gtk_widget_set_name (label135, "label135");
   gtk_widget_show (label135);
   gtk_box_pack_start (GTK_BOX (vbox55), label135, FALSE, FALSE, 0);
@@ -1399,7 +1399,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb6), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb6), TRUE);
 
-  label136 = gtk_label_new (_("79"));
+  label136 = gtk_label_new (_("80"));
   gtk_widget_set_name (label136, "label136");
   gtk_widget_show (label136);
   gtk_box_pack_start (GTK_BOX (vbox56), label136, FALSE, FALSE, 0);
@@ -1465,7 +1465,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb9), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb9), TRUE);
 
-  label139 = gtk_label_new (_("158"));
+  label139 = gtk_label_new (_("160"));
   gtk_widget_set_name (label139, "label139");
   gtk_widget_show (label139);
   gtk_box_pack_start (GTK_BOX (vbox59), label139, FALSE, FALSE, 0);
@@ -1509,7 +1509,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb11), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb11), TRUE);
 
-  label141 = gtk_label_new (_("251"));
+  label141 = gtk_label_new (_("250"));
   gtk_widget_set_name (label141, "label141");
   gtk_widget_show (label141);
   gtk_box_pack_start (GTK_BOX (vbox61), label141, FALSE, FALSE, 0);
@@ -1531,7 +1531,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb12), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb12), TRUE);
 
-  label142 = gtk_label_new (_("317"));
+  label142 = gtk_label_new (_("315"));
   gtk_widget_set_name (label142, "label142");
   gtk_widget_show (label142);
   gtk_box_pack_start (GTK_BOX (vbox62), label142, FALSE, FALSE, 0);
@@ -1575,7 +1575,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb14), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb14), TRUE);
 
-  label144 = gtk_label_new (_("503"));
+  label144 = gtk_label_new (_("500"));
   gtk_widget_set_name (label144, "label144");
   gtk_widget_show (label144);
   gtk_box_pack_start (GTK_BOX (vbox64), label144, FALSE, FALSE, 0);
@@ -1597,7 +1597,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb15), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb15), TRUE);
 
-  label145 = gtk_label_new (_("634"));
+  label145 = gtk_label_new (_("630"));
   gtk_widget_set_name (label145, "label145");
   gtk_widget_show (label145);
   gtk_box_pack_start (GTK_BOX (vbox65), label145, FALSE, FALSE, 0);
@@ -1663,7 +1663,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb18), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb18), TRUE);
 
-  label148 = gtk_label_new (_("1k2"));
+  label148 = gtk_label_new (_("1k25"));
   gtk_widget_set_name (label148, "label148");
   gtk_widget_show (label148);
   gtk_box_pack_start (GTK_BOX (vbox68), label148, FALSE, FALSE, 0);
@@ -1685,7 +1685,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb19), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb19), TRUE);
 
-  label149 = gtk_label_new (_("1k5"));
+  label149 = gtk_label_new (_("1k6"));
   gtk_widget_set_name (label149, "label149");
   gtk_widget_show (label149);
   gtk_box_pack_start (GTK_BOX (vbox69), label149, FALSE, FALSE, 0);
@@ -1751,7 +1751,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb22), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb22), TRUE);
 
-  label151 = gtk_label_new (_("3k2"));
+  label151 = gtk_label_new (_("3k15"));
   gtk_widget_set_name (label151, "label151");
   gtk_widget_show (label151);
   gtk_box_pack_start (GTK_BOX (vbox71), label151, FALSE, FALSE, 0);
@@ -1817,7 +1817,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb25), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb25), TRUE);
 
-  label154 = gtk_label_new (_("6k"));
+  label154 = gtk_label_new (_("6k3"));
   gtk_widget_set_name (label154, "label154");
   gtk_widget_show (label154);
   gtk_box_pack_start (GTK_BOX (vbox74), label154, FALSE, FALSE, 0);
@@ -1883,7 +1883,7 @@ create_window1 (void)
   gtk_scale_set_draw_value (GTK_SCALE (eqb28), FALSE);
   gtk_range_set_inverted (GTK_RANGE (eqb28), TRUE);
 
-  label157 = gtk_label_new (_("12k"));
+  label157 = gtk_label_new (_("12k5"));
   gtk_widget_set_name (label157, "label157");
   gtk_widget_show (label157);
   gtk_box_pack_start (GTK_BOX (vbox77), label157, FALSE, FALSE, 0);
@@ -6223,7 +6223,7 @@ create_about_dialog (void)
   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (developers), FALSE);
   gtk_text_view_set_left_margin (GTK_TEXT_VIEW (developers), 5);
   gtk_text_view_set_right_margin (GTK_TEXT_VIEW (developers), 5);
-  gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (developers)), _("\nSteve Harris is the JAMin principle author and team leader.\n\nSourceForge CVS developers, in alphabetical order:\n\nJan Depner\nSteve Harris\nJack O'Quin\nRon Parker\nEmmanuel Saracco\nPatrick Shirkey\n\nTranslators:\n\nAlexandre Prokoudine (Russian)\nEmmanuel Saracco (French)\nRaphaël Doursenaud (French)"), -1);
+  gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (developers)), _("\nSteve Harris is the JAMin principle author and team leader.\n\nSourceForge CVS developers, in alphabetical order:\n\nJan Depner\nSteve Harris\nJack O'Quin\nRon Parker\nEmmanuel Saracco\nPatrick Shirkey\n\nTranslators:\n\nAlexandre Prokoudine (Russian)\nEmmanuel Saracco (French)\nRapha\303\253l Doursenaud (French)\n"), -1);
 
   label328 = gtk_label_new_with_mnemonic (_("_Developers"));
   gtk_widget_set_name (label328, "label328");
diff -Nurp jamin.cvs/src/process.c jamin/src/process.c
--- jamin.cvs/src/process.c	2008-02-25 20:38:44.000000000 +0100
+++ jamin/src/process.c	2008-02-26 09:08:11.000000000 +0100
@@ -441,7 +441,7 @@ void run_eq_iir(unsigned int port, unsig
 float bin_peak_read_and_clear(int bin)
 {
     float ret = bin_peak[bin];
-    const float fix = 2.0f / ((float) BINS * (float) OVER_SAMP);
+    const float fix = 30.0f / ((float) BINS * (float) OVER_SAMP);
 
     bin_peak[bin] = EPSILON;		/* don't take log(0.0) */
 
diff -Nurp jamin.cvs/src/spectrum.c jamin/src/spectrum.c
--- jamin.cvs/src/spectrum.c	2008-02-25 20:41:36.000000000 +0100
+++ jamin/src/spectrum.c	2008-02-26 09:07:37.000000000 +0100
@@ -26,9 +26,9 @@
 #include "db.h"
 
 static char *band_lbls[BANDS] = {
-    "25.0", "31.5", "40.0", "50.0", "63.0", "80.0", "100", "125", "160", "200",
-    "250",  "315",  "400",  "500",  "630",  "800",  "1k",  "1k25", "1k6", "2k",
-    "2k5",  "3k1",  "4k",   "5k",   "6k3",  "8k",   "10k", "10k2", "16k", "20k"
+    "25", "31.5", "40", "50", "63", "80", "100", "125", "160", "200",
+    "250",  "315",  "400",  "500",  "630",  "800", "1k",  "1k25", "1k6", "2k",
+    "2k5",  "3k15",  "4k",   "5k",   "6k3",  "8k",   "10k", "12k5", "16k", "20k"
 };
 
 GtkWidget *make_mini_label(const char *text);
@@ -140,8 +140,6 @@ gboolean spectrum_update(gpointer data)
     void draw_EQ_spectrum_curve (float *);
     int get_current_notebook1_page ();
 
-    float decay_rate = 0.2f;
-
     page = get_current_notebook1_page ();
     count = BINS / 2;
 
@@ -166,8 +164,17 @@ gboolean spectrum_update(gpointer data)
         levels[i] = 0.0f;
       }
       for (i=0; i<count; i++) {
+
+/* TODO : Add rise and release times
+          Compute display
+          Eventually expose these on the GUI
+    Old decay code :
+    float decay_rate = 0.2f;
         single_levels[i] *= 1.0f - decay_rate;
         single_levels[i] += bin_peak_read_and_clear(i) * decay_rate;
+*/
+
+        single_levels[i] = bin_peak_read_and_clear(i);
       }
       draw_EQ_spectrum_curve (single_levels);
     }