def onMidi(self, msg): if msg['cmd'] == 'phrase-end': notice("Received phrase: {} at {}-{}".format( msg['notes'], msg['start'], msg['end'])) p = predict(msg['notes']) if p[0][0] == "Call" and p[1] > 0.8: self.sing(question, self.finish) self.makeFace(0)
def onMidi(self, msg): notice("midi") # notice("Received phrase: {} at {}-{}".format(msg['notes'], msg['start'], msg['end'])) self.makeFace('hungry.json') self.servoAngle(135) self.delay(10) self.makeFace('eating.json') self.delay(15) self.makeFace('laugh.json') self.terminate()
def finish(self, t): notice("quit") self.terminate()
def onMidi(self, msg): notice("midi") # notice("Received phrase: {} at {}-{}".format(msg['notes'], msg['start'], msg['end'])) self.sing(question, callback=self.finish) self.makeFace('wakeup.json') self.servoAngle(135)
def onMidi(self, msg): # normal(msg) if msg['cmd'] == 'note-on': if self.lastTime == msg['time']: self.lastTime = msg['time'] return self.lastTime = msg['time'] notice(self.state) if self.state == 'config-1': normal("CONF_1") if msg['note'] in self.notes: self.makeFace("nono.json") else: self.oniSetLED(0, 2) self.oniSetLED(1, 1) self.makeFace("hint.json") self.state = 'config-2' self.notes[0] = msg['note'] return elif self.state == 'config-2': normal("CONF_2") if msg['note'] in self.notes: self.makeFace("serious-1.json") else: self.oniSetLED(1, 2) self.oniSetLED(2, 1) self.makeFace("hint.json") self.state = 'config-3' self.notes[1] = msg['note'] return elif self.state == 'config-3': normal("CONF_3") if msg['note'] in self.notes: self.makeFace("nono.json") else: self.oniSetLED(2, 2) self.makeFace("hint.json") self.delay(0.3) self.notes[2] = msg['note'] self.makeFace('happy_open.json') self.delay(1) self.makeFace('serious-2.json') self.setAlarm(5, self.hint) self.state = 'playing' self.started = True self.newSequence = True return elif self.state == 'playing' and self.started: normal("NOTE_INPUT") normal(self.inputCounter) normal(self.currentPhrase[self.inputCounter]) if msg['note'] == self.currentPhrase[self.inputCounter]: # player correctly inputs a note self.inputCounter += 1 if self.noteCount == self.inputCounter + 1: # player gets a point normal("PLAYER SCORES") self.inputCounter = 0 self.playerScore += 1 if self.playerScore == 2: # player wins! self.win('player') return self.oniShowPoints(self.playerScore, self.chirpScore) # chirp is not happy about this self.delay(0.3) self.makeFace('pityful.json') self.delay(0.5) self.makeFace('serious-1.json') # chirp's turn self.delay(1) mistake = False for note in self.currentPhrase: normal("Chirp plays") if random.random() < self.errorRate: # chirp "decides" to make a mistake self.makeFace('laugh.json') n = random.choice(self.notes) while n == note: n = random.choice(self.notes) self.noteDelay(n, 0.6) self.makeFace('serious-1.json') self.delay(0.4) # The mistake is made mistake = True break else: self.makeFace('laugh.json') self.noteDelay(note, 0.6) self.makeFace('serious-1.json') self.delay(0.4) if mistake: # a mistake was made! self.oniFail() self.makeFace('pityful.json') self.delay(0.5) self.makeFace('nono.json') self.delay(1.5) self.makeFace('serious-1.json') else: self.oniSuccess() self.makeFace('laugh.json') self.delay(1.5) self.chirpScore += 1 if self.chirpScore == 2: # chirp wins! self.win('chirp') return self.newSequence = True self.oniShowPoints(self.playerScore, self.chirpScore) else: # player fails self.oniFail() self.makeFace('laugh.json') self.delay(1.5) # chirp's turn self.delay(1) mistake = False for note in self.currentPhrase: if random.random() < self.errorRate: # chirp "decides" to make a mistake self.makeFace('laugh.json') n = random.choice(self.notes) while n == note: n = random.choice(self.notes) self.noteDelay(n, 0.6) self.makeFace('serious-1.json') self.delay(0.4) # The mistake is made mistake = True break else: self.makeFace('laugh.json') self.noteDelay(note, 0.6) self.makeFace('serious-1.json') self.delay(0.4) if mistake: # a mistake was made! self.oniFail() self.makeFace('pityful.json') self.delay(0.5) self.makeFace('nono.json') self.delay(1.5) self.makeFace('serious-1.json') else: self.oniSuccess() self.makeFace('laugh.json') self.delay(1.5) self.chirpScore += 1 if self.chirpScore == 2: # chirp wins! self.win('chirp') return self.newSequence = True self.oniShowPoints(self.playerScore, self.chirpScore) return
def onMidi(self, msg): if msg['cmd'] == 'phrase-end': notice(msg)
def test(self, t): notice("asdfasdfasdf", t) self.setAlarm(1.0, self.test)