Jump to content
IGNORED

question about Bill Williams' audio


Avram

Recommended Posts

I've been recommending Atari games to a friend and I started reminiscing about Bill William's games (if you've not seen his work, Alley Cat and Necromancer are unbelievably good. There's also this great article: Stanley Kubrick Is Gone - Electron Dance). My question is this - did Bill Williams use digitized sound in Salmon Run and Alley Cat? Or was it just excellent use of POKEY?

Edited by Avram
changed a hyphen to a colon
Link to comment
Share on other sites

Avram, I have put together this site

 

https://sites.google.com/site/billwilliamsatarisounds/

 

It's an online version of Bill William's "Atari Sounds" column, as published by Softside magazine.

 

I think it's worth reading in order to understand how Bill created those amazing sounds.

 

Regards,

Luis.

  • Like 6
  • Thanks 1
Link to comment
Share on other sites

5 hours ago, lbaeza said:

Avram, I have put together this site

 

https://sites.google.com/site/billwilliamsatarisounds/

 

It's an online version of Bill William's "Atari Sounds" column, as published by Softside magazine.

 

I think it's worth reading in order to understand how Bill created those amazing sounds.

 

Regards,

Luis.

I did not know anyone was discussing (using) PWM back in 1982.  Impressive stuff.

  • Like 1
Link to comment
Share on other sites

Whoa.... that last article had some serious typos and the formatting was completely out of whack. Here's a cleaned up version that at least compiles (in good old 68000 here: https://tinyurl.com/y6mlvbt6):

 

/*Music In C
by Bill Williams
If the name of this file is CMUS.C,
your linking file (CMUS.LNK)
should look like this:

cmus
aio
graphics
dbc.obj
*/
#define PARMS 12
#define RAND 0xD20A
#define TRUE 1
#define SKCTL 0xD20F
#define SSKCTL 0x232
#define AUDCTL 0x0208

char d[PARMS]; /* dice */
char f[PARMS]; /* pinking filters */
char fn[10];   /* freq/note table */
char vol[4];   /* volume counts */
char note[4];  /* voice’s note */

main()
{
    int i, voice, tempo, x, y;
    /* Initialize Pokey for sound */
    poke(SSKCTL, 3);
    poke(SKCTL, 3);
    poke(AUDCTL, 0);
    /* Initialize pink numbers */
    for (i = 0; i <= PARMS; ++ i) {
        d[i] = peek(RAND);
        f[i] = peek(RAND);
    }
    /* Set up note table.
    Current candidate notes
    make up a two-octave pentatonic
    scale.
    */
    strcpy(fn, "!%*29DLUfr");
    for(voice = 0; voice < 4; ++ voice)
        note[voice] = fn[rnd(10)];
    /* Set up graphics */
    graphics(24);
    color(1);
    setcolor(1, 8, 0);
    setcolor(2, 8, 12);
    /* Play Music */
    while (TRUE) {
        for (voice = 0; voice < 4; ++ voice)
            play(voice);
        for (tempo = voss(9, 6); tempo > 0; -- tempo);
        if (!rnd(8)) {
            plot(x = voss(10, 2), y = voss(11, 3));
            drawto(191, peek(RAND)&0xC0);
            drawto(319-(x / 2), y);
        }
    }
}
play(v)
char v; /* voice index */
{
    /* if volume is not 0, play voice
    and decrement volume. Otherwise,
    pick a new starting volume and a new note.
    */
    if (vol[v])
        sound(v, note[v], 10, vol[v]--);
    else {
        vol[v] = 3 + voss(v, 31);
        note[v] = fn[voss(v + 4.28)];
    }
}
/* Voss' 1/f noise algorithm */
voss(p,r)
char p; /* parameter number */
char r; /* range (divisor) */
{
    return((d[p]  = (peek(RAND)& + + f[p])) / r);
}

Not sure about that strcpy() being correct, but the only way to ensure that it is correct is to check against the original article.

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

5 hours ago, DjayBee said:

Your code looks right.

 

This screenshot was taken from https://archive.org/details/Softline_Magazine_Issue_3.2:

grafik.png.217aab3b90a20eb9132aed084da6c74e.png

Cool, thanks for checking.

 

[EDIT] Just realised after looking at the article (which I didn't do beforehand because I didn't know where to look) that the source actually has $( and $) instead of { and }. After a quick search I found that the former notation was used in BCPL (https://sigkill.dk/writings/braces.html). So in the above post you can simply search for { and replace with $(  (and $) with }) to get closer to the original listing. TIL!

Edited by ggn
Link to comment
Share on other sites

Always loved Bill Williams - the water and the kiss in Salmon Run impressed me, but the cat and dog sounds in Alley Cat were over the top.  I assumed the grunting people noise was a digitized sound, but the other stuff seemed to be generated...not sure.  Cool nonetheless, he's a legend to me!!

 

  • Like 1
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...