? updates to 28th ?
This commit is contained in:
parent
602fc34c0a
commit
e4a109e45e
|
@ -26,7 +26,7 @@
|
||||||
;; As for your question about the snare synthdef, pulse-divider doesn't actually generate any triggers on its own, it just outputs a trigger every div triggers. So instead you could try something like this:
|
;; As for your question about the snare synthdef, pulse-divider doesn't actually generate any triggers on its own, it just outputs a trigger every div triggers. So instead you could try something like this:
|
||||||
(in-package #:cl-collider)
|
(in-package #:cl-collider)
|
||||||
(defsynth snare ()
|
(defsynth snare ()
|
||||||
(out.ar 0 (white-noise.ar (decay2.ar (pulse-divider.ar (impulse.ar 4) 4 2) 0.005 0.5))))
|
(out.ar 0 (white-noise.ar (decay2.ar (pulse-divider.ar (impulse.ar 8) 4 2) 0.005 0.5))))
|
||||||
;; (synth :snare)
|
;; (synth :snare)
|
||||||
;; (stop)
|
;; (stop)
|
||||||
;;
|
;;
|
||||||
|
@ -36,9 +36,12 @@
|
||||||
;;; continuation of advice
|
;;; continuation of advice
|
||||||
;; But if you just want to use snare in a pattern, I would write it like this:
|
;; But if you just want to use snare in a pattern, I would write it like this:
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
(defsynth snare ((amp 0.5) (out 0))
|
(defsynth snare ((amp 0.5) (out 0))
|
||||||
(out.ar out (* amp (white-noise.ar (env-gen.ar (env (list 0 1 0) (list 0.005 0.5)) :act :free)))))
|
(out.ar out (* amp (white-noise.ar (env-gen.ar (env (list 0 1 0) (list 0.005 0.5)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :snare)
|
||||||
|
;; (stop)
|
||||||
;; that's a bit longer that I'd like
|
;; that's a bit longer that I'd like
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,3 +71,134 @@
|
||||||
;; then got directed to the Tutorial, good idea to read it,
|
;; then got directed to the Tutorial, good idea to read it,
|
||||||
;; if not previous "first tutorial", then on concepts:
|
;; if not previous "first tutorial", then on concepts:
|
||||||
;; http://doc.sccode.org/Tutorials/Streams-Patterns-Events1.html
|
;; http://doc.sccode.org/Tutorials/Streams-Patterns-Events1.html
|
||||||
|
|
||||||
|
|
||||||
|
;;; So, env-gen takes in lists for intensity and timings, from that builds output signal that can be used in other gens?
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth env-test-1 ((amp 0.5) (out 0))
|
||||||
|
(out.ar out (* amp (sin-osc.ar 440.0 0.0 (env-gen.ar (env (list 0 1 0) (list 0.005 0.5)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :env-test-1)
|
||||||
|
;; (stop)
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth env-test-1-1 ((amp 0.5) (out 0))
|
||||||
|
(out.ar out (* amp (sin-osc.ar 440.0 0.0 (env-gen.ar (env (list 0 1 0.1 0) (list 0.005 0.01 0.5)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :env-test-1-1)
|
||||||
|
;; (stop)
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth env-test-2 ((amp 0.5) (out 0) (start 100) (middle 400) (end 200))
|
||||||
|
(out.ar out (* amp (sin-osc.ar (env-gen.ar (env (list start middle end) (list 0.5 1.0)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :env-test-2)
|
||||||
|
;; (synth :env-test-2 :start 200 :middle 200 :end 200)
|
||||||
|
;; (synth :env-test-2 :start 200 :middle 300 :end 200)
|
||||||
|
;; (synth :env-test-2 :start 100 :middle 400 :end 100)
|
||||||
|
;; (stop)
|
||||||
|
;;
|
||||||
|
;; so, yes, env-gen can define stream of numbers by times, and the numbers can be used for example in sin-osc.ar frequency input
|
||||||
|
|
||||||
|
;; now, how could I make other percussions? attempting to look at the example from SC
|
||||||
|
|
||||||
|
;; {
|
||||||
|
;; var snare, bdrum, hihat;
|
||||||
|
;; var tempo = 4;
|
||||||
|
;; tempo = Impulse.ar(tempo); // for a drunk drummer replace Impulse with Dust !!!
|
||||||
|
;; snare = WhiteNoise.ar(Decay2.ar(PulseDivider.ar(tempo, 4, 2), 0.005, 0.5));
|
||||||
|
;; bdrum = SinOsc.ar(Line.ar(120,60, 1), 0, Decay2.ar(PulseDivider.ar(tempo, 4, 0), 0.005, 0.5));
|
||||||
|
;; hihat = HPF.ar(WhiteNoise.ar(1), 10000) * Decay2.ar(tempo, 0.005, 0.5);
|
||||||
|
;; Out.ar(0, (snare + bdrum + hihat) * 0.4 ! 2)
|
||||||
|
;; }.play
|
||||||
|
;;
|
||||||
|
;; so let's try bdrum?
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth bdrum ((amp 0.5) (out 0) )
|
||||||
|
(out.ar out (* amp (sin-osc.ar (line.ar 120 60 1) 0 (env-gen.ar (env (list 0 1 0) (list 0.005 0.5)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :bdrum :amp 1)
|
||||||
|
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth snare ((amp 0.5) (out 0))
|
||||||
|
(out.ar out (* amp (white-noise.ar (env-gen.ar (env (list 0 1 0.3 0) (list 0.005 0.01 0.5)) :act :free)))))
|
||||||
|
|
||||||
|
;; (synth :snare)
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth hihat ((amp 0.5) (out 0))
|
||||||
|
(out.ar out (* amp (hpf.ar (white-noise.ar 1) 10000) (env-gen.ar (env (list 0 1 0) (list 0.005 0.5)) :act :free))))
|
||||||
|
;; hihat = HPF.ar(WhiteNoise.ar(1), 10000) * Decay2.ar(tempo, 0.005, 0.5);
|
||||||
|
;; (synth :hihat)
|
||||||
|
|
||||||
|
;;; whoa, now I can try to combine these in a pattern!
|
||||||
|
;; let's just copy another pattern with my instruments maybe?
|
||||||
|
|
||||||
|
(in-package #:cl-patterns)
|
||||||
|
(pb :foo ;; define a new pattern named :foo
|
||||||
|
:instrument :bdrum ;; use the :kik synth we defined above
|
||||||
|
:play-quant 4 ;; make sure the pattern will only start on a beat that is divisible by 4, to stay in sync
|
||||||
|
:dur 2 ;; give each event a duration of 1 beat
|
||||||
|
:pfin 2 ;; limit the length of the pattern to 4 events (the default is infinite events)
|
||||||
|
)
|
||||||
|
;; (play :foo)
|
||||||
|
;; (end :foo)
|
||||||
|
|
||||||
|
(pb :fee ;; define a new pattern named :foo
|
||||||
|
:instrument :hihat ;; use the :kik synth we defined above
|
||||||
|
:play-quant 4 ;; make sure the pattern will only start on a beat that is divisible by 4, to stay in sync
|
||||||
|
:dur 3 ;; give each event a duration of 1 beat
|
||||||
|
:pfin 1 ;; limit the length of the pattern to 4 events (the default is infinite events)
|
||||||
|
)
|
||||||
|
;; (play :fee)
|
||||||
|
;; (end :fee)
|
||||||
|
|
||||||
|
(pb :fum ;; define a new pattern named :foo
|
||||||
|
:instrument :snare ;; use the :kik synth we defined above
|
||||||
|
:play-quant 4 ;; make sure the pattern will only start on a beat that is divisible by 4, to stay in sync
|
||||||
|
:dur 0.5 ;; give each event a duration of 1 beat
|
||||||
|
:pfin 8 ;; limit the length of the pattern to 4 events (the default is infinite events)
|
||||||
|
:amp 0.1
|
||||||
|
)
|
||||||
|
;; (play :fum)
|
||||||
|
;; (end :fum)
|
||||||
|
|
||||||
|
(pdef :all-parallel (ppar (list (pdef :foo) (pdef :fee) (pdef :fum))))
|
||||||
|
;; (play :all-parallel)
|
||||||
|
;; (end :all-parallel)
|
||||||
|
;;
|
||||||
|
|
||||||
|
;; (in-package #:cl-patterns)
|
||||||
|
;; (render (pdef :all-parallel) "/tmp/perc-1.aiff" :dur 16)
|
||||||
|
;; doesn't work for some reason
|
||||||
|
;; let's write as I did previously, and maybe ask a question later
|
||||||
|
|
||||||
|
(in-package #:cl-collider)
|
||||||
|
(defsynth disk_writer ((out_buf_num 99))
|
||||||
|
(disk-out.ar out_buf_num (in.ar 0)))
|
||||||
|
|
||||||
|
(setf mybuffer (buffer-alloc (expt 2 17)))
|
||||||
|
mybuffer
|
||||||
|
|
||||||
|
;; start a disk_writer synth
|
||||||
|
(setf writer_0 (synth 'disk_writer))
|
||||||
|
|
||||||
|
;; make it output to buffer you allocated
|
||||||
|
(ctrl writer_0 :out_buf_num (bufnum mybuffer))
|
||||||
|
|
||||||
|
;; continuously write the buffer contents to a file
|
||||||
|
(buffer-write mybuffer "/tmp/foo.aiff" :leave-open-p t)
|
||||||
|
|
||||||
|
;; now play whatever sounds you like
|
||||||
|
|
||||||
|
;; stop the disk_writer synth
|
||||||
|
(free writer_0)
|
||||||
|
|
||||||
|
;; close and free the buffer
|
||||||
|
(buffer-close mybuffer)
|
||||||
|
(buffer-free mybuffer)
|
||||||
|
;; wow, now that's a success
|
||||||
|
;; question on how to write
|
||||||
|
;; and what else?
|
||||||
|
|
|
@ -206,3 +206,4 @@ I'm not sure if that's what you were using for that recording, but it may be mor
|
||||||
* [2022-08-28 Sun]
|
* [2022-08-28 Sun]
|
||||||
** ok, got new responses
|
** ok, got new responses
|
||||||
more about :act :free and nuances of creating with pulse-driver
|
more about :act :free and nuances of creating with pulse-driver
|
||||||
|
** and I think I understand Env(elope) better now, yay?
|
||||||
|
|
Loading…
Reference in New Issue