Hello.

Joлl Bourquard wrote:
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.

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.
--- src/arch/linux/dosext/sound/linux_sound.c   Sat Jul  5 23:14:10 2003
+++ src/arch/linux/dosext/sound/linux_sound.c   Sun Oct  5 02:43:44 2003
@@ -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");

Reply via email to