====== 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 =====
https://konduktiva.org/doku.php?id=music_generation#random
===== Deterministic algorithm for generating melodies based on L-systems =====
https://konduktiva.org/doku.php?id=music_generation#l-system_lindenmayer_system
===== Algorithm for chord progressions based on the circle of fifths =====
https://konduktiva.org/doku.php?id=music_generation#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)