Magazine Archive

Home -> Magazines -> Issues -> Articles in this issue -> View

Lab Notes: The Polyphonic Synthesizer

Article from Polyphony, February 1978

We've come a long way over the last year in terms of developing a series of digitally interfaced modules that will allow computer control of music synthesizers. I suppose that the time has come to look at tieing them all together, with the computer, and begin doing interesting things.

I had wanted to start with "the ultimate sequencer programs" but am not completely happy with them yet. They still need a little polishing.

Instead, we'll start with what should be another popular system: THE POLYPHONIC SYNTHESIZER

Which is a much simpler job than the ultimate sequencer.

I would like to go through the system showing specific ways to do things for a variety of manufacturers equipment but that just isn't practical. Instead, we'll look at a completely PAIA based system and assume that if you are using different equipment you are familiar enough with it to make whatever changes are necessary.

Oh, one more thing before we begin, be sure that you understand that there are a wide variety of ways to do polyphonic synthesizers. This is only one of them. I hope that the algorithm used here works for you. It's one of many, some with sort of special quirks that make them useful in certain situations but difficult to work with generally — this seems to be good general purpose way. Ready? We have lots to do and little space and time; here we go.


Most of the hardware that we'll be using has been described here over the last year (or so). For the controller portion of this system we'll need:

1) AN ENCODED KEYBOARD 8782 or EK-3 retro-fitted equivalent

An 8700 in it's minimum configuration will run the programs that we'll list. A cassette interface system is useful to the point of being almost mandatory. We'll show some new panels and stuff to make it all pretty.


And, of course, we'll also need as much synthesizer as we think is necessary.

With all of the items listed, various wiring schedules have been mentioned for doing various non-computer things. We now need to establish some standards for this new use, a computer based polyphonic system.

If we choose wisely, we should come up with a standard that has plenty of room for future growth. Some consideration has gone into the system which follows and I believe that it will serve our needs for some time to come.

Many of you will already have much of this wiring done, as much of it is simply an extension of what we've done before. Check carefully to be sure your wiring is to this new standard.


Let's go ahead and configure this system from the beginning so that the computer fits in the synthesizer cases that we've been using. All of the parts will fit in the case like this:

figure 1. computer/synthesizer sub-module placement.
(Click image for higher resolution version)

At this stage you may have more dis-assembly to do than assembly. Particularly, the old control panel of the keyboard is removed to make room for the computer and any unregulated supply that was powering your keyboard encoder is replaced with a PS-87 which supplies all digital power for the entire system. This is going to give you a few parts for your "bench stock", the old power supply components and a couple of push-buttons, but some of the parts we will be re-using. Don't throw anything away.


Maximum useability of the system would seem at first to depend on where the AGO keyboard switches appear in the key matrix. We want them in the middle so that we have as much room to transpose down in pitch as we do for up-scale transpositions. Some 8782 instructions had the keyboard placed 8 switch positions below where it should be for this ideal. The "column" connections are fine, but the "row" connections on these keyboards will need to be "slid up one" so that they conform to the configuration as shown in figure 2.

FIG. 2

FIG. 3: The Keyboard as Matrixed
(Click image for higher resolution version)

This will place the keyboard more or less in the middle of the matrix as shown in figure 3. This is really a fine point, and the system will work OK in most applications almost no matter where in the matrix the keys are, but go ahead and change now so that you won't be limited in the future.


We don't need any of the "trick" things that we used when we didn't have a computer (the orgasmatronic glide circuit, etc.), just the bare-bones encoder. You may remove all push-buttons slide switches, pots etc.; most of these will come out when you remove the old front panel.


If your system previously had a DB-25 female connector tied to the output of the encoder, desolder it (carefully — whistling may make the job seem easier). In place of the DB-25 connector, we now need to terminate the output of the encoder in a DIP header that will mate with the INPUT PORT #1 (J4) connector on the rear edge of the 8700 computer board.

These connections should be made as in figure 4.

FIG. 4
(Click image for higher resolution version)

These connections should also be made carefully and the DIP header pins well heat-sinked to prevent melting the plastic header. NOTE that while many of the non-computer applications used the STROBE line to trigger the D/A, here we ignore this line and instead use the STROBE as the seventh data bit (D6) of the interface.

Similarly, the encoder's START line becomes the 8th data bit (D7).

Also, you will notice that power to the encoder is picked up through this connection from the 8700 itself.


So that our resulting system can be easily broken down into two separate units (computer/keyboard and synthesizer head), this is the place to use the DB-25 connector that was salvaged from the old keyboard front panel.

Connections should be made between the female DB-25 connector and a pair of DIP headers like those in figure 5.

NOTE that the first header (P2) provides data lines and the CASS select signal (our 8780/8781 shares this output structure) while the second connector (P3) provides the address lines required by the QuASH.

FIG. 5: COMPUTER TO 8780/8781
(Click image for higher resolution version)

8780/8781 WIRING

The male DB-25 connector that terminates the cable to the 8781 is wired in what is essentially an expanded version of our previous standard so that here you are faced more with adding wires than re-arranging them.

Connect these elements together as in figure 6.


This wiring schedule is examined in detail in the 8781 QuASH assembly manual. An important thing to notice here is the way the grounds are handled. Note that the ground pin on the rear of the 8780 board serves as the central ground for both analog (synthesizer) and digital power distribution. This grounding scheme is important to prevent ground loop problems and should be followed exactly. This entire 8780/8781 assembly should be mounted in the synthesizer head cabinet.

FIG. 6
(Click image for higher resolution version)


Finally, make arrangements for physically mounting the computer in the keyboard case by first mounting the computer to a suitable front panel as shown. (See figure 7)

And don't forget to provide a socket at the 8700's expansion connector (J7) or to mate P3 with this socket before assembling the computer/front panel. If the cassette interface is being used, terminate the input and output lines in miniature phone jacks as shown in figure 8.

Plug all the connectors together and you should be ready to load a program.

FIG. 7
(Click image for higher resolution version)


The polyphonic program that we'll be using is called simply: POLY 1.0

This program supports up to 8 output channels the way that it is written and can be easily modified to provide for more.

POLY 1.0 allocates synthesizer resources to keyboard requirements using this algorithm:

1) Output all notes appearing in the output buffer area (NTABLE) after adding the corresponding transposing figure from TTABLE. Go to 2.

2) Wait for keyboard scan to start and place a list of all keys currently being held down in the input buffer area (KTABLE). When buffer full or scan complete go to 3.

3) Clear the trigger flags (D6) of all notes in NTABLE (the output buffer).

4) Compare each entry in the input buffer (KTABLE) to each entry in the output buffer (NTABLE). If they are the same, set the trigger bit of the NTABLE entry and eliminate (zero) the entry from KTABLE. If all available outputs are used, or if all keys down find a home go to 1.

5) Place the remaining input buffer entries in output buffer locations which do not currently correspond to a down key (those in which D6 is cleared). When all input data has been placed or all channels available have been used go to 1.

There are a number of subtle implications here and unfortunately not enough space to cover them all.

A couple of really important ones are that if we think of "new" notes as ones corresponding to keys that were just pressed, this method tries to place those new notes in output channels which at some point in the past were already producing those notes.

This prevents a string of identical eighth notes (for example) from being assigned to different outputs each time they're used. Notes, once assigned, tend to stay assigned regardless of other keyboard activity — they don't move around in a totally unpredictable fashion as with some analog multi-note keyboards.

It also means that once the number of output channels available is "used up" by down keys that need to be placed, all other keys that are down are simply ignored (this is exactly what you want).

One important aspect of the above is that the program must "know" how many output channels are available to it, otherwise there is the possibility that notes may be assigned to non-existant channels (ones that have no corresponding hardware, not too bad in itself) and further (the really bad part) future activations of the note will be assigned again to these non-existant outputs — producing "dead" synthesizer keys that seem not to be doing anything.

Memory location $00EA contains the number of synthesizer channels available, more on this shortly.


POLY 1.0
By John 8. Simonton, Jr. © 1978 by PAIA Electronics, Inc. All rights reserved.
(Click image for higher resolution version)

Shown on the next page is a disassembled listing of POLY 1.0.

Because, again, of space limitation we cannot re-print a fully documented version of POLY 1.0. It is supplied with the assembly and using manuals for the 8781 QuASH.

POLY 1.0 is also available in 8700 compatible cassette-tape form for $4.00.


If you have a cassette interface on your 8700 and the POLY 1.0 tape, loading is simply a matter of connecting your tape recorder to the cassette input connectors on the 8700 and loading the tape using the following entry sequence:


If you don't have the CS-87 option, you must enter the code manually from the 8700 keyboard.

The cassette version of this program loads all of page zero of memory (its total requirement) and in the process initializes a couple of things that you will need to care for manually if the cassette is not available. When entering manually, be sure to set the number of outputs to correspond to the number you have available. For example, assuming that you have a system with a single QuASH, the number of channels available should be set to 4 using the following computer keyboard sequence:


The tape version initializes the number of outputs at the most likely number of 4. If you want to use less channels (because of lack of modules, say) or have a system with more, do it as was shown above.

When entering the program manually, make sure the decimal mode flag in the status register is cleared by using this sequence:


This is automatically taken care of when the tape version is loaded.


With everything connected, loaded and initialized, we're ready to begin making music. Go to the beginning of the program and begin running it.


If everything is working properly, we will see the 8700 displays counting quickly, incrementing by one for each scan of the keyboard. All of the QuASH outputs should be at a very low output voltage (the program initializes them as zero) and the trigger flags for each channel should be cleared.

As we press synthesizer keys, QuASH channels should "come alive" and produce control voltages corresponding to the keys that POLY 1.0 has assigned to them. The trigger flags should be set if the key corresponding to the channel is currently down and clear when the key is released.


While POLY is running, touching any of the keys from 0-3 on the 8700 keyboard (the first row of keys) causes the system to clear all QuASH channels to zero and wait for new data to be assigned. You'll figure out what this is good for as you become familiar with the system.

Maybe more importantly, touching any of the keys 4-7 (the second row on the 8700) provides a tuning function and causes all QuASH channels to produce the same note with the trigger flags set, allowing all oscillators to be set to the same pitch. The note produced corresponds to the 2nd C on a standard configuration 3 octave keyboard. THE CHANNELS MUST BE CLEARED AFTER TUNING by touching the first row of 8700 keys.


There are an almost unlimited number of ways to use the multiple control voltage produced by the QuASH and POLY 1.0.

You may want to use multiple VCO's mixed into a single voicing circuit, (See figure 9), or what amounts to a complete synthesizer for each control channel or anything in between, (See figure 10).

FIG. 9
(Click image for higher resolution version)

FIG. 10
(Click image for higher resolution version)

A word of advice: in your beginning stages of learning to use this system, you should try to stick to configuration in which all of the channels are producing the same "type" of sound — as close to identical as possible. As your skills progress and you develop a feel for how POLY 1.0 is going to massage data you can work up to using some output channels to set VCO pitches while others control filter parameters (just an example — the number of possible combinations is extraordinarily large).

POLY 2.0 is under dev elopement and features the use of some QuASH channels as software controlled envelope generators, reducing the need for lots of these hardware modules.

POLY 3.0 provides for computer storage of sequences of chordes or notes.

ONLY POLY 1.0 18 AVAILABLE NOW. The others are still a couple of months away. I mention them only because I want to make sure that we all understand that the nature of this new musical tool is a function of the program that is running and not so much of the hardware that it uses.


The following are available from PAIA for those of you who are experimenting with building this system from scratch:

POLY 1.0 CASSETTE tape and documented listing. $5.00

DB-25 connectors and 2 single ended DIP headers.
Satin black finished
Computer mounting bezel, plus hardware 24.95 ppd.

More from these topics

Browse by Topic:


Electronics / Build

Also featuring gear in this article

Previous Article in this issue

Modifying The Mu-Tron Bi-Phase

Next article in this issue

Is This The Ultimate Interface

Publisher: Polyphony - Polyphony Publishing Company

The current copyright owner/s of this content may differ from the originally published copyright notice.
More details on copyright ownership...


Polyphony - Feb 1978

Donated & scanned by: Mike Gorman

Feature by John Simonton

Previous article in this issue:

> Modifying The Mu-Tron Bi-Pha...

Next article in this issue:

> Is This The Ultimate Interfa...

Help Support The Things You Love

mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.

If you value this resource, you can support this project - it really helps!

Donations for July 2024
Issues donated this month: 14

New issues that have been donated or scanned for us this month.

Funds donated this month: £20.00

All donations and support are gratefully appreciated - thank you.

Magazines Needed - Can You Help?

Do you have any of these magazine issues?

> See all issues we need

If so, and you can donate, lend or scan them to help complete our archive, please get in touch via the Contribute page - thanks!

Please Contribute to mu:zines by supplying magazines, scanning or donating funds. Thanks!

Monetary donations go towards site running costs, and the occasional coffee for me if there's anything left over!

Small Print

Terms of usePrivacy