Jump to content
IGNORED

Digitized Sound on Aquarius


Recommended Posts

I can tell you one thing that won't work. I tried to use a noise reduction filter by taking the noise from the output of the 1,0,1,0,1,0,1,0 and using a noise reduction filter on the input sound before I processed it. What I got was a sample that sounded underwater, when I ran that through the converter, I got a sample that sounded underwater with noise!

 

Ha!

Link to comment
Share on other sites

Interesting asymmetry there on your triangle wave. When the signal's decreasing, there's that bit of thrashing right after the triangle goes below 0. I wonder if there's a problem in the SDM computation? I'm going to try a triangle right now and see for myself in my own sdm code...

Ok, so I put my own SDM to the test and constructed this striking picture:

triangle.png

 

So at least my code's doing OK. (The blue/black in the background indicate whether the SDM output is 0 or 1, and the white is the triangle wave I fed it.) Here's the C program:

 

#include < stdio.h >
#include < stdlib.h >

#define NSAMP (128)
#define OSAMP (

short           i_data[NSAMP];
unsigned char   o_data[NSAMP*OSAMP];

int main()
{
   int i, y, x;
   FILE *f;

   for (i = 0; i < NSAMP/2; i++)
   {
       i_data[i          ] = -32767 + 65534*i / (NSAMP/2-1);
       i_data[i + NSAMP/2] = 65536 - i_data[i];
   }

   sdm(i_data, o_data, NSAMP, OSAMP, 32767);


   f = fopen("foo.ppm", "wb");

   fprintf(f, "P6\n%d 512 255\n", NSAMP * OSAMP);

   for (y = 0; y < 512; y++)
   {
       int hi = 32767 -   y   * (65536/512);
       int lo = 32767 - (y+1) * (65536/512);

       for (x = 0; x < NSAMP * OSAMP; x++)
       {
           i = x / OSAMP;

           if (i_data[i] <= hi && i_data[i] >= lo)
           {
               fputs("\377\377\377", f);
           } else if (o_data[x])
           {
               fputs("\070\070\377", f);
           } else
           {
               fputs("\001\001\001", f);
           }
       }
   }

   fclose(f);

   return 0;
}

It wrote the image you see above as a PPM file -- nothing terribly crazy. You might want to check the output of your SDM converter directly just to make sure it looks nice and clean like this on both halves of the triangle.

 

Edit: The AA comment software really doesn't like things in angle brackets even if they're in a code block. Annoying.

Edited by intvnut
Link to comment
Share on other sites

This looks bogus:

           audio(j)=audio(j)+4000*rnd-2000

 

Since you declare 'audio' as short, what's to stop the random noise you're injecting from overflowing the 16-bit range?

 

I'd try taking the dithering out altogether. SDMs naturally dither. Have you tried it without your stochastic dither now that we've cleaned up the bit-banging loop?

Link to comment
Share on other sites

This looks bogus:

audio(j)=audio(j)+4000*rnd-2000

 

Since you declare 'audio' as short, what's to stop the random noise you're injecting from overflowing the 16-bit range?

 

I'd try taking the dithering out altogether. SDMs naturally dither. Have you tried it without your stochastic dither now that we've cleaned up the bit-banging loop?

 

Good Catch, the dither has been turned off for a while so that we can hear what the converter itself is doing. I can always add dither back to mask the "swish/swish" noise left over, but you are right that I would have to clip check if I were doing that.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...