This composition is a continuation of the small example from the orchestration tutorial. It documents incremental updates, additions and improvements while building a larger piece. The tutorial example started like this.
function Main()
{
@span = 20;
@scale = [0, 2, 4, 6, 8];
@Split(
() => {
@release += 2;
@Split(
() => @chord = [0,2,4,7],
() => @chord = [0,3,4,6],
() => { @chord = [0,2,5,6]; @release += 8; }
).Then(i => @harmony -= i);
//add the bass
@Clone(() => {
@octave -= 1;
@Slice().Then(i => {
if (i > 1) @Rest(); //take the lowest two chord notes
//writing @chord = [0,2] instead would be wrong as the 2nd chord has [0,3] as the lowest notes
});
});
},
() => {
@instrument = "flute";
@chord = [0];
@Split(
() => @SetMelody([5,6,5,4]),
() => @SetMelody([5,6,5,4]),
() => @Slice(() => @degree = 3, () => @instrument = "piano"));
},
() => {
@release += 4;
@octave -= 1;
@Split(
() => @chord = [0,3,4,6],
() => @chord = [0,4,5,6]
).Then(i => @harmony -= i);
});
}
function SetMelody(IList<int> melody) => @Split(melody.Count).Then(i => @degree = melody[i]);In the first place I decided to extend the motive a little bit, giving the solo instrument a different motive. The chords in response stay about the same with just a little change.
function Main()
{
@span = 24;
@scale = [0, 2, 4, 6, 8];
var soloInstrument = "flute";
@Split(
() => {
@release += 2;
@Split(
() => @chord = [0,2,4,7],
() => @chord = [0,3,4,6],
() => { @chord = [0,2,5,6]; @release += 8; }
).Then(i => @harmony -= i);
//add the bass
@Clone(() => {
@octave -= 1;
@Slice().Then(i => { if (i > 1) @Rest(); });
});
},
() => {
//@instrument = soloInstrument;
@chord = [0];
@Split(
() => @Motive([5,6,5,4]),
() => @Motive([5,6,5,4]),
() => @Slice(() => @degree = 3, () => @instrument = "piano"));
},
() => {
@release += 4;
@octave -= 1;
@Split(
() => @chord = [0,3,4,6],
() => @chord = [0,4,5,6]
).Then(i => @harmony -= i);
},
() => {
//@instrument = soloInstrument;
@scale += 10;
@Split(
() => @Motive([0,1,2,3,4,5,6,7]),
() => @Motive([8,7,6,4]),
() => @Slice(() => @degree = 2, () => @instrument = "piano"));
},
() => {
@release += 4;
@octave -= 1;
@Split(
() => @chord = [0,1,4,6],
() => @chord = [0,3,5,6]
).Then(i => @harmony -= i);
});
}D♭ Tutorials — Basic
D♭ Tutorials — Intermediate
D♭ Reference
D♭ Examples
Links