Example #1
0
    def button_cb(self, path, args):
        # Anti-rebond
        diff = time() * 1000 - self.timestamp
        if diff < self.timeout:
            return
        self.timestamp = time() * 1000

        if _engine.current_subscene() == 9 and args[0] < 12:
         _engine.switch_scene(args[0])
         _engine.switch_subscene(1)
         # if args[0] == 1: # Rustine car acte 0 sur screen 14 !!!
         #     _engine.output_event(_event.ProgramEvent('PBseq24', _util.NoDataOffset(1), 127))
         # else:
        #  _engine.output_event(_event.ProgramEvent('PBseq24', _util.NoDataOffset(1), seq24PageMap[args[0]]))
#         _engine.output_event(_event.CtrlEvent('PBTapeutape', _util.NoDataOffset(0), 0, args[0]-1))
	else:
            if args[0] == 12:
             _engine.switch_subscene(9)
   	    if args[0] < 12:
	     _engine.output_event(_event.ProgramEvent('PBCtrlOut', _util.NoDataOffset(1), args[0]))
            if _engine.current_subscene() == 8 and args[0] > 17:
             _engine.switch_subscene(args[0]-17)

	    else:
                if args[0] == 24:
                 _engine.switch_subscene(8)
   	        if args[0] < 24 and args[0] > 12:
                    _engine.output_event(_event.ProgramEvent('PBCtrlOut', _util.NoDataOffset(1), args[0]))
Example #2
0
def _panic_bypass():
    # send all notes off (CC #123) and sustain off (CC #64) to all output
    # ports and on all channels
    for p in _engine.out_ports():
        for c in range(16):
            _engine.output_event(_event.CtrlEvent(p, _util.offset(c), 123, 0))
            _engine.output_event(_event.CtrlEvent(p, _util.offset(c), 64, 0))
Example #3
0
    def __arpeggiate(self):
        pattern = self.__applyPatternDirection()
        activeNotes = self.__getActiveNotes()

        for note, value in activeNotes.iteritems():
            if self.__ticks % floor(
                    self.__tickFactor / self.__resolution) == 0:
                newNote = self.__generatePatternNote(
                    note, pattern[value['patternStep']]
                ) if pattern[value['patternStep']] != '.' else 'is silence'

                if isinstance(newNote, int):
                    print 'port %s channel %i tick %i pattern step %s new note %s' % (
                        self.__outPort, self.__outChannel, self.__ticks,
                        pattern[value['patternStep']], str(newNote))

                    output_event(
                        NoteOnEvent(
                            self.__outPort, self.__outChannel, newNote,
                            randrange(70, 127)
                            if self.__randomVelocity else value['velocity']))

                if value['patternStep'] + 1 >= len(pattern):
                    self.__notes[note]['patternStep'] = 0
                    self.__setPatternNotesOff()
                else:
                    self.__notes[note]['patternStep'] += 1

        return
Example #4
0
    def __setPatternNotesOff(self, note=None):
        pattern = self.__applyPatternDirection()
        activeNotes = self.__getActiveNotes()
        offNote = None

        if note is None:
            for _note, value in activeNotes.iteritems():
                if pattern[value['patternStep']] != '.':
                    offNote = self.__generatePatternNote(
                        _note, pattern[value['patternStep']])

                    output_event(
                        NoteOffEvent(self.__outPort, self.__outChannel,
                                     offNote))
        else:
            for step in pattern:
                if step != '.':
                    offNote = self.__generatePatternNote(note, step)

                    output_event(
                        NoteOffEvent(self.__outPort, self.__outChannel,
                                     offNote))

        if isinstance(offNote, int):
            print 'port %s channel %i setting note %i off' % (
                self.__outPort, self.__outChannel, offNote)

        return
Example #5
0
    def processOSC(self, path, *args):

        s = path.upper().split('/')
        if s[1] == 'MIDI':

            mtype = s[2]

            if self.events.has_key(mtype):
                output_event(self.events[mtype](self.midiPorts['out'][0], *args[0]))
Example #6
0
def _panic_bypass():
    # send all notes off (CC #123) and sustain off (CC #64) to all output
    # ports and on all channels
    for p in _engine.out_ports():
        for c in range(16):
            _engine.output_event(
                _event.CtrlEvent(p, _util.NoDataOffset(c), 123, 0))
            _engine.output_event(
                _event.CtrlEvent(p, _util.NoDataOffset(c), 64, 0))
Example #7
0
 def sendMidi(self, path, args):
     value = int(max(0, min(1, args[0])) * 127)
     if path[len(oscPrefix):] in self.patch and oscPrefix in path:
         output_event(
             CtrlEvent('Midi2oscOut', 1, self.patch[path[len(oscPrefix):]],
                       value))
     elif oscPrefix + '/CC/' in path:
         output_event(
             CtrlEvent('Midi2oscOut', 1, self.patch[path[len(oscPrefix):]],
                       value))
Example #8
0
 def sendMidi(self, path, args):
     value = int(max(0,min(1,args[0]))*127)
     if path[len(oscPrefix):] in self.patch and oscPrefix in path:
         output_event(CtrlEvent('Midi2oscOut',1,self.patch[path[len(oscPrefix):]],value)) 
     elif oscPrefix+'/CC/' in path:
         output_event(CtrlEvent('Midi2oscOut',1,self.patch[path[len(oscPrefix):]],value))