The Art of Going Soft (Part 3)
The Music 500 receives an AMPLE voicing and sequencing program to tempt junior programmers into getting their feet wet.
The beginner's guide to programming takes a new turn this month with an AMPLE program for Hybrid Technology's Music 500 synth add-on.
Back in December '84, E&MM gave something of a rave write-up to a small, unobtrusive-looking box of synthetic tricks called the Acorn Music 500. Said box turned out to be a remarkably versatile (especially for its £199 asking price) music synthesiser add-on for the BBC Micro. For one thing, the sound itself was excellent, and for another, the Music 500 employed an ingenious music production language by the name of AMPLE.
What sets AMPLE apart from standard programming languages is that it's been designed specifically with music (and musicians) in mind. And one of the real advantages of the way it's been conceived is that it grows with the user, rather than acting as the sort of restriction standard programming languages are so good at putting up.
However, to quote from that December review, 'getting the best out of the system takes time... like buildings, complex sonic edifices aren't manufactured overnight, so a measure of exploration and experimentation is inevitable.'
To try to ease that exploration (and to quench the thirst for AMPLE programming building-blocks which, judging by the E&MM mailbag, an awful lot of Music 500 owners now want to be given), we present Starflight 500, a simple but effective piece of music that's been written specifically to demonstrate the basic features not only of AMPLE but also of the Music 500 as a whole.
As well as being worth listening to in its own right, the program shows some easy scoring techniques and includes a range of useful 'instruments' for you to use in your own pieces.
Starflight comprises four instrumental parts: percussion (bass drum and cymbal), bass (of the electronic variety), chordal backing (three-voice polyphonic organ) and lead (synth) respectively. The structure of the piece is reassuringly simple. Its intro starts with a basic rock rhythm on drums, then adds the bass playing a semiquaver fifths-and-octaves pattern. A chords-only verse is followed by the lead coming in for the next three verses, and things wind down with the reverse of the intro, another verse without lead, then another that loses the chords, a third that has just the drums on their own, and a final passage of blissful silence.
In usual AMPLE fashion, play is the crucial word in the program. It 'hires' the piece's parts, and gives them both their instruments (the words kit, bass, organ, and synth) and their scores (rhythm, riff, chords, and melody).
All the parts start together, but the bass, chords and lead wait for four, eight and 24 bars respectively before coming in. These entries are set using /bar, an additional music word - defined as part of the program - that counts the specified number of bars. For instance, 4/bar counts four bars; couldn't really be simpler, could it? It works by multiplying the number of bars by the bar length (in this piece, 192 units) and playing a / (a dummy note) of that length.
The lead line plays the same tune for each verse, but in different registers. However, rather than write out the tune three times, Starflight writes it once as tune without an octave setting. The complete lead score, melody, then uses this three times with individual octave settings - like a sort of 'musical subroutine', in fact. As for the chords, they're written without any funny business: just inside a FOR loop that plays the verse a total of five times.
The rhythmic content of the tune is pretty straightforward, so it's scored in step time; note length is set once at the start, and longer notes are made using /. The rhythm is notated with two extra music words that hit the drum and cymbal, namely X and Y respectively. Each of these sets the voice (with ;) and the octave (with :) and plays a single note. Silent beats are marked with / - equivalent to a rest but more versatile for percussion instruments with zero sustain levels.
Now comes the sneaky bit. The bass score (riff) is nothing more than the same pattern transposed up and down, so the part's been programmed in AMPLE so that each note plays the pattern transposed by the note pitch, pretty much in the style of a synth keyboard transposing a sequencer pattern. All this makes programming the score, and modifying its structure, an absolute doddle.
pattern is really the word that does the magic, using the NOTE structure. The usual PITCH has been replaced by SHIFT followed by the notes of the pattern. Normal note action is restored with SIMPLEACT before the notes, and pattern is re-invoked afterwards. This bit is actually rather vital - without it, each note would attempt infinite self-transposition, which isn't a very nice thing to happen to any note, let alone a Starflight one... Notice, finally, that the note pitch is fixed to octave 0 after each note.
Well, so much for the music. What about the synth sounds that are used to play it? Let's start with the drum kit sounds. The bass drum uses a fairly predictable sine wave and (obviously) a percussive volume envelope, but it also has a pitch envelope that smudges the tone to remove any unwanted pitch sensation. Channel 2 does the same, but is shifted up in pitch to make the drum sound more 'toppy'.
As for the cymbal, this is based on a waveform consisting entirely of a scatter of random points. This has a metallic tone if untreated, but gives dense white(ish) noise when ring-modulated with itself. And as luck would have it, those are precisely the two elements we need to make a basic cymbal sound. So, Channel 1 makes the noise and Channel 2 provides the metallic ring at a carefully selected pitch.
Ring-modulation also comes into the picture on the synth sound, but here it's used in an entirely different way. The two channels play at the same pitch, but with a small offset. The modulation creates a new waveshape which changes as the waveforms phase against each other. Result? A changing timbre instead of the normal detune effect. Envelope 7 adds a tasteful (or so we think, anyway) delayed vibrato to both channels.
On hearing Starflight for the first time, you could be justified in thinking that 'organ' is something of a misnomer for the chordal sound. It is, after all, little more than a variation on the lead synth sound. Each voice is set up using synth, then made quieter and panned to the right.
Last but not least, we come to the bass sound. This is a two-part affair that uses four channels. Channels 1 and 2 form the main bass tone using synchronisation and a pitch envelope to give a shallow filter-sweep effect, while 3 and 4 make a bright percussive 'slap' with detuning for subtle phasing.
Starflight uses two words that make envelopes easier to define, perc takes a number and creates a complete percussive envelope with that decay time, while eseg combines the functions of EGRAD and ELEV to program an envelope segment in one go.
eseg is used by delvib, the definition of the delayed vibrato. This definition starts off with an ESECT that says how many line segments each of the three sections will have: 'on' has four, 'repeat' has two and 'off' has none. The gradients and endpoints of the six segments are then set in turn by eseg. The on section is responsible for the delay and a single build-up cycle, the repeat section forms the vibrato itself, while the off bit is (not surprisingly) empty, so that the repeat section runs on until the next note.
To kick off, simply type in the program just as it appears here. To add the finishing touch and save the program, enter the listing in Table 2. You can now play Starflight 500 just by entering "star" followed by LOAD and RUN.
If you come up against an error whilst in the throes of compiling an AMPLE word, check and correct the offending line and enter RUN again, remembering to CLEAR before starting on the next word. When all is done, simply type play to run the piece. You may hear some obviously wrong notes or out-of-step parts. If you do and they're not too drastic, use EDIT on the offending score word(s) and check it/them against the listing. If, on the other hand, you've made an irretrievable cock-up of the entire proceedings, you're best off listing the whole program on a printer by entering ON PRINT WRITE OFF PRINT.
As for fiddling around with the program once the listening process has exhausted you, try typing in the interacting commands shown in Table 3 while Starflight is playing. You could try remixing the piece using the bass-panning commands from Table 3 to set AMP and POS individually for each voice. Write the finished settings into the instrument definitions (see the last line of bass), or in the case of organ, after the instrument name so that each voice has its own level and stereo position. Another idea is to store all the settings in a single word, as shown in Table 4. You can then make live changes between complete setups by entering desk words as commands.
Actually, the percussion score of Starflight is a prime target for tinkering. Fetch the listing with "rhythm"EDIT as normal, then add 80.play so that the piece starts automatically each time you RUN the modified listing. An alternative for lines 30 and 50 is shown in Table 5.
Since the cymbal envelope has an immediate release, you can use rests to chop the sound short, as the remainder of Table 5 shows. Remember, to play X and Y on the same beat, all you need do is write X (Y).
Further information on the Music 500 can be had from Hybrid Technology, (Contact Details).
Gear in this article:
Feature by Andrew McKernan
Previous article in this issue:
Next 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!