AMPLE guideMake a song: Rooftop Light

Page 18 of 20

Make a song: Rooftop Light

Build a full band song step by step: a sequencer with drums, bass and guitar, a General MIDI choir, and the effects that make it sound real.

In this tutorial you build one song from start to end and meet most of AMPLE on the way. It is a calm, widescreen band song of 40 bars: a drum kit, a bass and a strummed guitar from the sequencer, a choir made of two General MIDI voices, and an effect chain for every instrument. Listen to the result first.

Rooftop Light, 1 minute 44 seconds, 92 BPM, A minor. This is what you will build.

The complete song is in the folder docs/examples/24-tutorial-song of the project: song.amplet and sequences/band.seq. Open it next to this page if you want to see everything at once.

BarsPartChordsWhat happens
1 to 4IntroAm F C Ghi-hat and a soft guitar; the choir comes in at bar 3
5 to 12VerseAm F C G, twicea light groove, a syncopated bass, the guitar strums
13 to 20ChorusF C G Am F C E Eeverything opens up: full drums, a bass in pulses, a louder choir
21 to 28Verse 2like the versethe same groove, the choir a little louder
29 to 36Chorus 2like the chorusthe biggest part
37 to 40OutroF C Am Amthe band thins out and the song fades away

1. Set up the project#

Make a project and put three sample sets in its samples folder. They come with AMPLE in the audio-packs folder and are free to use.

ample new rooftop-light
Copy this folder of audio-packsto samples/ as
free/big-rusty-drums/kitkit (kick, snare, tom, hat and open hat)
free/emilyguitar/emilyguitar (an acoustic guitar, one recording per note)
free/black-and-blue-basses/babybluebass (a bass guitar, one recording per note)

The choir needs no files: it uses the General MIDI sound font that AMPLE can install (node tools/fetch-gm-soundfont.mjs --download), which a block reaches with file pack:musescore-general.

The tempo and the master seed go in the first line of the song, the project line:

project "Rooftop Light" { tempo 92  master-seed 20261008 }

2. The band: one sequencer#

Add a sequencer block, name it band, and in the project panel choose Add, Sequence. The block points at the file:

sequencer band stable@1.0 at 1 for 40 {
  file sequences/band.seq
  lanes lane1=kick lane2=snare+tom lane3=hat+open lane4=bass lane5=gtr
}
The first part of the song text: the sequencer block with its five lanes, and the start of the drum chain.
The first part of the song text: the sequencer block with its five lanes, and the start of the drum chain.

Press Open the sequencer. This is where the band is made. Read The sequencer if the workspace is new to you.

The sequencer with the chorus pattern open: seven channels (1), four patterns (2) and the playlist (3).
The sequencer with the chorus pattern open: seven channels (1), four patterns (2) and the playlist (3).

The channels#

Seven channels, each with its own level and place in the stereo picture:

ChannelTypeSound
kick, snare, tom, hat, opendrumone sample each from the kit
bassnotesthe bass sample set (samples/bass)
gtrguitarthe guitar sample set, strummed (samples/guitar, open voicing)

The hat is a little to the left and soft (-13 dB), the toms a little to the right: small differences that make a kit sound like a kit and not like a row of samples.

The patterns#

There are four patterns: intro, verse, chorus and outro. A drum row has 16 steps a bar; X is an accent, x a normal hit, o a quiet ghost hit. The hat of the chorus is a lively sixteenth pattern with accents, X.xxX.xxX.xxX.xx; the verse has a calmer X.o.x.o.X.o.x.o..

To make the groove feel played and not typed, the patterns are not the same every bar:

The guitar row is a strum plus the chords of the part, one for each bar. D is a downstroke and u an upstroke, a capital is louder, x is a muted stroke:

gtr D...D.u.D.u.D.u.|D...D.u.D.u.D.u.|D...D.u.D.u.D.u.|D...D.u.D.uxD.u. chords Am F C G

The bass follows the chords. In the verse it plays a syncopated pattern (a long note, a short one, and a step up to the fifth), in the chorus steady pulses with a jump to the octave on the last beat.

The playlist#

The playlist puts the patterns in order: the intro, a verse of 8 bars (the 4-bar pattern repeats), the chorus, and so on. The bands above the clips are sections with a name, and the flag at bar 3 is a marker that says where the choir comes in.

The lanes#

The sequencer sends everything to the output called mix, but we want to treat every group differently, so each group gets its own lane.

Five lanes: the kick alone, the snare and toms, the hats, the bass, the guitar.
Five lanes: the kick alone, the snare and toms, the hats, the bass, the guitar.

Press Apply and back. Each lane is now a port of the block that you can connect to effects.

The band in the graph: the sequencer on the left with its five lanes, and the first effects of the drums.
The band in the graph: the sequencer on the left with its five lanes, and the first effects of the drums.

3. The choir#

A choir of two General MIDI sounds, Choir Aahs (program 52) and Voice Oohs (program 53), sings long chords. The notes are four voicings a bar, written closely together, so that the voices move by a step instead of jumping:

ChordNotesIn letters
Am57 60 64 69A3 C4 E4 A4
F57 60 65 69A3 C4 F4 A4
C55 60 64 67G3 C4 E4 G4
G55 59 62 67G3 B3 D4 G4
E56 59 64 68G#3 B3 E4 G#4

A voice that stays on the same note while the chords change is what makes a choir sound like people instead of like keys. The notes are written once, with a velocity (how hard) per part: very soft in the intro (42), soft in the verses (54 and 58), and 84 and 92 in the choruses, where an extra high voice, an octave above the top one, joins in.

The piano roll of the choir: four voices per bar, 168 notes. The velocity lane below shows the build-up through the song.
The piano roll of the choir: four voices per bar, 168 notes. The velocity lane below shows the build-up through the song.

Both choirs play the same notes but get them through their own midi-humanize block. It shifts every note a tiny bit in time and in velocity (the settings are timing 18 and velocity 9 for the first voice, 26 and 12 for the second), differently for each. Two voices that are never exactly together are the oldest trick to make one sound into a crowd.

midi-humanize choir_loose stable@1.0 {
  velocity 9
  timing 18
  from choir_notes.notes -> notes
}
gm choir_aahs stable@1.0 at 1 for 40 {
  file pack:musescore-general
  program 52
  gain -2 dB
  from choir_loose.notes -> notes
}
The choir in the text: the notes, the humanize block and the first General MIDI voice.
The choir in the text: the notes, the humanize block and the first General MIDI voice.

4. Make it sound real#

A raw sample or synth sounds like a demonstration. What makes it sound like a recording are the small things done to every part. Here is the graph after the build, and the places to look at.

The whole song as a graph, built. The band on the left, then the effects, the mixer and the master.
The whole song as a graph, built. The band on the left, then the effects, the mixer and the master.

The drums#

The kick goes straight into a drum bus, a mixer that adds the whole kit. Around it:

The bass#

A small EQ gives the low end a little push (+2 dB under 120 Hz) and takes the clicks of the top (-4 dB), and a compressor (ratio 4) evens out the notes, so every note of the bass is heard.

The guitar#

A guitar straight from samples is dry. Four effects: an EQ that cuts the low rumble (-5 dB under 200 Hz) and adds some air at 4 kHz, a chorus with a slow movement that makes it wider, a delay with a dotted-eighth time (489 ms at 92 BPM, so the echoes dance with the beat) and a small reverb.

The choir#

The choir has the longest chain, because it must feel like a space. A mixer adds the two voices, with the Aahs a little to the left and the Oohs to the right. Then:

  1. a high-pass filter at 170 Hz takes out the mud,
  2. an EQ lowers the low-mids and lifts the top a little,
  3. an ensemble chorus (a slow, deep movement) makes the voices thicker,
  4. a short delay (163 ms) gives them a little pre-echo,
  5. a big reverb, the hall, with a size of 92% and a tail of nearly eight seconds.
The advanced controls of the hall: three knobs and the decay of the room. The estimated RT60 says how long it takes to fade away.
The advanced controls of the hall: three knobs and the decay of the room. The estimated RT60 says how long it takes to fade away.
The middle of the choir chain in the graph: the EQ, the ensemble chorus, the delay.
The middle of the choir chain in the graph: the EQ, the ensemble chorus, the delay.

At the end of the chain a compressor does something special: it is a sidechain compressor. Its key input is connected to the kick lane, so every time the kick hits, the compressor presses the choir down a little and lets it come back during the next 220 milliseconds. You will not hear it as an effect; you hear that the kick and the choir share the space.

compressor choir_duck stable@1.0 {
  threshold -34 dB
  ratio 3
  attack 6 ms
  release 220 ms
  from choir_hall.out -> in
  from band.lane1 -> key
}
The compressor of the choir. The key (the kick) is not in the picture; the knobs show how fast it ducks (attack) and comes back (release).
The compressor of the choir. The key (the kick) is not in the picture; the knobs show how fast it ducks (attack) and comes back (release).

Last, a fade block lets the choir swell in over the first four bars.

5. Mix and finish#

The end of the song: the mixer, the compressor, the fade-out and the master.
The end of the song: the mixer, the compressor, the fade-out and the master.

The four groups (drums, bass, guitar, choir) go into one mixer. Every input has its level:

mixer mix stable@1.1 {
  from drum_glue.out -> in1
  from bass_even.out -> in2
  from gtr_room.out -> in3
  from choir_in.out -> in4
  gains 6 4 2 1
  pan c c c c
}

Then three things make it a finished song:

volume finale stable@1.0 {
  from mastercomp.out -> in
  gain fadeout(38, 3, exp)
}
master master live@1.3 {
  from finale.mixed -> mix
}
The end of the text: the mixer, the master compressor, the fade-out and the master.
The end of the text: the mixer, the master compressor, the fade-out and the master.

6. Build and listen#

Press Build and play. The first build renders all 28 blocks (about 25 seconds); later builds only render what you changed. The arrangement shows the structure: the intro is quiet, the choruses are the loudest, and the end fades.

The Arrangement after the build: the section bands on the ruler, a row for every block.
The Arrangement after the build: the section bands on the ruler, a row for every block.

Useful ways of listening:

7. Make it yours#

Next: read the text of the song from top to bottom. The complete song is in docs/examples/24-tutorial-song, and every line of it is explained on this page. When a word is new, hover over it for its meaning or open the dictionary.

← Song text by exampleShare a song as a package →