Exemplo n.º 1
0
def dataset(data_dir):
    r"""
    Given a directory filled with data files, create a corresponding
    dataset.
    """
    data = SupervisedDataSet(NUMBER_INPUTS, SUPPORTED_FRETS)
    for piece in os.listdir(data_dir):
        LOG.info('Adding samples from piece: {p}'.format(p=piece))
        full_path = os.path.join(data_dir, piece)
        tracks = read_standard_tracks(full_path)
        for track in tracks:
            limiting_notes_generator = limiting_notes(track)
            try:
                next_limitation = limiting_notes_generator.next()
            except StopIteration:
                next_limitation = None
            for context in chord_contexts(track):
                context = (context[0],
                           context[1],
                           context[2],  # **physical** successors!
                           context[3],
                           context[4],
                           next_limitation)
                LOG.debug('Chord context: {c}'.format(c=context))
                chord_entry = context[1]
                # sample data yields once for each note in chord!
                for (inputs, outputs) in _sample_data(*context):
                    data.addSample(inputs, outputs)
                while next_limitation and next_limitation[1] <= chord_entry:
                    try:
                        next_limitation = limiting_notes_generator.next()
                    except StopIteration:
                        next_limitation = None
    return data
Exemplo n.º 2
0
 def test_tracks_one_nonstandard(self, mock_read_related_string_lines):
     related_lines = [['E|-----------|----------|',
                       'B|-----------|----------|',
                       'G|-----------|----------|',
                       'D|-----------|----------|',
                       'A|--9---10---|---5---7--|',
                       'E|-----------|----------|',
                       'E|---------|----------|',
                       'B|---------|----------|',
                       'G|---------|----------|',
                       'D|---------|----------|',
                       'A|--7--2---|--3---5---|',
                       'E|---------|----------|'],
                      ['E|-----------|-----------|',
                       'B|-----------|-----------|',
                       'G|--2--4--6--|--9--8--7--|',
                       'D|-----------|-----------|',
                       'E|-----------|-----------|',
                       'B|-----------|-----------|',
                       'G|--2--4--6--|--9--8--7--|',
                       'D|-----------|-----------|'],
                      ['E|-----------|----------|',
                       'B|-----------|----------|',
                       'G|-----------|----------|',
                       'D|-----------|----------|',
                       'A|--9---10---|---5---7--|',
                       'E|-----------|----------|']
                     ]
     mock_read_related_string_lines.return_value = related_lines
     track1 = ['E|-----------|----------|---------|----------|',
               'B|-----------|----------|---------|----------|',
               'G|-----------|----------|---------|----------|',
               'D|-----------|----------|---------|----------|',
               'A|--9---10---|---5---7--|--7--2---|--3---5---|',
               'E|-----------|----------|---------|----------|']
     track3 = ['E|-----------|----------|',
               'B|-----------|----------|',
               'G|-----------|----------|',
               'D|-----------|----------|',
               'A|--9---10---|---5---7--|',
               'E|-----------|----------|']
     expected = [track1, track3]
     self.assertEqual(parse.read_standard_tracks(''), expected)
Exemplo n.º 3
0
 def test_no_related_lines(self, mock_read_related_string_lines):
     related_lines = []
     mock_read_related_string_lines.return_value = []
     expected = []
     self.assertEqual(parse.read_standard_tracks(''), expected)