-
Notifications
You must be signed in to change notification settings - Fork 0
/
charles.xtm
125 lines (87 loc) · 3.29 KB
/
charles.xtm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
;; Charles' worksheet yay!
;; a worksheet file for charles for the Extempore hackday
;; - install Extempore
;;
;; http://benswift.me/2013-11-12-building-extempore-through-homebrew.html)
;; - get this pack of samples from my dropbox:
;;
;; https://dl.dropboxusercontent.com/u/18333720/extempore-hackday-samples.tar.gz
(sys:load "libs/xtm.xtm")
(sys:load "libs/core/instruments.xtm")
;; make sure you set the right paths!
(define *user-sample-dir* "/users/charles/Music/extempore-hackday-samples")
(load "/users/charles/src/extempore-hackday/sampler-maps.xtm")
(define-sampler kit sampler_note_hermite_c sampler_fx)
(define-sampler piano sampler_note_hermite_c sampler_fx)
(define-instrument synth synth_note_c synth_fx)
(sm-load-map kit *808-kit-map*)
(sm-load-map kit *NI-heavy-rock-kit-sample-map* 2)
(sm-load-map kit *SSO-percussion-sample-map* 1)
(sm-load-map piano *SSO-piano-sample-map*)
(bind-func dsp:[float,float,i64,i64,float*]*
(let ((osc (osc_mc_c 0.0))
(lpf (lpf_mc_c 2)))
(lambda (in time chan dat)
(kit in time chan dat)
(piano in time chan dat))))
(dsp:set! dsp)
(define drumloop)
(lambda (beat dur)
;;(println beat)
(if (= (modulo beat 1) 0)
(play kit *gm-kick* 140 dur))
(if (= (modulo beat 1/4) 0)
(play kit (cosr 45 9 1/7) 90 dur))
(play kit 48 (cosr 80 30 1/2) .1)
;;(play kit (cosr 45 9 1/7) (cosr 80 30 1/2) .1)
;;(play kit (cosr 59 9 1/9) (cosr 80 30 1/2) (* dur (random '(1/4 1/4 5))) 1)
(callback (*metro* (+ beat (* .5 dur))) 'drumloop (+ beat dur) dur)))
(drumloop (*metro* 'get-beat 4) 1/4)
(play-note (now) kit 51 140 2000)
(play kit
(+ 1 2)
(dotimes (i 8)
(play-note (+ (now) (* i 5000)) synth (+ 60 i) 80 4000))
(play-note (now) piano (random '(60 60 67 72 84)) 150 44100)
(play-note (now) synth (random '(60 60 67 72 84)) 150 44100)
(define charlesloop
(lambda (beat dur root)
(if (= (modulo beat 1) 0)
(play piano root 80 1))
(if (= (modulo beat 3/4) 0)
(play piano (+ (+ root (random '(0 12 24))) (random '(0 4 7 10))) 70 1))
(play piano (+ root 2 24) (cosr 40 30 1/5) .3)
(callback (*metro* (+ beat (* .5 dur))) 'charlesloop (+ beat dur) dur 47)))
(charlesloop (*metro* 'get-beat 4) 1/4 36)
(*metro* 'get-beat 4)
(define fastloop )
(lambda (beat dur root)
;;(println beat)
(play piano (+ root (* 0.03 (random 100))) 90 0.1)
(callback (*metro* (+ beat (* .5 dur))) 'fastloop (+ beat dur) dur root)))
(fastloop (*metro* 'get-beat 4) 1/4 54)
60
(play-note (now) kit *gm-kick* 140 10000)
(+ 60 (random '(0 3 7 10)))
(+ 60 (random '(0 3 6 9)))
(define santa
(lambda (beat dur lst)
;;(println (car lst))
;;(println (caar lst))
;;(println (cadar lst))
;;(println (cadr (car lst)))
(play synth (+ 0 (caar lst)) 100 (* 2 (cadar lst)))
(play synth (+ 5 (caar lst)) 100 (* 2 (cadar lst)))
(play synth (+ 7 (caar lst)) 100 (* 2 (cadar lst)))
(play synth (+ 12 (caar lst)) 100 (* 2 (cadar lst)))
(callback
(*metro* (+ beat (* .5 (cadar lst))))
'santa (+ beat (* (cadar lst) 2)) (cadar lst) (rotate lst -1))))
(santa (*metro* 'get-beat 4) 1 '((67 1) (64 .5) (65 .5) (67 1) (67 1.5) (67 .5) (69 .5) (71 .5) (72 1) (72 1)))
;;-7 0 3 7 10
;;o7 0 3 6 9
;;maj7 0 4 7 11
;;7 0 4 7 10
;;-7b5 0 3 6 10
;;
(sys:load "libs/core/topclock.xtm")