Dear Thorsten, dear MIDIBOX community
Since several months I have the idea of a sophisticated MIDI Patchbay/rtp-MIDI LAN device in my mind based on your beloved IIC-MIDI & MIOS32 Hardware platform.
After some top-down and bottom-up mindgames, I started buttom-up by defineing a iic interface protocol for interconnection the STM32 Module with the iic midi IF.
Motivation:
The MIDIBOX IIC MIDI Module (s. http://www.ucapps.de/mbhp_iic_midi.html) can be enhanced to act as a pair of “intelligent” MIDI sockets,
keeping away the computational load of basic MIDI protocol processing in a host as the CORE_STM32 Module.
The MIOS32 based host then can then handle the more application specific tasks like a MIDI patchbay (eventually with a LAN Interface for processing the rtp-MIDI protocol stack)
or a MIDI Sequencer like the current MIDIbox SEQ V4 (maybe V5).
What would be nice to have as enhancement for the curent implementation:
- Filter/Mute commands for MIDI IN and MIDI OUT to minimize transfer of unused commands on MIOS_IIC_ByteReceive and on MIDI OUT line:
1.1 MIDI Channel Voice msg
1.2 MIDI SYSTEM COMMON msg
1.3 MIDI SYSTEM REALTIME msg
- Autonomous handling of Active Sensing without involving the host under normal operation conditions.
(Active Sensing may be usefull to dectect cable breaks or unintended power losses in a networked remote environment)
-
Handling of Running Status on MIDI Input & Output
-
Exact same REALTIME Command execution on all MIDI Outs.
Since the actual IIC implementation of the PIC 16F88 lacks of the broadcast address definition, this could be achieved by using a scheduled
(delayed) command which is processed when a dedicated pin, common for all IIC MIDI modules is triggered by the host.
-
Prioritized processing of REALTIME commands at MIDI Input
-
PANIC (Sequence of All Notes off, Reset all controllers etc. on all MIDI channels) on MIDI Output.
-
Housekeeping commands. (Initialize, Bufferstatus, Reset)
Preconditions for this protocol enhancement:
-
downward compatibility to the current IIC_MIDI transfer protocol
-
No violation of Thorsten´s inspiration from the USB MIDI specification.
-
use of the current hardware platform (s. http://www.ucapps.de…hp_iic_midi.pdf)
-
IIC addr. extension from 4 to 8 slave devices (maybe RA2?) on J1
-
1 additional interrupt generating input pin (maybe RA3?) on J1 as a common “execute” signal for scheduled MIDI Realtime Commands (s. below)
Additional RAM resources used in PIC16F88 (1st guess):
- MUTE Patterns
1.1 Channel Voice msg: 16 bytes
1.2 SYSTEM COMMON msg: 1 byte
1.3 SYSTEM REALTIME msg: 1 byte
18 bytes/direction => 36 bytes in unused GPR1
- Additional SYSTEM REALTIME cmd handling
2.1 Prioritized REALTIME msgs: 4 x 1 byte
2.2 Scheduled REALTIME msgs: 4 x 1 byte
8 bytes in SHARED RAM area (73..7F)
-
Active Sensing Processing: ca. 4-8 bytes in GPR1
-
Additional states: ca. 4 bytes in SHARED RAM or GPR0 area
Comments and suggestions wellcome!
Regards
Jo
[IIC_Midi_Cmd Protocol.txt](< base_url >/applications/core/interface/file/attachment.php?id=8680)