home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-03 | 9.8 KB | 379 lines | [04] ASCII Text (0x0000) |
- ( ERIC'S VERSION OF MASC )
- ( META LANGUAGE FOR ADAPTIVE SYTHESIS )
-
- : DECIMAL DEC ;
- : 2@ DUP 2+ @ OVER @ ROT DROP ;
-
- ( PASSPT APPLE INTERFACE OUT)
-
- HEX
- C0A8 CONSTANT CTRL
-
- CTRL 1+ CONSTANT DATA
-
- VARIABLE FIRSTTIME 1 FIRSTTIME !
-
- : INIT 13 CTRL C! 11 CTRL C! 0 FIRSTTIME ! ;
-
- : ?XMIT ( -- TDRE ) CTRL C@ 2 AND ;
-
- DECIMAL
- VARIABLE %TO 0 %TO !
-
- : TO 1 %TO ! ;
-
- : FROM/TO
- %TO @ IF ! 0 %TO ! ELSE @ THEN ;
- : PARAMETER ( N -- NAME )
- CREATE , DOES> FROM/TO ;
-
- : PARAMETERS ( SIZE -- NAME )
- CREATE DUP , 0 DO 0 , LOOP
- DOES> SWAP 2* + 2+ FROM/TO ;
-
- : <BUILDS 0 CONSTANT ;
- 0 PARAMETER DEBUGGING
- 0 PARAMETER SEQUENCING
- 0 PARAMETER NEEDZERODLY
- 0 PARAMETER PREVSTAT
-
- : MSND
- DEBUGGING IF HEX . DEC ELSE
- SEQUENCING IF
- NEEDZERODLY IF
- 0 C, 0 TO NEEDZERODLY
- THEN
- DUP 127 > OVER 240 < AND IF
- DUP PREVSTAT = IF ( CHECK FOR RUNNING STS )
- ELSE
- DUP TO PREVSTAT C,
- THEN
- ELSE
- C,
- THEN
- ELSE
- FIRSTTIME @ IF INIT THEN
- BEGIN ?XMIT UNTIL DATA C!
- THEN
- THEN
- ;
-
- VARIABLE JOYX 0 JOYX !
- VARIABLE JOYY 0 JOYY !
-
- HEX
- CODE JOY
- XSAVE STX,
- 0 # LDX, 0 # LDY, 80 # LDA, SEC,
- C070 BIT, C064 BIT, 10 C, 03 C, INX, D0 C, 02 C,
- NOP, NOP, C065 BIT, 10 C, 03 C, INY, D0 C, 02 C,
- NOP, NOP, 1 # SBC, B0 C, E8 C,
- ' JOYX STX, ' JOYY STY,
- XSAVE LDX, NEXT JMP,
- END-CODE
- DEC
-
- HEX
- 40 PARAMETER VEL ( KEY VELOCITY)
- 0 PARAMETER CHANNEL
-
- : VOL ( NUM -- ) TO VEL ;
-
- : CHNL ( NUM --) TO CHANNEL ;
-
- : END-INST
- 1 TO NEEDZERODLY ;
-
- : ON ( KEY -- ) 90 CHANNEL 0F AND
- + MSND MSND VEL MSND END-INST ;
-
- : OFF ( KEY -- ) 90 CHANNEL 0F AND
- + MSND MSND 0 MSND END-INST ;
-
-
- : CTRL-CHG ( VALUE CTRL-NUMBER -- )
- CHANNEL 0F AND B0 + MSND MSND MSND END-INST ;
-
- : RESETCTRLS 0 79 CTRL-CHG ;
-
- 0 PARAMETER VARIATION
-
- : VAR ( VARIATION# -- )
- TO VARIATION ;
-
- : PGM ( PROGRAM -- )
- VARIATION 0 CTRL-CHG 0 32 CTRL-CHG
- C0 CHANNEL 0F AND + MSND 1 - MSND END-INST ;
-
- : AFTERTOUCH ( KEY VALUE -- )
- CHANNEL 0F AND A0 + MSND SWAP MSND MSND END-INST ;
-
- : PRESSURE ( VALUE )
- CHANNEL 0F AND D0 + MSND MSND END-INST ;
-
- : BEND ( -8192 THRU +8191 )
- CHANNEL 0F AND E0 + MSND
- DUP 80 MOD MSND 80 / MSND END-INST ;
-
- ( CONTROLLERS )
- HEX
-
- : DAMPER ( 0..7 -- )
- 0 MAX 7 MIN 10 * 40 CTRL-CHG ;
-
- : SOST ( 1=ON 0=OFF -- )
- 0 MAX 1 MIN 40 * 42 CTRL-CHG ;
-
- : SOFT ( 1=ON 0=OFF -- )
- 0 MAX 1 MIN 40 * 43 CTRL-CHG ;
- : MODWHEEL ( 0-127 ) 7F AND 1 CTRL-CHG ;
-
- : VOLUME ( 0-127 ) 7F AND 7 CTRL-CHG ;
-
- : EXPRESSION ( 0-127 ) 7F AND 0B CTRL-CHG ;
-
- : PORTAMENTO ( 0-127 ) 7F AND 41 CTRL-CHG ;
-
- : PANPOT ( 0-40-7F = LEFT,CENTER,RIGHT ) 7F AND 0A CTRL-CHG ;
-
- : PORTATIME ( 0-127 ) 7F AND 5 CTRL-CHG ;
-
- : REVERB ( 0-127 ) 7F AND 5B CTRL-CHG ;
-
- : CHORUS ( 0-127 ) 7F AND 5D CTRL-CHG ;
-
-
- DECIMAL
-
- : >DLY< 10 0 DO LOOP ;
-
- : DELAY ( INTEGER -- )
- SEQUENCING IF
-
- 0 TO NEEDZERODLY
- DUP 127 > IF
- DUP 128 / 128 + C,
- THEN
- 128 MOD C,
-
- ELSE
- 0 DO >DLY< LOOP
- THEN
- ;
-
- 10 PARAMETER MGATE
-
- : // MGATE DELAY ;
-
- : KK ( KEY -- )
- DUP ON // OFF ;
-
- : CD+ ( NUM -- )
- 0 DO I PICK ON LOOP ;
-
- : CD- ( NUM -- )
- 0 DO I PICK OFF LOOP ;
-
- HEX
-
- : SHUTUP ( CHNL -- ) ( TURNS ALL SOUNDS OFF FOR CHANNEL )
- B0 + MSND 78 MSND 00 MSND END-INST ;
-
- : QUIET
- CHANNEL SHUTUP ;
-
- : PANIC ( -- )
- 10 0 DO I SHUTUP LOOP ;
-
-
- 4 PARAMETER OCTAVE
-
- : OCT ( N -- ) TO OCTAVE ;
- : O+ ( -- ) OCTAVE 1+ TO OCTAVE ;
- : O- ( -- ) OCTAVE 1 - TO OCTAVE ;
-
- DECIMAL
- : PITCH ( NAME -- ) CREATE ,
- DOES> @ OCTAVE 12 * + 12 + ;
-
- 0 PITCH B# 0 PITCH C
- 1 PITCH C# 1 PITCH D&
- 2 PITCH D
- 3 PITCH D# 3 PITCH E&
- 4 PITCH E 4 PITCH F&
- 5 PITCH F 5 PITCH E#
- 6 PITCH F# 6 PITCH G&
- 7 PITCH G
- 8 PITCH G# 8 PITCH A&
- 9 PITCH A
- 10 PITCH A# 10 PITCH B&
- 11 PITCH B 11 PITCH C&
-
- 1200 PARAMETER TEMPO
-
- : DURATION CREATE , , DOES>
- TEMPO SWAP 2@ */ TO MGATE ;
- 2 1 DURATION BN 4 3 DURATION BN3
- 1 1 DURATION WN 2 3 DURATION WN3
- 1 2 DURATION HN 1 3 DURATION HN3
- 1 4 DURATION QN 1 6 DURATION QN3
- 1 8 DURATION EN 1 12 DURATION EN3
- 1 16 DURATION SN 1 24 DURATION SN3
- 1 32 DURATION TN 1 48 DURATION TN3
- 1 64 DURATION GN 1 96 DURATION GN3
-
- 3 2 DURATION WN.
- 3 4 DURATION HN.
- 3 8 DURATION QN.
- 3 16 DURATION EN.
- 3 32 DURATION SN.
- 3 64 DURATION TN.
-
- 1 80 DURATION GN5
- 1 40 DURATION TN5
- 1 20 DURATION SN5
- 1 10 DURATION EN5
- 1 5 DURATION QN5
- 2 5 DURATION HN5
- 4 5 DURATION WN5
- 8 5 DURATION BN5
-
- 0 PARAMETER TIEVAL
-
- : <TIE
- 0 TO TIEVAL ;
-
- : &
- MGATE TIEVAL + TO TIEVAL ;
-
- : TIE>
- & TIEVAL TO MGATE ;
-
- ( GRACE NOTES - SUBTRACTION WITHIN A TIE )
- ( EX: 3 C GN // 3 D HN GN- // )
-
- : GN-
- MGATE GN MGATE - TO MGATE
- ;
-
-
- : CD ( KEYS NUM -- ) ( PLAY A CHORD )
- DUP 0 DO I 2 + PICK ON LOOP
- MGATE DELAY 0 DO OFF LOOP ;
-
- 0 PARAMETER ROOT 0 PARAMETER 3RD 0 PARAMETER 5TH
-
- : QUALITY ( N1 N2 N3 -- ) ( KEY -- )
- CREATE C, C, C, DOES> OVER OVER
- C@ + TO 5TH OVER OVER 1+ C@ +
- TO 3RD 2 + C@ + TO ROOT ;
-
- 0 4 7 QUALITY MAJR 0 3 6 QUALITY DIM
- 0 3 7 QUALITY MINR 0 6 9 QUALITY DIM7
- 0 4 10 QUALITY 7TH 0 3 8 QUALITY AUG
- 0 3 10 QUALITY MIN7 0 4 9 QUALITY 6TH
- 0 4 11 QUALITY MAJ7 0 3 9 QUALITY MIN6
- 0 3 11 QUALITY MM7 0 5 7 QUALITY SUS4
-
- ( DRUM SOUNDS: CHANNEL 9=STANDARD, CHANNEL 10=CM64/32 )
-
- DECIMAL
-
- : DRUM
- CREATE C, DOES> C@ 9 TO CHANNEL DUP ON OFF ;
-
- 27 DRUM HIGHQ 28 DRUM SLAP 29 DRUM PUSH
- 30 DRUM PULL 31 DRUM STICK 32 DRUM CLICK
- 33 DRUM METRO 34 DRUM BELL
-
- 37 DRUM SIDE 39 DRUM CLAP
- 35 DRUM KICK2 36 DRUM KICK1
- 40 DRUM SNARE2 38 DRUM SNARE1
-
- 41 DRUM LOTOM2 43 DRUM LOTOM1
- 45 DRUM MIDTOM2 47 DRUM MIDTOM1
- 48 DRUM HITOM2 50 DRUM HITOM1
-
- 42 DRUM HIHATC 44 DRUM HIHATP 46 DRUM HIHATO
-
- 49 DRUM CRASH1 57 DRUM CRASH2 55 DRUM SPLASH
- 51 DRUM RIDE1 59 DRUM RIDE2 53 DRUM RIDEBELL
- 52 DRUM CHINESE 54 DRUM TAMBOURINE
- 56 DRUM COWBELL 58 DRUM VIBRA
-
- 60 DRUM BONGOH 61 DRUM BONGOL
- 62 DRUM CONGAHM 63 DRUM CONGAHO 64 DRUM CONGAL
- 65 DRUM TIMBALEH 66 DRUM TIMBALEL
- 67 DRUM AGOGOH 68 DRUM AGOGOL 69 DRUM CASABA
- 70 DRUM MARACAS 71 DRUM WHISTLEH 72 DRUM WHISTLEL
- 73 DRUM GUIROS 74 DRUM GUIROL 75 DRUM CLAVES
- 76 DRUM WOODH 77 DRUM WOODL
- 78 DRUM CUICAM 79 DRUM CUICAO 80 DRUM TRIANGLEM
- 81 DRUM TRIANGLEO 82 DRUM SHAKER 83 DRUM JINGLE
- 84 DRUM BELLTREE 85 DRUM CASTANET
- 86 DRUM SURDOM 87 DRUM SURDOO
-
-
- 0 PARAMETER STOPFLAG
-
- : SFX
- CREATE C, DOES>
- STOPFLAG IF C@ 10 TO CHANNEL OFF 0 TO STOPFLAG
- ELSE C@ 10 TO CHANNEL ON
- THEN ;
-
- : STOP ( EX: STOP RAIN )
- 1 TO STOPFLAG ;
-
- 76 SFX LAUGH 77 SFX SCREAM 78 SFX PUNCH
- 79 SFX HEART 80 SFX FOOT1 81 SFX FOOT2
- 82 SFX APPLAUSE 83 SFX CREAK 84 SFX DOOR
- 85 SFX SCRATCH 86 SFX WINDCHIME 87 SFX ENGINE
- 88 SFX CARSTOP 89 SFX CARPASS 90 SFX CARCRASH
- 91 SFX SIREN 92 SFX TRAIN 93 SFX JET
- 94 SFX HELI 95 SFX STARSHIP 96 SFX GUN
- 97 SFX MACHGUN 98 SFX LASER 99 SFX EXPLOSION
- 100 SFX DOG 101 SFX HORSE 102 SFX BIRDS
- 103 SFX RAIN 104 SFX THUNDER 105 SFX WIND
- 106 SFX WAVES 107 SFX STREAM 108 SFX BUBBLE
-
- ( RHYTHM WORDS )
-
- : INTRO
- STICK QN //
- STICK QN //
- STICK QN //
- STICK QN // ;
-
- : BAR INTRO ;
-
- : BARS 0 DO BAR LOOP ;
-
- ( USE RHYTHM FOR INTERACTIVE MODE )
- : RHYTHM ( <NEW-RHYTHM-WORD> )
- [ ' BAR ] LITERAL FIND
- OVER !
- [ FIND EXIT ] LITERAL SWAP 2+ ! ;
-
- ( USE RHY= INSIDE COLON DEFINITIONS )
- : RHY=
- [ ' BAR ] LITERAL FIND ( ON STK: BAR'S-PFA, NEW-WORD'S-CFA )
- [COMPILE] LITERAL [COMPILE] LITERAL COMPILE !
- ; IMMEDIATE
-
- : MARCH
- KICK1 QN // SNARE1 EN // SNARE1 EN //
- KICK1 QN // SNARE1 QN //
- ;
-
- : RHYTEST
- 1000 TO TEMPO
- RHY= INTRO BAR
- RHY= MARCH 4 BARS
- RHY= INTRO BAR
- APPLAUSE
- RHY= MARCH 4 BARS
- WN //
- STOP APPLAUSE
- ;
-