From 13e1cd56635d2c75c111519486ab9aaeea63cca2 Mon Sep 17 00:00:00 2001 From: David Freese Date: Fri, 29 Aug 2014 03:44:15 -0500 Subject: [PATCH] Audio selectors for PORTAUDIO * correct ListBox offset in configuration panel --- src/dialogs/confdialog.cxx | 18 +++++++++--------- src/dialogs/confdialog.fl | 24 ++++++++++++------------ src/soundcard/sound.cxx | 3 --- src/soundcard/soundconf.cxx | 22 +++++++++++----------- 4 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx index f5ee59d4..42215634 100644 --- a/src/dialogs/confdialog.cxx +++ b/src/dialogs/confdialog.cxx @@ -3815,7 +3815,7 @@ Fl_Group *grpAudioSampleRate=(Fl_Group *)0; Fl_ListBox *menuInSampleRate=(Fl_ListBox *)0; static void cb_menuInSampleRate(Fl_ListBox* o, void*) { - progdefaults.in_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index()-1; + progdefaults.in_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index(); resetSoundCard(); progdefaults.changed = true; } @@ -3823,7 +3823,7 @@ progdefaults.changed = true; Fl_ListBox *menuOutSampleRate=(Fl_ListBox *)0; static void cb_menuOutSampleRate(Fl_ListBox* o, void*) { - progdefaults.out_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index()-1; + progdefaults.out_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index(); resetSoundCard(); progdefaults.changed = true; } @@ -3831,9 +3831,9 @@ progdefaults.changed = true; Fl_ListBox *menuSampleConverter=(Fl_ListBox *)0; static void cb_menuSampleConverter(Fl_ListBox* o, void*) { - if ((o->index()-1) == FLDIGI_SRC_BEST) + if ((o->index()) == FLDIGI_SRC_BEST) fl_alert2("The best quality SINC interpolator has very high CPU overhead"); -progdefaults.sample_converter = sample_rate_converters[o->index()-1]; +progdefaults.sample_converter = sample_rate_converters[o->index()]; resetSoundCard(); progdefaults.changed = true; o->tooltip(src_get_description(progdefaults.sample_converter)); @@ -9055,7 +9055,7 @@ le Earth)")); { grpAudioSampleRate = new Fl_Group(55, 65, 490, 90, _("Sample rate")); grpAudioSampleRate->box(FL_ENGRAVED_FRAME); grpAudioSampleRate->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); - { Fl_ListBox* o = menuInSampleRate = new Fl_ListBox(65, 94, 100, 20, _("Capture")); + { Fl_ListBox* o = menuInSampleRate = new Fl_ListBox(65, 94, 100, 22, _("Capture")); menuInSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\"\ndoes not work we\ ll with your audio device.")); menuInSampleRate->box(FL_DOWN_BOX); @@ -9069,10 +9069,10 @@ ll with your audio device.")); menuInSampleRate->align(Fl_Align(FL_ALIGN_RIGHT)); menuInSampleRate->when(FL_WHEN_RELEASE); o->clear_changed(); - o->labelsize(FL_NORMAL_SIZE); + o->labelsize(FL_NORMAL_SIZE); menuInSampleRate->end(); } // Fl_ListBox* menuInSampleRate - { Fl_ListBox* o = menuOutSampleRate = new Fl_ListBox(65, 124, 100, 20, _("Playback")); + { Fl_ListBox* o = menuOutSampleRate = new Fl_ListBox(65, 124, 100, 22, _("Playback")); menuOutSampleRate->box(FL_DOWN_BOX); menuOutSampleRate->color(FL_BACKGROUND2_COLOR); menuOutSampleRate->selection_color(FL_BACKGROUND_COLOR); @@ -9085,10 +9085,10 @@ ll with your audio device.")); menuOutSampleRate->when(FL_WHEN_RELEASE); o->clear_changed(); o->tooltip(menuInSampleRate->tooltip()); - o->labelsize(FL_NORMAL_SIZE); + o->labelsize(FL_NORMAL_SIZE); menuOutSampleRate->end(); } // Fl_ListBox* menuOutSampleRate - { Fl_ListBox* o = menuSampleConverter = new Fl_ListBox(319, 94, 216, 20, _("Converter")); + { Fl_ListBox* o = menuSampleConverter = new Fl_ListBox(319, 94, 216, 22, _("Converter")); menuSampleConverter->tooltip(_("Set the type of resampler used of offset correction")); menuSampleConverter->box(FL_DOWN_BOX); menuSampleConverter->color(FL_BACKGROUND2_COLOR); diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl index 4141dd34..ea7fb049 100644 --- a/src/dialogs/confdialog.fl +++ b/src/dialogs/confdialog.fl @@ -4725,35 +4725,35 @@ resetSoundCard();} } { Fl_Group menuInSampleRate { label Capture - callback {progdefaults.in_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index()-1; + callback {progdefaults.in_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index(); resetSoundCard(); progdefaults.changed = true;} open tooltip {Force a specific sample rate. Select "Native" if "Auto" -does not work well with your audio device.} xywh {65 94 100 20} box DOWN_BOX color 7 align 8 - code2 {o->clear_changed(); - o->labelsize(FL_NORMAL_SIZE);} +does not work well with your audio device.} xywh {65 94 100 22} box DOWN_BOX color 7 align 8 + code0 {o->clear_changed();} + code1 {o->labelsize(FL_NORMAL_SIZE);} class Fl_ListBox } {} Fl_Group menuOutSampleRate { label Playback - callback {progdefaults.out_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index()-1; + callback {progdefaults.out_sample_rate = o->index() > 2 ? strtol(o->value(), 0, 10) : o->index(); resetSoundCard(); progdefaults.changed = true;} open - xywh {65 124 100 20} box DOWN_BOX color 7 align 8 - code2 {o->clear_changed();} - code3 {o->tooltip(menuInSampleRate->tooltip()); - o->labelsize(FL_NORMAL_SIZE);} + xywh {65 124 100 22} box DOWN_BOX color 7 align 8 + code0 {o->clear_changed();} + code1 {o->tooltip(menuInSampleRate->tooltip());} + code2 {o->labelsize(FL_NORMAL_SIZE);} class Fl_ListBox } {} Fl_Group menuSampleConverter { label Converter - callback {if ((o->index()-1) == FLDIGI_SRC_BEST) + callback {if ((o->index()) == FLDIGI_SRC_BEST) fl_alert2("The best quality SINC interpolator has very high CPU overhead"); -progdefaults.sample_converter = sample_rate_converters[o->index()-1]; +progdefaults.sample_converter = sample_rate_converters[o->index()]; resetSoundCard(); progdefaults.changed = true; o->tooltip(src_get_description(progdefaults.sample_converter));} open - tooltip {Set the type of resampler used of offset correction} xywh {319 94 216 20} box DOWN_BOX color 7 align 5 + tooltip {Set the type of resampler used of offset correction} xywh {319 94 216 22} box DOWN_BOX color 7 align 5 code0 {\#include } code1 {o->labelsize(FL_NORMAL_SIZE);} class Fl_ListBox diff --git a/src/soundcard/sound.cxx b/src/soundcard/sound.cxx index e080f2dc..78bae414 100644 --- a/src/soundcard/sound.cxx +++ b/src/soundcard/sound.cxx @@ -1740,9 +1740,6 @@ bool SoundPort::must_close(int dir) return Pa_GetHostApiInfo((*sd[dir].idev)->hostApi)->type != paJACK; } -// Determine the sample rate that we will use. We try the modem's rate -// first and fall back to the device's default rate. If there is a user -// setting we just return that without making any checks. double SoundPort::find_srate(unsigned dir) { int sr = (dir == 0 ? progdefaults.in_sample_rate : progdefaults.out_sample_rate); diff --git a/src/soundcard/soundconf.cxx b/src/soundcard/soundconf.cxx index 198e22cc..5f3dc655 100644 --- a/src/soundcard/soundconf.cxx +++ b/src/soundcard/soundconf.cxx @@ -326,30 +326,30 @@ static void sound_init_options(void) if (progdefaults.in_sample_rate == SAMPLE_RATE_UNSET && (progdefaults.in_sample_rate = progdefaults.sample_rate) == SAMPLE_RATE_UNSET) progdefaults.in_sample_rate = SAMPLE_RATE_NATIVE; - else if (progdefaults.in_sample_rate > SAMPLE_RATE_OTHER) - snprintf(sr, sizeof(sr), "%d", progdefaults.in_sample_rate); - if (progdefaults.in_sample_rate <= SAMPLE_RATE_NATIVE) + else if (progdefaults.in_sample_rate < SAMPLE_RATE_OTHER) menuInSampleRate->index(progdefaults.in_sample_rate); - else - for (int i = 1; i <= menuInSampleRate->lsize(); i++) { + else { + snprintf(sr, sizeof(sr), "%d", progdefaults.in_sample_rate); + for (int i = SAMPLE_RATE_NATIVE + 1; i < menuInSampleRate->lsize(); i++) { menuInSampleRate->index(i); if (strstr(menuInSampleRate->value(), sr)) break; } + } if (progdefaults.out_sample_rate == SAMPLE_RATE_UNSET && (progdefaults.out_sample_rate = progdefaults.sample_rate) == SAMPLE_RATE_UNSET) progdefaults.out_sample_rate = SAMPLE_RATE_NATIVE; - else if (progdefaults.out_sample_rate > SAMPLE_RATE_OTHER) - snprintf(sr, sizeof(sr), "%d", progdefaults.out_sample_rate); - if (progdefaults.out_sample_rate <= SAMPLE_RATE_NATIVE) + else if (progdefaults.out_sample_rate < SAMPLE_RATE_OTHER) menuOutSampleRate->index(progdefaults.out_sample_rate); - else - for (int i = 1; i <= menuOutSampleRate->lsize(); i++) { + else { + snprintf(sr, sizeof(sr), "%d", progdefaults.out_sample_rate); + for (int i = SAMPLE_RATE_NATIVE + 1; i < menuOutSampleRate->lsize(); i++) { menuOutSampleRate->index(i); if (strstr(menuOutSampleRate->value(), sr)) break; } + } cntRxRateCorr->value(progdefaults.RX_corr); cntTxRateCorr->value(progdefaults.TX_corr); @@ -500,7 +500,7 @@ void sound_update(unsigned idx) break; } - for (int j = 1; j < listbox[i]->lsize(); j++) { + for (int j = 0; j < listbox[i]->lsize(); j++) { listbox[i]->index(j); if (strstr(listbox[i]->value(), label)) break;