AMPLINEX issue 007 was published in September 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.
There Are Many Stops Along the Way
by Ian L HubbardComposed by: Joe Sample |
Source: AMPLINEX 007 disk, file $.THEREAR |
Published in AMPLINEX 007, September 1988
Russians
by Jamie LewisComposed by: Sting |
Source: AMPLINEX 007 disk, file $.RUSSIAN |
Published in AMPLINEX 007, September 1988
Overture
by Diccon MaudeA musical fantasy by Diccon Maude, aged 14. Started and finished in 17/04/1988 I composed and arranged this piece in one day (you may say - "Huh! Sounds like it an' all!"). I made the accompaniment up first, put a simple bass to it, and added the top part, which I won't call a melody.
The top part uses Panflute as I like the sound. The accompaniment uses Upright. (I think Upright is an excellent reproduction of a piano). I have made the bass part stronger by using 3 2 Echo. The Drum rhythm uses 49 =L, so that accents can be heard. The middle part of the piece, where the voices change, was decided by my dad, who I like to consult with, and obtain any 'sound' advice (Groan!). 'harps4' is from the Studio 5000 User Guide, and Vibglock was chosen simply because it sounds nice. Does it 'click' when the voices change back to normal on your type of computer? It does on mine. Does anyone know why and/or how to stop it? Anyway, hope you like it. Diccon Maude (14) |
Source: AMPLINEX 007 disk, file $.OVER |
Published in AMPLINEX 007, September 1988
Misty
by John BartlettComposed by: Erroll GarnerI tried to achieve a sound reminiscent of Erroll Garner and have a 'human' feel.
(If anyone is interested in examining the music on the STAFF, load the part in question into NOTEPAD and remove the arpeggio notation from the chord and reMAKE first.) John Bartlett |
Source: AMPLINEX 007 disk, file $.MISTY |
Published in AMPLINEX 007, September 1988
Kitten on the Keys
by Rick CostinComposed by: Zez Confrey |
Source: AMPLINEX 007 disk, file $.KITTEN |
Published in AMPLINEX 007, September 1988
Jesus Walking on the Water
by Rosemary BrownComposed by: F Liszta 7 voci bew. Cees le Grand. |
Source: AMPLINEX 007 disk, file $.JEWALIA |
Published in AMPLINEX 007, September 1988
For a Dying Man…
by Michael HarbourDedicated to nobody in particular. I'm only 14 years old |
Source: AMPLINEX 007 disk, file $.DYING |
Published in AMPLINEX 007, September 1988
The Drunken Blues
by Corin GreavesUsing the 'human' approach A short piece displaying two techniques that I regularly use in my music.
The first is the use of irregular quantize values on the recorder module to produce a more 'human' out-of-time feeling. The second is the use of changing instruments on one voice for percussion to save channels for tuned sounds. This can lead to 'fatter' music, though it is quite processor-intensive. Part2a is a good example of this. Also used are some new percussion sounds, including a beefier bass drum. |
Source: AMPLINEX 007 disk, file $.DBLUES |
Published in AMPLINEX 007, September 1988
Desafinado
by Roger SapolskyComposed by: Antonio Carlos JobimTaken from "The BRAZILIAN masters". TRO Hollis Music, INC. N.Y. controls publications rights for the USA.
My arrangement uses the original guitar solo to which I have added a 'Brazilian' rhythm section. With due acknowledgment to Andy Thomas and Roger Cawkwell for their work on the ACT command in AMPLINEX 002 & 003. Roger Sapolsky |
Source: AMPLINEX 007 disk, file $.DESAFIN |
Published in AMPLINEX 007, September 1988
Caribbean Romance
by Graham F FirthComposed by: Harold SmartMusic (c) 1973 Jackson Music Ltd
Code (c) Graham F Firth, November 1987 |
Source: AMPLINEX 007 disk, file $.ROMANCE |
Published in AMPLINEX 007, September 1988
Arp
by Earl BonnarA very short piece I did for the Music 5000 when I first started - so short it doesn't even have a name.
It's also the file I had trouble switching mixes because of the Echo voices (see Questions and Answers in this issue of AMPLINEX). |
Source: AMPLINEX 007 disk, file $.ARP |
Published in AMPLINEX 007, September 1988
An Ode
by P GrayThis piece of music was a first attempt at composing using the recorder section of the 5000/4000 system.
Screen designed using ASD. |
Source: AMPLINEX 007 disk, file $.ANODE |
Published in AMPLINEX 007, September 1988
Keyboard split utility ('U.KSplit')
Richard Bettis
1) Introduction
The AMPLE program 'U.KSplit' contains the bare essentials of
a utility to produce a sound 'split' when playing a Music 4000 keyboard.
The program will work with a Music 5000 (it doesn't use any
of the words in the M4 module), but the same effect is easier to obtain by
writing multiple parts.
The main purpose of the utility is to allow the 'live'
playing of more than one sound; in the example provided these are 'Upright' on
the higher notes and 'Slapbass' on the lower ones.
The actual position of the split can be defined by the
player when the program is RUN.
2) RUNning the program
When the program is RUN, a prompt is given to define the
'split-point'. When a note is played, this becomes the lowest note for the
'top' instrument.
Any number of notes may be tried, but only the last one
played will count.
When RETURN is pressed to select the 'ok' message, the split
keyboard is brought into operation, and can be played.
In use the current program allows up to four note polyphony
in each of the two sections.
3) How it works
As you may have guessed, the split function is based on the
ACT structure. The rest of the program may also merit some description.
'setup' is merely a definition of a single 'player' with 8
voices, the first 4 voices are used by the higher section of the keyboard,
while voices 5 to 8 are for the lower section.
'select' restores the default ACT, then uses 'getsplit' to
prepare for finding the splitpoint. After that it displays a MENU with just one
option, to tell the program that a splitpoint has been selected. (In effect
this just provides a simple and familiar format for a 'pause' while the user decides).
'getsplit' redefines ACT for the first time. All that it
actually does is to make a copy of the PITCH number, and store this in a
variable, 'splitpoint'.
'ok' just confirms the note that has been chosen (the
numbers work in semitones above or below middle C), and cancels the 'getsplit'
ACT command.
'splitact' redefines ACT to give the split keyboard effect.
One problem to be overcome is the allocation of different voices. Each key
pressed while another is being held adds to the VOICE number generated;
however, we want to split 8 possible notes into two groups of 4. This is done by
'change' (see below) on each voice number, which renumbers 5 to 8 as 1 to 4
again!
The PITCH value of the note is then compared with the
selected value in 'splitpoint'. If it is above the splitpoint the ACT continues
as normal (with any revisions to voice number already made by 'change').
If, on the other hand, the PITCH is below the splitpoint
then 4 is added to each (none zero) voice number.
The net effect of all this is to ensure that higher notes
are played on voices 1 to 4 and lower notes on voiceS 5 to 8, thus effecting
the 'split'.
'change' reduces the VOICE numbers to the range 1 to 4. For
speed of operation, and to avoid problems with the value 0 generated for both
the LEVEL voice at all times and the GATE voice for an 'OFF GATE', the change
is made using a 'look-up table'.
This is an ARRAY, 'vtabl', which has 9 elements (including
element 0). 'change' takes each voice number and replaces it with the value
held as that numbered element in 'vtabl'. For element 0 to 4 this makes no
change, but elements 5 to 8 contain the values 1 to 4 again, so these voice
numbers are re-allocated.
Finally 'RUN' coordinates the procedure. It does a 'setup',
uses a word 'vset' to set up the 'look-up table' for VOICE numbering, allows
the user to 'select' a splitpoint, and then sets the split keyboard going.
4) In conclusion...
Obviously, the actual voice allocations in 'setup' can be
simply changed to any other instruments.
By changing the pitch played in each section, either by
using SHIFT in the instrument definition or by altering the pitch voice in ACT,
it is possible to play two melodies in the same register at the same time using
different instruments on the same keyboard (at least I presume that it is
possible - neither my brain nor my fingers could cope with it!).
I did originally write a more general version that allowed
for a definition of the total number of voices, and how they were allocated
between the two sections. However, the additional processing required led to a noticeable
slowing down of the response to the keyboard. Notes sounded just late enough
after pressing the keys for me to be aware of the delays, and block chords sounded
like fast arpeggios!
This version, with values fixed both by constants in the ACT
definition and by the contents of the look-up table, does not produce that much
of a delay in note processing - it is only just audible on block chords.
(My next essay may well be called 'Swings, Roundabouts and
Compromised Ideals').
Related file on this disc:
U.KSplit - AMPLE keyboard split utility program (LOAD and
RUN)
Published in AMPLINEX 007, September
1988
Instruments
To make the best use of disc space we have combined several
instrument definitions into one file. These can be saved individually if
required, either by loading/saving via a word processor or from within AMPLE (after
*EXECing in this file) using:
*SPOOL insfile
"insname" TYPE
*SPOOL
"insname" TYPE
*SPOOL
where 'insfile' is the file on which the individual
instrument definition is to be held and 'insname' is the word containing the
instrument definition.
"pufflute" [2 CHANS
1 CHAN
Hollow Flat Puff
128 AMP ON RM 193 SHIFT
2 CHAN
Pure Slowvib Tailed
128 AMP
EVERY CHAN
% A bit more full than Panflute with a
% more 'breathy' sound.
% by Corin Grieves
]
1 CHAN
Hollow Flat Puff
128 AMP ON RM 193 SHIFT
2 CHAN
Pure Slowvib Tailed
128 AMP
EVERY CHAN
% A bit more full than Panflute with a
% more 'breathy' sound.
% by Corin Grieves
]
"gchurch4" [4 CHANS
1 CHAN
Pipes Flat Onoff
0 SHIFT 128 AMP 2 POS
2 CHAN
Pipes Flat Onoff
-191 SHIFT 128 AMP -1 POS
3 CHAN
-384 SHIFT 128 AMP -2 POS
Pipes Flat Onoff
4 CHAN
193 SHIFT 128 AMP 1 POS
Pipes Flat Onoff
EVERY CHAN
% Grand church organ sound
% by Paul Williams
]
1 CHAN
Pipes Flat Onoff
0 SHIFT 128 AMP 2 POS
2 CHAN
Pipes Flat Onoff
-191 SHIFT 128 AMP -1 POS
3 CHAN
-384 SHIFT 128 AMP -2 POS
Pipes Flat Onoff
4 CHAN
193 SHIFT 128 AMP 1 POS
Pipes Flat Onoff
EVERY CHAN
% Grand church organ sound
% by Paul Williams
]
"nasty4" [4 CHANS
ODD CHAN
Hollow Flat Onoff
ON RM
EVEN CHAN
Watery Delvib Verylong
1 SHIFT 10 OFFSET 128 AMP
3 CHAN
80 SHIFT 5 OFFSET 128 AMP
4 CHAN
81 SHIFT 15 OFFSET 128 AMP
EVERY CHAN
OFF PHSET
% See 'nasty4info' for details.
]
ODD CHAN
Hollow Flat Onoff
ON RM
EVEN CHAN
Watery Delvib Verylong
1 SHIFT 10 OFFSET 128 AMP
3 CHAN
80 SHIFT 5 OFFSET 128 AMP
4 CHAN
81 SHIFT 15 OFFSET 128 AMP
EVERY CHAN
OFF PHSET
% See 'nasty4info' for details.
]
"nasty4info" [DISPLAY
% Sounds not unlike an electric guitar
% at octaves -1: and -2:. No good for
% playing chords though because it is,
% in effect, two two-channel sounds
% playing a 1st and a 6th, e.g. C(F),
% which gives a more guitar-like
% effect.
% by Mike Dobson
]
% Sounds not unlike an electric guitar
% at octaves -1: and -2:. No good for
% playing chords though because it is,
% in effect, two two-channel sounds
% playing a 1st and a 6th, e.g. C(F),
% which gives a more guitar-like
% effect.
% by Mike Dobson
]
"chinabell" [2 CHANS
1 CHAN
Pure Flat Percuss
40 FM 598 SHIFT
2 CHAN
Clear Flat Verylong
128 AMP
EVERY CHAN
ON PHSET 6 PITCH
% More interesting than Vibglock with
% a satisfying 'thunk'.
% by Corin Grieves
]
1 CHAN
Pure Flat Percuss
40 FM 598 SHIFT
2 CHAN
Clear Flat Verylong
128 AMP
EVERY CHAN
ON PHSET 6 PITCH
% More interesting than Vibglock with
% a satisfying 'thunk'.
% by Corin Grieves
]
"choir4" [4 CHANS
1 CHAN
Metal Slowvib Tailed
128 AMP ON SYNC -420 SHIFT
2 CHAN
Syncer Slowvib Spike
3 CHAN
Metal Deepvib Tailed
128 AMP ON SYNC -440 SHIFT
4 CHAN
Syncer Vibrato Spike
1 SHIFT 200 OFFSET
EVERY CHAN
% Choir emulation. Range -1: to 2:.
% Like a chorus effect?
% by Mark A J Mulders
]
1 CHAN
Metal Slowvib Tailed
128 AMP ON SYNC -420 SHIFT
2 CHAN
Syncer Slowvib Spike
3 CHAN
Metal Deepvib Tailed
128 AMP ON SYNC -440 SHIFT
4 CHAN
Syncer Vibrato Spike
1 SHIFT 200 OFFSET
EVERY CHAN
% Choir emulation. Range -1: to 2:.
% Like a chorus effect?
% by Mark A J Mulders
]
"nice4" [4 CHANS
1 CHAN
Round Deepvib Tailed
-3 POS 300 OFFSET
2 CHAN
Round Delvib Puff
-2 POS
3 CHAN
Round Slowvib Tailed
3 POS 100 OFFSET
4 CHAN
Round Delvib Soft
2 POS 0 OFFSET
EVERY CHAN
128 AMP OFF PHSET
% See 'nice4info' for details
]
1 CHAN
Round Deepvib Tailed
-3 POS 300 OFFSET
2 CHAN
Round Delvib Puff
-2 POS
3 CHAN
Round Slowvib Tailed
3 POS 100 OFFSET
4 CHAN
Round Delvib Soft
2 POS 0 OFFSET
EVERY CHAN
128 AMP OFF PHSET
% See 'nice4info' for details
]
"nice4info" [DISPLAY
% A very nice sound indeed. For
% maximum niceness play big chords.
% Works well over a wide octave range
% and sounds almost vocal around
% octave -1:.
% by Mike Dobson
]
% A very nice sound indeed. For
% maximum niceness play big chords.
% Works well over a wide octave range
% and sounds almost vocal around
% octave -1:.
% by Mike Dobson
]
"superins" [4 CHANS
ODD CHAN
Broad Wide Onoff
ON SYNC 384 SHIFT 128 AMP
EVEN CHAN
Syncer Flat Onoff
1 PAIR CHAN
2 POS
3 PAIR CHAN
-2 POS 2 SHIFT
EVERY CHAN
ON PHSET
% by Simon Elzinga
]
ODD CHAN
Broad Wide Onoff
ON SYNC 384 SHIFT 128 AMP
EVEN CHAN
Syncer Flat Onoff
1 PAIR CHAN
2 POS
3 PAIR CHAN
-2 POS 2 SHIFT
EVERY CHAN
ON PHSET
% by Simon Elzinga
]
"guitar" [2
CHANS
2 CHAN
Bright Flat Verylong
1 CHAN
Broad Flat Verylong
1200 OFFSET ON SYNC
EVERY CHAN
ON PHSET
% by S Burnett
]
2 CHAN
Bright Flat Verylong
1 CHAN
Broad Flat Verylong
1200 OFFSET ON SYNC
EVERY CHAN
ON PHSET
% by S Burnett
]
Published in AMPLINEX 007, September
1988
Hints and tips
ROM compatibility
We begin this issue's Hints and Tips section with a
collection of the responses to our request for details of ROMs which do and do
not work with AMPLE.
Ted Kirk
The POINTER ROM for the Marconi RB2 Trackerball on the BBC
Master has to be UNPLUGged before booting up the Music 5000 or 4000. This is
with AMPLE in a lower priority socket than POINTER. I haven't tried it the
other way round.
Richard Bettis
I have various ROMs installed in my machine, and have no trouble
running AMPLE with:
Acorn BCPL
Acorn Logo
Acorn Pascal ADDCOM 1.30
Altra PROBE 4.02
AMX Super ROM 3.31
BASIC Extensions
Beebmon 1.00
Caretaker 1.03
Clares BROM 1.06
CMS Multi-BASIC
Computer Concepts Graphics ROM 2.09
DFS 1.20
Disc Doctor 1.0B
Exmon
Exmon II
Gremlin 1.00
ROM Manager
Skywave FORTH
Sleuth 1.05
System SPY 2.01
System ADE 2.01
Toolkit 1.23
Toolstar 1.77
View 3.0
ViewStore
Wordwise 1.10
Acorn Logo
Acorn Pascal ADDCOM 1.30
Altra PROBE 4.02
AMX Super ROM 3.31
BASIC Extensions
Beebmon 1.00
Caretaker 1.03
Clares BROM 1.06
CMS Multi-BASIC
Computer Concepts Graphics ROM 2.09
DFS 1.20
Disc Doctor 1.0B
Exmon
Exmon II
Gremlin 1.00
ROM Manager
Skywave FORTH
Sleuth 1.05
System SPY 2.01
System ADE 2.01
Toolkit 1.23
Toolstar 1.77
View 3.0
ViewStore
Wordwise 1.10
Toolstar and the Beebug HelpROM did cause problems if *HELP
was used, otherwise they were OK.
D.A.Computers EXTRAS crashed AMPLE.
G H Richardson
In Questions and Answers of AMPLINEX 005 I wrote that I had
problems with *DRIVE and *ACCESS and you advised me to check my ROMs. This I
did and found that the Printmaster ROM was the culprit. Since removing it I
have had no problem. You can, therefore, add this to your list of incompatible ROMS.
I should perhaps add that the Printmaster ROM was present when I had a BBC B
and Music 500 and I don't recollect any problems then. I now have a Master 128
and Music 5000 and it could be that this combination is what has caused the
problem.
Patrick Black
I've found that the Advanced ROM Manager (ARM) from ACP can
sometimes cause problems. It contains a *KILL command to disable resident ROMs,
and on my system, crashing out of AMPLE with CTRL-BREAK results in ARM KILLing off
AMPLE. To be re-activated it needs a power-up reset, or *FX200,2 to be typed
in.
Fortunately the *KILL command will work on ARM itself, so it
can be switched out before starting an AMPLE session. The syntax is *KILL n,
where n is the number of the ROM socket containing ARM. This command could be put
near the start of the AMPLE !BOOT file. The problem can be overcome by leaving
AMPLE 'legally' with a *BASIC command of course, but that's no good if the
program's crashed!
Editor's note:
I can add the following ROMs to the list of those which work
with AMPLE on a BBC Model B:
AMX Pagemaker 1.0
ATS 2.58 (as long as the Teletext adaptor is switched off)
Watford DFS 1.43
ATS 2.58 (as long as the Teletext adaptor is switched off)
Watford DFS 1.43
If you have experience of any ROMs which have not been
mentioned above, or if you have more information on any that have been
mentioned, please let us know. We will then publish a revised list in a future
issue of AMPLINEX.
Spooling from AMPLE
Quentin Stafford-Fraser
I use the following short utility word to write out AMPLE
word definitions to disc (from where they can be *EXECed back into another
program).
"spl" [% Syntax: <word> <file> spl
$12 "SPOOL " $+ OSCLI
" TYPE *SPOOL " $+
]
$12 "SPOOL " $+ OSCLI
" TYPE *SPOOL " $+
]
Thus
"perc" "fred" spl
will spool the definition of the AMPLE word 'perc' to a file
called 'fred'.
I have a BBC Master and I often change this utility to use
the *SPOOLON rather than the *SPOOL command so as to send several definitions
to one file.
Shadow RAM boards
Pete Christy
In AMPLINEX 003, B J Dawson asked for some information on
Shadow RAM boards. I have used both the Watford and Aries boards and offer the
following observations.
Initially, I had an early Watford board which would not work
with AMPLE BCE, but mostly worked OK with AMPLE Nucleus. I upgraded to the
latest ROM about a year ago, and it then worked fine with BCE and Studio 5000
Release 3.
When I got the Music 4000 keyboard pack, with Studio 5000-4
release 1, I found that the system disk would hang during booting unless I
moved the Shadow RAM workspace to location &0A00 (the cassette/serial port
buffer).
When I got Release 2 with the Staff printing facility, the
Staff display got corrupted if I used location &0A00 as Shadow RAM
workspace and I was unable to find any location that would allow the Staff
printing to work. Without the Shadow RAM there was insufficient memory for the
Staff editor to be of any use.
I consulted Chris Jordan of Hybrid Technology who
recommended the Aries Shadow RAM board. At first I was suspected this was a
sales pitch, as he had designed it! However, in desperation I bought one and it
works a treat. No problems at all with any release of Studio 5000 or 5000-4.
The Aries board is much better organised than the Watford, compatibility
is excellent with all soft and firmware, and I cannot recommend it highly
enough. A slight irritation is that the only compatible ROM board is the Aries
one - you can't use Aries Shadow RAM and an ATPL board for instance.
On the other hand, with the Aries Shadow RAM board, and the
ROM board with Sideways RAM in it, you have an extremely powerful system with
lots of very useful utilities included and it is extremely useful for word processing.
As to how useful it is with AMPLE - well, unless you use the
Staff editor, not very! In fact you can easily end up with less memory than
with an unexpanded machine.
This is because when booting from the system disk, AMPLE
reclaims some memory from the DFS. It moves PAGE back from &1900 to
&1500, but ONLY if PAGE was &1900 to start with. All Shadow RAM systems
require a page of work space, and most default to take this from &1900 to
&1A00. This means that AMPLE won't reclaim memory, and you end up with LESS
memory available!
However, if you don't intend to use the Staff printing facility
you can move the workspace to &0A00, and gain about an extra 1K in all
modes except the Staff editor, where you gain an extra 8K.
The following table gives an indication of the memory
available in different modes as revealed by the "MEM" command.
Shadow 5000 5000-4
mode release 3 release 1/2
mode release 3 release 1/2
OFF 15793 14505
ON
workspace 15025 13737
at &1900
workspace 15025 13737
at &1900
ON
workspace 16817 15529
at &0A00
workspace 16817 15529
at &0A00
Using external effects
Mike Dobson
Like AMPLINEX my Music 5000 is now one year old. Since
buying it I have added the Music 4000 keyboard and most recently a proper
amplifier (rather than my Curry's bargain stereo). The fact that the amplifier
has an overdrive distortion effect built-in has led me to discover the marvellous
things external effects will do for your Music 5000/4000.
I also have a stereo delay and a flanger - both guitar
effects pedals. The delay pedal has obvious benefits, the flanger can produce
some far-out results and both allow my Music 5000 to do some very passable
guitar impressions.
There are a vast range of effects that could enhance your
Music 5000. Some are expensive (£100+ for a delay pedal) but can usually be
found second-hand for less than half-price from music shops or magazines.
%STAFF
Quentin Stafford-Fraser
Many words, if loaded into the Staff editor with GET, leave
just a blank staff - even those with lots of music in them! If this has puzzled
you, then read on...
For some reason, words created (by MAKE) in the Staff editor
always have the comment %STAFF at the beginning of them. If this is added to a
word created elsewhere, for example in Notepad, it can then be loaded into the
Staff editor without any problem.
Why the ATOS module checks for this, I have no idea - does
anybody else? Note too that music on the staff cannot be played using the f1
key if it has certain words above the staff like REP( or FOR(. The editor will,
however, MAKE it quite happily and the music can then be played by typing its name
at the command prompt.
Published in AMPLINEX 007, September
1988
MIDI Xpander code
REM To be *EXECed into BASIC
AUTO
REM **********************************
REM * MIDI to AMPLE Interface Code *
REM * Copyright Scott Mackie 1988 *
REM **********************************
REM
REM Another Underwhelming Project From
REM The Awfully Nice Software Company!
REM
REM Copies of this code may be made on
REM condition that no profit is made
REM
REM Published by AMPLINEX
REM September 1988
REM
REM **********************************
REM * MIDI to AMPLE Interface Code *
REM * Copyright Scott Mackie 1988 *
REM **********************************
REM
REM Another Underwhelming Project From
REM The Awfully Nice Software Company!
REM
REM Copies of this code may be made on
REM condition that no profit is made
REM
REM Published by AMPLINEX
REM September 1988
REM
buffer=&A00:table=&96:in=&90:out=&91
splitarray=&C80:ssplit=&BFF
esplit=&C07
splitarray=&C80:ssplit=&BFF
esplit=&C07
REM Change the following addresses to
REM suit your own interface. These are
REM the locations of the ETI port A.
REM suit your own interface. These are
REM the locations of the ETI port A.
status=&FCF0:data=&FCF1
FOR opt%=0 TO 7 STEP 7
O%=&4000
P%=&0900
P%=&0900
REM Rather misleadingly titled gnote!
REM Foreground data output routine
REM Foreground data output routine
[OPT opt%
.gnote lda out \ Get Outputpointer
CMP in \ Any data?
BEQ gnote \ Nope? Check again
LDY out
LDA buffer,Y \ Get buffer data
INC out \ Update pointer
RTS
.gnote lda out \ Get Outputpointer
CMP in \ Any data?
BEQ gnote \ Nope? Check again
LDY out
LDA buffer,Y \ Get buffer data
INC out \ Update pointer
RTS
\ This is the main loop of the code
\ Calls the various routines needed
\ having analysed the data. Any extra
\ checking should go in after the
\ patchchange check.
\ Calls the various routines needed
\ having analysed the data. Any extra
\ checking should go in after the
\ patchchange check.
.code JSR gnote \ Get
data
CMP #&90 \ Is it a Noteon?
BEQ noteon \ Yip
CMP #&80 \ Noteoff?
BEQ noteoff \ Yup
CMP #&E0 \ Pitchbend?
BEQ pitchb \ Yip
CMP #&C0 \ Patchchange?
BEQ patchc \ Yup
JMP code \ Start again....
CMP #&90 \ Is it a Noteon?
BEQ noteon \ Yip
CMP #&80 \ Noteoff?
BEQ noteoff \ Yup
CMP #&E0 \ Pitchbend?
BEQ pitchb \ Yip
CMP #&C0 \ Patchchange?
BEQ patchc \ Yup
JMP code \ Start again....
\ This routine handles Noteons. It
\ Also handles Noteoffs if sent as a
\ Noteon with zero velocity. See later
\ text about this point.
\ Also handles Noteoffs if sent as a
\ Noteon with zero velocity. See later
\ text about this point.
.noteon LDA #0 \ Set ID
byte to 0
STA &92 \ in header
JSR gnote \ Get note data
TAX \ Save for later
SEC
SBC #&3C \ Convert for AMPLE
STA &93 \ Store in header
JSR gnote \ Get velocity byte
STA &94 \ Store in header
CMP #0 \ Noteoff?
BEQ dalloc \ Looks like it!
LDY splitarray,X \ Get zone number
LDX ssplit,Y \ Get initial voice
.loop1 INX
LDA table,X \ Get voice table
CMP #128 \ Voice unused?
BNE loop1 \ No!
TXA
CMP esplit,Y \ Over voice limit?
BCC foundslot \ No...phew...
LDX ssplit,Y \ Boo....overflow
INX
.foundslot STX &95 \ Store in header
LDA &93 \ Get note pressed
STA table,X \ Store it in table
RTS
STA &92 \ in header
JSR gnote \ Get note data
TAX \ Save for later
SEC
SBC #&3C \ Convert for AMPLE
STA &93 \ Store in header
JSR gnote \ Get velocity byte
STA &94 \ Store in header
CMP #0 \ Noteoff?
BEQ dalloc \ Looks like it!
LDY splitarray,X \ Get zone number
LDX ssplit,Y \ Get initial voice
.loop1 INX
LDA table,X \ Get voice table
CMP #128 \ Voice unused?
BNE loop1 \ No!
TXA
CMP esplit,Y \ Over voice limit?
BCC foundslot \ No...phew...
LDX ssplit,Y \ Boo....overflow
INX
.foundslot STX &95 \ Store in header
LDA &93 \ Get note pressed
STA table,X \ Store it in table
RTS
\ Noteoff provides handling for those
\ keyboards that actually use a
\ Noteoff instead of a zero velocity
\ Noteon. I haven't checked this as I
\ don't have a "Noteoff" keyboard, but
\ it should work... comments please...
\ keyboards that actually use a
\ Noteoff instead of a zero velocity
\ Noteon. I haven't checked this as I
\ don't have a "Noteoff" keyboard, but
\ it should work... comments please...
.noteoff LDA #0 \ Set ID
byte to 0
STA &92 \ in header
JSR gnote \ Get note data
SEC
SBC #&3C \ Convert for AMPLE
STA &93 \ Store in header
JSR gnote \ Waste velocity
LDA #0
STA &94 \ Store in header
STA &92 \ in header
JSR gnote \ Get note data
SEC
SBC #&3C \ Convert for AMPLE
STA &93 \ Store in header
JSR gnote \ Waste velocity
LDA #0
STA &94 \ Store in header
.dalloc LDY #0 \ Reset
pointer
.loop2 INY
CPY table \ We overflowed?
BEQ notfound \ Uh Huh...
LDA table,Y \ Get note here
CMP &93 \ Same as Noteoff?
BNE loop2 \ No....
LDA #128 \ Get reset byte
STA table,Y \ Free the voice
.notfound STY &95 \ Store voice freed
RTS
.loop2 INY
CPY table \ We overflowed?
BEQ notfound \ Uh Huh...
LDA table,Y \ Get note here
CMP &93 \ Same as Noteoff?
BNE loop2 \ No....
LDA #128 \ Get reset byte
STA table,Y \ Free the voice
.notfound STY &95 \ Store voice freed
RTS
\ This routine handles the pitchbend
\ data arriving. Has an ID of 1.
\ data arriving. Has an ID of 1.
.pitchb LDA #1 \ Set ID
byte
STA &92 \ Store in header
JSR gnote \ Get LSB and waste
JSR gnote \ Get MSB of data
STA &93 \ Store in header
RTS
STA &92 \ Store in header
JSR gnote \ Get LSB and waste
JSR gnote \ Get MSB of data
STA &93 \ Store in header
RTS
\ This routine handles the patch
\ changes...basically just reads the
\ data...very boring actually...
\ changes...basically just reads the
\ data...very boring actually...
.patchc LDA #2 \ Set ID
byte
STA &92 \ Store in header
JSR gnote \ Get patch number
STA &93 \ Store it...
RTS \ Bye bye
]
STA &92 \ Store in header
JSR gnote \ Get patch number
STA &93 \ Store it...
RTS \ Bye bye
]
P%=&D00
REM This is the NMI code, positioned
REM at &D00. It provides circular
REM buffer handling for the buffer at
REM &A00
REM at &D00. It provides circular
REM buffer handling for the buffer at
REM &A00
[
OPT opt%
PHA:TYA:PHA
.wait LDA status \ Get 6850 status
AND #1 \ Mask data bit
CMP #1 \ Check it
BNE wait \ Nothing yet
LDA data \ Get the data
LDY in \ Get the pointer
STA buffer,Y \ Store data
STA data \ MIDI Out "Echo"
INC in \ Update pointer
PLA:TAY:PLA:RTI \ Exit NMI
]
OPT opt%
PHA:TYA:PHA
.wait LDA status \ Get 6850 status
AND #1 \ Mask data bit
CMP #1 \ Check it
BNE wait \ Nothing yet
LDA data \ Get the data
LDY in \ Get the pointer
STA buffer,Y \ Store data
STA data \ MIDI Out "Echo"
INC in \ Update pointer
PLA:TAY:PLA:RTI \ Exit NMI
]
NEXT
REM Press Escape and then RUN
Published in AMPLINEX 007, September
1988
MIDI Xpander instructions
This is the second of two features by Scott Mackie on the
MIDI interface - his introduction and guide to building your own MIDI interface
were contained in AMPLINEX 006.
MIDI Performance Code for AMPLE
Scott Mackie
Having, I hope, constructed your MIDI interface and got it
running, you can now start on the code needed to make AMPLE run as a MIDI
expander.
The 'Xpander' code comes as two parts: an assembler i/o
section and an AMPLE handling routine. This has the benefits of machine code
speed and AMPLE flexibility. I originally wrote the code entirely in AMPLE but
it was really too slow to use properly, and resulted in arpeggios on chordal
work - nice effect, but pretty unusable!
Although the assembler routine has its limitations (it slows
down a bit after more than 5 notes are pressed simultaneously) it is much more efficient
than AMPLE. Chordal work is still slightly slurred but the overall performance
is much better.
The code is positioned in memory at &900 and &D00,
with buffers at &A00 and &C00 (which unfortunately will corrupt the
Staff editor - sorry!). At &D00 is the interrupt code which loads the data
from the 6850 (the chip at the 'core' of the MIDI interface) into a circular
buffer and updates a pointer. It also 'echoes' the data to the MIDI Out to
simulate a MIDI Thru. There is a very small propagation delay, but this almost unnoticeable.
The code at &900 is the data handler. It 'chases' the
interrupt routine around the loop, reading the data back out and updating the output
pointer accordingly.
This method has the benefit of not missing any data, but the
performance can be slowed slightly under heavy data input. The buffer size is a
complete page, i.e. 256 bytes, which should be more than enough - if it isn't,
you're either Rick Wakeman or playing with the system exclusive dump on the
synthesiser!
After reading the buffer, the assembler code interprets the
data and stores it accordingly. I use the Econet workspace (&90 to &9F)
as variable space, so I'm afraid if the system is to be used on Econet some rewrites
may be needed.
The workspace is configured as:
&90: Input pointer. Where the latest input data is in
the buffer. Updated by the interrupt routine.
&91: Output pointer. Where the program has got to in the
buffer. Updated by the foreground program.
&92: ID byte for the following data 0: Noteon/off 1:
Pitchbend 2: Patch change
&93: <ID dependant data> &94: <ID dependant
data> &95: Voice to be used for current event &96: Blank &97: .
: Voice assignment data held here. . : 128 indicates unused voice &9F:
The assembler routine also provides voice allocation
routines for AMPLE, including a keysplit system. When a note is pressed, the
code goes to a lookup table at &C80, which contains the details of the
currently setup keysplit. The code finds the current zone the key pressed is in
and then allocates the voice accordingly. This system allows multi-timbral
(i.e. using more than one instrument) music to be played across the entire
range of the keyboard.
When a free voice is found for the note to be played on, the
note number is placed in the table between &97 and &9F for future
reference. A value of 128 indicates that the voice is clear. When a Noteoff is
issued, the code checks the table for the note number and places a 128 in the
voice location it finds, freeing that voice for future use.
A simple wrap-around system operates so that if the number
of notes played in any one zone exceeds the maximum allowed, the overspill
notes are played on the first voice of the split. This compromise seems to be
the best solution to a rather grey area of synthesiser programming.
Having completed all the data preparation, the assembler
routine returns to AMPLE, where the header block is checked and the relevant routines
called. The notes are played using the ACT command, and a rest is played for a
Noteoff. This allows envelopes such as Swell and Soft to complete.
If required, the code will release a channel to be used
again, without issuing a rest. This is achieved by use of the MNOTEOFF command.
OFF MNOTEOFF stops Noteoffs issuing rests and is very useful with envelopes
that actually tail away to zero, as the sound is more continuous with no rests being
issued.
Upright, in particular, is very effective like this and can
be played much like a normal piano. A foot pedal can be used to trigger this,
connected to the fire button for Joystick 1 on the Analogue port. A simple push-to-make
footswitch will do, and the code will detect its depression and act accordingly
(see the 'help!' information in the actual program about this).
Right, having waded your way through all that information,
how do you use the code?
Having loaded the file F.Xpander, try the following:
RUN
The disc drive should run and load in the file 'F.Xcode'.
Set the transmit channel on your synthesiser to channel 1 and enable its MIDI
output if required. Pressing a few keys on the synthesiser should now result in
AMPLE playing Upright at the right pitch.
If this doesn't work, check that the interface is paged into
the right position in memory. The details about this are in the assembler
listing file 'F.Xsource' which is included on this disc.
Also included in the 'Xpander' program is an AMPLE word
called 'test' that will print out all the data arriving at the MIDI port. This
should help with debugging if there's a problem. With luck, the code will work
and the fun can start!
Holding the SHIFT key down while pressing a note on the
master keyboard should take you back to the AMPLE prompt. The command 'RUN' is intelligent
and checks to see if the NMI code is still present. If not, the code will boot
in the NMI routines again from disc. If any problem should occur, just press
BREAK and type 'RUN' again. This should cure any minor problems (especially if
a disc is accessed, as this will overwrite the MIDI interrupt code).
Any sound can be used with the keyboard, just by defining
the maximum number of MIDI voices, i.e.
4 MSINGLE viola4
will provide 4-note polyphony with a 4-channel viola sound.
Changing the MIDI receive channel is easy. All that you have
to do is type, for example,
6 MCHAN
to set the interface to channel 6. The channel is defaulted
to 1 initially.
The MIDI interface also accepts velocity information so the
sounds produced will be responsive to velocity data. I haven't tried this feature
yet as I can't afford a velocity-sensitive keyboard, but I hope it will work!
Moving the pitch bend wheel on your synthesiser should
result in AMPLE changing the pitch of the sound. Incidentally, there's no
reason why the pitch bend wheel should cause the pitch to change. It could
alter the stereo position, volume, or voice parameters if required. Be experimental
with the AMPLE code!
Issuing a patch change from your synthesiser should cause
AMPLE to select a new sound for the voices. Edit the word 'Mpatchc' to suit
your own tastes and sounds. The word is set up at the moment to provide a
general selection of patches.
The last topic to be covered is key splits. All key splits
do is to allow different instruments to be used depending on where the note pressed
is on the keyboard. Up to 8 instrument zones can be defined, but within the
confines of 8 notes of polyphony. For example, you can have a split of 2+6, but
not 1+2+6 because this means having to use 9 voices, exceeding the internal
limit for AMPLE. The two commands to drive the key split definition process are
MSPLIT and KEYSPLIT.
If you type
MSPLIT
the screen will clear and you will be prompted for the
number of zones to be used across the keyboard. Having typed this in, you will
then be prompted for the number of notes to be used in zone 1 (which is the
lowest zone in the keyboard). The code will then wait for you to press the key
on the MIDI keyboard that indicates the top of the zone. This definition
process will continue until all the zones have been defined.
When MSPLIT finishes, it calls KEYSPLIT and prints out a
list of numbers. This sequence of numbers is the input to the routine KEYSPLIT.
This is the raw (very!) routine for processing splits. If that exact key split
setup is needed again then the string of numbers output can be used to call
KEYSPLIT, without having to go through the process again. The words mix1, mix2
and mix3 all illustrate this technique and should be studied in order to fully understand
this topic.
A complete listing of all the words used is included in the
AMPLE file 'F.Xpander'. Just type 'help!' to get the information.
And now for what the code doesn't do! The code will not
allow you to play along with existing music in AMPLE, although I am working on that.
I'm afraid this is due to the need for a quick response time in the input routine
(the program loops in the assembler domain to save time jumping between AMPLE
and the code). It also forbids use of Echo for, I presume, the same reason.
Maybe some AMPLINEX members can advise me on this aspect of the code.
Apart from these things, the code does run reasonably
reliably and doesn't seem to be prone to leaving 'hanging' notes.
I hope these articles have provided some AMPLINEX members
with enough material to experiment with MIDI. The basic code works well, but
changes can be made to it to allow further MIDI data to be processed, such as modulation
or aftertouch. Any comments on the code or queries could be sent to AMPLINEX
or, if preferred, to myself at the address below.
Scott Mackie 48 Milford East Kilbride GLASGOW G75 9BU
Note: An error was spotted in the previous article with
reference to the AMPLE hardware paging addresses. It does actually map into the
whole of the &FD page, between page numbers &30 and &3F and not
&FD30 and &FD3F as stated.
Related files on this disc:
F.Xpander - 'Xpander' AMPLE program
F.Xcode - 'Xpander' machine code
F.Xsource - assembler source for the 'Xpander' machine
code (in *EXEC format)
Published in AMPLINEX 007, September
1988
Questions and answers
Answer: Defining envelopes
In AMPLINEX 005 Nick Ridley complains of the lack of an
envelope with a fast attack but slow release. I too had this problem when I
transcribed my version of Bach's Toccata & Fugue in D minor from BCE to Nucleus.
Chris Jordan of Hybrid Technology gave me the following tip which goes some way
to solving the problem.
Most instrument definitions use two channels to add richness
to the sound. Give one channel a fast attack envelope (Peaked, for example) and
the other a slow release envelope (Tailed, for example).
In the Toccata I was trying to recreate a church organ
sound. It's not perfect, but it’s pretty effective.
The full organ definition I used was:
"organ" [
2 CHANS
1 CHAN
Peaked
2 CHAN
-192 SHIFT 0 OFFSET 128 AMP
Tailed
EVERY CHAN
Pipes Flat
ON PHSET
]
2 CHANS
1 CHAN
Peaked
2 CHAN
-192 SHIFT 0 OFFSET 128 AMP
Tailed
EVERY CHAN
Pipes Flat
ON PHSET
]
Pete Christy
Question: POS & PAN
Can anyone tell me the difference between POS and PAN? I
know that POS relates to channels and PAN to voices, but how does one affect
the other?
Is PAN equivalent to EVERY CHAN POS? If so, then I presume
that it is not worth using POS in an instrument that might have the stereo
position adjusted from the Mixing Desk, as the POS commands will be superseded?
Quentin Stafford-Fraser
Answer: Using the Music 2000
I would like to reinforce the favourable opinions expressed
in both reviews of the Music 2000 MIDI Interface in AMPLINEX 005. I have an Alesis
HR-16 drum machine and a Yamaha FB-01 FM sound generator, and the level of
control that the Music 2000 offers over both these instruments is amazing. A
very professional sound can be made with just the Alesis Drum Machine working
alongside the Music 5000.
I look forward to future software support for the MIDI IN
socket so that the unit's full potential may be realised. The ability to send
out MIDI system exclusive messages that request a MIDI instrument to dump voice
or pattern data, via the MIDI IN socket, to disc rather than tape will, I hope,
be supported. Any comments from Hybrid Technology as to when the MIDI IN socket
will be supported and what restrictions may apply?
Les Pearce
Question: Music 2000 and Casio CZ5000
I have been trying out my Music 2000 with it coupled up to a
Casio CZ5000 to which I have access. Although the Casio is not velocity sensitive
I expected to be able to balance relative volume levels of each of the channels
by system exclusive commands (using MIDIOUT) as shown in the examples on page
56 of the Music 2000 User Guide.
I have tried this using the data published by Casio in their
guidebook for MIDI but I have been unable to achieve any variations in the
output levels of either the individual channels or the instrument as a whole. Can
anyone (especially Rick Cocker who did trials using both pieces of equipment -
see AMPLINEX 005 News and Reviews) help please?
Ted Royffe
Question: Using Echo
I've come across a snag in a piece I'm doing at the moment.
I've two voices tied up on an 'Echo'ed riff part, and when I try to change the
'mix' this part, if included, locks the whole thing up.
I assume that it's because in 'Echo' one voice is slightly
behind the other and would follow on into the next mix which would then corrupt
it.
I've tried inserting rests into the other parts to
compensate for the delay, but this just makes the piece sound awful. Any ideas?
Earl Bonnar
Answer: More on the Opus Challenger
I am afraid the problem is hopeless, judging by letters
received from both Hybrid Technology ("...this is due to the Challenger's
illegal use of the 1MHz bus...") and Opus ("I am sorry but unfortunately
because of the arrangements which Acorn made for the use of the 1MHz bus, it
was not possible to produce Challenger abiding by their full specs...).
Tired of using a tape-bound system, I eventually had to buy
a standard Acorn compatible disc drive to replace the Challenger.
Roger Sapolsky
Question: Screen control in AMPLE
In BASIC it is possible to control screen output by the use
of VDU21 and VDU6, to hide commands in a !BOOT file. After a *AMPLE command,
this no longer seems possible.
Is there a way that screen output can be suppressed from
within AMPLE, whilst changing directories in ADFS for example, so as not to
disfigure a title screen, etc.
Frances Wymans
The AMPLE equivalents to VDU21 and VDU6 are 21#OUT and
6#OUT. They should operate in the same way as the BASIC commands.
Question: AMPLE editor
Has anybody written a decent editor for AMPLE words? The
Notepad has several horrible habits, such as losing the end of long lines,
limiting the number of lines to one screen full, etc.
The absence of such things as an 'insert/overtype' option,
cut and paste, and no way of splitting a line in the middle is really annoying
at times. I am considering writing a more comprehensive editor, possibly using Mode
0 and Shadow RAM, but I thought I would check first whether anyone has already
done it.
Quentin Stafford-Fraser
Answer: Music 4000 Keyboard repair
Like Jack Wrigley (see Questions & Answers AMPLINEX 005)
one of the contact wires in my Music 4000 Keyboard broke. The inside of the Music
4000 seems to be the same as the Symphony Keyboard as described by Jack except
that there is no gold plating that I could see (could this mean that the Music
4000 is an inferior product?).
Wanting to get the Music 4000 repaired as quickly as
possible my solution to the problem was slightly different. Instead of ordering
a replacement wire I used a piece of a metal guitar string (B medium gauge).
When cut to a suitable length and soldered into position it proved to be an
excellent substitute. This happened about three months ago and since then I've
had no problems with the keyboard.
Jimmy Ryan
Question: trapping AMPLE errors
Does anybody know a way of trapping system errors, such as
'! Already present'?
What I am after is an equivalent of the BASIC 'ON ERROR'
statement.
Quentin Stafford-Fraser
Question: Solidisk Shadow RAM
I was disappointed to discover that the Hybrid Music System
doesn't support the 128k 2MEG Solidisk Shadow RAM (even though I enclosed a
note with my order asking Hybrid Technology if there were any problems!).
Ringing Hybrid I learnt that the Solidisk MANAGER ROM does not support OSBYTE 111
which they say is 'official' and they blamed Solidisk for writing non-official
software.
However, the BBC Master's Operating System uses OSBYTEs 108
and 114 to operate Shadow RAM (see Master Reference Guide part 1) and it is stated
that OSBYTE 111 is unused!
Ringing Solidisk I got the 'permanently engaged - we'd
rather not know your problem' response. Could anyone throw some light on this?
Who is using the right OSBYTE and what can I do to get Shadow RAM going?
I can actually get Shadow mode if I operate *SHADOW from
within AMPLE but the notes become distorted and triggered at incorrect times.
It sounds as though there are problems arising from some sort of timing conflict.
I can do a bit of assembler - so even if there is no quick
and easy answer I am prepared to modify the MANAGER ROM and/or the AMPLE
C.PREPARE file, in order to effect a fix, if anyone can point me in the general
direction.
Peter Middleton
Question: Mixes and sub-mixes
I don't think that the Studio 5000 User Guide explains
sub-mixes very well. Whenever I have made one, it turns out to be exactly like
a normal mix. Should it be?
I tried to use some sub-mixes in the last piece I wrote,
because, when the mixes changed, the whole piece slowed down for about 3 beats,
and it sounded as if the system had got all mixed up.
As using sub-mixes did not change this, after trying several
ideas, I ended up changing the instruments by putting, for example,
1 VOICES Upright
1 VOICE 128 VOL -1 PAN
1 VOICE 128 VOL -1 PAN
on every player, in the part before the voices had to
change.
There must be a way to avoid this 'mix-up'! Any suggestions?
Diccon Maude
Question: BBC Master Editor
Will AMPLE Nucleus ever be able to use the BBC Master 128
editor in the same was as other Acorn languages? That is, allow users to *EDIT
a disk file or word text and then switch back to AMPLE restored to the state
they were in when the *EDIT command was issued?
It would be really nice to be able to do this.
Ian Hulin
Question: MIDI instrument selection
I would like some help in selecting a MIDI instrument
compatible with the Music 2000 MIDI interface. Following the recent reviews of
the Music 2000 (AMPLINEX 005) I have decided to get one. However, this decision
implies the purchase of an adequate MIDI instrument which will be compatible with
it. This is not so easy for a resident of a country (France) where electronic
music dealers have never heard of the Music 5000!
At my request, one of them recently demonstrated the Roland
MT32 multi-timbre sound module. Since I can't play a keyboard, I don't intend to
buy one, but the module had to be connected to a keyboard to perform the demonstration.
At first blush, I was impressed by the 128 preset sounds,
let alone the small size of the module, it's affordable price, etc.
Since the dealer was unable to tell me whether it would work
with the Music 5000/2000, I wrote to Hybrid Technology and solicited their
advice. All I got was a one-line answer stating that the MT32 is fully compatible
with the Music 2000, but does not respond to the Music 5000 commands. In other
words, the MT32 is not what I need. Unfortunately, Hybrid didn't suggest any
suitable synthesiser make, as I had requested.
Will an AMPLINEX member be kind enough to help me decide
what to buy? In a few words, the marvel apparatus should be moderately priced,
it should bring me 5 additional VOICES, a host of good sounds including
percussion, but need not necessarily be programmable (if the choice of presets
is large enough).
Roger Sapolsky
Question: Lyrics and dynamics
I am thinking of writing lyrics to some of my tunes. Is
there any way I can print short phrases on the screen as the solo instruments
play the melody?
I have tried including words inside the parts by using
"phrase" $OUT
at the appropriate point in the melody, but the phrases are
always printed out too early.
Also, is there a way of increasing or decreasing tempo or
dynamics on every voice of every part simultaneously? Perhaps there is a short
way that could be put into part9? Programming is not my forte, so maybe members
could suggest how this can be done.
Michael Harbour
Question: Island Logic Music System
There must be many AMPLINEX members who, like me, have
copies of the Island Logic Music System. I have a number of music files and
linker files saved on disc, and I would be interested to learn if it is
possible to convert these to AMPLE Nucleus. Obviously, it would only be the
actual music data that could be used.
I imagine that it might be possible to write a program to do
the job, but, unfortunately, I don't have enough knowledge to do it!
If anyone has any ideas, I should be interested in hearing
them.
Tim Holgate
Question: Current volume settings
How do I get hold of the current volume setting on a part
including the effects of +L and -L statements which have been operating on that
player? I tried stealing the MVAL? example from the AMPLE Nucleus Programmer
Guide and the low byte resulting from 6 FVAR?, but it only told me the last
parameter I passed in the last =L statement. Any ideas from any of you demon
AMPLE hackers?
Ian Hulin
Question: MIDI messages and software
I am using a Roland TR505 drum machine and a Yamaha FB-01
expander unit with the Music 2000 and am still in the experimental stage.
The TR505 appears to work extremely well with the Music 2000
except that the example in the manual for slowing or increasing the tempo using
MIDI will not work as written.
The manual suggests:
READY
1 VOICES MIDIRT
3 MIDILINE
X
64 16 -T //// //// //// ////
1 VOICES MIDIRT
3 MIDILINE
X
64 16 -T //// //// //// ////
but I find I must input:
64 16 -T X/// //// //// ///X
The Yamaha FB-01 appears to be okay also, although I am
disappointed with some of the voices. I am, however, having trouble moving from
voice bank to voice bank which I believe requires a system exclusive message
and I have yet to determine the message to do it.
I've tried MIDIOUT but the FB-01 requires the voice data in
pairs which needs MIDIWOUT and I've yet to determine whether &F0 and
&F7 beginning and end message are sent as single bytes and the others as
pairs or the whole message in pairs. I would appreciate any information as to
the bytes to send or on the experience of other users.
Does anyone know, also, of any BBC software which will do FM
voice editing for the FB-01 in a similar way to the program sold by Yamaha for their
computer or to those for the Atari ST?
Michael Mellor
Question: 'Save Me' Hang-up
Thanks for publishing my arrangement of the Queen tune 'Save
Me' (AMPLINEX 006). However, your comment about the program 'hanging' part way
through concerns me because it works perfectly on my computer - a BBC B series
7 with Acorn DFS and Watford 32K Sideways RAM (not accessible by AMPLE to my annoyance).
I once had a similar problem with another AMPLE program
which got so far then zipped through one section as if on fast-forward. The
really odd thing was I SPOOLed it off as a text file and EXECed it back into
the computer and saved it as normal after which it worked just fine. What is
going on?
Mike Dobson
Answer: 'Save Me' hang-up
The 'hang' in the 'Save Me' tune in AMPLINEX 006 is caused
by a bug in older versions of the M.FX1A module where PLAY strings longer than
about 16 characters cause the 'hang'. Newer versions can be much longer and
even spread over more than 1 line using $12 and $+. For example,
"12-1abc" "de2fg" $12 $+ PLAY
More than one PLAY does not work.
The solution is get a newer version of the M.FX1A module; I
use the one from the Music 4000 disc. Alternatively, use sub-sections. For
example,
"part1A" [ part1a
part1b part1c part1d part1e]
"part2A" [ part2a
part2b part2c part2d part2e]
"part1B" [part1f
part1g]
"part2B" [part2f
part2g]
"12-1A2B" PLAY
Ian L Hubbard
Question: Printing AMPLINEX files
I have just bought a printer, and hurriedly plugged it to my
system. After selecting the PRINT ON option from the AMPLINEX Introduction
menu, it appears that printing begins as soon as a file has been selected (e.g.
Questions and Answers) from the main menu, and its first page displayed. But
what if I want a printout of certain selected pages, not the whole section?
I am an absolute beginner in the art of printing, so any
help will be welcome - unless selective printing of a page from within AMPLINEX
is just not possible!
Roger Sapolsky
In response to your request some new facilities have been
added to the A.MPLINEX program. For more details see the 'Printing AMPLINEX
data' notes in the Introduction section.
Editor's note:
The comments following some of the questions above are only
my opinions on the subject and should not be taken as definitive answers.
Your comments are most welcome on any of the questions
posed, whether they supplement, confirm or correct any I have expressed.
Published in AMPLINEX 007, September
1988
Printing out AMPLINEX information
There are three ways to print out the information seen
within AMPLINEX.
You can print out an AMPLINEX file as it is displayed on the
screen from within AMPLINEX; you can print the files themselves as you would
any other text file; or you can load the files into your own word processor and
re-format them as required before printing.
1) To print a file from within AMPLINEX choose the 'SET
PRINT ON/OFF' option from the Introduction menu. This allows you to toggle a
software 'print switch' on or off. If the switch is set ON then any AMPLINEX file
which is displayed on the screen will be sent to the printer. This will continue
until you set the switch off again using the same Introduction option. An
asterisk is displayed at the top of the screen next to the issue number when
the print option is ON and the print status is shown at the bottom right of the
screen as text is displayed within AMPLINEX.
It is now also possible to print out part of a file from
within AMPLINEX. There are two ways to do this:
a) To print a single page of an AMPLINEX file, make sure the
'print switch' is OFF and then select the menu option which displays the file. When
the page you wish to print is displayed, and the 'Press RETURN to continue'
prompt is showing at the bottom of the screen, press the letter 'P' on the
keyboard. The page being displayed will then be sent to the printer. Pressing
RETURN will then continue to display the file without printing.
b) To start printing part-way through a file, you can turn
on the 'print switch' by pressing the CTRL and 'P' keys together when the
'Press RETURN to continue' prompt is displayed. Subsequent pages which are
displayed will then be sent to the printer. The 'print switch' can be turned
off again in the same way.
2) If you prefer to print the parts you require outside of
AMPLINEX - all the data is held in files on the AMPLINEX disc. The files are in
directories named according to the sections in which they appear and the file
names can be seen at the foot of the screen as they are displayed in AMPLINEX
so you can make a note of the ones you require.
The file directories allocated to each section of AMPLINEX
are as follows:
$. for Music
A. for the Introduction and Adverts
F. for Features
H. for Hints and Tips
I. for Instruments
N. for News and Reviews
Q. for Questions and Answers
U. for Utilities
In addition to the text files, the AMPLE instrument
definitions can also be printed directly from within AMPLINEX. Music and
utility programs written in AMPLE can only be printed by LOADing the programs
into the Studio 5000 and using the WRITE command (see Studio 5000 User Guide page
100).
3) If you wish to re-format the text before printing you
should load the files into your word processor. The files contain unjustified
text restricted to 38 columns width. The files contain only printable ASCII characters
except for a control code (ASCII 11) which marks the screen page breaks. View
treats these as left margin tabs and if necessary they can be removed with a
C/^L// command.
Two utilities have been published in AMPLINEX to aid with
the re-formatting of text files:
In AMPLINEX 003 'Hints and Tips' (H.ints003) there were
instructions for a Wordwise segment program to automatically format AMPLINEX
text files. The segment itself was included in AMPLINEX 004 (H.WWconv).
In AMPLINEX 005 there was a utility to print formatted
80-column text direct from an AMPLINEX text file. The instructions (U.print/i)
and the BASIC program (U.print80) are both within the Utilities section. A
modification to this program (to provide a wider margin) was included in the
Hints and Tips section of AMPLINEX 006.
Published in AMPLINEX 007, September
1988
Next issue news
The next issue of AMPLINEX is planned for release in
mid-November. This means that all applications for a FREE copy (i.e. those with
discs containing contributions) must be received by SATURDAY OCTOBER 15TH.
Anyone paying the £2.00 fee has until Friday 11th November to apply.
Already planned for the November issue is a feature on how
AMPLE words are tokenised in memory, a user report on the Music 2000 MIDI
interface, a sideways RAM help utility for AMPLE and the results of our survey
which is included in this issue.
So please remember to include your survey results along with
your text or music contributions to AMPLINEX 008.
Published in AMPLINEX 007, September
1988
How to contribute to AMPLINEX
To receive your next issue of AMPLINEX free of charge you
must send a contribution of your own.
This could be an AMPLE music program, an instrument
definition, a question or an article about some aspect of the AMPLE language or
Hybrid Music System hardware or software, an AMPLE utility, a useful hint about
AMPLE, or an answer to another member's question.
Under copyright law we cannot publish programs or music
unless we have the permission of the copyright owners or their licensing agent.
It is important to realise that in the case of an AMPLE music program,
copyright exists in both the program itself and the music it represents. There
may even be a separate copyright in the arrangement. If you wish to contribute transcriptions
into AMPLE of someone else's music you must credit the copyright owner(s) of
the music, the arrangement (if applicable) and lyrics (if included). We can
then try to obtain permission to publish.
To protect ourselves from copyright actions we must ask you to
sign the copyright declaration on the 'next issue request form' which was sent
to you with this issue of AMPLINEX. All submissions made to AMPLINEX will be regarded
as permission to publish within the AMPLINEX membership. Beyond this, the
submission remains the property of the author.
As part of an exchange arrangement, we may wish to pass on
your address if any of your contributions are of interest to Micronet for
distribution via their 'Music City' service.
If you do NOT wish your contributions to be considered by
Micronet (and thus your address not to be passed to them) please indicate this
on the request form in the place provided.
You can also use your return disc to pass on questions which
you would like answered on any issue relating to the Hybrid Music System or
AMPLE language. We will do our best to answer them (or will pass them over to
the other members for help) and publish the results in the Questions and
Answers section of AMPLINEX.
You can also use AMPLINEX to advertise any (un)wanted items or
to make contact with other members. Just put the details of your advertisement
on to the return disc and we will try to include it in the next issue.
The 'Feedback' section of AMPLINEX contains a utility to
allow a note to be written on the screen which can then be saved to disc. This
'note' file can then be included on your disc sent for the next issue of
AMPLINEX.
'Feedback' notes can be used to make contributions to any of
the text-based sections of AMPLINEX as well as to make comments or suggestions on
AMPLINEX itself.
Send all contributions, on a standard DFS format disc (40 or
80 track).
40-track disc users please note:
The AMPLINEX magazine is designed to fit on to one side of
an 80 track disc. If you use 40 track discs you should send one double-sided or
two single-sided discs.
It is not necessary to send printed copies of your
contributions - any copies required are printed locally to minimize postage
costs.
Suggested file formats are:
a) AMPLE Music programs - save these in normal Studio 5000
format (e.g. by selecting 'Save program' from the Studio 5000 Main menu). Since
many members do not have the Music 4000 keyboard please ensure that your program
has no M.M4 or M.KFX module words present. To make sure, try loading the
program using your Studio 5000 System disc.
Please include some comments about the music - how or why it
was written, how it could be changed - and put them into a word as comments
following a DISPLAY statement. Use of the word 'info' to contain such text is
common practice and we would suggest that it is NOT displayed automatically
every time the music is played.
b) AMPLE instruments - save these in text form via *SPOOL
using the AMPLE 'TYPE' command to save the word(s) you want.
Some description of the sound itself and hints on its use
(e.g. which parameters could be changed, which are the most suitable octave
settings) would make it more useful. This can be done using comments within the
instrument definition itself (by preceding them with a '%').
c) Text (hints, questions etc.) - use the 'Feedback' note
facility for short contributions. For longer pieces use View, Wordwise or other
word processor (without embedded format codes or commands). Do not right
justify the text.
You can help us operate AMPLINEX more efficiently by careful
naming of the files which you send us. Receiving several files called 'hint' or
'quest' can cause us problems in trying to keep track of which contribution
came from which member.
Wherever possible, please try and make the filenames of your
contributions unique especially where they are for a regular section of the
magazine.
Putting a combination of your name or initials and the
section for which the contribution is destined is one way of doing this. So if
your name is Fred Bloggs you could use FBquest or BlogH&T for contributions
to the Questions and Answers or Hints and Tips sections.
Whatever filenames you use, please remember to include your
name somewhere in the contribution - this can save us many hours annotating lists
and cross-referencing filenames with contributors.
Ensure that your disc is well packed as we will be using the
same packaging to return it to you.
Make sure you enclose a return address label and postage and
that both the packaging and the disc are marked with your name and address.
Send it to:
AMPLINEX
26 Arbor Lane
Winnersh
Berks.
RG11 5JD
26 Arbor Lane
Winnersh
Berks.
RG11 5JD
to arrive by the date specified in the 'Next issue' section.
We look forward to reading and hearing your contributions.
Published in AMPLINEX 007, September
1988
Update – changes/corrections/comments
This section is a focus for news about the workings of
AMPLINEX, corrections to items in previous issues, and other small items of
information which might otherwise be missed amongst the details of each issue.
Contributing to AMPLINEX
A feedback note from Diccon Maude ask us:
"If a contribution to AMPLINEX is not in the next issue
do we have to submit it again, or is it kept for use later?
What is the situation for music (or questions even) that you
do not think good enough, as the contributor does not know if his/her music
will be put in a later issue?"
In general, all contributions to the 'Questions and Answers'
and 'Advertisements' sections are placed in the next issue (assuming they arrive
by the submission deadline). 'Hints and Tips' are usually published immediately,
but some might be held back to enable them to be published with other, related
contributions (e.g. this issue's ROM compatibility feature).
Contributions to the 'Features' and 'Utilities' sections are
more difficult to plan as they often involve several (sometimes large) files
and disc space is limited. Instrument definitions are collected and published
intermittently.
The number of contributions to the 'Music' section has
enabled us to maintain high quality as well as offer variety. For each issue
all the music contributions to date are considered - so a piece may appear
several issues after it was contributed.
So, if a contribution does not appear immediately there is
no need to submit it again. If for some reason you do not want a piece which
you have contributed to be published - just let us know and we will not
consider it for publication.
Copyright in music contributions
Pete Holdroyd writes
"I think I'm correct in believing that arrangements are
copyright the arranger, though it is usual to acknowledge the composer of the original
music. Perhaps you could clarify this?"
Since our agreement with MCPS (the Mechanical-Copyright
Protection Society) we are able to publish in each issue a limited number of
music programs whose author is not the music copyright owner. This agreement
covers the both compositions and arrangements which are still in copyright.
Because it is not always clear (or easy to discover) whether
a particular piece is in copyright or not, it is good practice to acknowledge
the composer (and arranger if applicable) of any music which is not your own.
If we receive music which is not credited and we are in
doubt about the copyright position we will not be able to publish.
AMPLINEX and CEEFAX
Since the previous issue of AMPLINEX we have been
experiencing some difficulty in our discussions with the BBC's CEEFAX service.
As you may know we planned to provide AMPLINEX-sponsored
material for their Telesoftware transmissions starting in the autumn and hoped
to be contacting the authors of the first selection of material in August.
Since then, however, we have been waiting to receive a copy
of the special licensing agreement which the BBC were drawing up for use with AMPLINEX.
The BBC tell us that their contracts department is having
some difficulty in clarifying the status of broadcast music software and are
currently in discussion with the MCPS about this.
In the meantime we would like to extend our invitation to
all members to let us know (via a Feedback note) what they consider to be the
best music programs we have published over the past year (AMPLINEX issues 001-006).
Nominate as many or as few as you like and we will try to reflect your
collective judgement in any future selection we offer to CEEFAX.
AMPLE by phone
In the 'Update' section of AMPLINEX 006 we mentioned that,
for a future AMPLINEX feature, we would like the experiences and comments of
members on services such as Music City and DCT which provide AMPLE programs and
information via a modem. The response so far seems to indicate that almost no
AMPLINEX members use these services!
This seems a little hard to believe, so we are re-issuing
the appeal for your comments on the features and benefits offered by these
services and on the costs and equipment involved.
AMPLINEX M06 music disc
A note from G H Richardson asks why we didn't use the second
side of the AMPLINEX 006 disc for the accompanying music disc.
Firstly, we would have needed to know which members have
access to a double-sided disc drive. Secondly, the music disc was prepared in
advance of the main magazine in order to avoid a doubling of the editing and distribution
effort.
As the cost of the extra discs was small this seemed a
better solution.
AMPLINEX membership
A note from Richard Bettis asks us whether the membership of
AMPLINEX has changed much over the past year.
The answer is yes. The first issue of AMPLINEX in September
1987 was distributed to about 25 people; by the end of 1987 we were publishing
about 75 copies and this issue should be going to about 125 people. The number of
people who have become members of AMPLINEX is rather larger than these figures
suggest, but not everyone subscribes to each issue.
Finally, please continue to send us your ideas for improving
the workings or contents of AMPLINEX. We want the magazine to do what you want
- so if it doesn't, let us know.
Also, please let us know if you spot an error or omission -
you may be the only one who has noticed.
Published in AMPLINEX 007, September
1988
Subscribe to:
Posts (Atom)