Hello! As for every project I work on this year, I'm making a weekly devlog. I'm therefor proud to present you Joy Phases!
Joy Phases is a musical sequencer that uses phasing to create emergent melodies. It is inspired by this fantastic codepen, and Steve Reich's phase music. Basically, phase music is composed of two tracks playing a short loop. However, one track is slightly faster than the other, so quickly the two become unsync and create new patterns. One great example is Piano Phase. Alternatively, the second track can also be shifted "on beat to the left", such as in Clapping Music or this version of Piano Phase. It's a pretty cool technique to change a melody in a surprising way.
So my goal is to create a sequencer that would allow users to make their own phase music. Either by writing a melody they know, or trying notes randomly. And they will be able to change the tonic and the scale, to create rich music. Eventually they will be able to share their creations, or even (if I find a way) export them to MIDI.
I'm making it in HTML5 and JS. I'm using Tone.js and VueX. Tone.js is a practical choice: it's a great music library, that I've used on my previous project. It allows to easily create instrument, and also sequencing events with a metronome (this will sure be very handy). As for VueX, it's a bit because I want to learn it. As a front-end web dev, it can't be bad! I already like Vue, and a solid flow structure will be necessary to easily manage the application's parameters (scale, signature, notes, phase…).
I've been working on it for a week, on my spare time. Progress has been made surprisingly fast! I already have a first prototype:
Of course, the sound is temporary. Next week, I intend to create some nicer instruments, using some actual samples. Also, this needs a UI to change the signature and the BPM.
One more important thing that I have to implement is the editing of each sequence. Every four measures, on top of the phasing, it would be great if the user had a way to change the scale automatically! This way they would be able to compose complex music. The question is: how to design the UI to remain both ergonomic and user-friendly?
Until then, see you next week!