AI Orchestra


Jaywick (Clacton-on-Sea)
London, UK
2018_2020

︎︎︎



Before working with Jaywick’s local community, I was initially collaborating with Jaywick’s orchestra aiming to establish a human/robot concert, composed by a machine learning system and played by the humans.

6 chapters that presentsthe project’s events. Each composition has been made by the machine learning. See below the methodology used to “teach” the machine learning algorithm:
  • First composition:
    • Learning period: November to December 2018
    • Compositions learned: 100: Vivaldi, Max Richter, Mozart
    • Time to compose a sound: 10 sec for a 3:55min score.

  • Second composition:
    • Learning period: Beginning of December to Mid-December 2018
    • Compositions learned: 100 (+100 from the previous batch): Max Cooper, Olafur Arnolds, Woodkid
    • Time to compose a sound: 12 sec for a 3:55min score.


pmaels-mbp-2:~ maelhenaff$ cd /Users/maelhenaff/Desktop/biaxial-rnn-music-compostion
maels-mbp-2:biaxial-rnn-music-composition-master maelhenaff$ python /Users/maelhenaff/Desktop/biaxial-rnn-music-composition-master/multi_training.py
maels-mbp-2:biaxial-rnn-music-composition-master maelhenaff$ python /Users/maelhenaff/Desktop/biaxial-rnn-music-composition-master/model.py
maels-mbp-2:biaxial-rnn-music-composition-master maelhenaff$ python /Users/maelhenaff/Desktop/biaxial-rnn-music-composition-master/main.py
Traceback (most recent call last):
maels-mbp-2:biaxial-rnn-music-composition-master maelhenaff$ python
Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 18:37:05)
>>> m = model.Model([300,300],[100,50], dropout=0.5)
>>> import multi_training
>>> pcs = multi_training.loadPieces("music")
Loaded autumn_no1_allegro_gp
Loaded cantate_sinfonia-bach_jbz2
Loaded chopin_etude_emaj_op10_no3_so
Loaded concerto_for_mandolin_in_C_major_bz3
Loaded concerto_in_Am_Violin-Vivaldi_jc3
Loaded spring_no1_allegro_gp
Loaded summer_no5_adagio_gp
Loaded vivaldi_concerto_la_stravaganza_4_1_(c)icking-archive
Loaded vivaldi_concerto_la_stravaganza_4_3_(c)icking-archive
Loaded vivaldi_lute_concerto_1_(c)broda
Loaded vivaldi_lute_concerto_2_(c)broda
Loaded vivaldi_spring_vn
Loaded winter_no1_allegro_non_molto_gp
>>> multi_training.trainPiece(m, pcs, 10000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "multi_training.py", line 53, in trainPiece
    error = model.update_fun(*getPieceBatch(pieces))
  File "multi_training.py", line 42, in getPieceBatch
    i,o = zip(*[getPieceSegment(pieces) for _ in range(batch_width)])
  File "multi_training.py", line 32, in getPieceSegment
    piece_output = dict(random.choice(pieces.values()))
ValueError: dictionary update sequence element #0 has length 78; 2 is required
>>> gen_adaptive(m,pcs,10,name="composition")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
>>>