]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
introduce rnnoise based nr3
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sun, 18 Dec 2022 05:29:59 +0000 (10:59 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sun, 18 Dec 2022 05:29:59 +0000 (10:59 +0530)
Makefile
noise_menu.c
receiver.c
receiver.h
vfo.c
vfo.h

index 30f88f4eb00ad9defc67d4574d88a64bced860c6..f1ccaec642934bf3a09e137099bd6e65d00164a5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -169,7 +169,7 @@ ifeq ($(UNAME_S), Linux)
 RT_OPTION=-lrt
 endif
 
-LIBS=$(RT_OPTION) -lm -lwdsp -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(GTKLIBS) $(GPIO_LIBS) $(MIDI_LIBS)
+LIBS=$(RT_OPTION) -lm -lwdsp -lrnnoise -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(GTKLIBS) $(GPIO_LIBS) $(MIDI_LIBS)
 INCLUDES=$(GTKINCLUDES)
 
 COMPILE=$(CC) $(CFLAGS) $(OPTIONS) $(INCLUDES)
index 95888418f0487f1e018e7e4eb26e83c2a5d50bf5..05c4d40cf039ad309f09b87df64ef9d7ca0ada5d 100644 (file)
@@ -85,6 +85,7 @@ void set_noise() {
   SetEXTNOBRun(active_receiver->id, active_receiver->nb2);
   SetRXAANRRun(active_receiver->id, active_receiver->nr);
   SetRXAEMNRRun(active_receiver->id, active_receiver->nr2);
+  SetRXARNNRRun(active_receiver->id, active_receiver->nr3);
   SetRXAANFRun(active_receiver->id, active_receiver->anf);
   SetRXASNBARun(active_receiver->id, active_receiver->snb);
   g_idle_add(ext_vfo_update,NULL);
@@ -126,8 +127,10 @@ static void nr_none_cb(GtkToggleButton *widget, gpointer data) {
   if(gtk_toggle_button_get_active(widget)) {
     active_receiver->nr=0;
     active_receiver->nr2=0;
+    active_receiver->nr3=0;
     mode_settings[vfo[active_receiver->id].mode].nr=0;
     mode_settings[vfo[active_receiver->id].mode].nr2=0;
+    mode_settings[vfo[active_receiver->id].mode].nr3=0;
     update_noise();
   }
 }
@@ -136,8 +139,10 @@ static void nr_cb(GtkToggleButton *widget, gpointer data) {
   if(gtk_toggle_button_get_active(widget)) {
     active_receiver->nr=1;
     active_receiver->nr2=0;
+    active_receiver->nr3=0;
     mode_settings[vfo[active_receiver->id].mode].nr=1;
     mode_settings[vfo[active_receiver->id].mode].nr2=0;
+    mode_settings[vfo[active_receiver->id].mode].nr3=0;
     update_noise();
   }
 }
@@ -156,8 +161,22 @@ static void nr2_cb(GtkToggleButton *widget, gpointer data) {
   if(gtk_toggle_button_get_active(widget)) {
     active_receiver->nr=0;
     active_receiver->nr2=1;
+    active_receiver->nr3=0;
     mode_settings[vfo[active_receiver->id].mode].nr=0;
     mode_settings[vfo[active_receiver->id].mode].nr2=1;
+    mode_settings[vfo[active_receiver->id].mode].nr3=0;
+    update_noise();
+  }
+}
+
+static void nr3_cb(GtkToggleButton *widget, gpointer data) {
+  if(gtk_toggle_button_get_active(widget)) {
+    active_receiver->nr=0;
+    active_receiver->nr2=0;
+    active_receiver->nr3=1;
+    mode_settings[vfo[active_receiver->id].mode].nr=0;
+    mode_settings[vfo[active_receiver->id].mode].nr2=0;
+    mode_settings[vfo[active_receiver->id].mode].nr3=1;
     update_noise();
   }
 }
@@ -230,7 +249,7 @@ void noise_menu(GtkWidget *parent) {
   col++;
 
   GtkWidget *b_nr_none=gtk_radio_button_new_with_label(NULL, "None");
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr_none), active_receiver->nr==0 && active_receiver->nr2==0);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr_none), active_receiver->nr==0 && active_receiver->nr2==0 && active_receiver->nr3 ==0);
   gtk_widget_show(b_nr_none);
   gtk_grid_attach(GTK_GRID(grid),b_nr_none,col,row,1,1);
   g_signal_connect(b_nr_none,"toggled",G_CALLBACK(nr_none_cb),NULL);
@@ -286,6 +305,14 @@ void noise_menu(GtkWidget *parent) {
   gtk_grid_attach(GTK_GRID(grid),b_nr2,col,row,1,1);
   g_signal_connect(b_nr2,"toggled",G_CALLBACK(nr2_cb),NULL);
 
+  row++;
+
+  GtkWidget *b_nr3=gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(b_nr),"NR3");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_nr3), active_receiver->nr3);
+  gtk_widget_show(b_nr3);
+  gtk_grid_attach(GTK_GRID(grid),b_nr3,col,row,1,1);
+  g_signal_connect(b_nr3,"toggled",G_CALLBACK(nr3_cb),NULL);
+
   gtk_container_add(GTK_CONTAINER(content),grid);
 
   sub_menu=dialog;
index f3442e7c03eefc1a0e03bc95c7ad057454412d5a..c8b56b564d4c8a9edaa0e9bc368f9f79a18c6979 100644 (file)
@@ -293,6 +293,11 @@ void receiver_save_state(RECEIVER *rx) {
     sprintf(name,"receiver.%d.nr2",rx->id);
     sprintf(value,"%d",rx->nr2);
     setProperty(name,value);
+
+    sprintf(name,"receiver.%d.nr3",rx->id);
+    sprintf(value,"%d",rx->nr3);
+    setProperty(name,value);
+
     sprintf(name,"receiver.%d.anf",rx->id);
     sprintf(value,"%d",rx->anf);
     setProperty(name,value);
@@ -509,6 +514,11 @@ g_print("%s: id=%d\n",__FUNCTION__,rx->id);
     sprintf(name,"receiver.%d.nr2",rx->id);
     value=getProperty(name);
     if(value) rx->nr2=atoi(value);
+
+    sprintf(name,"receiver.%d.nr3",rx->id);
+    value=getProperty(name);
+    if(value) rx->nr3=atoi(value);
+
     sprintf(name,"receiver.%d.anf",rx->id);
     value=getProperty(name);
     if(value) rx->anf=atoi(value);
@@ -922,6 +932,7 @@ g_print("%s: id=%d buffer_size=%d\n",__FUNCTION__,id,buffer_size);
   rx->nb2=0;
   rx->nr=0;
   rx->nr2=0;
+  rx->nr3=0;
   rx->anf=0;
   rx->snb=0;
 
@@ -1051,6 +1062,7 @@ g_print("%s: id=%d default adc=%d\n",__FUNCTION__,rx->id, rx->adc);
   rx->nb2=0;
   rx->nr=0;
   rx->nr2=0;
+  rx->nr3=0;
   rx->anf=0;
   rx->snb=0;
 
@@ -1163,6 +1175,8 @@ g_print("%s: OpenChannel id=%d buffer_size=%d fft_size=%d sample_rate=%d\n",
   SetRXAEMNRRun(rx->id, rx->nr2);
   SetRXAEMNRaeRun(rx->id, rx->nr2_ae);
 
+  SetRXARNNRRun(rx->id, rx->nr3);
+
   SetEXTANBRun(rx->id, rx->nb);
   SetEXTNOBRun(rx->id, rx->nb2);
 
index 5513f67f29382d181fad1b7be2aa6fa52842cd8b..6de1a1a563b7394b3bd96b4c234507d2045c60f8 100644 (file)
@@ -81,6 +81,7 @@ typedef struct _receiver {
   gint nb2;
   gint nr;
   gint nr2;
+  gint nr3;
   gint anf;
   gint snb;
 
diff --git a/vfo.c b/vfo.c
index d31356d34f5f6b3eebc284e3886644e9a5eeb430..59ce9f907b4e7ccdd418517f7bc2cfbd12265f14 100644 (file)
--- a/vfo.c
+++ b/vfo.c
@@ -93,6 +93,11 @@ void modesettings_save_state() {
     sprintf(name,"modeset.%d.nr2", i);
     sprintf(value,"%d", mode_settings[i].nr2);
     setProperty(name,value);
+
+    sprintf(name,"modeset.%d.nr3", i);
+    sprintf(value,"%d", mode_settings[i].nr3);
+    setProperty(name,value);
+
     sprintf(name,"modeset.%d.nb", i);
     sprintf(value,"%d", mode_settings[i].nb);
     setProperty(name,value);
@@ -119,6 +124,7 @@ void modesettings_restore_state() {
     mode_settings[i].filter=filterF6;
     mode_settings[i].nr=0;
     mode_settings[i].nr2=0;
+    mode_settings[i].nr3=0;
     mode_settings[i].nb=0;
     mode_settings[i].nb2=0;
     mode_settings[i].anf=0;
@@ -134,6 +140,11 @@ void modesettings_restore_state() {
     value=getProperty(name);
     if(value) mode_settings[i].nr2=atoi(value);
     sprintf(name,"modeset.%d.nb",i);
+
+    sprintf(name,"modeset.%d.nr3",i);
+    value=getProperty(name);
+    if(value) mode_settings[i].nr3=atoi(value);
+
     value=getProperty(name);
     if(value) mode_settings[i].nb=atoi(value);
     sprintf(name,"modeset.%d.nb2",i);
@@ -399,6 +410,7 @@ void vfo_mode_changed(int m) {
   vfo[id].filter      =mode_settings[m].filter;
   active_receiver->nr =mode_settings[m].nr;
   active_receiver->nr2=mode_settings[m].nr2;
+  active_receiver->nr3=mode_settings[m].nr3;
   active_receiver->nb =mode_settings[m].nb;
   active_receiver->nb2=mode_settings[m].nb2;
   active_receiver->anf=mode_settings[m].anf;
@@ -1181,7 +1193,7 @@ void vfo_update() {
           cairo_show_text(cr, "NB");
         }
 
-       // NR and NR2 are mutually exclusive
+       // NR, NR2 and NR3 are mutually exclusive
         cairo_move_to(cr, 70, 40);
         if(active_receiver->nr) {
           cairo_set_source_rgb(cr, 1.0, 1.0, 0.0);
@@ -1193,6 +1205,7 @@ void vfo_update() {
           cairo_set_source_rgb(cr, 0.7, 0.7, 0.7);
           cairo_show_text(cr, "NR");
         }
+        // XXX need to have a button for NR3
 
         cairo_move_to(cr, 70, 20);
         if(active_receiver->anf) {
diff --git a/vfo.h b/vfo.h
index 84047c93e9c3fd6691a3509f06b3ddaa78b831d8..3fef3e1acd58c3f9735c547a3c7404d35e2b5434 100644 (file)
--- a/vfo.h
+++ b/vfo.h
@@ -60,6 +60,7 @@ struct _mode_settings {
   int nb2;
   int nr;
   int nr2;
+  int nr3;
   int anf;
   int snb;
 };