def save(self, collection=None, name=None, force=False): """Save the annotation to the corpus""" if not collection: choice = cgui.menu(self.stdscr, 'Collection', annotationcorpus.collections() + ['Add new collection']) if choice == -1: return elif choice == len(annotationcorpus.collections()): collection = cgui.prompt(self.stdscr, 'Collection?') else: collection = annotationcorpus.collections()[choice] if not name: name = self.name metadata = {'beatdiv':self.meter.beatdiv, 'beatspb':self.meter.beatspb, 'offset':self.offset, 'bpm':self.bpm, 'name':self.name} if annotationcorpus.exists(collection, name) and not force: if cgui.menu(self.stdscr, 'Item exists, overwrite?', ['No', 'Yes']) != 1: return annotationcorpus.save(collection, name, metadata, sorted(self.annotations, key=lambda x: x[0]), self.notelist, self.midifile)
def load(self, collection=None, name=None): if not collection: collection = annotationcorpus.collections()[\ cgui.menu(self.stdscr, 'Choose collection', annotationcorpus.collections())] results = annotationcorpus.load(collection, name) if results: self.annotations = [] self.midifile = annotationcorpus.load_midifile(collection, name) for result in results: self.annotations += result.annotation metadata = results[0].metadata self.notelist = results[0].notes self.bpm = metadata['bpm'] self.offset = metadata['offset'] self.name = metadata['name'] self.meter = meter.Meter(metadata['beatspb'], metadata['beatdiv']) self.refreshAnnotation = True self.refreshMidi = True return True return False