Last winter, I experimented with our folk-rnn system for completing well-known Christmas carols. That resulted in my little composition, “We three layers o’ hidd’n units are”, composed with the assistance of our character-based model:
I have decided to do the same this year, but instead using our token-based approach, and making use of intermediate models coming from tuning our pretrained system to act more “dodecaphonic” — essentially, motivating it to use equally all pitches of the equal tempered scale. My collaborator Oded generated 1200 transcriptions using a serial approach (a supercollider program generates a tone row, and then repeats this 4 times with subsequent appearances undergoing transposition inversion and retrograde at random). We then began to tune our folk-specialised system with this dataset. This tuning process involves minibatches of 64 transcriptions, 5% of the dataset as validation, a learning rate of 0.0003, and using no dropout. We save the model parameters after each epoch.
I use the abc code of the first three bars of the carol, “It came upon a midnight clear”, to initialise each generative system, i.e., ‘M:6/8 K:Cmaj G, |: E 2 D D C A, | G, 2 A, G, 2 G, | A, B, C C D E |’. I then curate from among the generated materials, and arrange it to create my 2016 Christmas composition, “It Came Out From A Pretrained Net” (for flute, clarinet, bassoon, three French horns, trumpet, and something like 20 handbells):
Here is the score. I use red boxes to mark the material generated by each of our models. I make no pitch adjustments to the material in those boxes, save octave transpositions. The opening subject comes from the pre-trained folk-rnn model. The subjects following come one by one from increasing epochs, ending with material generated from the 12th epoch. (starting m. 102). It is really fun to hear the system begin to move off the tonal cliff.
Merry Christmas and Happy Season! See you in the new year.