def train(self, score): notes= score.get_first_voice() for n1, n2, n3 in zip(notes, notes[1:], notes[2:]): if n1.is_silence or n2.is_silence or n3.is_silence: continue features= get_features(n1, n2, n3) for feature_name, value in features.iteritems(): self.narmour_features_cnt[feature_name][value]+=1
def get_prob(self, n1, n2, n3, use_harmony=None, feature_name=None): if use_harmony is None: use_harmony= self.use_harmony features= get_features(n1, n2, n3) res= 1.0 if self.use_narmour: res*= self.get_features_prob(features, feature_name) if use_harmony: if isinstance(n3, int): n3= Note(n3) # XXX que paso aca? if n3 not in self.notes_distr: import ipdb;ipdb.set_trace() res*= self.notes_distr[n3] return res