Creating a song
A relanote piece is just a graph of relative things played together. A song is the same primitives — blocks, chords, transformations — at a larger scale. There's no new syntax. You just keep composing.
Material first, structure second
Write the smallest reusable phrases first. Don't think about the song shape yet:
scale Major = { R, M2, M3, P4, P5, M6, M7 }
let melody = | <5> <6> <7> <8> <8> <7> <6> <5> <5> <6> <7> <8> <8>:2 - - |
let bass = | <1>:2 <5>:2 <4>:2 <1>:2 <1>:2 <5>:2 <1>:4 |Each of those is a single value. They can be transposed, repeated, reversed, concatenated, layered — anything you'd do with any other relanote expression.
Develop a theme by transforming it
A song that goes somewhere usually does so by transforming the same seed:
scale Major = { R, M2, M3, P4, P5, M6, M7 }
let theme = | <1> <3> <5> <3> |
let answer = theme |> transpose P5 ; harmonic answer up a fifth
let inversion = theme |> reverse ; play the contour backwards
let echo = theme |> repeat 2 ; double it
let development = theme ++ answer ++ inversion ++ echoReading the code is reading the structure: you can see at a glance that the second half answers the first, then inverts, then echoes.
Build the arrangement bottom-up
Once you have phrases, the song is the concatenation of the sections that use them:
scale Major = { R, M2, M3, P4, P5, M6, M7 }
let main = | <1> <2> <3> <4> <5> <5> <4> <3> <2> <1> <1>:2 |
let answer = main |> transpose P5
let recap = main
let song = main ++ answer ++ recap
songStack the song with a bass line as a layer (covered in the Layers guide), or set up a synth so each part lands on the right instrument.
Render to MIDI
When you're ready:
relanote render song.rela -o song.midDrop the MIDI into any DAW for instrument choice, mix and master. The relanote source is the durable copy — the MIDI is one render of it.
A short checklist
- Reuse before you write more. A small theme transformed four ways
- Move by intervals, not by pitches. Transpose, don't rewrite.
- Let density change the feel. Switching from
| a b |to - Concat for structure, layer for texture.
++builds form across
is denser than four unrelated lines.
| a b c d | doubles density without touching timing config.
time; layers build form across instruments.
Continue with Adding synth sounds when you want something other than the default tone.