12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from simplemidi.midiplayer import MidiPlayer, _Event, sortTime
- from simplemidi.midiio import MidiOutputPort
- from simplemidi.midimessage import MidiType, MidiMessage, NoteOn, NoteOff, MidiVoiceMessage
- from pad import Pad
- from simplemidi.options import *
- import time
- from simplemidi.midieventtrigger import *
- class PadRouter(Pad):
- _DEFAULT_PARAMS = dictAssign(MidiPlayer._DEFAULT_PARAMS,
- Pad._DEFAULT_PARAMS, {
- 'port_in': {
- 'client_name': 'Pad Helper',
- 'port_name': 'Pad In'
- },
- 'port_out': {
- 'client_name': 'Pad Helper',
- 'port_name': 'Pad Out'
- },
- 'port_sound_out': {
- 'client_name': 'MidiPlayer'
- },
- 'pad_translate': 0,
- })
- def __init__(self, adapter, params={}):
- param = initParams(PadRouter._DEFAULT_PARAMS, params)
- Pad.__init__(self, adapter, param)
- self.padTranslate = param['pad_translate']
- def setPadTranslate(self, n):
- self.padTranslate = n
- def onNoteOn(self, ch, idx, val):
- self.oport.noteOn(ch, idx - self.padTranslate, val)
- def onNoteOff(self, ch, idx, val):
- self.oport.noteOff(ch, idx - self.padTranslate, val)
- def send(self, evt):
- if evt.track == self.padTrack:
- if evt.type == MidiType.NOTE_ON:
- if (evt.key + self.padTranslate + self.transposeNote) in self.ledbuttons: self[
- evt.key + self.padTranslate + self.transposeNote] = evt.evt.velocity
- else:
- MidiPlayer.send(self, evt)
|