User:Frostburn/SonicWeave
This is a description of the design philosophy behind the Domain Specific Language (DSL) called SonicWeave for manipulating frequencies, ratios and pitches in Scale Workshop 3.
Units as vectors
Let's first establish that it makes sense to talk about quantities as vectors. We can choose a basis consisting of the exponents of the second, the metre and the kilogram. Now we can plot Hertz at -1 on the exponents-of-second axis, Newton at coordinates (-2, 1, 1) and Pascal at coordinates (-2, -1, 1).

Rational frequencies as vectors
When dealing with musical data we mostly care about frequencies measured in Hertz. To represent frequencies other than 1 Hz we need more basis vectors and by the fundamental theorem of arithmetic we can choose the exponents of prime numbers to get a vector representation of any rational multiple of 1 Hz.