]> git.alsa-project.org Git - alsa-tools.git/commitdiff
- fixed H9632 problem.
authorTakashi Iwai <tiwai@suse.de>
Mon, 24 Nov 2003 14:48:21 +0000 (14:48 +0000)
committerTakashi Iwai <tiwai@suse.de>
Mon, 24 Nov 2003 14:48:21 +0000 (14:48 +0000)
- added desktop file and icon
  new options --with-desktop-dir and --with-pixmap-dir.
- fixed CXXFLAGS for soundbase option.
- fixed compile warnings.

14 files changed:
hdspmixer/Makefile.am
hdspmixer/NEWS
hdspmixer/configure.in
hdspmixer/hdspmixer.desktop [new file with mode: 0644]
hdspmixer/pixmaps/Makefile.am
hdspmixer/pixmaps/hdspmixer.png [new file with mode: 0644]
hdspmixer/src/HDSPMixerCard.cxx
hdspmixer/src/HDSPMixerCard.h
hdspmixer/src/HDSPMixerOutput.cxx
hdspmixer/src/HDSPMixerOutput.h
hdspmixer/src/HDSPMixerSelector.cxx
hdspmixer/src/HDSPMixerSelector.h
hdspmixer/src/HDSPMixerWindow.cxx
hdspmixer/src/mappings.h

index 142c27833a21dcc65e59c204f933dfad400d9662..b0f4f66b56a08aef1cf874514759eb8768f91ac8 100644 (file)
@@ -1,5 +1,9 @@
+EXTRA_DIST = hdspmixer.desktop
 SUBDIRS = src pixmaps
 
+desktopdir = $(DESKTOP_DIR)
+desktop_DATA = hdspmixer.desktop
+
 alsa-dist: distdir
        @rm -rf ../distdir/hdspmixer
        @mkdir -p ../distdir/hdspmixer
index 6c83de2d02b4d21821cd479ee4a654fffe76cee6..7c7197f1b306e04144af24c20f1690a0be88ceba 100644 (file)
@@ -1,3 +1,8 @@
+Version 1.5 (21/11/2003):
+    * Added a .desktop file
+    * H9632 bug fixes (thanks to Pentti Ala-Vannesluoma)
+    * Fixes presets handling for H9632 cards
+    
 Version 1.4 (01/11/2003):
     * Adds support for H9632 cards
 
index 92898de2eadd63dc30cc2288f6ddec8f1fe42598..243dc041e6ed2671b0e7c84952905b46aaf53724 100644 (file)
@@ -1,12 +1,12 @@
 AC_INIT(src/hdspmixer.cxx)
-AM_INIT_AUTOMAKE(hdspmixer, 1.4)
+AM_INIT_AUTOMAKE(hdspmixer, 1.5)
 
 AC_PROG_CXX
 AC_PROG_MAKE_SET
 AC_STDC_HEADERS
 AC_PATH_X
 
-AM_PATH_ALSA(0.9.0)
+AM_PATH_ALSA(1.0.0)
 
 dnl kernel header files
 AC_MSG_CHECKING(for kernel header files)
@@ -32,7 +32,7 @@ AC_ARG_WITH(soundbase,
   [soundbasedir="$withval"], [soundbasedir="$kerneldir"])
 if test "$soundbasedir" != "" -a -r "$soundbasedir/sound" ; then
   ALSA_CFLAGS="$ALSA_CFLAGS -I$soundbasedir"
-  CFLAGS="$CFLAGS -I$soundbasedir"
+  CXXFLAGS="$CXXFLAGS -I$soundbasedir"
   AC_MSG_RESULT($ALSA_CFLAGS)
 else
   if test "x$prefix" != xNONE; then
@@ -42,13 +42,33 @@ else
   fi
   if test -z "$soundbasedir" -a -r "$aprefix/include/sound"; then
     ALSA_CFLAGS="$ALSA_CFLAGS -I$aprefix/include"
-    CFLAGS="$CFLAGS -I$aprefix/include"
+    CXXFLAGS="$CXXFLAGS -I$aprefix/include"
     AC_MSG_RESULT($ALSA_CFLAGS)
   else
     AC_MSG_RESULT("not specified - using C compiler defaults")
   fi
 fi
 
+dnl desktop install
+AC_ARG_WITH(desktop-dir,
+  [ --with-desktop-dir  specify the path to install desktop file],
+  [desktopdir="$withval"], [desktopdir=""])
+if test -z "$desktopdir"; then
+  desktopdir=$datadir/applications
+fi
+DESKTOP_DIR="$desktopdir"
+AC_SUBST(DESKTOP_DIR)
+       
+AC_ARG_WITH(pixmap-dir,
+  [ --with-pixmap-dir  specify the path to install desktop pixmap file],
+  [pixmapdir="$withval"], [pixmapdir=""])
+if test -z "$pixmapdir"; then
+  pixmapdir=$datadir/pixmaps
+fi
+PIXMAP_DIR="$pixmapdir"
+AC_SUBST(PIXMAP_DIR)
+
+dnl library check
 AC_PATH_PROG(FLTK_CONFIG, fltk-config, no)
 if test "$FLTK_CONFIG" = "no"; then
     AC_MSG_ERROR(fltk-config is required)
diff --git a/hdspmixer/hdspmixer.desktop b/hdspmixer/hdspmixer.desktop
new file mode 100644 (file)
index 0000000..eb5615e
--- /dev/null
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=HDSPMixer
+Comment=Hammerfall DSP matrix mixer control GUI
+Exec=hdspmixer
+FilePattern=hdspmixer
+Icon=hdspmixer.png
+Terminal=false
+Type=Application
+Categories=Application;AudioVideo;
index 7278f3b57ce8069aeb0af591ae53d1aedc7cf7d3..c81fc957d764255cc5ae7cdde0f1dfc19f36401b 100644 (file)
@@ -1 +1,4 @@
-EXTRA_DIST = $(wildcard *.xpm)
+pixmapdir = $(PIXMAP_DIR)
+pixmap_DATA = hdspmixer.png
+
+EXTRA_DIST = $(wildcard *.xpm) hdspmixer.png
diff --git a/hdspmixer/pixmaps/hdspmixer.png b/hdspmixer/pixmaps/hdspmixer.png
new file mode 100644 (file)
index 0000000..3c8b18f
Binary files /dev/null and b/hdspmixer/pixmaps/hdspmixer.png differ
index 7f0c19f35a6a57d14b7e860c6d9b7eb33d76c266..0e7e8b5a744c26fa1c217857f1b39178318f00d1 100644 (file)
@@ -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 @@ int HDSPMixerCard::getAutosyncSpeed()
     } else if (external_rate <= 2) {
        return 0;
     }
+    return 0;
 }
 
 int HDSPMixerCard::getSpeed()
@@ -168,7 +170,12 @@ HDSPMixerCard::HDSPMixerCard(HDSP_IO_Type cardtype, int id)
     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 @@ void HDSPMixerCard::getAeb() {
        snd_hwdep_close(hw);
        return; 
     }
+    snd_hwdep_close(hw);
 }
 
 void HDSPMixerCard::adjustSettings() {
@@ -255,32 +263,30 @@ void HDSPMixerCard::adjustSettings() {
            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 @@ void HDSPMixerCard::actualizeStrips()
            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 ece22958f153eb81f1fef9e2503b7192ea3f2d46..4e7df468ab6234bb67a2b8544ae5572fe288b1bb 100644 (file)
@@ -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 @@ public:
     char *dest_map;
     char *meter_map;
     int speed_mode;
+    int playbacks_offset;
     void setMode(int mode);
     int initializeCard(HDSPMixerWindow *w);
     int getSpeed();
index 9af0333ea486caefb92aaf6e8c8f22e8e0e2d08a..5a792014c76b078dbcb70ffbb8c2320d79aeff76 100644 (file)
@@ -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 dcd821e40268e7d9f506beb02e63de03f71b3005..2767e06063b1390e5986f16beb7fcf68f38f8bfb 100644 (file)
@@ -41,6 +41,7 @@ class HDSPMixerMeter;
 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_ds[12] = {
 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 4fe37985738a27ae1c7be0f454aa75efef7e8df1..166c5574dfa5a92237a2550698895922029217ce 100644 (file)
@@ -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 @@ void HDSPMixerSelector::setLabels()
     } 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 e7ae551fb99f80ef7e82c906a28bd20b87509e84..2a81b0dbbae1e756ee1921d5b4cb000177ce476e 100644 (file)
@@ -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_ds[6] = {
 static char *destinations_h9632_qs[4] = {
     "SPDIF", "AN 1+2", "AN 3+4", "AN 5+6"    
 };
+#endif
 
 class HDSPMixerSelector:public Fl_Menu_
 {
index f6d6ed6c34bf825a5479a87c392b10c037067839..52a4cc68fab9eac5e7f25cd6d61aa11d5ea7a41d 100644 (file)
@@ -246,7 +246,7 @@ static int handler_cb(int event)
                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 @@ static int handler_cb(int event)
                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 @@ void HDSPMixerWindow::save()
     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 @@ void HDSPMixerWindow::load()
     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 @@ load_error:
 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 @@ void HDSPMixerWindow::restoreDefaults(int card)
        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 @@ void HDSPMixerWindow::restoreDefaults(int card)
                    }
                }
            }
-           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 @@ HDSPMixerWindow::HDSPMixerWindow(int x, int y, int w, int h, const char *label,
        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::refreshMixerStrip(int idx, int src)
 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 @@ void HDSPMixerWindow::setMixer(int idx, int src, int dst)
        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 51ab1f698f4629c53ec7a8ae7a82c2eddba3143b..9589a22c7a9b0e29a986fe87e5366a70bed945e8 100644 (file)
@@ -82,10 +82,6 @@ static char channel_map_h9632_ss[16] = {
 };
 
 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
 };