def __init__()

in sing/nsynth/__init__.py [0:0]


    def __init__(self, path):
        self.path = Path(path)

        # Cache the json to avoid reparsing it everytime
        if self.path in self._json_cache:
            self._metadata = self._json_cache[self.path]
        else:
            if self.path.suffix == ".gz":
                file = gzip.open(self.path)
            else:
                file = open(self.path, "rb")
            self._metadata = json.load(file)
            self._map_velocity(self._metadata)
            self._json_cache[self.path] = self._metadata

        self.names = sorted(self._metadata.keys())

        # Compute the mapping instrument_name -> instrument id
        self.instruments = {}
        for meta in self._metadata.values():
            self.instruments[meta["instrument_str"]] = meta["instrument"]

        # Compute the cardinality for the features velocity, instrument,
        # pitch and instrument_family
        self.cardinalities = {}
        for feature in self._FEATURES:
            self.cardinalities[feature] = 1 + max(
                i[feature] for i in self._metadata.values())