MIDI Spy
The Tunesmith's Favorite!

By Mike Silverstein


As a creative musician, have you ever experienced the moment when you had that new tune in your head and you wish there was some way to seize that moment and capture your musical ideas and inspirations? This is now possible for Atarians with Code-head Technologies' release of MIDI Spy -- a complete real-time MIDI recording system.
Yes, the Codeheads have done it again with MIDI Spy! Now, in its 1.2 version, this is an excellent example of true MIDI multitasking, something that Atarians' have been waiting for a long time. The program runs on all ST's, STe's, Megas, TT's and Falcon 030's. When configured as a standard GEM desk accessory, MIDI Spy will constantly monitor the MIDI ports and listen for any type of MIDI activity. This means that you can play anything you want on your MIDI equipment, at the desktop or within any program, and all of your music will be captured automatically and played back precisely the way you recorded it. Unlike a typical MIDI sequencer, there is no need to use tape recorder controls to begin recording since MIDI Spy will begin capturing the moment a MIDI event is received by the Atari MIDI port. A definable 'Record Gap' is used to tell MIDI Spy when to begin recording another sequence or song within its internal memory buffer. The configurable buffer is limited only by the amount of RAM in your machine.
As noted in many advertisements and press releases, MIDI Spy claims to be "Rock Solid." As an avid user of the program for several months, I can definitely attest to the fact that this is absolutely true! There have been many attempts to design a software desk accessory that can record and play MIDI events in the background. I cannot recall one Atari program that even comes close to what MIDI Spy offers. I remember seeing a preview of the program in the Codehead booth at a Glendale show a few years back. I was astonished to see the author, John Eidsvoog, demonstrate this new concept in MIDI multitasking on his synthesizer. I immediately downloaded the first demo release (1.0) and was disappointed that MIDI Spy could not successfully record the rhythm and chord data from my Yamaha keyboard synth. For a period of one year, MIDI Spy 1.0 was never officially released and John had worked hard programming very tight assembly code to eliminate the phenomenon known as 'MIDI Overflow'. In May 1993, the 1.1 version was finally released which fixed this phenomenon using a new '200 Hz Hog' feature.I downloaded the new demo and, sure enough, the rhythm and chord data is captured perfectly now! It is the dedication and hard work by the author that has made MIDI Spy well worth the $79, I spent. The program is written in 100% assembly language as with most software that the Codeheads miraculously conjure up for the Atari community! For you tech gurus, MIDI spy communicates directly to the hardware Asynchronous Communications Interface Adaptor (ACIA) ports which are internally memory mapped within the Atari. The standard BIOS bconin/bconout calls will not satisfy the strict requirements of a real-time multitasking record/playback system.

Features
MIDI Spy consists of convenient pop-up GEM dialog boxes making it very simple to operate. The main screen is where you control the features you would normally use when you want to do something with the memory buffer. It consists of a pretty MIDI Spy Logo design at the top along with program author and copyright information, Song/Event/Tempo Display, the MIDI Spy memory buffer, and 15 control buttons. These buttons include the following features:
Playing/Stopping a Song, Loading/Saving a Song or Song Set, Duplicating/Appending two or more songs, Merging songs together, Erasing/Deleting either individual songs or the entire buffer, activating a software MIDI Thru (echo), MIDI channelization, a recording Overdub feature, and a gateway to the Configurations screen. When the MIDI IN and Commands buttons are enabled, this allows MIDI Spy to be active in the background of any foreground Application, either GEM or TOS. I have found MIDI Spy to work with practically every Atari program I can think of, including Picture Slide shows and animations.
Towards the top half of the screen and directly above the memory buffer consists of a Song Display where you control the Song Pointer. By clicking within this area, you can title the current Song including any copyright information. If the song pointer is currently pointing to a song which has Song info, typing and holding the Control Key will change the top part of the menu where the MIDI Spy Logo resides and replace it with the Song Info, neatly centered within this part of the screen display. There is also a MIDI event display which indicates the number of MIDI events offset from the beginning of a song. A Song Tempo adjustment feature is included which allows you to initially increase or decrease the song's original tempo from 10% - 300%. If you change the tempo's percentage, you can then adjust it further by typing shift-Clr home which will convert the varied tempo to a base 100% tempo. MIDI Spy's timing resolution is roughly equivalent to 96 ticks per quarter note with 100% tempo normally defaulted to 120 beats per minute. Finally, a convenient memory thermometer bar display provides a graphical segmentation of all songs within the MIDI Spy buffer. If you click and drag the mouse within the memory bar, you can easily navigate through the entire buffer.
The song information at the top will tell you which song you're at within the buffer. Using the right mouse button or typing the 'X' key, you can zoom in on the current song while it is playing and a cursor will indicate where you are within the song and allow you to easily navigate through the song based on the MIDI event display. Mostly all of the features
mentioned here have keyboard equivalents as well as MIDI Commands from your MIDI keyboard. That's right! MIDI Spy is designed so that you can control it without even touching your Atari. Only Codehead Technologies can provide this ingenuity which literally spells out their reputation as being one of the leaders in Atari software!

Custom Configuration
This dialog panel allows you to custom configure MIDI Spy which gets saved within the executable MIDISPY.ACC or MIDISPY.PRG file. If you like changing the configuration like I do, you should not pack or squish this file. The custom configuration allows you to define the 'Record Gap' from 1 to 999 seconds. A new song is recorded if no notes are played within this period. The 'Chain Gap' allows you to define a time when playing back in chain mode which will play back all songs within the buffer continuously like a CD or album. The memory buffer size in Kbytes is also configured here. When stopping a song during playback, MIDI Note off messages may be configured for either long or short which helps deal with "stuck" MIDI notes found in practically every sequencer I can think of. This is dependant on your MIDI equipment. My Yamaha usually needs the option set to long, although I usually set it to short and use the provided Panic Key when notes are stuck.
Auto-Play allows an initial startup song (like a fanfare) to be played when first loading or running MIDI spy. Auto-Merge will perform a merge operation when you load a Multi-Track SMF MIDI file (Format 1 or 2). MIDIMAX mode allows MIDI Spy to capture MIDI data sent from MIDIMAX -Codehead's real-time MIDI Processor Application. It also works with other MIDI programs which use the BIOS when performing MIDI communication. 200Hz Hog prevents MIDI overflow and allows a huge burst of MIDI data (i.e. rhythm, drum, chords that are played simultaneously) to be recorded flawlessly!
MIDI Start allows MIDI Spy to recognize Start, Stop, and continue MIDI events. Chain toggles the chaining of songs on or off. Warnings is like an Expert mode and eliminates alert boxes throughout the program. Commands will cause the MIDI Spy Commands box to be displayed. Save Configuration and Exit are self explanatory.

Command Box
Fig. 3 gives a list of all of the main controls which are supported when MIDI Spy is running as a background task. You can assign both Hot Keys or MIDI events to control MIDI Spy's basic operation. This means that while your Pagestream Document is printing, your LDW Spreadsheet is being calculated, or your doing that long file transfer on your favorite BBS, you can still operate MIDI Spy! This is, by far, the most powerful feature of the program and is something I use all the time. I have found that using voice patches that I don't like work great for alternative MIDI commands. These settings will be saved when saving the custom configuration.

MIDI Spy File I/O
MIDI Spy handles all 3 Standard MIDI File formats (SMF 0,1, and the new type 2) as well as its own .MST (song set) and .MSQ formats. This provides a powerful background music player/juke box which I have yet to see on any platform. I can recall an old shareware Music Studio background player that always liked to cause some cherry bombs right in the middle of my unsaved Word Perfect document. I recommend using Dave Henry's shareware MIDI Music Maker, which can convert practically every popular Music format from every computer platform (even IBM CakeWalk) to SMF. You can then use MIDI Spy to play all of the thousands of available songs available across all of the popular Online services. Your all-time favorites can be saved in MST format which can load a set of songs pretty darn fast! I have recently seen a Song set of over 200 songs loaded into MIDI Spy's buffer on a 26 MEG TT in under 10 seconds. SMF formats 1 and 2 will take considerably longer depending on how many tracks are within the file. It is best to have the Auto Merge setting enabled when loading these MID files.
It is important to mention that MIDI Spy Is not a sequencer. You will unlikely make minor mistakes when recording in the background. Although there are no musical editing features within MIDI spy, you can save your song(s) as an SMF in one of the provided formats and then use your favorite sequencer to polish your newly created tune. Your sequencer can do the important stuff like quantizing, transposing pitches velocities, and scoring. Who knows
- newer versions of MIDI Spy may support this depending on whether or not the Atari community nags John or Charles to implement them. Codehead Technologies is known for their excellent support on their products.

Running as a Program
MIDI Spy may also be run as a program and can be installed as an application. This means that you can double-click on any MID, MSQ, or MST file icon within the desktop and it will be loaded and played within MIDI Spy. Owners of Gribnifs Neodesk can create several desktop configurations (.INF files) consisting of icons for all of your favorite songs. Custom Macros can be used to select each song by installing MIDI Spy as an application. Owners of Codehead Technologies Hotwire, Multidesk Deluxe, and Maxifile have even greater flexibility. MIDI Spy can be loaded Into MDD as a resident accessory. If you need to shrink MIDI Spy's memory buffer down, you can unload it, run it as a program, change the buffer size, and reload it again - all this without fragmenting valuable RAM space. With Maxifile, you can double click on any supported file type so long as an existing MIDI Spy Hotwire slot is available with the proper Document files defined. As a program, MIDI Spy is written to automatically exit after completing playback of either a song or set of songs regardless of chain mode so long as there is no keyboard/mouse intervention while the song(s) is being played. With Hotwire's powerful Chaining of Applications, it is possible for even 512K ST owners to have an unlimited amount of continuous music playing.
A Hotwire Chained Menu which consists of MIDI Songs. Launching 1 song will link to other songs within the list providing the ultimate configurable MIDI Juke Box.

Sysex Support
MIDI Spy will capture any kind of MIDI event, including MIDI System Exclusive messages. A while back, I wrote a GFA Patch Editor/Librarian for Yamaha Portasound keyboards (PSSLIB). With MIDI Spy installed (the MIDIMAX mode is enabled), I can run my SYSEX program in the foreground, send a patch to my synth, and MIDI Spy will capture the SYSEX data which defines the sounds within the patch, flawlessly of course. By playing with the channelization controls, I was able to modify a MID file I downloaded from GEnie which was a rock and roll version of the Munsters Theme Song. I saved a new MIDI file with several patches now embedded within the file. When the song is now loaded back, the SYSEX data is sent to the synth in one operation. Yet another excellent feature provided by the program. The list can go on and on.

The Manual
MIDI Spy is accompanied with a three ring bound user's manual which is superbly done. Complete with a Table of contents and Index, the manual is designed to be written for both the novice and expert MIDI user. A Glossary is included which defines all those annoying technical terms dealing with the computer and MIDI terminology. MIDI Spy is a good choice for a 'First Time' MIDI program to buy and the manual itself introduces the MIDI novice into the MIDI arena both diligently and effectively.

Improvements
MIDI Spy's main purpose is to perform real-time recording and playback of your musical ideas. Forget algorithmic composing! I've learned through the years that the best form of algorithmic composing is yourself. And MIDI spy is always listening. However, I would like to see a separate configuration file facility so you can load different setups due to the many variations that are offered. Although Hotwire provides more flexibility, I would also favor a custom song selector (similar to Multidesk's Titling Utility) so you can load songs by their catchy titles, not by those boring 8 character limit file names. Finally, since MIDI Spy runs in the background, it would be nice if the memory buffer can be configured like a reset proof RAM disk in the event of the foreground task crashing.

Conclusions
Overall, I cannot express the joy I have received after receiving this program. You have to see it to believe it! The Demo version of MIDI Spy 1.2 was on the Monthly PD Disk of Oct. '93's ST Informer. The Demo version has a fixed buffer size, no saves, and a timeout feature. I have heard that MIDI Spy compliments the new Falcon 030 MIDI Hard disk recording systems and improves overall musical capability. If you think that MultiTOS, Geneva or any other multitasking system can replace what MIDI Spy offers, you can forget it! These programs will not allow you to record your music unless your sequencer Is the foreground task! Rick Flashman of Gribnif, himself, told me at a recent Glendale show that most MIDI sequencers have to be set for singletasking under Geneva. MIDI Spy, however, works superbly under these environments.    #

Retail $79.95 W/MIDIMAX $99.95
CodeHead Technologies
P.O. Box 74090
Los Angeles, CA 90004
Voice:	(213) 386-5735
Fax:	(213) 386-5789 BBS,
(213)461-2095

About the author: Mike Silverstein is a 32 yr old Hardware Electronics Engineer working for a Defense Contractor supporting the Point Mugu, CA Naval Base. He plays saxophone and keyboards in his spare time and enjoys using his Atari w/MIDI.

Atari St Informer December 1993.
