After months of deliberation over how best to go about constructing the data structures and standards for coordination modules, I finally just jumped out on a bridge and created a basic foundation as well as the first ever coordination module.

Here's what I'm presently planning for the coordination module data standard:

  • Accents
    • Strong
      • [Comma-delimited list of non-relative times]
    • Weak
      • [Comma-delimited list of non-relative times]
  • Style
    • [Normal, Smooth, Sharp]
  • Tempo
    • [Integer value]

I'm still very unsure of whether or not this structure will adequately coordinate the generative modules.  No doubt, developing the full standards for coordination modules will require a great deal more time than it took to develop standards for the other core modules.  Coordination is such an abstract thing, yet it is so absolutely necessary.

Preliminary test with an experimental coordination module (details will be given on the plugin if I decide to keep it as a permanent addition to the plugin library) actually impressed me quite a bit!  The only part of the data structure that I've actually implemented is the strong accent list.  The addition of this one small string of information to the main compositional block, however, actually makes a noticeable difference in composition quality because of the accented beats.  It effectively increases the coherence of the generative modules.

Presently, an experimental post-processing module is the only plugin making use of the accent information provided by the coordination module.  The post-processing module simply pumps up the velocity of any generative module notes that occur on a strong beat.  The generative modules still pay no attention to note placement.  Yet, even this quick and dirty little method of utilizing the coordination module's data makes a difference!

The birth of coordination represents another huge step forward for mGen - a step that will, with a great deal of work and persistence, bridge the gap between mGen's rigid, lifeless computer music and the emotional, dynamic music of true human musicians.

Below is a slice of a composition taken from one of the visualization tools I made.  It shows accenting: lighter blocks represent notes with higher velocities.  This shows the coordination module in action (though in this picture, it appears that the coordination module chose a very boring accent pattern - only on beat 1 of each measure).