ftp.nice.ch/pub/next/unix/music/cm.sd.tar.gz#/midi

README
 
examples/
 
mcl-midi.c
[View mcl-midi.c] 
mcl-midi.c.o.hqx
 
mcl-midi.lisp
 
messages.lisp
 
midi.lisp
 
midifile.lisp
 
next-2-0-midi.c
[View next-2-0-midi.c] 
next-3-0-midi.c
[View next-3-0-midi.c] 
next-akcl-midi.lisp
 
next-clisp-midi.lisp
 
next-excl-midi.lisp
 
next-midi-3-0-block.c
[View next-midi-3-0-block.c] 
sgi/
 
winmidi.c
[View winmidi.c] 
winmidi.def
 
winmidi.dll
 
winmidi.lsp
 

README

This directory contains the sources for Common Music's MIDI support.
In addition to the files here, see stella/midi.lisp for Stella's
high level midi interface. For documentation see doc/midi.rtf.

Directory contents:

examples/		example files (see also stella/examples)
mcl-midi.c		c interface to midi driver in MCL
mcl-midi.c.o.hqx	binhexed object file to avoid MPW
mcl-midi.lisp		low level midi interface in MCL
messages.lisp		midi message definitions
midi.lisp		high level midi real time
midifile.lisp		midi file utilities
next-2-0-midi.c		c interface to midi driver NeXTStep 2.1
next-3-0-midi.c		c interface to midi driver NeXTStep 3.0
next-akcl-midi.lisp	low level midi interface in AKCL
next-excl-midi.lisp	low level midi interface in Franx
playmidifile		obsolete NeXTStep utility

Common Music's MIDI implementation is conceptually split into two
groups of files.  The first group consists of "high level"
implementation independant code. (Within this group the files
may be further organized from high to low according to their level
of abstraction: midiscore.lisp, midifile.lisp, midi.lisp and
messages.lisp). The second implementation group consists of
"low level" hardware/os dependant code and foreign language code
for midi real time.

---------------HIGH LEVEL (implementation independent)------------
midifile.lisp
midi.lisp
messages.lisp
---------------LOW LEVEL (implementation specific)----------------
Macintosh:  mcl-midi.lisp + mcl-midi.c
NeXT+Franz: next-excl-midi.lisp + next-3-0-midi.c, next-2-0-midi.c
NeXT+AKCL:  next-akcl-midi.lisp + next-3-0-midi.c, next-2-0-midi.c

All ports of common music will support generating midi level 0 
files.  Porting the midi real time portion of the code to a new machine,
OS, or Lisp involves writing functions to implement the appropriate low
level interface to some particular midi driver. This low interface is
defined in terms of lisp functions that either provide a midi service
directly or else call foreign functions to do the work. All of these
low level lisp function have ff- as a function name prefix (at one
point ff stood for "foreign function")  A list of these functions and
their arguments may be found in the introductory comments to midi.lisp.
Probably not all ports will be able to (or need to) to impleement 
the full set of ff- functions, but at a minimum we need to be able
to open/close conection to the midi driver, ask/set the time, and
read/write messages.

Its possible to get a bare bones version of the midi code up and
running without loading all of common music. Just create a common
music package and then compile/load at least messages.lisp.  Only
the file midiscore.lisp should depend on CLOS the rest of Common
Music, but you will also have to comment out the function ask-port
in midi.lisp until i can fix it.

;;; this compiles/loads the basic midi files, but comment out
;;; the function ask-port in midi.lisp first.

#+cltl2 (defpackage common-music (:use :lisp) (:nicknames :cm))
(in-package :common-music)
(compile-file "messages.lisp")
(load "messages")
(compile-file "midi.lisp")
(load "midi")
(compile-file "midifile.lisp")
(load "midifile")

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.