More issues
In
this message you said you were trying to send the "GS_VOLUME" message:
f0 42 00 42 12 40 00 7f 00
But the Master Volume message for GS looks like this (from page 27 of the manual):
F0 41 00 42 12 40 00 04 vv xx F7
In
this message, you mentioned sending
Push button: 90 25 40 Release button: 80 25 ff
Be aware in MIDI messages bytes, hex 80 to FF are Status bytes that indicate the type of message, and hex 00 to 7F are for data bytes. The FF on the end of the "Release button" message above is not a valid data byte. It indicates the Status byte FF for Reset.
More information about Running Status
The Dream SAM2695 almost certainly correctly supports Running Status because it is part of required MIDI standards. In fact, on page 27 of the manual, the various RPN and NRPN message examples are shown using Running Status.
For example, the NRPN 37xx message format is shown using the following bytes:
Bn 63 37 62 xx 06 vv
This uses implied Status bytes (Running Status) and has the following meaning:
Bn 63 37 (Control Change Channel n+1, Controller 99 Non-Registered Parameter Number MSB, Value hex 37)
62 xx (" " " " Controller 98 Non-Registered Parameter Number LSB, Value hex xx)
06 vv (" " " " Controller 6 Data Entry, Value hex vv)
You can also send the Status Bytes explicitly and it would mean the same thing and have the same effect:
Bn 63 37 (Control Change Channel n+1, Controller 99 Non-Registered Parameter Number MSB, Value hex 37)
Bn 62 xx (Control Change Channel n+1, Controller 98 Non-Registered Parameter Number LSB, Value hex xx)
Bn 06 vv (Control Change Channel n+1, Controller 6 Data Entry, Value hex vv)
Running Status can only be used for Status bytes that contain a channel number (hex 80 to EF).
System Common and System Exclusive status bytes (hex F0 to F7) cause the remembered Running Status to be forgotten. The next message after these System messages must begin with a Status byte. If it doesn't, then the device has to ignore incoming bytes until it gets a Status byte (hex 80 to FF).
System Real-Time messages (hex F8 to FF) are 1-byte messages that may occur in between the bytes of other messages. A System Real-Time message makes no changes to the remembered Running Status. Except: If the device obeys the Reset message (Status byte FF), it is supposed to forget the remembered Running Status as part of its reset process.
So when you
sent the following bytes:
REST: ff
GS_R: f0 41 00 42 12 40 00 7f 00 41 f7
MONO: b0 7e 01
VOL : 37 20 ff
GMVL: 37 22
MSVL: 07 10
VOIC: c0 21
This would get interpreted as:
FF (Reset)
F0 41 00 42 12 40 00 7F 00 41 F7 (GS Reset)
B0 7E 01 (Control Change Channel 1, Controller 126 Mono On, Value 1 for one channel)
37 20 (" " " " Controller 55 unused, Value 32)
FF (Reset)
37 (ignored as invalid, Status byte required)
22 (ignored as invalid, Status byte required)
07 (ignored as invalid, Status byte required)
10 (ignored as invalid, Status byte required)
C0 21 (Program Change Channel 1, Electric bass (finger))
Geoff:
The FF on line 5 (timing byte) should NOT affect the this.
Status byte FF is the Reset message, which would have an effect. The manual says it causes the device to reset to power-up conditions.
Line 4 [b0 7e 01] should be ok, this is normally Polyphonic OFF, and I assume this is what you mean by 'Mono' (Monophonic as opposed to Polyphonic). But I'm not sure about the 01 following, but this may be a dummy data value?
In the Mono On message, the value part of the Control Change message indicates the number of channels you want to use (one channel for each monophonic note you want). A value of 0 is a special value that means to use as many channels as the number of maximum simultaneous notes the device can sound. A value of 1 means you just want to use 1 channel. However, this "number of channels" value is mainly intended for monotimbral devices -- devices that can only play one instrument sound at once. The main example is
a MIDI guitar controller would send a Mono Mode message set for 6 channels, then each string would transmit notes monophonically on unique channels and each channel can have unique pitch bend.
Modern devices are multitimbral -- they can play multiple instrument sounds at once. A multitimbral device effectively acts like it contains 16 single-channel monotimbral sub-devices that are each listening to single MIDI channel and control a single instrument sound. If a multitimbral device supports Mono mode, then when you send a Mono On message to a channel, the "number of channels" value is usually always treated as if it were 1, no matter what value is sent.