Computing Education - Encoding Basic Melody and Harmony
(These notes were used in a block teaching 8th Graders computer science techniques. Here we used the Overtone/Clojure package to create encodings of musical melodies and harmonies.)
Using pitch and duration representation
We can sound a note on a piano as follows
(use 'overtone.inst.piano)
(piano)
(piano)
Notes can be played with numbers (midi codes
0-127):
(piano 60)
(piano 61)
(piano 62)
(piano 61)
(piano 62)
To humanize expressions, each is encoded with
usual name:
(note :c4)
60(note :c4)
note :c#4)
61
(note :db4)
61
(note :d4)
62
Chords
This brings us to our first use of
Clojure's vector data structure useful for structuring music. Here we represent a chord using a vector
of three notes:
(def c4-minor [(note :c4) (note
:eb4) (note :g4)])
And we can play these notes as a
chord
(doseq [note c4-minor] (piano
note))
Or played as a simple arpeggio:
(doseq [note c4-minor] (piano
note) (Thread/sleep 200))
Overtone has a built-in chord function that takes a root and
type and returns a set of midi codes.
To play the sound of a chord we first define a function that
will sound a set of notes as a chord using synth piano or a sampled piano.
(defn play-chord [a-chord]
(doseq [note a-chord] (piano note)))
(use
'overtone.inst.sampled-piano)
(defn
play-chord [a-chord]
(doseq [note a-chord] (sampled-piano note)))
Here's a function to play chord changes that uses three arguments i) the
chord ii) the number of repetitions, and iii) the duration. We encode all in a vector like so:
[(chord :E3 :minor) 4 1]
(defn
play-changes [chords]
(doseq [ [chd reps dur] chords]
(loop [cnt reps]
(when (> cnt 0)
(doseq [] (play-chord chd) (Thread/sleep
(* 500 dur))
(recur (dec cnt)))))))
Two Example Songs:
This Land Is Your Land (IV I V I)
(def thisland [ [(chord :G3 :major) 4 1]
[(chord :D3 :major ) 4 1]
[(chord :A2 :dom7) 4 1]
[(chord :D3 :major) 4 1]])
All My Loving ( II V7 I VI IV II VII V)
Em A7 D Bm
Close your eyes and I´ll kiss you, tomorrow i´ll miss you,
G Em C A7
remember I´ll always be true.
Em A7 D Bm
And then while I´m away I´ll write home everyday
G A D
and I´ll send all my loving to you.
(def allmyloving
[ [(chord :E3 :minor) 4 1]
[(chord :A2 :dom7) 4 1]
[(chord :D3 :major) 4 1]
[(chord :B3 :minor) 4 1]
[(chord :G3 :major) 4 1]
[(chord :E3 :minor) 4 1]
[(chord :C3 :major) 4 1]
[(chord :A3 :dom7) 4 1]
[(chord :E3 :minor) 4 1]
[(chord :A3 :dom7) 4 1]
[(chord :D4 :major) 4 1]
[(chord :B3 :minor) 4 1]
[(chord :G3 :major) 4 1]
[(chord :A3 :major) 4 1]
[(chord :D3 :major) 5 1]
])
2oakley sunglasses
ReplyDeleteboys north face jackets
michael kors handbags outlet stores
converse outlet
replica rolex watches
coach outlet
nike outlets
tods outlet
mbt
abercrombie & fitch
kevin durant basketball shoes
mont blanc mountain
wholesale nike
north face jackets clearance
hollister.com clothing
coach purses sale
fendi sunglasses
cheap nfl
the north face sale
coach factory
louboutin shoes
joes new balance outlet
canada goose coats
gucci belts
christian louboutin outlet
canada goose jacket sale
converse sale
gucci belt
ferragamo shoes sale
nike wholesale
north face clearance
fitflop shoes sale
abercrombie and fitch outlet
fitflops clearance
vans outlet
nike outlet store online
north face factory outlet
abercrombie store
ralph lauren extra 25 off
mbt shoes clearance
jordan 6
nike free 5.0
michael kors sale
north face women's jackets
1019hxt