Example #1
0
 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)
Example #2
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()
Example #3
0
 def finish(self, t):
     notice("quit")
     self.terminate()
Example #4
0
 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)
Example #5
0
    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)