The Grace Genre Generator 

Recreating Genres through Common Music's Grace

Grace (Graphical Realtime algorhythmic composition environment) is a command line based system that began development in 1989. The real time and faster than real time applications in the Common Music system, were developed by Rick Taube. 


The program I've created uses Grace to output three different algorhythmic processes. Taking a large influence from Erik Flister's "Automatic Jazz" program, the Grace Genre Generator uses Euclidean Algorhithms with the MIDI interface to create a number of styles of music.


The link provided gives the raw text file of the Grace Genre Generator. The text file should be copied and pasted in to the Grace interface.  If functions do not appear to be highlighted, make sure that the editing syntax (found in the edit menu) is set to SAL. 


Grace Genre Generator 


The goals in creating the Grace Genre Generator were three fold:

  • Using the 9th MIDI channel, ise algorithmic processes to randomize a modern style drum machine to underline a late 2010's inspired trap beat




  • By simply applying program changes, change the style of hard coded melody from a bossa nova classic "The Girl From Ipanema" to a metal inspired version of the same song. 






  • Create an algorithmically based minimalist style piece inspired by Laurie Spiegel's "The Universe Expands", creator of another algorhithmic based computer system Music Mouse - An Intelligent Instrument.

Automatic Jazz

As stated above, the Grace Genre Generator takes influence from processes used in the example program Automatic Jazz.


The first process used was the drum set. This process uses a counting based sequencing loop. The hi-hat, playing on all subdivisions of eighth notes, was used as a seperate process so as not to overlap with the bass drum or snare drum.








The snare drum and bass drum were able to be in their own process as their rhythms were linear, therefore never overlapping. 







The second process used was the ride cymbal process. I was interested in its potential for combining elements of randomness and strict sequencing. I used this process to create a soloing instrument on top of the harmonically tricky "The Girl from Ipanema". There is one measure where the notes of the root scale do not work over top of the chord structure. The ride process allowed for one measure of a different set of notes to solo over the chord change. 












The third and most important process used was the jazz bass process. This was the the truest algorithmic element of all of the processes.

  • The trap beat process uses the function which chooses one of five different rhythmic sequences (all laid out in 32nd note subdivisions).
  • In the bossa/metal process used two different bass rhythmic patterns. The bossa bass has one highly likely rhythm sequence with a few "fills" with low likelyhood. The metal bass has no rhythmic variation but follows a different harmonic progression in the songs relative minor.
  • The process was also used in the minimalist piece with the arpeggiating synth lines. Many rhythmic variations are provided for a purer sense of randomness. 


Finally, the conductor process was used in order to sprout many processes at once. A challenge I ran in to with Automatic Jazz's conductor process was that I could not use the trap drum kits "scale"(channel 9s varying drum sounds in lieu of note values) in concurrence with the melodic element's scale. In this instance I used Grace's double sprouting process to have both scales run at once. 


When originally deciding to work with Grace. I was hoping to implement some interactivity with a user that would not involve scrolling through lines and lines of code to change values. Unfortunately, I could not find ways to integrate this as there was not too much that could me done in terms of real time input. Sure, you could assign channel messages to a midi controller if you wished to, for example, apply pitch bend to a certain instrument. However, I could not think of a way for a user to manipulate program changes or input messages during a sprouted process. 


A challenge I also made for myself included assigning the same drum kit across multiple conductor processes or "songs". For example, using simple rock beat with the metal song required a 32 bar repeating loop since it needed to line up with the changing melody, which was 32 bars long. When using the 32 bar repeating rock beat with other processes that would only loop in 4 bars, the rock beat would continue for 28 bars after the rest of the processes were complete. To compensate, I attempted making all processes 32 bars long, but the jazz bass could handle a certain amount of arguments and would load an error message. Therefore, using the same process in different conductor processes quickly became a game of balancing both sides until they both looped properly without overlapping or stopping before the loop ended.


The last issue was the lack of community behind Grace. Although it is a very expansive compositional tool, the user interface without many bells or whistles could potentially scare away a large fanbase. This did provide an interesting challenge as I could only work with the examples given along with the Common Music directory. Sometimes constraints force creative ways to solve problems. 




gallery/screen shot 2018-12-10 at 1.41.35 pm
gallery/screen shot 2018-12-10 at 1.42.10 pm
gallery/screen shot 2018-12-10 at 1.44.24 pm
gallery/screen shot 2018-12-10 at 1.46.28 pm


Although coding is a new lanuage to me, I did not find Grace's functions and processes too difficult to understand. Tampering with values over time gave me an idea as to what each element could do. I could not see me using the program in any sort of live performance setting as clicking through lines of code and pressing command enter is a bit too tedious. However, I could see myself using this program in the future for compositional ideas and/or create the basises for Max/MSP patches and C++ implementation. 


Thank you for reading,