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