hdspmixer: Improve code coherency

Move channelmappings into one place (channelmap.h). Also, use "aes32"
when referring to the card itself to avoid confusion and to be coherent
with the remaining naming scheme.

This work has mainly been done by Fredrik Lingvall.

Signed-off-by: Fredrik Lingvall <fredrik.lingvall@gmail.com>
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Adrian Knoth 2011-02-24 21:33:26 +01:00 committed by Takashi Iwai
parent 0201fd1778
commit 9ea2fb1f88
8 changed files with 250 additions and 264 deletions

View file

@ -3,6 +3,9 @@
*
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
*
* Copyright (C) 2011 Adrian Knoth (adi@drcomp.erfurt.thur.de)
* Fredrik Lingvall (fredrik.lingvall@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@ -23,7 +26,10 @@
HDSPMixerAboutText::HDSPMixerAboutText(int x, int y, int w, int h):Fl_Widget(x, y, w, h, "About Text")
{
text = "HDSPMixer " VERSION " (C) 2003 Thomas Charbonnel <thomas@@undata.org>\n (C) 2009 Florian Faber <faber@@faberman.de>\n (C) 2011 Adrian Knoth <adi@@drcomp.erfurt.thur.de>\n\n"
text = "HDSPMixer " VERSION " (C) 2003 Thomas Charbonnel <thomas@@undata.org>\n"
"(C) 2009 Florian Faber <faber@@faberman.de>\n"
"(C) 2011 Adrian Knoth <adi@@drcomp.erfurt.thur.de>\n"
"(C) 2011 Fredrik lingvall <fredrik.lingvall@@gmail.com>\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"

View file

@ -3,6 +3,9 @@
*
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
*
* Copyright (C) 2011 Adrian Knoth (adi@drcomp.erfurt.thur.de)
* Fredrik Lingvall (fredrik.lingvall@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@ -21,144 +24,6 @@
#pragma implementation
#include "HDSPMixerCard.h"
static char channel_map_df_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25
};
static char channel_map_mf_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1
};
static char meter_map_ds[26] = {
0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char channel_map_ds[26] = {
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char dest_map_madi_ss[32] = {
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46,
48, 50, 52, 54, 56, 58, 60, 62
};
static char channel_map_aes[16] = {
0, 1, 2, 3, 4, 5, 6, 7,
9, 10, 11, 12, 13, 14, 15
};
static char dest_map_aes[8] = {
0, 2, 4, 6, 8, 10, 12, 14
};
static char dest_map_raydat_ss[18] = {
4, 6, 8, 10,
12, 14, 16, 18,
20, 22, 24, 26,
28, 30, 32, 34,
0, 2
};
static char dest_map_raydat_ds[10] = {
4, 6,
8, 10,
12, 14,
16, 18,
0, 2
};
static char dest_map_raydat_qs[6] = {
4,
6,
8,
10,
0, 2
};
static char dest_map_aio_ss[8] = {
0, // Analogue
8, // AES
10, // SPDIF
12, 14, 16, 18, // ADAT
6 // Phones
};
static char dest_map_aio_ds[6] = {
0, // Analogue
8, // AES
10, // SPDIF
12, 16, // ADAT
6 // Phones
};
static char dest_map_aio_qs[5] = {
0, // Analogue
8, // AES
10, // SPDIF
12, // ADAT
6 // Phone
};
static char dest_map_mf_ss[10] = {
0, 2, 4, 6, 16, 18, 20, 22, 24, 26
};
static char dest_map_ds[8] = {
0, 2, 8, 10, 16, 18, 24, 26
};
static char dest_map_df_ss[14] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26
};
static char dest_map_h9652_ss[13] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24
};
static char dest_map_h9652_ds[7] = {
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] = {
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
};
static void alsactl_cb(snd_async_handler_t *handler)
{
int err, clock_value;
@ -426,19 +291,19 @@ void HDSPMixerCard::adjustSettings() {
case 0: // SS
channels_input = channels_playback = 64;
channel_map_input = channel_map_playback = channel_map_unity_ss;
dest_map = dest_map_madi_ss;
dest_map = dest_map_unity;
meter_map_input = meter_map_playback = channel_map_unity_ss;
break;
case 1: // DS
channels_input = channels_playback = 32;
channel_map_input = channel_map_playback = channel_map_unity_ss;
dest_map = dest_map_madi_ss;
dest_map = dest_map_unity;
meter_map_input = meter_map_playback = channel_map_unity_ss;
break;
case 2: // QS
channels_input = channels_playback = 16;
channel_map_input = channel_map_playback = channel_map_unity_ss;
dest_map = dest_map_madi_ss;
dest_map = dest_map_unity;
meter_map_input = meter_map_playback = channel_map_unity_ss;
break;
}
@ -467,7 +332,7 @@ void HDSPMixerCard::adjustSettings() {
break;
case 2: // QS
channels_input = 8;
channels_playback =10;
channels_playback = 10;
channel_map_input = channel_map_aio_in_qs;
channel_map_playback = channel_map_aio_out_qs;
dest_map = dest_map_aio_qs;
@ -477,16 +342,16 @@ void HDSPMixerCard::adjustSettings() {
}
} else if (HDSP_AES == type) {
playbacks_offset = 64; /* FL not sure about this one? */
playbacks_offset = 64; /* not sure about this one? */
/* 16 channels for all modes */
channels_input = 16;
channels_playback = 16;
channel_map_input = channel_map_aes;
channel_map_playback = channel_map_aes;
dest_map = dest_map_aes;
meter_map_input = channel_map_aes;
meter_map_playback = channel_map_aes;
channel_map_input = channel_map_aes32;
channel_map_playback = channel_map_aes32;
dest_map = dest_map_aes32;
meter_map_input = channel_map_aes32;
meter_map_playback = channel_map_aes32;
} else if (HDSPeRayDAT == type) {
playbacks_offset = 64;
@ -508,7 +373,7 @@ void HDSPMixerCard::adjustSettings() {
break;
case 2: // QS
channels_input = 12;
channels_playback =12;
channels_playback = 12;
channel_map_input = channel_map_playback = channel_map_raydat_qs;
dest_map = dest_map_raydat_qs;
meter_map_input = meter_map_playback = channel_map_raydat_qs;

View file

@ -45,7 +45,7 @@ static char *labels_madi_qs[16] = {
};
static char *labels_aes[16] = {
static char *labels_aes32[16] = {
"AES 1", "AES 2", "AES 3", "AES 4", "AES 5", "AES 6", "AES 7", "AES 8",
"AES 9", "AES 10", "AES 11", "AES 12", "AES 13", "AES 14", "AES 15", "AES 16"
};
@ -232,7 +232,7 @@ void HDSPMixerOutput::setLabels()
break;
}
} else if (HDSP_AES == type) {
labels_input = labels_playback = labels_aes;
labels_input = labels_playback = labels_aes32;
} else if (HDSPeAIO == type) {
switch (sm) {
case 0:

View file

@ -3,6 +3,9 @@
*
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
*
* Copyright (C) 2011 Adrian Knoth (adi@drcomp.erfurt.thur.de)
* Fredrik Lingvall (fredrik.lingvall@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@ -44,7 +47,7 @@ static char *destinations_madi_qs[8] = {
"9+10", "11+12", "13+14", "15+16"
};
static char *destinations_aes[8] = {
static char *destinations_aes32[8] = {
"AES 1+2", "AES 3+4", "AES 5+6", "AES 7+8",
"AES 9+10", "AES 11+12", "AES 13+14", "AES 15+16",
};
@ -304,7 +307,7 @@ void HDSPMixerSelector::setLabels()
}
} else if (HDSP_AES == type) {
max_dest = 8;
destinations = destinations_aes;
destinations = destinations_aes32;
} else if (HDSPeAIO == type) {
switch (sm) {
case 0:

View file

@ -1,6 +1,132 @@
/*
* HDSPMixer
*
* Copyright (C) 2011 Adrian Knoth (adi@drcomp.erfurt.thur.de)
* Fredrik Lingvall (fredrik.lingvall@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*
*/
#ifndef channelmap_H
#define channelmap_H
/***
*
* hdsp cards
*
***/
// Digiface
static char dest_map_df_ss[14] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26
};
static char channel_map_df_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7, /* ADAT 1 */
8, 9, 10, 11, 12, 13, 14, 15, /* ADAT 2 */
16, 17, 18, 19, 20, 21, 22, 23, /* ADAT 3 */
24, 25 /* SPDIF */
};
// Multiface
static char dest_map_mf_ss[10] = {
0, 2, 4, 6, 16, 18, 20, 22, 24, 26
};
static char channel_map_mf_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7, /* Line in */
16, 17, 18, 19, 20, 21, 22, 23, /* ADAT */
24, 25, /* SPDIF */
-1, -1, -1, -1, -1, -1, -1, -1
};
// Digiface/Multiface
static char meter_map_ds[26] = {
0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char channel_map_ds[26] = {
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char dest_map_ds[8] = {
0, 2, 8, 10, 16, 18, 24, 26
};
// HDSP 9652
static char dest_map_h9652_ss[13] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24
};
static char dest_map_h9652_ds[7] = {
0, 2, 8, 10, 16, 18, 24
};
// HDSP 9632
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] = {
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
};
/***
*
* hdspm cards
*
***/
// HDSPe MADI and MADIface
static char dest_map_unity[32] = {
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46,
48, 50, 52, 54, 56, 58, 60, 62
};
static char channel_map_unity_ss[HDSPM_MAX_CHANNELS] = {
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
@ -34,6 +160,32 @@ static char channel_map_unity_qs[HDSPM_MAX_CHANNELS] = {
-1, -1, -1, -1, -1, -1, -1, -1,
};
// HDSPe RayDAT
static char dest_map_raydat_ss[18] = {
4, 6, 8, 10,
12, 14, 16, 18,
20, 22, 24, 26,
28, 30, 32, 34,
0, 2
};
static char dest_map_raydat_ds[10] = {
4, 6,
8, 10,
12, 14,
16, 18,
0, 2
};
static char dest_map_raydat_qs[6] = {
4,
6,
8,
10,
0, 2
};
static char channel_map_raydat_ss[HDSPM_MAX_CHANNELS] = {
4, 5, 6, 7, 8, 9, 10, 11, /* ADAT 1 */
12, 13, 14, 15, 16, 17, 18, 19, /* ADAT 2 */
@ -78,10 +230,37 @@ static char channel_map_raydat_qs[HDSPM_MAX_CHANNELS] = {
-1, -1, -1, -1, -1, -1, -1, -1,
};
// HDSPe AIO
static char dest_map_aio_ss[8] = {
0, // Analogue
8, // AES
10, // SPDIF
12, 14, 16, 18, // ADAT
6 // Phones
};
static char dest_map_aio_ds[6] = {
0, // Analogue
8, // AES
10, // SPDIF
12, 16, // ADAT
6 // Phones
};
static char dest_map_aio_qs[5] = {
0, // Analogue
8, // AES
10, // SPDIF
12, // ADAT
6 // Phone
};
static char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */
8, 9, /* aes in, */
10, 11, /* spdif in */
8, 9, /* AES in, */
10, 11, /* SPDIF in */
12, 13, 14, 15, 16, 17, 18, 19, /* ADAT in */
-1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
@ -94,8 +273,8 @@ static char channel_map_aio_in_ss[HDSPM_MAX_CHANNELS] = {
static char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */
8, 9, /* aes out */
10, 11, /* spdif out */
8, 9, /* AES out */
10, 11, /* SPDIF out */
12, 13, 14, 15, 16, 17, 18, 19, /* ADAT out */
6, 7, /* phone out */
-1, -1, -1, -1, -1, -1, -1, -1,
@ -108,9 +287,9 @@ static char channel_map_aio_out_ss[HDSPM_MAX_CHANNELS] = {
static char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */
8, 9, /* aes in */
10, 11, /* spdif in */
12, 14, 16, 18, /* adat in */
8, 9, /* AES in */
10, 11, /* SPDIF in */
12, 14, 16, 18, /* ADAT in */
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
@ -122,9 +301,9 @@ static char channel_map_aio_in_ds[HDSPM_MAX_CHANNELS] = {
static char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */
8, 9, /* aes out */
10, 11, /* spdif out */
12, 14, 16, 18, /* adat out */
8, 9, /* AES out */
10, 11, /* SPDIF out */
12, 14, 16, 18, /* ADAT out */
6, 7, /* phone out */
-1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
@ -137,9 +316,9 @@ static char channel_map_aio_out_ds[HDSPM_MAX_CHANNELS] = {
static char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = {
0, 1, /* line in */
8, 9, /* aes in */
10, 11, /* spdif in */
12, 16, /* adat in */
8, 9, /* AES in */
10, 11, /* SPDIF in */
12, 16, /* ADAT in */
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
@ -151,9 +330,9 @@ static char channel_map_aio_in_qs[HDSPM_MAX_CHANNELS] = {
static char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = {
0, 1, /* line out */
8, 9, /* aes out */
10, 11, /* spdif out */
12, 16, /* adat out */
8, 9, /* AES out */
10, 11, /* SPDIF out */
12, 16, /* ADAT out */
6, 7, /* phone out */
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
@ -164,4 +343,27 @@ static char channel_map_aio_out_qs[HDSPM_MAX_CHANNELS] = {
-1, -1, -1, -1, -1, -1, -1, -1
};
// HDSP AES32 and HDSPe AES
static char dest_map_aes32[8] = {
0, 2, 4, 6, 8, 10, 12, 14
};
static char channel_map_aes32[HDSPM_MAX_CHANNELS] = {
0, 1, /* AES 1 */
2, 3, /* AES 2 */
4, 5, /* AES 3 */
6, 7, /* AES 4 */
8, 9, /* AES 5 */
10, 11, /* AES 6 */
12, 13, /* AES 7 */
14, 15, /* AES 8 */
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1
};
#endif /* channelmap_H */

View file

@ -27,7 +27,7 @@
#define HDSPeMADI 10
#define HDSPeRayDAT 11
#define HDSPeAIO 12
#define HDSP_AES 13 /* both AES32 and HDSPeAES? */
#define HDSP_AES 13 /* both HDSP AES32 and HDSPe AES */
#define HDSP_MAX_CHANNELS 64
#define HDSP_MAX_DEST 32

View file

@ -3,6 +3,9 @@
*
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
*
* Copyright (C) 2011 Adrian Knoth (adi@drcomp.erfurt.thur.de)
* Fredrik Lingvall (fredrik.lingvall@gmail.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or

View file

@ -1,93 +0,0 @@
/*
* HDSPMixer
*
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef mappings_H
#define mappings_H
static char channel_map_df_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25
};
static char channel_map_mf_ss[26] = {
0, 1, 2, 3, 4, 5, 6, 7,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1
};
static char meter_map_ds[26] = {
0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char channel_map_ds[26] = {
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23,
24, 25,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
};
static char dest_map_mf_ss[10] = {
0, 2, 4, 6, 16, 18, 20, 22, 24, 26
};
static char dest_map_ds[8] = {
0, 2, 8, 10, 16, 18, 24, 26
};
static char dest_map_df_ss[14] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26
};
static char dest_map_h9652_ss[13] = {
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24
};
static char dest_map_h9652_ds[7] = {
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] = {
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