[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MidiShare Info



              MidiShare 1.68 is publicly available at ftp.grame.fr


                               - OVERVIEW -

MidiShare is a real-time multi-tasks Midi operating system specially devised
for the development of musical applications. Its innovative features and
careful
design, result of 6 years of research and development, provide developers with
a powerful and efficient toolbox for developing professional Midi applications.

MidiShare is based on a client/server model. It is composed of four main
components : an event manager, a time manager, a task manager and a
communication manager. The event manager provides an uniform way to process
and store midi events. The time manager and the task manager control the
real-time behavior of applications. The communication manager is in charge
of both inter-applications and midi communications.

The system can be delivered for Apple Macintosh or Atari computers.
MidiShare version 1.68 for the Macintosh support up to 64 client applications,
256 Midi ports, Midi TimePiece interface and Ethernet Midi communications.
An application provided with the kit allows MidiShare and MidiManager
applications
to communicate. Interfaces are available for MPW-Pascal, MPW-C, Think-C,
Common Lisp.

                        - TECHNICAL CONSIDERATIONS -

MidiShare offers several advantages to developers in terms of code efficiency,
portability and easiness of developing sophisticated real time Midi
applications. It avoids many complexities and limitations of other Midi
operating systems.

Communications are based on high level events instead of packets of midi
bytes. These events are easier and faster to process than packets of Midi
bytes. For example large system exclusive messages never need to be splitted
into multiple packets. They are sent, received and processed as a whole like
any other Midi events. Events are not limited to strict Midi messages.
MidiShare offers full support for Midi File 1.0 events and future versions
will provide additional events for multimedia.

The communication manager allows multi-ports configurations (up to 256 physical
ports) to be easily handled. All MidiShare events are stamped with a full Midi
device address defined by a physical port number and a Midi channel. Client
applications just need one input point and one output point to communicate with
all the Midi devices (up to 4096 devices). Connections between applications are
easier for users. Application code is simpler and the full device address of an
event is never lost during inter-application communications.

MidiShare includes its own dynamic memory manager, specially designed for
real-time operations at interrupt level. This provides applications with a
convenient and efficient way for storing, copying and deleting Midi events
without using the host memory manager. All MidiShare internal buffers and
queues are dynamically sized avoiding overflow problems encountered in
other systems.

Several mechanisms are proposed to control the real time behavior of Midi
applications. The time manager offers 1ms resolution and supports accurate
SMPTE synchronization in a transparent way.  Application functions called
"alarms" can be installed to deal with incoming events in real time at
interrupt level.

The heart of MidiShare is a real time scheduler. It allows events to be sent
in the future as well as delayed function calls (functions to be called in
the future). Delayed function call is a very fast and powerful mechanism for
complex multi-tasking applications when multiple computing need to be done
in parallel. A proprietary scheduling algorithm ensures a very low constant
time scheduling costs per event, even when the scheduler is heavily loaded.


A interface  MCL 2.0 / MidiShare and a  tutorial is provided in the
developer kit.
MidiShare is currently used by Peter Stone in Symbolic Composer to manage Midi
input/output.


MidiShare is a public domain product. It has been developped at GRAME.
For any additionnal information, please, direct your request to the
following address:
               GRAME Research laboratory
               6 quai Jean Moulin BP 1185
               69202 LYON CEDEX 01 FRANCE
               e-mail : grame@rd.grame.fr

- -------------- GRAME
               6 quai Jean Moulin BP 1185
               69202 LYON CEDEX 01
               Ph (33) 72.07.37.00 Fax (33) 72.07.37.01
               e-mail : letz@rd.grame.fr