Professional Documents
Culture Documents
Your use of the JSTOR archive indicates your acceptance of the Terms & Conditions of Use, available at
http://www.jstor.org/page/info/about/policies/terms.jsp
JSTOR is a not-for-profit service that helps scholars, researchers, and students discover, use, and build upon a wide range of content
in a trusted digital archive. We use information technology and tools to increase productivity and facilitate new forms of scholarship.
For more information about JSTOR, please contact support@jstor.org.
The MIT Press is collaborating with JSTOR to digitize, preserve and extend access to Computer Music Journal.
http://www.jstor.org
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
PILEA
Sound
Language for
Synthesis
Paul Berg
Institute of Sonology
Utrecht, The Netherlands
Introduction
Background
(1)
(2)
(3)
(4)
(5)
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
areself-containedandautomaticlator),etc. Theprograms
givena startnumberfor the randomnumbergenerator,the
will continueuntilexternallyhalted.Theoutputis
programs
variable-ifbegunwith a differentstartnumber,a different
output results,and yet, the ouput can be repeatedby
beginningthe programwiththe samestartnumber.
START
GENERATE
A
SAVE
ATC
GENERATE
B
NEWB
CHOOSE &
DO
LOGIC
SAVE
C
LOAD
CLOCK
CONVERT
WAIT
NEWPUL
GENERATE
PULSE,
to0
NEWHSK
?
GENERATE
REPMSK
yesEPEAT
no
GENERATE
REP
FCTR
0
NEWB
RPATC
Example1
Page31
SEED
7;
STORE
SAVE;
START
INIT
REF:1
NEW3:-1
NEW2:-1
NEWl1:-1;
CHANGE CHECK
NEW2
NCNT, -
NEW3
MSEL,-;
CONVERT
SEND:VAR
CHANNEL:O;
SEL N
B:12-15
ST:NEW3;
CAL
REF:REF*2
PIASK3:REF-1
COMP:4096-REF;
ZERO?
Y:END;
MSEL
SEL
M:MASK3
ST:MASK2;
SEL N
B:12-17
ST:NEW2;
SomeProgramming
Examples
NCNT
B :MASK2
ST : CNT;
CHECK
NEW1
NINC,-;
SEL
B:8-17
ST:MASKI;
SEL N
B:15-17
ST:NEW1;
NINC
TOP
SEL
M:MASK1
ST: INCR;
RANDOM;
CONVERT
SEND:CHANNEL:1;
BRANCH
TO:TOP;
TURN
Example2
A difficultyin describing
programming
examplesis that
the soundis not heardby the personreadingthisdescription.
Thislimitationis less seriouswhenworkingfroma known
model. Thereforethe firstexamplewillbe of a knownsound:
noise(Example2). Theideais to producenoiseby sending
randomvaluesto the converter.TOPis the labelfor the
instructionRANDOM.Thatinstructionreadsa randomnumberinto the accumulator.Thefollowinginstructionsendsthe
contentsof the accumulator
to converterchannelzero. The
hyphenafterSENDindicatesa defaultcondition,in thiscase
the contentsof the accumulator
insteadof a particular
variablk
or constant. Programcontrolbranchesto the instruction
labelledTOP,i.e. it returnsto the firstinstruction.Thespeed
at whichthisprogramoperatesis the speedof the assembled
machineinstructions.
Example3a containsa programtext in PILEandexample3b a flow chartfor thatprogram.A valueA is incrementedwithINCR(see arrow).Theresultis sentto the converter.ThishappensCNTnumberof times.If A becomes
greaterthan4095, the signof INCRis changedandA is set
to 4095. If A becomesless thanzero,the signof INCRis
changed,andA is set to zero. If CNTand INCRarelarge,
moreor less regulartrianglepatternsare formed.If that is
not the case,variousotherformsoccur.AfterA has been
incrementedCNTtimes, severalconditionsare CHECKed
to determinewhichvariableshouldreceivea new value.
Page32
SEL N
GOON
GOON2
END
CAL
A:A+INCR
MAX:4095-A;
NEGATIVE?
MAX
-,GOON;
INIT
A:4095
INCR:-INCR;
BRANCH
TO:GOON2;
NEG?
A
-,GOON2;
INIT
A:O
INCR:-INCR;
CONVERT
SEND: A
CHANNEL:O;
CHECK
CNT
TURN,CHANGE;
FINISH?
EXT:SAVE;
DECLARE
NEW1
,CNT,MASK1,INCR,A,IAX ,REF,COP, SAVE,
,NEW2,IASK2
NEW3,MASK3;
Example3a
START
INIT
VAR
NEW
no
MASK2
ye
NEW
no
MASK3
yes
CAL
MASK3
MAXyes
<
no
STOP
SELECT
MASK2
SELECT
CNT
SEED
41;
INIT
A:1
B:37;
NEW
no
MASK1
SEL N
B:6-16
ST:NUTIME
B:14-17
ST:TIPME;
yes
SELECT
CHO
FINISH?
MASK1
EXT:O;
SEL N
B:8-17
ST:RETURN;
CHOOSE
SELECT
INCR
GROUP1,GROUP2,GROUP3,GROUP4;
GROUP1 CAL
A:A+INCR
A:A+1
B: B+7
C:A*B/3
D:C/67;
CONVERT
CONVERT
A
no
S:C
EXCEEDS
CH:O
S:D
CH:1;
LIMITS
-RETURN
INIT
es
RESET
WAITTIME;
CHECK
WAIT
DELAY,-
INCR
DELAY
yes
NUTIME
TEST,-;
SEL N
Example 3b
B:13-17
ST:TIHE
B:5-16
ST;NUTIME;
value.Thusdescribing
how maskvalueschangein a program
canbe animportantstructural
aspect.Thevaluesfor INCRare
determinedwith a variable,MASKI.A new valuefor this
variableis occasionallychosenwitha bit specification.CNT
alsohas a variablemask,MASK2.Valuesfor MASK2are
occasionallychosen,maskedby MASK3.In the courseof the
programMASK3getslargerandlarger.MASK3hasaninitial
valueof one.Whenit reaches4095, the programhalts.
Theresultof selectingvaluesfor MASK2fromMASK3
is thatCNTtendsto becomelarger.Butthisis not a linear
TEST
CHECK
RETURN
GROUP1,CHO;
GROUP2 CAL
A:A-5
B:B+16
C:A*B;
CONVERT
INIT
SEND:C
CHANNEL:
1;
WAIT:TIME;
Page33
START
INIT
CHECK
WAIT
DELAY2,NUTIME
TEST2,-;
SEL N
DELAY2
yes
FINISH
OP
no]s
RESET
B:13-17
ST: TIME
B:6-12
ST:NUTIME;
CHECK
TEST2
RETURN
GROUP2,CHO;
GROUP3 CAL
A: A+A-267
B:B+7
C:A*B/4;
CONVERT
S:C
CH:O;
INITIALIZE
WAIT:TIME;
CHECK
DELAY3
WAIT
DELAY3, NUTIME
TEST3, -;
SEL N
B:14-17
ST : TIME
B:6-16
ST:NUTIME;
CHECK
TEST3
RETURN
GROUP3,CHO;
GROUP4 CONVERT
S:O
CH:O
S:0
CH:1;
INIT
WAIT:TIIE ;
CHECK
DELAY4
WAIT
DELAY4,NUTIME
TEST4,-;
SEL N
B: 11-17
ST:TINME
B:6-12
ST:NUTIME;
CHECK
TEST4
RETURN
GROUP4,CHO;
DECLARE
A,B,C,D,NUTIME,TIME,RETURN,WAIT;
cAL
1
GROUP
CNGROUP
2
WAIT
noNEW
yes
SELECT
TIM
TIME
4b
structure.
Thisexamplehasa rathersimplehierarchical
Butgiventhe basicconceptof thisexample,it is clearthat
more extendedand variedhierarachical
decision-making
An exampleof anextendedversionof
couldbe programmed.
the basicidea in Example4 can be foundin Tape2 from
LocksandDams.
of oftenused
Examples3 and4 containsimpleillustrations
in PILEprograms:
structures
techniquesin describing
Page34
no
REaTUR
Example
Example4a continuedfrompreviouspage
(1)
(2)
(3)
(4)
(5)
GROUP
3
4
GROUP
war
shiftingof masks
timingthe variationof variablesusingCHECKs
hierarchical
changingof masks
(andSWITCH)
controllingprogramflowwithCHOOSE
of soundas calculations
anddelays
representation
Hardware
Comments
The PILEcompileris implementedon a PDP-15 at the
Instituteof Sonologyin Utrecht.Thecompilerproducescode
in MACROwithrandomaspectsusethe
15.PILEinstructions
hardwarepseudo-random
numbergeneratorbuilt by Jo
(3) Thisgenerator,linkedto the computer's
Scherpenisse.
I/O bus, generatesa randomnumberin 3 to 4js. The clock
clockas designed
instructionsassumea variableprogrammable
allows
the
Jo
This
clock
by Scherpenisse.
frequencyas wellas
the numberof stepsbeforea flagto be programmed.
The
in PILEarehoweverseldomused.It is very
clockinstructions
conceivablethata versionof PILEwouldbe madewithoutany
clock instructions.The D/A converterspresentlyusedare
12-bitwithouta buffer.
APPENDIX
Pile Instruction Set
6)
NEGATIVE?
VAR
LABi, LAB2;
or
NEGATIVE?
VAR
(4)
usedin thisdescription:
Conventions
CONindicatesthat a constantis to be insertedby the programmer
VARindicatesthat a variableis to be insertedby the programmer.
LABindicatesthata labelis to be insertedby the programmer
VALindicatesthat eithera constantor a variablemay be
inserted
-, LAB2;
log indicatesoperationsantivalence,
conjunction,disjunction,
implication,or exclusion
equivalence,
NEGATIVE?
VAR
LABl, -;
VariableVARis tested.If it containsa negativevalue,the proit goesto LAB2.EitherLAB1
gramgoesto LAB1. Otherwise
or LAB2canbe replacedwitha dashwhichindicatesthatthe
programcontinuesto the next instruction.The instruction
maybe appliedseveraltimesin succession.
of Program
Flow
Manipulation
7)
arith indicatesarithmeticexpression+ or - or * or /
BRANCH
TO:LAB;
LABis a labelfoundin the program.Thenext instruction
willbe the instructionmarkedwith
executedin the program
LAB.Executionwillcontinuefromthatinstruction.
1)
2)
or
SWITCH
VAR
LAB1,LAB2,..., LAB9;
Theprogram
switchesto LAB1,LAB2,etc., dependingon the
valueof VAR.(If VARis 1, the programswitchesto LAB1,
etc.). A maximumof ninelabelsmaybe used.
of variables
Manipulation
CHOOSE
LAB1, LAB2,... LAB8;
INITIALIZE
VAR:VAL;
VALcanbe positiveor negative.VALis assignedto VAR.
8)
GET
ZERO?
YES:LAB;
If the contentsof the accumulator
arezero,the program
continuesexecutionfromthe instructionmarkedwithLAB.
VAL;
Thevalueis placedin the accumulator.
4) CHECK
10) STORE
VAR;
3)
VAR
LAB1,LAB2;
or
or
STORENEGATIVE
VAR;
Thenumbercurrentlyin the accumulator
is storedin VAR.If
is indicated,the signof the numberis
STORENEGATIVE
changedbeforeit is stored.
CHECK
VAR
LAB1, -;
or
CHECK
VAR
-, LAB2;
Increasethe value of VAR by one. If it is not zero, the programbranchesto the instructionmarkedwith LAB1. If it is
zero, the programbranchesto the instruction markedwith
LAB2. A dash may be used instead of LAB1 or LAB2. In that
case the programcontinues to the next instruction if that
branchis chosen.
5)
9)
FINISH?
EXTERNAL: VAL;
or
FINISH?
INTERNAL: VAL;
The programterminatesif the numberset on the console accumulatorswitches (external) or if a numbersuppliedby the
hardwarerandomnumbergenerator(internal)is the same as
VAL.
PaulBerg:PILE- A Languagefor SoundSynthesis
11) READSWITCHES
STORE:VAR;
Thenumberset on the consoleswitchesis readandstoredin
VAR.
12) CALCULATE
VAR1 : VALlarithVAL2... ;
or
CALCULATE
VAR1 : log,VAL1,VAL2;
The possible arithmeticoperationsare: +, -, *, i/. No more
than eight arithmeticoperationsmay occur in one line. Operations are performedleft-to-right. The result of the performed
operationsis stored in VARI. Multiplicationand division of
negativenumbersis not possible. The possiblelogical operations are: equivalence,disjunction,conjunction, implication,
antivalence,exclusion. Only one logical operationmay occur
in a line. The result of the performedoperationis stored in
VAR1. Logicaland arithmeticoperationsmay not occur in the
sameline, but they may occur in consecutivelines.
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
Page35
13) SELECT
BITS : CON1,CON2,CON3- CON4...
STORE: VAR;
or
SELECT
MASK: VAR
STORE : VAR1;
or
SELECTNEGATIVE
BITS : CON1,CON2,CON3...
STORE : VAR;
or
SELECTNEGATIVE
MASK: VAR
STORE : VAR1;
A randomnumberis selected, limited (masked),and if then
not equal to zero, stored in VAR. The processis repeateduntil
a non -zero value can be stored in VAR. In the case of
SELECTNEGATIVEthe sign of the numberis changedbefore
it is stored. The numbermay be limited in two ways: 1) the
bits may be specifiedeither separatelyor between two limits,
e.g., BITS:3-10 (both ways may be combined), 2) a mask
may be specified. A logical AND (conjunction)is performed
with the randomnumberand the mask. The use of the mask
limits the rangeof the randomnumber.
14) DECLARE
VAR1, VAR2, VAR3...;
All variablesused in the instructionsmay be declaredso that
storagecan be savedfor them. The names of lists should not
be declared.
Manipulationof lists
15) CREATELIST
NAME:VAR
SIZE:CON;
VAR is the name to be given to the list. CONis the size of the
list. In general,the total size of all lists should not exceed
2500. After this instructionother instructionsshould be given
to formulatevalueswhich would be used in creatingthe list.
Instructionsmay be chosen from most of the other available
instructions, e.g., CALCULATE,RANDOM,SELECT,etc.
This group of instructionsshould end with the instruction
END LIST.
END LIST
SAVE:VAR;
This instructionindicatesthe end of the group of instructions
used to create a list. The value of VAR is stored in the created
list. The instructionsafter CREATELISTare againexecuted,
the next value for VAR is found, etc. until the list has been
filled.
16)
17) SAMPLELIST
NAME:VAR
SIZE:VAL1
INCREMENT:VAL2;
VAR is the name of a list previouslymade using CREATE
LIST or INSERTLIST.VAL1 is the size of the list. VAL1
must be less than or equal to the size declaredin CREATE
LIST or INSERT LIST. VAL2 is the increment. SAMPLE
LISTplaces one value from the list into the accumulator.The
Page36
18) INSERTLIST
NAME : VAR
SIZE : CON
CON1,CON2,...,
..., CON3;
VAR is the name of the list. CONis the size of the list. CON1,
CON2, etc., are constants which are the list. The list
containing CONi through CON3 is inserted in the program.
The maximum size of a list depends on how many lists are
used and how long the programis. In general,the total size of
all lists should not exceed 2500. INSERTLISTmay occur at
any point in a program.
Manipulationof the accumulator
19) RANDOM;
This is the only instructionwhich is complete on one line. A
randomnumber(18 bits) from the hardwarerandomnumber
generatoris placedinto the accumulator.
KEEP
BITS ; CON1,CON2- CON3,CON4... ;
Certainbits of the numberin the accumulatormay be kept.
The accumulatorcontains 18 bits, numbered0-17 from left to
right. CON1, CON2, etc., representthe numbersof the bits
which have been selected. The bits may be expressed
separately,e.g., BITS : 1,5; or between limits, e.g., BITS:
3-10; both ways may be combined.
20)
Manipulationof externaldevices
21)
CONVERT
SEND : VAL
CHANNEL: CON;
or
CONVERT
SEND: CHANNEL: CON;
VAL is sent to converter channel CON. VAL should be
between 0 and 4095. CON may be 0,1,2, or 3. If the
accumulatorcontents are to be sent, a dashis used insteadof
VAL.
22)
SEED
VAL;
or
SEED
-;
A seed (start number) is specified for the hardwarerandom
numbergenerator.Each time the samenumberis specified, the
same number (series) is produced by the hardwarerandom
numbergenerator.If VAL is a variable,it must be assigneda
value before this instructionis used. VAL may not be zero.
If one wished to insert the start value from the console
switches,use a minus sign instead of VAL.
ComputerMusicJournal,Box E, MenloPark,CA94025
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
CON
23) CLOCK
FREQ: VAL;
CONshouldbe either1 or 2. VAL
Twoclocksareavailable.
The
shouldbe positiveandis expressedin microseconds.
minimumvalueis 10. Thisinstructionsetsthe speedat which
the clockwillcount,i.e., not howlongit willcount,but how
fast.
CON
24) CLOCK
COUNT:VAL;
CONshouldbe either1 or 2 for Clock1 or Clock2. VAL
shouldbe positive.It indicateshow high the clock should
count(at the speedspecifiedin instruction23).
CON
25) CLOCK
START;
clock is
CONshouldbe either1 or 2. The corresponding
started.Thismeansit willbegincounting.
CON
26) CLOCK
WAIT;
CONshouldbe either1 or 2. Theprogramwaitsfor the clock
to finish counting(if it is not alreadyfinished)before
continuing.
CON
27) CLOCK
STOP;
CONshouldbe either1 or 2. Theclockis stopped.Theclock
shouldbe turnedoff afterWAIT.
Note: Someinstructionsfallintomorethanone of the above
categories.
AdditionalCommentsConcerning
TheInstructionSet
(1)
CALCULATE
A: A+ 10
B : A/C- 1
D: B* A
STX1: ANTIV,B,3
VAR2: IMPLIC,B,D
E : A*B+C/D-STX1 *VAR2/5 +79;
(2)
CREATELIST
NAME:HERMAN
SIZE: 500;
CALCULATE
C : EQUIV,25,D
D: D+D;
ENDLIST
SAVE:C;
(3)
useof abbreviations
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
Page37
INIT
CNTRIO:
-17
PEAK:40
PART7
berg
paul
CNT: - I
ENVNO
:0
M:I
C:2
A:O;
BRA
T:GI2;
SEL
B:9-11
ST:SWEEP
B:13-17
ST:CFREQ
B:11-16
S: PEAKA;
CALCULATE
PEAKA:PEAKA+PEAK;
SEL N
B: 12-15
ST:DUR;
CAL
GI
knew
never
you
cared
MFREQ
:CFREQ*M/2/C;
INITIALIZE
CNT:DUR;
SAMPLE
LIST
G2
N:MODAMP
S:80
I:1;
STORE
SWEAMP;
CALCULATE
SWEVAL:SWEEPtSWEAMP/PEAK;
LIST
SAMPLE
N:CAMP
S:80
sounds
I:1;
G3
STORE
AMP;
ZERO?
Y:G12;
SAMPLE
N:MOD
S:360
I:MFREQ;
STORE
MODSAM;
CALCULATE
INC:MODSAM*SWEVAL/1000+CFREQ;
SAMPLE
LIST
NAME
:CAR
SIZE:720
INCREMENT:
INC;
STORE
CARSAM;
CAL
OUT:CARSAMtAMP/PEAKA;
SWITCH
POSIT
G4,G5,G6,G7,G8,G9,GIO;
G4
CALCULATE
OUT2:OUT/8
OUT3:OUT-OUT2;
CONVERT
S:OUT2
CH:O
PaulBerg
March1978
Utrecht
G5
S:OUT3
CH: 1;
BRA
T:GII;
CAL
OUT2:OUT/4
OUT3/OUT-OUT2;
CONVERT
S:OUT2
CH:O
S:OUT3
G6
& Section 7
&------------------------------------------------------------&
Page38
PART7
CH: 1;
BRA
T:GI ;
CAL
OUT2:OUT/8a3
OUT3:OUT-OUT2;
CONVERT
S:OUT2
CH:0
S:OUT3
CH: 1;
ComputerMusicJournal,Box E, MenloPark,CA94025
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
T:G20;
BRA
T:GII;
CAL
OUT2:0OUT/2;
CON
S:OUT2
G7
SAMPLE
G18
N:ENV4
S:8
I:I;
STORE
E;
BRANCH
CH:O
G8
G9
GI0
Gil
G12
G13
S:OUT3
CH:1;
BRA
T:GI l;
CAL
OUT2:OUT/8*5
OUT3:OUT-OUT2;
CON
S:OUT2
CH:O
S:OUT3
CH:1;
BRA
T:GI I;
CAL
OUT3:OUT/4
OUT2:OUT-OUT3;
CONVERT
S:OUT2
CH:0O
S:OUT3
CH:41;
BRA
T:GII;
CAL
OUT3:OUT/8
OUT2:OUT-OUT3;
CON
S:OUT2
CH:O
S:OUT3
CH:1;
CHE
CNT
G3, G2;
CON
S:0.
CH:0
S:O
CH:11;
CHECK
CNTRL
-,DIV;
INIT
WHICH:;
SEL
B:15-17
ST:POSIT;
CALCULATE
ENVNO:ENVNO+1
MAX:
5-ENVNO;
NEGATIVE
GI5
N:ENV5
S:8
I:1;
STORE
E;
G20
G22
G24
INIT
WHICH:2;
BRANCH
T:G13;
G25
G27
G28
T:G20;
SAMPLE
N:ENV2
S:8
1:1;
STORE
E;
BRANCH
G29
T:G20;
G17
SAMPLE
N:ENV3
S:8
STORE
E;
BRANCH
I:1;
CHECK
SKIP
-,G23;
STORE N
CNT;
BRANCH
T:G22;
STORE
AINC;
CAL
A:A+AINC;
END LIST
S:A;
G23
E;
BRANCH
G16
CREATE LIST
N: CAMP
S:80;
CHECK
CNT
G24,-;
INIT
SKIP:-2;
SAMPLE
N:ENVDAT
S:8
G21
CREATELIST
N:ENVDAT
S:8;
SWITCH
ENVNO
G15,G16,Gl7,G18,G19;
SAMPLE
N:ENVI
S:8
1:li;
STORE
END LIST
SAVE:E;
INIT
A:O
CNT:-1;
SWITCH
WHICH
G21,G25;
G26
-,GI14;
INIT
ENVNO:I;
G14
T:G20;
SAMPLE
G19
CREATE LIST
N:MODAMP
S:80;
CHECK
CNT
G28,-;
INIT
SKIP:-2;
SAMPLE
N:ENVDAT
S:8
I:1;
CHECK
SKIP
-,G27;
STORE N
CNT;
BRANCH
T:G26;
STORE
AINC;
CAL
A: A+AINC;
END LIST
SAVE:A;
SEL N
B:3-1 I
ST: CNT;
SEL N
B:14-16
ST:CNT2;
CONVERT
S:0
CH:0
S:O
CH:1;
CHE
CNT
G29,CNT2
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
Page39
ST:M;
-,Gl;
SEL N
B:3-11
S:CNT;
BRA
T:G29;
SELECT NEGATIVE
B:14-17
ST:NEWM;
H6
CALCULATE
A:A+INCR
MAX:PEAK-A;
&
NEGATIVE
MAX
&
&
&
&
H7,-
Section 8
A
-,H8;
INITIALIZE
INCR: -INCR
&-----------------------------------------------------------------------&
A:O;
BRANCH
TO: H8;
INITIALIZE
H7
&
&
&
&
PART8
INCR:-INCR
PART8
A: PEAK;
CHECK
H8
CNT2
INITIALIZE
Hi1,-;
H9
CNTRL:-2500
NEWAMP:-I
ST:CNT2;
DISCNT:-1
RANDOM;
NEWMSK:-I
NEWS:-I
KEEP
B:16-17;
NEWCF:-I
STORE
NEWM:-I
NEWC:- I
INCR;
CHOOSE
AMP:40
PEAK:40
Hl I,H10,H
CNT:-I
A:O
HIO
H I
INC:I
C:5
M:2
CFREQ:40
SWEEP:100;
SELECT NEGATIVE
B:12-17
ST:CNT2;
RANDOM;
KEEP
B:16-17;
STORE
INCR;
INITIALIZE
NEWVAL:-I;
HI
H12
INITIALIZE
CNT:-200;
CHECK
CNTRL
H2
H2,HI9;
CHECK
H13
NEWVAL
H6,-;
INITIALIZE
NEWVAL:-I;
CHECK
NEWS
H3,-;
SELECT
B:2,6,9-12
ST: SWEEP;
SELECT NEGATIVE
B:15-17
ST:NEWS;
H3
H14
CHECK
NEWCF
HI5
H4,-;
SELECT
8:11-17
ST:CFREQ;
SELECT NEGATIVE
B:14-17
ST:NEWCF;
H4
CHECK
NEWC
H5,-;
SELECT
B:14-17
ST:C;
SELECT NEGATIVE
B:14-17
ST:NEWC;
H5
CHECK
NEWM
H6,-;
SELECT
B:]5-17
Page40
SELECT NEGATIVE
B:13-17
H16
INITIALIZE
INCR:-INCR;
,HO1,H10,HI 1;
INITIALIZE
SWEAMP:A;
CALCULATE
SWEVAL:SWEEP*SWEAMP/
1000;
CHECK
NEWAMP
H13,NEWMSK
H12,-;
SELECT
B:13-17
ST:AMPMSK;
SELECT NEGATIVE
B:12-17
ST:NEWMSK;
SELECT
M:AMPMSK
ST:AMP;
SELECT NEGATIVE
B:15-17
ST:NEWAMP;
CALCULATE
MFREQ:CFREQtM/2/C
MAX:360-MFREQ;
GET
MFREQ;
ZERO?
Y:HI4;
NEGATIVE?
MAX
-,H15;
INITIALIZE
MFREQ:359;
BRANCH
T:H15;
INITIALIZE
MFREQ:1;
SAMPLE LIST
N:MOD
S:360
I:MFREQ;
STORE
MODSAM;
CALCULATE
INC :MODSAMNSWEVAL/1I
000+CFREQ
MAX:720-INC;
GET
INC;
ZERO?
YES:H16;
NEGATIVE?
MAX
-,H17;
INITIALIZE
INC:719;
BRANCH
TO:H17;
INITIALIZE
ComputerMusicJournal,Box E, MenloPark,CA94025
This content downloaded from 193.170.190.253 on Mon, 02 Mar 2015 16:48:50 UTC
All use subject to JSTOR Terms and Conditions
INC: I;
SAMPLE LIST
H17
N:CAR
S:720
I:INC;
STORE
CARSAM;
CALCULATE
OUT:CARSAM*AMP/PEAK;
CONVERT
S:CHANNEL:O;
CHECK
DISCNT
H18,-;
SELECT
B:6-13
ST:DIST;
491,
404,
320,
242,
171,
111,
62,
482,
396,
312,
235,
165,
105,
58,
473,
387,
304,
227,
159,
100,
54,
465,
379,
296,
220,
152,
95,
50,
456,
370,
288,
213,
146,
90,
46,
447,
362,
280,
206,
140,
85,
43,
439,
353,
273,
199,
134,
80,
39,
430,
345,
265,
192,
128,
75,
36,
421,
337,
257,
185,
122,
71,
33,
413,
328,
250,
178,
116,
66,
30,
27,
6,
0,
9,
24,
4,
0,
10,
21,
3,
0,
12,
19,
2,
1,
14,
17,
1,
I,
17,
14,
1,
2,
19,
12,
0,
3,
21,
10,
0,
4,
24,
9,
0,
6,
27,
7,
0,
7,
30,
33,
71,
36,
75,
39,
80,
43,
85,
46,
90,
50,
95,
122,
128,
134,
140,
146,
152,
159,
165,
171,
178,
185,
257,
337,
412,
192,
265,
345,
430,
199,
273,
353,
439,
206,
280,
362,
447,
213,
288,
370,
456,
220,
296,
379,
465,
227,
304,
387,
473,
235,
312,
396,
482,
242,
320,
404,
491,
249,
328,
413,
500;
INSERT LIST
N:CAR
S:720
SELECT NEGATIVE
B:3-17
ST:DISCNT;
CALCULATE
OUT2:OUT*DIST/4095;
CONVERT
SEND:OUT2
CHANNEL:I;
CHECK
CNT.
H15,H1;
CONVERT
H18
HI19
SEND:O
CH:0
S:0
CHANNEL:I;
BRANCH
T:DIV;
2064,
2243,
2420,
2594,
2763,
2928,
3085,
3235,
3376,
3507,
3626,
3733,
3828,
3909,
3976,
4028,
2082,
2260,
2437,
2611,
2780,
2944,
3101,
3250,
3389,
3519,
3637,
3744,
3837,
3917,
3982,
4033,
2100,
2278,
2455,
2628,
2797,
2960,
3116,
3264,
3403,
3531,
3648,
3753,
3845,
3924,
3988,
4037,
2118,
2296,
2472,
2645,
2813,
2976,
3131,
3278,
3416,
3544,
3660,
3763,
3854,
3931,
3993,
4041,
2136,
2314,
2490,
2662,
2830,
2992,
3146,
3293,
3429,
3556,
3670,
3773,
3862,
3938,
3999,
4045,
2154,
2331,
2507,
2679,
2846,
3008,
3161,
3307,
3443,
3568,
3681,
3782,
3870,
3944,
4004,
4049,
2171,
2349,
2524,
2696,
2863,
3023,
3176,
3321,
3456,
3580,
3692,
3792,
3878,
3951,
4009,
4052,
2189,
2367,
2542,
2713,
2879,
3039,
3191,
3335,
3468,
3591,
3703,
3801,
3886,
3958,
4014,
4056,
2207,
2384,
2559,
2730,
2895,
3054,
3206,
3349,
3481,
3603,
3713,
3810,
3894,
3964,
4019,
4059,
2225,
2402,
2576,
2747,
2912,
3070,
3221,
3362,
3494,
3615,
3723,
3819,
3902,
3970,
4024,
4062,
4065,
4068,
4071,
4074,
4076,
4078,
4080,
4082,
4084,
4086,
4087,
4093,
4084,
4059,
4019,
FINISH
3964,
3894,
EXT:0;
DECLARE
3810,
3713,
NEWAMP,NEWMSK,AMPMSK,NEWS,NEWCF,NEWM,NEWC,DIST,
3603,
OUT2,NEWVAL,DISCNT,CNT2,AMP,OUT,CARSAM,PEAK,A,
C,M,CFREQ,SWEEP,MFREQ,MODSAM,INC,WHICH,PEAKA,ENVNO, 3481,
3349,
E,MAX,DUR,SKIP,AINC,SWEAMP,SWEVAL,CNT,SWEMSK,
3206,
CFMSK,MMSK,CMSK,CNTEND,OUT3,POSCNT,POSINC,POSMSK,
3054,
REF,POSIT,REPEAT ,MASTER,CNTRL;
INSERT LIST
2895,
2730,
NAME:ENVI
SIZE:8
2559,
2384,
10,4,30,0,30,0,10,-4;
INSERT LIST
2207,
NAME:ENV2
2029,
SIZE:8
1850,
1673,
20,2,10,-1,35,0,15,-2;
INSERT LIST
1499,
NAME:ENV3
1330,
SIZE:8
1165,
20,1,20,1,20,-1,20,-1;
1008,
INSERT LIST
858,
NAME:ENV4
717,
SIZE:8
586,
10,4,20,-1,30,0,20,-1;
467,
INSERTLIST
360,
NAME:ENV5
265,
4089,
4093,
4082,
4056,
4014,
3958,
3886,
3801,
3703,
3591,
3468,
3335,
3191,
3039,
2879,
2713,
2542,
2367,
2189,
2011,
1833,
1656,
1482,
1313,
1149,
992,
843,
704,
574,
456,
349,
256,
4090,
4093,
4080,
4052,
4009,
3951,
3878,
3792,
3692,
3580,
3456,
3321,
3176,
3023,
2863,
2696,
2524,
2349,
2171,
1993,
1815,
1638,
1465,
1296,
1133,
977,
829,
690,
562,
445,
340,
248,
4091,
4092,
4078,
4049,
4004,
3944,
3870,
3782,
3681,
3568,
3443,
3307,
3161,
3008,
2846,
2679,
2507,
2331,
2154,
1975,
1797,
1621,
1448,
1280,
1117,
962,
815,
677,
549,
433,
330,
239,
4092,
4092,
4076,
4045,
3999,
3938,
3862,
3773,
3670,
3556,
3429,
3293,
3146,
2992,
2830,
2662,
2490,
2314,
2136,
1957,
1779,
1603,
1431,
1263,
1101,
947,
800,
664,
537,
423,
320,
231,
4092,
4091,
4074,
4041,
3993,
3931,
3854,
3763,
3660,
3544,
3416,
3278,
3131,
2976,
2813,
2645,
2472,
2296,
2118,
1939,
1762,
1586,
1414,
1247,
1085,
932,
786,
650,
525,
412,
311,
223,
4093,
4090,
4071,
4037,
3988,
3924,
3845,
3753,
3648,
3531,
3403,
3264,
3116,
2960,
2797,
2628,
2455,
2278,
2100,
1922,
1744,
1569,
1397,
1230,
1070,
917,
772,
637,
513,
401,
301,
215,
4093,
4989,
4068,
4033,
3982,
3917,
3837,
3744,
3637,
3519,
3389,
3250,
3101,
2944,
2780,
2611,
2437,
2260,
2082,
1904,
1726,
1551,
1380,
1214,
1054,
902,
750,
625,
502,
390,
292,
207,
4093,
4087,
4065,
4028,
3976,
3909,
3828,
3733,
3626,
3507,
3376,
3235,
3085,
2928,
2763,
2594,
2420,
2243,
2064,
1886,
1709,
1534,
1363,
1198,
1039,
887,
744,
612,
490,
380,
283,
199,
4094,
4086,
4062,
4024,
3970,
3902,
3819,
3723,
3615,
3494,
3362,
3221,
3070,
2912,
2747,
2576,
2402,
2225,
2047,
1868,
1691,
1517,
1346,
1181,
1023,
872,
731,
599,
478,
370,
274,
191,
SIZE:8
20,1,20,1,30,0,10,-4;
INSERT LIST
NAME:MOD
SIZE:360
526,
534, 543, 552,
612,
620, 629, 637,
695,
703, 711, 719,
772,
779, 786, 793,
840,
847, 853, 859,
899,
904, 909, 914,
945,
949, 953, 956,
978,
980, 982, 985,
996,
997, 998, 998,
999,
998, 998, 997,
987,
985, 982, 980,
960,
956, 953, 949,
919,
914, 909, 904,
865,
859, 853, 847,
800,
793, 786, 779,
726,
719, 711, 703,
646,
637, 629, 620,
560,
552, 543, 534,
176,
169,
III,
105,
60,
56,
25,
22,
4,
3,
0,
0,
11,
13,
37,
41,
79,
84,
135,
142,
207,
215,
292, . 301,
390,
401,
513,
502,
637,
625,
758,
772.,
917,
902,
1054,
1070,
1214,
1230,
1380,
1397,
1569,
1551,
1726,
1744,
1904,
1922,
162,
100,
52,
19,
2,
1,
15,
44,
89,
149,
223,
311,
412,
525,
650,
786,
932,
1085,
1247,
1414,
1586,
1762,
1939,
155,
94,
48,
17,
1,
1,
17,
48,
94,
155,
231,
320,
423,
537,
664,
800,
947,
1101,
1263,
1431,
1603,
1779,
1957,
149,
89,
44,
15,
1,
2,
19,
52,
100,
162,
239,
330,
433,
549,
677,
815,
962,
1117,
1280,
1448,
1621,
1797,
1975,
142,
84,
41,
13,
0,
3,
22,
56,
105,
169,
248,
340,
445,
562,
690,
829,
977,
1133,
1296,
1465,
1638,
1815,
1993,
135,
79,
37,
11,
0,
4,
25,
60,
111,
176,
256,
349,
456,
574,
704,
843,
992,
1149,
1313,
1482,
1656,
1833,
2011,
129,
74,
34,
9,
0,
6,
28,
65,
117,
184,
265,
360,
467,
586,
717,
858,
1008,
1165,
1330,
1499,
1673,
1850,
2029,
123,
69,
31,
7,
0,
7,
31,
69,
123,
191,
274,
370,
478,
599,
731,
872,
1023,
1181,
1346,
1517,
1691,
1868,
2047;
&------------------------------------------------------------------------
END
508,
595,
679,
757,
828,
888,
937,
972,
993,
999,
990,
966,
928,
877,
814,
742,
662,
578,
517,
603,
687,
764,
834,
894,
941,
975,
995,
999,
989,
963,
924,
871,
807,
734,
654,
569,
560,
646,
726,
800,
865,
919,
960,
987,
999,
996,
978,
945,
899,
840,
772,
695,
612,
526,
569,
654,
734,
807,
871,
924,
963,
989,
999,
995,
975,
941,
894,
834,
764,
687,
603,
517,
578, 586,
662, 671,
742, 750,
814, 821,
877, 883,
928, 933,
966, 969,
990, 992,
999,1000,
993, 992,
972, 969,
937, 933,
888, 883,
828, 821,
757, 750,
679, 671,
595, 586,
508, 500,
184,
117,
65,
28,
6,
0,
9,
34,
74,
129,
199,
283,
380,
490,
612,
744,
887,
1039,
1198,
1363,
.1534,
1709,
1886,
Page41