Improvise 1.3 © 1992-1995 by David Pannett Contents Overview 1 Installation 2 New Features 2 What Kinds of Music Can I Make? 3 Included Files 4 Device Compatibility Issues 5 Learning to Use Improvise 1.3 6 Recording to MIDI 7 Registration 8 Note: this file documents Improvise version 1.30. Overview Improvise 1.3 is a program that composes algorithmic MIDI music in real time, on up to sixteen channels at once. You can control parameters governing pitch, rhythm, tempo, texture, etc. as the music plays, immediately hearing the effect of all changes -- or simply let the program produce endlessly new music, without requiring any real time interaction on your part. You can save groups of settings and parameters, optionally including a map of MIDI programs and/or a 'mix' of MIDI volume information, allowing you to preserve your algorithmic compositions either for later reproduction, or as the basis for future musical explorations. You can also save MIDI program maps and 'mixes' independently of settings and parameters. Algorithmic MIDI output can also be saved directly to a Standard MIDI file, permitting later playback and editing of live real-time algorithmic performances. Improvise 1.3 can be used in many ways -- for example, to produce background music on the desktop, to compose, to play a virtual algorithmic instrument, and to produce MIDI output for the use of other programs. Experiment and enjoy -- soon you will be on your way to producing a wonderful variety of original music! Installation To install Improvise 1.3, run SETUP.EXE either directly from the distribution diskette or from a temporary directory on your hard drive. You will be prompted for the name of a destination directory to which to install the program files. This directory will be created for you if it does not already exist. Improvise 1.3 will identify all available MIDI devices (i.e. those with installed Windows drivers), and use the Microsoft MIDI Mapper by default. You may select a different device in the 'MIDI | Devices' submenu if you wish. New Features New features added since version 1.0 include: •Full context-sensitive F1 help. Press the F1 key at any time to get context-sensitive help on any menu item, dialog control, message box, etc. •Improved user interface, including extended button bar, 'touch-screen' access to most- used program functions via 'Current Selections' display, and expanded status line help. •Mixer dialog. Lets you adjust overall volume level and individual channel volume levels, creating a mix that can be preserved and reused. •Expanded options menu. Supports new file types, saving user preferences, etc. •General MIDI example files. Now included with this program are *.IMP and *.PGS example files supporting general MIDI patch assignments. •Device compatibility mode. Supports synthesizers that ignore the 'All notes off' message. •MIDI pass-through support. Allows MIDI input to be passed to a MIDI output device. •Tracking of settings files. The name and status of the current settings file now appear in the title bar of the Improvise main window. ('Unmodified' status refers to the settings in the settings file; program changes and mix information are not tracked in this way.) •Record to MIDI. Lets you save algorithmic MIDI output to a Standard MIDI file, permitting later playback and editing of your real-time algorithmic performances. Improvise 1.3 can read files created by earlier versions of Improvise; no conversion is required. For files created under Improvise 1.0, if you set the mix to full volume (e.g. by loading FULL.MIX), the old files will play identically under Improvise 1.3 as under Improvise 1.0. What Kinds of Music Can I Make? Improvise 1.3 can produce a surprising variety of music. The basic possibilities are determined in part by the choice of algorithm to be used (selected in the 'Style' menu) -- one of Jazz (MM Timer) Experimental (MM Timer) Experimental (System Timer). The last two of these are different implementations of the same algorithm and produce the same music, although one uses the preemptive Multimedia timer, the other the cooperative System timer. The 'Jazz' algorithm is only available using the Multimedia timer. The 'Jazz' algorithm uses diatonic harmonies up to and including eleventh chords, meters having from two to seven quarter-note beats per measure, note values from half notes to triplet thirty-second notes, and modulation through all major keys (and the associated transpositions of the dorian, phrygian, lydian, mixolydian, aeolian and locrian modes). The music produced on any given MIDI channel may derive its pitches either as components of the current harmony or as melodic material, depending on the settings of the various parameters for that channel. Melodic material is based on diatonic scales (ionian, dorian, phrygian, lydian, mixolydian, aeolian and locrian), and developed according to weighted rules that express preferences favoring continuity, flexibility and coherence. Knowledge of the current harmony is maintained by all MIDI channels, but the rhythmic anticipation of a chord change or modulation is permitted. The 'Experimental' algorithms, on the other hand, embody no traditional notion of key or meter, but instead use atonal harmony, aleatory chromaticism and unmetered rhythm. This algorithm treats all pitches as fundamentally functionally equivalent. Conventional harmonies and pitch successions are neither preferred nor avoided, but unusual combinations will tend to predominate. Rhythm is handled simply on the basis of the relative likelihood of the occurrence of any musical event (a note, a chord or a rest) at any given time, without establishing any kind of proportional system of rhythmic values. This makes possible effects of extreme rhythmic freedom, suggesting (for example) a flexible tempo -- depending, of course, on the particular parameters selected. Both the 'Jazz' and 'Experimental' algorithms can be used to produce a variety of music, based on the choice of MIDI programs, the number of MIDI channels active, and the various settings and parameters selected. For example, the 'Jazz' algorithm is not limited to producing jazz-like textures (whether solo piano, small ensemble or large band), but can be used for such things as chorale harmony, polyrhythmic percussion, neoclassical tonality -- nearly any style of music that can be conceived in terms of metrical rhythmic material and/or diatonic pitch material. The 'Experimental' algorithm can be used to produce music ranging from ersatz Schoenberg to phony Feldman to almost any atmospheric, intense, 'free jazz' or experimental music that you can imagine. Included Files The following files will be installed by the setup program: •IMPROVIS.EXE -- the main executable file •IMPMIDI.DLL -- implements much of the program's functionality •IMPSPIN.DLL -- custom spin control •BWCC.DLL -- other custom controls; installed in your SYSTEM directory •IMPROVIS.HLP -- Windows help file for Improvise 1.3 •README.WRI -- this file •GENMIDI.TXT -- guide to General MIDI patch and key assignments Plus the following example and utility files: •ALLOFF.IMP -- settings file; all channels off ('play' this file to use the mixer with MIDI thru) •CHORALE1.IMP -- settings file; simple chorale-texture example •GENCLOUD.IMP -- settings file; General MIDI strings and piano •GENDFLT.IMP -- settings file with default parameters; includes General MIDI program changes •GENDFLT.PGS -- programs file; the same program changes as in GENDFLT.IMP •GENDRUMS.IMP -- settings file; General MIDI percussion jam; drums on channel 16 (try toggling various channels on and off) •GENDRUM2.IMP -- settings file; General MIDI percussion jam; drums on channel 10 (try toggling various channels on and off) •GENEX999.IMP -- settings file; General MIDI experimental (synth, bass and drums); drums on channel 10 •GENGROOV.IMP -- settings file; General MIDI groove •GENJIMBO.IMP -- settings file; General MIDI (contributed by James P. Walsh) •GENJZ01.IMP -- settings file; General MIDI jazz (Rhodes, bass and brass) •GENJZ02.IMP -- settings file; General MIDI jazz (piano and bass) •GENJZ03.IMP -- settings file; General MIDI jazz (piano, bass, drums, trumpet and tuned percussion); drums on channel 10 •PRT2DFLT.IMP -- settings file with default parameters; includes Proteus/2 program changes •PRT2DFLT.PGS -- programs file; the same program changes as in PRT2DFLT.IMP •PRT2JZ01.IMP -- settings file; Proteus/2 jazz •PRT2JZ02.IMP -- settings file; Proteus/2 jazz •U220JZ01.IMP -- settings file; U-220 jazz •U220JZ01.PGS -- programs file; the same program changes as in U220JZ01.IMP •WINDCHIM.IMP -- settings file; General MIDI wind chimes •FULL.MIX -- mix file; sets mix to full volume Filenames having the form GEN*.IMP or GEN*.PGS indicate example files intended for use with General MIDI patch assignments. Files named PRT2*.IMP and PRT2*.PGS are example files for the E-mu Proteus/2. Files named U220*.IMP and U220*.PGS are example files for the Roland U-220. Device Compatibility Issues Not all MIDI devices offer equivalent features. For example, some synthesizers do not respond on all sixteen channels, or use certain channels for specialized functions only (e.g. for drums or for configuration change messages). Even General MIDI synthesizers may differ in some of these respects, so your mileage may vary with some of the provided example files. See your synthesizer documentation for more information on which MIDI channels are supported by your hardware. Another important compatibility issue is that different synthesizers may interpret the same program change message in completely different ways. For example, while most synthesizers will provide an acoustic piano sound in response to program change 0, the E-mu Proteus/2 (which lacks an acoustic piano sound) responds with a solo cello. The General MIDI specification offers a partial solution: one can configure most synthesizers to respond in a standard way to program change messages. The Microsoft MIDI Mapper, included with Windows 3.1, can be particularly useful in this regard. See the included file GENMIDI.TXT for more information. Improvise 1.3 is not limited to any particular patch configuration, keyboard mapping, or other set of device dependencies. These compatibility issues mainly apply to the use of the included example files, since in creating your own algorithmic compositions you can tell Improvise to use whichever MIDI channels and MIDI programs you want. The quality of any particular sound, of course, is entirely dependent on your equipment. However, two remaining issues apply in the case of some low-end devices, since in some cases certain MIDI messages may not be supported at all: • If your synthesizer ignores MIDI volume change messages, neither the Mixer dialog nor loading a mix from file will have any effect. •If your synthesizer ignores 'All notes off' messages, you will need to select the 'Device compatibility mode' feature in the 'Options' menu. This will cause a brute force method to be used to turn notes off when stopping play. Experimentation will quickly reveal whether your synthesizer ignores these messages. Note that certain limitations of the MIDI pass-through facility may be device-dependent. See the online help system for more information (keyword: MIDI thru). Finally, note that the Microsoft MIDI Mapper can be used to overcome some of the limitations of many popular MIDI devices, for example by mapping several MIDI channels to a single destination MIDI channel on your synthesizer. Such creative use of the MIDI Mapper can extend the functionality of Improvise 1.3 when used with less capable synthesis hardware. Learning to Use Improvise 1.3 Improvise 1.3 produces algorithmic music in real time, sending its output directly to the selected MIDI device. If you have not already done so, press the 'Play' button to be sure that your system is set up and responding. (See 'Installation', above, if you are having difficulties.) Assuming that Improvise 1.3 is installed and properly communicating with your MIDI equipment, next try loading one of the provided settings files (filenames of the form *.IMP) by choosing 'File | Open...' from the Improvise 1.3 menu. Press the 'Play' button again, then bring up the 'Set Parameters' dialog for an active channel by clicking on the channel number in the 'Current Selections' display. You should be able to alter the parameters affecting that channel and hear the immediate effect on the music produced. Varying the texture, rhythm and pitch parameters will have an especially noticeable effect. Try changing the MIDI programs used on various channels -- clicking on the program number in the 'Current Selections' display will bring up the 'Program Change' dialog, ready for your input. Also try toggling different channels on and off (just click on the 'No' or 'Yes' for that channel in the 'Current Selections' display) to hear the effect on the music produced. By inspecting the settings used for the different channels in the included example files, you should quickly get an idea of how to achieve a variety of musical effects. Improvise 1.3 includes a remarkably complete help system. Status line help provides a short explanation of every program function, and keeps you informed as to what the program is doing during longer operations. Better still, context-sensitive help is always available by pressing the F1 key, whether while browsing the menus, pressing a button, viewing a message box or interacting with a dialog. Special help topics are included to assist you in getting quickly up to speed with Improvise 1.3. The hyperlinks connecting help topics, together with the extensive search capabilities and cross-indexing built into the Improvise 1.3 help system, make it easy to navigate from topic to topic to find the information that you need. Be sure to spend some time exploring the help system, perhaps beginning with the 'Getting Started' topic, then proceeding to the top-level topics referenced on the 'Contents' page -- soon you will have acquired a thorough understanding of how to use the many features available in this program. One short tutorial exercise might be useful before striking out on your own. Begin by unselecting 'Hold channel parameters' in the 'Options' menu, then load GENDFLT.IMP (or another *DFLT.IMP file if more appropriate on your system). Now all channels share the same parameters, as shown by the button that looks like a trident, next-to-last on the button bar. Click that button, and you will be able to adjust the parameters for each channel individually; the button changes shape to show that individual channel parameters are now in effect. Next, with the music playing so that you can hear the effect of your changes as you make them, use the 'Set Parameters' dialog to individually adjust parameters for each channel. (You may want to try this at first with just one channel active at a time.) Experiment by sending program changes, altering the 'mix', sending a random seed, etc., and you've created your own algorithmic composition! Recording to MIDI Improvise 1.3 includes extensive support for recording algorithmic MIDI output to a Standard MIDI file. This feature lets you capture the exact MIDI output of any real-time algorithmic composing or playing you do with Improvise, either for later editing or multitracking in a sequencer program, or just for posterity. To start recording, press the record button (it's the third one on the button bar). If you aren't already playing algorithmic MIDI music with Improvise, the little light in the upper-right corner of the record button will start flashing; it will be steadily lit when you start playing. When you either stop playing, or choose 'End recording' from the 'Controls' menu (or, equivalently, press 'Ctrl+N'), you will be prompted whether to save the recorded MIDI data. (Note that MIDI input is not recorded; only the algorithmic MIDI output is buffered for later saving.) If you answer 'Yes', you will be prompted for a file name to use. Once the MIDI file has been created, you can play it with the Media Player utility included with Windows 3.1 (choose 'Controls | Media Player...' to invoke the Media Player), or load it into your favorite sequencer for further processing. This feature is especially enjoyable for using the real-time aspects of Improvise to their maximum potential. Record complex and otherwise irreproducible live algorithmic MIDI, possibly involving many real-time parameter changes and even multiple instances of Improvise, then play them back exactly as recorded, overdub them, edit and combine them, isolate that great idea and use it in your conventional composing... there are few limits now that Improvise lets you record your real-time experiments. Improvise now supports multiple MIDI file formats and encoding options, in order to facilitate the use of MIDI files produced by Improvise with a variety of other software. These options are persistent, and appear in the 'Save MIDI File' dialog for maximum convenience. See the online help system for more information (keyword: MIDI file). Registration Improvise 1.3 is being distributed as shareware; it is not free. 'Shareware' means that you are encouraged to redistribute this version of the program, with all its included files (including this one), but that if you find the program enjoyable and useful, you are expected to register it. In return you will receive an enhanced version of this program on diskette, free future upgrades, and free technical support from the author. If you continue to use this program beyond a reasonable evaluation period, you must register it. You can register Improvise 1.3 by sending a check or money order for $25 U.S. funds to: David Pannett 10 Garfield St. Natick, MA 01760 USA Compuserve members can optionally choose to register the program online: GO SWREG, then follow the online prompts. The Compuserve registration database ID for Improvise is 2377. Note that some future enhancements to this program will only be made available to registered users, and that the shareware version of this program is provided for evaluation use only. You may not use this program for any commercial purpose whatsoever without first registering it. By registering this program you make it possible for me to continue to add new features (e.g. user-definable algorithms); you help to support the shareware concept, which makes it possible for you to own top-quality software at bargain prices; and best of all, you get a great feeling from doing the right thing. Please direct comments, questions and suggestions to: Compuserve: 74041,1020 Internet: 74041.1020@compuserve.com Many thanks for any and all comments! David Pannett (revised 3/11/95)