コード例 #1
0
 def testExtractLeadSheetFragmentsCoincidentChords(self):
     music_testing_lib.add_track_to_sequence(self.note_sequence,
                                             0, [(12, 100, 2, 4),
                                                 (11, 1, 6, 11)])
     music_testing_lib.add_track_to_sequence(self.note_sequence,
                                             1, [(12, 127, 2, 4),
                                                 (14, 50, 6, 8),
                                                 (50, 100, 33, 37),
                                                 (52, 100, 34, 37)])
     music_testing_lib.add_chords_to_sequence(self.note_sequence,
                                              [('C', 2), ('G7', 6),
                                               ('Cmaj7', 33), ('F', 33)])
     quantized_sequence = sequences_lib.quantize_note_sequence(
         self.note_sequence, steps_per_quarter=1)
     lead_sheets, _ = lead_sheet_pipelines.extract_lead_sheet_fragments(
         quantized_sequence,
         min_bars=1,
         gap_bars=2,
         min_unique_pitches=2,
         ignore_polyphonic_notes=True,
         require_chords=True)
     melodies, _ = melody_pipelines.extract_melodies(
         quantized_sequence,
         min_bars=1,
         gap_bars=2,
         min_unique_pitches=2,
         ignore_polyphonic_notes=True)
     chord_progressions, _ = chord_pipelines.extract_chords_for_melodies(
         quantized_sequence, melodies)
     # Last lead sheet should be rejected for coincident chords.
     self.assertEqual(list(melodies[:2]),
                      list(lead_sheet.melody for lead_sheet in lead_sheets))
     self.assertEqual(list(chord_progressions[:2]),
                      list(lead_sheet.chords for lead_sheet in lead_sheets))
コード例 #2
0
 def testExtractLeadSheetFragments(self):
     music_testing_lib.add_track_to_sequence(self.note_sequence, 0,
                                             [(12, 100, .5, 1),
                                              (11, 1, 1.5, 2.75)])
     music_testing_lib.add_track_to_sequence(self.note_sequence, 1,
                                             [(12, 127, .5, 1),
                                              (14, 50, 1.5, 2),
                                              (50, 100, 8.25, 9.25),
                                              (52, 100, 8.5, 9.25)])
     music_testing_lib.add_chords_to_sequence(self.note_sequence,
                                              [('C', .5), ('G7', 1.5),
                                               ('Cmaj7', 8.25)])
     quantized_sequence = sequences_lib.quantize_note_sequence(
         self.note_sequence, self.steps_per_quarter)
     lead_sheets, _ = lead_sheet_pipelines.extract_lead_sheet_fragments(
         quantized_sequence,
         min_bars=1,
         gap_bars=2,
         min_unique_pitches=2,
         ignore_polyphonic_notes=True,
         require_chords=True)
     melodies, _ = melody_pipelines.extract_melodies(
         quantized_sequence,
         min_bars=1,
         gap_bars=2,
         min_unique_pitches=2,
         ignore_polyphonic_notes=True)
     chord_progressions, _ = chord_pipelines.extract_chords_for_melodies(
         quantized_sequence, melodies)
     self.assertEqual(list(melodies),
                      list(lead_sheet.melody for lead_sheet in lead_sheets))
     self.assertEqual(list(chord_progressions),
                      list(lead_sheet.chords for lead_sheet in lead_sheets))