Пример #1
0
    def __init__(self, track_id, data_home=None):
        if track_id not in DATA.index:
            raise ValueError(
                '{} is not a valid track ID in Beatles'.format(track_id))

        self.track_id = track_id

        if data_home is None:
            data_home = utils.get_default_dataset_path(DATASET_DIR)

        self._data_home = data_home
        self._track_paths = DATA.index[track_id]
        self.beats_path = utils.none_path_join(
            [self._data_home, self._track_paths['beat'][0]])
        self.chords_path = os.path.join(self._data_home,
                                        self._track_paths['chords'][0])
        self.keys_path = utils.none_path_join(
            [self._data_home, self._track_paths['keys'][0]])
        self.sections_path = os.path.join(self._data_home,
                                          self._track_paths['sections'][0])
        self.audio_path = os.path.join(self._data_home,
                                       self._track_paths['audio'][0])

        self.title = os.path.basename(
            self._track_paths['sections'][0]).split('.')[0]
Пример #2
0
    def __init__(self, track_id, data_home=None):
        if track_id not in DATA.index:
            raise ValueError('{} is not a valid track ID in Salami'.format(track_id))

        self.track_id = track_id

        if data_home is None:
            data_home = utils.get_default_dataset_path(DATASET_DIR)

        self._data_home = data_home
        self._track_paths = DATA.index[track_id]
        self.sections_annotator1_uppercase_path = utils.none_path_join(
            [self._data_home, self._track_paths['annotator_1_uppercase'][0]]
        )
        self.sections_annotator1_lowercase_path = utils.none_path_join(
            [self._data_home, self._track_paths['annotator_1_lowercase'][0]]
        )
        self.sections_annotator2_uppercase_path = utils.none_path_join(
            [self._data_home, self._track_paths['annotator_2_uppercase'][0]]
        )
        self.sections_annotator2_lowercase_path = utils.none_path_join(
            [self._data_home, self._track_paths['annotator_2_lowercase'][0]]
        )

        metadata = DATA.metadata(data_home)
        if metadata is not None and track_id in metadata.keys():
            self._track_metadata = metadata[track_id]
        else:
            # annotations with missing metadata
            self._track_metadata = {
                'source': None,
                'annotator_1_id': None,
                'annotator_2_id': None,
                'duration': None,
                'title': None,
                'artist': None,
                'annotator_1_time': None,
                'annotator_2_time': None,
                'class': None,
                'genre': None,
            }
        self.audio_path = os.path.join(self._data_home, self._track_paths['audio'][0])
        self.source = self._track_metadata['source']
        self.annotator_1_id = self._track_metadata['annotator_1_id']
        self.annotator_2_id = self._track_metadata['annotator_2_id']
        self.duration = self._track_metadata['duration']
        self.title = self._track_metadata['title']
        self.artist = self._track_metadata['artist']
        self.annotator_1_time = self._track_metadata['annotator_1_time']
        self.annotator_2_time = self._track_metadata['annotator_2_time']
        self.broad_genre = self._track_metadata['class']
        self.genre = self._track_metadata['genre']
Пример #3
0
    def __init__(self, track_id, data_home):
        if track_id not in DATA.index['tracks']:
            raise ValueError(
                "{} is not a valid track ID in Salami".format(track_id))

        self.track_id = track_id

        self._data_home = data_home
        self._track_paths = DATA.index['tracks'][track_id]
        self.sections_annotator1_uppercase_path = utils.none_path_join(
            [self._data_home, self._track_paths["annotator_1_uppercase"][0]])
        self.sections_annotator1_lowercase_path = utils.none_path_join(
            [self._data_home, self._track_paths["annotator_1_lowercase"][0]])
        self.sections_annotator2_uppercase_path = utils.none_path_join(
            [self._data_home, self._track_paths["annotator_2_uppercase"][0]])
        self.sections_annotator2_lowercase_path = utils.none_path_join(
            [self._data_home, self._track_paths["annotator_2_lowercase"][0]])

        metadata = DATA.metadata(data_home)
        if metadata is not None and track_id in metadata.keys():
            self._track_metadata = metadata[track_id]
        else:
            # annotations with missing metadata
            self._track_metadata = {
                "source": None,
                "annotator_1_id": None,
                "annotator_2_id": None,
                "duration": None,
                "title": None,
                "artist": None,
                "annotator_1_time": None,
                "annotator_2_time": None,
                "class": None,
                "genre": None,
            }
        self.audio_path = os.path.join(self._data_home,
                                       self._track_paths["audio"][0])
        self.source = self._track_metadata["source"]
        self.annotator_1_id = self._track_metadata["annotator_1_id"]
        self.annotator_2_id = self._track_metadata["annotator_2_id"]
        self.duration = self._track_metadata["duration"]
        self.title = self._track_metadata["title"]
        self.artist = self._track_metadata["artist"]
        self.annotator_1_time = self._track_metadata["annotator_1_time"]
        self.annotator_2_time = self._track_metadata["annotator_2_time"]
        self.broad_genre = self._track_metadata["class"]
        self.genre = self._track_metadata["genre"]
Пример #4
0
    def __init__(self, track_id, data_home):
        if track_id not in DATA.index['tracks']:
            raise ValueError(
                "{} is not a valid track ID in Beatles".format(track_id))

        self.track_id = track_id

        self._data_home = data_home
        self._track_paths = DATA.index['tracks'][track_id]
        self.beats_path = utils.none_path_join(
            [self._data_home, self._track_paths["beat"][0]])
        self.chords_path = os.path.join(self._data_home,
                                        self._track_paths["chords"][0])
        self.keys_path = utils.none_path_join(
            [self._data_home, self._track_paths["keys"][0]])
        self.sections_path = os.path.join(self._data_home,
                                          self._track_paths["sections"][0])
        self.audio_path = os.path.join(self._data_home,
                                       self._track_paths["audio"][0])

        self.title = os.path.basename(
            self._track_paths["sections"][0]).split(".")[0]
Пример #5
0
    def __init__(self, track_id, data_home=None):
        if track_id not in DATA.index:
            raise ValueError(
                '{} is not a valid track ID in Groove MIDI'.format(track_id))

        self.track_id = track_id

        if data_home is None:
            data_home = utils.get_default_dataset_path(DATASET_DIR)

        self._data_home = data_home
        self._track_paths = DATA.index[track_id]

        metadata = DATA.metadata(data_home)
        if metadata is not None and track_id in metadata:
            self._track_metadata = metadata[track_id]
        else:
            self._track_metadata = {
                "drummer": None,
                "session": None,
                "style": None,
                "tempo": None,
                "beat_type": None,
                "time_signature": None,
                "midi_filename": None,
                "audio_filename": None,
                "duration": None,
                "split": None,
            }

        self.drummer = self._track_metadata["drummer"]
        self.session = self._track_metadata["session"]
        self.style = self._track_metadata["style"]
        self.tempo = self._track_metadata["tempo"]
        self.beat_type = self._track_metadata["beat_type"]
        self.time_signature = self._track_metadata["time_signature"]
        self.duration = self._track_metadata["duration"]
        self.split = self._track_metadata["split"]
        self.midi_filename = self._track_metadata["midi_filename"]
        self.audio_filename = self._track_metadata["audio_filename"]

        self.midi_path = os.path.join(self._data_home,
                                      self._track_paths["midi"][0])

        self.audio_path = utils.none_path_join(
            [self._data_home, self._track_paths["audio"][0]])
Пример #6
0
    def __init__(self, track_id, data_home):
        if track_id not in DATA.index['tracks']:
            raise ValueError(
                '{} is not a valid track ID in Saraga'.format(track_id))

        self.track_id = track_id

        self._data_home = data_home
        self._track_paths = DATA.index['tracks'][track_id]

        # Audio path
        self.audio_path = os.path.join(self._data_home,
                                       self._track_paths['audio'][0])

        # Annotation paths
        self.ctonic_path = utils.none_path_join(
            [self._data_home, self._track_paths['ctonic'][0]])
        self.pitch_path = utils.none_path_join(
            [self._data_home, self._track_paths['pitch'][0]])
        self.pitch_vocal_path = utils.none_path_join(
            [self._data_home, self._track_paths['pitch_vocal'][0]])
        self.tempo_path = utils.none_path_join(
            [self._data_home, self._track_paths['tempo'][0]])
        self.sama_path = utils.none_path_join(
            [self._data_home, self._track_paths['sama'][0]])
        self.sections_path = utils.none_path_join(
            [self._data_home, self._track_paths['sections'][0]])
        self.phrases_path = utils.none_path_join(
            [self._data_home, self._track_paths['phrases'][0]])
        self.metadata_path = utils.none_path_join(
            [self._data_home, self._track_paths['metadata'][0]])

        # Flag to separate between carnatinc and hindustani tracks
        self.iam_style = str(self.track_id.split('_')[0])

        # CARNATIC MUSIC TRACKS
        if self.iam_style == 'carnatic':
            metadata = DATA.metadata(self.metadata_path)
            if metadata is not None and track_id == metadata['track_id']:
                self._track_metadata = metadata
            else:
                # annotations with missing metadata
                self._track_metadata = {
                    'raaga': None,
                    'form': None,
                    'title': None,
                    'work': None,
                    'length': None,
                    'taala': None,
                    'album_artists': None,
                    'mbid': None,
                    'artists': None,
                    'concert': None,
                }

        # HINDUSTANI MUSIC TRACKS
        if self.iam_style == 'hindustani':
            metadata = DATA.metadata(self.metadata_path)
            if metadata is not None and track_id == metadata['track_id']:
                self._track_metadata = metadata
            else:
                # annotations with missing metadata
                self._track_metadata = {
                    'title': None,
                    'raags': None,
                    'length': None,
                    'album_artists': None,
                    'forms': None,
                    'mbid': None,
                    'artists': None,
                    'release': None,
                    'works': None,
                    'taals': None,
                    'layas': None,
                }

        # Common attributes for Hindustani and Carnatic tracks
        self.title = self._track_metadata['title']
        self.artists = self._track_metadata['artists']
        self.album_artists = self._track_metadata['album_artists']
        self.mbid = self._track_metadata['mbid']

        # Carnatic specific attributes
        self.raaga = (self._track_metadata['raaga']
                      if 'raaga' in self._track_metadata.keys() is not None
                      else None)
        self.form = (self._track_metadata['form']
                     if 'form' in self._track_metadata.keys() is not None else
                     None)
        self.work = (self._track_metadata['work']
                     if 'work' in self._track_metadata.keys() is not None else
                     None)
        self.taala = (self._track_metadata['taala']
                      if 'taala' in self._track_metadata.keys() is not None
                      else None)
        self.concert = (self._track_metadata['concert']
                        if 'concert' in self._track_metadata.keys() is not None
                        else None)

        # Hindustani specific attributes
        self.raags = (self._track_metadata['raags']
                      if 'raags' in self._track_metadata.keys() is not None
                      else None)
        self.forms = (self._track_metadata['forms']
                      if 'forms' in self._track_metadata.keys() is not None
                      else None)
        self.release = (self._track_metadata['release']
                        if 'release' in self._track_metadata.keys() is not None
                        else None)
        self.works = (self._track_metadata['works']
                      if 'works' in self._track_metadata.keys() is not None
                      else None)
        self.taals = (self._track_metadata['taals']
                      if 'taals' in self._track_metadata.keys() is not None
                      else None)
        self.layas = (self._track_metadata['layas']
                      if 'layas' in self._track_metadata.keys() is not None
                      else None)