Download Print this page

Kurzweil K150 - PROGRAMMERS MODEL REV A Hardware Manual page 6

Fourier synthesizer hardware programmer’s model and address map

Advertisement

Most fundamental is the Phase register. In generating sound, the current content of the phase register is used as an address to
lookup in a sine table. If one considers the content of the Phase Register to be an unsigned integer between 0 and 65535, the
sine table yields the value: SIN(2*PI*P/65536) where P is the Phase Register content and PI=3.14159... Thus a Phase
Register content of zero gives a zero result, 8192 gives .7071, 16384 gives +1, and 49152 gives -1. Note that it is the Sine
that is being looked up, not the more conventional Cosine. The phase register for each partial may be freely read or written at
any time although writing when the amplitude is non-zero will probably produce a click. Typically it is desirable to begin a
sound with all partials initialized to zero phase in order to avoid attack clicks.
Frequency Register
The Frequency Register contains a 15-bit unsigned integer for controlling frequency in bits 0-14 and the sine/noise selection
flag in bit 15. Assuming sine waves (bit 15=0), the sound generator works by adding the 15 bit frequency parameter to the
phase register every sample period ignoring overflow. The sample period is 51.2uS which corresponds to 19531.25 KS/s. A
frequency parameter of $0001 would therefore produce a frequency of 0.29802Hz while $7FFF would be just short of the
Nyquist frequency at 9765.33Hz (and be lost in the anti-alias filter). The general formula for frequency is: F=0.29802322*P
Hz where P is the 15-bit frequency parameter expressed as an integer. The Frequency Register may be read and written at
will.
When bit 15 of the Frequency Register is a one, the sound generator looks up in a noise table rather than a sine table. The 15
bit frequency parameter is still added to the Phase Register every sample period as before. The noise table lookup uses bits
2-13 of the phase register content as a lookup address to 4096 noise samples. However these 4096 samples are really two
sets of 2048 samples each, one being "low" noise and the other being "high" noise. These two sets of samples are interleaved
in the noise ROM such that bit 2 of the Phase Register selects low noise when it is zero and high noise when it is one. Thus
if the Frequency Register content is a multiple of 8, the Phase Register will always address samples in the same noise table.
Which noise table is determined by the initial setting of bit 2 in the Phase Register.
The specific intended application of the noise tables was to enhance the
realism of piano notes. A Frequency Register setting of 8 with an initial Phase Register setting of 0 (low) or 4 (high) will
step through these samples as intended. Many additional noise effects are possible by using other Frequency Register
settings that may step through the noise tables slower or faster and also intermix noise samples. This will require
experimentation.
Amplitude Register
Whereas the Phase and Frequency registers controlled the generation of the basic waveform, the Amplitude and Slope
registers control the generation of amplitude envelope segments. The Amplitude Register contains a 16-bit unsigned integer
which gives amplitude in units of 6/4096 dB. Thus the minimum amplitude is 0dB, which is silence, and the maximum is
95.9985dB. Please note that the register content really is decibels, not a simple multiplying factor. For example, if the
maximum amplitude of a single partial corresponding to an Amplitude Register setting of $FFFF is 1.0 volts, 0.5 volt (6dB
less) would be produced by a setting of $F800, not $8000. The amplitude register setting can be read or changed at any time
but a large change is likely to produce a click.
Slope Register
Unlike frequency, infrequent updating of amplitude values is generally an unsatisfactory method of producing amplitude
envelopes. This is because a sudden change in amplitude produces a step discontinuity in the resulting waveform which is
heard as a click, whereas a sudden change in frequency still leaves a continuous waveform. Thus amplitude must be updated
very quickly so that the size of the update steps is small enough to reduce or eliminate update clicks. Thus the K150FS
sound generator has automatic amplitude envelope segment generating hardware. The principle is the same as with the Phase
and Frequency registers: the content of the Slope Register is added to the Amplitude Register periodically, thus producing a
continuous, linear (in decibels) increase or decrease in amplitude. By simply changing the setting of the Slope Register at
every breakpoint in the overall desired envelope shape, a piecewise linear approximation to any arbitrary envelope shape may
be produced. Unlike the Phase Register however, the Amplitude Register will "stick" at minimum or maximum if the
addition produces an overflow or underflow.
The Slope Register content is a signed 16-bit integer value between -16384 and +16383. This restricted range leaves bit 14
free as a flag to select between a fast (every sample period) or slow (every 16 sample periods) rate of adding the slope value
K150FS Programmer's Model
Rev. A 26-APR-88
6

Advertisement

loading
Need help?

Need help?

Do you have a question about the K150 - PROGRAMMERS MODEL REV A and is the answer not in the manual?

Questions and answers

This manual is also suitable for:

150K150K150fs