home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / FORTH / MASCTEXT.WRD < prev    next >
Encoding:
Text File  |  1991-03-31  |  9.2 KB  |  251 lines  |  [04] ASCII Text (0x0000)

  1. ( MASC - META LANGUAGE FOR ADAPTIVE SYTHESIS )
  2.  
  3. VOCABULARY MASC MASC DEFINITIONS
  4.  
  5. : DECIMAL DEC ;
  6. : 2@ DUP 2+ @ OVER @ ROT DROP ;
  7.  
  8.                                               
  9. ( PASSPT APPLE INTERFACE OUT)    
  10.  
  11. HEX                                           
  12. C0A8 CONSTANT CTRL               
  13.                                               
  14. CTRL 1+ CONSTANT DATA            
  15.                                                
  16. 11 CONSTANT MODE                 
  17.                                                                               
  18.        
  19. : ?XMIT  CTRL C@ 2 AND ;                                                 
  20.                                                
  21. : INIT   3 CTRL C! MODE CTRL C! ;
  22.                                                
  23. : MSND  BEGIN ?XMIT UNTIL DATA C! ;                                                  
  24. DECIMAL                                                                  
  25.                                                                                 
  26.                                                                                 
  27.                             
  28. ( MASC DATA STRUCTURES 1)  
  29. DECIMAL                
  30.                               
  31. ( FORTH DEFINITIONS )
  32. ( REMOVED ABOVE LINE SO DEFINITIONS GO INTO "MASC") 
  33.                               
  34. VARIABLE %TO      0 %TO !
  35.  
  36.                               
  37. : TO   1 %TO ! ;     
  38.  
  39. : OCTAL 8 BASE ! ;           
  40.                               
  41. : FROM/TO   
  42.    %TO @ IF ! 0 %TO ! ELSE @ THEN ;                                                           
  43.                               
  44. : PARAMETER  ( N -- NAME )                  
  45.    CREATE , DOES> FROM/TO ;            
  46.  
  47.  
  48. : PARAMETERS   ( SIZE -- NAME )            
  49.    CREATE DUP , 0 DO 0 , LOOP                
  50.    DOES> SWAP 2* + 2+ FROM/TO ;
  51.  
  52. : <BUILDS 0 CONSTANT ;
  53.  
  54.  
  55.  
  56. ( MASC --- RNDS/DELAYS )     DECIMAL                                 
  57.                                                                              
  58.            
  59. VARIABLE SEED     HERE SEED !
  60.                                                    
  61. : RANDOM   SEED @ 31421 * 6927 +                   
  62.    DUP SEED ! ;                                              
  63.                                                    
  64. : CHOOSE   RANDOM U* SWAP DROP ;                                               
  65. : RND   SWAP OVER - 1+ CHOOSE + ;                                                                            
  66.                                                    
  67. : >DLY<    10 0 DO LOOP  ;   
  68.                                                    
  69. : DELAY  0 DO >DLY< LOOP ;   
  70.                                                                                 
  71.                                                                                 
  72.                                                                           
  73.  
  74. ( KEY-STATUS WORDS )  HEX           
  75.  
  76. 40 PARAMETER VEL   ( KEY VELOCITY)      
  77. 0 PARAMETER CHANNEL                     
  78.  
  79. : VOL ( NUM -- ) TO VEL ;               
  80.  
  81. : CHNL ( NUM --) TO CHANNEL ;           
  82.  
  83. : DOWN  ( KEY -- )  90 CHANNEL 0F AND      
  84.        + MSND MSND VEL MSND ;        
  85.  
  86. : UP ( KEY -- )  80 CHANNEL 0F AND         
  87.        + MSND MSND 0 MSND ;          
  88.  
  89. : PROG-CHG ( PROGRAM -- )   C0 CHANNEL     
  90.    0F AND + MSND 1 - MSND ;        
  91.  
  92.  
  93. 10 PARAMETER MGATE                   
  94.    
  95. : WAIT MGATE DELAY ;                    
  96.  
  97. : KK  ( KEY -- )                           
  98.    DUP DOWN WAIT UP ;
  99.                                                            
  100. : CD+ ( NUM -- ) 
  101.    0 DO I PICK DOWN LOOP ;
  102.                
  103. : CD- ( NUM -- ) 
  104.    0 DO I PICK UP LOOP ;               
  105.  
  106. : KLR ( -- )      
  107.    B0 MSND  7D MSND  00 MSND ;                
  108.    ( OMNI ON, ALL NOTES OFF)
  109.          
  110. DECIMAL                                    
  111.                                                             
  112.  
  113.  
  114. ( MIDI PITCH NAMES )        DECIMAL                                             : PITCH  ( OCT NAME -- )  CREATE ,       
  115.    DOES> @ SWAP 12 * + 24 + ;                             
  116.                        
  117. 0  PITCH B#   0  PITCH C                
  118. 1  PITCH C#   1  PITCH D&               
  119. 2  PITCH D                              
  120. 3  PITCH D#   3  PITCH E&               
  121. 4  PITCH E    4  PITCH F&               
  122. 5  PITCH F                             
  123. 6  PITCH F#   6  PITCH G& 
  124. 7  PITCH G            
  125. 8  PITCH G#   8  PITCH A&               
  126. 9  PITCH A             
  127. 10 PITCH A#   10 PITCH B&               
  128. 11 PITCH B    11 PITCH C&                                                                                                                     
  129.  
  130. ( MASC - DURATIONS )       DECIMAL                                                                             
  131.          
  132. 1500 PARAMETER TEMPO                                                   
  133.          
  134. : DURATION CREATE , , DOES>                        
  135.    TEMPO SWAP 2@ */ TO MGATE ;                                                                        
  136.           
  137. 1  1 DURATION WN                        
  138. 1  2 DURATION HN    1  3 DURATION HN3   
  139. 1  4 DURATION QN    1  6 DURATION QN3   
  140. 1  8 DURATION EN    1 12 DURATION EN3   
  141. 1 16 DURATION SN    1 24 DURATION SN3   
  142. 1 32 DURATION TSN   1 48 DURATION TN3                                                               
  143.           
  144. 3  4 DURATION HN.                       
  145. 3  8 DURATION QN.             
  146. 3 16 DURATION EN.                       
  147. 3 32 DURATION SN.             
  148.                                                                                 
  149.                                                                                 
  150.                                 
  151.  
  152. ( SYSTEM EXCLUSIVE MESSAGES )    HEX         
  153.                                    
  154. : YAMAHA      F0 MSND 43 MSND ;         
  155. : CLP-650     73 MSND 1A MSND ;         
  156. : EOX         F7 MSND ;                      
  157.                                    
  158. 00 CONSTANT NORMAL  00 CONSTANT OFF     
  159. 01 CONSTANT MELLOW  02 CONSTANT BRIGHT  
  160. 01 CONSTANT PEDAL   01 CONSTANT PAN     
  161. 02 CONSTANT ROOM    02 CONSTANT DETUNE  
  162. 03 CONSTANT HALL    03 CONSTANT DUAL    
  163. 04 CONSTANT COSMIC  04 CONSTANT TREMOLO                                        
  164. : BRILLIANCE ( QUALITY -- )                
  165.    YAMAHA CLP-650 11 MSND 0 MSND        
  166.    58 MSND MSND EOX ;                                                           
  167. : REVERB ( QUALITY -- )                    
  168.    YAMAHA CLP-650 11 MSND 0 MSND        
  169.    59 MSND MSND EOX ;                                                           
  170. : EFFECT ( QUALITY -- )                    
  171.    YAMAHA CLP-650 11 MSND 0 MSND        
  172.    5A MSND MSND EOX ;           
  173.  
  174. DECIMAL                                              
  175.                   
  176.  
  177. ( YAMAHA CLP-650 CONTROLS )  HEX                           
  178.                      
  179. : MULTI-TIM ( 1=ON 0=OFF -- )  
  180.    YAMAHA CLP-650 2
  181.    * 13 + MSND EOX ;  
  182.                        
  183. : CTRL-CHG ( VALUE CTRL-NUMBER -- )        
  184.    CHANNEL 0F AND B0 + MSND MSND MSND ;     
  185.                                                              
  186. : DAMPER ( 0..7 -- )                       
  187.    0 MAX 7 MIN 10 * 40 CTRL-CHG ;   
  188.                                                              
  189. : SOSTENUTO ( 1=ON 0=OFF -- )              
  190.    0 MAX 1 MIN 40 * 42 CTRL-CHG ;   
  191.                                                              
  192. : SOFTPEDAL ( 1=ON 0=OFF -- )              
  193.    0 MAX 1 MIN 40 * 43 CTRL-CHG ;   
  194.  
  195. DECIMAL                                                    
  196.                                                                                 
  197.     
  198.  
  199. ( CHORDS )                                                               
  200.        
  201. : CD ( KEYS  NUM -- )                      
  202. DUP 0 DO I 2 + PICK DOWN LOOP 
  203. MGATE DELAY 0 DO UP LOOP ;                                            
  204.        
  205. 0 PARAMETER ROOT  0 PARAMETER 3RD 0 PARAMETER 5TH                  
  206.                                                
  207. : QUALITY ( N1 N2 N3 -- ) ( KEY -- )       
  208. CREATE C, C, C, DOES> OVER OVER        
  209. C@ + TO 5TH OVER OVER 1+ C@ + 
  210. TO 3RD    2 + C@ + TO ROOT ;                                                    
  211.        
  212. 0 4 7  QUALITY MAJR  0 3 6 QUALITY DIM  
  213. 0 3 7  QUALITY MINR  0 6 9 QUALITY DIM7 
  214. 0 4 10 QUALITY 7TH   0 3 8 QUALITY AUG  
  215. 0 3 10 QUALITY MIN7  0 4 9 QUALITY 6TH  
  216. 0 4 11 QUALITY MAJ7  0 3 9 QUALITY MIN6 
  217. 0 3 11 QUALITY MM7   0 5 7 QUALITY SUS4                                                                          
  218. : O+ 12 + ; : O++ 24 + ; : O- 12 - ;                                     
  219.                                                                       
  220.  
  221. ( MISCELLANEOUS )
  222.  
  223. HEX                                     
  224. CODE WAITSOFT 
  225.  
  226. HERE 6 + JSR, NEXT          
  227. JMP,  BEGIN, BEGIN,                     
  228. BEGIN, C0A9 MEM LDA, F0 # AND,          
  229. B0 # CMP, 0= UNTIL,                     
  230. BEGIN, C0A8 MEM LDA, 01 # AND,          
  231. 0= NOT UNTIL,                           
  232. C0A9 MEM LDA, 43 # CMP, 0= UNTIL,       
  233. BEGIN, C0A8 MEM LDA, 01 # AND, 0= NOT   
  234. UNTIL, C0A9 MEM LDA, 40 # CMP,          
  235. CS NOT UNTIL,                           
  236. RTS,
  237.  
  238. END-CODE                                       
  239.                                  
  240. CODE GETNOTE
  241.                               
  242. ' WAITSOFT 6 + JSR,                     
  243. BEGIN, C0A9 MEM LDA, F0 # AND,          
  244. 90 # CMP, 0= UNTIL,                     
  245. BEGIN, C0A8 MEM LDA, 01 # AND,          
  246. 0= NOT UNTIL, C0A9 MEM LDA, DEX, DEX,   
  247. BOT STA, BOT 1+ STY,                  
  248. NEXT JMP, 
  249.  
  250. END-CODE                      
  251. DECIMAL