On Wed, 8 Jan 2003, Gerard Janssen wrote:
> Hi,
>
> By making slight changes in emufx.c, I could use all four spdif stereo
> channels of the sblive! that are present on the audio-ext connector. These
> spdif0..3 outputs can be accessed via: EXTOUT_TOSLINK_L,R ;
> EXTOUT_HEADPHONE_L,R ; EXTOUT_REAR_L,R and EXTOUT_CENTER,LFE. By re-routing
> "spdif", "front", "rear" and "center_lfe" to the respective outputs, four
> stereo signals (8 channels) can be simultaneously send to these outputs.
>
> The "front", "rear" and "center_lfe" signals are alsmost perfectly
> synchronized (within a few samples) and the small delays are constant.
> However, the signal via "spdif" is not: its delay w.r.t. the other signals
> is about 60 samples and changes randomly every time the application is
> started.
> The "spdif" signal is taken from GPR(8) and GPR(9) in emufx.c. As far as I
> could backtrace these signals come from etram, which probably is the cause
> of the random delay.
>
> A solution might be to put the "spdif" also directly in two FXBUS registers
> (there are still 6 free FXBUS registers), as is done with the other
> signals. However, I don't know how to do this.
>
> I would appreciate any help or suggestions in routing "spdif" to an FXBUS.
These steps are necessary:
1) remove the emufx PCM code (or the last two lines):
/* 22: */ OP(icode, &ptr, iMACINT1, ETRAM_ADDR(ipcm->etram[0]), GPR(gpr + 8),
GPR_DBAC, C_ffffffff);
/* 23: */ OP(icode, &ptr, iMACINT1, ETRAM_ADDR(ipcm->etram[1]), GPR(gpr + 9),
GPR_DBAC, C_ffffffff);
you can do it without modification of driver code itself (see
SNDRV_EMU10K1_IOCTL_CODE_POKE and SNDRV_EMU10K1_IOCTL_CODE_PEEK ioctls)
2) replace these two lines in emufx:
OP(icode, &ptr, iMACINT0, GPR(6), C_00000000, FXBUS(FXBUS_PCM_CENTER),
C_00000004);
OP(icode, &ptr, iMACINT0, GPR(7), C_00000000, FXBUS(FXBUS_PCM_LFE),
C_00000004);
to
OP(icode, &ptr, iMACINT0, GPR(6), C_00000000, FXBUS(8), C_00000004);
OP(icode, &ptr, iMACINT0, GPR(7), C_00000000, FXBUS(9), C_00000004);
3) create a new "chn67" pcm in your .asoundrc:
pcm.chn67 {
@args [ CARD ]
@args.CARD {
type string
}
type hooks
slave.pcm {
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
hook_args [
{
name "EMU10K1 PCM Send Volume"
index { @func private_pcm_subdevice }
lock true
value [ 0 0 0 0 255 0 0 0 0 255 0 0 ]
}
{
name "EMU10K1 PCM Send Routing"
index { @func private_pcm_subdevice }
lock true
value [ 0 1 2 3 8 9 0 1 8 9 0 1 ]
}
}
}
Note: Send Routing is fxbus setup
Jaroslav
-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel