![](/html/4c/4ce7/4ce780ab36cdc3904d39cf6cb407827bb34d4d8a1aa2b1f4ee8e5294b5a24666/bg1.png)
K150FS Version 1.6 Software
Ralph Muha
Kurzweil Music Systems, Inc.
Waltham, MA 02154
These notes describe changes to the version 1.6 release of the K150 FS software. The major changes are:
• Next/Prev and Incr/Decr button positions are reversed.
• MIDI Channel and Mode are memorized. All program assignments are remembered in Multi-mode.
• Seven user-editable Intonation Tables plus fourteen ROM-based tables designed by Wendy Carlos are provided.
Optional keyboard control of reference key for real-time modulations.
• System Exclusive messages for loading and dumping master parameters, programs and voices (with optional
Voice RAM).
• System Exclusive messages to support remote front panel control.
Button Reversal
One of the most common complaints about the K150 is the position of the INCR/DECR and NEXT/PREV buttons.
Although one thinks of them from left to right, their normal positioning on almost all electronic equipment is from
right to left. The new software reverses the position of these keys. Upgrading an existing unit requires reversal of
the key caps.
Better Multi-Mode Support
MIDI channel and mode (Omni, Poly or Multi) are memorized in the non-volatile RAM. In addition, program
assignments in Multi mode are remembered. This allows complete instrument setups to be saved across power
downs.
Expanded Intonation Features
Version 1.6 supports seven user-definable intonation tables. In addition, fourteen ROM-based intonation tables
(designed by Wendy Carlos) are provided. The names, numbers and values of these tables are given in Appendix A.
The range of tuning adjustment available via the intonation table has been expanded to a full tri-tone (i.e., ±600
cents or 1/2 octave in each direction). This allows creation of unusual scales with notes that are very close together.
A new mechanism is provided for changing the intonation reference key over MIDI. When the Auto Ref Key
switch (available in the EDIT TUNE menu) is ON, MIDI Note On messages for key numbers 0 (C) thru 11 (B) will
change the reference key. Note that in MIDI, C0 = key number 12, so 0 thru 11 are seldom used. Thus, if you have
a controller that will transmit those key numbers, you can use it to change the reference key dynamically, allowing
real-time modulation while using a non-equal tempered tuning. (Again, thanks to Wendy Carlos for this idea!)
K150FS Version 1.6 Software 1
![](/html/4c/4ce7/4ce780ab36cdc3904d39cf6cb407827bb34d4d8a1aa2b1f4ee8e5294b5a24666/bg2.png)
System Exclusive Message format
All system exclusive messages received and transmitted by the K150 have the following common format:
$F0 7 chan 15 cmd optional data ... $F7
where 7 is the manufacturer ID (Kurzweil), chan is the basic MIDI channel number (0 thru 15), 15 is the product
ID (K150), cmd identifies the type of message and determines the format of the optional data.
The following commands (i.e., message types) are recognized:
1
2
3
4
5
6
7
8
9
10
$7E
$7F
General Sequence for Block Data Dumps
Computer
send dump request
send load request
send block data
Load/Dump Master Parameter Block
1 off-hi off-lo len-hi len-lo
2 off-hi off-lo len-hi len-lo
Load Master Parameter Block
Dump Master Parameter Block
Load Program
Dump Program(s)
Load Instrument Voice
Dump Instrument Voice(s)
Block Data Transfer
Remote Button Push
Transmit Display Text (request)
Display Text (acknowledgment to #9)
NAK (multi-purpose)
ACK (multi-purpose)
K150
send block data
ACK
ACK
The Master Parameter block is 512 bytes of data which contains parameters such as master tune and transpose, the
velocity maps, intonation tables, and the program list. These commands may be used to load and dump portions of
this block. Each message contains the byte offset (sent as two 7 bit values) and length in bytes of the area to load or
dump. The actual data is transmitted using the block data message (see below).
Appendix B contains a description of the master parameter block and list of offsets and lengths of its contents.
Dump Program(s)
4 lo#-msb lo#-lsb hi#-msb hi#-lsb all-flag
This command may be used to request the K150 to dump one or more programs. Two program numbers are given
as a range over which to dump. Non-existent program numbers in the range are ignored. If the all-flag byte is
zero, only RAM based programs in the range are dumped. Otherwise, all programs are dumped. Each program is
transmitted as a separate block data message (see below). A final ACK is sent after the last program.
Computer
dump request
K150FS Version 1.6 Software 2
K150
ACK
block data (first program)
![](/html/4c/4ce7/4ce780ab36cdc3904d39cf6cb407827bb34d4d8a1aa2b1f4ee8e5294b5a24666/bg3.png)
...
block data (last program)
ACK
Load Program
3
This command may be used to load a program into the K150. The next block data message should contain the
program. Since the program number is contained in the program data, no other data is required for this message
Computer K150
send load request
ACK
send block data
ACK
Dump Instrument Voice File
6 vno-msb vno-lsb model-flag
This command is used to request the 150 to dump one or more sound models (which together comprise an instrument voice). The voice number is transmitted as two nibbles. Since voice files may be large, the model-flag
determines what portion of the voice data is transmitted. If it is zero, only the voice header (32 bytes) plus the sound
model headers (48 bytes/per model) are transmitted. If the flag is 127 ($7F), the entire voice file is sent (voice
header, model header, and all model data). Otherwise, the flag value is used as an index to select the N-th model in
the voice. The voice header, model header and model data are transmitted.
The format of voices and sound models are described in a separate document.
Load Instrument Voice File
5 v#-msb v#-lsb hln-msb hln-lsb lln-msb lln-lsb
This is command is used to request the 150 to load an instrument voice. The voice number is given as two nibbles
(one byte) and the total size of the voice is given as four nibbles (one word). The K150 will respond with ACK if it
is equipped with sound RAM and there is enough free space to load the voice. The computer should then transmit
the voice data as a single block data message (see below).
Block Data Message
7 msb lsb
All block data is transmitted and received in nibble-ized format. Each eight-bit data byte is sent as two four-bit
MIDI data bytes. The contents of a block data message depends on the type of load or dump request.
Remote Front Panel Control
Three commands implement the remote front panel feature. Command #8 allows you transmit any sequence of
button pushes to the K150. The optional data is simply the code numbers for the various buttons (given in Appendix
C). Command #9 is a request for the current contents of the display. The K150 responds with command #10. The
optional data will contain the display text (up to 32 characters). Periods are transmitted as separate characters and
flashing text is enclosed in curly braces.
Computer
K150
sends button press
responds appropriately
sends display request
sends display text
displays text to user
K150FS Version 1.6 Software 3