- meta: 0x51 : set tempo
- other meta: MidiMeta() called (user code can send out lyrics and other meta information)
- SysEx device control: 0x01 : master volume (only in file mode!)
- channel message: 0x80 note off, 0x90 note on, 0xc0 program, 0xe0 pitch wheel
- channel message 0xb0: parameter
- 0x00: bank select (0 is default, 0x78 and 0x7f is drums, 0x79 melodic)
- 0x06: RPN MSB: 0 = bend range, 2 = coarse tune
- 0x07: channel volume
- 0x0a: pan control
- 0x0b: expression (changes volume)
- 0x0c: effect control 1 (sets global reverb decay)
- 0x26: RPN LSB: 0 = bend range
- 0x40: hold1
- 0x42: sustenuto
- 0x5b effects level (channel reverb send level, channel-specific, default is 12)
- 0x62,0x63,0x64,0x65: NRPN and RPN selects
- 0x78: all sound off - immediately fade all notes on this channel
- 0x79: reset all controllers on this channel
- 0x7b, 0x7c, 0x7d: all notes off - put all notes to release (except ones with hold or sustenuto)
All 16 channels and multiple notes per channel are available. The total simultaneous audible notes depends on the clock frequency and what instruments are used (different instruments take varying amounts of processing power).
vs1053b: There are 15 different default Reverb settings in the low 4 bits of the parametric_x.config1 register (X:0x1e03). Values 2 to 15 select a default room size (internal 350 to 4900). 0 will enable the reverb depending on the value of CLOCKF (3.0x or higher clock enables reverb). 1 means reverb is disabled.
vs1103b: There are 15 different default Reverb settings in the low 4 bits of the parametric_x.midiConfig register (X:0x1a03). Values 2 to 15 select a default room size (internal 350 to 4900). 0 will enable the reverb depending on the value of CLOCKF (3.0x or higher clock enables reverb). 1 means reverb is disabled.
When you control Reverb through MIDI controls (Parameter / effect control 1), all control values from 0 to 127 are valid (internal 0..4064).
In vs1103b Reverb is mutually exclusive with EarSpeaker.
The UART buffer is a bit too short and it is possible to overflow it with constant UART transmit if too many notes are active at the same time. A fix is available in the RTMIDI Application: http://www.vlsi.fi/en/support/software/ ... tions.html .
It seems the size of the UART FIFO is only an issue when sending the midi data through SDI. If my math below checks out, there should not be issue when you use the 31250bps RT-MIDI UART speed. Issues with the original 16-byte UART FIFO might arise due to MIDI messages that are longer than 15 bytes, specifically sysex and meta messages. These should be removed and not sent.
1. RT-MIDI can send 16 bytes in 16/3125=5.12ms
2. The MIDI decoder produces 64-sample blocks, so for full polyphony the sustained maximum time is 64/44100=1.45ms for 16 bytes of MIDI data. This time can be temporarily exceeded if a lot of notes come on at the same time and other notes need to be decayed/faded out. Even if it takes double time, there would still be plenty of time to get back to decoding MIDI messages. The higher the clock and the lower the polyphony, the shorter time is spent generating the instruments.