3.1.2. Realisation

Mit Hilfe von etwas Lisp Code

;;;
;;; Pierre Boulez: Structures Ia:
;;;
;;; Die pitch-classes der Zwölftonreihe im Original und Umkehrung
;;; (0=c, 1=cis, 2=d, ... 11=h):

(defparameter *original*  '(3 2 9  8  7 6 4 1 0 10 5 11))
(defparameter *umkehrung* '(3 4 9 10 11 0 2 5 6  8 1  7))

;;; Structures 1a, Piano 1 Seite 1:

(sprout
 (process
   with timescale = 0.1
   for pitch-class in *original*
   for oktave in '(8 5 5 2 3 6 7 6 3 1 4 3)
   for rhythm in '(12 11 9 10 3 6 7 1 2 8 4 5)
   output (new midi
            :keynum (+ (* oktave 12) pitch-class)
            :duration (* timescale rhythm)
            :amplitude 1.0)
   wait (* timescale rhythm)))

;;; Verkapselung durch Definition als Funktion:

(defun pno1-1a ()
  (process
    with timescale = 0.125
    for pitch-class in *original*
    for oktave in '(8 5 5 2 3 6 7 6 3 1 4 3)
    for rhythm in '(12 11 9 10 3 6 7 1 2 8 4 5)
    output (new midi
             :keynum (+ (* oktave 12) pitch-class)
             :duration (* timescale rhythm)
             :amplitude 1.0
             :channel 0)
    wait (* timescale rhythm)))

;; spielen:

(sprout (pno1-1a))

;;; Piano 2 Seite 1:

(defun pno2-1a ()
  (process
    with timescale = 0.125
    for pitch-class in *umkehrung*
    for oktave in '(8 3 5 1 3 7 5 4 6 2 6 8)
    for rhythm in '(5 8 6 4 3 9 2 1 7 11 10 12)
    output (new midi
             :keynum (+ (* oktave 12) pitch-class)
             :duration (* timescale rhythm)
             :amplitude 0.6
             :channel 1)
    wait (* timescale rhythm)))

;; spielen:

(sprout (pno2-1a))

;; Beide zusammen spielen:

(progn
  (sprout (pno1-1a))
  (sprout (pno2-1a)))

;; Für Fortgeschrittene: Besser wäre es, das Ganze als Prozess zu
;; definieren. Dafür muss aber vor den Funktionsnamen die Zeichenfolge
;; "#'" geschrieben werden und die Funktion muss mit der Funktion
;; "funcall" aufgerufen werden:

(sprout
 (process
   for fn in (list #'pno1-1a #'pno2-1a)
   sprout (funcall fn)
   wait 0))

results matching ""

    No results matching ""