home *** CD-ROM | disk | FTP | other *** search
- ;;; STRUMKEY.CAL
- ;;; BY MARTY SCHOR
- ;;; BUILDS ANY OF 8* CHORD TYPES ON ROOT WITH A VARIABLE "STRUM" DELAY
- ;;; BETWEEN THE CHORD TONES TO SIMULATE A GUITAR STRUM. A KEYBOARD CHORD
- ;;; IS ACHIEVED BY SELECTING A VERY SMALL DELAY OR NONE AT ALL.
- ;;; (* MORE CHORDS CAN EASILY BE ADDED PATTERNED AFTER THE 8 INCLUDED.)
- ;;;
- ;;;WHEN THE PROGRAM IS STARTED:
- ;;; A) USER IS ASKED TO SELECT REGION.
- ;;;
- ;;; B) USER SELECTS ONE OF THE FOLLOWING CHORD TYPES:
- ;;; 1-MINOR 7th
- ;;; 2-DOMINANT 7th
- ;;; 3-MAJOR 7th
- ;;; 4-MINOR
- ;;; 5-MAJOR
- ;;; 6-MAJOR 6th
- ;;; 7-MINOR 6th
- ;;; 8-SUS 4
- ;;;
- ;;; C) USER SELECTS DELAY (IN "TICKS") BETWEEN CHORD TONES
- ;;; 1- FOR A GUITAR SOUND
- ;;; THE DESIRED DELAY DEPENDS ON THE TEMPO SINCE THE DELAY IS IN TICKS
- ;;; NOT ABSOLUTE TIME. A DEFAULT IS GIVEN AS 6 TICKS, WHICH WOULD BE
- ;;; 25 milliseconds @120BPM (ASSUMING 120ppq).THIS IS DERIVED AS FOLLOWS:
- ;;; #TICKS=(DELAY*PPQ*BPM)/(60 seconds/min)
- ;;;
- ;;; FOR 25ms @120BPM: # TICKS=(.025*120*120)/60 =6
- ;;;
- ;;; THUS THE USER HAS COMPLETE FLEXIBILITY DEPENDING ON THE TEMPO
- ;;; AND THE DESIRED EFFECT.
- ;;;
- ;;; 2-FOR A PIANO SOUND THE # OF TICKS SHOULE BE SET TO ZERO (0)
- ;;; OR A VERY SMALL VALUE DEPENDING ON THE TEMPO.
- ;;;
- ;;;
- ;;; NOTE:A MACRO IS SUPPLIED WHICH USES THE CAL DEBUGGER TO ALLOW "ITERATED"
- ;;; USE OF THIS CAL PROGRAM FOR MULTIPLE REGIONS BY SELECTING RUN AND THE
- ;;; NEXT REGION.THE MACRO IS CURRENTLY INVOKED BY {CONTROL S}.
- ;;; QUIT THE DEBUGGER WHEN THE ENTIRE PIECE IS COMPLETED.
- ; prolog
-
- (do
- (int chtype 1)
- (int d 6)
- (int x 0)
- (int y 0)
- (int z 0)
-
- (getTime From "FROM TIME:")
- (getTime Thru "THRU TIME:")
- (getInt chtype "1=m7,2=DOM7,3=M7,4=m,5=M,6=M6,7=m6,8=sus4" 1 8)
- (if (== 1 chtype)
- (do
- (= x 3)
- (= y 7)
- (= z 10)
- )
- NIL
- )
- (if (== 2 chtype)
- (do
- (= x 4)
- (= y 7)
- (= z 10)
- )
- NIL
- )
- (if (== 3 chtype)
- (do
- (= x 4)
- (= y 7)
- (= z 11)
- )
- NIL
- )
- (if (== 4 chtype)
- (do
- (= x 3)
- (= y 7)
- (= z 0)
- )
- NIL
- )
- (if (== 5 chtype)
- (do
- (= x 4)
- (= y 7)
- (= z 0)
- )
- NIL
- )
- (if (== 6 chtype)
- (do
- (= x 4)
- (= y 7)
- (= z 9)
- )
- NIL
- )
- (if (== 7 chtype)
- (do
- (= x 3)
- (= y 7)
- (= z 9)
- )
- NIL
- )
- (if (== 8 chtype)
- (do
- (= x 5)
- (= y 7)
- (= z 10)
- )
- NIL
- )
-
- (getInt d "DELAY BETWEEN 'STRINGS' IN TICKS" 0 480)
- (int a (* d 2))
- (int b (* d 3))
-
- )
-
- ; body
- (if (== Event.Kind NOTE)
- (do
- (insert (+ Event.Time d) Event.Chan NOTE (+ Note.Key x) Note.Vel Note.Dur)
- (insert (+ Event.Time a) Event.Chan NOTE (+ Note.Key y) Note.Vel Note.Dur)
- (insert (+ Event.Time b) Event.Chan NOTE (+ Note.Key z) Note.Vel Note.Dur)
- )
- NIL
- )
- ; epilog
- NIL
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-