# gen-brownian-bridge

## Recommended Posts

something new...

greetings

andré

```;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; BROWNIAN BRIDGE -> could be use as a rnd-process from A to B (integers or pitches)
;;; if you have a look to example with ":all-gen t", you will see the process with all generations, how it works

;;; or take a look to:
;;; https://de.wikipedia.org/wiki/Wiener-Prozess#/media/File:BrownscheBewegung.png
;;; https://de.wikipedia.org/wiki/Brownsche_Brücke
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; SUB

(defun pick (a b &key (span 5))
(let ((rnd1 (car (rnd-number 1 (+ a span) (- a span))))
(rnd2  (car (rnd-number 1 (+ b span) (- b span))))
(n))
(progn
(setf n (car (rnd-number 1 rnd1 rnd2)))
(if (or (= n a) (= n b))
(+ (rnd-pick '(1 -1)) n)
n))))

;;; MAIN

;;; MAIN

(defun gen-brownian-bridge (n startend &key (all-gen nil) (output 'integer) (span 5))
(let ((seq))
(progn
(setf seq (append (list startend)
(loop repeat n
with liste = startend
do (setf liste (filter-repeat 1 (loop repeat (1- (length liste))
for cnt = 0 then (incf cnt)
append (append (list (nth cnt liste)
(pick (nth cnt liste)
(nth (1+ cnt) liste)
:span span)
(nth (1+ cnt) liste))))))
collect liste)))

(setf seq (if (equal all-gen t)
seq
(car (last seq))))
(if (equal output 'pitch)
(integer-to-pitch seq)
seq))))

;;; EXAMPLES

;; SPAN influence -> span 2
(list-plot (gen-brownian-bridge 5 '(50 23) :span 2 :all-gen t)
:zero-based t
:join-points t)

;; SPAN influence -> span 10
(list-plot (gen-brownian-bridge 5 '(50 23) :span 20 :all-gen t)
:zero-based t
:join-points t)

;;; SPAN default (5)
(list-plot (gen-brownian-bridge 5 '(50 23) :all-gen t)
:zero-based t
:join-points t)

(list-plot (gen-brownian-bridge 5 '(50 23))
:zero-based t
:join-points t)

(gen-brownian-bridge 5 '(50 23) :all-gen t :output 'pitch)
(gen-brownian-bridge 5 '(50 23) :output 'pitch)```

some sound-examples

```
;;; EXAMPLE with ALL GENS / seperated by rests

(def-score brownian-bridge
(:title "score title"
:key-signature 'atonal
:time-signature '(4 4)
:tempo 72)

(instrument
:omn (make-omn :pitch (setf n (gen-brownian-bridge 5 '(30 10) :all-gen t :output 'pitch))
:length (loop
for i in n
append (list '-1/4 (loop repeat (length i)
append '(t))))
:span :pitch)
:channel 1
:sound 'gm
:program 'acoustic-grand-piano))

;;; EXAMPLE with LAST GEN -> rnd-evaluations => rnd-ways from a to b

(def-score brownian-bridge
(:title "score title"
:key-signature 'atonal
:time-signature '(4 4)
:tempo 72)

(instrument
:omn (make-omn :pitch (gen-brownian-bridge (car (rnd-number 1 2 7)) '(30 10) :output 'pitch)
:length '(t)
:span :pitch)
:channel 1
:sound 'gm
:program 'acoustic-grand-piano))```

two examples with different SPAN on MESSIEAN's mode5 mapped with <tonality-map>

```
;;; on MESSIAENS- mode5 - > 8 cycles + SPAN 10 => bigger intervals/steps

(def-score brownian-bridge
(:title "score title"
:key-signature 'atonal
:time-signature '(4 4)
:tempo 90)

(instrument
:omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'fs3)
(integer-to-pitch (gen-brownian-bridge 8 '(10 27) :span 10 :all-gen t))))
:length (loop
for i in n
append (list '-1/4 (loop repeat (length i)
append '(t))))
:span :pitch)
:channel 1
:sound 'gm
:program 'acoustic-grand-piano))

;;; on MESSIAENS- mode5 - > 8 cycles + SPAN 3 => smaller intervals/steps

(def-score brownian-bridge
(:title "score title"
:key-signature 'atonal
:time-signature '(4 4)
:tempo 90)

(instrument
:omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'fs3)
(integer-to-pitch (gen-brownian-bridge 8 '(10 27) :span 3 :all-gen t))))
:length (loop
for i in n
append (list '-1/4 (loop repeat (length i)
append '(t))))
:span :pitch)
:channel 1
:sound 'gm
:program 'acoustic-grand-piano))

```

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
• #### Browser

• Video Gallery

• Lessons