Kurzweil K150 - APPENDIX 1 Appendix
Kurzweil K150 - APPENDIX 1 Appendix

Kurzweil K150 - APPENDIX 1 Appendix

Exclusive formats

Advertisement

Quick Links

APPENDIX 1 - K150FS SYSTEM EXCLUSIVE FORMATS

This section describes in detail the MIDI system exclusive message formats used by the K150FS and Sound Modeling
Program to exchange voice information. An additional document titled: K150FS Version 1.6 Software by Ralph Muha
describes additional system exclusive messages that are available for program dump and restore, master parameter block
(global parameters such as MIDI mode) dump and restore, and remote front panel operation. The K150 User's Manual
describes general operating features of the K150 which are equally applicable to the K150FS.
1. DETAILED DESCRIPTION OF CONTOURED SOUND MODELING
Elsewhere in this manual is a generalized description of the Contoured Sound Modeling process used by the K150FS detailed
to the extent needed for effective use of the Sound Modeling Program (.S.M.P.). This section will detail the process to the
level needed for understanding the actual MIDI system exclusive messages used to represent sound models.
Sounds in the K150FS are actually a hierarchy of data structures as shown below:
PROGRAM
VOICE(S)
MODEL(S)
PARTIAL-PARAMETERS CONTOURS ATTACK-FUNCTION RELEASE-SLOPES
Programs are the highest level and consist of one or more Voices layered together. Voices are the basic sounds from the
user's point of view and cover the full range of the keyboard. Voices usually consist of several Models each of which covers
a limited pitch range. Models are the basic sounds from the sound designer's point of view and consist of Partial Parameters
and Contours which define the overall timbre, an Attack Function that modifies that timbre according to MIDI note-on
velocity, and Release Slopes that define the sound's release. Each of these entities has a corresponding binary 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 partials (additive synthesis components). Partial parameters give information about
these partials as follows:
1.1.1 Partial Type
There are 4 types of partials available for constructing models. Relative partials are the most common. The frequency of a
relative partial is a MULTIPLE times the fundamental frequency of the note being played. This multiple may have a
fractional part and may be less than 1. Absolute partials are also available. The frequency of an absolute partial is a fixed
number of Hertz regardless of the note being played. Two types of noise partials are available, "low" and "high". Each
causes the partial hardware to scan through a short noise table the difference being in the table that is used.
1.1.2 Partial Frequency
Every partial has a frequency which is a 16-bit value. The frequencies of relative partials are given as a multiple of the
fundamental pitch being played. The frequencies of absolute partials are given as a multiple (much less than one) of the
highest frequency that can be produced. The frequency field of noise partials varies the scan rate through the noise tables and
thus varies the noise spectrum. The relation between noise "frequency" and the spectrum is extremely complex and best
determined by trial and error.
1.1.3 Optional Partial Flag
This flag marks the partial as being less important to the sound's timbre than unmarked partials. In a playing situation that
calls for more notes than there are partials available (but still less than the 16-note limit), optional partials are not sounded.
Thus in voices that use many partials, one should attempt to mark the less important ones optional. When actual partial
stealing is required, the higher numbered partials of presently sounding notes are stolen first.

Advertisement

Table of Contents
loading

Summary of Contents for Kurzweil K150 - APPENDIX 1

  • Page 1: Appendix 1 - K150Fs System Exclusive Formats

    APPENDIX 1 - K150FS SYSTEM EXCLUSIVE FORMATS This section describes in detail the MIDI system exclusive message formats used by the K150FS and Sound Modeling Program to exchange voice information. An additional document titled: K150FS Version 1.6 Software by Ralph Muha describes additional system exclusive messages that are available for program dump and restore, master parameter block (global parameters such as MIDI mode) dump and restore, and remote front panel operation.
  • Page 2 1.2 CONTOURS Contours are arbitrarily shaped amplitude envelopes, one for each partial in the model. A contour always starts from silence (-95.6dB), follows a curve approximated by straight-line segments, and either returns to silence (model of a decaying sound), ends at some finite value, or loops upon itself (sounds that may be indefinitely sustained). There is no upper limit to the duration of a contour but accumulated error in generating the contours gives a practical limit in the low minutes range.
  • Page 3 A data structure for representing all of the contours of a model would normally be a rather complex two-dimensional array with variable-length rows. Interpreting such an array would involve a lot of searching. For efficiency in playing the contours, the K150FS requires the breakpoint data to be sorted into a one-dimensional vector of update commands which can then be interpreted sequentially as time passes.
  • Page 4 30ms 800 dB/s Original Contour Second BP shifted down 16 dB. Hardware clips at -95.6 dB 200ms 200ms -200 dB/s 3200 dB/s -240 dB/s 2400 dB/s msec The K150FS operating system considers a host of variables in setting the absolute second breakpoint amplitude of each partial when a note is started (actually it is setting the slope away from the first breakpoint).
  • Page 5 EXAMPLE ATTACK FUNCTION TABLE Level Partial #l Partial #2 Partial #3 2nd BP time 20 mS Highest level -6 dB 0 dB -13 dB -26 dB -12 dB 0 dB -16 dB -32 dB Lowest level -95.6 dB 0 dB -16 dB -35 dB (Read out row-wise)
  • Page 6 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.
  • Page 7: Model Parameters

    400,-6 -4.56 550,-9 Desired -7.42 Actual 114.4 dB/s 57.2 dB/s -257.5 dB/s 100 dB/s -171 dB/s 450,-12.5 300, -16 -13.14 600,-20.5 -20.3 msec Below is a spreadsheet showing how the values in the example above were calculated: BREAKPOINT INITIAL DESIRED DESIRED ACTUAL ACTUAL...
  • Page 8 1.6.4 Hold at End Flag For a sustained sound (example: horn) that must last as long as the key is held, this flag is set to prevent the End-of-Note command from shutting off all of the partials when it is reached. Note that Ignore Release and Hold at End should not both be set;...
  • Page 9 1.000* List of partial frequencies PFQLIST .WORD 0 2.000* (multiples for relative partials) .WORD 2048 3.000* .WORD 3246 Earliest second breakpoint time in actual mS PAFLIST .BYTE 20 CODES for second breakpoint times of 3 partials .BYTE 14,11,8 Amplitude defining highest attack level (-6dB) .BYTE 16 Corresponding second breakpoint amplitudes .BYTE 255,220,185...
  • Page 10: Voice Structure

    Update #2, 0dB/S .WORD 0 End-of-Note .WORD 0 Release slope for 1st partial(slow, -35.8dB/sec) PRSLIST .WORD -20 2nd partial (slow, -71.5dB/sec) .WORD -40 3rd partial (fast, -143.0dB/sec) .WORD -5&$BFFF 1.8 VOICE STRUCTURE Actually, individual sound models are not sent to the K150FS, only complete voices. A voice is made of 1 or models in ascending pitch range sequence.
  • Page 11: Message Header

    MIDI system-exclusive status code Kurzweil ID code Device Select. For several identical units connected together, specifies which one should respond. Range is $00-$0F and for K150FS, the device ID is the same as the basic MIDI channel.
  • Page 12 2.4 SENDING A VOICE To send a voice to the K150FS, the host computer program must follow these steps in sequence: Determine how large the voice will be inclusive of data and all headers. Send a Load Voice command ($05 command code) system-exclusive message to the K150FS. The data field of the message is as follows (each byte is two nybbles): Voice number .BYTE...

This manual is also suitable for:

K150fs

Table of Contents