Author Topic: INTRODUCTION TO MIDI PROGRAMMING (1987) for Atari ST  (Read 443 times)

Offline chrisNova777

  • Administrator
  • Hero Member
  • Posts: 8697
  • "Vintage MIDI Sequencing + Audio Production"
    • | vintage audio production software + hardware info
« on: December 21, 2018, 07:15:55 PM »
by Len Dorfman and Dennis Young
Abacus Software, Inc.
P.O. Box 7219
Grand Rapids, MI 49510
256 pages $19.95

Reviewed by Jim Pierson-Perry

One of the main reasons that I bought my ST was to use it to drive a home MIDI-based music studio. MIDI, which stands for Musical Instrument Digital Interface, is both a hardware specification and communication protocol for data transfer between synthesizers, other music generation or processing devices, and computers. Application programs such as sequencers or synthesizer voice editors can be programmed in any computer language from BASIC to Modula-2, as long as you follow the MIDI protocol.

When I heard that the latest volume in the Abacus ST book series was on MIDI programming, I made sure to get one of the first copies at the local computer store. The authors are Len Dorfman and Dennis Young, who wrote the Printware software series (Xlent Software) for the Atari XL/XE and ST. Their most recent work was the ST Music Box, a music editor/player program which relies heavily on MIDI programming.

Unfortunately, Introduction To MIDI Programming is geared to a very specific audience-those who are C programmers and wish to work with a Casio CZ-101 synthesizer. Four sample MIDI programs are given in the book. All are in C and include many ST system calls. While the code is well-documented, if you are not a C programmer then this book is probably not for you.

Another concern is that the only synthesizer discussed is the CZ-101. While much of the MIDI coverage in the book is generic to all synthesizers (e.g. note on/off), features such as controllers supported or sending tone parameter data can he highly brand specific. At least one of the four programs given in the book will only run on a CZ-101 or compatible.

The book opens with an overview of synthesizer and MIDI terminology. Early on, the authors describe their rationale for choosing a CASIO CZ101 to learn MIDI programming. MIDI implementation charts, which describe exactly what features are available and their constraints for any specific synthesizer, are briefly mentioned but not described. This is unfortunate because interpreting these charts is critical to writing all but the most elementary MIDI applications as well as tracking program logic errors.

Chapter two is the most valuable part of the book for budding MIDI programmers. It gives a review of the MIDI protocol, although weighted almost entirely towards the CZ101 implementation. There is a good explanation of basic MIDI events, such as note on/off and program change; however, features such as controller functions, aftertouch and pitch bend barely receive mention. Curiously, five pages are devoted to describing bits, bytes, and hexadecimal numbers. Anyone who can understand the C code given in the rest of the book does not need this (and those that do are not going to get much further!).

Some MIDI programming applications are finally presented in chapter three. Three Megamax C source listings are given covering: playing scales on the synthesizer, displaying MIDI data to the ST screen, and uploading synthesizer tone data (parameters which set the voice timbre) from the synthesizer to the ST screen and/or printer. The first two programs should work with most synthesizers. The last one is strictly for the CZ-101/1000, since it is based on Casio's specific data structure and nonstandard handshake protocol for tone data transfer, both of which are not used by either synthesizers. The source code of all three programs is well-documented.

The culmination of the book is in chapter four with a presentation of the Alcyon C source code for a MIDI-based autoplayer program designed to work with song files created by the ST Music Box. This is the bulk of the book (about 60%) and the preceding three chapters may be viewed as an introduction to this program. The listing is extremly well-documented, although conspicuously absent is an overview of the program structure and logic. Still, for C programmers this is a rich source of code to study. For non-C programmers, forget it!

This book falls short of my expectations for an introductory book on MIDI programming for the ST. I cannot recommend it except to those C programmers who may wish to study the source code listings. It is too narrow in focus to be of value to the general ST user. An accompanying diskette is available from Abacus Software for $14.95 (plus $2.00 shipping/handling) which contains the few programs contained in the book.