In the previous tutorial we got our hands on dynamics, but there is much more to do with the instruments and their expressions. In this tutorial we will explore the whole orchestra and its different colors.
Internally D♭ divides of instruments into two categories: pitched and unpitched.
The pitched instruments can play a range of pitches at different frequencies, while unpitched
just ignore any pitch related attributes like degree, key, octave and others.
We will first look into different sections of pitched instruments and then conclude with all the unpitched percussion.
Table of Contents
• • • • • • •
We start with the most notoriously known classic instruments played solo like in a string quartet: violin, viola, cello and contrabass. Each example covers the full range of the instrument available in D♭.
function Main()
{
@instrument = "contrabass";
@transitions -= Transition.Legato;
var range = 37;
@span = range;
@octave = 1;
@key = 0; //from C1
@Split(range) //to C4
.Then(idx => @key += idx.Index);
} function Main()
{
@instrument = "cello";
@transitions -= Transition.Legato;
var range = 42;
@span = range;
@octave = 2;
@key = 0; //from C2
@Split(range) //to F5
.Then(idx => @key += idx.Index);
} function Main()
{
@instrument = "viola";
@transitions -= Transition.Legato;
var range = 39;
@span = range;
@octave = 3;
@key = 0; //from C3
@Split(range) //to D6
.Then(idx => @key += idx.Index);
} function Main()
{
@instrument = "violin";
@transitions -= Transition.Legato;
var range = 42;
@span = range;
@octave = 3;
@key = 7; //from G3
@Split(range) //to C7
.Then(idx => @key += idx.Index);
}In an orchestra there is a whole section of each instrument. When
played synchronously, it produces a smoother and louder sound compared to solo parts.
D♭ can switch from solo to a group using the tutti attribute. By default,
it is set to false. So all instruments play solo by default. In the following examples,
each note is played first by a solo instrument and right after it by the whole group.
function Main()
{
@instrument = "contrabass";
@transitions -= Transition.Legato;
var range = 37;
@span = range * 2;
@octave = 1;
@key = 0; //from C1
@Split(range) //to C4
.Then(idx => {
@key += idx;
@Split(2).Then(j => {
if (j == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
@instrument = "cello";
@transitions -= Transition.Legato;
var range = 42;
@span = range * 2;
@octave = 2;
@key = 0; //from C2
@Split(range) //to F5
.Then(idx => {
@key += idx;
@Split(2).Then(j => {
if (j == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
@instrument = "viola";
@transitions -= Transition.Legato;
var range = 39;
@span = range * 2;
@octave = 3;
@key = 0; //from C3
@Split(range) //to D6
.Then(idx => {
@key += idx;
@Split(2).Then(j => {
if (j == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
@instrument = "violin";
@transitions -= Transition.Legato;
var range = 42;
@span = range * 2;
@octave = 3;
@key = 7; //from G3
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(2).Then(j => {
if (j == 1) {
@tutti = true;
@color = "#e44";
}
});
});
}A very important part of musical interpretation is the usage of different articulations to achieve a unique expression. Sound libraries usually capture several articulations, but they can hardly match the variety of expressive styles of a real musician.
For strings there are:
Spiccato a short bump of the bow on the string,
Sustained the default style of playing long notes,
Vibrato a gentle tremble achieved by finger oscillations,
Tremolo strong tremble with bow,
Pizzicato played with fingers only like on a guitar,
and many more that are not yet supported by D♭.
Not included in these examples are different velocities (dynamics). You can notice differences in how pp and ff sound. Each instrument is sampled at different velocities and behind the scenes a sample is selected which matches the target velocity the best.
function Main()
{
var a = [ Articulations.Sustained, Articulations.Vibrato, Articulations.Tremolo, Articulations.Pizzicato, Articulations.Spiccato ];
@instrument = "contrabass";
@transitions -= Transition.Legato;
var range = 37;
@span = 5 * range * a.Length;
@octave = 1;
@key = 0; //from C1
@Split(range) //to C4
.Then(idx => {
@key += idx;
@Split(a.Length * 2).Then(j => {
@articulation = a[j / 2];
if (j % 2 == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
var a = [ Articulations.Vibrato, Articulations.Tremolo, Articulations.Pizzicato, Articulations.Spiccato ];
@instrument = "cello";
@transitions -= Transition.Legato;
var range = 42;
@span = 4 * range * a.Length;
@octave = 2;
@key = 0; //from C2
@Split(range) //to F5
.Then(idx => {
@key += idx;
@Split(a.Length * 2).Then(j => {
@articulation = a[j / 2];
if (j % 2 == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
var a = [ Articulations.Vibrato, Articulations.Tremolo, Articulations.Pizzicato, Articulations.Spiccato ];
@instrument = "viola";
@transitions -= Transition.Legato;
var range = 39;
@span = 4 * range * a.Length;
@octave = 3;
@key = 0; //from C3
@Split(range) //to D6
.Then(idx => {
@key += idx;
@Split(a.Length * 2).Then(j => {
@articulation = a[j / 2];
if (j % 2 == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
var a = [ Articulations.Vibrato, Articulations.Tremolo, Articulations.Pizzicato, Articulations.Spiccato ];
@instrument = "violin";
@transitions -= Transition.Legato;
var range = 42;
@span = 4 * range * a.Length;
@octave = 3;
@key = 7; //from G3
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(a.Length * 2).Then(j => {
@articulation = a[j / 2];
if (j % 2 == 1) {
@tutti = true;
@color = "#e44";
}
});
});
} function Main()
{
@instrument = "harp";
@transitions -= Transition.Legato;
var range = 74;
@span = range;
@octave = 1;
@key = 4; //from E1
@Split(range) //to F7
.Then(idx => @key += idx.Index);
} function Main()
{
@instrument = "guitar";
@transitions -= Transition.Legato;
var range = 54;
@span = range;
@octave = 1;
@key = 7; //from G1
@Split(range) //to C6
.Then(idx => @key += idx.Index);
}This group of instruments includes solo samples of: bassoon, clarinet, oboe, flute, and piccolo. Each example covers the full range of the instrument available in D♭. Currently there are only solo samples available.
Note that bassoon has no vibrato sampled for the lowest A# and B. For the top three notes D♭, D and D# it only has sustained samples.
function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Vibrato ];
@instrument = "bassoon";
@transitions -= Transition.Legato;
var range = 42;
@span = 3 * range * a.Length;
@octave = 1;
@key = 10; //from A#1
@Split(range) //to D#5
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained ];
@instrument = "clarinet";
@transitions -= Transition.Legato;
var range = 41;
@span = 2 * range * a.Length;
@octave = 3;
@key = 2; //from D3
@Split(range) //to F#6
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Vibrato ];
@instrument = "oboe";
@transitions -= Transition.Legato;
var range = 32;
@span = 3 * range * a.Length;
@octave = 3;
@key = 10; //from A#3
@Split(range) //to F6
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Vibrato, Articulations.Espressivo ];
@instrument = "flute";
@transitions -= Transition.Legato;
var range = 37;
@span = 4 * range * a.Length;
@octave = 4;
@key = 0; //from C4
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
}Notice that the top three semitones (G#, A and A#) only have a staccato and are not rendered.
function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained ];
@instrument = "piccolo";
@transitions -= Transition.Legato;
var range = 25;
@span = 2 * range * a.Length;
@octave = 4;
@key = 7; //from G4
@Split(range) //to G6
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
}This group of instruments includes solo samples of: tuba, french horn, trombone and trumpet. Each example covers the full range of the instrument available in D♭. Currently there are only solo samples available for woodwinds.
function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained ];
@instrument = "tuba";
@transitions -= Transition.Legato;
var range = 34;
@span = 2 * range * a.Length;
@octave = 1;
@key = 5; //from F1
@Split(range) //to D4
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Closed ];
@instrument = "french horn";
@transitions -= Transition.Legato;
var range = 45;
@span = 3 * range * a.Length;
@octave = 1;
@key = 9; //from A1
@Split(range) //to F5
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Vibrato ];
@instrument = "trombone";
@transitions -= Transition.Legato;
var range = 34;
@span = 3 * range * a.Length;
@octave = 1;
@key = 10; //from A#1
@Split(range) //to G4
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Staccato, Articulations.Sustained, Articulations.Vibrato, Articulations.Closed, Articulations.Harmonic ];
@instrument = "trumpet";
@transitions -= Transition.Legato;
var range = 33;
@span = 5 * range * a.Length;
@octave = 3;
@key = 4; //from E3
@Split(range) //to C6
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
}This section contains a large variety of instruments. Some of them are pitched and some are not. They usually do not produce sustained sounds, but they can be played with a variety of strikes.
In classical orchestra pitched percussion instruments include glockenspiel, marimba, timpani and xylophone.
function Main()
{
var a = [ Articulations.Unspecified ];
@instrument = "glockenspiel";
@transitions -= Transition.Legato;
var range = 30;
@span = 1 * range * a.Length;
@octave = 4;
@key = 7; //from G4
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Unspecified ];
@instrument = "marimba";
@transitions -= Transition.Legato;
var range = 56;
@span = 1 * range * a.Length;
@octave = 2;
@key = 5; //from F2
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Sustained, Articulations.Tremolo ];
@instrument = "timpani";
@transitions -= Transition.Legato;
var range = 25;
@span = 2 * range * a.Length;
@octave = 2;
@key = 0; //from C2
@Split(range) //to C4
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Unspecified ];
@instrument = "xylophone";
@transitions -= Transition.Legato;
var range = 42;
@span = 1 * range * a.Length;
@octave = 3;
@key = 7; //from G3
@Split(range) //to C7
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
}Some percussion covers very short intervals. It can be rather considered unpitched, but for better distinction it occupies a few pitches. Available weakly pitched instruments include log drum.
Weakly pitched instruments are work in progress with a very limited range so far.
function Main()
{
var a = [ Articulations.Unspecified ];
@instrument = "log drum";
@transitions -= Transition.Legato;
var range = 2;
@span = 1 * range * a.Length;
@octave = 3;
@key = 11; //from B3
@Split(range) //to C4
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
} function Main()
{
var a = [ Articulations.Unspecified, Articulations.Closing, Articulations.Closed ];
@instrument = "triangle";
@transitions -= Transition.Legato;
var range = 1;
@span = 3 * range * a.Length;
@octave = -1;
@key = 0; //from C-1
@Split(range) //to C-1
.Then(idx => {
@key += idx;
@Split(a.Length).Then(j => @articulation = a[j]);
});
}Unpitched percussion reaches beyond the classical orchestra. Unpitched instruments ignore the octave, key, mode, harmony, degree and alter settings.
Available instruments include anvil, bass drum and brake drum, claves, guiro, sleigh bells and vibraring.
Most percussion samples include several round robins to avoid repeated sound. The round robins are selected automatically.
function Main()
{
var instruments = ["anvil", "bass drum", "brake drum", "claves", "guiro", "sleigh bells", "vibraring"];
@span = instruments.Length;
@Split(instruments.Length).Then(idx => {
@instrument = instruments[idx];
@color = idx % 4 == 0 ? "rgb(60, 225, 130)" : "rgb(16, 185, 129)";
});
}Some also include several articulations:
Conga: hit (default) and tap (pizz.)
Gong: hit (default) and scrape (vib.)
Quinto: hit (default) and tap (pizz.)
Ratchet: crank (default), fast (sus.) and tap (pizz.)
Tambourine: hit (default), shake (sus.) and roll (trem.)
Tumba: hit (default) and tap (pizz.)
function Main()
{
var instruments = [
("conga", Articulations.Unspecified), ("conga", Articulations.Pizzicato),
("gong", Articulations.Unspecified), ("gong", Articulations.Vibrato),
("quinto", Articulations.Unspecified), ("quinto", Articulations.Pizzicato),
("ratchet", Articulations.Unspecified), ("ratchet", Articulations.Sustained), ("ratchet", Articulations.Pizzicato),
("tambourine", Articulations.Unspecified), ("tambourine", Articulations.Sustained), ("tambourine", Articulations.Tremolo),
("tumba", Articulations.Unspecified), ("tumba", Articulations.Pizzicato),
];
@span = instruments.Length * 3;
@Split(instruments.Length).Then(idx => {
@instrument = instruments[idx].Item1;
@articulation = instruments[idx].Item2;
@color = idx == 0 || instruments[idx - 1].Item1 != instruments[idx].Item1? "rgb(60, 225, 130)" : "rgb(16, 185, 129)";
});
}function Main()
{
var articulations = [
Articulations.Unspecified, //hit
Articulations.Spiccato, //hit stick
Articulations.Vibrato, //bow
Articulations.Tremolo, //crescendo roll
Articulations.Espressivo //crash
];
@span = articulations.Length * 4;
@Split(articulations.Length).Then(idx => {
@instrument = "cymbal";
@articulation = articulations[idx];
});
}function Main()
{
var articulations = [
Articulations.Unspecified, //hit SN
Articulations.Tremolo, //roll SN
Articulations.Pizzicato, //tap
Articulations.Closed, //hit NS
Articulations.Closed | Articulations.Tremolo //roll NS
];
@span = articulations.Length * 4;
@Split(articulations.Length).Then(idx => {
@instrument = "snare";
@articulation = articulations[idx];
});
}The following instruments are somewhere between sounds and effects: alien, bell tree, cow bell.
function Main()
{
var instruments = ["alien", "bell tree", "cow bell"];
@span = instruments.Length * 2;
@Split(instruments.Length).Then(idx => @instrument = instruments[idx]);
}Now you know all the instruments available in D♭ through VSCO-CE. In the next tutorial you will learn how to algorithmically compose simple orchestral scores that combine several instruments.
D♭ Tutorials — Basic
D♭ Tutorials — Intermediate
D♭ Reference
D♭ Examples
Links