The role and benefits of procedures are:
- Realize full plug & play self-configuration
- Create a de-facto interoperability
- Hide the complexity and the abstraction
- Automate the processes wherever possible
- Offer validated routines for typical tasks
- Call everything by names not numbers
- User feedback - Warning messaging system (missing peripherals, battery low, overheating, etc.)
- Display sharing
- Unified storage system
- Remote editing (establishing links, modifying named parameters and triggering actions)
- Data querying (local use/display of remote information)
Procedures as turnkey codeUsually, implementing procedures is part of the application coder job; this is not the case with CopperLan where these are available ready to use.
Procedures are implemented as code routines:
- The network handling resides in the VNM.
- In every application (software or embedded), the CopperLan procedure code resides in the CHAI.
The VNM (Virtual Network Manager)
In a CopperLan setup, procedures shared by all members take care of identifying added/removed equipment while the VNM is in charge of network service and interfacing with third-party drivers for extending its reach to physical networks and streaming management.
Because computers should be able to run CopperLan applications even without being fitted with CopperLan physical connectivity, the VNM emulates a physical network.
The VNM is a dynamic multiport virtual device to which multiple CopperLan applications can connect. It also handles several virtual MIDI ports for existing MIDI applications, in addition to serving as a bridge to various physical network links handling CopperLan.
The CHAI (CopperLan Host Application Interface)
This is the part of code that is offered to manufacturers as a foundation for embedded products or computer applications, on top of which they can build their application.
Functions offered range from the network connection to the setting of accepted clock messages or complex procedures such as full remote editing.
- For embedded products with Ethernet, the CHAI sits in the CopperLan-Ethernet chip and takes care of the communication with the host microcontroller. The host MCU only needs to integrate a small CHAI-Link client code.
- For USB peripherals, only a CHAI-link client sits in the product's microcontroller, talking through the USB link to its related CHAI-link server inside the computer. This approach allows designing a CopperLan compliant product using any USB-capable MCU.
- For software applications in a computer, the CHAI is part of every application code.
Helper functionsThe CHAI is not only about serving CopperLan's network needs; we have identified several SW procedures that may be needed in many products (e.g. Creating virtual or physical MIDI ports)
Knowing that many users will want to combine MIDI and CopperLan, the need for a smooth integration was part of the initial requirements.
CopperLan has been carefully crafted to be technically compliant with MIDI.
- CopperLan accepts any MIDI message - all MIDI messages are converted into CopperLan messages to travel the CopperLan network.
- CopperLan can emulate any MIDI message - despite CopperLan being a more precise and richer messaging system, there is a simple mechanism to convert CopperLan to MIDI: the extraneous part of the CopperLan information is rounded or dropped if there is no direct equivalent MIDI messages that have no meaning or use in CopperLan are nevertheless converted so that they can be carried through the network to a MIDI destination. Within CopperLan, MIDI SYSEX messages become addressed and packetized ; this allows having several SYSEX flows to be active simultaneously in one setup and simultaneously feed different or multiple destinations and output ports (where they will be reassembled into plain MIDI sysex). Incoming MIDI clocks are converted to CopperLan clocks - as they become labeled, several clocks can coexist in one setup and simultaneously feed different destinations and output ports (where they will become MIDI clocks). When they are sent to a MIDI output, high precision CopperLan clocks are phase-adjustable (in both time directions) as they become MIDI clocks. This could prove useful to counteract delays in old MIDI equipment.