Using the power of algorithmic composition to create a complex yet cohesive piece of electronic music.
I will use Common Music through the Grace GUI platform to program sequences for an electronic composition. There will be varying length tracks for a number of different instruments including: Drums, Bass, Lead Synth, Backing Synths, and Synth pads.
I will record and export the midi data through Common Music so that it is usable in another audio editing program.
I will use the exported data from the composition to create a longer and more complex piece of electronic music, harnessing the power of external VSTs and by replacing studio recorded samples with some of the midi instruments.
;;; -*- syntax: Sal; font-size: 16; theme: "Emacs"; -*-
;; set synth instrument ;;
begin
with piano = 11
send("mp:instruments", piano)
end
variable scale1 = {0 4 7 11},
alternatingnotes = {11 14}
process sequencer (scale, on, tmpo, ampl)
with reps = odds(1, 12, 16),
rhys = #? ((reps = 8), make-cycle( {1/2 1/2}), make-cycle( {3/4})) ,
amps = #? ((reps = 8), make-weighting(list(make-cycle({.5 .4 .7}),
make-cycle({.6 .5 .8}))),
make-weighting(list(make-cycle({.5 .4 .7}),
make-cycle({.6 .5 .8})))),
knms = make-weighting( list( list(make-heap(scale, make-weighting({1 2 3 4})),
make-weighting({1 1})), "rest"))
repeat reps
for r = in-tempo( next(rhys), tmpo)
for a = next(amps)
for l = next(knms, #t)
loop for k in l
if (number?(k))
send( "mp:midi", key: transpose(k, on), dur: r, amp: a * ampl * .5, chan: 0)
end
end
wait r
end
;;Synth 1
begin
with procs = {}
loop repeat 4
set procs &= sequencer( scale1, key("bf3"), 128, 1)
end
sprout( procs, {0 2 4 6})
end
;;Synth 2;;
begin
with procs = {}
loop repeat 4
set procs &= sequencer( alternatingnotes, key("f4"), 128, 1)
end
sprout( procs, {0 2 4 6})
end
;; Hi Hat ;;
process hatSequencer (tmpo, ampl)
with tom = 30, hat = 42,
knums = make-weighting( list( hat, tom)),
rhys = make-cycle( {2/3 1/3}) ,
amps = make-weighting( {.4 {.95 :weight .1}})
repeat 8
for k = next(knums)
for a = next(amps)
for r = in-tempo( next(rhys), tmpo)
if (number?( k))
send("mp:midi", key: k, chan: 9, dur: r, amp: a * ampl)
end
wait r
end
;; Listen to Hi Hat ;;
begin
with procs = {}
loop repeat 9
set procs &= hatSequencer(128, .99)
end
sprout( procs, {0 2 4 6 8 10 12 14})
end
;; Change Midi-Prog to Bass ;;
send("mp:prog", val: 32)
;; Bassline ;;
loop repeat 16
for t from 0 by .250
send("mp:midi", t, key: pick(45, 52, 57), amp: pick(.4,.8), dur: .2)
end
send("mp:prog", val: 31)
;; Alternate Bassline ;;
loop repeat 16
for t from 0 by .250
send("mp:midi", t, key: pick(45, 52, 57), amp: pick(.2,.3), dur: .2)
end
send("mp:prog", val: 40)
;; Pad High ;;
loop repeat 16
for t from 0 by 1
send("mp:midi", t, key: pick(69, 73, 76, 80, 83), amp: pick(.2,.3), dur: 2)
end