+++ /dev/null
-'''\r
-Created on 15 juil. 2009\r
-\r
-@author: Samuel Benveniste\r
-'''\r
-from gui.constants import *\r
-import fluidsynth\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
- 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
- self.fs = fs = fluidsynth.Synth()\r
- fs.start()\r
- soundFont = r"C:\Documents and Settings\Administrator\My Documents\Telechargements\fluid-soundfont-3.1\FluidR3_GM.sf2"\r
- self.fsid = fsid = fs.sfload(soundFont)\r
- bank = 0\r
- preset = 0\r
- fs.program_select(0, fsid, bank, preset)\r
-\r
- def __del__(self) :\r
- self.fs.delete()\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
-# print 'playNote'\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
- print 'playNoteByNumber'\r
- noteNumber = self.instrument.getNoteByNoteNumber(midiNoteNumber)\r
- fs = self.fs\r
- fs.noteon(0, noteNumber, velocity)\r
- \r
- return\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
-# print 'stopNote'\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
- print 'stopNoteByNoteNumber'\r
- \r
- noteNumber = self.instrument.getNoteByNoteNumber(midiNoteNumber)\r
- fs = self.fs\r
- fs.noteoff(0, noteNumber)\r
- \r
- return\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
-# print 'allNoteOff'\r
-# CCHexCode = self.getCCHexCode()\r
-# self.port.write_short(CCHexCode,123,0)\r