# Build the ngram from the track ngram = MultiInstrumentNGram(nsize) ngram.build_from_transcript(transcript) # Generate tracks scheduled_tracks = Generator.generate_multi_instrument_tracks(ngram, ticks) # Create a Pattern Schedule pattern_schedule = PatternSchedule(scheduled_tracks=scheduled_tracks, meta=transcript.get_transcript_meta()) # Convert the Pattern Schedule to an actual Midi Pattern and write it to file MidiFileWriter(pattern_schedule).save_to_file(output_midi_file_name) # Play the generated music reader.play_music(output_midi_file_name) Policies.FrameSelectionPolicy.PERFECT = "perfect" class SingleInstrumentPerfectGenerator(SingleInstrumentGenerator): def __init__(self, ngram, duration, meta_track): super(SingleInstrumentPerfectGenerator, self).__init__(ngram, duration, meta_track) def next_perfect_frame(self): # Implement your perfect frame selection algorithm pass def next_frame(self, last_frame_component): super(SingleInstrumentPerfectGenerator, self).next_frame(last_frame_component) if Policies.frame_selection_policy == Policies.FrameSelectionPolicy.PERFECT:
in_transcript = reader.load_transcript(file1) in_transcript2 = reader.load_transcript(file2) ngram = MultiInstrumentNGram(nsize) ngram.build_from_transcript(in_transcript) ngram.build_from_transcript(in_transcript2) scheduled_tracks = Generator.generate_multi_instrument_tracks(ngram, ticks) return PatternSchedule(scheduled_tracks=scheduled_tracks, meta=in_transcript.get_transcript_meta()) def run_from_eminem_music(): files = listdir("music/Eminem") ignored = ["music/Eminem/business.mid", "music/Eminem/forgotaboutdre.mid", "music/Eminem/purple pills.mid"] # "music/Eminem/Under_The_Influence.mid"] ngram = MultiInstrumentNGram(nsize) last_transcript = None for file in files: path = "music/Eminem/" + file if path not in ignored: print path transcript = reader.load_transcript(path) ngram.build_from_transcript(transcript) last_transcript = transcript scheduled_tracks = Generator.generate_multi_instrument_tracks(ngram, ticks) return PatternSchedule(scheduled_tracks=scheduled_tracks, meta=last_transcript.get_transcript_meta()) # pattern_schedule = reproduce() pattern_schedule = run_from_eminem_music() MidiFileWriter(pattern_schedule).save_to_file(output_file) reader.play_music(output_file)