
MIDI On Unix!!
What's it all about?
Together with a few individuals out on the internet, I've been developing
a general purpose MIDI system for Unix. The system allows you to control
multiple MIDI interfaces for sequencing or other purposes.
Supported Operating Systems:
- Linux
- OpenBSD
- Sun Solaris 2.x
- SGI IRIX 5.x, may work on 6.x but has not been tested.
- Note: The software should be buildable on almost any normal Unix,
however, these are the only platforms that have been tested significantly.
Core MIDI System Components:
- The MIDI Daemon --
This program drives the underlying system
dependent hardware, provides a high-resolution timing mechanism,
and does all of the low level dirty work. In order to perform well,
the MIDI daemon is capable of running itself as a real-time process on
operating systems that support real-time scheduling. In practice, the
MIDI daemon does just fine running as a normal process however.
While running, even playing fast and furious sequences, the MIDI
daemon consumes almost no CPU time. In tests on my Ultra 2, after playing
15 or 20 MIDI sequences, the total accumulated CPU time is less than 1
second!!! Most of the MIDI daemon's time is spent asleep waiting until
its time to output a MIDI message to one of the MIDI interfaces. The
extremely low CPU usage accounts for its excellent performance even when
running as a normal priority process. Most Unix process schedulers favor
programs with low accumulated CPU time, so the MIDI daemon gets the first
shot at the CPU when it becomes runnable.
- The MIDI Library --
The MIDI library provides the API used by application programs.
Applications use the API functions to do their MIDI work, they don't need
to worry about the low-level nasty details of particular MIDI interfaces,
or worry about doing real-time MIDI event timing, this is provided
transparently by the MIDI daemon and mapper support software.
Included MIDI Applications:
- An Example MIDI File Player Application --
A simple MIDI file player is included with the system as an example
MIDI application. It plays type 1 MIDI files, and can play a list of
files back to back.
- A Software Wavetable Synthesizer: --
I'm currently 30% done with a software wavetable synthesizer which
communicates with the MIDI daemon. In my preliminary tests, the
synth is capable of continuously sustaining more than 42 notes of
polyphony on a Sun Ultra with a 167MHz CPU. The maximum polyphony
go as high as 64 notes for short durations without causing problems.
The softsynth uses 44.1KHz 16-bit stereo audio, and supports the Sun
audio devices. This software will be included with future distributions
of the MIDI system when it supports more audio hardware and is closer
to "finished".
Currently Supported MIDI interfaces:
Source code distributions:
Links to Other Unix MIDI and Music Software and Information
Support, Questions, Contacts etc:
If you have any trouble building or using this software, please send
me some email and I'll get you fixed up.
johns@megapixel.com
Credits:
These individuals have helped the project along with their suggestions,
testing, and code contributions.
- John Stone,
-- Primary author and maintainer.
- Rob Fletcher,
-- SGI driver, Roland SC-7 driver, lots of testing.
- Dev Mazumdar,
-- Suggestions, and Open Sound System drivers, and info.
- William R. Bishop,
-- IRIX 6.4 testing, and numerous suggestions.
- Laurent Coray, of Octet designs --
Laurent was the proprietor of Octet designs, and he is
the one that provided me with the necessary midiator
documentation as well as hardware to test on when I
originally wrote this software, so a lot of credit goes
to him. Unfortunately, Laurent lost his battle with cancer
in 1999, which also resulted in Octet Designs closing their
doors. This little tidbit is my thanks to him for his help.
As of September 1999, the midiator products have
re-surfaced at http://www.midiator.com/