Skip to content

RMT ComposeRelative Music Theory

Compose with exact ratios instead of fixed pitches

The RMT Compose workspace — coloured note rectangles on a frequency/time grid, with the orange BaseNote circle at the left

What is RMT Compose?

RMT Compose is a proof-of-concept music composition tool built around relative music theory: the idea that musical relationships are ratios, not pitches.

Instead of saying "this note is 659.25 Hz", you say "this note is 3/2 times the BaseNote's frequency". The consequences are practical:

  • Intervals stay pure. A 3/2 fifth is stored as the fraction 3/2 and evaluated exactly. It never drifts into a rounded decimal.
  • Transposition is one edit. Change the BaseNote's frequency and every note defined against it moves with it, in tune.
  • Alternative tunings are just expressions. 2^(1/12) is a 12-TET semitone; 3^(1/13) is a Bohlen-Pierce step. Nothing special is needed to write them.

The workspace is a WebGL2 canvas: notes are rectangles on a frequency (vertical) / time (horizontal) grid, and you drag, resize, select and transpose them directly.

Quick example

A major triad in just intonation:

NoteRatioInterval
Root1/1Unison
Third5/4Major third
Fifth3/2Perfect fifth

You write those as frequency expressions:

base.f              # the root — the BaseNote's own frequency
base.f * (5/4)      # a major third above it
base.f * (3/2)      # a perfect fifth above it

Time works the same way. beat(base) is one beat in seconds, and [1].t + [1].d means "start exactly when note 1 ends":

beat(base) * 2      # two beats long
[1].t + [1].d       # starts when note 1 ends
Legacy JavaScript syntax

Older modules used a method-chain format. It still loads, and the app converts it to the expression language above as soon as you open it in the Note Widget.

javascript
module.baseNote.getVariable('frequency').mul(new Fraction(3, 2))

See the expression syntax reference for the full language.

Who is this for?

  • Musicians and composers exploring just intonation and microtonal music
  • Music theorists who want interval relationships to be exact and explicit
  • Educators teaching the harmonic series and the physics of tuning
  • Developers interested in expression DSLs, bytecode evaluation and WebGL rendering

Getting started

Start with Your First Composition — three notes in five minutes — or read Core Concepts first. To run it locally, see Installation.

Support the project

RMT Compose is free and open source under the MIT License. If you find it useful, consider supporting its development:

❤️ Donate

Released under the MIT License