Interactive Harmony Study

Considering of this study, I first came out with a picture of solar system. It would be a good idea to interact with the planets and get the refletion on music. Therefore I made a sketch of this idea. Some planets go around the sun in the middle of the sketch and they can be interacted by dragging them to make them run along their tracks. Differnt planets control differen elements of this sketch, including the harmony, speed, and visual parts. User can use this sketch to compose their own music pieces.

Here’s my sketch.

I devided the inner ellipse track to four parts. It will play different melodies when the planet move to the corresponding part. 

if (state1 == 1) {
// cycles upward
arpeggio.pattern = "up";
} else if (state1 == 2) {
// cycles downward
arpeggio.pattern = "down";
} else if (state1 == 3) {
// cycles up then and down
arpeggio.pattern = "upDown";
} else if (state1 == 4) {
// cycles down then up
arpeggio.pattern = "downUp";
}
 

There’s also another sound track which keeps playing from the beginning. 

var synth1 = new Tone.PolySynth(4, Tone.Synth1).toMaster();
var C1_chord = ["C3", "E3", "G3"];
var F1_chord = ["F2", "C3", "A3"];
var G1_chord = ["G2", "D3", "B3"];
var pianoPart1 = new Tone.Part(callback, [
["0:0", C1_chord],
["0:2", F1_chord],
["0:4", C1_chord],
["0:6", G1_chord],
["0:8", C1_chord],
["0:10", F1_chord],
["0:12", C1_chord],
["0:13", G1_chord],
["0:14", C1_chord.concat("C4")],
]).start();
pianoPart1.loop = true;
pianoPart1.loopEnd = "4m";
function callback(time, chord) {
synth1.triggerAttackRelease(chord, "8n", time);
}
 

Here is a video of my sketch.

Leave a Reply

Your email address will not be published. Required fields are marked *