AMPLINEX issue 006 was published in July 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.
News and reviews
Waveform Designer
Kevin Doyle
Distribution of the SoundSculptures Waveform Designer (reviewed in AMPLINEX
004) has been disrupted recently due to the rise in price of EPROMs, according
to Jonty Stockdale, the designer of the software. He said that he had delayed
production of the latest batch whilst trying to find a cheaper source of blank
EPROMs but had now decided to buy at the more expensive price. The backlog of
orders should be cleared within the next week.
The higher costs mean that, in future, the software package
(which consists of a floppy disc, ROM and manual) will cost £31.00 - an
increase of £2.00. The delivery time should be a maximum of 21 days.
Mr Stockdale also stressed that the software would currently
only work with the BBC Model B, but that he was working on a new version which
would be compatible with the BBC B+ and Master. This should be available by September.
The Wave Designer is available from:
Mr J Stockdale
7 Newhey Road
Cheadle
Cheshire SK8 2AQ
7 Newhey Road
Cheadle
Cheshire SK8 2AQ
priced £31.00 including postage and packing.
Fatal Diseases cassette
Roy Follett
AMPLINEX 004 contained an advertisement submitted by one of
our members for an audio tape of music using, amongst other instruments, the Music
5000. Intrigued by this, I asked for and was sent a review copy.
I wish now that I had not done so. I do not want to appear
uncharitable but, although I appreciate the amount of work that went into the
production of this cassette, the lyrics hit a very low low.
The titles themselves set out to offend, for example:
'Rap' an everyday story of constipation, domestic accidents
and wild perverted sex
or
'Mr Trousers', a classical operetta about a man with a huge
willy
or
'Vomit tastes like Weetabix' a smooth jazz ditty about cat
produce.
To move on, I liked the music. With one or two exceptions,
most of it was very inventive with the Music 5000 being detectable. Being on
audio tape one is not able examine the production as AMPLE users normally do,
but must do it aurally. In case I was too old in the tooth to appreciate this production
as a whole, I asked my son to listen and give his opinions.
These are few of them:
'Lager frenzy'. Alright, but rather spoilt by unnecessary
sound effects.
'Hot sausage merchant'. Messy.
'Fatal diseases'. This one is OK but I kept waiting for
something to happen.
'Juxtaposition'. Ditto.
'Rap'. Ditto
'Till the end of time'. Several orders of magnitude better.
Several changes of tempo made this much better.
I wonder why this cassette was made; was it to entertain the
listener or was it an exercise in self-indulgence by the performers?
What else can I say, I've tried to like this production. But
I cannot.
The cassette 'Fatal Diseases' is available from:
Mike Dobson (Promotions Manager)
63 Galsworthy Road
Goring-by-Sea
Worthing
West Sussex BN12 4UP
63 Galsworthy Road
Goring-by-Sea
Worthing
West Sussex BN12 4UP
for £2.50.
A new cassette titled 'Beastiality Blasphemy Bondage Buggery
Blood' is also available for £3.50.
Published in AMPLINEX 006, July 1988
Varen (Last Spring)
by Gerry TimmComposed by: Edvard GriegI chose Varen as an exercise in expression control and dynamic balancing of 8 parts. My Music 5000 was originally obtained as a means of trying and storing musical ideas and arrangements - which it does admirably - but I am now 'hooked' on AMPLE and trying to unravel it. The Staff Editor is a boon. I initially write parts here, laying them down one at a time, listening for errors not detected by the editor. Before AMPLINEX my only real source of information and help was studying other people's programmes.
Gerry Timm, Lincoln, March 1988 |
Source: AMPLINEX 006 disk, file $.SPRING |
Published in AMPLINEX 006, July 1988
Save Me
by Mike DobsonComposed by: Brian MayThe main point of interest here is my extensive use of AMPLE's broken chord feature to produce a strumming effect - see player 4's parts.
You may also notice most of the instruments are from the Music 4000 demo jukebox. I find there is little need to define new sounds when so many are provided already. |
Source: AMPLINEX 006 disk, file $.SAVEME |
Published in AMPLINEX 006, July 1988
Phase
by Tony SnellThis music is written so that it plays forever and so this recording is just a sample of the music that it could produce. Something for all you minimalists out there...
Part 1 and part2 differ only in the speed at which they play the parts. Try changing the short sequences of notes in the phrases, changing the order in which they play etc. Don't forget to switch off before you go to bed. |
Source: AMPLINEX 006 disk, file $.PHASE |
Published in AMPLINEX 006, July 1988
March of the Jazzmen
by Bill MellorComposed by: Morgan JonesArranged by Harry Gold MARCH OF THE JAZZMEN is programmed from a typical piece of sheet music known in the trade as 'Dots for Small Combo's' and is of the type used by hundreds of small Trad Groups during the 50's 60's and 70's known as Dixieland.
Having played Trombone in one such group for the past twenty or so years I have a great affection for this type of music and I hope it is sufficiently different from most of the AMPLINEX contributions to have some novelty appeal. Please feel free to experiment. Bill Mellor |
Source: AMPLINEX 006 disk, file $.MARCH |
Published in AMPLINEX 006, July 1988
Grunt for Grunt
by Ted KirkComposed 1980 and programmed 1988 I can't remember why it's called GRUNT FOR GRUNT, but I think there's a loose connection with a BBC show that was called WORD FOR WORD.
The piece was originally written for a school jazz group, as you can probably tell. |
Source: AMPLINEX 006 disk, file $.GRUNT |
Published in AMPLINEX 006, July 1988
Gills
by The Awfully Nice Software CoClose the curtains Geoffrey I'm amphibious |
Source: AMPLINEX 006 disk, file $.GILLS |
Published in AMPLINEX 006, July 1988
Spy Programs
A G Walduck
In an attempt to 'look inside' the machine as AMPLE was
playing music (to see if I could spot interesting things like sound event
queues and to try to make some sense of them) I wrote two short programs to
give me a dynamic memory display of areas within the machine.
Most other methods are unsuitable for use with AMPLE: Exmon
is another language ROM, and only one language can be active at a time; Disc
Doctor's MZAP almost completely takes over the machine; ADT's MEX command hangs
the machine if executed from AMPLE.
I wished to obtain a fairly large 'window' into the machine,
refreshed as rapidly as possible, that could co-exist with a busy AMPLE environment,
could be easily instructed to view different areas, and could be turned on or
off at will. Above all the keyboard control of AMPLE still had to be
maintained.
The program is a small (less than one page) machine code
program (AMPLE was far too slow!) which is completely illegally written,
writing directly to the screen (apologies to Shadow RAM users, but even the OS
routines are too slow), grabbing Econet zero-page workspace (&90-&9F)
for its use, and residing in either page &900 or &A00 (which probably
clashes with the Staff editor buffer usage of this area). It is a real quick-and-dirty
program - but if anyone cares to improve on it, so much the better.
It exists as a background process, driven by the vertical
sync event. Consequently the display can be animated by *FX14,4 (turn vertical sync
event on), or frozen by *FX13,4 (turn vertical sync event off). Since text
windows are not used, if the screen scrolls the display gets a little
fragmented, but to no harm, and a quick 7 MODE puts everything to rights again.
The program suite exists in two versions, a 'normal' one
which displays in the lower half of the screen (more suitable for coexisting with
Menus and Editors), and a 'Hi' version which uses the upper half of the screen,
and which is more suitable for use with the Mixing Desk. This version has to
write a little more to the screen (i.e. spaces) for the output to be
presentable, so is potentially a little more demanding of the processor, which
can occasionally get a little stretched at busy times in the music processing;
under these circumstances the music will temporarily slow or get out of step.
Each version consists of two programs:
a) U.MonS (or U.HiMonS) - a BASIC source program to assemble
the code, and to save the machine code image. It also gives a test environment
in BASIC, and starts with a display of the active area of the BASIC stack (for
a bit of movement!). The machine code images produced are called Mon (or HiMon)
and must be loaded at &900.
b) U.Spy (or U.HiSpy) - an EXEC file to load the machine
code, set up function keys to 'move around' in memory, write the vector
contents, and turn on the display (this time of the AMPLE stack). A couple of
new AMPLE words are defined ('set' and 'show') to help in its use. These will
be lost if a new program is loaded (unless SPY is EXECed again), but the
equivalent commands can still be typed by hand.
Interesting areas in AMPLE memory
&160 show
The AMPLE stack. Unusual in that it runs from &17F down,
and AMPLE error messages reside at &180 up (c.f. the typical BASIC/OS stack
which runs from &1FF down, with error messages at &100 up.
&1D38 show (&2138 show, for the Music 4000)
Use HiSpy and the Mixing Desk to view this area within the
M.M5 module work area, and one can readily see the correspondence between
sounds on voices shown on the mixing desk and changes in this area. If the
music is very busy, remember that the Mixing Desk screen refresh is a very low priority
task in AMPLE so it may well lag noticeably behind the Spy screen, which has a
higher priority than many of the AMPLE processes.
&1913/4 show
This is in the M.INT area and is incremented each 1/100th of
a second during the running of an AMPLE music piece. Possibly the master
timebase for the system.
I would be most interested if anyone finds any more
attributable actions in the welter of changing data that this program reveals.
Related files on this disc:
U.MonS - BASIC program to produce 'Mon' machine code
U.HiMonS - BASIC program to produce 'HiMon' machine code
U.Spy - EXEC file to enable use of Mon code within the AMPLE
environment
U.HiSpy - EXEC file to enable use of HiMon code within the
AMPLE environment
Published in AMPLINEX 006, July 1988
Joystick for MIDI
Rick Cocker
Rick Cocker was one of our reviewers of the Music 2000 MIDI
interface in AMPLINEX 005 (May 1988).
Music 2000 MIDI interface owners should use:
*EXEC U.MIDIjoy
to read this file into AMPLE. It should then be RUN.
% List of words
"RUN" []
"button" []
"harp" []
"info" [] "info2" [] "info3" []
"info4" [] "info5" [] "info6" []
"joyval" [] "mix" [] "mod" []
"play" [] "sig" [] "sus" []
"swait" [] "uilleann" [] "velact" []
"info" [] "info2" [] "info3" []
"info4" [] "info5" [] "info6" []
"joyval" [] "mix" [] "mod" []
"play" [] "sig" [] "sus" []
"swait" [] "uilleann" [] "velact" []
"RUN" [7MODE 6FOR(NL)FOR DISPLAY
% Filename: U.MIDIjoy
%
% Demonstration using the joystick to
% control MIDI and velocity functions.
%
% The piece used is an Irish
% traditional ballad called
% "Eileen Aroon".
%
% Press ESCAPE to end and type
% 'info' for further details.
%
READY 115=T mix sig play
]
% Filename: U.MIDIjoy
%
% Demonstration using the joystick to
% control MIDI and velocity functions.
%
% The piece used is an Irish
% traditional ballad called
% "Eileen Aroon".
%
% Press ESCAPE to end and type
% 'info' for further details.
%
READY 115=T mix sig play
]
"button" [
% test and get value of joystick
% button. Note that this word is not
% active in this piece but included to
% show method.
0 &80 &FFF4 CODE #2 % get value
3 AND #11 % test for
1 #= % button 1 (use 0
% if button 0 )
IF( #11 % if button on
64 MIDICONTROL )IF % then send
% sustain
#2 % discard value
]
% test and get value of joystick
% button. Note that this word is not
% active in this piece but included to
% show method.
0 &80 &FFF4 CODE #2 % get value
3 AND #11 % test for
1 #= % button 1 (use 0
% if button 0 )
IF( #11 % if button on
64 MIDICONTROL )IF % then send
% sustain
#2 % discard value
]
"harp" [% harp accompaniment
velact % set velocity on joystick
24,4FOR(-2:FACFACFcafca)FOR gBDGBD
4FOR(-2:FACFACFcafca)FOR
gBDGBD!fACFACFcafcaBDFBDa!gBDGDb
!-eB-EG-Eb!cGCGEc!dADADF!!-eB-EB-EG
!!cGCEGCEGCgec!fACFAC!gBDGBD
2FOR(-2:FACFACFcafca)FOR gBDGBD
!fACFACFcafcaf///^
]
velact % set velocity on joystick
24,4FOR(-2:FACFACFcafca)FOR gBDGBD
4FOR(-2:FACFACFcafca)FOR
gBDGBD!fACFACFcafcaBDFBDa!gBDGDb
!-eB-EG-Eb!cGCGEc!dADADF!!-eB-EB-EG
!!cGCEGCEGCgec!fACFAC!gBDGBD
2FOR(-2:FACFACFcafca)FOR gBDGBD
!fACFACFcafcaf///^
]
"info" [7MODE 4FOR(NL)FOR DISPLAY
% In this piece the joystick is used
% to control two functions - velocity
% and modulation-wheel effects.
%
% Joysticks work in different ways but
% these simple examples can be used as
% starting points. The programming can
% be much improved as it is included
% here purely for demonstration.
%
% Note that the velocity word if
% scaled 0-64 could be used by Music
% 5000 voices.
%
% ** Press SPACE BAR to continue **
#IN #2 info2
]
% In this piece the joystick is used
% to control two functions - velocity
% and modulation-wheel effects.
%
% Joysticks work in different ways but
% these simple examples can be used as
% starting points. The programming can
% be much improved as it is included
% here purely for demonstration.
%
% Note that the velocity word if
% scaled 0-64 could be used by Music
% 5000 voices.
%
% ** Press SPACE BAR to continue **
#IN #2 info2
]
"info2" [7MODE 4FOR(NL)FOR DISPLAY
% Both axes are being used but in
% different ways:
%
% 1) The horizontal axis controls
% velocity (=L) using the ACT command
% found in the word 'velact' placed
% prior to the 'harp' music in part 1.
%
% 2) The vertical axis is controlling
% modulation effects found in the word
% 'mod'. In this piece I am using
% SHARE to place the modulation effect
% on part 2.
%
% ** Press SPACE BAR to continue **
#IN #2 info3
]
% Both axes are being used but in
% different ways:
%
% 1) The horizontal axis controls
% velocity (=L) using the ACT command
% found in the word 'velact' placed
% prior to the 'harp' music in part 1.
%
% 2) The vertical axis is controlling
% modulation effects found in the word
% 'mod'. In this piece I am using
% SHARE to place the modulation effect
% on part 2.
%
% ** Press SPACE BAR to continue **
#IN #2 info3
]
"info3" [7MODE 4FOR(NL)FOR DISPLAY
% I have placed the word 'mod' after
% the play (P) structure to show that
% it can be used on the non-playing
% part. This would leave all playing
% parts for music notation. It could
% of course be used in a normal part.
%
% Although not used in this piece I
% have included the word 'button'
% which tests to see if the
% joystick's fire-button is being
% pressed. When pressed it turns on
% the instruments' sustain.
%
% ** Press SPACE BAR to continue **
#IN #2 info4
]
% I have placed the word 'mod' after
% the play (P) structure to show that
% it can be used on the non-playing
% part. This would leave all playing
% parts for music notation. It could
% of course be used in a normal part.
%
% Although not used in this piece I
% have included the word 'button'
% which tests to see if the
% joystick's fire-button is being
% pressed. When pressed it turns on
% the instruments' sustain.
%
% ** Press SPACE BAR to continue **
#IN #2 info4
]
"info4" [7MODE 4FOR(NL)FOR DISPLAY
% Note: any MIDI control, which uses a
% flag (ON/OFF) to activate it, may be
% controlled by the fire-button.
%
% Likewise, any MIDI control with a
% data value 0-127 may be controlled
% by the joystick e.g. Breath control,
% Velocity, Portamento Time. You can
% also send out system-exclusive data
% e.g. Glide-time on a Casio CZ.
% However, if the instrument is slow
% to respond to some commands it could
% give rise to synching problems.
%
% ** Press SPACE BAR to continue **
#IN #2 info5
]
% Note: any MIDI control, which uses a
% flag (ON/OFF) to activate it, may be
% controlled by the fire-button.
%
% Likewise, any MIDI control with a
% data value 0-127 may be controlled
% by the joystick e.g. Breath control,
% Velocity, Portamento Time. You can
% also send out system-exclusive data
% e.g. Glide-time on a Casio CZ.
% However, if the instrument is slow
% to respond to some commands it could
% give rise to synching problems.
%
% ** Press SPACE BAR to continue **
#IN #2 info5
]
"info5" [7MODE 4FOR(NL)FOR DISPLAY
% Note: The values produced by joyval
% are 0-126. 0 is produced instead of
% 127 because of AMPLE's use of 16-bit
% signed integers. To stop this use:
%
% "store"[GVAR] % old value store
% "joyval"[&80 &FFF4 CODE #2 512 #/ #2
% #11 0 #= IF( % If 0 compare to
% store #? SIGN #= % old value's SIGN
% IF(0)ELSE(-1)IF % neg? =0 pos? =-1
% )IF #11 store #! % store it.
% #11 SIGN IF(-1 #* 127 XOR )IF ]
%
% ** Press SPACE BAR to continue **
#IN #2 info6
]
% Note: The values produced by joyval
% are 0-126. 0 is produced instead of
% 127 because of AMPLE's use of 16-bit
% signed integers. To stop this use:
%
% "store"[GVAR] % old value store
% "joyval"[&80 &FFF4 CODE #2 512 #/ #2
% #11 0 #= IF( % If 0 compare to
% store #? SIGN #= % old value's SIGN
% IF(0)ELSE(-1)IF % neg? =0 pos? =-1
% )IF #11 store #! % store it.
% #11 SIGN IF(-1 #* 127 XOR )IF ]
%
% ** Press SPACE BAR to continue **
#IN #2 info6
]
"info6" [7MODE 4FOR(NL)FOR DISPLAY
% I have been unable to obtain 127 at
% the highest end of the joystick! Can
% anyone solve this? Joysticks are
% unreliable when at extremes. Is all
% that clear? Ah well...
%
% AMPLINEX has shown that there are
% many good music programmers using
% AMPLE so please experiment and if
% you come up with useful routines
% post them off. Adding real-time
% sound control to the Hybrid Music
% System for me offers many exciting
% possibilities.
%
% Rick Cocker (April 1988)
]
% I have been unable to obtain 127 at
% the highest end of the joystick! Can
% anyone solve this? Joysticks are
% unreliable when at extremes. Is all
% that clear? Ah well...
%
% AMPLINEX has shown that there are
% many good music programmers using
% AMPLE so please experiment and if
% you come up with useful routines
% post them off. Adding real-time
% sound control to the Hybrid Music
% System for me offers many exciting
% possibilities.
%
% Rick Cocker (April 1988)
]
"joyval" [
% axisnumber joyval -> valuenumber
swait
&80 &FFF4 CODE #2 % get value
512 #/ #2 % scale to 63 to -64
#11 SIGN % test for negative
IF( -1 #* 127 XOR )IF
% scale to 64 to 126
]
% axisnumber joyval -> valuenumber
swait
&80 &FFF4 CODE #2 % get value
512 #/ #2 % scale to 63 to -64
#11 SIGN % test for negative
IF( -1 #* 127 XOR )IF
% scale to 64 to 126
]
"mix" [% set up mix for MIDI voices
1 SHARE 8 VOICES MIDIV 1 MIDICHANNEL
2 SHARE 8 VOICES MIDIV 2 MIDICHANNEL
PNUM SHARE
]
1 SHARE 8 VOICES MIDIV 1 MIDICHANNEL
2 SHARE 8 VOICES MIDIV 2 MIDICHANNEL
PNUM SHARE
]
"mod" [% takes vertical joystick value
% for modulation control
2 SHARE % share with part2
REP(
REP( IDLE % pass control to
% other players
2 joyval #11 % get joystick value
1 MIDICONTROL % set control
)UNTIL( )REP
)REP
]
% for modulation control
2 SHARE % share with part2
REP(
REP( IDLE % pass control to
% other players
2 joyval #11 % get joystick value
1 MIDICONTROL % set control
)UNTIL( )REP
)REP
]
"play" [% play 2 parts
1 P( harp )P % includes ACT command
% "velact" for velocity
2 P( uilleann )P
GO
mod % modulation on part2
]
1 P( harp )P % includes ACT command
% "velact" for velocity
2 P( uilleann )P
GO
mod % modulation on part2
]
"sig" [K(-B)K
]
]
"sus" [% flag sus
64 MIDICONTROL % if ON (-1) turn
% sustain control on
]
64 MIDICONTROL % if ON (-1) turn
% sustain control on
]
"swait" [% waits until last DURATION
% (or music event) complete
REP( QTIME 0 #< )UNTIL( IDLE )REP
]
% (or music event) complete
REP( QTIME 0 #< )UNTIL( IDLE )REP
]
"uilleann" [% uilleann pipe plays tune
288,/ 48,
0:F12,//G/f/d/|c/////F/G/fG|48,A
//|///|c/D|F12,//G/48,A|g12,//Agf/d/
|48,F12,//G/f/d/|48,c//|F12,//G/f/d/
|48,c12,//F/G/fG|48,A//|///|A/g|f12,
//G/48,A|g12,//Agf/e/|48,F//|^FA|B/
a|g/d|-E12,//F/-e/d/|48,c//|12,G/fG
48,A12,d///|48,-E12,//F/-e/d/|48,c//
|12,////48,//|12,A/gAC/D/c/a/|f/d/c/
D/F/G/|48,A//|///|c/D|F12,//G/48,A|g
12,//Agf/e/|48,F//|0,^
]
288,/ 48,
0:F12,//G/f/d/|c/////F/G/fG|48,A
//|///|c/D|F12,//G/48,A|g12,//Agf/d/
|48,F12,//G/f/d/|48,c//|F12,//G/f/d/
|48,c12,//F/G/fG|48,A//|///|A/g|f12,
//G/48,A|g12,//Agf/e/|48,F//|^FA|B/
a|g/d|-E12,//F/-e/d/|48,c//|12,G/fG
48,A12,d///|48,-E12,//F/-e/d/|48,c//
|12,////48,//|12,A/gAC/D/c/a/|f/d/c/
D/F/G/|48,A//|///|c/D|F12,//G/48,A|g
12,//Agf/e/|48,F//|0,^
]
"velact" [% set ACT to receive
% joystick value and put on velocity
% only if gate is on
30 ACT(
5 FVAR #? % get gate voice
6 FVAR #? % get gate value
AND % voice number if ON gate
VOICE % OFF if OFF GATE/no gate
1 joyval =L % set new velocity value
ACT )ACT
]
% joystick value and put on velocity
% only if gate is on
30 ACT(
5 FVAR #? % get gate voice
6 FVAR #? % get gate value
AND % voice number if ON gate
VOICE % OFF if OFF GATE/no gate
1 joyval =L % set new velocity value
ACT )ACT
]
Published in AMPLINEX 006, July 1988
Subscribe to:
Posts (Atom)
