progression

Scribbletune generates common chord progressions for the given key

This is an experimental feature. As of now it supports providing chord progressions for major and minor scales only based on the theory that the progression must start from the Tonic, optionally move to the PreDominant or SubDominant and then the Dominant. Randomly it will move from Dominant to PreDominant and then back to Dominant.

const scribble = require('scribbletune');
 
const majorChordProgression = scribble.progression('M');
const minorChordProgression = scribble.progression('m', 8);
 
// the following will output something like [ 'I', 'ii', 'ii', 'V' ]
console.log(majorChordProgression);
 
// the following will output something like [ 'i', 'VI', 'ii', 'V', 'ii', 'iv', 'iv', 'V', 'V' ]
console.log(minorChordProgression);

getChordsByProgression

getChordsByProgression works toward translating chord degrees to actual chords for the given scale and root note.

const c = scribble.clip({
notes: scribble.getChordsByProgression('C4 major', 'I IV V ii'),
pattern: 'x_'.repeat(4) + 'x_______'
});
 
scribble.midi(c, 'chords.mid');

You can even get chord degrees for select scales/modes:

// the following outputs [ 'i', 'ii°', 'III', 'iv', 'v', 'VI', 'VII' ]        
console.log(scribble.getChordDegrees('minor'));

You can even get chord degrees for the following scales/modes:

  • ionian/major
  • dorian
  • phrygian
  • lydian
  • mixolydian
  • aeolian/minor
  • locrian
  • melodic minor
  • harmonic minor