AMPLINEX issue 003 was published in January 1988. Each AMPLINEX magazine is stored as a 200K single-sided 80-track disk image file (.ssd file type). The image can be used to create disks for a BBC Micro or can be loaded into a BBC emulator. For the disks to run, the BBC (real or emulated) must have an AMPLE Nucleus ROM installed and be running the Hybrid Music System.
New Hybrid Technology products
The two latest product releases from Hybrid Technology are
the AMPLE Nucleus Programmer Guide and 'Inside Stories', another AMPLE music
disc. Both are reviewed here.
The AMPLE Nucleus Programmer Guide
Roy Follett
Stop the disc drives! The great AMPLE adventure is about to
start. It is Christmas Eve and Santa has made a special journey with a special
parcel. What is it? With almost indecent haste I rip off the wrapping to reveal
- 'The AMPLE Nucleus Programmer Guide'.
It is true - on the 24th of December the Programmer Guide
(yes, Programmer - to match with User) arrived; ordered before the July Acorn
User show, but here now. Was the wait worth it? After only a short period of
study I can say 'most definitely'.
The manual is in two parts. The first, titled 'General', has
chapters on subjects such as 'Numbers and flags', 'Input and output' and
'Machine-code programming' and will be of immense interest to those who want to
understand the workings of the AMPLE Nucleus language.
The second part, 'Reference', is a dictionary of all
(approximately 160) AMPLE Nucleus words. It is similar in style to the original
Music 500 User Guide (for AMPLE BCE) and it reveals its ancestry by repeating
an error in the sequence of entries.
The Programmer Guide, however, is more comprehensive than
its predecessor, both in its descriptions of the words and in the number and
usefulness of the examples given.
Potential purchasers should note, however, that this guide
only covers the AMPLE Nucleus words - so words supplied by the application
modules (try "M5"MSHOW to see just some of them) do not appear. The
introduction to the guide says mysteriously 'Application specific
information...is deliberately excluded, being reserved for application Guides'
of which the User Guide is cited as an example. This leaves open the question
of when, or if, the many module-based words not mentioned in the User Guide
will be properly documented.
This guide will be of most benefit to those who already feel
comfortable with the basics of AMPLE. If you seldom need to refer to the User
Guide then this manual is probably what you should be reading.
Sentences like 'The Nucleus provides queue control sound
words, and voice servers provide their own voice sound words and type-global
voice sound words' can be heavy going, but the terminology is normally
well-defined and undoubtedly necessary. There were points, however, when a
glossary would have been invaluable.
One reference puzzled me: the mention on page 17 of the
command MERGE. The word does not appear in the dictionary at the end of the
guide and my Nucleus ROM doesn't seem to know it either.
One major criticism - there is no index. To be fair the
dictionary is alphabetic, but I do feel that a book of reference should have
one.
Although it seems like a great deal money (it is now £19.00),
this guide is a must for any serious programmer. It should provide hours of
worthwhile study and is, in the main, an excellent example of a clear, well-written
manual.
An extract from the AMPLE Nucleus Programmer Guide is
included on this disc. It lists all the AMPLE Nucleus words giving a brief
description of its function, usage and syntax. The filename is:
F.Nucindx – Index of AMPLE Nucleus words
and it can be viewed within the Features section; but it is
best printed.
'Inside Stories' by Peter Chase
Roy Follett
This is the latest AMPLE music album from Hybrid Technology
(price £4.95) for collectors of compilations. The disc contains twelve original
tunes by Peter Chase, all of which are very listenable. For the members who
like programming and instruments there is plenty here for further study.
I rather like 'Why-Cry', described by the author as
"the sloppy beet". Whether he means 'beat' or 'bit', I am a sucker
for deep gentle sounds. What a useful instrument 'Upright' is.
The tunes are selected from an 'interactive' menu which has
an accompanying backing track in the same style as the menu on the 'Notes'
album from Pilgrim Beart. I liked the invitation to use the menu for your own
collections and the inclusion of instructions on how to do it.
With the lack of compilations available, one has to be
careful not base one's opinions on a sense of gratitude for what is on offer.
So far every disc that Hybrid has offered to date has been of a high standard,
and this one is no exception. What more can I say - the usual good value for money
with plenty of interest. Thank you Peter Chase.
Other news
The Music 2000 MIDI interface is expected to be available in
early February (price £161.00). AMPLINEX would like to hear from any member who
has ordered a Music 2000 to arrange a review of the product for the March issue.
Hybrid Technology are now offering a 1MHz bus extension
cable to allow the Music 500(0) synthesiser to be placed further away from the
computer. The cable is 500mm in length and costs £13.00.
All Hybrid Technology prices mentioned are inclusive of VAT
and carriage.
We had planned to provide a review of the new Waveform
Designer in this issue of AMPLINEX. Unfortunately, the product had not appeared
by the time we started distribution despite delaying this issue a few days in
the expectation of its arrival. Assuming it appears during February, we will provide
a full review in the March issue.
Published in AMPLINEX 003, January 1988
The 'Realistic' Stereo Reverb Unit
Michael Mellor
Fed up with using valuable voices for echo or want to add
that 'live' quality to your Music 500/0 music and have very little cash to do
anything about it?
That was the situation in which I found myself some time
ago. But, after searching the market for a while, I found the 'Realistic'
Stereo Reverb Unit from Tandy for £47.95p.
The unit uses the Bucket Brigade Device IC to produce the
desired effects and I believe a similar unit was described in the Micro User
Body Building Series some years ago.
The unit has two inputs:
1) A monaural microphone input (0.35mV 10 Kohms impedance)
The manual describes this as being suitable for a guitar or
synthesiser. The ability to adjust this signal in relation to the 2nd input is
by a rotating control on the face of the unit.
2) A stereo line input (150mV 50Kohms impedance)
This is the one I used for the output from the Music 500/0.
It is at the rear of the unit and uses phono plugs.
There is also provision for a tape monitor input and an
output to a tape recorder at the rear. The option to record with or without the
processed signal is selected by a 'Reverb Record' switch also on the face of
the unit. If the signal from the tape is required to be processed a Tape Monitor
switch is operated. There are certain conditions where both switches are
required.
The unit is then connected to the amplifier via the main
output. Once fully connected you cannot hear the Music 500/0 signal unless the
unit is switched on. At this point, with all equipment switched on and in a quiescent
state, in comparison with the Music 500/0 set up alone, an increase in the
'noise' level can be detected. This could be annoying to the purist (CD owners
particularly); however, when playing programs the noise is not detectable.
The unit's effects are controlled by two rotating knobs:
1) Delay - from 5 to 95 milliseconds (Echo time 2 seconds)
2) Depth - which alters the strength of the echoed signal in
relation to the original
With these two controls the effects of doubling, flanging,
echo and reverberation can be made. Like most things in life, the effects can
be overdone and I find that low settings are the most useful in creating a 'live'
quality.
The effects of course apply equally to all the parts in the
music. Echoes on single instruments must be done via the Music 500/0.
It is claimed, in common with a lot of other audio
equipment, that the operation of the Reverb Expander switch will create the
illusion that sounds are coming from outside of the area covered by the
loudspeakers, an illusion I find difficulty in detecting, although others can.
The expansion of the sound, it is stated, increases with the increased application
of the Depth control.
The manual is spartan in descriptive text, but in some ways
this makes the instructions clearer. Several drawings to assist in use are
included as is a full wiring diagram.
I believe that the music played via this unit is enhanced
and the 'live quality' more than compensates for the noise problem.
Until I can afford an effects unit which offers a
substantial increase in sound quality and variety of effect I will continue to
use this unit.
Other specifications not mentioned above:
Size - 202 x 144 x 45 mm
Frequency Response – 20 Hz to 20 KHz (Depth control set at
minimum)
Published in AMPLINEX 003, January 1988
A Pilgrim Pachelbel
by Pilgrim BeartFrom the album 'Notes' Courtesy of Hybrid Technology |
Source: AMPLINEX 003 disk, file $.PPACH |
Published in AMPLINEX 003, January 1988
New Chords
by Roger CawkwellThe music is, I think, direct enough to speak for itself, so I'll concentrate on aspects of the programming. I keep trying to get a quart out of a pint pot! The four-stringed instrument
A similar approach is taken to one of the percussion parts during the bass solo. In Whilst all this is going on the two |
Source: AMPLINEX 003 disk, file $.NEWCHOR |
Published in AMPLINEX 003, January 1988
Chi La Gagliarda
by Roy AtkinsComposed by: Baldassare DonatoChi La Gagliarda is an Italian madrigal composed by Baldassare Donato in the late 16th century; it is a fine example of a typical popular song of the time. This kind of song is again popular with amateur choirs all over the world. The words to the song tell about the Italian teachers of the dance called the galliard and their lady pupils. The song is suggestive in that it would appear that teaching ladies to dance was not entirely their main interest.
|
Source: AMPLINEX 003 disk, file $.CHI |
Published in AMPLINEX 003, January 1988
Prelude in C
by Mark WhippeyComposed by: J S BachThis is the C major prelude from book 1 of the Well-tempered Clavier (the 48).
|
Source: AMPLINEX 003 disk, file $.BACHINC |
Published in AMPLINEX 003, January 1988
Autumn Song
by Leslie WhalleyThe piece is a simple songlike piece with an ABA structure. I've tried to make the harmony interesting. I expect the instrumental mixes could be improved. Any suggestions would be welcome.
|
Source: AMPLINEX 003 disk, file $.AUTSONG |
Published in AMPLINEX 003, January 1988
Notes on Musical Mastermind
Susan Jones
This is a form of the game using notes instead of colours.
The program sounds a chord and the player must identify the notes it contains,
in ascending order of pitch.
A guess is entered as a sequence of upper-case note-names,
e.g. DFAD. The program indicates the number of correct notes in the right place
(yellow stars), and the number of correct notes in the wrong place (blue
stars).
The process continues until the sequence is correct. The
program keeps account of the best score (i.e. fewest guesses) and prints a
message if the latest score is the best so far.
Pressing the space bar at any time plays the chord again.
Single notes may also be sounded as their names are entered. For some people
this will make things too easy, so the option can be switched on or off at the beginning
of each new game. If the sound is turned off altogether the game becomes an
exercise in logical deduction like ordinary Mastermind!
Minor problems are:
·
The random number generator sometimes gets stuck
in a groove and presents the same chord twice running!
·
Repeatedly entering and deleting notes causes
the pitch to rise. The octave is reset whenever the chord is sounded, or at the
beginning of each new guess.
Chords
Because the program is meant for ear-training, it uses
predefined chords rather than random note- clusters. Those supplied are common positions
of chord I, III, IV, V, and VI of C Major. However, the program has been
designed to be adaptable in a number of ways. Listed below are some possible
modifications, with hints about how to do them.
1. Change the instrument used. The definition is in the
"RUN" word. Some users may like to have a different instrument for
each voice in the chord.
2. Change the key on which the chords are based. One example
is given already. The file "U.DMAJ" holds a set of chord words which
can overlay the existing ones. After loading the program, enter *EXEC U.DMAJ to
do the replacement. In this context, C and F stand for C# and F# respectively.
3. Similar sets of words could be created for other keys by
editing this file. Bear in mind that:
·
For each chord, it is necessary to alter both
the notes sounded and the corresponding character string placed on the stack.
·
The "sign" word must be altered to set
the correct key signature and print out a message saying what the key is. This
is called by the "RUN" word.
·
Within
each chord word a nested IF( )ELSE( )IF structure is used to select a
particular inversion. You may insert more alternatives if you wish so long as
you retain the correct structure. You will also need to alter the range of the random
number generated for the global variable "inv" in the "RUN"
word.
4. Use additional chord words. Define the new chord words,
insert the necessary selections in the word "choose", and alter the
range of the random number generated for the global variable "chord"
in the "RUN" word.
5. Use chords with more (or fewer) than 4 notes. The program
should handle chords with up to 6 notes. Alter the value of the global variable
"len" in the "RUN" word and redefine all the chord words to
correspond.
An unsolved problem
It would be difficult to handle accidentals in chords other
than those which are part of a key signature, since the one to one mapping
between note and typed symbol would be lost.
Suggestions for solving this neatly will be welcome - as
will other comments on the program. If there is any interest I will try and
produce an enhanced version!
Related files on this disc:
U.Masterm - Musical Mastermind AMPLE program
U.DMaj - alternate set of chord words for use with above program
Published in AMPLINEX 003, January 1988
Notes on Quick Chord Namer
Bill Mellor
Base letter Variation letter
––––– –––––– ––––––––– ––––––
A l Maj l
Bb m Dom 7 m
B n Min n
C o Aug 5 o
Db p Dim 7 p
D q Min 7 q
Eb r Dom 9 r
E s Maj 7 w
F t
F# u
G v
Ab w
––––– –––––– ––––––––– ––––––
A l Maj l
Bb m Dom 7 m
B n Min n
C o Aug 5 o
Db p Dim 7 p
D q Min 7 q
Eb r Dom 9 r
E s Maj 7 w
F t
F# u
G v
Ab w
To use this utility *EXEC U.Chords into your current
program. The next step is to find the base of the chord you require down the
left-hand side of the table above (e.g. D) and to note the letter to the right
of it (i.e. 'q'). The next column shows variations of the base (e.g. Maj 7) and
by checking the letter to its right you will find the second coordinate (i.e. 'w').
By using the two coordinate letters as an AMPLE word, e.g.
"qw", you have a shorthand method of playing the chord of D maj 7.
This makes much more room available in Notepad and in this form rests and holds
may be used in the normal way.
The TYPE command will show the full construction of the
chord if required. The choice of coordinate letters may seem strange, but this
is to avoid the letters used as notes, that is a to g.
The chart was originally much larger, containing many more
base variations such as 'dominant 7 with augmented 5', but the whole thing was
getting out of hand and I've settled for the more commonly used ones.
If anyone feels they could improve on the chart please feel
free to have a go.
Related programs on this disc:
U.Chords - chord definitions
Published in AMPLINEX 003, January 1988
Hints and tips
Ignored natural signs
Graham F Firth
The hint by Roger Sapolsky in November's AMPLINEX failed to
mention that the natural sign (=) is ignored on the first note after every key signature.
I notice it mainly when using the Staff Editor.
As he rightly says, the effect can be overcome by putting
the key signature after the naturalised note although it makes the music look a
bit odd.
Two little utility words
David Westbrook
These are a couple of little utility words that I find
useful. The first, "sp", performs a similar function to Roger
Cawkwell's "s" in AMPLINEX 002, but is even more labour-saving!
The purpose is to SPOOL a file to extract a word from a
program so that you can use it easily in other programs. For example, suppose
you want to get a SPOOLed version of some wonderful instrument you've heard in an
AMPLINEX issue (yes, I confess I 'borrow' other people's sounds!).
Just enter 'sp' at the command line: you will be prompted
for the word you want and the filename to spool it to. The filename will
automatically be given an 'S.' directory prefix, to mark it as a SPOOLed rather
than SAVEd file. If you don't want that, just remove the 'S.' in line 6. That's
it - 'sp' does all the work of opening the file, TYPEing the word and closing
the file for you.
To use it, just type in the following and *SPOOL it (easy,
since 'sp' will work on itself!). Then *EXEC it into any program you like.
"sp" ["Word to spool: "$OUT $IN
LEN 1 #- $- $12 $2
"""" $12 $+
"""" $+
"Filename: "$OUT $IN
"*SPOOL S."$+ $+
"TYPE" $12 $+
"*SPOOL"$12 $+ $+
]
LEN 1 #- $- $12 $2
"""" $12 $+
"""" $+
"Filename: "$OUT $IN
"*SPOOL S."$+ $+
"TYPE" $12 $+
"*SPOOL"$12 $+ $+
]
The other word "del", is used for a "mass
deletion" of words. I tend to have programs littered with utility words,
unused instruments etc., which I don't need in the final version of a piece.
But I get bored with typing "word"DELETE over and over again.
Answer - again, let AMPLE do it for you. Just enter 'del' at
the command line and keep on entering word names until you've got rid of all
the junk; then press ESCAPE to finish.
"del" ["del"$+
"Word to DELETE: "$OUT $IN
LEN 1 #- $- $12 $2
"""" $12 $+
"""" $+
"DELETE" $12 $+ $+
]
"Word to DELETE: "$OUT $IN
LEN 1 #- $- $12 $2
"""" $12 $+
"""" $+
"DELETE" $12 $+ $+
]
Both of these words demonstrate how you can use
"$+" to issue, from within words, commands which can usually only be
used at the command line (*SPOOL, DELETE and so on). This technique can be very
useful, but it does often need a lot of trial and error to get the order of the
assembled string of words right. Hence all the $12 commands to turn them round.
Lines 2-4 in both words (beginning 'LEN') are used to add the necessary
inverted commas to the word name that you type in.
"del" also shows how you can use this kind of word
'recursively': "del" calls itself, and thus keeps endlessly cycling
round a loop until you press ESCAPE. REP(...)REP won't work in this situation
(at least as far as I've been able to see) presumably because the assembled
string never gets to the command interpreter. Does anyone else know better?
Finding the elusive 'bad bar'
Roger Sapolsky
It is frustating to see the error message "Bad bar in
player X" displayed over and over again after you have spent a long time
searching for an erroneous time setting hidden within a music part.
Is the word '^;' present in the part? If it is, you will
always get the error message, no matter the time settings. Use of a bar length
setting (e.g. 48, 4 BAR) prohibits the inclusion of chord rests - AMPLE knows why.
The AMPLE bar-checking facility is useful when applied to
complicated music, particularly for those who do not read music fast enough to
locate an error by ear at the moment it occurs.
To get round the problem mentioned above, you can simply
delete the conflicting semicolons when only a few are present in the score;
they can be retyped later after debugging.
Should there be many of them, it is best to enter, say,
"part1z" NAME MAKE
while part1a is displayed, then to delete all semicolons
from part1z, check for errors and take a note of them before deleting the dummy
part1z.
Errors in part1a can then be eliminated.
When working on part1z, don't forget the chord rests hidden
inside words such as
"r" [96,^;]
The semicolon(s) here must also be deleted.
Instrument transfer
Jimmy Ryan
Here is an easy method to transfer an AMPLE word from one
program to another without the use of *SPOOL or *EXEC.
For example, to transfer an instrument "instru"
from one program "prog1" to another program "prog2", go
into Notepad and enter:
"prog1" LOAD
"instru" GET
"prog2" LOAD
MAKE
"instru" GET
"prog2" LOAD
MAKE
Testing mixes
Graham F Firth
I find it useful to define the letter 't' as a word to test
the music. If you are using multi-mix music then you could define the word 't'
as follows:
"t" [ "12345-1234d" PLAY ]
This will play the fourth part, but will go through all the
mixes so that the right mix will sound. When this part is OK, you can alter the
't' word to play the next part, and so on.
If you are only using a single mix then you could use part1,
etc., for the whole tune, and part1a, etc., just to include the part you want
to try. Remember to put SCORE & sig in part1a of course.
The SHIFT command
Tim Sketchley
The SHIFT command is used as part of an instrument
definition, and is used to increase or decrease the pitch of one or more
channels by an amount specified in sixteenths of a semitone.
For example:
0 SHIFT - plays the
specified pitch
1 SHIFT - plays 1/16th semitone higher
-1 SHIFT - plays 1/16th semitone lower
16 SHIFT - plays a semitone higher
32 SHIFT - plays a tone higher
192 SHIFT - plays an octave higher
384 SHIFT - plays two octaves higher
1 SHIFT - plays 1/16th semitone higher
-1 SHIFT - plays 1/16th semitone lower
16 SHIFT - plays a semitone higher
32 SHIFT - plays a tone higher
192 SHIFT - plays an octave higher
384 SHIFT - plays two octaves higher
Let's start with a straightforward instrument definition:
"shiftins" [2 CHANS
2 CHAN
128 AMP
EVERY CHAN
Bright Flat Long
]
2 CHAN
128 AMP
EVERY CHAN
Bright Flat Long
]
This produces a very ordinary sound. Now let's replace the
line 128 AMP with 1 SHIFT 128 AMP. This creates an ensemble effect, as the
channels are playing very slightly different pitches.
Experiment with different SHIFT settings using Notepad. You
may want to switch off channel 1 using 0 AMP so you can hear what channel 2 is
doing. You should discover that although 1/16th semitone is a very small interval,
the effect of the two channels playing the two pitches is considerable.
It is worth noting that 192 SHIFT plays an octave higher and
this produces a bright and full effect. Also, 193 SHIFT plays an octave plus 1/16th
semitone higher and is used in Organ.
Help from the Music 500 User Guide
Roger Cawkwell
There is much useful programming information contained in
the Music 500 User Guide. Many of the AMPLE BCE words have the same meaning in
AMPLE Nucleus and the Reference section of the Music 500 User Guide is in a similar
format (though with less detail) to the new AMPLE Nucleus Programmer Guide.
Getting more volume
Ted Royffe
A simple hint for those who find that, although they can get
reasonable output by turning up the volume on their amplifiers, they do not get
sufficient output from the preset tape outputs thereon to make decent recordings.
The easy way round this is to feed the Music 5000 output into the microphone
inputs on the amplifier, if provided. However, in order to avoid distortion
from overloading these, it may be necessary to use a simple dual attenuator.
If it is too much trouble to build one, suitable adjustable
units made by QED can be purchased from many hi-fi shops. They are obtainable
with phono or 5-pin DIN connections, or a combination of the two, and did cost about
`9.50.
Symphony keyboard diagram
Graham F Firth
If anyone wants to buy the Music 4000 upgrade but doesn't
want to pay for the keyboard as well, I can supply the circuit diagram for the
Symphony keyboard.
It is a fairly simple circuit, but not really for the
beginner. I modified an LVL Echo keyboard to this circuit and it works fine.
AMPLINEX to Wordwise Plus conversion
David Westbrook
I have developed a little Wordwise Plus segment program that
I've found very useful in printing out AMPLINEX text files. The problem with
these is that the 40 column format takes up an awful lot of paper if you print
them from within AMPLINEX. For those with WORDWISE PLUS, this segment program will
convert them to your normal format by stripping out the extra RETURNS and
spaces for you. It's not perfect but it leaves you with a minimal amount of
further formatting to do before you print the file.
To use it, go into Wordwise, load the segment program into,
say, segment 0 and load the AMPLINEX file you want into the normal text area.
Then run the segment program (i.e. in edit mode press SHIFT + f0). It prints a
message from time to time, just to reassure you that something is happening.
After the reformatting is complete, you will be asked to put
in the disc on which you store your usual page formatting "green
code" commands (e.g. Paging, Page length, Justification etc.). Change
"ampform" in the program to the file name you wish to use for these.
If you don't want to load such a file, just remove the lines between 'VDU7' and
'DISPLAY'.
Related program on this disc:
H.WWconv - Wordwise segment
program
Published in AMPLINEX 003, January 1988
Index of AMPLE Nucleus words
This index is an extract from The AMPLE Nucleus Programmer Guide (c) 1987 Hybrid Technology.
The entries are arranged in a sequence based upon the
following order of characters:
! " # $ % &
' ( ) * , - / : ; < = > ? @ [ \ ] ^ | ~ 0-9 A-Z
except that leading non-letters are treated as if they were
at the end.
Each entry gives the word name and a brief description of
its function.
A status may be shown on the right indicating that the word
can be used only as a command or used only inside a word definition. If no
status is shown the word can be used both as a command and inside a word
definition.
Where relevant the following line
shows the word's inputs and/or outputs. Where there are both, the -> symbol
is used to separate them.
Index of words
<carriage return> mark line end
<space> separate items
! move an extra octave up or down
" start
literal string
"characters" -> string inside []
string1 "characters" -> string2 string1 outside []
#! store number at address
datanumber addressnumber #!
#* multiply two numbers
number1 number2 #* -> productnumber (number1 x number2)
#+ add two numbers
number1 number2 #+ -> sumnumber (number1 + number2)
#+! add number to number at address
datanumber addressnumber #+!
#- subtract number from previous number
number1 number2 #- -> differencenumber (number1 - number2)
#/ divide previous number by number
number1 number2 #/ -> quotientnumber remaindernumber
#11 duplicate number
number #11 -> number number
#12 swap two numbers
number2 number1 #12 -> number1 number2
#2 discard number
number #2
#212 duplicate previous number
number2 number1 #212 -> number2 number1 number2
#2121 duplicate number and previous number
number2 number1 #2121 -> number2 number1 number2 number1
#213 rotate positions of three numbers
number3 number2 number1 #213 -> number2 number1 number3
#< test previous number is less than number
number1 number2 #< -> flag (number1 < number2)
#= test numbers are equal
number1 number2 #= -> flag (number1 = number2)
#> test previous number is greater than number
number1 number2 #> -> flag (number1 > number2)
#? fetch number from address
addressnumber #? -> datanumber
$+ add string to left end of previous
string [] only
rightstring leftstring $+ -> string (leftstring + rightstring)
$- split string after numbered character [] only
string number $- -> rightstring leftstring
$12 swap two strings
[] only
string1 string2 $12 -> string2 string1
$2 discard string
[] only
string $2
% introduce comment
& indicate hexadecimal number
&<hex digits> -> number
' accent next note or hit
( start additional chord notes
) end additional chord notes
* indicate operating system command command
*<line>
+ sharpen next note
, set length
number ,
- flatten next note or indicate negative number
/ hold music event
: set octave
number :
; set music voice
voicenumber ;
= naturalise next note
@ set transposition in semitones
transnumber @
[ start word definition
command
namestring [...]
\ move back
] end word definition []
only
~ slur next note
^ play rest
^; play chord rest
| mark end of bar
0 to 9 decimal digits
<decimal digits> -> number
A to G play note with ascending pitch
a to g play note with descending pitch
ACT execute music action
see text
ACT( start music action sequence [] only
positionnumber ACT(
)ACT end music action sequence [] only
ALIGN ensure text cursor is at start of line
AMPLE restart system
command
AND AND bits of numbers
number1 number2 AND -> ANDnumber
ARRAY access array element
elementnumber baseaddressnumber ARRAY -> addressnumber
ASC convert character to number [] only
string ASC -> asciinumber
#B! store low byte of number at address
datanumber addressnumber #B!
#B? fetch byte from address
addressnumber #B? -> datanumber
#B12 swap high and low bytes of number
number1 #B12 -> number2
BAR set bar length in length units
lengthsnumber BAR
$CHR convert number to character [] only
asciinumber $CHR -> string
CLEAR clear editor data
command
CODE call machine-code routine
YXnumber CAnumber addressnumber CODE -> YXnumber PAnumber
COMPACT compact unused memory command
COUNT return loop count [] only
COUNT -> number
DELETE delete word
command
namestring DELETE
DIM reserve memory
sizenumber DIM -> addressnumber
DISPLAY display text
DURATION wait for a period of time
number DURATION
)ELSE( separate conditional sections [] only
EVERY leave 'every' value
EVERY -> number
FAST select fast/normal tempo
flag FAST
FCOPY copy numbers from frame pointer
number -> number1 ... number-n
FIND find uses of word
command
namestring FIND
FOR( start definite loop []
only
countnumber FOR( ... )FOR
)FOR end definite loop []
only
FRAME set frame pointer to top of stack
FRAME! write frame pointer
pointernumber FRAME!
FRAME? read frame pointer
FRAME? -> pointernumber
FVAR access stack frame item
elementnumber FVAR -> addressnumber
GO start players together
GVAR create variable
[] only
GVAR -> addressnumber
HALT halt/continue timebase
flag HALT
IDLE pass control to other players
IF( start conditional sequence [] only
flag IF( ... )IF or flag IF( ... )ELSE( ... )IF
)IF end conditional
[] only
#IN wait for and get keypress
#IN -> asciinumber
$IN input line from keyboard [] only
$IN -> string
INDEX leave loop index []
only
INDEX -> number
INSTALL install module
command
namestring INSTALL
K( start key signature
)K end key signature
'L set accent strength
number 'L
+L increase dynamic level
changenumber eventsnumber +L
-L decrease dynamic level
changenumber eventsnumber -L
=L set dynamic level
number =L
LEN get length of string []
only
string LEN -> string lengthnumber
LOAD load program
command
namestring LOAD
MAX leave larger of two numbers
number1 number2 -> largestnumber
MCAT display catalogue of modules command
MDELETE delete module
command
namestring MDELETE
MEM show memory usage in bytes command
MIN leave smaller of two numbers
number1 number2 -> smallestnumber
MLOAD load module
command
namestring MLOAD
MODE enter display mode
command
number MODE
MPREFIX set module filename prefix command
string MPREFIX
MSHOW show list of words in module command
modnamestring MSHOW
MVAL! write music variables
framelev keysig barcountlen octnote length tranvoice MVAL!
MVAL? read music variables
MVAL? -> framelev keysig barcountlen octnote length tranvoice
NEW discard program
command
NL print new line
NOT invert sense of flag
flag1 NOT -> flag2
NOUT print number in decimal
number NOUT
&NOUT print number in hexadecimal
number &NOUT
OFF leave off flag value
OFF -> offflag
ON leave on flag value
ON -> onflag
OR OR bits of numbers
number1 number2 OR -> ORnumber
OSCLI send string to operating system [] only
string OSCLI
#OUT send ASCII code to screen
number #OUT
$OUT print string
[] only
string $OUT
P( start concurrent sequence [] only
playernumber P( ... )P
)P end concurrent sequence [] only
$PAD pad string to length with spaces [] only
string1 lengthnumber $PAD -> string2
PAUSE pause/continue sound processing
flag PAUSE
PNUM leave player number
PNUM -> number
QKEY test key status or get keypress
negativenumber QKEY -> flag
zeronumber QKEY -> asciinumber
QTIME return queue time
QTIME -> number
QUIT leave editor
command
RAND get random number
RAND -> number
RAND! set starting point for random numbers
number RAND!
RANDL get random number in range
maxnumber RANDL -> number
READY make system ready
RENAME rename word
command
oldnamestring newnamestring RENAME
REP( start indefinite loop [] only
)REP end indefinite loop []
only
$REV reverse the order of characters [] only
string $REV -> reversedstring
RVOICES set voices range
startnumber endnumber RVOICES
SAVE save program
command
string SAVE
SCORE prepare for music words
SHARE select voice ensemble
ensemblenumber SHARE
SHOW show user words
command
SIGN test number is negative
number SIGN -> flag
SIMPLEACT remove all music actions
SP print a space
STOP stop program
$STR convert number to decimal string
represenation [] only
number $STR -> string
&$STR convert number to hex string
representation [] only
number &$STR -> string
$STRIP remove leading spaces from string [] only
string1 $STRIP -> string2
+T increase tempo
changenumber beatsnumber +T
-T decrease tempo
changenumber beatsnumber -T
=T set tempo
number =T
TYPE type word definition on the screen command
namestring TYPE
)UNTIL( exit from indefinite loop [] only
UNUSED make voice(s) unused
VAL convert string to unsigned decimal
number [] only
string VAL -> remainingstring number ON if found
string VAL -> remainingstring OFF if not found
&VAL convert to unsigned hex number [] only
string &VAL -> remainingstring number ON if found
string &VAL -> remainingstring OFF if not found
VOICE
select voice(s)
voicenumber VOICE
VOICE! set voice settings in frame
voicenumber VOICE! or EVERY VOICE!
VOICES set number of voices
number VOICES
WIND advance time
ticksnumber WIND
WRITE display text of all words command
X play hit
XOR exclusive-OR bits of numbers
number1 number2 XOR -> XORnumber
Published in AMPLINEX 003, January 1988
Subscribe to:
Posts (Atom)