Live Coding Melody and Harmony in JavaScript Code Examples
How quantizedMap works
let exampleQMap = new K.QuantizedMap(4, [0, 1, 2, 3], ["A", "B", "C", "D"]) //wrapLookup examples: exampleQMap.wrapLookup(1.5) //'B' exampleQMap.wrapLookup(4) //'A' exampleQMap.wrapLookup(6.5) //'c'
Viewing QuantizedMaps in MusicalEnvironment
console.log(e.octaveMaps) console.log(e.noteMaps) console.log(e.chordMaps) console.log(e.modeFilters)
Stochastic algorithm for generating melodies based on modes
Deterministic algorithm for generating melodies based on L-systems
Algorithm for chord progressions based on the circle of fifths
Using Algorithmically Generated Chords and Melodies Together
A function that filters note according to player modeFilter.
//Configure Player to use harmonic minor modeFilter: e.modeMaps.default.values[0] = 'harmonic minor' //Checking all three individually: console.log(K.filterMode(2, e, 10, e.players.exampleMidiPlayer1)) console.log(K.filterMode(5, e, 10, e.players.exampleMidiPlayer1)) console.log(K.filterMode(10, e, 10, e.players.exampleMidiPlayer1)) //Checking all with array: console.log([2, 5, 10].map(x => { return K.filterMode(x, e, 10, e.players.exampleMidiPlayer1) })) //[ 2, 5, 8 ]
Figure 7b
e.modeFilters['IIm7'] = new K.QuantizedMap(12, [0, 2, 5, 9], [0, 2, 5, 9]) e.modeFilters['v7'] = new K.QuantizedMap(12, [2, 5, 7, 11], [2, 5, 7, 11]) e.modeFilters['Imaj7'] = new K.QuantizedMap(12, [0, 4, 7, 11], [0, 4, 7, 11]) e.modeMaps.customExample = new K.QuantizedMap(9, [0, 4, 8], ['IIm7', 'v7', 'Imaj7']) e.players.exampleMidiPlayer1.modeMap = 'customExample' console.log([1, 2, 4, 11].map(x => { return K.filterMode(x, e, 0, e.players.exampleMidiPlayer1) })) console.log([3, 5, 6, 7].map(x => { return K.filterMode(x, e, 4, e.players.exampleMidiPlayer1) })) console.log([9, 3, 8, 3].map(x => { return K.filterMode(x, e, 8, e.players.exampleMidiPlayer1) }))
Making Music In Konduktiva with our Additions
K.addChordProgressionFromRomanNumeral(e, 'exampleProgression', 4, [0, 1, 2, 3], ['VI7','IIm7', 'V7', 'Imaj7'], 'C') console.log(e.chordMaps.exampleProgression) console.log(e.rootMaps.exampleProgression)
simpleRhythmPattern
K.simpleRhythmPattern (e, { voice: 'kick', patternName: 'testKick', patternLength: 4, IOIs: [1,1,1,1], bools: [true,false,true,false] } ) console.log(e.rhythmMaps.testKick) console.log(e.rhythmMaps.testKick.values)