Published
Edited
May 20, 2020
3 stars
Insert cell
Insert cell
Insert cell
bassWalk = {
let I = ['C2', 'E2', 'G2', 'A2', 'Bb2', 'A2', 'G2', 'E2'];
let IV = ['F2', 'A2', 'C3', 'D3', 'Eb3', 'D3', 'C3', 'A2'];
let V_IV = ['G2', 'B2', 'D3', 'E3', 'F2', 'A2', 'C3', 'D3'];
let I_V = ['C2', 'E2', 'G2', 'A2', 'G2', 'A2', 'Bb2', 'B2'];
return [I, I, IV, I, V_IV, I_V];
}
Insert cell
part1 = {
let I = [three('C5'), rest, rest,
two('A4'), rest, one('G4'),
three('C5'), rest, rest,
two('A4'), rest, one('G4'),
two('C5'), rest, one('G4'),
two('A4'), rest, three('C5'),
rest, rest, rest,
rest, rest, rest];
let IV = [
three('F5'), rest, rest,
two('D5'), rest, one('C5'),
three('F5'), rest, rest,
two('D5'), rest, one('C5'),
two('F5'), rest, one('C5'),
two('D5'), rest, three('F5'),
rest, rest, rest,
rest, rest, rest];
let V_IV = [
three('G5'), rest, rest,
two('E5'), rest, one('D5'),
three('G5'), rest, rest,
two('E5'), rest, one('D5'),
three('F5'), rest, rest,
two('D5'), rest, one('C5'),
three('F5'), rest, rest,
two('D5'), rest, one('C5')];
let I_V = [two('C5'), rest, one('C5'),
two('Bb4'), rest, one('Bb4'),
two('A4'), rest, one('A4'),
two('Ab4'), rest, one('Ab4'),
two('G4'), rest, one('G4'),
two('G4'), rest, one('G4'),
two('G4'), rest, one('G4'),
two('G4'), rest, one('G4')];
return [I, I, IV, I, V_IV, I_V];
}
Insert cell
Insert cell
{
(mutable noteHistory).push(playNotes);
(mutable noteHistory).shift()
return noteHistory
}
Insert cell
{
playNotes;
return noteHistory
}
Insert cell
playNotes = {
let playedNotes = []
if (time.beatThirds == 0 || time.beatThirds== 2) {
let bassNote = bassWalk[time.measure][time.measureBeat];
playNote(0, bassNote, oneBeatSecs/3, 10);
playedNotes.push(bassNote);
}
let currNote = part1[time.measure][time.measureBeatThirds];
if (currNote.note) playedNotes.push(currNote.note);
playNote(0, currNote.note, currNote.length, 10);
return playedNotes;
}
Insert cell
time = {
let loopBeat = Math.floor(loopBeatThirds / 3);
let beatThirds = loopBeatThirds % 3;
let measure = Math.floor(loopBeat / config.bpMeasure);
let measureBeat = loopBeat % config.bpMeasure;
let measureBeatThirds = measureBeat * 3 + beatThirds;
return { beatThirds, measure, measureBeat, measureBeatThirds };
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more