Re: DSP2000 Midi In - Not a correct fix??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 29 January 2008 23:22, Alan Horstmann wrote:
> However, things have moved on here, in that I do now have a proposed
> alternative.  One step on from the above approach is to call this function
> only if
> 	ICE1712_STDSP24_BOX_MIDI1
> is set for that particular box, rather than setting the parameter
> 'activate'. This approach does create a complete and effective solution,
> which I have tested here, being able (using the boxconfigs) to set channels
> and Midi In on any box designated 0-3, and Midi out 1 & 2 are active for
> all boxes once set on any.
>
> Soon I will put this together into a patch for review, so that there is at
> least something definite to discuss.

I have now generated this patch, together with a fair amount of testing 
various configurations, and it is attached.

The original MIDI-IN non-functioning is caused because when
	snd_ice1712_stdsp24_box_midi(..)
is called with the 3rd parameter 'activate' set to 0, it messes up any 
previously midi-configured boxes.  Thus the zero configs of [1],[2],[3] in 
the standard code un-set the active midi config of [0] since they happen 
afterwards.  This patch ensures the function is only called to activate a 
config and not to set it off.  As a result configs can be set for any of [0] 
to [3] successfully.

The various bits are clearly not operating as would be expected.  If _MIDI2 is 
not set, midi out2 still functions, but midi in1 (on first 401 uart) does 
not.  However, no other box can use this , as only one can be the midi 
source. And, _MIDI1 actually enables input on the second 401 uart.  Therfore 
there really is no value in the separate _MIDI2 config and function.  It 
would be more logical to combine in a single midi config function (it was 
like this in Alsa 1.0.1, but changed sometime later).

I have included some explanitary text in the code patch which attempts to give 
some idea of the config issues.

However, without extensive re-working (which it seems no-one has an appetite 
for), this patch fixes the problem without reducing functionality in the way 
that January's applied patch does.  The box can be set-up as any of [0] to 
[3].  It might be worth re-opening the 3 related bugs and seeing if the 
others involved can confirm this patch, as I cannot now add it to them as an 
alternative.

In addition, name strings are included for the mpu_401 devices so they have 
unique names.

Regards  Alan

AHhoontech.c-midiIn-boxes.diff

Fixes the problems with Midi In on Hoontech/STA dsp24 cards, for example with 
DSP2000 box, without restricting the box configurations available.  Also adds 
mpu_401 name strings.

Signed-off-by: Alan Horstmann <gineera@xxxxxxxxxxxxxxx>




--- alsa-kernel/pci/ice1712/hoontech.c.orig	2008-01-29 08:31:46.000000000 +0000
+++ alsa-kernel/pci/ice1712/hoontech.c	2008-02-05 21:22:42.000000000 +0000
@@ -208,6 +208,19 @@
 			    /* ICE1712_STDSP24_MUTE |
 			       ICE1712_STDSP24_INSEL |
 			       ICE1712_STDSP24_DAREAR; */
+	/*  These boxconfigs have caused problems in the past.
+	 *  The code is not optimal, but should now enable a working config to
+	 *  be achieved.
+	 *  ** MIDI IN can only be configured on one box **
+	 *  ICE1712_STDSP24_BOX_MIDI1 needs to be set for that box.
+	 *  Tests on a ADAC2000 box suggest the box config flags do not
+	 *  work as would be expected, and the inputs are crossed.
+	 *  Setting ICE1712_STDSP24_BOX_MIDI1 and ICE1712_STDSP24_BOX_MIDI2
+	 *  on the same box connects MIDI-In to both 401 uarts; both outputs
+	 *  are then active on all boxes.
+	 *  The default config here sets up everything on the first box.
+	 *  Alan Horstmann  5.2.2008
+	 */
 	spec->boxconfig[0] = ICE1712_STDSP24_BOX_CHN1 |
 				     ICE1712_STDSP24_BOX_CHN2 |
 				     ICE1712_STDSP24_BOX_CHN3 |
@@ -223,14 +236,14 @@
 		(spec->config & ICE1712_STDSP24_MUTE) ? 1 : 0);
 	snd_ice1712_stdsp24_insel(ice,
 		(spec->config & ICE1712_STDSP24_INSEL) ? 1 : 0);
-	for (box = 0; box < 1; box++) {
+	for (box = 0; box < 4; box++) {
 		if (spec->boxconfig[box] & ICE1712_STDSP24_BOX_MIDI2)
                         snd_ice1712_stdsp24_midi2(ice, 1);
 		for (chn = 0; chn < 4; chn++)
 			snd_ice1712_stdsp24_box_channel(ice, box, chn,
 				(spec->boxconfig[box] & (1 << chn)) ? 1 : 0);
-		snd_ice1712_stdsp24_box_midi(ice, box,
-				(spec->boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1) ? 1 : 0);
+		if (spec->boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1)
+			snd_ice1712_stdsp24_box_midi(ice, box, 1);
 	}
 
 	return 0;
@@ -322,6 +335,8 @@
 		.name = "Hoontech SoundTrack Audio DSP24",
 		.model = "dsp24",
 		.chip_init = snd_ice1712_hoontech_init,
+		.mpu401_1_name = "MIDI-1 Hoontech/STA DSP24",
+		.mpu401_2_name = "MIDI-2 Hoontech/STA DSP24",
 	},
 	{
 		.subvendor = ICE1712_SUBDEVICE_STDSP24_VALUE,	/* a dummy id */
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux