top of page

Diatonic Lab

Presentation

 

Diatonic Lab is a project that started with my music theory method. Its purpose is to make notes, chords and scales intuitive and interactive. To this aim, I use the color code over a circle. The advantage is that we can leave the octave aside, and the number of possible notes is reduced to twelve. Lets see for example a C major scale on the circle of semitones:

​

Moreover, I would like to let any inexperienced user explore improvisation over complex chord progressions.

​

The project consists of a software that allows you to create, load and edit any chord progression (compositions, jazz standards, etc), explore the possible improvising diatonic scales related to the harmony, and apply them in real time to any MIDI controller.

 

For the scale explorer, I'm working with an animated and interactive circle of semitones (as above). To play those scales, I take advantage of the fact that diatonic scales are only consisted of seven notes (instead of twelve on a tempered instrument). Only natural notes are played by the user (white keys for instance), and the software alterates them according to the scales defined beforehand.

​

Here is an example of the complete system, with a mobile app and a hardware MIDI alterator, receiving the scale informations via Bluetooth. To synchronize the chord progression with the musician, the app plays an audio play-along (as those created by the app iReal Pro). Each chord having multiple possible scales, the user can switch between them with an expression pedal.

Color-code-circle-transparent.png
Functional schematic 2 tr.png

Max

 

I first prototyped this software with Max, which gave me a quick access to MIDI processing. But no music theory algorithm here, all the scales had to be defined note by note.

Jazz Hacker 4.png

Julia

 

Last summer, I worked as an intern in a lab of my school (EPFL), the Digital and Cognitive Musicology Lab (DCML). I had to work on a MusicXML parser in Julia. Loving the langage, I started to code music theory with it. I was able to produce graphs and drawings using my color code, which allowed me to test out different scale visualizations, as those two:

cdn G7 tr.png
guitare G7 tr.png

​

The first representation is a G7 chord and a G mixolydian scale in the key of C major on a circle of semitones. The second one is the same scale on a guitar fretboard.

JUCE

 

To properly animate the app, and to easily handle MIDI, I started learning the JUCE framework (built over C++). This let me produce this prototype:

​

You can see here that I use two complementary representation, the first one on a circle of semitones, and the second one on a relative line. On the latter, the fundamental note is specified, and the other degrees are identified by the alteration of their interval with the root note. In particular, if the interval is major or perfect, the note doesn't have any sign, if it's augmented, the note has a + sign, and if it's minor or diminished, a - sign.

Nintendo DS

 

As part of a class called Microprogrammed Embedded Systems, we had to develop a Nintendo DS app in group of two. I convinced my project partner to work on Diatonic Lab.
 

The app allows the user to define the chord progression, then proposes scales using a basic algorithm, and let the user modify them using the touch screen. In the demo video below, you can see the process of creating a new song, and also that an existing song can be loaded and modified.

​

Once the scales are defined, the app can enter play mode, and an internal timer iterates over the chords. For each new scale, the device sends the alteration datas via WiFi to a receiving PC JUCE app. To the latter receives and processes MIDI data from any controller and to any receiver. Unfortunately, this process is not shown on the demo, as the UTP communication still encounters some issues (disconnection in the middle of a track, so the musician is stuck in a scale...).

​

My coworker did the memory management and the WiFi communication, I did the rest.

Diatonic Lab web app

JavaScript

 

As I started to show my work to music students and friends, they expressed the wish to access a prototype of it, for training purpose. To take advantage of the cross-platform compatibility, I decided to learn JavaScript. Here is the current state of this web app:

bottom of page