SID

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search

(Contains extracts from wikipedia's page)


MOS Technology SID.

The "overrated" sound chip used by the C64.

It was indeed better than the AY used in many other computers of the era (Amstrad's too) because it could produce many different (3) wave signal while AY could only produce rectangular wave signals.

"SID" refers to a SIDfile, *.SID, too. Now playable -with some less quality- on CPC with Geco's Player. SID Resource site.

Features

  • three separately programmable independent audio oscillators (8 octave range, approximately 16 - 4000 Hz)
  • four different waveforms per audio oscillator (sawtooth, triangle, pulse, noise)
  • one multi mode filter featuring low-pass, high-pass and band-pass outputs with 6 dB/oct (bandpass) or 12 dB/octave (lowpass/highpass) rolloff. The different filter-modes are sometimes combined to produce additional timbres, for instance a notch-reject filter.
  • three attack/decay/sustain/release (ADSR) volume controls, one for each audio oscillator.
  • three ring modulators.
  • oscillator sync for each audio oscillator.
  • two 8-bit A/D converters (typically used for game control paddles, but later also used for a mouse)
  • external audio input (for sound mixing with external signal sources)
  • random number/modulation generator

Technical details

6581 Pin configuration

The SID is a mixed-signal integrated circuit, featuring both digital and analog circuitry. All control ports are digital, while the output ports are analog. The SID features three-voice synthesis, where each voice may use one of at least five different waveforms: square wave (with variable duty cycle), triangle wave, sawtooth wave, pseudo-random (but not white) noise, and certain complex/combined waveforms when multiple waveforms are selected simultaneously. A voice playing Triangle waveform may be ring-modulated with one of the other voices, where the triangle waveform's bits are inverted when the modulating voice's msb is set, producing a discontinuity and change of direction with the Triangle's ramp. Oscillators may also be hard-synced to each other, where the synced oscillator is reset whenever the syncing oscillator's msb raises.

Each voice may be routed into a common, digitally controlled analog 12dB multistate filter, which is constructed with aid of external capacitors to the chip. The filter has lowpass, bandpass and highpass outputs, which can be individually selected for final output amplification via master volume register. Using a combined state of lowpass and highpass results in a notch (or inverted bandpass) output.[1] The programmer may vary the filter's cut-off frequency and resonance. An external audio-in port enables external audio to be passed through the filter.

The ring modulation, filter, and programming techniques such as arpeggio (rapid cycling between 2 or more frequencies to make chord-like sounds) together produce the characteristic feel of SID music.

Due to imperfect manufacturing technologies of the time and poor separation between the analog and digital parts of the chip, the 6581's output (before the amplifier stage) was always slightly biased from the zero level. By adjusting the amplifier's gain through the main 4-bit volume register, this bias could be modulated as PCM, resulting in a "virtual" fourth channel allowing 4-bit digital sample playback. The glitch was known and used from an early point on, first by Electronic Speech Systems to produce sampled speech in games such as Impossible Mission (1983, Epyx) and Ghostbusters (1984, Activision). The first instance of samples being used in actual musical compositions was by Martin Galway in Arkanoid (1987, Imagine), although he had copied the idea from an earlier drum synthesizer package called Digidrums. The amount of sampled sound possible to store on a fraction of 64 kilobytes was very limited. Also, it was hugely CPU intensive - one had to output the samples very fast (in comparison to the speed of the 6510 CPU).

The better manufacturing technology in the 8580 used in the later revisions of Commodore 64C and the Commodore 128DCR caused the bias to almost entirely disappear, causing the digitized sound samples to become very quiet. Fortunately, the volume level could be mostly restored with either a hardware modification (biasing the audio-in pin), or more commonly a software trick involving using the Pulse waveform to intentionally recreate the required bias. The software trick generally renders one voice temporarily unusable, although clever musical compositions can make this problem less noticeable.

At the X'2008 demo party, a completely new method of playing digitized samples was unveiled. The method allows for an unprecedented four (software-mixed) channels of 8-bit samples with optional filtering on top of all samples, as well as two ordinary SID sound channels. The method works by resetting the oscillator using the waveform generator test bit, quickly ramping up the new waveform with the Triangle waveform selected, and then disabling all waveforms, resulting in the DAC continuing to output the last value---which is the desired sample. This continues for as long as two scanlines, which is ample time for glitch-free, arbitrary sample output. It is however more CPU-intensive than the 4-bit volume register DAC trick described above. Because the filtering in a SID chip is applied after the waveform generators, samples produced this way can be filtered normally.

The original manual for the SID mentions that if several waveforms are enabled at the same time, the result will be a binary AND between them. What happens in reality is that the input to the waveform DAC pins receive several waveforms at once. For instance, the Triangle waveform is made with a separate XOR circuit and a shift-to-left circuit. The top bit drives whether the XOR circuit inverts the accumulator value seen by the DAC. Thus, enabling triangle and sawtooth simultaneously causes adjacent accumulator bits in the DAC input to mix together. (The XOR circuit does not come to play because it is always disabled whenever the sawtooth waveform is selected.) The pulse waveform is built by joining all the DAC bits together via a long strip of polysilicon, connected to the pulse control logic that digitally compares current accumulator value to the pulse width value. Thus, selecting the pulse waveform together with any other waveform causes every bit on the DAC to partially mix together, and the loudness of the waveform is affected by the state of the pulse.

The noise generator is implemented as an XOR shift register. When using noise waveform simultaneously with any other waveform, the pull-down via waveform selector tends to quickly reduce the XOR shift register to 0 for all bits that are connected to the output DAC. As the zeroes shift in the register when the noise is clocked, and no 1-bits are produced to replace them, a situation can arise where the XOR shift register becomes fully zeroed. Luckily, the situation can be remedied by using the waveform control test bit, which in that condition injects one 1-bit into the XOR shift register. Some musicians are also known to use noise's combined waveforms and test bit to construct unusual sounds.

The 6581 and 8580 differ from each other in several ways. The original 6581 was manufactured using the older NMOS process, which used 12V DC to operate. The 8580 was made using the HMOS-II process, which required less power (9V DC), and therefore made the IC run cooler. The 8580 was thus far more durable than the 6581. Also, due to stabler waveform generators, the bit-mixing effects are less noticeable and thus the combined waveforms come close to matching the original SID specification (which stated that they will be combined as a binary AND). The filter is also very different between the two models, with the 6581 cutoff range being a relatively straight line on a log scale, while the cutoff range on the 8580 is a straight line on a linear scale, and is close to the designers' actual specifications. Additionally, a better separation between the analog and the digital circuits made the 8580's output less noisy and distorted. The noise in 6xxx-series systems can be reduced by disconnecting the audio-in pin.

The consumer version of the 8580 was rebadged the 6582, even though the die on the chip is identical to a stock 8580 chip, including the '8580R5' mark. Creative Micro Designs used it in their SID Symphony expansion cartridge, and it was used in a few other places as well, including one PC sound-card.

Despite its documented shortcomings, many SID musicians prefer the flawed 6581 chip over the corrected 8580 chip. The main reason for this is that the filter produces strong distortion that is sometimes used to produce simulation of instruments such as a distorted electric guitar. Also, the highpass component of the filter was mixed in 3 dB attenuated compared to the other outputs, making the sound more bassy. In addition to nonlinearities in filter, the D/A circuitry used in the waveform generators produces yet more additional distortion that made its sound richer in character.

What about the amstrad ?

The AY used in Amstrad wasn't that bad even compaired to the legendary SID.

First, the Amstrad's AY were Stereo, while Atari ST's YM wasn't really...

Also The plus Range included DMA channels features, yet a big bugged...

This allowed a pseudo emulation of Sid sounds thanks to a clever programming and use of the Sample technics.

But as Amstrad's 8 bit computers lacked of a good specific dedicated Ram system, and got their processor (Z80) still diminished by the large Video system... even the Hardwired sprites on Amstrad PLUS range were heavier for the CPU compared to C64 ones.

this use needed a wise programming.

Such "Sid emulation" came lately in Amstrad world, even after the commercial era.

C64 SID on Amstrad CPC, software or hardware ? || SID file & AY+ file

(text from genesis8)

The Amstrad CPC use the General Instrument AY-3-8912 sound chip, providing 3 channels, each configurable to generate square waves, white noise or both. A small array of hardware volume envelopes are available. The C64 use the SID sound chip with also 3 channels, each configurable to generate 4 different waves forms : sawtooth, triangle, pulse, noise. It offers other features, much more than the AY-3-8912.

So is it possible to listen to SID music on an limited Amstrad CPC ? The answer is yes, and if you are lucky enough to read french [or use a translator], you will be able to read the article "les SID-Voices" on Quasar. So to resume, yes you can do it on a plain Amstrad CPC, but if you play 3 SID-Voices, you wont have enough CPU time to do something else. Otherwise on an Amstrad CPC+ using the DMA, you will be able to do something else than playing music. The Quasar article comes with the AY+ source to play SID-Voices on a CPC+.


On a plain Amstrad CPC, you can use a program by Geco, a hungarian programmer. He usually works on the Elan Enterprise, he wrote a SID player for this computer, and ported it to the Amstrad CPC. [ Download this Amstrad CPC SID player (128 Kb only). v1 v2 ] If you want to hear other SID files than the ones copied onto the disk, transfer them as ASCII files, without AmsDos header (easy to do with ManageDSK).

Some informations about this utility directly from the author (taken from chipmusic.org) : I created the player used 6510 emulation code of Simon Owen, and CPC header checking. The player spends a lot of time with 6510 code, this is the reason of speed changing on CPC, on Enterprise I met less speed changing, may be the cause of this on EP the processor is running at 4Mhz if the code is not in the video Memory. Yes, only some feature is emulated, frequency registers, envelopes in 50Hz, control registers (without wave formats), and volume register, if I remember well. And the noise emulation is also interesting on CPC, because when noise should apply then I give fix 0f value to noise channel, and drive the frequency with tone channel frequency (set reg 6 tone and noise enable on a channel), with this solution 3 different noises can appear on the AY. The player can play songs in 2 speeds, 50Hz, and 100Hz, does not matter of SID speed, ex if the speed of SID is 60Hz the player plays it on 50Hz.


Finally, you could play it with hardware too, with an extension. Read about it on:

You can hear how DaDMaN's interface sounds here: Playlist on SoundCloud