Question

I have just finished https://github.com/overtone/overtone/wiki/Getting-Started which is fantastic.

Now, I would like to do more.

I'm a Math/CS Major, so I know what a fourier transform is; however, I have no music background. I would like to learn things like:

  • simulating basic percussion instruments
  • composing some short pieces.

However, I'm less interested in developing those skills from scratch, and more interested in having a nice tutorial/guided tour via clojure/overtone/supercollider.

[I find it faster to learn via tweaking something nice; rather than building from scratch for my first runs.]

Thanks!

Was it helpful?

Solution

I don't know of any guided tour per se, but Overtone's examples contain a wealth of code for synthesizing various instruments as well as composing pieces from those instruments and/or sampled instruments. I personally recommend bells.clj (synthesized bells + composition) and auto_dubstep.clj (synthesized drums + composition)

OTHER TIPS

it doesn't exactly answer your question (not clojure related), but i am pretty sure you will appreciate dave benson's mathematics and music (seems he also has other books, but that is free online).

There are lots of example on making sounds, though when getting started with Overtone (I am still 99% newb) It took too long to discover the line function which prevents you from leaking synth descriptors and metronome which is for causing sounds to happen at times.

(definst
    ... create component sounds ...
    (out 0 (* v (clip2 (+ wob (* kick-vol kick) (* snare-vol snare)) 1)
              (line:kr 0 dur dur FREE)))

multiplying by a call to line:kr create a synth with a defined lifetime

then you can use a metronome for composition as in this little beat:

(defn beat2 [beat]
  (at (metro beat) (#'kick 220 0.3 0.5 1.5))
  (at (+ 0.5  (metro beat)) (#'kick 220 0.3 0.5 1.5))
  (if (= 0 (mod beat 2))
    (at (metro (+ 0.17 beat)) (#'kick)))
  (at (metro (+ 0.35 beat)) (c-hat))
  (if (even? beat) (at (metro (+ 0.45 beat)) (c-hat)))
  (at (metro (+ 0.5 beat)) (#'mew 8))
  (apply-at (metro (inc beat))
            (if (= 0 (mod beat 200)) #'beat1 #'beat2)
            (inc beat) []))
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top