Update of /cvsroot/alsa/alsa-tools/hdspmixer/src In directory sc8-pr-cvs1:/tmp/cvs-serv1453/hdspmixer/src
Modified Files: HDSPMixerCard.cxx HDSPMixerCard.h HDSPMixerOutput.cxx HDSPMixerOutput.h HDSPMixerSelector.cxx HDSPMixerSelector.h HDSPMixerWindow.cxx mappings.h Log Message: - fixed H9632 problem. - added desktop file and icon new options --with-desktop-dir and --with-pixmap-dir. - fixed CXXFLAGS for soundbase option. - fixed compile warnings. Index: HDSPMixerCard.cxx =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerCard.cxx,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerCard.cxx 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerCard.cxx 24 Nov 2003 14:48:21 -0000 1.3 @@ -19,6 +19,7 @@ */ #pragma implementation +#define HDSPMIXER_DEFINE_MAPPINGS #include "HDSPMixerCard.h" static void alsactl_cb(snd_async_handler_t *handler) @@ -110,6 +111,7 @@ } else if (external_rate <= 2) { return 0; } + return 0; } int HDSPMixerCard::getSpeed() @@ -168,7 +170,12 @@ snprintf(name, 6, "hw:%i", card_id); h9632_aeb.aebi = 0; h9632_aeb.aebo = 0; - if (type == H9632) getAeb(); + if (type == H9632) { + getAeb(); + playbacks_offset = 16; + } else { + playbacks_offset = 26; + } speed_mode = getSpeed(); if (speed_mode < 0) { fprintf(stderr, "Error trying to determine speed mode for card %s, exiting.\n", name); @@ -195,6 +202,7 @@ snd_hwdep_close(hw); return; } + snd_hwdep_close(hw); } void HDSPMixerCard::adjustSettings() { @@ -255,32 +263,30 @@ lineouts = 0; break; case 2: + /* should never happen */ break; } } else if (type == H9632) { - /* FIXME : mapping values are my first guess here - this needs to be tested - */ switch (speed_mode) { case 0: - channels = 12 + (h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0; + channels = 12 + ((h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0); channel_map = channel_map_h9632_ss; dest_map = dest_map_h9632_ss; meter_map = channel_map_h9632_ss; lineouts = 0; break; case 1: - channels = 8 + (h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0; + channels = 8 + ((h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0); channel_map = channel_map_h9632_ds; dest_map = dest_map_h9632_ds; - meter_map = meter_map_h9632_ds; + meter_map = channel_map_h9632_ds; lineouts = 0; break; case 2: - channels = 4 + (h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0; + channels = 4 + ((h9632_aeb.aebi || h9632_aeb.aebo) ? 4 : 0); channel_map = channel_map_h9632_qs; dest_map = dest_map_h9632_qs; - meter_map = dest_map_h9632_qs; + meter_map = channel_map_h9632_qs; lineouts = 0; break; } @@ -355,13 +361,20 @@ basew->inputs->empty_aebi[i]->hide(); basew->playbacks->empty_aebo[i]->show(); basew->outputs->empty_aebo[i]->show(); - } + } + for (int i = channels-4; i < channels; ++i) { + basew->playbacks->strips[i]->hide(); + basew->outputs->strips[i]->hide(); + } } else if (h9632_aeb.aebo && !h9632_aeb.aebi) { for (int i = 0; i < 2; ++i) { basew->inputs->empty_aebi[i]->show(); basew->playbacks->empty_aebo[i]->hide(); basew->outputs->empty_aebo[i]->hide(); } + for (int i = channels-4; i < channels; ++i) { + basew->inputs->strips[i]->hide(); + } } else { for (int i = 0; i < 2; ++i) { basew->inputs->empty_aebi[i]->hide(); Index: HDSPMixerCard.h =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerCard.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerCard.h 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerCard.h 24 Nov 2003 14:48:21 -0000 1.3 @@ -26,7 +26,9 @@ #include <stdio.h> #include <alsa/asoundlib.h> #include <sound/hdsp.h> +#ifdef HDSPMIXER_DEFINE_MAPPINGS #include "mappings.h" +#endif #include "defines.h" #include "HDSPMixerWindow.h" @@ -47,6 +49,7 @@ char *dest_map; char *meter_map; int speed_mode; + int playbacks_offset; void setMode(int mode); int initializeCard(HDSPMixerWindow *w); int getSpeed(); Index: HDSPMixerOutput.cxx =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutput.cxx,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerOutput.cxx 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerOutput.cxx 24 Nov 2003 14:48:21 -0000 1.3 @@ -19,6 +19,7 @@ */ #pragma implementation +#define HDSPMIXER_DEFINE_OUTPUT_LABELS #include "HDSPMixerOutput.h" HDSPMixerOutput::HDSPMixerOutput(int x, int y, int w, int h, int num):Fl_Group(x, y, w, h) Index: HDSPMixerOutput.h =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutput.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerOutput.h 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerOutput.h 24 Nov 2003 14:48:21 -0000 1.3 @@ -41,6 +41,7 @@ class HDSPMixerOutputData; class HDSPMixerWindow; +#ifdef HDSPMIXER_DEFINE_OUTPUT_LABELS static char *labels_mf_ss[20] = { "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6", "AN 7", "AN 8", "A 1", "A 2", "A 3", "A 4", "A 5", "A 6", "A 7", "A 8", @@ -80,6 +81,7 @@ static char *labels_9632_qs[8] = { "SP.L", "SP.R", "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6" }; +#endif class HDSPMixerOutput:public Fl_Group { Index: HDSPMixerSelector.cxx =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerSelector.cxx,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerSelector.cxx 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerSelector.cxx 24 Nov 2003 14:48:21 -0000 1.3 @@ -19,6 +19,7 @@ */ #pragma implementation +#define HDSPMIXER_DEFINE_SELECTOR_LABELS #include "HDSPMixerSelector.h" HDSPMixerSelector::HDSPMixerSelector(int x, int y, int w, int h):Fl_Menu_(x, y, w, h) @@ -142,15 +143,15 @@ } else if (type == H9632) { switch (sm) { case 0: - max_dest = 6 + (aeb->aebo) ? 2 : 0; + max_dest = 6 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_ss; break; case 1: - max_dest = 4 + (aeb->aebo) ? 2 : 0; + max_dest = 4 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_ds; break; case 2: - max_dest = 2 + (aeb->aebo) ? 2 : 0; + max_dest = 2 + (aeb->aebo ? 2 : 0); destinations = destinations_h9632_qs; break; } Index: HDSPMixerSelector.h =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerSelector.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerSelector.h 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerSelector.h 24 Nov 2003 14:48:21 -0000 1.3 @@ -35,6 +35,7 @@ class HDSPMixerWindow; class HDSPMixerIOMixer; +#ifdef HDSPMIXER_DEFINE_SELECTOR_LABELS static char *destinations_mf_ss[10] = { "AN 1+2", "AN 3+4", "AN 5+6", "AN 7+8", "A 1+2", "A 3+4", "A 5+6", "A 7+8", @@ -88,6 +89,7 @@ static char *destinations_h9632_qs[4] = { "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6" }; +#endif class HDSPMixerSelector:public Fl_Menu_ { Index: HDSPMixerWindow.cxx =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerWindow.cxx,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HDSPMixerWindow.cxx 3 Nov 2003 19:10:39 -0000 1.2 +++ HDSPMixerWindow.cxx 24 Nov 2003 14:48:21 -0000 1.3 @@ -246,7 +246,7 @@ break; } } - if (fl_win = Fl::next_window(fl_win)) return 0; + if ((fl_win = Fl::next_window(fl_win))) return 0; } if (!w) return 0; int key = Fl::event_key(); @@ -276,7 +276,7 @@ w->checkState(); return 1; } else if (key == '3' || key == '3'+FL_KP) { - /* rms +3B */ + /* rms +3dB */ w->setup->rmsplus3_val = 1; w->checkState(); return 1; @@ -309,7 +309,7 @@ if (dirty) { inputs->buttons->presets->save_preset(current_preset+1); } - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < 3; ++speed) { for (int card = 0; card < 3; ++card) { for (int preset = 0; preset < 8; ++preset) { for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { @@ -399,7 +399,7 @@ if ((file = fopen(file_name, "r")) == NULL) { fl_alert("Error opening file %s for reading", file_name); } - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < 3; ++speed) { for (int card = 0; card < 3; ++card) { for (int preset = 0; preset < 8; ++preset) { for (int channel = 0; channel < HDSP_MAX_CHANNELS; ++channel) { @@ -490,8 +490,11 @@ void HDSPMixerWindow::restoreDefaults(int card) { int phones; - int chnls[2]; - int maxdest[2]; + int chnls[3]; + int maxdest[3]; + int h9632_spdif_submix[3]; + int h9632_an12_submix[3]; + int num_modes = 2; int ndb = inputs->strips[0]->fader->ndb; switch (cards[card]->type) { case Multiface: @@ -515,35 +518,60 @@ maxdest[1] = 7; phones = 0; break; + case H9632: + chnls[0] = 16; + chnls[1] = 12; + chnls[2] = 8; + maxdest[0] = 8; + maxdest[1] = 6; + maxdest[2] = 4; + h9632_spdif_submix[0] = 4; + h9632_spdif_submix[1] = 2; + h9632_spdif_submix[2] = 0; + h9632_an12_submix[0] = 5; + h9632_an12_submix[1] = 3; + h9632_an12_submix[2] = 1; + num_modes = 3; + phones = 0; } for (int preset = 0; preset < 8; ++preset) { - for (int speed = 0; speed < 2; ++speed) { + for (int speed = 0; speed < num_modes; ++speed) { for (int i = 0; i < chnls[speed]; i+=2) { for (int z = 0; z < maxdest[speed]; ++z) { - inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = - ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; - inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = - ((preset == 6 && z == maxdest[speed]-phones-1) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + /* Gain setup */ + if (cards[card]->type == H9632) { + inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || (i == z*2 && ((preset > 1 && preset < 4) || (preset == 7))) || ((preset == 5) && (z == h9632_spdif_submix[speed]))) ? ndb : 0; + inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || (i == z*2 && ((preset > 1 && preset < 4) || (preset == 7))) || ((preset == 5) && (z == h9632_spdif_submix[speed]))) ? ndb : 0; + playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || i == z*2 || (preset == 5 && z == h9632_spdif_submix[speed])) ? ndb : 0; + playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 1 && z == h9632_an12_submix[speed]) || i == z*2 || (preset == 5 && z == h9632_spdif_submix[speed])) ? ndb : 0; + } else { + inputs->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset == 6 && z == (maxdest[speed]-phones-1)) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + inputs->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset == 6 && z == (maxdest[speed]-phones-1)) || (i == z*2 && (preset > 1 && preset < 4)) || (((preset > 0 && preset < 4) || preset == 7) && phones && (z == maxdest[speed]-1))) ? ndb : 0; + playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = + ((preset > 4 && preset < 7 && z == (maxdest[speed]-phones-1)) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; + playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = + ((preset > 4 && preset < 7 && z == (maxdest[speed]-phones-1)) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; + } + /* Pan setup */ inputs->strips[i]->data[card][speed][preset]->pan_pos[z] = 0; inputs->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF; - playbacks->strips[i]->data[card][speed][preset]->fader_pos[z] = - ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; - playbacks->strips[i+1]->data[card][speed][preset]->fader_pos[z] = - ((preset > 4 && preset < 7 && z == maxdest[speed]-phones-1) || i == z*2 || (phones && (z == maxdest[speed]-1))) ? ndb : 0; playbacks->strips[i]->data[card][speed][preset]->pan_pos[z] = 0; playbacks->strips[i+1]->data[card][speed][preset]->pan_pos[z] = 28*CF; } - inputs->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2); - inputs->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); - playbacks->strips[i]->data[card][speed][preset]->dest = (int)floor(i/2); - playbacks->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); - + if (i < (chnls[speed]-(cards[card]->h9632_aeb.aebo ? 2 : 0))) { + inputs->strips[i]->data[card][speed][preset]->dest = + inputs->strips[i+1]->data[card][speed][preset]->dest = + playbacks->strips[i]->data[card][speed][preset]->dest = + playbacks->strips[i+1]->data[card][speed][preset]->dest = (int)floor(i/2); + } outputs->strips[i]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; outputs->strips[i+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? 137*CF : 0; - if (preset > 4 && preset < 7) { - outputs->strips[chnls[speed]-2]->data[card][speed][preset]->fader_pos = ndb; - outputs->strips[chnls[speed]-1]->data[card][speed][preset]->fader_pos = ndb; - } if (preset == 3 || preset == 7) { inputs->strips[i]->data[card][speed][preset]->mute = 1; inputs->strips[i+1]->data[card][speed][preset]->mute = 1; @@ -553,17 +581,31 @@ } } } - if (phones) { - outputs->strips[chnls[speed]]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; - outputs->strips[chnls[speed]+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; + if (cards[card]->type == H9632) { + if (preset == 1 || preset == 6) { + data[card][speed][preset]->submix_value = h9632_an12_submix[speed]; + outputs->strips[h9632_an12_submix[speed]*2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[h9632_an12_submix[speed]*2+1]->data[card][speed][preset]->fader_pos = ndb; + } else if (preset == 5) { + data[card][speed][preset]->submix_value = h9632_spdif_submix[speed]; + outputs->strips[h9632_spdif_submix[speed]*2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[h9632_spdif_submix[speed]*2+1]->data[card][speed][preset]->fader_pos = ndb; + } else { + data[card][speed][preset]->submix = 0; + } + } else if (preset > 4 && preset < 7) { + data[card][speed][preset]->submix_value = maxdest[speed]-phones-1; + outputs->strips[chnls[speed]-2]->data[card][speed][preset]->fader_pos = ndb; + outputs->strips[chnls[speed]-1]->data[card][speed][preset]->fader_pos = ndb; + } else { + data[card][speed][preset]->submix = 0; } if (preset == 3 || preset == 7) { data[card][speed][preset]->mute = 1; } - if (preset > 4 && preset < 7) { - data[card][speed][preset]->submix_value = (maxdest[speed]-phones-1); - } else { - data[card][speed][preset]->submix = 0; + if (phones) { + outputs->strips[chnls[speed]]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; + outputs->strips[chnls[speed]+1]->data[card][speed][preset]->fader_pos = (preset != 4) ? ndb : 0; } } } @@ -583,6 +625,7 @@ for (int i = 0; i < 8; ++i) { data[j][0][i] = new HDSPMixerPresetData(); data[j][1][i] = new HDSPMixerPresetData(); + data[j][2][i] = new HDSPMixerPresetData(); } } buttons_removed = 0; @@ -832,8 +875,8 @@ void HDSPMixerWindow::resetMixer() { int i, j; - for (i = 0; i < 52 ; ++i) { - for (j = 0; j < 28; ++j) { + for (i = 0; i < (cards[current_card]->playbacks_offset*2) ; ++i) { + for (j = 0; j < (cards[current_card]->playbacks_offset+cards[current_card]->lineouts); ++j) { setGain(i, j, 0); } } @@ -938,14 +981,14 @@ right_val = attenuation_r* vol * pan; muted: - snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]); + snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]); snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]); snd_ctl_elem_value_set_integer(ctl, 2, (int)left_val); if ((err = snd_ctl_elem_write(handle, ctl)) < 0) { fprintf(stderr, "Alsa error: %s\n", snd_strerror(err)); return; } - snd_ctl_elem_value_set_integer(ctl, 0, src*26+cards[current_card]->channel_map[idx-1]); + snd_ctl_elem_value_set_integer(ctl, 0, src*cards[current_card]->playbacks_offset+cards[current_card]->channel_map[idx-1]); snd_ctl_elem_value_set_integer(ctl, 1, cards[current_card]->dest_map[dst]+1); snd_ctl_elem_value_set_integer(ctl, 2, (int)right_val); if ((err = snd_ctl_elem_write(handle, ctl)) < 0) { Index: mappings.h =================================================================== RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/mappings.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mappings.h 3 Nov 2003 19:10:39 -0000 1.2 +++ mappings.h 24 Nov 2003 14:48:21 -0000 1.3 @@ -82,10 +82,6 @@ }; static char channel_map_h9632_ds[12] = { - 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15 -}; - -static char meter_map_h9632_ds[12] = { 0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15 }; ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog