Music / Sound
References- POKEY chip description retrieved from page maintained by Michael D. Current
- Some text excerpts taken from the book Best of Antic Volume 1 (article Some Sound Advice)
POKEY sound chip description
Four voices of 8-bit pitch-resolution, 4-bit volume-resolution, 8-distortion sound can be produced. 2 voices (1 and 2, and/or 3 and 4) can be combined to make 16-bit pitch-resolution. Also 4-bit volume-only modes can be enabled for digitally sampled sound replay.
A fifth "voice" is produced by the internal speaker on Atari 400/800's (for keyclick and buzzer) and in the XL's and XE's this was (fortunately!) rerouted through the normal audio output, and the keyclick can be disabled.
POKEY (means "POT and KEY" as in the paddles and keyboard) is a digital input/output (I/O) chip. It handles such disparate tasks as the serial I/O bus, audio generation, keyboard scan, and random number generation. It also digitizes the resistive paddle inputs and controls maskable interrupt (IRQ) requests from peripherals.
All four of these LSI chips function simultaneously. Careful separation of their functions in the design phase has minimized conflicts between the chips. The only hardware level conflict between any two chips in the system occurs when ANTIC needs to use the address and data buses to fetch its display information. To do this, it halts the 6502 and takes control of the buses."
The USPTO granted U.S. Patent 4,314,236 to Atari on February 2, 1982 for an "Apparatus for producing a plurality of audio sound effects" - POKEY. Inventors listed: Steven T. Mayer, Ronald E. Milner
|53760 ($D200)||AUDF1||Audio channel one frequency|
|53761 ($D201)||AUDC1||Audio channel one control. Each AUDF register has an associated control register which sets volume and distortion levels.|
|53762 ($D202)||AUDF2||Audio channel two frequency. Also used with AUDF3 to store the 19200 baud rate for SIO.|
|53763 ($D203)||AUDC2||Audio channel two control.|
|53764 ($D204)||AUDF3||Audio channel three frequency. Used with AUDF3 above and with AUDF4 to store the 600 baud rate for SIO.|
|53765 ($D205)||AUDC3||Audio channel three control.|
|53766 ($D206)||AUDF4||Audio channel four frequency|
|53767 ($D207)||AUDC4||Audio channel four control.|
|53768 ($D208)||AUDCTL||Audio control|
The even-numbered memory locations (53760, 62, 64, 66) control the TONE, i.e., which note the ATARI will play. This is identical to the second number in a SOUND statement. For example, to get the same tone as SOUND 0, 100, 10, 8 you would POKE 53760, 100. This specifies Voice 0, note 100. But what about distortion and volume? The odd-numbered memory locations (53761, 63, 65, 67) take care of these two characteristics for each voice via the following relation:
where DISTORTION is the third number in the SOUND statement (10 in our example) and VOLUME is the fourth number.
To properly initialize the POKEY sound capabilities, POKE AUDCTL with zero and POKE 53775,3 ($D20F).
Audio control (AUDCTL) optionsAudio control (AUDCTL) is the option byte which affects all sound channels. This bit assignment is:
|7||Makes the 17 bit poly counter into nine bit poly|
|6||Clock channel one with 1.79 MHz|
|5||Clock channel three with 1.79 MHz|
|4||Join channels two and one (16 bit)|
|3||Join channels four and three (16 bit)|
|2||Insert high pass filter into channel one, clocked by channel two|
|1||Insert high pass filter into channel two, clocked by channel four|
|0||Switch main clock base from 64 KHz to 15 KHz|