User Tools

Site Tools


oric:wave:wave_sid

Wave SID Introduction

SID is a software driven effect that modifies a waveform of a channel or AY feature in realtime. Its name derives from the way the effect sounds similar to the classic sound of the Commodore 64's SID sound chip.

It is turned On through the Pattern Commands C and Z and Off with the Command CO(Letter O).

It is always synchronised(as best as possible) with the Channel the SID Command is applied to.

Wave offers a variety of SID effects from the Classic SID sound to Buzzer (Atari St's Tao inspired SID) to Status SID (Used in Pulsoids).

The pitch of the SID is based upon the Pattern Note +/- any Ornament applied to it. It will also follow a note if pitchbend is applied to it.
Effect pitch and volume changes will not affect SID.
The various SID effects are always selected from the Pattern Editors Note Command and Parameter.

Channel SID

Channel SID produces the classic SID by modifying the volume of a Channel.

Since SID is essentially another square wave it will overlay the existing square wave. Dependant on the current indeterminable phase of the two waveforms the sound will gradually move in and out of phase of one another.

The Cycle timing diagram below illustrates one instance of the effect.


This demonstrates a full wave application of SID. Full wave means that the SID change is maximised between 0 and 15. Such a SID will reach full phase and cancel each other waveforms out.

However it is possible to only change a fraction of the volume which is a much more popular application of SID.
In such a scheme the initial Pattern Note volume is set to 4 or 8 and then the SID Command Parameter is set to 7. This effectively switches between 8 and 15 producing a phase effect that will never completely silence the sound as demonstrated below.


Status SID

Also known as Tone SID, Status SID acts on the Statuses Tone flag for the Channel by toggling it on and off at twice the frequency of the Channels pitch. All SID work like this because they only ever trigger half of the waveform (except for some Buzzer effects which we will come on to later in this chapter).

Status SID was used in the game Pulsoids for the Oric a few years ago.

Since Status SID is modifying just one bit there are no parameters to set. Furthermore the Volume of the channel may be freely modified through Effects. However Status SID will behave like Full Wave SID in that it will move the sound in and out of phase with the potential to silence the sound alltogether, eventually moving out of phase again.

Status SID is demonstrated below in the Cycle Timing diagram.


Noise SID

Noise SID toggles the Statuses Noise flag for the channel in the same way as Tone/Status SID.
Its effect is to apply Noise to the Channel at the Channels Pitch Frequency. The overall sound is much 'thinner' than normal Noise and may be used for some wind or Cymbal type of sounds.

Noise SID is shown below in the Cycle Timing diagram.


EGF SID

EGF SID or Hardware Envelope Flag SID operates on the EG flag. The EG Flag links the Hardware Envelope to the control over the volume. It is not really known how well this type of SID will work and like other EG related SIDs is very dependable upon the EG Period (which dictates the frequency of the Envelope).


Notice that the above scheme is based on a non-synchronous waveform, ie a waveform that is independant of the applied SID.
Unlike AY Chip tones the beginning of a EG wave can be determined as the action of writing to the EG Cycle will begin the cycle of the EG waveform albeit Sawtooth or Triangle.

The Cycle timing of a Synchronous waveform may prove interesting as it provides total control over the waveform albeit a very simple form.


SID Buzzer

SID Buzzer has been a mysterious beast to tame. Tao of Cream and Scavenger (Atari Demo Scene) demonstrated it some of their demos and if mastered it can produce some pretty cool sounds.

SID Buzzer alternates two values sent to the Hardware Envelope register. The two values are the exclusive or of one another. This may sound a bit awkward but in practice it is possible to get most of the waveforms.
The behaviour of the EG cycle is such that everytime it is written to it restarts the Envelope Cycle. Because of this if we write with a constant value of Zero every time we produce a synchronised Sawtooth waveform (synchronised to twice the Pitch frequency because each trigger creates one complete Sawtooth cycle).

The example Buzzer SIDs given below are all assuming the Tone has been disabled otherwise things can get way too complex (3 waveforms to compute) however as always experimentation is the key to success.

Notice as the Hardware Envelopes (also known as EG or Envelope Generator) Period is increased so the trigger does not give the cycle time to reduce the volume to zero therefore reducing the effective volume. This is why the above is called Variable Volume Buzzer. However in practice this are all other Buzzer style SIDs are very much at the mercy of the EG Period used.

Another example of SID Buzzer is the generation of a tailor made waveform that may (if accurately designed) metamorphosise from a Square wave to a Triangle Wave. This has been found to produce a wholesome sound that may make an excellent bass sound.


The explanation of what is being done is fairly simple. First we set the initial Cycle Envelope to 0 (D in the Patterns EGC Column) and exclusive Or with 13 which is the code to rise from 0 to 15 and remain high.
If the EG Period is set to highest pitch (Zero) then for most of the note range it will produce a Square wave. However as we increase the EG Period so the rise and fall of the cycle becomes more shallow and eventually it will form a Triangle waveform.

The third exmple of SID Buzzer uses the same principle as the previous to produce a taylor made waveform, this time the best term i could think of was Rasp, generating sawtooth then reverse sawtooth, so a very sharp sound.


The final example of SID Buzzer attempts to generate two waveforms by alternating between Triangle and Sawtooth. The Triangle trigger will represent half a triangle cycle whereas the Sawtooth trigger will be for the whole cycle so the effective sound should be a rapid alternation between two pitches an octave apart.

SID Footnote

Notice the code given in each of the Cycle Timings. For SID Buzzer the codes are those entered in the Editor such that D/ZF is broken down to D for the EGC Cycle, Z the command and F the parameter value.

Obviously all these different SID types are only best experimented with in WAVE. One should not completely rely on the Cycle Timing diagrams. They are purely designed as a guide to the possible waveforms and how they interact with other waveforms.

Also it is important to note that SID (like Sample) consumes alot of CPU but a constant rather than variable load.
On average SID alone will consume 66% of the CPU. If Samples are also playing during this time the CPU load will increase to between 75% and 80%. However this heavy CPU load is rarely felt in the Editor beyond a slight distortion or the slowing of Editor operations if it is playing at the same time.

And don't worry about pushing the machine, it is designed to be pushed.. no amount of shoving should crash the Oric.. so experiment with it all and lets hear some great music!

oric/wave/wave_sid.txt · Last modified: 2009/11/30 19:30 by twilighte