[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.


More information about the Alsa-devel mailing list