Analogue to Spectrum to Analogue
In the November Micromusic article we described a circuit which allowed the Spectrum computer to control a 1V/octave synthesiser. However, after a few hours of laborious note programming into the sequencer program, it was obvious that some other method of note entry was required — enter the A/D.
Adding the circuitry shown in Figure 1 to the previous controller (November '82, page 16, Figure 1) allows the Spectrum sequencer to store notes entered directly from an analogue keyboard, again with a 1V/Octave span.
The main component in the additional circuitry is obviously the Analogue to Digital Converter (ADC0804). This device is shown connected in its 'free-running' mode, ie it is converting continuously. The IC has an internal clock circuit based around a Schmitt trigger requiring only an external capacitor and resistor (across pins 4 and 19) to operate. The free running mode requires a 'kick-start' to begin converting, this is provided by the transistor connected to pins 3 and 5, WR and INT respectively. When the circuit is first powered up a short pulse is generated by the capacitor/resistor network across the logic supply rails. This pulse turns on the transistor pulling WR low and starting conversion.
The 'power-on reset' pulse is also used to reset the INS 8255 (pin 35), this sets up all the ports as inputs — a necessary step since the tri-state option of the A/D is not used.
To allow a 1V/Octave system to be used the scale of the A/D must be set to 5.33V. (Each semi-tone raises the voltage by 1/12th of a volt and since the system can accommodate 64 semi-tones — 64 x 1/12 = 5.33V).
To allow for differing keyboard offsets a preset voltage is applied to pin 7 input. This is subtracted from the CV input (pin 6). Therefore if the lowest key on the keyboard gives an output of 1V and the highest 4V, the preset should be set to 1V to trim out the offset. The CV input now appears to be 0-3V which would allow notes from 1C to 3C to be displayed from the program.
The other input is the gate signal which requires an input of 6-15V. This signal tells the computer to load the analogue data and move to the next step.
The small section of programme shown in Figure 2 is a direct replacement for the 'write' routine in the previous sequencer programme (November 82, page 72, Figure 2 lines 1000 to 1670).
The first new lines (1080-1100) interrogate port C. If bit 0 is set, ie a key has been pressed (gate high) then the programme jumps out of the loop and onto line 1110. If bit 1 is set then a 'rest' is required. This high level is provided by the switch used 'reset' in the play mode. A dummy 'rest' note is set and the programme jumps to 1120. If bit 2 is set then 'break' is required. This high level is 12 provided by the switch used as 'break' in the play mode. If none of the above then the programme loops back to line 1080. The data from the A/D is read in with line 1110 and converted to one of 64 steps. If this input is greater than 47, ie more than 4 octaves, then the program returns for another input, otherwise the input is stored in the memory location pointed to by s+a (base address plus displacement). The list subroutine is then called to display the entry. If all inputs are 0, ie all keys and switches released, the programme returns for another note — this prevents multiple entries when a key or switch is held down.
The calibration procedure is as follows: Measure the output voltage from the keyboard when the lowest C is pressed — this voltage should be noted and set on the 'offset' preset, then set the 'scale adjust' to give 5.33V at pin 20. To check calibration type in the following line.
10 PRINT INT (IN 159/4);"";AT 0,0:GO TO 10
This gives an output of the keyboard in decimal numbers at the top of the screen. The lowest C should give 0 increasing by 1 with each semitone, 12 with each Octave. Minor adjustments of 'scale adjust' and 'offset' should be made to prevent jitter between numbers.
The basic sequencer operation is similar to previous explanations except for the 'write' selection. After entering the number of notes, the entries are made directly from the synthesiser keyboard. The 'reset' button is pressed for a Rest and the 'break' button to clear the selection if a mistake has been made.
The prototype was housed in the plastic box shown in the photo. A small power supply was included for the ±15V rails with a +5V regulator supplying the logic from the 9V Sinclair supply. All synthesiser connections are made to the top panel with 3.5mm jacks, while the computer is connected with a suitable edge connector.