J'ai créé un code qui génère un score au hasard. Utilisez-le pour créer un ensemble de données de scores d'apprentissage automatique.
--chromebook debian9 (étirement)
bibliothèque python:
doux:
randomScore.py
import music21 as m21
from numpy.random import choice
def makeScore(symbleNum=200, scoreNum=20, noteRange=[3, 4, 5, 6, 7],
noteRangeProbs=[0.05, 0.4, 0.4, 0.1, 0.05], sharpProb=0.1,
restProb=0.2, exportDir='/home'):
'''
symbleNum:Combien de notes et de silences par feuille de musique
scoreNum:Combien de scores générer
noteRange:Combien d'octaves dans lesquelles se trouvent les notes (par défaut, C3 à B)#Jusqu'à 7)
noteRangeProbs:Une liste des probabilités d'apparition de chaque note par octave
sharpProb:Probabilité d'affûter les notes
restProb:Probabilité de repos
exportDir:Où enregistrer le fichier de sortie
===========================
Par défaut, le nom du fichier est 1, 2, 3, ...Il est devenu.
.Il existe différents fichiers autres que le fichier png, mais vous pouvez les supprimer.
'''
quarterLengths = [4, 2.5, 2, 1.5, 1, 0.75, 0.5, 0.25]
notes = ['C', 'D', 'E', 'F', 'G', 'A', 'B']
noteRange = list(map(lambda x: str(x), noteRange))
typeProbs = [1 - restProb, restProb]
sharpProbs = [sharpProb, 1 - sharpProb]
chooseThese = [True, False]
for i in range(scoreNum):
noteList = []
measure = m21.stream.Measure()
for j in range(symbleNum):
if choice(a=chooseThese, p=typeProbs):
if choice(a=chooseThese, p=sharpProbs):
pitchName = choice(notes) + '#' + choice(a=noteRange, p=noteRangeProbs)
else:
pitchName = choice(notes) + choice(a=noteRange, p=noteRangeProbs)
n = m21.note.Note(pitchName, quarterLength=choice(quarterLengths))
noteList.append(n)
else:
n = m21.note.Rest(quarterLength = choice(quarterLengths))
noteList.append(n)
measure.append(noteList)
fileName = exportDir + str(i)
measure.write('lily.png', fileName)
if __name__ == "__main__":
makeScore()
etc
Recommended Posts