home *** CD-ROM | disk | FTP | other *** search
/ PC Musician 2000 / PC_Musician_2000.iso / PCMUSIC / SEQUENCE / CAL_CONT / STRUMKEY.CAL < prev    next >
Encoding:
Text File  |  1991-08-21  |  3.0 KB  |  214 lines

  1. ;;; STRUMKEY.CAL
  2. ;;; BY MARTY SCHOR
  3. ;;; BUILDS ANY OF 8* CHORD TYPES ON ROOT WITH A VARIABLE "STRUM" DELAY
  4. ;;; BETWEEN THE CHORD TONES TO SIMULATE A GUITAR STRUM. A KEYBOARD CHORD
  5. ;;; IS ACHIEVED BY SELECTING A VERY SMALL DELAY OR NONE AT ALL.
  6. ;;; (* MORE CHORDS CAN EASILY BE ADDED PATTERNED AFTER THE 8 INCLUDED.)
  7. ;;;  
  8. ;;;WHEN THE PROGRAM IS STARTED:
  9. ;;; A) USER IS ASKED TO SELECT REGION.
  10. ;;;
  11. ;;; B) USER SELECTS ONE OF THE FOLLOWING CHORD TYPES:
  12. ;;; 1-MINOR 7th 
  13. ;;; 2-DOMINANT 7th
  14. ;;; 3-MAJOR 7th
  15. ;;; 4-MINOR
  16. ;;; 5-MAJOR
  17. ;;; 6-MAJOR 6th
  18. ;;; 7-MINOR 6th
  19. ;;; 8-SUS 4
  20. ;;;
  21. ;;; C) USER SELECTS DELAY (IN "TICKS") BETWEEN CHORD TONES 
  22. ;;;     1- FOR A GUITAR SOUND
  23. ;;;      THE DESIRED DELAY DEPENDS ON THE TEMPO SINCE THE DELAY IS IN TICKS
  24. ;;;      NOT ABSOLUTE TIME. A DEFAULT IS GIVEN AS 6 TICKS, WHICH WOULD BE
  25. ;;;  25 milliseconds @120BPM (ASSUMING 120ppq).THIS IS DERIVED AS FOLLOWS:
  26. ;;;          #TICKS=(DELAY*PPQ*BPM)/(60 seconds/min)
  27. ;;;
  28. ;;;       FOR 25ms @120BPM: # TICKS=(.025*120*120)/60 =6
  29. ;;;     
  30. ;;; THUS THE USER HAS COMPLETE FLEXIBILITY DEPENDING ON THE TEMPO
  31. ;;; AND THE DESIRED EFFECT.
  32. ;;;
  33. ;;; 2-FOR A PIANO SOUND THE # OF TICKS SHOULE BE SET TO ZERO (0)
  34. ;;;   OR A VERY SMALL VALUE DEPENDING ON THE TEMPO.
  35. ;;;
  36. ;;;
  37. ;;; NOTE:A MACRO IS SUPPLIED WHICH USES THE CAL DEBUGGER TO ALLOW "ITERATED"
  38. ;;; USE OF THIS CAL PROGRAM FOR MULTIPLE REGIONS BY SELECTING RUN AND THE
  39. ;;; NEXT REGION.THE MACRO IS CURRENTLY INVOKED BY {CONTROL S}.
  40. ;;; QUIT THE DEBUGGER WHEN THE ENTIRE PIECE IS COMPLETED.
  41. ; prolog
  42.  
  43. (do
  44.  (int chtype 1)
  45.  (int d 6)
  46.  (int x 0)
  47.  (int y 0)
  48.  (int z 0)
  49.  
  50.  (getTime From "FROM TIME:")
  51.  (getTime Thru "THRU TIME:")
  52.  (getInt chtype "1=m7,2=DOM7,3=M7,4=m,5=M,6=M6,7=m6,8=sus4" 1 8)
  53.  (if (== 1 chtype)
  54.   (do 
  55.      (= x 3)
  56.      (= y 7)
  57.      (= z 10)
  58.   )  
  59.   NIL
  60.  )
  61.  (if (== 2 chtype)
  62.   (do 
  63.      (= x 4)
  64.      (= y 7)
  65.      (= z 10)
  66.   )  
  67.   NIL
  68.  )
  69.  (if (== 3 chtype)
  70.   (do 
  71.      (= x 4)
  72.      (= y 7)
  73.      (= z 11)
  74.   )  
  75.   NIL
  76.  )
  77.  (if (== 4 chtype)
  78.   (do 
  79.      (= x 3)
  80.      (= y 7)
  81.      (= z 0)
  82.   )  
  83.   NIL
  84.  )
  85.  (if (== 5 chtype)
  86.   (do 
  87.      (= x 4)
  88.      (= y 7)
  89.      (= z 0)
  90.   )  
  91.   NIL
  92.  )
  93.  (if (== 6 chtype)
  94.   (do 
  95.      (= x 4)
  96.      (= y 7)
  97.      (= z 9)
  98.   )  
  99.   NIL
  100.  )
  101.  (if (== 7 chtype)
  102.   (do 
  103.      (= x 3)
  104.      (= y 7)
  105.      (= z 9)
  106.   )  
  107.   NIL
  108.  )
  109.  (if (== 8 chtype)
  110.   (do 
  111.      (= x 5)
  112.      (= y 7)
  113.      (= z 10)
  114.   )  
  115.   NIL
  116.  )
  117.  
  118.  (getInt d "DELAY BETWEEN 'STRINGS' IN TICKS"  0 480)
  119.  (int a (* d 2))
  120.  (int b (* d 3))
  121.  
  122. )
  123.  
  124. ; body
  125. (if (== Event.Kind NOTE)
  126.  (do
  127.   (insert (+ Event.Time d) Event.Chan NOTE (+ Note.Key  x) Note.Vel Note.Dur)
  128.   (insert (+ Event.Time a) Event.Chan NOTE (+ Note.Key  y) Note.Vel Note.Dur)
  129.   (insert (+ Event.Time b) Event.Chan NOTE (+ Note.Key  z) Note.Vel Note.Dur)
  130.  )
  131.  NIL
  132. )
  133. ; epilog
  134. NIL
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.