====== Differences ====== This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
deepcomposer [2015/10/25 10:15] aljanaki [Datasets Used] |
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 (LSTM) architecture 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 84: | Line 83: | ||
| 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. | 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. | ||
| - | |||
| - | Here is an example. A song "Es flog ein klein Waldvogelein" is accompanied by chords (the long stripes under the melody are chords). | ||
| - | |||
| - | {{:esac_harm.png?800|}} | ||
| Line 101: | 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 114: | 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 121: | 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. | ||