coleww / int2freq

:trumpet: convert ints to frequencies based on musical scales
https://www.npmjs.org/package/int2freq
4 stars 0 forks source link

int2freq


Build Status js-standard-style

NPM

returns a musical frequency from the western scale given a tonic note (A.K.A. the ZEROETH note), a scale, and a positive/negative integer/index/note-thing.

{ just imagine a picture of john cage right here }

Ok so like pop music is kind of easy if you know how scales work but that is boring math so lets make computer do this for us.

So what we have is maybe a classic C MAJOR scale which is composed of the notes:

And so (in this instance) if you give int2freq the integer 0, it will return a C. If you pass it a 1, it will go one hop up the scale ladder to a D. If you give it a -2, it will make two hops down the scale chute to an A. FUN!

INSTALLL

npm install int2freq

EXAMPLES

var int2freq = require('int2freq)
int2freq(0, {tonic: 'A4', scale: 'minor'})
=> 440.000
int2freq(1, {tonic: 'A4', scale: 'minor'})
=> 493.883
int2freq(-2, {tonic: 'C3', scale: 'major'})
=> 110.000
//ETc. etc.

int2freq.scales
=>  get an array of scale keys!
int2Freq.notes
=> get an array of note strings!

You can pass the frequency values to a web audio buddy or what have you, and generate the inputs in some other manner based on whatever science you enjoy and participate in.

int2freq can handle positive/negative indexes of arbitrary value (AKA -17 or 9), however if yr index ends up out of range for that tonic/scale you will have to handle the undefined's yrself. Deal with it.

CURRENTLY ACCEPTABLE MUSICAL SCALES:

CURRENT ACCEPTABLE MUSICAL TONICS:

'A0', 'A#0', 'B0', 'C1', 'C#1', 'D1', 'D#1', 'E1', 'F1', 'F#1', 'G1', 'G#1',
...
'A7', 'A#7', 'B7', 'C8'

TODO:

[] add, like, way more scales