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
    seth@pdamusic.com

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/