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.