background image

2.4 SENDING A VOICE

To send a voice to the K150FS, the host computer program must follow these steps in sequence:

1.

Determine how large the voice will be inclusive of data and all headers.

2.

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):

.BYTE  vnum

Voice number

.WORD  size

Voice size

3.

Wait for a reply message from the K150FS.  It will be an ACK if there is sufficient free space in voice RAM to hold the 
voice, otherwise it will be a NAK.  If no response is received within a second, there is a communication problem.

4.

Assuming an ACK was received, send a Block Data command ($07).  The data field is the complete voice beginning 
with the first byte of the voice header using the two nybble per byte encoding method.  Note that the voice ID number 
given in the voice header must agree with the number given in the Load Voice command in step 2.

5.

Wait for a reply message from the K150FS.  It will be an ACK if no gross errors are found in 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 played.  Again, if there is no reply within one second of 
sending the last data byte, there is a communication problem.

2.5 RECEIVING A VOICE

Voice data from the built-in factory sound ROMs or previously loaded data in the sound RAM can be read back from the 
K150FS.  To read voice information, the host computer must do the following steps:

Send a Dump Voice command (code $06).  The data field is as follows:

.BYTE vnum

Voice number to dump, two nybble format

.BYTE type

Modifier, a single MIDI byte interpreted as follows:

$00 = Send headers only (voice then model headers)
NN = Send model N (1=first=lowest, etc.).  
Data will be a voice header, one model header, corresponding model data.
$7F = Send whole voice (all headers plus all data)

Wait for a Block Data message in response.  If a NAK is received instead, then the voice number requested doesn’t exist.  
The format of the headers and the data arrays is the same as described in Section 1 above.  Note that some of the unused 
fields in the headers may contain data other than zeroes; this is not significant.

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: