- 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).
Reverb
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.
Real-Time MIDI
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 .
Addendum
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.
Instrument List for reference
Note that the instruments are enumerated from 1, while in the MIDI messages the instruments start from 0, so remember to do the conversion.
- Acoustic Grand Piano
- Bright Acoustic Piano
- Electric Grand Piano
- Honky-tonk Piano
- Electric Piano 1
- Electric Piano 2
- Harpsichord
- Clavi
- Celesta
- Glockenspiel
- Music Box
- Vibraphone
- Marimba
- Xylophone
- Tubular Bells
- Dulcimer
- Drawbar Organ
- Percussive Organ
- Rock Organ
- Church Organ
- Reed Organ
- Accordion
- Harmonica
- Tango Accordion
- Acoustic Guitar(nylon)
- Acoustic Guitar(steel)
- Electric Guitar(jazz)
- Electric Guitar(clean)
- Electric Guitar(muted)
- Overdriven Guitar
- Distortion Guitar
- Guitar Harmonics
- Acoustic Bass
- Electric Bass(finger)
- Electric Bass (pick)
- Fretless Bass
- Slap Bass 1
- Slap Bass 2
- Synth Bass 1
- Synth Bass 2
- Violin
- Viola
- Cello
- Contrabass
- Tremolo Strings
- Pizzicato Strings
- Orchestral Harp
- Timpani
- String Ensembles 1
- String Ensembles 2
- Synth Strings 1
- Synth Strings 2
- Choir Aahs
- Voice Oohs
- Synth Voice
- Orchestra Hit
- Trumpet
- Trombone
- Tuba
- Muted Trumpet
- French Horn
- Brass Section
- Synth Brass 1
- Synth Brass 2
- Soprano Sax
- Alto Sax
- Tenor Sax
- Baritone Sax
- Oboe
- English Horn
- Bassoon
- Clarinet
- Piccolo
- Flute
- Recorder
- Pan Flute
- Blown Bottle
- Shakuhachi
- Whistle
- Ocarina
- Square Lead (Lead 1)
- Saw Lead (Lead)
- Calliope Lead(Lead 3)
- Chiff Lead (Lead 4)
- Charang Lead (Lead 5)
- Voice Lead (Lead 6)
- Fifths Lead (Lead 7)
- Bass + Lead (Lead 8)
- New Age (Pad 1)
- Warm Pad (Pad 2)
- Polysynth (Pad 3)
- Choir (Pad 4)
- Bowed (Pad 5)
- Metallic (Pad 6)
- Halo (Pad 7)
- Sweep (Pad 8)
- Rain (FX 1)
- Sound Track (FX 2)
- Crystal (FX 3)
- Atmosphere (FX 4)
- Brightness (FX 5)
- Goblins (FX 6)
- Echoes (FX 7)
- Sci-fi (FX 8)
- Sitar
- Banjo
- Shamisen
- Koto
- Kalimba
- Bag Pipe
- Fiddle
- Shanai
- Tinkle Bell
- Agogo
- Steel Drum
- Woodblock
- Taiko Drum
- Melodic Tom
- Synth Drum
- Reverse Cymbal
- Guitar Fret Noise
- Breath Noise
- Seashore
- Bird Tweet
- Telephone Ring
- Helicopter
- Applause
- Gunshot