def load(self, filename): from isobar.io.midifile import MidiFileIn from isobar.pattern.sequence import PSeq reader = MidiFileIn() d = reader.read(filename) d = dict([(key, PSeq(value, 1)) for key, value in d.items()]) return PDict(d)
def __init__(self, value=None): from isobar.pattern.sequence import PSeq self.dict = {} if type(value) == dict: self.dict = value elif type(value) == list: self.dict = {} try: keys = value[0].keys() for key in keys: self.dict[key] = PSeq([item[key] for item in value], 1) except IndexError: pass
def __init__(self, value={}): from isobar.pattern.sequence import PSeq self.dict = {} if isinstance(value, dict): self.dict = value elif isinstance(value, list): self.dict = {} try: keys = value[0].keys() for key in keys: self.dict[key] = PSeq([item[key] for item in value], 1) except IndexError: pass
def pattern(v): """ Patternify a value, turning it into an object with a next() method to obtain its next value. Pattern subclasses remain untouched. Lists are turned into PSeq sequences. Scalars and other objects are turned into PConst objects. """ from isobar.pattern.sequence import PSeq if isinstance(v, Pattern): return v elif isinstance(v, list): return PSeq(v, 1) else: return PConst(v)