Hi, does someone use i810 onboard sound ?
Hello.
Quoted 2 lines · Joлl Bourquard
Ok, I've played with the value of 6000 and tried various possibilities up to 120000, but the sound doesn't improve.
That's too much. 22050 is the maximum reasonable value for that, but in practice you'll in most cases need to lower the freq from 6000, not raise it.
Quoted 3 lines
There is something fishy, it seems. The sound is composed of a lot of little "clicks". When a high sampling value (~60000) is used, it sounds like the clicks become shorter.
Well, after all there might be a bug somewhere. Try the attached patch and see if it helps, then try tuning the value again.
arch/linux/dosext/sound/linux_sound.c +9 -3
@@ -261,6 +261,7 @@static int sound_frag =0x0200007 ;static uint8_t buffer[BUF_LEN ];static size_t buffer_count =0 ; +int result; buffer[buffer_count] = value;if (buffer_count <BUF_LEN -1 )
@@ -274,20 +275,25 @@ {S_printf ("SB:[Linux] Initialising Direct DAC write (%u bits)\n" , bits);if (linux_sb_dma_is_empty () ==DMA_HANDLER_OK ) { - bits_per_samp = bits; + result =0 ;if (ioctl (dsp_fd,SNDCTL_DSP_SAMPLESIZE , &bits)<0 ) {S_printf ("SB:[Linux] Warning: ioctl() (SAMPLESIZE) failed: %s\n" ,strerror (errno)); - bits_per_samp =0 ; + result =-1 ; }if (linux_set_OSS_fragsize (sound_frag) ==DMA_HANDLER_NOT_OK ) {S_printf ("SB:[Linux] Warning: failed to change sound fragment size.\n" ); - bits_per_samp =0 ; + result =-1 ; }linux_sb_set_speed (DIRECT_WRITE_FREQ ,0 ,0 ,0 );/* reset DMA settings */ sample_rate =0 ; num_channels =0 ; oss_block_size =0 ; +if (result ==-1 ) { + bits_per_samp =0 ; +return ; + } + bits_per_samp = bits; }else {S_printf ("SB:[Linux] Sorry, can't change OSS settings now...\n" );
Hi,
Thanks for the patch and the help !
I applied it, made a 'make clean' then tried various values between [100..22050], but unfortunately I heard no improvement from the new compiles.
Here's current status for all sound programs I have:
- Gobliiins (= Goblins 1): distorted
- Ween: distorted
- Stunts: no sound in Soundblaster mode
- Inca: double-speed, perhaps distorted
- dosamp: ok in stereo
About a workaround for the stereo issue, I didn't see it as "post-processing". Perhaps a simple option to prevent opening /dev/dsp in mono could be useful for people with buggy drivers (ie: i810) ?
Best Regards,
Joël
Quoted 48 lines · Stas Sergeev
Hello.
Quoted 2 lines · Joлl Bourquard
Ok, I've played with the value of 6000 and tried various possibilities up to 120000, but the sound doesn't improve.
That's too much. 22050 is the maximum reasonable value for that, but in practice you'll in most cases need to lower the freq from 6000, not raise it.
Quoted 3 lines
There is something fishy, it seems. The sound is composed of a lot of little "clicks". When a high sampling value (~60000) is used, it sounds like the clicks become shorter.
Well, after all there might be a bug somewhere. Try the attached patch and see if it helps, then try tuning the value again.
______________________________________________________________________
arch/linux/dosext/sound/linux_sound.c +4
-3@@ -261,6 +261,7 @@static int sound_frag =0x0200007 ;static uint8_t buffer[BUF_LEN ];static size_t buffer_count =0 ; +int result; buffer[buffer_count] = value;if (buffer_count <BUF_LEN -1 )@@ -274,20 +275,25 @@ {S_printf ("SB:[Linux] Initialising Direct DAC write (%u bits)\n" , bits);if (linux_sb_dma_is_empty () ==DMA_HANDLER_OK ) { - bits_per_samp = bits; + result =0 ;if (ioctl (dsp_fd,SNDCTL_DSP_SAMPLESIZE , &bits)<0 ) {S_printf ("SB:[Linux] Warning: ioctl() (SAMPLESIZE) failed: %s\n" ,strerror (errno)); - bits_per_samp =0 ; + result =-1 ; }if (linux_set_OSS_fragsize (sound_frag) ==DMA_HANDLER_NOT_OK ) {S_printf ("SB:[Linux] Warning: failed to change sound fragment size.\n" ); - bits_per_samp =0 ; + result =-1 ; }linux_sb_set_speed (DIRECT_WRITE_FREQ ,0 ,0 ,0 );/* reset DMA settings */ sample_rate =0 ;
arch/linux/dosext/sound/linux_sound.c line 299
Quoted 10 lines
arch/linux/dosext/sound/linux_sound.c +5
-0num_channels =0 ; oss_block_size =0 ; +if (result ==-1 ) { + bits_per_samp =0 ; +return ; + } + bits_per_samp = bits; }else {S_printf ("SB:[Linux] Sorry, can't change OSS settings now...\n" );
-
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html