def note_generation(self, input, shape): starter = numpy.reshape(input, shape) prediction = self.model.predict(starter, verbose=0) index = numpy.argmax(prediction) newNote = Note.Note([], []) newNote.setFromIndex(index) return newNote
def edit_note(note_res): _id = request.query._id date = request.forms.get('date') odometr = request.forms.get('odometr') type_to_do = request.forms.get('type_to_do') info = request.forms.get('info') try: date = date_parse(date) except DateValueError: note = note_res.find_one(note_object_to_dict(Note(_id))) return template('templates/edit_note', note=note, dateerror=True) note = Note(_id=_id, date=date, odometr=odometr, type_to_do=type_to_do, info=info) note_res.save(note_object_to_dict(note)) redirect('/')
def generate(self, starter): melody = [] for noteIndex in range(50): input = numpy.reshape(starter, (1, SEQUENCE_LEN, 450)) prediction = self.model.predict(input, verbose=0) index = numpy.argmax(prediction) newNote = Note.Note([], []) newNote.setFromIndex(index) melody.append(newNote) starter = starter[1:] starter.append(newNote.getOneHot()) return melody
def add_note(note_res): date = request.forms.get('date') odometr = request.forms.get('odometr') type_to_do = request.forms.get('type_to_do') info = request.forms.get('info') try: date = date_parse(date) except DateValueError: list_of_notes = note_res.list() return template('templates/home', list_of_notes=list_of_notes, dateerror=True) note = Note(date=date, odometr=odometr, type_to_do=type_to_do, info=info) note_res.save(note_object_to_dict(note)) redirect('/')
def _changeM21NoteToNote(M21Note): pitchVector = [0]*45 durationVector = [0]*10 if int(M21Note.duration.quarterLength) > 4: raise Exception("Duration too long") minIndex = 0 minVal = 8 for i in range(10): currentVal = abs(M21Note.duration.quarterLength - QUARTER_LENGTHS[i]) if currentVal < minVal: minVal = currentVal minIndex = i durationVector[minIndex] = 1 if M21Note.isClassOrSubclass((note.Note,)): interval_ = int(interval.Interval(note.Note('c3'), M21Note).cents / 100) if interval_ < 0.0 or interval_ > 44.0: raise Exception("Pitch out of scale") pitchVector[int(interval_)] = 1 return Note.Note(pitchVector, durationVector)
starter = Tune.Tune("../ABC/ABCChina06") inputIndex = 5 inputIndex2 = 15 ############################################################################ environment.set('musicxmlPath', '/bin/musescore3') ND_model = NeuralNetwork.NeuralNetwork() ND_model.load_model(ND_modelFilepath) starterInput, temp = starter.getTrainData(ND_sequenceLength) ND_input = starterInput[inputIndex] ND_inputShape = (1, ND_sequenceLength, 450) NN_model = NeuralNetwork.NeuralNetwork() NN_model.load_model(NN_modelFilepath) starterInput, temp = starter.getTrainData(NN_sequenceLength) NN_input = starterInput[inputIndex] NN_inputShape = (1, NN_sequenceLength, 450) melody = [] for noteIndex in range(newMelodyLength): duration = ND_model.pod_generation(ND_input, ND_inputShape) note = NN_model.note_generation(NN_input, NN_inputShape) melody.append(Note.Note(note.pitchVector, duration)) ND_input = updateNoteInput(ND_input, melody[-1]) NN_input = updateNoteInput(NN_input, melody[-1]) MusicConverter.convert(melody, MUSIC_STREAM).show('musicxml') compareNewMelody(melody)
NP_modelFilepath = "weights/note-pitch" NP_sequenceLength = 0 newMelodyLength = 0 starter = Tune.Tune("ABC/ABCChina06") ############################################################################ environment.set('musicxmlPath', '/bin/musescore3') DD_model = NeuralNetwork.NeuralNetwork() DD_model.load_model(DD_modelFilepath) DD_input, temp = starter.getTrainData_noteDuration(DD_sequenceLength) DD_inputShape = (1, DD_sequenceLength, len(DD_input[0])) NP_model = NeuralNetwork.NeuralNetwork() NP_model.load_model(NP_modelFilepath) NP_input, temp = starter.getTrainData(NP_sequenceLength) NP_inputShape = (1, NP_sequenceLength, len(NP_input[0])) melody = [] for noteIndex in range(newMelodyLength): duration = DD_model.pod_generation(DD_input, DD_inputShape) pitch = NP_model.pod_generation(NP_input, NP_inputShape) melody.append(Note.Note(pitch, duration)) updatePoDInput(DD_input, duration) updateNoteInput(NP_input, melody[-1]) MusicConverter.convert(melody, MUSIC_STREAM).show('musicxml') compareNewMelody(melody)
def delete_note(note_res): _id = request.query._id note_res.remove(Note(_id)) redirect('/')
def edit_note(note_res): _id = request.query._id note = note_res.find_one(note_object_to_dict(Note(_id))) return template('templates/edit_note', note=note, dateerror=None)
inputIndex = 0 inputIndex2 = 0 ############################################################################ environment.set('musicxmlPath', '/bin/musescore3' ) ND_model = NeuralNetwork.NeuralNetwork() ND_model.load_model(ND_modelFilepath) starterInput, temp = starter.getTrainData(ND_sequenceLength) ND_input = starterInput[inputIndex] ND_inputShape = (1, ND_sequenceLength, 450) NP_model = NeuralNetwork.NeuralNetwork() NP_model.load_model(NP_modelFilepath) starterInput, temp = starter.getTrainData(NP_sequenceLength) NP_input = starterInput[inputIndex2] NP_inputShape = (1, NP_sequenceLength, 450) melody = [] for noteIndex in range(newMelodyLength): duration = ND_model.pod_generation(ND_input, ND_inputShape) pitch = NP_model.pod_generation(NP_input, NP_inputShape) melody.append(Note.Note(list(pitch), list(duration))) ND_input = updateNoteInput(ND_input, melody[-1]) NP_input = updateNoteInput(NP_input, melody[-1]) MusicConverter.convert(melody, MUSIC_STREAM).show('musicxml') compareNewMelody(melody)