︎


AI Orchestra

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

︎︎︎



Before working with the community of Jaywick, I was initially collaborating with the orchestra of Jaywick where our aim was to establish a human/robot orchestra, composed by a machine learning system and played by the humans from the orchestra. If this part of the project was not connecting the dots between the aim to make Jaywick embracing again technologies and all the principle of showcasing the real collaboration between machine and human, at least it helped me to find the balance between design pragmatism and artistic fantasy.



You can find below a link to the album. It has been separated into 6 chapters which built this project. The particularity of this music album is that it has been first composed by a machine learning system I have designed in November 2018. Each composition has been made by the machine learning when I asked it to compose it. You will see that the quality of the sounds has evolved through the album. This can be explained by the fact that I “fed” the algorithm with more existing compositions, lyrics and scores through the year. To make it easier, see below the methodology to “teach” the machine learning system to run:
  • 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>
>>>