MIDI::Music - Perl interface to /dev/music.

Version 0.01

Description

   MIDI::Music is a high-level interface to /dev/music, and
   is designed to function on any *NIX system supported by
   Open Sound System v.3.8 or higher.

   Playback through internal and external MIDI devices is
   supported, as is the "recording" of events from an
   external device. Additional goals in designing MIDI::Music
   were:

       1. to provide an API with as few methods necessary to
          satisfy 99% of MIDI programmers' purposes.

       2. to provide easy integration with Sean M. Burke's
          MIDI-Perl suite by means of a common event
          specification.

   There are, at present, essentially three things you can do
   with MIDI::Music:

       1. Play a MIDI file.

       2. Play a series of events defined in an event structure,
          which is a LoL as described in the the MIDI::Event
          manpage documentation.

       3. Read a series events from an external device. These
          events are returned as the same type of event
          structure as in [2].

Requirements

   1. You must have Open Sound System v.3.8 or greater installed on your
      system. For "realtime" support in recording (see MIDI::Music POD),
      the commercial version of OSS is, to the author's knowledge,
      necessary. OSS is available from the 4Front Technologies website:

          http://www.opensound.com/

   2. In order to use the playmidifile() method for playing standard MIDI
      files, Sean Burke's MIDI-Perl modules must be installed. MIDI-Perl
      is available from the CPAN:

          http://www.cpan.org/

Download

   The latest version may be downloaded from the MIDI::Music homepage:

       http://www.pdamusic.com/computer/midi-music.html

Installation

   If you have OSSLib installed, edit Makefile.PL so that the variable
   "$OSSPATH" points to the appropriate location (if you have the
   commercial release of OSS installed, $OSSPATH should point to the
   directory in which you installed it).

   Then, the usual:

   perl Makefile.PL
   make
   make test (optional)
   make install

To Do

   * Add methods for obtaining synthesizer information
     (number, types of available devices).

   * At present, MIDI::Music supports the interface with
     only one open device at a time. Future versions will
     allow for simultaneous instances of initialized
     devices, if possible.

   * At present, system-exclusive events (produced by bulk
     dumps, etc.) are not included in the event structures
     returned by the readevents() manpage. This should be
     fixed in the next release.

   * Streamline the playmidifile() code for greater
     memory-efficiency, if possible.

Author

   Seth David Johnson
   [email protected]

Copyright

   Copyright (c) 2001 Seth David Johnson. All Rights Reserved. This
   program is free software; you can redistribute it and/or modify
   it under the same terms as Perl itself.

See Also

   The Open Sound System homepage (4Front Technologies):

       http://www.opensound.com/

   The OSS Programming Guide (PDF), describing in some detail
   the /dev/music API on which MIDI::Music is based:

       http://www.opensound.com/pguide/oss.pdf

   Sean M. Burke's MIDI-Perl extensions provide methods for
   dealing with MIDI files; you will need to have them
   installed if you wish to use the playmidifile() method.

   The documentation for the MIDI::Events manpage provides a
   description of the "event structures" common to
   MIDI::Music and MIDI-Perl.

   Alex McLean's experimental the MIDI::Realtime manpage is
   an earlier attempt to provide a synthesizer interface to
   Perl. MIDI::Realtime takes an entirely different approach
   both in terms of interface and in terms of implementation,
   and may be better suited than MIDI::Music to specific
   purposes.

   The aforementioned extensions can be obtained from the
   CPAN:

       http://www.cpan.org/