Monday, February 16, 2015

Will Harvey's Music Construction Set - PC Sound Device Support

In 1984 Electronic Arts introduced a program called Music Construction Set.  It was originally written by 15 year old Will Harvey for his Apple II computer.  Electronic Arts liked what it saw and published it to great success.  It also ported the program to every popular U.S. computer with any kind of sound hardware, the Atari 8-bit machines, the Commodore 64, the Atari ST, the Apple IIgs and the IBM PC.  An upgraded version called Deluxe Music Construction Set was released for the Macintosh and Amiga.  Each version would take advantage of the native sound capabilities of the hardware.

Unfortunately, the Apple II and the IBM PC's hardware was unimpressive compared to the other machines.  They only have a speaker.  The Apple II's CPU must directly drive the speaker, so there was no CPU time left over for scrolling the screen on the Apple II version using the built-in speaker.  The IBM PC's speaker was timer driven, so it could still scroll the screen using the 1-note speaker option.

Fortunately, both the Apple II and the IBM PC supported alternatives.  The Apple II version supported a Mockingboard card for six voices of stereo sound.  Using the timer-supplied Mockingboard allowed the CPU to scroll the note sheet.  The IBM PC versions are much more interesting from a hardware perspective.

Original Release

The original release for the PC supported the IBM PC, XT and PCjr. and "COMPAQ"  Because it calibrated itself for CPU speed, it would also work in faster machines like the IBM AT., although the loading time may be increased as a result.  This program was a PC booter, and the version widely available also has Tandy 1000 support.  Tandy marketed Music Construction Set, so this version may have originally have been from Tandy.

Interestingly, the program does detect the machine it is being used in on startup and will adjust its configuration options accordingly.

On the Tandy 1000, here are the options :

Input - Keyboard; Joystick (Right Port)
Sound - 3 Notes, Scroll; Speaker - 1 Note, Scroll
Printer - Tandy Graphics Printer (IBM Mode), Epson Graphics Printer, Okidata Graphics Printer, No Printer

On the IBM PCjr., here are the options :

Input - Keyboard, Koala Pad, Joystick
Sound - PCjr - 3 Notes, Scroll; Cassette - 4 Notes, Speaker - 1 Note, Scroll
Printer - IBM Graphics Printer, Epson Graphics Printer, Okidata Graphics Printer, No Printer

On the IBM PC, here are the options :

Input - Keyboard, Koala Pad, Joystick
Sound - Speaker, 4 Notes; Cassette - 4 Notes; Speaker - 1 Note, Scroll; Cassette - 1 Note, Scroll
Printer - IBM Graphics Printer, Epson Graphics Printer, Okidata Graphics Printer, No Printer

I do not own a Koala Pad, but it uses the joystick port.  It probably would have been the smoothest way to control the icon-based interface of MCS.  Because of the special characters, a character-based printer would not work to print Treble and Bass clefs and musical notes, so a Graphics Printer was required.  Interestingly, I find no mention of the PCjr. Compact Printer in the PCjr.'s options, but if there is no parallel port sidecar, it may work as it would designated as LPT1.  The Compact Printer does support bitmap modes like the listed Graphics Printers.  A list of the printers it has been tested with can be found in the Reference Card.  Music is printed vertically down the printer page, rather than horizontally as one would expect sheet music to print.

The 4 Notes selections used up all the available CPU time, so the music did not scroll when played with these modes.  For the PCjr and Tandy, the 3 note option, using the built-in sound chip, was obviously the way to go.  I do not know why they even bothered with the cassette option for the PCjr., a person with a cassette player could record the 3-voice music just as easily.  I do not know if the cassette option is still selectable on an IBM PC/XT, which does not have a cassette port and can be uniquely identified.  Most generic PC compatibles identify themselves as an IBM PC, so the cassette option is still there although it will not work.

Despite being deemed a PC booter, MCS is tied very much to DOS.  The disk is readable in DOS, but only the song files will be seen.  When loading and saving songs, a DOS prompt is used and the commands are very DOS and BASIC like.  A standard DOS formatted disk can save and load more songs.  Oddly, the
loading screen uses a 40-column mode, probably for the PCjr.  Full instructions for use in the PC can be found in the Reference Card.  The manual and reference card for the IBM PC version can be found at  Listings for the sample songs can also be found in the reference card.

IBM Music Feature Card Version

In 1987, Electronic Arts released a revised version of Music Construction Set for the IBM Music Feature Card.  I was able to find a download of this program.  This version of MCS is a true DOS program, although presumably still protected.  If you load a mouse driver beforehand (CTMOUSE.EXE 1.91 works, make sure your COM1 settings are standard 3F8/04), you can use a Microsoft protocol-compatible mouse to control the cursor.  The movement is still a bit rough and only supports one button, but better than a joystick.  Using the keyboard will allow for fine placement of notes.  PCjr. support was removed, but the program still works on an IMFC-less PC and a Tandy 1000.

The IBM Music Feature and mouse are autodetected, but if one or the other is not present, you still have some options.  On the IBM PC, the sound options are Speaker - 1 Note, Scroll; Cassette - 1 Note, Scroll.  On the Tandy 1000, the options are the same as they were for the non-IMFC version.  Koala Pad support is not present, but joysticks are still supported.

The loading screen for the IMFC version is now using 80-columns and has a text based cursor select system.  It was very forward thinking for EA to provide a command list on the screen.  Also, if the settings button (the plug) is clicked after the program starts, a menu displays that allows you to select the instruments to be used from the 240 voice patches available on the IMFC.  The program does not appear to supply custom voice patches, even though the IMFC has room for 96 of them.  When you play back a song, it will show one of the voice patches assigned to the treble and bass clefs.

The Setup Screen allows to choose up to 13 voices for customization.  You can customize each instrument from the IMFC by the following :

Pan : L, L+R, R
Portamento : Off, Slow, Med., Fast
Vibrato : Off, On
Octave : -2, -1, 0, 1, 2

While you can only use two instruments at a time for playback, the SO sliders allow you to select one instrument for each stave on the Music Screen.  On a PCjr. or Tandy, the SO sliders had 13 steps which determined the character of the sound for each stave.  With the IMFC, the name of the instrument will change if you raise or lower the respective SO slider.  The VO slider does the same for the volume of the stave on either the PCjr., Tandy or IMFC.  Because DOSBox does not support the IMFC, I cannot post a screenshot of the Setup Screen.  Unfortunately, the instruments selected cannot be changed during the song, but this is a handy way of quickly trying out new instruments.

Most of the songs found on the original version can be found on the IMFC version, but weirdly Daisy and the Canon in D Major are not present.  The modern songs are not present, but there are several other songs, such as Dixie, Yankee Doodle Dandy and the first few bars of M.U.L.E.'s theme song.  Mystery, Buggy, Rhythm and Scales are present.  Songs from either version will not necessarily sound the same as the song on the other version on the same hardware.

Why no further versions?

MCS had always tried to provide broad sound support, and this version for the IMFC was the first and last time the program was updated to support a PC sound peripheral.  Electronic Arts did not attempt to release a version for the Adlib.  In 1987, IBM was still considered a sure thing and Adlib was barely known.  The IMFC filled a niche with the IMFC by providing a basic, easy to use music program.  This program was especially useful to younger people.  However, considering the rarity of both the IMFC and this version, it was no great seller and EA probably lost money on the conversion.  By the end of 1988, when an Adlib version would have been feasible, MCS was looking a bit long in the tooth.  Adlib also had its Visual Composer software that took many cues from MCS.  EA itself was transitioning from a publisher-assisted producer to a fully-fledged game studio.  The end result was that this was the end of the venerable MCS.

Sound Samples

All captured from real hardware.  No post-processing of any sort has been done (that I know of), so you may want to turn the volume up for the Tandy recordings.  For the PC Speaker recordings, I used my cassette cable to capture the equivalent of what would be heard through the speaker.  I used a Tandy 1000SX for the Tandy recordings and used my IMFC in my IBM PC.

IBM PC Speaker/Cassette 1-Note Original

IBM PC Speaker/Cassette 4-Note

PCjr./Tandy 3-Note Original Version

PCjr./Tandy 3-Note IMFC Version

IBM Music Feature Card


  1. The IBM PC does, and that is how I captured the speaker recordings. The IBM PC/XT does not.

  2. I just posted a Vine of my office Apple //c setup with the Street Electronics Cricket! soundbox attached. It's basically a Mockingboard A hanging off the serial port (not to be confused with the Mockingbird D, which was the same notion, and an actual Sweet Micro Systems unit). 6 voices supported by the Cricket! unit.

  3. I just discovered your blog -- great writeup on MCS!

    Note: For the first two system examples (IBM PC 1-note and 4-note), you have Mendelsohn's Scherzo from Midsummer Nights Dream, not Bach's Two Part Invention No. 8.

  4. How does the IBM speaker do 4 voices?

    I've also been wondering how Windmill Software's "Digger" had what sounded like multichannel audio on any PC speaker...

    1. My friend Trixter did a great video on recording the PC Speaker which covers the many methods used to get audio from the underappreciated PC Speaker :

  5. Thanks for that video link. Because he called it "pulse-width", I went looking up the meaning behind that and eventually found this:

    This technique was known to me as "RealSound" via Access Software. I didn't realize it was the same technique used in "Digger" by Windmill Software. For so many years, I'd read people say "switching the speaker on and off faster than it was physically capable", which is the "what" but not the "why" or the meaning behind it. It's all about getting in-between states on the PC speaker cone. Decades later and I finally understand this concept.