midiplay v1.1 This program is copyright 1993 Janne Syväniemi. All Rights Reserved. The program is GIFTWARE. It is freely distributable as long as all files are included in their original form and no extra fee is charged. Midiplay may not be included in any commercial package without author's permission. If you use midiplay, send me anything worth of this little program (especially I would like to see/hear your own compositions in midi format). WHAT IS MIDIPLAY ? Midiplay is a program that can play format 0 and 1 midi files (format 2 has not been tested). It can also print their contents. Other features include: - tempo can be changed - midi channels can be muted or played solo - midi events can be transposed (plus drum channel option) - program change and pitch bender message filter - endless loop option - format 1 files can be played like format 0 files (= format 2) REQUIREMENTS: midiplay should run on any Amiga from version 1.2 and up. Midiplay has been tested only on Amiga 500+ with 3Mb ram, but it has been compiled with Lattice/SAS C compiler v5.04 with KS 1.3 includes, so no >2.0 specific code has been used. INSTALLATION: Copy midi.library v2.0 to your LIBS: directory and midiplay wherever you like. Bill Barton's midi.library is Copyright (C) 1987, 1988, Pregnant Badger Music. More info about midi.library can be found on FredFish disk 227. STARTING MIDIPLAY From CLI: TYPE: midiplay [options] [filename] Only one file is allowed. If no filename has been given, midiplay expects input from current input stream, so redirection can be used. Options: -? usage message -f prints details of the midi file: format, the number of the tracks and the division of a quarter-note. -x prints all meta events in the file. A meta event can express tempo, time signature, key signature or text event (copyright notice, sequence/track name, instrument name, lyric etc.) -n prevents midiplay from sending events to midi port. Using this option you can print all the events without any delay between events. -tXXX sets playing tempo to XXX (BPM). Tempo change messages in the midi file are ignored. -d prints all real midi events in the file. -mC mutes all events on channel C. -sC sends only events on channel C. -rX transposes all note on/off messages by X (see also -u option). -uX sets drum channel to X. If this option is given, no transpose will happen on this channel. -c program change messages are not sent. -b pitch bender messages are not sent. -l loop. Plays the file infinite times. -pXXX sets program priority to XXX (default is 30) -q plays tracks (in format 1 files) in sequence. Simple options can be given together like: -dcbl. Options with numbers must be given separate from the following options like: -u10 -lbp35 -m1 -m2 -dm4. FROM Workbench: DOUBLE CLICK Midi file icon (= project icon with default tool midiplay) or SELECT midi file icon and DOUBLE CLICK midiplay icon. Following tooltypes in project icon are allowed: FILEINFO=ON prints details of the midi file: format, the number of the tracks and the division of a quarter-note. TEXTINFO=ON prints all meta events in the file. A meta event can express tempo, time signature, key signature or text event (copyright notice, sequence/track name, instrument name, lyric etc.) DONOTPLAY=ON prevents midiplay from sending events to midi port. Using this option you can print all the events without any delay between events. TEMPO=XXX sets playing tempo to XXX (BPM). Tempo change messages in the midi file are ignored. DATAINFO=ON prints all real midi events in the file. MUTE=C1 or MUTE=C1|C2|C3... mutes all events on channel C1 (and channel C2 ...). SOLO=C sends only events on channel C. TRANSPOSE=X transposes all note on/off messages by X (see also -u option). DRUMCHANNEL=X sets drum channel to X. If this option is given, no transpose will happen on this channel. NOPC=ON program change messages are not sent. NOPB=ON pitch bender messages are not sent. LOOP=ON loop. Plays the file infinite times. PRIORITY=XXX sets program priority to XXX (default is 30) SEQUENCE=ON plays tracks (in format 1 files) in sequence. OTHER INFORMATION: -When started from Workbench, midiplay opens its own console window. -Midiplay can be stopped using CONTROL-C. -Midiplay opens one midi source named "midiplay". Source is connected to MIDI library's resident node "MidiOut" TODO: -GUI -internal/external sync -midi2text and text2midi (for addition of lyrics and other text) -singer: speech synthesizer :-))) -midi mixing -Amiga's internal sounds played on midi channels -AREXX port PROBLEMS AND LIMITATIONS: There are some problems with timing. Files are played a little bit slower than should be played. There are also some dramatic tempo changes when some programs (like workbench) steal enough system time. I have used timer device and unit UNIT_MICROHZ, what is the best way?? -System real time and system common messages are not supported. -SYSEX messages are not analysed nor printed. -Only most usual control change messages are recognised. HISTORY: v1.0: 29-Jun-93, first version, only DOS, format 0 files. v1.1: 23-Jul-93, first public release, WB and tooltypes, format 1 files. Money, programs, cards, midi files, bug reports, requests, suggestions, questions to: Janne Syväniemi Lintuviidankatu 15 C 10 SF-33340 TAMPERE FINLAND E-mail:csjasy@vehka.cs.uta.fi Hardware: Amiga500+, SupraTurbo28, SupraDrive500XP(+2Mb Fast Mem), MIDI interface, ROLAND D-10. Software: KCS v3.57 (the best sequencer program)