-'''\r
-Created on 15 juil. 2009\r
-\r
-@author: Samuel Benveniste\r
-'''\r
-from gui.constants import *\r
-\r
-class Wiimote:\r
- '''\r
- Object representing a Wiimote\r
- \r
- number:\r
- The number of the Wiimote\r
- port:\r
- The pypm object representing the MIDI port on which the Wiimote emits\r
- instrument:\r
- The instrument associated with the Wiimote\r
- cursor:\r
- The cursor associated with the Wiimote\r
- '''\r
-\r
- def __init__(self, number, portNumber, port, instrument, cursor):\r
- '''\r
- Constructor\r
- \r
- number:\r
- The number of the Wiimote\r
- portNumber:\r
- The number of the port (as numbered by pypm) on which the wiimote emits\r
- port:\r
- The pypm object representing the MIDI port on which the Wiimote emits\r
- instrument:\r
- The instrument associated with the Wiimote\r
- cursor:\r
- The cursor associated with the Wiimote \r
- '''\r
- \r
- self.number = number\r
- self.portNumber = portNumber\r
- self.port = port\r
- self.instrument = instrument\r
- self.cursor = cursor\r
- self.numberPlayed = 0\r
- \r
- def getNoteOnHexCode(self):\r
- return (0x90 + self.instrument.channel - 1)\r
- \r
- def getAftertouchHexCode(self):\r
- return (0xA0 + self.instrument.channel - 1)\r
- \r
- def getCCHexCode(self):\r
- return (0xB0 + self.instrument.channel - 1)\r
- \r
- def playNote(self, note, velocity):\r
- noteNumber = self.instrument.getNote(note)\r
- \r
- if noteNumber != None :\r
- noteOnHexCode = self.getNoteOnHexCode()\r
- CCHexCode = self.getCCHexCode()\r
- else :\r
- noteNumber = defaultInstrumentNote\r
- noteOnHexCode = defaultNoteOnHexCode\r
- CCHexCode = defaultCCHexCode\r
- \r
- self.port.write_short(noteOnHexCode, noteNumber , 127)\r
- self.port.write_short(CCHexCode, 07, velocity)\r
-\r
- def playNoteByNoteNumber(self, midiNoteNumber, velocity):\r
- noteNumber = self.instrument.getNoteByNoteNumber(midiNoteNumber)\r
- \r
- if noteNumber != None :\r
- noteOnHexCode = self.getNoteOnHexCode()\r
- CCHexCode = self.getCCHexCode()\r
- else :\r
- noteNumber = defaultInstrumentNote\r
- noteOnHexCode = defaultNoteOnHexCode\r
- CCHexCode = defaultCCHexCode\r
- \r
- self.port.write_short(noteOnHexCode, noteNumber , 127)\r
- self.port.write_short(CCHexCode, 07, velocity)\r
- \r
- self.numberPlayed += 1\r
- \r
- def stopNote(self, note):\r
- noteNumber = self.instrument.getNote(note)\r
- if noteNumber != None :\r
- noteOnHexCode = self.getNoteOnHexCode()\r
- else :\r
- noteNumber = defaultInstrumentNote\r
- noteOnHexCode = defaultNoteOnHexCode\r
- \r
- self.port.write_short(noteOnHexCode, noteNumber, 0)\r
- \r
- def stopNoteByNoteNumber(self, midiNoteNumber):\r
- noteNumber = self.instrument.getNoteByNoteNumber(midiNoteNumber)\r
- if noteNumber != None :\r
- noteOnHexCode = self.getNoteOnHexCode()\r
- else :\r
- noteNumber = defaultInstrumentNote\r
- noteOnHexCode = defaultNoteOnHexCode\r
- \r
- self.port.write_short(noteOnHexCode, noteNumber, 0)\r
- \r
- def allNotesOff(self):\r
- CCHexCode = self.getCCHexCode()\r
- self.port.write_short(CCHexCode,123,0)
\ No newline at end of file