Introduction to Improv

    
    
         Improv is a C++ environment for writing 
    programs that enable musician/computer interaction using MIDI instruments.
    Improv programs can be written in special pre-defined environments, or
    they can be written from scratch using just the basic MIDI 
    input and 
    output classes.
    
    

    More information about Improv can be found on the Documentation page.

Components

    Improv consists of two major components which can be downloaded from the download page:

    1. A library of C++ classes primarily consisting of generalized MIDI I/O communication functions which can be used to create programs for performance of interactive computer music. Currently works with Windows 95 and Linux computers. The library is described on the library overview page.

    2. An example program set which demonstrates how to use the library. There are two primary programming environments: one for MIDI keyboard controllers, and one for Max Mathew's Radio Drum. Also, you can create your own environment without too much effort or use just the basic MIDI input/output functions to write useful or non-interactive programs which need only basic MIDI input/output. The example programs are described on the examples documentation page, and source code for the examples can be seen in examples directory.

Portability

    Currently, programs using the Improv library run in the Windows 95/NT and Linux operating systems with Intel 75 MHz Pentium CPU's or better. A compile-time definition is used to specify which operating system is being used. For example, the symbol LINUX is defined when compiling for linux operating systems, and VISUAL is used when compiling for Windows 95/NT systems using Microsoft Visual C++.

    The Improv programming environment is designed to be portable to different computer operating systems. Porting Improv to other computer systems would involve:

    1. writing a MIDI input class definition, named MidiInPort_xxx, where xxx is the system type. This class is inherited privately by the class MidiInPort. Example class definitions include: MidiInPort_visual, MidiInPort_linux, and MidiInPort_unsupported.

    2. writing a MIDI output class definition, named MidiOutPort_xxx, where xxx is the system type. This class is inherited privately by the MidiOutPort class. Example os-specific class definitions include: MidiOutPort_visual, MidiOutPort_linux, and MidiOutPort_unsupported.

    3. rewriting the SigTimer class to get access to the computer's clock cycle count. Currently this class is only useable on Pentium-based CPU's.

    4. There is also a KeyboardInput class which handles single key presses from the computer keyboard. This class is used to handle Windows 95/NT and Unix operating system computer keyboard events in a uniform manner.
    
    





Current library version of Improv is 2.2.6, released Thu Dec 2 17:52:30 PST 1999.