Mz-2000 midi implementation – Casio MZ-2000 User Manual

Page 15

Advertising
background image

14

MZ-2000 MIDI Implementation

4.1.4 Individual Parameter Operations

This section describes parameter operation formats.

IPR Communication Flow

A session consists of an IPC being sent in reply to an IPR request, or an IPC being sent and the

session being terminated with without a request.

When the MZ-2000 receives an IPR, it returns the corresponding parameter IPR.

When the MZ-2000 receives an IPC, it changes the value of the corresponding parameter.

Data Receiver

Data Sender

IPR ->

Send Request (Optional)

<- IPC

Data Transfer

For information about how parameters are actually assigned, see sections 4.2 thorugh 4.11.

IPC/IPR

tt

0100aaaa

aaaa = IPC/IPR

d0[0]

00100000

Parameter Modify Message ID = 20H

d0[1]

0000cccc

cccc = Cat (Parameter Set Category)

d0[2]

0ttttttt

0TTTTTTT0ttttttt = Type ID

d0[3]

0TTTTTTT

d0[4]

0mmmmmmm

0MMMMMMM0mmmmmmm = Mdev ID

d0[5]

0MMMMMMM

d0[6]

0sssssss

00SSSSSSSsssssss = Section Number

d0[7]

0SSSSSSS

d0[8]

0nnnnnnn

00NNNNNNNnnnnnnn = PS Number

d0[9]

0NNNNNNN

d0[10] 0ppppppp

qqPPPPPPPppppppp = Parameter ID

d0[11] 0PPPPPPP

d0[12] 0rbbbbqq bbbb = number of parameter block - 1

One less than the number nested parameter block levels in the parameter

configuration

bbbb==0 is interpreted as one-level parameter block nesting.

This means that at least one parameter must be associated with a param-

eter block.

r = array flag

0...single data

1...array data

Flag indicating whether the data immediately following it is single data

or array data

✩ Parameter block number specification (number of bytes required for parameter blocks)

d1[0]

0iiiiiii 0iiiiiii = block-0 number of parameter

:

d1[bbbb] 0IIIIIII 0IIIIIII = block-bbbb number of parameter

Data indicating the block number of the parameter when parameters are nested in a

parameter set

✩ Section indicating the number of data in a data array and the number of data array numbers

(This data string is not necessary in the case of non-array data.)

d2[0] 0ooooooo

d2[1] 0ppppppp oooooooppppppp = top index number of array to send

(Number of array where transfer starts)

d2[2] 0qqqqqqq qqqqqqq = number of array members to send

(Number of send members in current packet)

In the case of an array that does not fit inside one packet, multiple packets are sent for the length

specified by the top index number.

✩ One data size (number of bits) minus 1

d3[0] 000zzzzz

zzzzz = number of bits - 1

When zzzz + 1 is: The number of data bytes is:

1 to 7 1

8 to 14 2

15 to 21 3

22 to 28 4

29 to 32 5

✩ Following is actual data transfer format, which is added only in the case of IPC

Single Data

When the data size is 29 bits to 32 bits

d4[0] 0xxxxxxx yyyyXXXXXXX....xxxxxxx = Data

:

d4[3] 0XXXXXXX

d4[4] 0000yyyy

When the data size is 22 bits to 28 bits

d4[0] 0xxxxxxx yyyyyyyXXXXXXX....xxxxxxx = Data

:

d4[2] 0XXXXXXX

d4[3] 0yyyyyyy

When the data size is 15 bits to 21 bits

d4[0] 0xxxxxxx yyyyyyyXXXXXXXxxxxxxx = Data

d4[1] 0XXXXXXX

d4[2] 0yyyyyyy

When the data size is 8 bits to 14 bits

d4[0] 0xxxxxxx XXXXXXXxxxxxxx = Data

d4[1] 0XXXXXXX

When the data size is 7 bits or less

d4[0] 0xxxxxxx xxxxxxx = Data

Array Data

When an entire array is transferred, the format is the same as that for single data.

d4[0][0] 0xxxxxxx yyyyyyy....xxxxxxx = Data

:

d4[0][X] 0yyyyyyy

d4[1][0] 0xxxxxxx yyyyyyy....xxxxxxx = Data

:

d4[1][X] 0yyyyyyy

:

:

d4[N][0] 0xxxxxxx yyyyyyy....xxxxxxx = Data

:

d4[N][X] 0yyyyyyy

Notes: N = oooooooppppppp - 1

X = depends on data size - 1

When zzzz + 1 is: The number of data bytes is:

1 to 7 0

8 to 14 1

14 to 21 2

22 to 28 3

29 to 32 4

Advertising