for Wasp Synthesiser and Commodore 64
Jethro Hill and some software that allows EDP's Wasp synthesiser to be sequenced from a Commodore 64: amazingly, no additional hardware is required to interface the two...
In the wilds of darkest Worcestershire, research has revealed that EDP's Wasp monosynth can be interfaced with the Commodore 64 without any additional hardware.
Some of you CBM 64 owners must have one lying around somewhere. Maybe that's it in the greenhouse, upside down with seedlings in its base troughs. It might look like a seed tray, but turn it over and the Wasp is a serviceable monosynth. So, wipe the dust off it, get rid of the spiders (pun intended) and try this little project.
I promise that there are no complicated electronics, none of those spidery (there I go again) 74... chips nobody knows what to do with, no MIDI - nothing like that at all. All you need is a couple of connectors, some cable and a soldering iron. Ready? Right, this is what you do.
Obtain a standard seven-pin DIN plug, a 2x12 way 0.156" edge connector, some cable of suitable length and capable of carrying seven signals and an earth return (seven-core or more screened, eight or more ribbon, or eight separate wires: any will do!). Connect the DIN plug to the edge connector, with your cable in between as shown in the wiring diagram. There's not much room inside the DIN, so do it carefully as any short circuits will only lead to tears. Finished yet? Well, that's it!
Now type into your 64:
POKE 56579,255 (RETURN)
POKE 56577,32 (RETURN)
If you hear a sound, everything is working as it should be. If you don't, check both wiring and typing, and have another go.
What you have now is a uni-directional interface allowing control of the Wasp through the user port of the 64. This control is achieved by applying a 'number' in the form of a six-bit binary word and a trigger to the appropriate pins of the DIN socket on the Wasp. The number is capable of representing any decimal number between 0 and 63 but, in fact, the Wasp only uses the numbers 0 to 11, 16 to 27, and 32 to 43 to give the notes indicated in the note number table. The shrewd observer will note that this gives 33 notes as opposed to the Wasp's 25-note keyboard. In fact, we've extended the range of the Wasp, not a particularly difficult task since the synth's 25-note capability is set by its keyboard design, not its internal circuitry. Further, it can be seen that the octaves are simply related by a difference of 16. The lowest note is C# (N=43) while the highest is C (N=0), corresponding to the top Wasp keyboard note.
Switch off your CBM 64 and insert the edge connector. Now check it and put it in the right way up. Failure to put this in correctly (most of the soldered connections should be towards the bottom), will put 9V AC into your Wasp and so back into the wrong parts of the 64. Tears again.
Check that the Wasp is set up to give a decent sound when you press its keys, and insert the DIN into either of the sockets on the right. A short attack time and long decay are ideal at this stage, since the link can give sharp clicks even if it is not working properly: the long decay time helps you to distinguish these. A long attack time will only wash out the note, preventing you from being able to tell whether or not it's working.
Now, the software. Type Table 1 into your 64.
Triggering the Wasp is achieved by a positive-going voltage pulse edge applied to the trigger pin of the control socket. Thus all we need is a control port capable of supplying the six-bit numbers and the trigger edge. The 64 is ideal for this purpose.
By using Pins C to J of the user port we connect to the six least significant bits of one of its 'complex interface adaptors'. POKEing the correct numbers to the relevant I/O memory locations then transmit the correct signals to the Wasp.
First, we must set the user port to be an output. This is controlled by the data direction register at memory location 56579. A zero here means input and a one implies output. Storing 255, all ones set, in this register will set all the port bits to outbit. Hence we use POKE 56579,255.
To apply the control bits to the Wasp, we simply supply the relevant number to the port itself: this is located at memory location 56577. Thus POKE 56577,N, where N is the note number from the note number table, will set that note. It is not necessary to know anything about the binary form of N since the user Port and the 64's system look after all that for us. The trigger is connected to the 'handshake' line of the user port and is automatically looked after. By simply POKEing to the user, the 64 also outputs a short pulse on this line to indicate that the data is ready. The Wasp then responds by reading the value of N from its control pins and playing the note.
It can probably be seen that all that's needed now is a program that initially sets the user port to output, calculates a sequence of note numbers and the times at which they occur and POKEs them to the user port at the correct time. The form of this software is not fixed, and different people will do it in different ways depending on their needs, but a fairly versatile BASIC program is given here.
It does not allow retrospective editing but does permit relatively easy note entry from the QWERTY keyboard with pre-entry editing, post-entry appending, file storage to disk or cassette, and also uses a special music character to display the notes. In fact, very little of the software is actually to do with playing notes (lines 630-650); the bulk of the program being taken up by procedures to handle keyboard input and suitable displays on the screen.
Try typing the program into the 64: it shouldn't prove too long. When you're done, press RUN followed by the return key (R). I suggest you use RUN 80 while de-bugging, since this bypasses the time-consuming character set-up routine. The only thing you lose is the music character set (a machine language program would speed this up dramatically - but that's another story!). If all's well, the screen will clear and the prompt 'CASSETTE OR DISC (C OR D)?' should appear, to which you must reply accordingly, adding (R). The program then finishes its initialisation and responds with 'START ENTERING' and '<'.
Rests and time intervals:
Rests are obtained simply by pressing 'R'. The display will then register standard rest symbols, except 1/16th notes which, like their note symbol, have their fourth bar on the other side of the stick: such are the limitations of 8x8 Pixel characters. Time intervals are selected by using the keys '1234567' to give appropriate rest values. Again, these may be pre-entry edited until (R) is pressed.
Dotted notes and triplets are obtained by using and T, while their effect can be cancelled by using 'O'. Note that only one dot (or triplet) may be used at any time.
The last note entered is the starting base for the next note, so by pressing (R) n times, the last note may be repeated n times.
Press 'P' and the program goes to the play mode without preventing more notes being added afterwards. It will first request the desired speed (CROTCHET BEATS PER MIN?) to which you must reply with a number and (R). The prompt 'HOW MANY TIMES?' then appears, to which you reply with the number of times you want the sequence repeated, plus (R). When the process has finished, 'FINISHED PLAYING' is displayed, and you are returned to note entry, where you may add more notes if you wish.
The "<' symbol will be with us from now on as a prompt to type; you simply press certain keys without using (R), which is only used for data entry.
The keys 'ZXCVBNM' (the bottom row of the 64 keyboard), represent the notes DEFGABC respectively. Press one and the note will come up on the screen. This note is displayed only and will not be placed in the sequence until (R) is pressed. Pressing any other note key will change the note displayed, so that each note may be inspected and edited before being entered using (R).
Typing in 'S' 'F' and '=' respectively sharpens, flattens or returns to natural the currently displayed scale note, meaning that the musical key can be pre-adjusted, though remember to reset accidentals if you use them.
The keys 'f1', 'f3' and 'f5' set the required octave and leave it until reset, 'f1' sets the lowest octave and 'f5' the highest, the indication on screen being no superscript for the lowest octave and superscripts 1 and 2 for the next and highest octaves. Note that keying 'S' on notes C to C# automatically changes the music up an octave.
Erasing and filing:
The 'E' key will erase the current sequence irrevocably after you've made sure that you really do want to do this and that you haven't just pressed 'E' by mistake.
Pressing 'K' or 'L' permits you to SAVE or LOAD from cassette or disk, sequences having names of your choice. Note that a file saved to disk with the same name as one already stored will unconditionally overwrite the latter.
Finally, 'Q' permits you to leave the program after a check, and the 64 is returned to its default character set and screen location.
Well, that's just about it. I hope you have as much fun with the program as I have. Interfacing really is as easy as I've explained, though I can't stress too strongly the importance of checking all your wiring, putting the edge connector in correctly - never insert it with the 64 switched on.
Finally, if you have neither the will or the time to type this program in, a cassette version - with preprogrammed examples - is available from Joreth Music, (Contact Details): Price is £2.50 including postage and packing.
Gear in this article:
Feature by Jethro Hill
Previous article in this issue:
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!