(
var g5, fs5, e5, d5, c5, b4, a4, g4;
var mel1Data, now;
var e, x;
var noteObject, score, myFunc;
/* begin add */
var d4, e4, fs4, a5, b5, c6, d6, e6;
var q;
var mel2Data, mel3Data;
var curtime;
/* end add */
noteObject = CtkSynthDef(\test, {arg freq, amp, dur, out;
Out.ar(out, SinOsc.ar(freq, 0, Line.kr(amp, 0, dur)))
});
score = CtkScore.new;
/* set up basic pitch vars */
g5 = PC(\g, 5);
fs5 = PC(\fs, 5);
e5 = PC(\e, 5);
d5 = PC(\d, 5);
c5 = PC(\c, 5);
b4 = PC(\b, 4);
a4 = PC(\a, 4);
g4 = PC(\g, 4);
/* begin add */
d4 = PC(\d, 4);
e4 = PC(\e, 4);
fs4 = PC(\fs, 4);
a5 = PC(\a, 5);
b5 = PC(\b, 5);
c6 = PC(\c, 6);
d6 = PC(\d, 6);
e6 = PC(\e, 6);
q = 1.0;
/* end add */
/* set up durations */
e = 0.5;
x = 0.25;
mel1Data = [
/* m1 */ [g5, e], [g5, e], [fs5, e], [fs5, e],
/* m2 */ [e5, e], [e5, e], [d5, e], [d5, e],
/* m3 */ [c5, x], [b4, x], [c5, x], [d5, x], [b4, x], [c5, x], [d5, x], [e5, x],
/* m4 */ [d5, x], [c5, x], [b4, x], [a4, x], [g4, e], [b4, e]
/* eod */ ];
/* begin add */
mel2Data = [
/* m1 */ [g4, x], [a4, x], [b4, x], [c5, x], [d5, e], [b4, e],
/* m2 */ [c5, e], [a4, e], [fs4, e], [g4, e],
/* m3 */ [a4, x], [d4, x], [e4, x], [fs4, x], [g4, x], [a4, x], [b4, x], [c5, x],
/* m4 */ [d5, e], [d6, e], [b5, e], [g5, x], [a5, x]
/* eod */ ];
mel3Data = [
/* m1 */ [b5, x], [c6, x], [d6, x], [e6, x], [a5, e], [d6, e],
/* m2 */ [g5, e], [c6, q], [b5, e],
/* m3 */ [e5, e], [a5, q], [g5, q], // ties over to measure 4!
/* m4 */ [fs5, e], [g5, e], [d5, e]];
// add a way to pass in amp and speaker assignment
myFunc = {arg starttime, mel, amp = 0.25, out = 0;
var now;
now = 0.0;
mel.do({arg data;
var pc, dur;
#pc, dur = data;
score.add(noteObject.new(now + starttime, dur).freq_(pc.freq).amp_(amp)
.dur_(dur).out_(out));
now = now + dur;
});
/* begin add */
now + starttime;
/* end add */
};
/* begin add */
curtime = 1.0;
curtime = myFunc.value(curtime, mel1Data, -12.dbamp);
curtime = myFunc.value(curtime, mel2Data, -12.dbamp);
curtime = myFunc.value(curtime, mel3Data, -12.dbamp);
/* end add */
score.play;
)
(
var g5, fs5, e5, d5, c5, b4, a4, g4;
var mel1Data, now;
var e, x;
var noteObject, score, myFunc;
/* begin add */
var d4, e4, fs4, a5, b5, c6, d6, e6;
var q;
var mel2Data, mel3Data;
var curtime;
var myMelody;
/* end add */
noteObject = CtkSynthDef(\test, {arg freq, amp, dur, out;
Out.ar(out, SinOsc.ar(freq, 0, Line.kr(amp, 0, dur)))
});
score = CtkScore.new;
/* set up basic pitch vars */
g5 = PC(\g, 5);
fs5 = PC(\fs, 5);
e5 = PC(\e, 5);
d5 = PC(\d, 5);
c5 = PC(\c, 5);
b4 = PC(\b, 4);
a4 = PC(\a, 4);
g4 = PC(\g, 4);
/* begin add */
d4 = PC(\d, 4);
e4 = PC(\e, 4);
fs4 = PC(\fs, 4);
a5 = PC(\a, 5);
b5 = PC(\b, 5);
c6 = PC(\c, 6);
d6 = PC(\d, 6);
e6 = PC(\e, 6);
q = 1.0;
/* end add */
/* set up durations */
e = 0.5;
x = 0.25;
mel1Data = [
/* m1 */ [g5, e], [g5, e], [fs5, e], [fs5, e],
/* m2 */ [e5, e], [e5, e], [d5, e], [d5, e],
/* m3 */ [c5, x], [b4, x], [c5, x], [d5, x], [b4, x], [c5, x], [d5, x], [e5, x],
/* m4 */ [d5, x], [c5, x], [b4, x], [a4, x], [g4, e], [b4, e]
/* eod */ ];
/* begin add */
mel2Data = [
/* m1 */ [g4, x], [a4, x], [b4, x], [c5, x], [d5, e], [b4, e],
/* m2 */ [c5, e], [a4, e], [fs4, e], [g4, e],
/* m3 */ [a4, x], [d4, x], [e4, x], [fs4, x], [g4, x], [a4, x], [b4, x], [c5, x],
/* m4 */ [d5, e], [d6, e], [b5, e], [g5, x], [a5, x]
/* eod */ ];
mel3Data = [
/* m1 */ [b5, x], [c6, x], [d6, x], [e6, x], [a5, e], [d6, e],
/* m2 */ [g5, e], [c6, q], [b5, e],
/* m3 */ [e5, e], [a5, q], [g5, q], // ties over to measure 4!
/* m4 */ [fs5, e], [g5, e], [d5, e]];
// add a way to pass in amp and speaker assignment
myFunc = {arg starttime, mel, amp = 0.25, out = 0;
var now;
now = 0.0;
mel.do({arg data;
var pc, dur;
#pc, dur = data;
score.add(noteObject.new(now + starttime, dur).freq_(pc.freq).amp_(amp)
.dur_(dur).out_(out));
now = now + dur;
});
/* begin add */
now + starttime;
/* end add */
};
myMelody = {arg starttime;
var curStart;
curStart = starttime;
curStart = myFunc.value(curStart, mel1Data, -12.dbamp);
curStart = myFunc.value(curStart, mel2Data, -12.dbamp);
curStart = myFunc.value(curStart, mel3Data, -12.dbamp);
};
myMelody.value(1.0);
myMelody.value(9.0);
myMelody.value(17.0);
/* end add */
score.play;
)