perm filename S1.F4[LX,LCS] blob sn#170754 filedate 1975-07-29 generic text, type T, neo UTF8
00100	C  THIS PROGRAM IS THE PROPERTY OF LELAND SMITH, PROFESSOR OF MUSIC
00200	C  AT STANFORD UNIVERSITY.  IT MAY NOT BE COPIED OR ALTERED IN ANY
00300	C  WAY WITHOUT WRITTEN PERMISSION OF THE AUTHOR.
00400	
00500	
00600	C  7/74 **********  SCORE  **********  LELAND SMITH, SEP.1969
00700	
00800	C   THIS PROGRAM WRITES NOTE LISTS FOR THE PDP10 SOUND 
00900	C   GENERATION PROGRAM.
01000	C   IF # OF INSTS IS CHANGED, ALSO CHANGE # IN 'INFO'('HELP') FORMAT.
01100	C   LOAD 'S1' WITH S2,S3,SCANZ,RAND AND SPRINT 
01200	C   (AND QUAD AND QUADO WHEN THEY ARE READY) AND
01300	C   IF DESIRED, A SUBROUTINE WITH THE FOLLOWING HEADING:
01400	C	SUBROUTINE SUBR
01500	C	COMMON /INS/ INST(27),BG(60)
01600	C	COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
01700	C   INUM=INST#  IPAR=PARAM#  
01800	C   BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
01900	C   IF IREST IS <0, THAT NOTE WILL BE A REST.  
02000	C   INST=INST. NAME,  BG=INSTS' BEGIN TIMES.
02100	C   NOTE #S IN SUBROUTINE: (1-84)  C4=37  FS4=43  C5=49  ETC.
02200	C   F1=86  F15=100 (NO F16!)
02300	
02400		COMMON /Q/ BNW(100),NWZ /INS/INST(27),BG(60) /TYP/SOS,JOUT,
02500		1 LN,ITYP,TPALN(4),JED
02600	CC 7/74 COLGATE  COMMON/TYP/ IS FOR COLTTY ROUT.
02700		COMMON/A/ V(2000),ROFF(27),NP(27),PCH(27,32),
02800		1 RDEV(27),IPT(27,31),XT(27),OTH(20,16),SCAL(101)
02900		1 ,P1(27),JFM(4),COPY(30),IFM(80)
03000		1 ,FINM(6),TINST(5),ENFI(5),TEDIT(4),INVIS(27)
03100		DIMENSION LIST(78),JNP(80)
03200	C   WITH VX,IOUT AT 70 AND IFM AT 80 OK FOR ONLY 
03300	C   40 LIT CHARS + 30 PARAMS PER INST.
03400	C   60 BG TIMES AVAILABLE.  FOR INSTS AND INSERTS AND EDITS.
03500		COMMON P(30),J,L,CNT(27),BT,PL(48),MK,DF,DUR(27)
03600		1 ,IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG,IXX,ISEMI,IQT
03700		1 ,INP(144),VX(70),ISCA(12),IDAT(11),IAMP,K,KN,M,ML,CODE,IBLA
03800		COMMON/B/MOT,PR,T5,NINS,I,TP,RA,KZY,NWX,INONLY,MX,
03900		1 Y,Z,ISLAC,MZ,N,IDALL,JC,JG,RB,IJ,IX,BW,KB,NL,RC,W,
04000		1 ZZ,CHN,YY 
04100		1 /D/TF,AMPFAC,OP1,DURX,IXIN,IFLNM
04200		1  /C/LPAR,IPRN,QX,RETRO,INVRT,ICON,LCNT,
04300		1 PARENS,JZ,BY,MLX,IZ,ALL,JD,LEND,QTS,ITMP,
04400		1 LP,ILIT,NLIT,KTMP,IC,RAX,RD,IA
04500	C  /C/=26
04600		EQUIVALENCE (LIST,IFM(3)),(JNP,INP)
04700		DATA KZY/27/,ISEMI/';'/,IQT/'"'/
04800		1, JFM(3)/','/
04900	C  IAA=A  ID=D  IE=E  IF=F  IEN=N  IPP=P  ISS=S  ITT=T
05000		DATA IBLA/' '/,IXX/'X'/
05100		1 ,ISCA/'C','P','D','O','E','F','PLAY;','G','S','A','T','B'/
05200		1 ,IDAT/'0','1','2','3','4','5','6','7','8','9','.'/
05300		LPAR=0
05400		IPRN=0
05500		QX=0.
05600		MOT=0
05700		RETRO=-1.
05800		INVRT=-1
05900		ICON=-1
06000		LCNT=1
06100		PARENS=0
06200	      JZ=1  
06300		CALL RNDINT
06400	C  INIT RAND NUM GENERATOR.
06500	CC    PR=0  
06600		IAMP=0
06700	C  IAMP IS 'BLANK LINE'FLAG ON PP1-3.
06800	      T5=0  
06900	      NINS=0
07000		K=0
07100		IDALL=-1
07200		QTS=-1.
07300	      KB=0  
07400	      NWZ=1
07500		BNW(1)=0
07600		I=1
07700	      KL=0  
07800	      TP=0  
07900	      RA=0  
08000	      CHN=0 
08100		DO 127 K=1,77,3
08200	127	LIST(K)=0
08300	C  INITIALIZES MOTIVIC LIST FOR ERROR FINDING ROUTINE.
08400		NWX=0
08500		BY=-1
08600	      DO 1128 K=1,KZY     
08700		INVIS(K)=0
08800		INST(K)=0
08900		CNT(K)=0
09000		RDEV(K)=0
09100	C  RDEV IS FOR RAND DEVIATIONS AT RUN TIME
09200		NP(K)=0
09300		IQ(K)=0
09400	C   IQ IS FOR RESTART FLAG
09500		IPT(K,1)=0
09600	      DO 1128 L=1,32    
09700	1128   PCH(K,L)=0 
09800	
09900		ITYP=-1
10000	C   TYPE 'FILE NAME', TEMPO FACTOR(0=1), AMPL.FACT(0=1),
10100	C   SECONDS TO BE OMITTED, DUR AT CUTOFF.
10200		JED=-1
10300	2112	TYPE 8002
10400	1112	ACCEPT 77732,JNP
10500		JFM(4)='5F)'
10600		JFM(1)='   (A'
10700	C   FOR FREE 'A' FORMAT
10800		CALL FMT(JFM,JNP,MLX)
10900		REREAD JFM,K,TF,AMPFAC,OP1,DURX
11000	C  JFM IS THE CURRENT FORMAT STATEMENT
11100		IF(K.NE.'EDIT')GO TO 3112
11200		JED=0
11300		GO TO 2112
11400	C  'E(DIT)' GOES TO EDIT MODE
11500	3112	IF(TF.EQ.0)TF=1.
11600		IF(AMPFAC.EQ.0)AMPFAC=1.
11700	21122	IF(K.NE.'TYPE')GO TO 128
11800		ITYP=0
11900		DATA FINM/30H(' TYPE OUTPUT FILE NAME'/)   /
12000		IFLNM='FOR21'
12100		REWIND 21
12200		GO TO 3127
12300	8001	FORMAT(A5,5F)
12400	77732	FORMAT(80A1)
12500	300	FORMAT(I,3F)
12600	128	IF(K.EQ.'INFO')GO TO 1280
12650		IF(K.NE.'HELP')GO TO 3128
12700	1280	TYPE 8002
12800		TYPE 1113
12900		TYPE 118
13000		TYPE 1114
13100		TYPE 8002
13200		GO TO 1112
13300	118	FORMAT(' TO DSK=1, TTY=2, BOTH=0, LPT=22, PROOF=3, DEBUG=4'/)
13400	CC***  TEMPORARY ***8002	FORMAT(' TYPE FILE NAME'/)
13500	8002	FORMAT(' TYPE FILE NAME--  '$)
13600	1113	FORMAT('     NAME  TF  AMPFAC  OMIT"  DUR"'/)
13700	1114	FORMAT(' N1, N2=RAN NUM, N3=0 LISTS INPUT, N4=SINGLE INST.'/
13800		1 ' IF -- N1=3 DURS ONLY, =4 V ARRAY'/
13900		1 3X' 27 INSTRUMENTS ARE AVAILABLE'/)
14000	
14100	3128	IF(K.NE.IBLA)IFLNM=K
14200		CALL IFILE(1,IFLNM)
14300		READ(1,300)LN,IXIN
14400	C  CHECK FOR LINE NUMBERS ONLY.
14500		REWIND 1
14600		CALL IFILE(1,IFLNM)
14700	
14800	3127	ISLAC=(IFLNM.AND."003777777777).OR."550000000000
14900	C MAGIC TO CHANGE LFT. LETTER TO Z(INP. ABCDE BECOMES ZBCDE.DAT)
15000	5127	TYPE 118
15100		IF(DURX.EQ.0)DURX=19999.
15200		IXIN=1
15300		INONLY=-1
15400		ACCEPT 300,MX,X,Y,Z
15500		IF(MX.NE.99)GO TO 6127
15600		TYPE FINM
15700		ACCEPT 8001,ISLAC
15800		GO TO 5127
15900	6127	IF(Z.NE.0)INONLY=Z
16000		IF(X.NE.0)IXIN=X
16100	C   MX=3 GIVES DURS ONLY
16200	C  TO SUPPRESS LIST OF INPUT DATA, TYPE ANY 3RD NUM. (BUT 9.)
16300	C  (1 1 1 =RECORD,RAN. NUM=1,SUPPRESS INPUT.)
16400		MZ=0
16500		JOUT=5
16600	C  5=OUTPUT TO TTY
16700		SOS=-1.
16800		IF(Y.NE.0)SOS=0  
16900	C  IF 3RD NUM=0, EDIT FILE WILL PRINT AS IT IS READ.
17000		IF(MX.NE.22)GO TO 2107
17100	CC	JOUT=3
17200	C DIRECT TO LPT AT COLGATE 6/74
17300		JOUT=22
17400		REWIND 22
17500	2107	IF(MX.LE.1)MX=MX-2
17600		IF(MX.EQ.-2)GO TO 77
17700		IF(MX.EQ.2)GO TO 77
17800		IF(MX.NE.22)GO TO 177
17900	77	MZ=-1
18000	177	IF(MX.EQ.4)MZ=-4
18100	      CALL READIT
18200	      END