13,398
Views
14
CrossRef citations to date
0
Altmetric
Original Articles

Generation of music pieces using machine learning: long short-term memory neural networks approach

ORCID Icon, & ORCID Icon
Pages 397-413 | Received 20 Jan 2019, Accepted 26 Jul 2019, Published online: 06 Aug 2019

Figures & data

Figure 1. Piano keyboard (Tornblom, Citation2008).

Figure 1. Piano keyboard (Tornblom, Citation2008).

Figure 2. Synthesia screenshot.

Figure 2. Synthesia screenshot.

Figure 3. MIDI messages.

Figure 3. MIDI messages.

Figure 4. LSTM memory cell (Donges, Citation2018).

Figure 4. LSTM memory cell (Donges, Citation2018).

Figure 5. Three-layer LSTM network (Graves, Citation2014).

Figure 5. Three-layer LSTM network (Graves, Citation2014).

Figure 6. Proposed architecture.

Figure 6. Proposed architecture.

Figure 7. Song format conversion process.

Figure 7. Song format conversion process.

Figure 8. Encoding method.

Figure 8. Encoding method.

Figure 9. Transposition from C major to F major (Clementstheory.com, Citation2018).

Figure 9. Transposition from C major to F major (Clementstheory.com, Citation2018).

Figure 10. Augmentation process.

Figure 10. Augmentation process.

Figure 11. Sliding window.

Figure 11. Sliding window.

Figure 12. NN training.

Figure 12. NN training.

Figure 13. Music generating method.

Figure 13. Music generating method.

Figure 14. Dataset key count. X-axis: Key in numbers, y-axis: Normalized frequency.

Figure 14. Dataset key count. X-axis: Key in numbers, y-axis: Normalized frequency.

Figure 15. Note occurrences. X-axis: Piano key in numbers, y-axis: Un-normalized frequency.

Figure 15. Note occurrences. X-axis: Piano key in numbers, y-axis: Un-normalized frequency.

Figure 16. Architecture of the NN.

Figure 16. Architecture of the NN.

Figure 17. Testing LSTM layer sizes. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.

Figure 17. Testing LSTM layer sizes. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.

Figure 18. Testing dropout values. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.

Figure 18. Testing dropout values. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.

Figure 19. Testing different optimizers. (a) Training F-measure, (b) training loss, (c) testing F-Measure, (d) testing loss.

Figure 19. Testing different optimizers. (a) Training F-measure, (b) training loss, (c) testing F-Measure, (d) testing loss.

Figure 20. Testing augmentation values. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing Loss.

Figure 20. Testing augmentation values. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing Loss.

Figure 21. Testing batch sizes. (a) Training F-measure, (b) training Loss, (c) testing F-measure, (d) testing loss batch sizes 128 (red), 256 (blue), 512 (orange), and 1024 (grey).

Figure 21. Testing batch sizes. (a) Training F-measure, (b) training Loss, (c) testing F-measure, (d) testing loss batch sizes 128 (red), 256 (blue), 512 (orange), and 1024 (grey).

Figure 22. Testing window sizes. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.

Figure 22. Testing window sizes. (a) Training F-measure, (b) training loss, (c) testing F-measure, (d) testing loss.