User Tools

Site Tools


deepcomposer

====== Differences ====== This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
deepcomposer [2015/10/25 09:58]
aljanaki [Possible Datasets]
deepcomposer [2015/10/25 17:28] (current)
eraoul [Summary]
Line 2: Line 2:
  
 | Authors | Anna Aljanaki, Stefan Balke, Ryan Groves, Eugene Krofto, Eric Nichols | | Authors | Anna Aljanaki, Stefan Balke, Ryan Groves, Eugene Krofto, Eric Nichols |
-| Affiliation | Fake University | 
 | Code | [[https://​github.com/​stefan-balke/​hamr2015-lstm-music-gen|Github Link]] | | Code | [[https://​github.com/​stefan-balke/​hamr2015-lstm-music-gen|Github Link]] |
  
Line 9: Line 8:
   * Collect several symbolic song datasets, with melody and possibly chords   * Collect several symbolic song datasets, with melody and possibly chords
   * Represent data in a common vector format appropriate for input to a neural net   * Represent data in a common vector format appropriate for input to a neural net
-  * Develop ​an LSTM architecture for generation of melody/​chord output.+  * Develop ​a Long Short-Term Memory (LSTMarchitecture for generation of melody/​chord output.
   * **Goal:** Given a melody and chord sequence, generate melody with chords.   * **Goal:** Given a melody and chord sequence, generate melody with chords.
   * Make music!   * Make music!
Line 39: Line 38:
 ==== Datasets Used ==== ==== Datasets Used ====
  
-We decided to use three separate databases in order to validate that the results we were getting related to the data that we used in training. We chose from different styles for that reason+We decided to use three separate databases in order to validate that the results we were getting related to the data that we used in training. We chose from different styles for that reason.
  
 **Rolling Stone 500** **Rolling Stone 500**
Line 45: Line 44:
  
 **Essen Folksong Database** **Essen Folksong Database**
-The [[http://​www.esac-data.org/​|Essen Folksong Database]] provides over 20,000 songs in digital format.+The [[http://​www.esac-data.org/​|Essen Folksong Database]] provides over 20,000 songs in digital format. We used a dataset of 6008 songs which are in the public domain.
  
 **Weimar Jazz Database** **Weimar Jazz Database**
Line 82: Line 81:
  
 Our harmony encoding simply consisted of a separate 12-unit vector with the pitch-classes of each tone that was part of the underlying harmony set to one. Our hope was that the LSTM would intuit that the harmony related to the melody in the same time slice. ​ Our harmony encoding simply consisted of a separate 12-unit vector with the pitch-classes of each tone that was part of the underlying harmony set to one. Our hope was that the LSTM would intuit that the harmony related to the melody in the same time slice. ​
 +
 +The Essen folk song collection does not include harmony, only monophonic melodies. We added chords ourselves, using a simplistic approach. Namely, the chords change every measure (there is only one chord associated with each measure). We find the suitable chord by creating a pitch class histogram for a measure (which takes into account the duration of the notes that sounded in the measure) and finding the smallest cosine distance with a mask of 24 major and minor chord triads.  ​
 +
  
 ** Encoding ** ** Encoding **
Line 94: Line 96:
  
 An example of one of the solos the Weimar Jazz Database (Note: harmony is omitted). ​ An example of one of the solos the Weimar Jazz Database (Note: harmony is omitted). ​
 +
 +
 +{{:​esac_harm.png?​800|}}
 +
 +Here is an example. A song "Es flog ein klein Waldvogelein"​ is accompanied by chords (the long stripes under the melody are chords).
 +
 +{{::​rockwithharmony.png?​800|}}
 +
 +Another example of the rock corpus, the song "​1999"​ by Prince. This time with harmony.
 +
 ==== Neural Network ==== ==== Neural Network ====
  
Line 107: Line 119:
   * 12 Pitch Classes (Chroma) with chord information.   * 12 Pitch Classes (Chroma) with chord information.
   * 5 levels of the metrical hierarchy.   * 5 levels of the metrical hierarchy.
 +
 ===== Libraries Used ===== ===== Libraries Used =====
  
Line 114: Line 127:
   * SQL Alchemy   * SQL Alchemy
   * NumPy   * NumPy
 +
 +===== Results =====
 +
 +==== Train on ESAC, Random Seed ====
 +
 +{{:​example_rnd_01.png?​800|}}
 +{{:​example_rnd_01.mp3|}}
 +
 +==== Train on ESAC, ESAC Seed, Probabilistic Sampling ====
 +
 +{{:​example_rnd_02.png?​800|}}
 +{{:​example_rnd_02.mp3|}}
 +===== Next Steps =====
 +
 +  * Try out longer training and more epoches.
 +  * Integrate harmony components.
 +  * Cross-learn:​ Learn on ESAC and harmony from jazz etc.
deepcomposer.1445781505.txt.gz ยท Last modified: 2015/10/25 09:58 by aljanaki