Apropos the symposium decision to make some short examples—perhaps first of all, of slippery chicken stuff without a call to make-slippery-chicken—here’s some Nokia fun to make being on a busy train on a Friday night seem positively calm:
;;; the nokia tune (let* ((motif '(e e q q)) (rhythms (append (loop repeat 3 append motif) '(h.))) (notes '(e6 d fs5 gs cs6 b5 d e b a cs e a)) (events (loop for r in rhythms and n in notes collect (make-event n r)))) (events-update-time events) (event-list-to-midi-file events :start-tempo 150)) ;;; the nokia tune after 5 cans of red bull (let* ((motif '(e e q q)) (rhythms (append (loop repeat 3 append motif) '(q.))) (notes '(e6 d fs5 gs cs6 b5 d e b a cs e a)) (events (loop repeat 20 appending (loop for r in rhythms and n in notes collect (make-event n r)))) (events+ '())) (loop for e in events and i from 0 do (push e events+) (when (and (not (zerop i)) (zerop (mod i 11))) (loop repeat 9 do (push (make-event (data (pitch-or-chord e)) 's) events+)))) (setf events+ (reverse events+)) (events-update-time events+) (event-list-to-midi-file events+ :start-tempo 450)) ;;; same red bull but getting more nervous as the night goes on (let* ((motif '(e e q q)) (rhythms (append (loop repeat 3 append motif) '(q.))) (notes '(e6 d fs5 gs cs6 b5 d e b a cs e a)) (events (loop repeat 20 appending (loop for r in rhythms and n in notes collect (make-event n r)))) (events+ '())) (loop for e in events and i from 0 do (push e events+) (when (and (not (zerop i)) (zerop (mod i 37))) (loop repeat (* 5 (floor i 13)) do (push (make-event (data (pitch-or-chord e)) 's) events+)))) (setf events+ (reverse events+)) (events-update-time events+) (event-list-to-midi-file events+ :start-tempo 450))