Ratio-First Music
A perfect fifth is 3/2, not 1.4983. Every note property is an expression over exact fractions, so intervals stay pure no matter where you move the BaseNote.
Compose with exact ratios instead of fixed pitches

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:
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.
A major triad in just intonation:
| Note | Ratio | Interval |
|---|---|---|
| Root | 1/1 | Unison |
| Third | 5/4 | Major third |
| Fifth | 3/2 | Perfect 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 itTime 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 endsOlder 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.
module.baseNote.getVariable('frequency').mul(new Fraction(3, 2))See the expression syntax reference for the full language.
Start with Your First Composition — three notes in five minutes — or read Core Concepts first. To run it locally, see Installation.
RMT Compose is free and open source under the MIT License. If you find it useful, consider supporting its development:
❤️ Donate