Tag Archives: nokia

Apropos the symposium decision to make some short…

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))