Documentation de SynthLab

written by Mark Cecys and Lee Collings

Copyright 1992

Apple Computer, Inc

Table of Contents

I. How to use this Electronic Manual
II. Manual Terms
III. Introduction to synthLAB
IV. Background Information / Hardware Considerations
System Requirements
AppleTalk and MIDI Functions
Audio Output
Connecting a MIDI Device to synthLAB
V. Installing synthLAB
VI. Opening synthLAB
VII. Overview of synthLAB
Navigating synthLAB
The Sequencer Page
The Deck Controls
Tempo Control
Track Controls
Editing Instrument Records
Screen Keyboard
Envelope Edit Page
WaveList Edit Page
Oscillator Configuration
Apple Menu
File Menu
Edit Menu
Setup Menu
Appendix A

• How to use this Electronic Manual

This manual is a general reference guide for starting and navigating around synthLAB™. By itself, it certainly is not complete, especially if you’re going to attempt to create your own instruments. synthLAB’s primary purpose is to demonstrate the musical talents of the IIgs® and to support and encourage developers working with the MIDI Synth™ toolset. The system architecture and many of the parameters and functions which synthLAB controls, are described in another document entitled MIDI Synth External ERS and are not duplicated here.

The ERS is technically oriented and is written primarily for use by programmers and developers. Use this manual, the synthLAB application, and the ERS together, referencing various sections in each, until you have a solid understanding of how things work. If you are going to attempt to develop instruments or sequences, it is important that you read the ERS. The ERS may be obtained through APDA, Apple's source for developer tools.

Key topics have been identified throughout the manual with a bullet (•) character (option-8). To locate any key topic, simply use the Find command from the Edit menu to locate the bullet character. This will allow you to move quickly through the electronic version of this manual.

If you plan on using synthLAB to play pre-recorded music or sounds, you can proceed directly to the section entitled “Using synthLAB”. After reading this section, you may feel comfortable enough to experiemnt with the application. If you plan on using synthLAB to create new instruments and sequences, we strongly suggest that you print out this entire manual and have it on hand as a reference.

This manual and the ERS assume that you have a good understanding of how MIDI works. Explaining and describing all of the many aspects of MIDI is beyond the scope of this manual. If you need additional information, there are many excellent books written about MIDI. Check with your local music dealer for these resources.

• Manual Terms

There are some terms used in this manual that might cause some confusion. The term keyboard will always refer to an external MIDI keyboard (the musical kind). The typing keyboard that’s part of your IIgs computer system, will be called the IIgs keyboard. Also, new names are given to some of the hardware ports on your IIgs. Since MIDI devices are connected to either the Modem or Printer ports on the back of the IIgs, these will be referred to as a MIDI port. The headphone jack, which usually connects to some type of external amplifier, is called the audio output port. If you’re using a stereo interface card, the audio output port is the stereo output connector on the card.

• Introduction to synthLAB

synthLAB is a demonstration and support application for users and developers who are interested in playing music or sounds or creating programs using the MIDI Synth toolset (Tool035). synthLAB is comprised of three basic components: a synthesizer, a sequencer and a MIDI driver. Whether you’re interested in having a little fun, learning more about music, or developing applications, we think you’ll have a great time using synthLAB.

synthLAB allows you to play the pre-recorded music sequences and instruments included with this product. Additional sequences can be found on many on-line bulletin board systems. synthLAB can also create new instruments for itself or for use in your own application, either by modifying existing ones, or by creating new and original ones.

You can also create the sounds that you want by experimenting with different instrument combinations. These combinations take advantage of MIDI Synth software’s multi-timbral feature. No longer do you have to “hand-code” instruments and sequences into your source code without the benefit of hearing exactly what you’re creating. Using a tool like synthLAB to create sound for your application should be easier, and the result will certainly be more interesting to you and your clients.

In addition, synthLAB makes a great educational tool. Because it is built around the MIDI Synth tool, it helps users understand how MIDI Synth works. Most of synthLAB's software parameters directly correspond to MIDI Synth parameters. If you’re not quite sure how a certain parameter affects MIDI Synth, you can use synthLAB to try it out, playing with different values until it becomes clear. You can also learn and develop the techniques needed in creating your own quality instruments by examining and manipulating the instruments provided with synthLAB. Making interesting instruments is an art. The best way to learn this art is by actually trying it yourself.

• Background Information and Hardware Considerations

• System Requirements
- Apple® IIgs system
- 1Meg of system memory or greater
- GS/OS® 5.04 or greater
- One 3.5" drive

- External amplifier/speakers (home stereo, powered monitors, etc.)
- MIDI interface (Apple MIDI, Audio Animator™, etc.)
- MIDI controller (external MIDI keyboard, MIDI guitar, etc.)
- Stereo interface card (Audio Animator, etc)
- MIDI Synth External ERS manual for developers

- Hard disk
- MIDI synthesizer, sampler, etc.
- Reverb or Effects Processor

synthLAB will work on all IIgs models with a ROM version 01 or higher. Like most new applications these days, you’ll need a minimum 1 megabyte of system RAM. If your IIgs does not have 1 MB on the motherboard, you’ll need a 1 MB expansion card installed.

If you’re using an older version of GS/OS, then see your dealer or visit a user group for an upgrade to the latest version.

• AppleTalk and MIDI Functions

You’ll get an error dialog if the AppleTalk® port is active. Due to the way the interrupts work on the IIgs, the MIDI functions and AppleTalk can’t work together. AppleTalk requires additional CPU time which would degrade the performance of synthLAB. You can still use the program by selecting the Continue button in the error dialog. The application will deactivate the MIDI functions and allow you to use the application as a playback system. Since AppleTalk will still be functioning in the background, a slight degradation in the performance will occur everytime an AppleTalk event is received by your system. To have full MIDI support, you will need to go to the Control Panel and deselect AppleTalk. After deselecting AppleTalk, restart your system and re-launch synthLAB.

Try to avoid using Inits and DA’s (menu clocks, screen savers, etc.). These programs make applications run slower by installing themselves in the background, and continually use valuable CPU time. For real-time programs like synthLAB, this is especially critical, since they are competing for the same background interrupt time. Remember, nothing comes for free.

• Audio Output

For better sound quality, hook the GS audio output to an external audio system. Any home stereo or powered monitor speaker will do. If you’re using a home stereo system, you’ll need a 1/8” stereo mini plug to phono (RCA) plug adapter cable to connect your GS to your amplifier. The mini plug goes to the audio output (headphone) jack on the back of your GS or your stereo interface card. The two phono ends go to the line or auxilliary (Aux) inputs usually on the back of your stereo amplifier. Even though the plugs are called phono, do NOT plug them into the phono input on your amplifier; doing so could damage your speakers.

There are several things you can do to improve the overall quality of sound coming from your GS:
- if you have a noisy GS or a noisy stereo interface, try turning the treble control on your amplifier down a bit to filter out the 'hiss'.

- both synthLAB and MIDI Synth are designed to be most effective when played in stereo. By being able to assign each Generator (one half of an Instrument) to either stereo channel, many interesting stereo effects can be created. If you have a stereo interface card, see the owner’s manual for installation instructions.

- if you have a reverb unit or a special effects box, try using it on your GS.

• Connecting a MIDI Device to synthLAB

If you happen to have one, attach an external MIDI keyboard to your GS. Whether you’re creating instruments or sequences, you’ll get the most out of synthLAB if you control it through MIDI.

Since MIDI signals are electrically different from computer signals, you’ll need to connect your keyboard through a special MIDI interface. Any 1 Mhz external interface (Apple MIDI for example) or an internal card interface (like Applied Engineering’s Audio Animator) will work. When using the Apple MIDI interface, you simply plug the MIDI cables into one end of the interface which connects to your MIDI keyboard. Then plug the other end into a MIDI port on your IIGS System (Modem or Printer ports).

Since synthLAB is both a synthesizer and a sequencer, you can do many useful things with your GS connected to a MIDI keyboard. Play notes on the keyboard, and your GS will track them by playing selected instruments. It will even respond to note velocity, pitch-bend and your volume and sustain pedals. Next, you can record your performances into an eight-track sequencer, recording each track separately, using different instruments. You can save these sequences on disk, building your own personal library. Finally, you can have synthLAB play your MIDI keyboard. If you run out of instruments or voices with synthLAB, you can assign any tracks to output their MIDI data out to your keyboard.

When creating instruments, the keyboard gives you more control in defining the various parameters. You can quickly test your instrument over the complete note and velocity range. Many instruments sound different when they interact with other voices, so you can play chords or octaves and hear this effect. If the instrument is multi-sampled (different waves for note zones), you can make sure that the transitions between Wave Lists are seamless and that each multi-sample is balanced correctly with the others.

Once you start synthLAB, you’ll need to enable the MIDI Port. Pull down the Setup menu and select the MIDI... item. Remember, if AppleTalk is active, the MIDI functions will not be available for your use. From the MIDI dialog box, click on the MIDI In Enable button to activate it (it’s the icon with the arrow pointing into the computer). Press a few notes on the keyboard, and you should hear them play from your IIGS. Notice that the MIDI In display on the top right corner of the screen lights up for every MIDI message received.

• Limitations

When writing any application, you must limit the scope which you intend to cover in order to maintain a realistic schedule. Because of this, all applications have their limitations, and do not have all the features necessary to meet the needs of all users. Just as it’s important to know what an application does, it’s also just as important to know what an application will not do.

- synthLAB is intended to be an instrument editor. It works on banks of 16 instruments at a time. It does not have any librarian features enabling you to move instruments between banks.

• synthLAB is also not a waveform editor. The waves must be created and edited elsewhere. We have provided sample wave files for you to use, but you may decide to sample and edit your own.

• The sequencer in synthLAB is very limited and lacks many of the editing features found in more advanced types of sequencers.

• Since synthLAB does not use QuickDraw to draw all images on the video screen, there are times when it does not know anything about foreign windows. Therefore, it doesn’t support NDAs.

Developers should note that these are limitations of the synthLAB application and not the MIDI Synth Tool. A professional style sequencer could very well be written around MIDI Synth. The custom interface used to create synthLAB was the author’s personal preference. The MIDI Synth tool however is designed to work well with the standard IIGS Desktop (Windows, Menus, Controls, etc.).

• Installing synthLAB

The System 6 Installer program contains the necessary script to place all the needed files in their proper locations. synthLAB works best when installed directly onto your startup volume.

To install synthLAB:

1. Insert the Install disk in your drive and startup your computer.

2. Click the Customize button to view the Installer scripts.

3. Select the Application: synthLAB installer script.
(Be sure you have the disk selected where you want the application installed. We recommend you install onto your startup disk.)

4. Click the Install button.
The installer script will place synthLAB's files into their proper locations.

After installation has been completed successfully, you'll need to quit the Installer and reboot your machine. If you have used the Installer as outlined above, you can skip to “Opening synthLAB.”

Special instructions - placing synthLAB files without the Installer

If you are not using the Apple IIGS Installer, you will need to place a number of files in their proper location on your system disk. Copy Tool035 (MIDI Synth) to the Tools folder. The Tools folder is found inside your boot System folder. If your boot disk is already full and you don’t have any more room available, leave MIDI Synth in the same folder with synthLAB. When it initially runs, synthLAB tries to load MIDI Synth from the system Tools folder. If it can’t find it there, it looks for it in its own folder.

If you plan on using a MIDI device along with synthLAB, you'll also need to install and activate MIDI capabilities in your system using the new MIDI Control Panel. First move the file called MIDI from the synthLAB disk to the CDev folder on your boot disk (found inside the System folder). Next, move the Apple.MIDI driver from the SystemTools1 disk's System:Drivers folder and place it into the System:Drivers folder on your boot disk. Before running synthLAB, run the Control Panel NDA from the Apple menu. Select the Control Panel called MIDI and enter the correct information which describes your MIDI setup (see Appendix A). When complete, close all Control Panels and launch synthLAB.

• Using synthLAB

After re-booting your system disk, locate and open the synthLAB folder.

- Double-click on the synthLAB icon to launch the program.

After synthLAB has loaded, you should hear and see a demonstration of music playing at the title screen. If synthLAB encountered an error while trying to start, you'll get an error message telling you what is wrong.

When you're through with the demonstration...

- Press either the IIGS keyboard Return key or click on the arrow button located at the bottom right of the screen to exit.

The screen now shows the Sequencer Page, with deck control buttons on the left and eight sets of track controls on the right of the screen. A full explanation of these controls follows later in this manual.

If you want, you can load and play some of the sample sequences and instruments.

1. Pull down the File menu item and select Load Sequence...
(Click on the Drive and Open buttons [if required] to locate the list of sequences available on this disk.)

2. Double-click on your selection.
The file dialog box will go away and synthLAB will load in the selected sequence with the appropriate instruments. When the arrow cursor returns, you’re ready to play the sequence.

3. Click on the deck Play button.
Or if you want to watch the notes being played, select the About synthLAB... item from the Apple menu. Either way, the sequence will play for you.

NOTE: To get the full effect from synthLAB, try using a stereo interface card with the output going to an external amplifier and or speaker system.

• synthLAB Overview

synthLAB has three basic parts: a synthesizer, a sequencer and a MIDI driver. Everything synthLAB does relates to one of these parts. Since synthLAB’s main purpose is to create instruments for MIDI Synth, it has controls to manipulate all the parameters defined in an Instrument Record. To play an instrument, we need the synthesizer, so synthLAB has controls for that, too. Finally, there are controls for the sequencer and the MIDI driver.

File Types

When you use a word processor, you typically load your text file, manipulate the file by adding and editing words and sentences to the file, and when you’re finished, you save this file to disk. The word processor creates and manipulates text files. synthLAB, in many ways, is like a word processor. Instead of working on text files, synthLAB works on Instrument and Sequence Files.

An Instrument file is a collection of instruments grouped together in what is called an Instrument bank. Each bank has 16 Instruments and each instrument is actually an Instrument Record that defines how the sound is built. In other words, a bank is simply a group of 16 Instrument Records. The instruments in a bank are all related to one another in that they all share the same wave file. This file contains the actual waveforms used in producing the output sound. synthLAB does not manipulate the wave file in any way, it only loads it into the Digital Oscillator Chip (DOC) RAM after you load an Instrument file. Once an Instrument file is loaded, synthLAB can now edit and/or play any one of these 16 instruments.

A Sequence File is the data output created by the sequencer. A Sequence File can contain only one sequence.

• Navigating synthLAB

All of synthLAB's features can’t fit onto a single screen. The various functions have been divided up and placed into either separate video screens or grouped inside the menu items at the top of the screen. The three main video screens are called pages, and you can access any one of them by pressing one of the three page buttons. These buttons appear above the keyboard and are represented by a tape recorder icon, and two waveform icons with arrows.

The left button selects the Sequencer page. Use this page whenever you wish to control sequence record or playback functions. The middle button selects the WaveList Edit page, which controls changes to the WaveList Record parameters. The button on the right, the Envelope Edit page, selects the controls used to edit Envelope Record parameters. These last two pages define Instrument Records (see MIDI Synth ERS).

The menu items have functions which are common for all three pages. Actions like file I/O, program setup and instrument selection, are all initiated from these menu items.

• The Sequencer Page

The Sequencer page is grouped into three main areas. On the left are the deck controls. They behave like controls on a typical tape recorder. In the lower left corner is the tempo control, which sets the speed or playback rate of the sequence. And finally, the right half of the page has the track controls. These are eight duplicate sets of controls. One set for each of the eight tracks used by the sequencer.

• The Deck Controls

If you’re familiar with how to control a tape recorder, then you should find these controls very straightforward. Play, Stop, Record (Rec), Fast-Forward, Rewind and Auto-Rewind all work the same as their tape deck counterparts. They control the basic sequencer functions. Above the deck control buttons is the position counter, which shows you where you are in the sequence.


To play a sequence from memory, press the Play button. It starts at the current location displayed on the counter. The sequencer will automatically stop when it reaches the end.


Pressing this button will start recording MIDI messages received at the MIDI port. In other words, if you have a keyboard connected to the MIDI port and MIDI is enabled (see “MIDI Setup”), then synthLAB will start recording everything you play. Only one track can be recorded at a time. The other tracks can be played back while simultaneously recording to allow for accompaniment. Like the play function, recording starts at the position indicated by the counter.


Will halt a play or record process.


If you want to advance the counter forward, press and hold this button until you reach the desired position. If you hold this button down while a sequence is playing, the tempo will double and stay at that speed until you release the button.


This button will advance the position counter backward. Double-clicking this button will reset the counter to the beginning of the sequence showing a 1:1 (measure:beat) in the counter display.


When this button is on, anytime the sequence stops it will automatically rewind to the beginning of the sequence. If it’s off, it remains at the current location.

Counter Display

The counter shows your position in the sequence. It displays the position in measures and beats. You can’t directly edit the value; you move it forward or backward by using the deck buttons.

• Tempo Control

This control sets the sequencer playing speed. It sets this speed in units of half-note beats per minute. If you are used to working with quarter-note beats, then the quarter-note BPM value is twice the half-note value displayed. For example, when the tempo display shows 60, this is equivalent to 120 quarter-note beats per measure.

• Track Controls

The synthLAB sequencer is in many ways like an eight-track tape recorder. Like a multi-track tape deck, you can record one music track at a time, using different instruments or combinations on each separate track. Then, during play-back, you can select any or all of the tracks you wish to hear. You can play-back selected tracks at the same time that you are recording on another track. You can even “over-dub” any track until it sounds right.

Unlike a tape recorder however, you are recording only MIDI messages, and not the actual sound being heard. When the sequencer plays, it sends these MIDI messages to the synthesizer, which then reproduces the instruments you initially recorded. The advantage over a tape recorder is that you have the flexibility to experiment and re-orchestrate your sequence even after you’re finished recording.

The track controls consist of eight duplicate sets of controls, one set for each track. Track number one is the top set, while the bottom set is track eight. There are four controls for each track; Channel, Play, Record and Name.

Track Channel

With this control, you can force all MIDI messages in the track to play a specific instrument. Since the sequencer always plays in multi-mode (see the ERS), the channel part of the MIDI message specifies which one of the 16 instruments to play. This control assigns all track messages to one specified channel number, and thus one specified instrument. Channel one plays instrument number one, channel two plays instrument number two and so on. A channel number of zero will leave the message alone, letting it play whatever channel or instrument was originally recorded.

The reason you have to specify a channel number is that it also affects the MIDI data that gets sent to the MIDI port, if it’s enabled. All MIDI data sent out from the track will now be on the selected channel.

When you click on the button, you’ll get a dialog box with a control that lets you change the channel number. Press the up or down arrow keys to set the desired value, then exit.

Track Play

During a play or record process, individual tracks can be turned on or off for play-back. Unlike the track record buttons, any number or combinations of tracks can be selected for play-back. Clicking on a selected button will turn it off.

Track Record

Before you start recording, you have to tell the sequencer which one of the eight tracks to record. This button selects the record track. Note that synthLAB allows you to select only one record track at a time. If you change the record track by pressing a new button, synthLAB will automatically turn the previously selected button off. Pressing a track record button while it’s already on will turn it off, leaving no tracks selected for recording.

Recording on a track that already has information on it will overwrite the previous data with new data. The original data will be lost.

Track Name

This control lets you reference the track by an entered name. You can put any type of notes or labels in this field. After clicking on the control, you’ll see an editable dialog box. Type the name you want and click the Done button to exit. Up to 15 characters can be entered.

• Editing Instrument Records

The WaveList Edit and Envelope Edit pages allow you to edit Instrument Records. These records define the instruments used by MIDI Synth (see MIDI Synth ERS for details on Instrument Records). Remember, each Instrument Record has two Generators (Gen 1 and Gen 2), and each Generator has one Envelope Record and eight WaveList Records (WaveList 1-8). If you look at the two Edit pages, you’ll notice that they both have Generator select buttons (Gen 1, Gen 2). Use this to select which one of the two Generators you wish to work on. In the Envelope Edit page, it selects one of the two Envelope Records. In the WaveList Edit page, this selects which of the two sets of eight WaveList Records you want. You use the WaveList menu button to further select which specific WaveList to edit while in the WaveList Edit page.

Since each synthLAB Instrument bank has 16 instruments, you first have to select which instrument you want to edit. The Instrument menu item lets you make this selection. Pull it down and select the instrument. Next, select a Generator by clicking one of the Generator select buttons. Finally, if you are editing a WaveList parameter, you need to select a WaveList from the WaveList menu button.

NOTE: Before editing a WaveList, verify the Top Key parameters to make sure that you have selected the correct WaveList for the desired note range. This is the most common mistake that users make when editing WaveLists.

To get to any specific Instrument Record parameter, you need to:

1. Select the correct instrument from the Instrument menu.

2. Select one of the two Generators with the Gen buttons.

3. Select the correct WaveList number from the WaveList menu (if it’s a WaveList parameter.)

Because there is so much data to edit, this will probably sound confusing at first. However, once you start working with it, this organization will start to make sense to you.

• Screen Keyboard

The two-octave screen keyboard will play whatever instrument is currently selected for edit (from the Instrument menu button). Clicking on the keys will play them. You can change the keyboard range and volume from the System Setup menu item found under the Setup menu button on the top of the screen (see “Setup Menu”).

If you click on the keyboard while you’re recording a track, synthLAB will record those notes.

• Envelope Edit Page

This page lets you edit Envelope Records (see MIDI Synth ERS for information on Instrument Records). There are two independent envelopes for each instrument, one for Gen 1 and another for Gen 2. The sliders found on the right set the envelope parameters, while the buttons on the bottom left control the remaining parameters found in an Envelope Record.

Envelope Sliders

Envelope sliders let you edit the eight envelope segments. The top six sliders set the level values while the bottom seven sliders set the rates.

Here’s a brief summary of the Envelope (see “Instrument Records” in the ERS for complete details):

1. Start ramping from zero at Atk rate to Vatk level.
2. Ramp at Dk1 rate to VD1 level.
3. Ramp at Dk2 rate to VD2 level.
4. Ramp at Dk3 rate to Sus level.
5. Hold at Sus level until Note Off.
6. Ramp at Rel1 rate to VR1 level.
7. Ramp at Rel2 rate to VR2 level.
8. Ramp at Rel3 rate to a zero level.

If any level is set to zero, the envelope ends at that point. The level sliders display 1/4th the real value. In other words, a level slider value of 25 sets a value of 100 into the Envelope Record.

Velocity Gain

Velocity Gain sets the Envelope’s sensitivity to MIDI velocity data (see “Instrument Records” in the ERS for details). Note that the Gen 1 control affects both the Gen 1 Envelope and the Gen 2 Envelope, or the entire instrument.

Decay Gain

Decay Gain increases the Decay rates for higher pitched notes (see “Instrument Records” in the ERS for details).

Pitch Bend

Pitch Bend sets the Instrument’s sensitivity to MIDI pitch bend data (see “Instrument Records” in the MIDI Synth ERS for details). Like Velocity Gain, the Gen 1 control affects the entire instrument.

• WaveList Edit Page

WaveList Edit Page lets you edit WaveList Records (see MIDI Synth ERS for information on WaveList Records). There are 16 WaveLists for each instrument, eight for Gen 1 and eight for Gen 2. Make sure that you have the correct WaveList selected from the WaveList menu button whenever you are editing this page.

Keep in mind that there are four oscillators for each instrument, two for Gen 1 and two for Gen 2. The two oscillators (Osc A and Osc B ) in each generator are independently controlled. Each oscillator can have its tuning (Octave, Semi and Fine), volume, wave and configuration set from this page.

Top Key

Each of the eight WaveLists can be activated to play in only a specific range of notes. Top Key allows you to create “multi-sampled” instruments with a different wave sample for each WaveList (see "WaveList Records" in the ERS for details). Clicking the Top Key button will display a dialog box with eight horizontal sliders, one for each WaveList. Remember that the Top Keys are prioritized in order from WaveList 1 to WaveList 8. This means that WaveList 2 starts from where WaveList 1 ended; WaveList 3 starts from where WaveList 2 ended, and so on.

• Oscillator Configuration

The two oscillators in each generator can be set to any one of six different modes or configurations (see "WaveList Records" in the ERS for details). This gives you great flexibility in controlling how the two oscillators interact. Clicking on the control will step to the next configuration (Type 0 thru Type 5).

Wave Select

Holding down the mouse button on either of the two Wave Select controls (Wave A and Wave B) will produce a pop-up menu of available waves from the current Wave File.

The convention used by synthLAB to annotate the difference between wave types is to precede loop-type wave names with the Tilde character (~). For example, if you had two waves titled “Piano” and “~Piano”, the wave “Piano” would be a sampled recording of a piano attack. The wave “~Piano” would be a single-cycle wave of the piano’s sustain and release. The “Piano” wave should be played with a one-shot configuration and the “~Piano” wave should be played with a loop-type configuration. In this example, you may want to use Configuration Mode 3 with Osc A playing the sampled “Piano” attack and Osc B playing the single-cycle “~Piano” wave. Using this example gives you the proper “attack” on key-down followed by an appropriate sustain and release.

• Oscillator Configurations

Oscillator Tuning

There are several important reasons why you need to independently tune each individual oscillator. Since sampled waves are dependent on the input and output sampling rate and on the pitch of the original source, they probably are not going to play back at the correct pitch. If you’re using multi-sampled sounds, they’ll need to be tuned to the correct octave. So the most common use is to tune the waves to the correct pitch.

Many effects can be created by altering the tuning ratio between different oscillators. If you fine-tune two loop-mode oscillators with a slight difference in pitch, you get an interesting movement effect while the two oscillators slowly beat against each other. When you tune the two oscillators further apart in pitch, the sound’s texture increases, giving a richer and thicker sound. If you slightly detune two oscillators playing the same sampled sound, you get the familiar phasing or beating effect.

There are three tuning controls for each oscillator. The Octave control is the primary or top-level control, while the Semi-tuning and Fine-tuning controls offer more precise adjustments. The Octave control is centered on a normalized value of 3. This means that single-cycle waves will produce the correct pitch (middle A is 440 Hz) when the Octave is set to 3, and both Semi-tuning and Fine-tuning control are set to zero. The Semi-control increases the pitch by semi-tone increments and the Fine-control increases the pitch by fractions of a semi-tone. Remember, the best sounds are rarely achieved with the first setting. Try experimenting with the controls to get the effect that you want.

Oscillator Volume

These sliders allow you to set each oscillator’s output level. If you want to turn an oscillator off, set the Volume to zero. Like the Envelope sliders, these sliders display 1/4th the real value set in the Instrument Record.

There are a couple of points you should keep in mind when you’re making instruments. Since sampled waves usually include a recorded envelope, their output volume will sound lower than single-cycle waves. So if you’re mixing the two types, you’ll usually need to play single-cycle waves at a lower level to get the correct balance.

There’s a slight amount of cross-talk between Osc A and Osc B. If you’re not using one of the oscillators (zero volume), make sure that you select a wave for the unused oscillator that has very little high-harmonic content (like a sine wave). Also, tune the unused oscillator to a low frequency. Even though the volume is set to zero, you may still be able to hear the oscillator if its selected wave is very bright or at a high pitch.

• Apple Menu

Because of its graphics interface and design, synthLAB does not support New Desk Accessories (NDAs). However, Classic Desk Accessories (CDAs) (available from the text control panel) still work fine.

The interface used in synthLAB is a result of the author’s personal choice, and does not reflect on the MIDI Synth tools’ compatibility with the Apple® desktop interface. MIDI Synth is optimized for speed, so it works well with any desktop/non-desktop interface.

About SynthLAB...

Selecting this item brings up the player keyboard dialog which also shows the copyright notice and application version. The keyboard will play whatever sequence is currently in memory.


Selecting this option displays a clock.

• File Menu

As mentioned earlier, synthLAB deals with several different types of documents. For the sequencer, it uses Sequence Files. A Sequence File contains all the note information, how fast to play these notes and what instruments to use when playing the notes.

For the synthesizer, it loads, saves and edits Instrument Files. An Instrument File contains information on how to build instruments, how the instruments behave in response to certain MIDI events and which waves to output when playing.

When you save an instrument, synthLAB will save the name of the current Wave File as part of the Instrument File. So the next time you load this Instrument File, the correct Wave File will also get loaded. The Wave File must be in the same directory as the Instrument File. An error message is displayed if synthLAB can’t locate the defined Wave File. You can load any Wave File you choose, but the sounds will not be the same as if the proper Wave File was loaded.

Along with the actual sequence information, Sequence Files also contain the name of the Instrument File used when the Sequence File was saved. When loading the Sequence File, synthLAB will search the same directory for the Instrument File (along with its Wave File). It’s important to understand that synthLAB does not save the Instrument File when it saves a Sequence File. It only saves the name of the current Instrument File as part of the Sequence File. If you changed some instruments and plan on saving them under a new file name, make sure to save the new Instrument File first, before saving the sequence. This way the Sequence File will have the name of your new Instrument File, since the sequence will be saved after you gave the Instrument File a new name. Otherwise synthLAB will still load the old instruments in whenever that sequence gets loaded.

As you can see, synthLAB expects Sequence, Instrument and Wave Files to all be in the same directory. Loading a Sequence File will automatically cause an Instrument File to load, which in turn will automatically cause a Wave File to load. If these files are not in the same directory, you’ll have to load them in manually. For example, If your Instrument and Wave Files are in a different directory from your sequences, after loading in a sequence, you’ll get an error message telling you that synthLAB couldn’t find the appropriate Instrument File. This message is useful since it gives you the name of the Instrument File that goes with the sequence. At this point, you’ll have to select the Load Instrument... item from the File menu and find the correct Instrument File.

New Sequence

Selecting this item will set the sequencer to default values. Use this when you’re making a new sequence from scratch. Be careful with this selection because it will erase any sequence currently recorded in memory.

Default names (“Track 1-8”) will be assigned to all eight tracks and track channels will be set to ‘thru’ (0) mode. Track 1 will be set to both record and play with the counter reset to the first beat (1:1). Also, all 16 instrument volumes (see “Volumes...” in the “Setup Menu” section) will be set to maximum values.

New Sequence does not affect the tempo value, metronome, count-off, key start, beat value, beats per measure and the sequencer clock source. Nor does it affect the instruments in any way.

Open Sequence...

After selecting this item, select a Sequence File from the displayed dialog box. The appropriate instruments and waves will automatically load along with the sequence. synthLAB expects the Instrument and Wave Files used by the sequence to be in the same directory as the sequence. If they’re not, you’ll get an error message telling you what file synthLAB couldn’t find.

All the information saved with the sequence (see “Save Sequence...”) will be restored when the Sequence File is loaded. Loading a sequence will over-write any current sequence you may have in memory. So be sure to save your old sequence before loading in a new one.

synthLAB can’t handle sequences which are larger than 128k bytes in size. If you’re loading sequences made by synthLAB, this is not a problem. If you’re importing sequences from other programs, make sure that they are less than this amount by checking their file size from the Finder.

NOTE: If you want to Load an existing sequence with custom Instrument and Wave Files, you should first load the Sequence File, then the Instrument File followed by the Wave File. Using this technique you can mix and match Instrument and Wave Files to produce some very unique sounds.

Save Sequence...

This item brings up the custom dialog box for saving files. Type the name of your Sequence File at the bottom and click on the Save button. If you want synthLAB to load your instruments automatically the next time you load this sequence, make sure that you save the sequence in the same directory where the Instrument and Wave Files are located. synthLAB will save the current Instrument File name along with the sequence, and tries to load these instruments whenever the sequence is loaded.

Besides saving all the note and MIDI information in your sequence, all track names, track channel, track play, track record, instrument volumes, beat value, beats per measure and the tempo values are also saved with the sequence (see “Sequence File Format”).

Load Instrument...

After selecting this item, select an Instrument File from the displayed dialog box. The appropriate Wave File is also automatically loaded along with the instruments. Remember, synthLAB expects the Wave File to be in the same directory where the Instrument File is located. If it’s not, you’ll get an error message telling you the Wave File name that synthLAB couldn’t find.

Save Instrument...

This item brings up a dialog box for saving Instrument Files. Type the name of your Instrument File at the bottom and click on the Save button. If you want synthLAB to automatically load the Wave File in the next time you load these instruments, make sure that you save the Instrument File in the same directory where the Wave File is located. synthLAB will save the current Wave File name along with the instruments (see “Instrument File Format”), and tries to load this Wave File whenever the instruments are loaded.

Load Waves...

This item can be used to load Wave Files located in different directories from their Instrument Files. If synthLAB can’t find the Wave File when loading instruments, it will display an error message telling you the name of the Wave File needed. You can then select this menu item and load the correct Wave File from its directory.

If you load a new Wave File that is different from the one that was used when the instruments were created, you’ll need to redo most of the Instrument controls to work with the new waves. In other words you’ll have to build the instruments from scratch.


Selecting this item will exit synthLAB and return the program control back to the launching application (usually the Finder). Before selecting this, make sure to save any sequence and instrument changes. If you don’t, they’ll be gone forever.

• Edit Menu

This menu has functions that you use when editing or creating instruments and sequences. Use the options from the Edit menu to look at your sequence data, name your instruments and do various copy and paste functions.

View Sequence...

Selecting View Sequence brings up a dialog box which shows you information about the current sequence in memory. On the right side, you’ll see the name of the sequence (actually the name of the last loaded or saved sequence), its length in bytes and the number of bytes available in the sequence (seq) buffer. Below this is the name of the current Instrument File (Bank) and the name of the current Wave File (Wave).

On the left side, is a list control which shows you each individual sequence item in your sequence. The left-most value displayed in the View Sequence window is the time-stamp shown in measure: beat: remainder ticks format. Remember that beats are based on a value of 96 ticks in a quarter note. So when displaying any sequence item that does not fall on a beat, the remainder field will show the number of ticks past the last beat. If the beat is a quarter note, the remainder will have a value between 0 and 95. An eight-note beat will have remainders between 0 and 47, and so on.

Displayed to the right of the time-stamp, is the channel number. If you’re playing the synthesizer, then this is also the instrument number.

Finally, the remaining three fields on the right show the MIDI message and data bytes. The MIDI message status field is represented by any one of the symbols described in the chart below. Since only valid data bytes are shown, you may see one, two or no data bytes following the message status.

MIDI Status Messages Chart
up arrow, followed by a note : Note off - $8x
down arrow, followed by a note: : Note off - $9x
two underlined down arrows : Poly After-Touch $Ax
double right arrow : Control Change $Bx
a stacked box symbol : Program Change $Cx
underlined down arrow : Mono After-Touch $Dx
a sine wave : Pitch Wheel $Ex

Name Inst...

This item lets you modify the name of the currently selected Instrument for editing (selected from the Instrument menu). Up to 15 characters can be entered as an instrument name.

Copy WaveList
Copy Generator
Copy Instrument

Selecting any one of these items will copy the specified parameters into an internal clipboard. This is used to duplicate the contents of a WaveList, Generator or Instrument. Once the parameters are copied into the clipboard, you can then select another WaveList, Generator or Instrument, and paste those parameters into the new location.

A Copy WaveList selection will only copy the 16 parameters of the selected WaveList. Copying a Generator will copy one envelope and eight WaveLists. Finally, when you copy an instrument, all parameters from both Generators (both Envelopes and all 16 WaveLists), including the instrument name, will be placed into the clipboard. The original parameters will not be affected in any way by this.


Once you have completed a Copy function, you use this item to place the contents of the clipboard into some other location. This item will be disabled if the clipboard is empty. Whenever the clipboard holds an item, the item will show you the parameter type. For example, if you copied a WaveList, the Paste item will read “Paste WaveList”. Selecting the Paste item will over-write the original parameters, so use this carefully.

Note: The clipboard will not be saved when you quit the application.

• Setup Menu

When you start synthLAB, many of the program variables are set to their default values. Other program variables get set whenever you load a sequence. The Setup menu allows you to change these variables and to tailor the program environment to your specific needs.


synthLAB always starts with MIDI disabled. If you have a MIDI interface connected to your IIgs, you must first enable and configure the MIDI port from here before synthLAB can respond to your MIDI keyboard. As stated earlier, AppleTalk and MIDI cannot be run simultaneously. If you want to have access to MIDI functions, you will need to turn off AppleTalk (See "AppleTalk and MIDI Functions").

A dialog box is displayed with controls for the various MIDI parameters. You can select the MIDI mode, enable MIDI input (In) or output (Out), enter the Basic Channel number and set the velocity compensation value (see the ERS for details on MIDI parameters).

The top button of the In/Out Select enables or disables the MIDI In function (note that in the icon, the arrow points IN to the computer, indicating the direction of MIDI data). When you enable MIDI In, you’ll see the MIDI IN display (top right corner of the screen) becomes active. This display will light-up (highlight in yellow) whenever a MIDI message is received at the MIDI port.

The lower button enables or disables the MIDI Out function. If you’re not using this function, make sure it is off (button is “out”).

If there’s a problem with your MIDI setup, you’ll get an error dialog instead of the setup dialog. See Appendix A for information on configuring MIDI correctly into your system.


Selecting this item displays a dialog box that has controls which affect the sequencer operation. The bottom two controls specify the values for measures and beats. The counter display, metronome and tempo control are all affected by these.

The Metronome will cause an audible woodblock tick to sound on every beat whenever you play or record with the sequencer. When Count Off is enabled, the sequencer counts off one measure before starting to play or record. You can force the sequencer to wait until it receives a "MIDI note off" message through the MIDI port before it starts playing or recording by enabling the Key Start control. This will allow you to synchronize your playing with the tracks that have already been recorded.

NOTE: When using Key Start, the first key pressed is not recorded. This first key press is used to tell synthLAB to begin recording the sequence. All MIDI input after the first key press is recorded by synthLAB.

Normally you use the Internal clock to advance the sequencer timer. This means that whenever you start the sequencer, it starts to increment its timer based on the current tempo value. If you need to synchronize the sequencer to an external MIDI device (like a drum machine or another sequencer), you can slave synthLAB through MIDI by selecting the MIDI port clock. Note, synthLAB can only receive MIDI timing clocks. It does not send them. This means that synthLAB can be a slave device but not a master.

Track Output...

With synthLAB (and MIDI Synth), you can specify where to send the output from each track whenever the sequencer is playing. For example, you can have the sequencer play only the synthesizer on tracks 1, 2 and 5, while playing only a MIDI device on track 4, and have it play both the synthesizer and the MIDI device on track 3. This sequencer output configuration is mapped from the dialog box which is displayed whenever this menu item is selected.

Think of the sequencer as a box with eight audio jacks. These jacks can connect to the synthesizer and eight MIDI ports. These, in turn, can connect to your external MIDI device, one set for each track. This dialog box has two controls for each track. The left button with the Audio Plug icon connects the sequencer track to the synthesizer, while the MIDI Plug button connects the track to the MIDI port.

If you’re using MIDI output, make sure that the MIDI Out button in the MIDI Setup dialog is on. This button acts as a master control, enabling or disabling MIDI Out globally on all tracks.

System Controls...

This item lets you adjust the pitch and volume of the screen keyboard found on the WaveList and Envelope pages.


The volume level of each one of the 16 instruments can be adjusted independently using this dialog box. These controls are intended to be used with the sequencer to balance instrument levels when playing many instruments together. These settings are saved in the Sequence File, and are restored when you load a sequence.

The System Volume control sets the overall output level for the headphone jack on the back of your IIgs. It will have no effect on the volume if you’re using a stereo interface card (you’ll have to use the volume control on your stereo amplifier).

All Notes Off

This is the equivalent of the panic button found on some synthesizers used to kill any hung notes (notes that never got an “off” message). Selecting this item will send a “note off” message to all voices active in the synthesizer.

• Appendix A: MIDI Control Panel

The MIDI Control Panel was created to encourage developers to specify MIDI in a uniform manner inside their applications. Whenever a user first runs a MIDI program, they usually have to input information about their specific MIDI setup through some sort of dialog box. When they run another MIDI program, they must give that program the exact same information all over again. The problem occurs when the user changes their MIDI setup. Now they must enter this new setup into all their MIDI programs, one by one. Another problem is that the user might not remember exactly what their setup is a year later when they buy a new MIDI program.

With the MIDI Control Panel, the user enters their specific MIDI setup only once through the Control Panel. The MIDI Control Panel creates a setup file called Midi.Setup inside the System:Drivers folder. This folder contains information about the user’s MIDI connection. From there, all MIDI applications can use the Midi.Setup file to configure themselves.

Installing the MIDI Control Panel

1. Copy the file called MIDI from the synthLAB disk to the CDevs folder.
(The CDevs folder is found inside the System folder on your boot disk). You have now added a new selection called MIDI to the Control Panel.

2. From the Finder, select the Control Panels NDA from the Apple menu.
Scroll down the selection list until you find the icon called MIDI.

3. Double-click on the MIDI icon to open it.

Once MIDI is selected, you’ll get the setup options. The options on the top select where the MIDI interface is connected to your GS. The bottom list lets you select the appropriate MIDI Driver file.

MIDI connection

If you’re using an external MIDI interface (Apple MIDI) that connects to a serial port on the back of your gs, then only select either the Printer or Modem Ports. If you are using an internal card as a MIDI interface, such as the Applied Engineering Audio Animator*, then select the Card Slot button and one of the seven slot numbers.


The MIDI CDEV scans your System:Drivers folder and displays all of the MIDI driver files it finds there. From this list, you must select the appropriate driver for your interface. If there are no drivers shown on the list, then consult your MIDI interface manual for instructions.

* Audio Animator is a trademark of Applied Engineering.