[alsa-devel] es18xx: Enable wavetable input from ESS chips
Takashi Iwai
tiwai at suse.de
Mon Jan 7 12:28:12 CET 2008
At Wed, 26 Dec 2007 23:48:37 +0100,
Krzysztof Helt wrote:
>
> From: Krzysztof Helt <krzysztof.h1 at wp.pl>
>
> This patch enables wavetable chips ES689/ES69X connected to
> ESS ES18xx chips. The wavetable chip uses FM DAC if the clock signal
> from the wavetable is active.
> It has no effect if there is no ESS wavetable chip present.
>
> Signed-off-by: Krzysztof Helt <krzysztof.h1 at wp.pl>
Applied to HG tree now. Thanks.
> ---
>
> This patch has a gotcha. In theory, the OPL synthesis or wavetable input should
> use FM DAC depending on the active clock signal from the wavetable chip.
> Unfortunately, the default state of the wavetable chip from ESS (ES689/ES690/ES692)
> is to send clock signal all the time. This blocks OPL3 signal if the wavetable chip is
> present.
>
> This problem can be solved with sysex command 4 send to the wavetable chip.
> It sets the wavetable chip to auto-deactivate mode which switches the wavetable off
> if there are 5 seconds without midi input (according to the es1879 datasheet).
>
> I tested this patch on the es1868 chip without the wavetable. The OPL3 synthesis
> worked (no clock signal from the wavetable).
>
> I tested it on the card with es1868 chip and es690 wavetable. The OPL3 synthesis
> did not work, the wavetable worked. Both the OPL3 and wavetable worked if the
> sysex command 4 was sent to the wavetable chip (e.g. by amidi tool).
>
> Is it ok to add this sysex command sending to the driver? How?
> The wavetable clock signal can be detected (there is status bit which says if wavetable is
> active).
You can use snd_rawmidi_kernel_*() functions for opening/sending data
from the kernel code. See core/seq/seq_midi.c for example.
But, I personally don't think it worth to add this to the driver.
This could be done far easier on user-space (a simple cat), and it's
the matter of setup script. Though...
> Another question is about ES938 chip (bass, treble and 3D control) on the card.
> This chip is controlled by sysex midi commands. It can be detected (by reading
> settings with sysex commands). Is it possible to add this to the alsamixer or external tool
> for setting these controls is recommended?
Oh what a design... In this case, the driver implementation sounds
better indeed. So, if both features are to be implemented,
snd_rawmidi_kernel_*() would be worth.
Takashi
More information about the Alsa-devel
mailing list