background image

For relative partials, frequency multiples are expressed using the same 1/2048th octave units.  A perfect 4th harmonic, for 
example, would be expressed as +4096.  General conversion formulas are:

Value = 2954.6394 * ln

(

)

Multiple

Multiple = exp

(

)

Value 2954.6394

Note that while frequencies can be specified very precisely with these formulas, the final result produced by the hardware is 
quantized to 0.298Hz.  This means that even sounds in which perfect harmonic intervals have been specified will generally 
not "sit still" on an oscilloscope because the frequency quantization error alters the exact ratios slightly.

For noise partials, the "frequency" field specifies an integer playback rate through the noise table.  The two tables are in fact 
interleaved in the synthesizer memory and the noise type specification (high/low) simply affects the initial setting of the 
noise table pointer to either zero or 4.  The spectrum of the noise is defined for a playback rate of 8.  Other playback rates 
will create different but unpredictable spectra.  Note that if the playback rate is not a multiple of 8, samples from the two 
tables will be intermixed creating yet another effect.  The hardware noise table pointer wraps-a round at 32768 so a playback 
rate of 32760 is equivalent to 8 except that the noise table is scanned backward.  The relatively short length of the noise table 
(4096 samples) limits noise usage to relatively short bursts; otherwise repetition is readily apparent.

1.5.3 Amplitude Units
Where absolute amplitudes are specified, they are represented by an unsigned 8-bit integer in units of 3/8 of a decibel.  This 
gives a range of 0dB to 95.625dB.  In most cases the dB value is an amplitude which means that 0 is silence and 255 is 
maximum loudness.  In other cases, the value is an attenuation, so 0 is loud and 255 is silence.  The .S.M.P.’s user interface 
generally uses 0dB to represent maximum amplitude and -95.6dB to represent silence.

1.5.4 Slope Units
As described above, contours are represented in the hardware as delta time (sample period counts) and slope.  Slopes are 
represented by signed 16-bit integers using the following conversion formulas:

Fast Slope

Value = 0.034953 * (dB/sec)

dB/sec = 28.6098 * Value

Note that the relatively large slope unit size restricts usage to fairly rapid slopes.  By setting bit 14 of the slope value to one 
(after the two’s complement for negative slopes), the slope may be reduced by a factor of 16 and thus slower slopes may be 
represented accurately.  The conversion formulas are now:

Slow Slope

Value = 0.559248 * (dB/sec)

dB/sec = 1.788116 * Value

Slow slopes are accomplished in the hardware by updating the partial amplitude every 16 samples rather than every sample.  
This can lead to audible modulation noise if the slow slope flag is on but the slope is relatively fast.  Thus judgment in 
trading off the greater precision offered by slow slopes with the absence of noise offered by fast slopes must be exercised.  In 
any case, a routine for converting absolute breakpoints to relative ones for the K150FS should keep track of the errors 
incurred and "feed back" a correction to prevent the errors from accumulating.  The Apple II .S.M.P.  does this and it is 
completely effective.  The basis of this error feedback process is shown below:

Summary of Contents for K150 - APPENDIX 1

Page 1: ...nary data structure which is communicated via system exclusive messages A bottom up approach will be used in describing these structures 1 1 PARTIAL PARAMETERS A sound model may have from 1 to 64 part...

Page 2: ...need have no relation with each other However voice memory may be saved and loading of the K150FS s internal processor reduced if some of the breakpoint times coincide Whereas the Sound Modeling Progr...

Page 3: ...ollowed by two bytes for the argument However since the K150FS s internal 68000 processor requires 16 bit quantities to be at even addresses the string is split into a command code vector and an argum...

Page 4: ...he last array element at the extra row and column intersection gives the earliest second breakpoint time which is when interpretation of the update command list should begin To make it easier on the p...

Page 5: ...ple rate of the sound generator This rate is exactly 19531 25Hz which is exactly equal to a 51 2 uS period It is derived in the hardware by dividing a 20MHz clock by 1024 Frequency units are based on...

Page 6: ...ey are represented by an unsigned 8 bit integer in units of 3 8 of a decibel This gives a range of 0dB to 95 625dB In most cases the dB value is an amplitude which means that 0 is silence and 255 is m...

Page 7: ...partial sawtooth Of course the whole issue of phase is moot for sounds with intended inexact harmonics 1 6 MODEL PARAMETERS Model parameters affect the entire sound model in some fashion 1 6 1 Model N...

Page 8: ...ant byte at the lower even address The symbolic names given to the various fields come from the Apple II version of the S M P and are shown here simply as mnemonic aids To make reading easier decimal...

Page 9: ...E 3 Update 3 228 9dB S BYTE 0 Wait 20mS BYTE 2 Update 2 171 7dB S BYTE 0 Wait 30mS BYTE 1 Update 1 143 0dB S BYTE 0 Wait 100mS BYTE 1 2 Update I 80 5dB S Update 2 114 4dB S BYTE 0 Wait 50mS BYTE 3 Upd...

Page 10: ...portant All of the model headers must follow the voice header A field in the voice header specifies how many models follow so the K150FS knows when it reaches the end of the model header list The data...

Page 11: ...r 7F ACK positive acknowledge OK Only Dump Voice Load Voice Block Data Transfer NAK and ACK are described in this document The others are described in a document titled K150FS Version 1 6 Software app...

Page 12: ...the voice data such as an odd number of data nybbles Otherwise it will a NAK Only the simplest errors are checked for Erroneous voice data will likely cause the K150FS software to crash when a key is...

Reviews: