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