Skip to content

Instantly share code, notes, and snippets.

@codybartfast
Last active July 8, 2019 18:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codybartfast/3d6a6897fc1ad568dd134f70c3cbd8a2 to your computer and use it in GitHub Desktop.
Save codybartfast/3d6a6897fc1ad568dd134f70c3cbd8a2 to your computer and use it in GitHub Desktop.
#lang racket
;; an infinite stream of recurring notes
(define notes (list 'c 'cs 'd 'ds 'e 'f 'fs 'g 'gs 'a 'as 'b))
(define (repeat items)
(for*/stream ([_ (in-naturals 1)]
[item items])
item))
(define note-stream (repeat notes))
;; pick a random modifier
(define modifiers (vector "" "'" ","))
(define (pick-modifier)
(vector-ref modifiers (random (vector-length modifiers))))
;; convert a single note to a string and add ranom modifier
(define (modify note)
(string-append (symbol->string note) (pick-modifier)))
;; infinite stream of modified notes
(define modified-notes (stream-map modify note-stream))
;; finite list of modified notes
(define composition (stream->list (stream-take modified-notes 512)))
;; join notes into a single string
(define score (string-join composition " "))
;; publish it
(display score)
; SAMPLE OUTPUT
; =============
#|
c, cs d' ds e, f fs' g' gs, a' as, b' c, cs d' ds' e f, fs' g' gs, a as' b,
c cs d' ds, e' f fs, g gs' a' as' b c' cs, d ds' e, f, fs g, gs, a, as, b,
c' cs d' ds' e' f' fs' g' gs' a, as, b c, cs' d, ds e f' fs g gs, a as b' c'
cs, d ds' e' f fs g, gs' a as, b, c cs, d ds e f fs g' gs, a' as' b, c' cs'
d ds' e, f fs, g gs' a as b, c cs, d, ds, e f, fs' g gs a as, b c, cs, d' ds
e f, fs' g' gs' a' as b c' cs, d ds' e' f' fs g' gs' a' as, b, c cs' d' ds'
e f' fs g' gs' a as b, c cs, d ds' e f fs, g, gs, a' as b c' cs d ds' e f,
fs, g' gs a, as, b' c' cs d ds' e f fs g gs' a as' b' c cs' d ds, e' f, fs g
gs, a' as b c cs, d ds' e, f, fs, g' gs' a as, b c cs' d ds' e f fs g' gs,
a, as, b c cs, d, ds e f fs g' gs' a as' b, c' cs d, ds' e, f, fs' g, gs a
as b' c, cs' d ds' e f, fs, g, gs' a' as' b, c' cs' d ds' e, f, fs' g' gs, a
as' b, c' cs' d, ds e f' fs, g gs' a' as' b' c cs' d' ds, e f fs, g gs a as,
b, c cs d ds e f fs' g' gs a' as' b c cs, d ds, e' f fs g' gs' a as' b c,
cs' d, ds' e f, fs' g gs, a' as b' c' cs, d, ds' e f' fs' g gs' a, as' b' c
cs d ds, e, f, fs' g, gs a, as b, c, cs, d ds' e' f' fs' g, gs, a, as' b c,
cs' d' ds e, f, fs' g gs a, as b' c' cs d ds e, f, fs g, gs, a as b' c cs'
d, ds, e, f fs' g gs a' as' b, c, cs d ds, e' f, fs' g' gs, a' as b' c cs'
d, ds e' f, fs g' gs, a' as b c, cs d' ds' e f fs g, gs a' as, b' c' cs' d,
ds' e f fs' g gs' a' as, b c' cs' d ds, e, f' fs' g gs, a, as b c' cs d, ds,
e' f, fs, g, gs' a' as' b c cs' d' ds' e, f' fs, g, gs' a, as b' c, cs, d,
ds e, f fs g' gs a' as' b, c, cs' d' ds, e, f fs g
|#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment