]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
CHanged Audio menu to remove line in and boost when local microphone selected. Change...
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 10 Dec 2016 09:47:25 +0000 (09:47 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Sat, 10 Dec 2016 09:47:25 +0000 (09:47 +0000)
audio_menu.c
new_protocol.c
old_protocol.c
radio.c
vox.c
vox_menu.c

index cfea7e21d8ce22621c313363d66a29e70fe30a3d..bda85d3e8219ca04fa6320c0a51c923ffc0d6708 100644 (file)
@@ -33,6 +33,9 @@ static GtkWidget *menu_b=NULL;
 
 static GtkWidget *dialog=NULL;
 
+GtkWidget *linein_b;
+GtkWidget *micboost_b;
+
 static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
   if(dialog!=NULL) {
     gtk_widget_destroy(dialog);
@@ -82,14 +85,20 @@ fprintf(stderr,"local_microphone_cb: %d\n",local_microphone);
   if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
     if(audio_open_input()==0) {
       local_microphone=1;
+      gtk_widget_hide(linein_b);
+      gtk_widget_hide(micboost_b);
     } else {
       local_microphone=0;
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+      gtk_widget_show(linein_b);
+      gtk_widget_show(micboost_b);
     }
   } else {
     if(local_microphone) {
       local_microphone=0;
       audio_close_input();
+      gtk_widget_show(linein_b);
+      gtk_widget_show(micboost_b);
     }
   }
 }
@@ -138,20 +147,20 @@ void audio_menu(GtkWidget *parent) {
   int row=0;
 
   if(protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL) {
-    GtkWidget *linein_b=gtk_check_button_new_with_label("Mic Line In (ACC connector)");
+    linein_b=gtk_check_button_new_with_label("Mic Line In (ACC connector)");
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (linein_b), mic_linein);
-    gtk_widget_show(linein_b);
     gtk_grid_attach(GTK_GRID(grid),linein_b,0,++row,1,1);
     g_signal_connect(linein_b,"toggled",G_CALLBACK(linein_cb),NULL);
 
-    GtkWidget *micboost_b=gtk_check_button_new_with_label("Mic Boost (radio only)");
+    micboost_b=gtk_check_button_new_with_label("Mic Boost (radio only)");
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (micboost_b), mic_boost);
-    gtk_widget_show(micboost_b);
     gtk_grid_attach(GTK_GRID(grid),micboost_b,0,++row,1,1);
     g_signal_connect(micboost_b,"toggled",G_CALLBACK(micboost_cb),NULL);
+
   }
 
 
+
   if(n_input_devices>0) {
     GtkWidget *local_microphone_b=gtk_check_button_new_with_label("Local Microphone Input");
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (local_microphone_b), local_microphone);
@@ -206,5 +215,9 @@ void audio_menu(GtkWidget *parent) {
 
   gtk_widget_show_all(dialog);
 
+  if(local_microphone && (protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL)) {
+    gtk_widget_hide(linein_b);
+    gtk_widget_hide(micboost_b);
+  }
 }
 
index d324175312974098ade47665451fb226248393c8..e4c4f01080326ea3e51e1aea68db6d42cef512f9 100644 (file)
@@ -56,6 +56,7 @@
 #ifdef FREEDV
 #include "freedv.h"
 #endif
+#include "vox.h"
 
 #define min(x,y) (x<y?x:y)
 
@@ -958,15 +959,15 @@ static void process_freedv_rx_buffer() {
   int demod_samples;
   for(j=0;j<outputsamples;j++) {
     if(freedv_samples==0) {
-      leftaudiosample=(short)(audiooutputbuffer[j*2]*32767.0*volume);
-      rightaudiosample=(short)(audiooutputbuffer[(j*2)+1]*32767.0*volume);
+      leftaudiosample=(short)(audiooutputbuffer[j*2]*32767.0);
+      rightaudiosample=(short)(audiooutputbuffer[(j*2)+1]*32767.0);
       demod_samples=demod_sample_freedv(leftaudiosample);
       if(demod_samples!=0) {
         int s;
         int t;
         for(s=0;s<demod_samples;s++) {
           if(freedv_sync) {
-            leftaudiosample=rightaudiosample=(short)((double)speech_out[s]*volume);
+            leftaudiosample=rightaudiosample=(short)((double)speech_out[s]);
           } else {
             leftaudiosample=rightaudiosample=0;
           }
@@ -1015,8 +1016,8 @@ static void process_rx_buffer() {
       leftaudiosample=0;
       rightaudiosample=0;
     } else {
-      leftaudiosample=(short)(audiooutputbuffer[j*2]*32767.0*volume);
-      rightaudiosample=(short)(audiooutputbuffer[(j*2)+1]*32767.0*volume);
+      leftaudiosample=(short)(audiooutputbuffer[j*2]*32767.0);
+      rightaudiosample=(short)(audiooutputbuffer[(j*2)+1]*32767.0);
 
 #ifdef PSK
       if(mode==modePSK) {
@@ -1206,7 +1207,7 @@ void new_protocol_process_local_mic(unsigned char *buffer,int le) {
                }
             } else {
 #endif
-               if(mode==modeCWL || mode==modeCWU || tune || !isTransmitting()) {
+               if(mode==modeCWL || mode==modeCWU || tune /*|| !isTransmitting()*/) {
                    micinputbuffer[micsamples*2]=0.0;
                    micinputbuffer[(micsamples*2)+1]=0.0;
                } else {
index abbc4a8b3d16930d9e789c5d17d64ce54b39463e..0d15e86c3924f7285166d6b2555f14a42aece202 100644 (file)
@@ -129,6 +129,7 @@ static int running;
 static long ep4_sequence;
 
 static int samples=0;
+static int mic_samples=0;
 #ifdef FREEDV
 static int freedv_samples=0;
 static int freedv_divisor=6;
@@ -621,7 +622,7 @@ static void full_rx_buffer() {
   int j;
   int error;
 
-  if(vox_enabled) {
+  if(vox_enabled && !local_microphone) {
     switch(mode) {
       case modeLSB:
       case modeUSB:
@@ -669,7 +670,7 @@ static void full_tx_buffer() {
   int error;
   double gain=32767.0; // 2^16-1
 
-  if(vox_enabled && vox) {
+  if(vox_enabled && (vox || local_microphone)) {
     update_vox(micinputbuffer,BUFFER_SIZE);
   }
 
@@ -715,7 +716,7 @@ void old_protocol_process_local_mic(unsigned char *buffer,int le) {
   double mic_sample_double;
   double gain=pow(10.0, mic_gain / 20.0);
 
-  if(isTransmitting()) {
+  //if(isTransmitting()) {
     b=0;
     int i,j,s;
     for(i=0;i<720;i++) {
@@ -736,14 +737,14 @@ void old_protocol_process_local_mic(unsigned char *buffer,int le) {
               for(j=0;j<freedv_divisor;j++) {  // 8K to 48K
                 mic_sample=mod_out[s];
                 mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
-                micinputbuffer[samples*2]=mic_sample_double;
-                micinputbuffer[(samples*2)+1]=mic_sample_double;
-                iqinputbuffer[0][samples*2]=0.0;
-                iqinputbuffer[0][(samples*2)+1]=0.0;
-                samples++;
-                if(samples==buffer_size) {
+                micinputbuffer[mic_samples*2]=mic_sample_double;
+                micinputbuffer[(mic_samples*2)+1]=mic_sample_double;
+                //iqinputbuffer[0][samples*2]=0.0;
+                //iqinputbuffer[0][(samples*2)+1]=0.0;
+                mic_samples++;
+                if(mic_samples==buffer_size) {
                   full_tx_buffer();
-                  samples=0;
+                  mic_samples=0;
                 }
               }
             }
@@ -756,28 +757,25 @@ void old_protocol_process_local_mic(unsigned char *buffer,int le) {
       } else {
 #endif
          if(mode==modeCWL || mode==modeCWU || tune) {
-           micinputbuffer[samples*2]=0.0;
-           micinputbuffer[(samples*2)+1]=0.0;
+           micinputbuffer[mic_samples*2]=0.0;
+           micinputbuffer[(mic_samples*2)+1]=0.0;
          } else {
-           micinputbuffer[samples*2]=mic_sample_double;
-           micinputbuffer[(samples*2)+1]=mic_sample_double;
+           micinputbuffer[mic_samples*2]=mic_sample_double;
+           micinputbuffer[(mic_samples*2)+1]=mic_sample_double;
          }
-         iqinputbuffer[0][samples*2]=0.0;
-         iqinputbuffer[0][(samples*2)+1]=0.0;
-         samples++;
-         if(samples==buffer_size) {
+//         iqinputbuffer[0][samples*2]=0.0;
+//         iqinputbuffer[0][(samples*2)+1]=0.0;
+         mic_samples++;
+         if(mic_samples==buffer_size) {
            full_tx_buffer();
-           samples=0;
+           mic_samples=0;
          }
 #ifdef FREEDV
        }
 #endif
 
     }
-  } else {
-    if(vox_enabled) {
-    }
-  }
+  //}
 }
 
 /*
diff --git a/radio.c b/radio.c
index d66112d1cf84c41a63a592313d79935806615718..a47612967461d174c77568e5a0234b3adfe2594c 100644 (file)
--- a/radio.c
+++ b/radio.c
@@ -224,7 +224,7 @@ int pre_emphasize=0;
 
 int vox_enabled=0;
 double vox_threshold=0.001;
-double vox_gain=1;
+double vox_gain=10.0;
 double vox_hang=250.0;
 int vox=0;
 
@@ -690,8 +690,10 @@ fprintf(stderr,"radioRestoreState: %s\n",property_path);
     if(value) vox_enabled=atoi(value);
     value=getProperty("vox_threshold");
     if(value) vox_threshold=atof(value);
+/*
     value=getProperty("vox_gain");
     if(value) vox_gain=atof(value);
+*/
     value=getProperty("vox_hang");
     if(value) vox_hang=atof(value);
 
@@ -883,8 +885,10 @@ void radioSaveState() {
     setProperty("vox_enabled",value);
     sprintf(value,"%f",vox_threshold);
     setProperty("vox_threshold",value);
+/*
     sprintf(value,"%f",vox_gain);
     setProperty("vox_gain",value);
+*/
     sprintf(value,"%f",vox_hang);
     setProperty("vox_hang",value);
 
diff --git a/vox.c b/vox.c
index 540f59118924f82f92b5929ba553f764e9bde004..d8163f28c7e61801296915b47d09dedc73ea5100 100644 (file)
--- a/vox.c
+++ b/vox.c
@@ -57,6 +57,8 @@ void update_vox(double *in,int length) {
   if(mic_boost && !local_microphone) {
     threshold=vox_threshold*vox_gain;
   }
+
+fprintf(stderr,"update_vox: peak=%f threshold=%f\n",peak,threshold);
   if(peak>threshold) {
     if(previous_vox) {
       g_source_remove(vox_timeout);
index 464d529f86de3557847f025654653b4d1a3f1deb..65bee6adf23105ad8c25bac6bb7bca93e2c69a70 100644 (file)
@@ -158,6 +158,7 @@ void vox_menu(GtkWidget *parent) {
   gtk_grid_attach(GTK_GRID(grid),vox_scale,1,2,1,1);
   g_signal_connect(G_OBJECT(vox_scale),"value_changed",G_CALLBACK(vox_value_changed_cb),NULL);
   
+/*
   GtkWidget *gain_label=gtk_label_new("VOX Gain:");
   gtk_misc_set_alignment (GTK_MISC(gain_label), 0, 0);
   gtk_widget_show(gain_label);
@@ -168,7 +169,7 @@ void vox_menu(GtkWidget *parent) {
   gtk_widget_show(gain_scale);
   gtk_grid_attach(GTK_GRID(grid),gain_scale,1,3,1,1);
   g_signal_connect(G_OBJECT(gain_scale),"value_changed",G_CALLBACK(vox_gain_value_changed_cb),NULL);
-  
+*/  
   GtkWidget *hang_label=gtk_label_new("VOX Hang (ms):");
   gtk_misc_set_alignment (GTK_MISC(hang_label), 0, 0);
   gtk_widget_show(hang_label);