Class
midi-time-signatureA MIDI time signature event.
midi-time-signature supports the following
slot initializations:
:time number:numerator integer:denominator integer:clocks integer:32nds integer;; The midi-time-signature event. ;;; 4/4 with metronome click every quarter note (new midi-time-signature :numerator 4 :denominator 4 :clocks 24) ;;; 6/8 with metronome click every dotted quarter note (new midi-time-signature :numerator 6 :denominator 8 :clocks 36) ;; Generating time and key signatures. (define major (new mode :degrees '(c d e f g a b c))) (define (gen-measures mea tempo ) ;; generate measures, each with own time and key signatures (let ((tonics (new heap :of '((c 0) (cs 7) (d 2) (ef -3) (e 4) (f -1) (fs 6) (g 1))))) (process with rhy = (rhythm 'e tempo) repeat mea for bpm = (pick 2 3 4 5) ; beats in measure for ton = (next tonics) ; keysig info do (transpose major (first ton)) ; shift mode output (new midi-key-signature :time (now) :key (second ton)) output (new midi-time-signature :time (now) :numerator bpm :denominator 4) each k = (between 28 42) ; modal keynums 48-72 as i below (1- (* bpm 2)) output (new midi :time (+ (now) (* rhy i)) :keynum (keynum k :in major) :duration rhy) wait (* rhy bpm)))) (events (gen-measures 8 120) "test.mid") ⇒ "test.mid" (midi-file-print "test.mid")