Update of /cvsroot/alsa/alsa-tools/hdspmixer/src
In directory sc8-pr-cvs1:/tmp/cvs-serv8357/hdspmixer/src
Modified Files:
HDSPMixerAbout.cxx HDSPMixerAbout.h HDSPMixerAboutText.cxx
HDSPMixerCard.cxx HDSPMixerCard.h HDSPMixerIOMixer.cxx
HDSPMixerIOMixer.h HDSPMixerInputs.cxx HDSPMixerInputs.h
HDSPMixerMeter.cxx HDSPMixerOutput.cxx HDSPMixerOutput.h
HDSPMixerOutputs.cxx HDSPMixerOutputs.h HDSPMixerPlaybacks.cxx
HDSPMixerPlaybacks.h HDSPMixerPresets.cxx
HDSPMixerSelector.cxx HDSPMixerSelector.h HDSPMixerWindow.cxx
HDSPMixerWindow.h hdspmixer.cxx mappings.h pixmaps.cxx
pixmaps.h
Log Message:
Thomas Charbonnel <[EMAIL PROTECTED]>:
updated to version 1.4.
Index: HDSPMixerAbout.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerAbout.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerAbout.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerAbout.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -25,8 +25,17 @@
HDSPMixerAbout::HDSPMixerAbout(int w, int h, char *label, HDSPMixerWindow
*win):Fl_Double_Window(w, h, label)
{
basew = win;
- text = new HDSPMixerAboutText(0,0,w,h);
+ text = new HDSPMixerAboutText(10,10,w-20,h-20);
end();
set_modal();
}
+int HDSPMixerAbout::handle(int e) {
+ switch (e) {
+ case FL_PUSH:
+ hide();
+ return 1;
+ default:
+ return Fl_Window::handle(e);
+ }
+}
Index: HDSPMixerAbout.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerAbout.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerAbout.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerAbout.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -37,6 +37,7 @@
HDSPMixerWindow *basew;
public:
HDSPMixerAbout(int w, int h, char *label, HDSPMixerWindow *w);
+ int handle(int e);
};
#endif
Index: HDSPMixerAboutText.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerAboutText.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerAboutText.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerAboutText.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -23,7 +23,7 @@
HDSPMixerAboutText::HDSPMixerAboutText(int x, int y, int w, int h):Fl_Widget(x, y, w,
h, "About Text")
{
- text = "HDSPMixer (C) 2003 Thomas Charbonnel <thomas@@undata.org>\n\n"
+ text = "HDSPMixer " VERSION " (C) 2003 Thomas Charbonnel
<thomas@@undata.org>\n\n"
"Bitmaps by Ralf Brunner\n"
"Many thanks to Martin Bj�rnsen, Matthias Carstens and Paul Davis\n\n"
"This Program is free software; you can redistribute it and/or modify\n"
Index: HDSPMixerCard.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerCard.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerCard.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerCard.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -57,12 +57,14 @@
clock_value = snd_ctl_elem_value_get_enumerated(elemval, 0);
if (clock_value == 0) {
int new_speed = card->getAutosyncSpeed();
- if (new_speed >= 0 && new_speed != card->double_speed)
card->setMode(new_speed);
+ if (new_speed >= 0 && new_speed != card->speed_mode)
card->setMode(new_speed);
}
- if (clock_value > 3 && !card->double_speed) {
+ if (clock_value > 3 && clock_value < 7 && card->speed_mode != 1) {
card->setMode(1);
- } else if (clock_value < 4 && card->double_speed) {
+ } else if (clock_value < 4 && card->speed_mode != 0) {
card->setMode(0);
+ } else if (clock_value > 6 && card->speed_mode != 2) {
+ card->setMode(2);
}
}
snd_ctl_event_clear(event);
@@ -103,7 +105,9 @@
if (external_rate > 2 && external_rate < 6) {
return 1;
- } else if (external_rate < 2) {
+ } else if (external_rate > 6) {
+ return 2;
+ } else if (external_rate <= 2) {
return 0;
}
}
@@ -143,9 +147,13 @@
case 4:
case 5:
case 6:
- /* SR > 48000 kHz - double speed */
+ /* SR > 48000 Hz - double speed */
return 1;
- break;
+ case 7:
+ case 8:
+ case 9:
+ /* SR > 96000 Hz - quad speed */
+ return 2;
default:
/* Should never happen */
return 0;
@@ -158,8 +166,11 @@
type = cardtype;
card_id = id;
snprintf(name, 6, "hw:%i", card_id);
- double_speed = getSpeed();
- if (double_speed < 0) {
+ h9632_aeb.aebi = 0;
+ h9632_aeb.aebo = 0;
+ if (type == H9632) getAeb();
+ speed_mode = getSpeed();
+ if (speed_mode < 0) {
fprintf(stderr, "Error trying to determine speed mode for card %s,
exiting.\n", name);
exit(EXIT_FAILURE);
}
@@ -170,53 +181,117 @@
basew = NULL;
}
+void HDSPMixerCard::getAeb() {
+ int err, i;
+ snd_hwdep_t *hw;
+ snd_hwdep_info_t *info;
+ snd_hwdep_info_alloca(&info);
+ if ((err = snd_hwdep_open(&hw, name, SND_HWDEP_OPEN_DUPLEX)) != 0) {
+ fprintf(stderr, "Error opening hwdep device on card %s.\n", name);
+ return;
+ }
+ if ((err = snd_hwdep_ioctl(hw, SNDRV_HDSP_IOCTL_GET_9632_AEB, &h9632_aeb)) < 0) {
+ fprintf(stderr, "Hwdep ioctl error on card %s : %s.\n", name,
snd_strerror(err));
+ snd_hwdep_close(hw);
+ return;
+ }
+}
void HDSPMixerCard::adjustSettings() {
- if (type == Multiface && !double_speed) {
- channels = 18;
- channel_map = channel_map_mf_ss;
- dest_map = dest_map_mf_ss;
- meter_map = channel_map_mf_ss;
- lineouts = 2;
- } else if (type == Multiface && double_speed) {
- channels = 14;
- /* FIXME : this is a workaround because the driver is wrong */
- channel_map = meter_map_ds;
- dest_map = dest_map_ds;
- meter_map = meter_map_ds;
- lineouts = 2;
- } else if (type == Digiface && !double_speed) {
- channels = 26;
- channel_map = channel_map_df_ss;
- dest_map = dest_map_df_ss;
- meter_map = channel_map_df_ss;
- lineouts = 2;
- } else if (type == Digiface && double_speed) {
- channels = 14;
- channel_map = channel_map_ds;
- dest_map = dest_map_ds;
- meter_map = meter_map_ds;
- lineouts = 2;
- } else if (type == H9652 && !double_speed) {
- channels = 26;
- channel_map = channel_map_df_ss;
- dest_map = dest_map_h9652_ss;
- meter_map = channel_map_df_ss;
- lineouts = 0;
- } else if (type == H9652 && double_speed) {
- channels = 14;
- channel_map = channel_map_ds;
- dest_map = dest_map_h9652_ds;
- meter_map = meter_map_ds;
- lineouts = 0;
- }
+ if (type == Multiface) {
+ switch (speed_mode) {
+ case 0:
+ channels = 18;
+ channel_map = channel_map_mf_ss;
+ dest_map = dest_map_mf_ss;
+ meter_map = channel_map_mf_ss;
+ lineouts = 2;
+ break;
+ case 1:
+ channels = 14;
+ channel_map = meter_map_ds;
+ dest_map = dest_map_ds;
+ meter_map = meter_map_ds;
+ lineouts = 2;
+ break;
+ case 2:
+ /* should never happen */
+ break;
+ }
+ } else if (type == Digiface) {
+ switch (speed_mode) {
+ case 0:
+ channels = 26;
+ channel_map = channel_map_df_ss;
+ dest_map = dest_map_df_ss;
+ meter_map = channel_map_df_ss;
+ lineouts = 2;
+ break;
+ case 1:
+ channels = 14;
+ channel_map = channel_map_ds;
+ dest_map = dest_map_ds;
+ meter_map = meter_map_ds;
+ lineouts = 2;
+ break;
+ case 2:
+ /* should never happen */
+ break;
+ }
+ } else if (type == H9652) {
+ switch (speed_mode) {
+ case 0:
+ channels = 26;
+ channel_map = channel_map_df_ss;
+ dest_map = dest_map_h9652_ss;
+ meter_map = channel_map_df_ss;
+ lineouts = 0;
+ break;
+ case 1:
+ channels = 14;
+ channel_map = channel_map_ds;
+ dest_map = dest_map_h9652_ds;
+ meter_map = meter_map_ds;
+ lineouts = 0;
+ break;
+ case 2:
+ 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;
+ 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;
+ channel_map = channel_map_h9632_ds;
+ dest_map = dest_map_h9632_ds;
+ meter_map = meter_map_h9632_ds;
+ lineouts = 0;
+ break;
+ case 2:
+ 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;
+ lineouts = 0;
+ break;
+ }
+ }
window_width = (channels+2)*STRIP_WIDTH;
window_height = FULLSTRIP_HEIGHT*2+SMALLSTRIP_HEIGHT+MENU_HEIGHT;
}
void HDSPMixerCard::setMode(int mode)
{
- double_speed = mode;
+ speed_mode = mode;
adjustSettings();
actualizeStrips();
@@ -228,7 +303,15 @@
for (int i = channels; i < channels+lineouts; ++i) {
basew->outputs->strips[i]->setLabels();
}
-
+ if (h9632_aeb.aebo && !h9632_aeb.aebi) {
+ basew->inputs->empty_aebi[0]->position(STRIP_WIDTH*(channels-4),
basew->inputs->empty_aebi[0]->y());
+ basew->inputs->empty_aebi[1]->position(STRIP_WIDTH*(channels-2),
basew->inputs->empty_aebi[1]->y());
+ } else if (h9632_aeb.aebi && !h9632_aeb.aebo) {
+ basew->playbacks->empty_aebo[0]->position(STRIP_WIDTH*(channels-4),
basew->playbacks->empty_aebo[0]->y());
+ basew->playbacks->empty_aebo[1]->position(STRIP_WIDTH*(channels-2),
basew->playbacks->empty_aebo[1]->y());
+ basew->outputs->empty_aebo[0]->position(STRIP_WIDTH*(channels-4),
basew->outputs->empty_aebo[0]->y());
+ basew->outputs->empty_aebo[1]->position(STRIP_WIDTH*(channels-2),
basew->outputs->empty_aebo[1]->y());
+ }
basew->inputs->buttons->position(STRIP_WIDTH*channels,
basew->inputs->buttons->y());
basew->inputs->init_sizes();
basew->playbacks->empty->position(STRIP_WIDTH*channels,
basew->playbacks->empty->y());
@@ -260,10 +343,33 @@
basew->outputs->strips[i]->hide();
}
}
- for (int i = channels; i < channels+lineouts; ++i) {
- basew->outputs->strips[i]->show();
+ for (int i = channels; i < channels+2; ++i) {
+ if (i < channels+lineouts) {
+ basew->outputs->strips[i]->show();
+ } else {
+ basew->outputs->strips[i]->hide();
+ }
+ }
+ if (h9632_aeb.aebi && !h9632_aeb.aebo) {
+ for (int i = 0; i < 2; ++i) {
+ basew->inputs->empty_aebi[i]->hide();
+ basew->playbacks->empty_aebo[i]->show();
+ basew->outputs->empty_aebo[i]->show();
+ }
+ } 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();
+ }
+ } else {
+ for (int i = 0; i < 2; ++i) {
+ basew->inputs->empty_aebi[i]->hide();
+ basew->playbacks->empty_aebo[i]->hide();
+ basew->outputs->empty_aebo[i]->hide();
+ }
}
- if (type != H9652) basew->outputs->empty->hide();
+ if (type != H9652 && type != H9632) basew->outputs->empty->hide();
}
int HDSPMixerCard::initializeCard(HDSPMixerWindow *w)
Index: HDSPMixerCard.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerCard.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerCard.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerCard.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -46,13 +46,15 @@
char *channel_map;
char *dest_map;
char *meter_map;
- int double_speed;
+ int speed_mode;
void setMode(int mode);
int initializeCard(HDSPMixerWindow *w);
int getSpeed();
int getAutosyncSpeed();
void actualizeStrips();
void adjustSettings();
+ void getAeb();
+ hdsp_9632_aeb_t h9632_aeb;
};
#endif
Index: HDSPMixerIOMixer.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerIOMixer.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerIOMixer.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerIOMixer.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -32,13 +32,16 @@
channel_num = ch;
if (channel_num%2) {
relative_num = channel_num+1;
+ p_iomixer_xpm = iomixer_xpm;
} else {
relative_num = channel_num-1;
+ p_iomixer_xpm = iomixer_r_xpm;
}
for (int j = 0; j < 3; ++j) {
for (int i = 0; i < 8; ++i) {
data[j][0][i] = new HDSPMixerStripData();
data[j][1][i] = new HDSPMixerStripData();
+ data[j][2][i] = new HDSPMixerStripData();
}
}
mutesolo = new HDSPMixerMuteSolo(x+3, y+3, 0, 0, channel_num, type);
@@ -59,7 +62,7 @@
void HDSPMixerIOMixer::draw_background(int xpos, int ypos, int w, int h)
{
fl_push_clip(xpos, ypos, w, h);
- fl_draw_pixmap(iomixer_xpm, x(), y());
+ fl_draw_pixmap(p_iomixer_xpm, x(), y());
fl_pop_clip();
}
Index: HDSPMixerIOMixer.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerIOMixer.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerIOMixer.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerIOMixer.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -50,11 +50,12 @@
class HDSPMixerIOMixer:public Fl_Group
{
private:
+ char **p_iomixer_xpm;
int channel_num, relative_num, mixer_type;
char channel_name[6];
void update_child(Fl_Widget &widget);
public:
- HDSPMixerStripData *data[3][2][8]; /* data[card][mode(ds/ss)][preset number] */
+ HDSPMixerStripData *data[3][3][8]; /* data[card][mode(ss/ds/qs)][preset number] */
HDSPMixerPan *pan;
HDSPMixerFader *fader;
HDSPMixerPeak *peak;
Index: HDSPMixerInputs.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerInputs.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerInputs.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerInputs.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -39,6 +39,8 @@
strips[i]->gain->relative = strips[i+1]->gain;
strips[i+1]->gain->relative = strips[i]->gain;
}
+ empty_aebi[0] = new HDSPMixerEmpty((nchans-6)*STRIP_WIDTH, y, STRIP_WIDTH*2,
FULLSTRIP_HEIGHT, 0);
+ empty_aebi[1] = new HDSPMixerEmpty((nchans-4)*STRIP_WIDTH, y, STRIP_WIDTH*2,
FULLSTRIP_HEIGHT, 0);
buttons = new HDSPMixerButtons(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH,
FULLSTRIP_HEIGHT);
end();
resizable(NULL);
Index: HDSPMixerInputs.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerInputs.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerInputs.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerInputs.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -25,9 +25,11 @@
#include <FL/Fl_Group.H>
#include "HDSPMixerIOMixer.h"
#include "HDSPMixerButtons.h"
+#include "HDSPMixerEmpty.h"
class HDSPMixerButtons;
class HDSPMixerIOMixer;
+class HDSPMixerEmpty;
class HDSPMixerInputs:public Fl_Group
{
@@ -35,6 +37,7 @@
HDSPMixerButtons *buttons;
HDSPMixerIOMixer *strips[26];
HDSPMixerInputs(int x, int y, int w, int h, int nchannels);
+ HDSPMixerEmpty *empty_aebi[2];
};
#endif
Index: HDSPMixerMeter.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerMeter.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerMeter.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerMeter.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -32,6 +32,9 @@
fast_peak_level = 1000.0;
slow_peak_level = 1000.0;
max_level = 1000.0;
+ /* this is no more as simple :
+ H9652 cards do have both peak and rms data for outputs
+ */
peak_rms = not_output;
}
@@ -58,7 +61,7 @@
}
rms_height = new_rms_height;
- if ((new_peak_height != peak_height || !fine_draw) && peak_rms) {
+ if ((new_peak_height != peak_height || !fine_draw) && (peak_rms ||
basew->cards[basew->current_card]->type == H9652)) {
if ((rms_height <= (peak_height - PEAK_HEIGHT)) || rms_height == 0) {
fl_push_clip(x(), y()+(METER_HEIGHT - peak_height), w(), PEAK_HEIGHT+1);
if (peak_rms) {
@@ -162,7 +165,7 @@
fr /= ((double)(1125899638407184.0)*(double)(8191.0));
fr = sqrt(fr);
- if (!peak_rms) {
+ if (!peak_rms && (basew->cards[basew->current_card]->type != H9652)) {
new_rms_height = new_peak_height;
} else {
fr = -20 * log10(fr);
@@ -175,7 +178,7 @@
}
- if (new_rms_height != rms_height || (new_peak_height != peak_height && peak_rms))
{
+ if (new_rms_height != rms_height || (new_peak_height != peak_height && (peak_rms
|| basew->cards[basew->current_card]->type == H9652))) {
/* FIXME: may not be SMP safe */
redraw();
}
Index: HDSPMixerOutput.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutput.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerOutput.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerOutput.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -28,8 +28,14 @@
for (int i = 0; i < 8; ++i) {
data[j][0][i] = new HDSPMixerOutputData();
data[j][1][i] = new HDSPMixerOutputData();
+ data[j][2][i] = new HDSPMixerOutputData();
}
}
+ if (num%2) {
+ p_output_xpm = output_r_xpm;
+ } else {
+ p_output_xpm = output_xpm;
+ }
basew = (HDSPMixerWindow *)window();
setLabels();
out_num = num;
@@ -43,15 +49,29 @@
void HDSPMixerOutput::setLabels()
{
HDSP_IO_Type type = basew->cards[basew->current_card]->type;
- int ds = basew->cards[basew->current_card]->double_speed;
- if (type == Multiface && !ds) {
- labels = labels_mf_ss;
- } else if (type == Multiface && ds) {
- labels = labels_mf_ds;
- } else if (!ds) {
- labels = labels_df_ss;
- } else if (ds) {
- labels = labels_df_ds;
+ int sm = basew->cards[basew->current_card]->speed_mode;
+ if (type == H9632) {
+ switch (sm) {
+ case 0:
+ labels = labels_9632_ss;
+ break;
+ case 1:
+ labels = labels_9632_ds;
+ break;
+ case 2:
+ labels = labels_9632_qs;
+ break;
+ }
+ } else if (type == Multiface) {
+ if (sm)
+ labels = labels_mf_ds;
+ else
+ labels = labels_mf_ss;
+ } else {
+ if (sm)
+ labels = labels_df_ds;
+ else
+ labels = labels_df_ss;
}
}
@@ -63,7 +83,7 @@
void HDSPMixerOutput::draw_background(int xpos, int ypos, int w, int h)
{
fl_push_clip(xpos, ypos, w, h);
- fl_draw_pixmap(output_xpm, x(), y());
+ fl_draw_pixmap(p_output_xpm, x(), y());
fl_pop_clip();
}
Index: HDSPMixerOutput.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutput.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerOutput.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerOutput.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -67,16 +67,31 @@
"SP.L", "SP.R", "AN.L", "AN.R"
};
+static char *labels_9632_ss[16] = {
+ "A 1", "A 2", "A 3", "A 4", "A 5", "A 6", "A 7", "A 8",
+ "SP.L", "SP.R", "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6"
+};
+
+static char *labels_9632_ds[12] = {
+ "A 1", "A 2", "A 3", "A 4",
+ "SP.L", "SP.R", "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6"
+};
+
+static char *labels_9632_qs[8] = {
+ "SP.L", "SP.R", "AN 1", "AN 2", "AN 3", "AN 4", "AN 5", "AN 6"
+};
+
class HDSPMixerOutput:public Fl_Group
{
private:
int out_num;
char **labels;
+ char **p_output_xpm;
HDSPMixerPeak *peak;
HDSPMixerWindow *basew;
void update_child(Fl_Widget& widget);
public:
- HDSPMixerOutputData *data[3][2][8]; /* data[card][mode(ds/ss)][preset number] */
+ HDSPMixerOutputData *data[3][3][8]; /* data[card][mode(ss/ds/qs)][preset number]
*/
HDSPMixerFader *fader;
HDSPMixerGain *gain;
HDSPMixerMeter *meter;
Index: HDSPMixerOutputs.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutputs.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerOutputs.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerOutputs.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -32,7 +32,10 @@
strips[i+1]->fader->relative = strips[i]->fader;
strips[i]->fader->gain = strips[i]->gain;
strips[i+1]->fader->gain = strips[i+1]->gain;
+
}
+ empty_aebo[0] = new HDSPMixerEmpty((nchans-6)*STRIP_WIDTH, y, 2*STRIP_WIDTH,
SMALLSTRIP_HEIGHT, 0);
+ empty_aebo[1] = new HDSPMixerEmpty((nchans-4)*STRIP_WIDTH, y, 2*STRIP_WIDTH,
SMALLSTRIP_HEIGHT, 0);
empty = new HDSPMixerEmpty(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH,
SMALLSTRIP_HEIGHT, 0);
end();
resizable(NULL);
Index: HDSPMixerOutputs.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerOutputs.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerOutputs.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerOutputs.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -33,6 +33,7 @@
class HDSPMixerOutputs:public Fl_Group
{
public:
+ HDSPMixerEmpty *empty_aebo[2];
HDSPMixerEmpty *empty;
HDSPMixerOutput *strips[28];
HDSPMixerOutputs(int x, int y, int w, int h, int nchannels);
Index: HDSPMixerPlaybacks.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerPlaybacks.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerPlaybacks.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerPlaybacks.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -39,6 +39,8 @@
strips[i]->gain->relative = strips[i+1]->gain;
strips[i+1]->gain->relative = strips[i]->gain;
}
+ empty_aebo[0] = new HDSPMixerEmpty((nchans-6)*STRIP_WIDTH, y, 2*STRIP_WIDTH,
FULLSTRIP_HEIGHT, 0);
+ empty_aebo[1] = new HDSPMixerEmpty((nchans-4)*STRIP_WIDTH, y, 2*STRIP_WIDTH,
FULLSTRIP_HEIGHT, 0);
empty = new HDSPMixerEmpty(nchans*STRIP_WIDTH, y, 2*STRIP_WIDTH,
FULLSTRIP_HEIGHT, 1);
end();
resizable(NULL);
Index: HDSPMixerPlaybacks.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerPlaybacks.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerPlaybacks.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerPlaybacks.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -32,6 +32,7 @@
class HDSPMixerPlaybacks:public Fl_Group
{
public:
+ HDSPMixerEmpty *empty_aebo[2];
HDSPMixerEmpty *empty;
HDSPMixerIOMixer *strips[26];
HDSPMixerPlaybacks(int x, int y, int w, int h, int nchannels);
Index: HDSPMixerPresets.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerPresets.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerPresets.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerPresets.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -122,7 +122,7 @@
}
void HDSPMixerPresets::save_preset(int prst) {
- int speed = basew->cards[basew->current_card]->double_speed;
+ int speed = basew->cards[basew->current_card]->speed_mode;
int card = basew->current_card;
int p = prst-1;
basew->dirty = 0;
@@ -164,7 +164,7 @@
}
void HDSPMixerPresets::restore_preset(int prst) {
- int speed = basew->cards[basew->current_card]->double_speed;
+ int speed = basew->cards[basew->current_card]->speed_mode;
int card = basew->current_card;
int p = prst-1;
basew->dirty = 0;
Index: HDSPMixerSelector.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerSelector.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerSelector.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerSelector.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -91,29 +91,71 @@
void HDSPMixerSelector::setLabels()
{
HDSP_IO_Type type;
- int ds;
+ hdsp_9632_aeb_t *aeb;
+ int sm;
clear();
type = basew->cards[basew->current_card]->type;
- ds = basew->cards[basew->current_card]->double_speed;
- if (type == Multiface && !ds) {
- max_dest = 10;
- destinations = destinations_mf_ss;
- } else if (type == Multiface && ds) {
- max_dest = 8;
- destinations = destinations_mf_ds;
- } else if (type == Digiface && !ds) {
- max_dest = 14;
- destinations = destinations_df_ss;
- } else if (type == Digiface && ds) {
- max_dest = 8;
- destinations = destinations_df_ds;
- } else if (type == H9652 && !ds) {
- max_dest = 13;
- destinations = destinations_h9652_ss;
- } else if (type == H9652 && ds) {
- max_dest = 7;
- destinations = destinations_h9652_ds;
+ aeb = &basew->cards[basew->current_card]->h9632_aeb;
+ sm = basew->cards[basew->current_card]->speed_mode;
+ if (type == Multiface) {
+ switch (sm) {
+ case 0:
+ max_dest = 10;
+ destinations = destinations_mf_ss;
+ break;
+ case 1:
+ max_dest = 8;
+ destinations = destinations_mf_ds;
+ break;
+ case 2:
+ /* should never happen */
+ break;
+ }
+ } else if (type == Digiface) {
+ switch (sm) {
+ case 0:
+ max_dest = 14;
+ destinations = destinations_df_ss;
+ break;
+ case 1:
+ max_dest = 8;
+ destinations = destinations_df_ds;
+ break;
+ case 2:
+ /* should never happen */
+ break;
+ }
+ } else if (type == H9652) {
+ switch (sm) {
+ case 0:
+ max_dest = 13;
+ destinations = destinations_h9652_ss;
+ break;
+ case 1:
+ max_dest = 7;
+ destinations = destinations_h9652_ds;
+ break;
+ case 2:
+ /* should never happen */
+ break;
+ }
+ } else if (type == H9632) {
+ switch (sm) {
+ case 0:
+ max_dest = 6 + (aeb->aebo) ? 2 : 0;
+ destinations = destinations_h9632_ss;
+ break;
+ case 1:
+ max_dest = 4 + (aeb->aebo) ? 2 : 0;
+ destinations = destinations_h9632_ds;
+ break;
+ case 2:
+ max_dest = 2 + (aeb->aebo) ? 2 : 0;
+ destinations = destinations_h9632_qs;
+ break;
+ }
}
+
for (int i = 0; i < max_dest; ++i) {
add(destinations[i], 0, 0, 0, FL_MENU_TOGGLE);
}
Index: HDSPMixerSelector.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerSelector.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerSelector.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerSelector.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -75,6 +75,20 @@
"SPDIF"
};
+static char *destinations_h9632_ss[8] = {
+ "A 1+2", "A 3+4", "A 5+6", "A 7+8",
+ "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6"
+};
+
+static char *destinations_h9632_ds[6] = {
+ "A 1+2", "A 3+4",
+ "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6"
+};
+
+static char *destinations_h9632_qs[4] = {
+ "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6"
+};
+
class HDSPMixerSelector:public Fl_Menu_
{
private:
Index: HDSPMixerWindow.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerWindow.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerWindow.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerWindow.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -20,14 +20,6 @@
#pragma implementation
#include "HDSPMixerWindow.h"
-
-inline int64 swap_rms(int64 *rms)
-{
- unsigned int *base = (unsigned int *)rms;
- int64 ret = *base;
- ret = (ret<<32) | *(base+1);
- return ret;
-}
static void readregisters_cb(void *arg)
{
@@ -59,27 +51,35 @@
for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
w->inputs->strips[i]->meter->update(peak_rms.input_peaks[(w->cards[w->current_card]->meter_map[i])]
& 0xffffff00,
peak_rms.input_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
-
swap_rms(&peak_rms.input_rms[(w->cards[w->current_card]->meter_map[i])]) );
+
peak_rms.input_rms[(w->cards[w->current_card]->meter_map[i])]);
}
}
if (w->inputs->buttons->playback) {
for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
w->playbacks->strips[i]->meter->update(peak_rms.playback_peaks[(w->cards[w->current_card]->meter_map[i])]
& 0xffffff00,
peak_rms.playback_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
-
swap_rms(&peak_rms.playback_rms[(w->cards[w->current_card]->meter_map[i])]) );
+
peak_rms.playback_rms[(w->cards[w->current_card]->meter_map[i])]);
}
}
if (w->inputs->buttons->output) {
- for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
-
w->outputs->strips[i]->meter->update(peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])]
& 0xffffff00,
-
peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
- 0 );
- }
- for (int i = 0; i < w->cards[w->current_card]->lineouts; ++i) {
-
w->outputs->strips[w->cards[w->current_card]->channels+i]->meter->update(peak_rms.output_peaks[26+i]
& 0xffffff00,
-
peak_rms.output_peaks[26+i] & 0xf,
- 0
);
- }
+ if (w->cards[w->current_card]->type != H9652) {
+ for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
+
w->outputs->strips[i]->meter->update(peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])]
& 0xffffff00,
+
peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
+ 0 );
+ }
+ for (int i = 0; i < w->cards[w->current_card]->lineouts; ++i) {
+
w->outputs->strips[w->cards[w->current_card]->channels+i]->meter->update(peak_rms.output_peaks[26+i]
& 0xffffff00,
+
peak_rms.output_peaks[26+i] & 0xf,
+
0 );
+ }
+ } else {
+ for (int i = 0; i < w->cards[w->current_card]->channels; ++i) {
+
w->outputs->strips[i]->meter->update(peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])]
& 0xffffff00,
+
peak_rms.output_peaks[(w->cards[w->current_card]->meter_map[i])] & 0xf,
+
peak_rms.output_rms[(w->cards[w->current_card]->meter_map[i])] );
+ }
+ }
}
Fl::add_timeout(0.03, readregisters_cb, w);
@@ -614,7 +614,7 @@
scroll->end();
end();
setup = new HDSPMixerSetup(400, 260, "Level Meters Setup", this);
- about = new HDSPMixerAbout(340, 230, "About HDSPMixer", this);
+ about = new HDSPMixerAbout(360, 260, "About HDSPMixer", this);
i = 0;
while (cards[i] != NULL) {
cards[i++]->initializeCard(this);
@@ -689,7 +689,7 @@
void HDSPMixerWindow::checkState()
{
- int speed = cards[current_card]->double_speed;
+ int speed = cards[current_card]->speed_mode;
int p = inputs->buttons->presets->preset-1;
int corrupt = 0;
/* Mixer strips */
Index: HDSPMixerWindow.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/HDSPMixerWindow.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HDSPMixerWindow.h 28 Jul 2003 11:32:32 -0000 1.1
+++ HDSPMixerWindow.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -70,7 +70,7 @@
Fl_Scroll *scroll;
HDSPMixerSetup *setup;
HDSPMixerAbout *about;
- HDSPMixerPresetData *data[3][2][8]; /* data[card number][mode(ds/ss)][preset
number] */
+ HDSPMixerPresetData *data[3][3][8]; /* data[card number][mode(ss/ds/qs)][preset
number] */
HDSPMixerCard *cards[3];
HDSPMixerInputs *inputs;
HDSPMixerPlaybacks *playbacks;
Index: hdspmixer.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/hdspmixer.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- hdspmixer.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ hdspmixer.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -49,7 +49,6 @@
if (card < 0) {
break;
} else {
-
snd_card_get_longname(card, &name);
printf("Card %d : %s\n", card, name);
if (!strncmp(name, "RME Hammerfall DSP + Multiface", 30)) {
@@ -64,6 +63,12 @@
printf("HDSP 9652 found !\n");
hdsp_cards[cards] = new HDSPMixerCard(H9652, card);
cards++;
+ } else if (!strncmp(name, "RME Hammerfall HDSP 9632", 24)) {
+ printf("HDSP 9632 found !\n");
+ hdsp_cards[cards] = new HDSPMixerCard(H9632, card);
+ cards++;
+ } else if (!strncmp(name, "RME Hammerfall DSP", 18)) {
+ printf("Uninitialized HDSP card found.\nUse hdsploader to upload
configuration data to the card.\n");
}
}
}
Index: mappings.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/mappings.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mappings.h 28 Jul 2003 11:32:32 -0000 1.1
+++ mappings.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -65,5 +65,33 @@
0, 2, 8, 10, 16, 18, 24
};
+static char dest_map_h9632_ss[8] = {
+ 0, 2, 4, 6, 8, 10, 12, 14
+};
+
+static char dest_map_h9632_ds[6] = {
+ 0, 2, 8, 10, 12, 14
+};
+
+static char dest_map_h9632_qs[4] = {
+ 8, 10, 12, 14
+};
+
+static char channel_map_h9632_ss[16] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+};
+
+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
+};
+
+static char channel_map_h9632_qs[8] = {
+ 8, 9, 10, 11, 12, 13, 14, 15
+};
+
#endif
Index: pixmaps.cxx
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/pixmaps.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- pixmaps.cxx 28 Jul 2003 11:32:32 -0000 1.1
+++ pixmaps.cxx 3 Nov 2003 19:10:39 -0000 1.2
@@ -42,10 +42,18 @@
#include "../pixmaps/empty_linux.xpm"
#include "../pixmaps/iomixer.xpm"
#include "../pixmaps/level.xpm"
-#include "../pixmaps/monitor.xpm"
#include "../pixmaps/mute.xpm"
#include "../pixmaps/output.xpm"
#include "../pixmaps/over.xpm"
#include "../pixmaps/peak.xpm"
#include "../pixmaps/solo.xpm"
-
+#include "../pixmaps/iomixer_r.xpm"
+#include "../pixmaps/output_r.xpm"
+#include "../pixmaps/matrix_black.xpm"
+#include "../pixmaps/matrix_white.xpm"
+#include "../pixmaps/matrix_yellow.xpm"
+#include "../pixmaps/matrix_mute.xpm"
+#include "../pixmaps/matrix_grey.xpm"
+#include "../pixmaps/matrix_grey_o.xpm"
+#include "../pixmaps/matrix_grey_l.xpm"
+#include "../pixmaps/matrix_grey_ol.xpm"
Index: pixmaps.h
===================================================================
RCS file: /cvsroot/alsa/alsa-tools/hdspmixer/src/pixmaps.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- pixmaps.h 28 Jul 2003 11:32:32 -0000 1.1
+++ pixmaps.h 3 Nov 2003 19:10:39 -0000 1.2
@@ -49,6 +49,16 @@
extern char * over_xpm[];
extern char * peak_xpm[];
extern char * solo_xpm[];
+extern char * iomixer_r_xpm[];
+extern char * output_r_xpm[];
+extern char * matrix_white_xpm[];
+extern char * matrix_black_xpm[];
+extern char * matrix_yellow_xpm[];
+extern char * matrix_mute_xpm[];
+extern char * matrix_grey_xpm[];
+extern char * matrix_grey_l_xpm[];
+extern char * matrix_grey_ol_xpm[];
+extern char * matrix_grey_o_xpm[];
#endif
-------------------------------------------------------
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