def on_macro_actions(self, modifier_mask, macro_id, param_value):
        """Called when a macro action is requested.

        Args:
            modifier_mask: bit-mask containing information on what modifier buttons have been pressed.
            macro_id: integer specifying the value to look up the macro action (usually the channel bank index of the
              button pressed, or code specifying the encoder it came from)
            param_value: integer providing any additional information to the function (e.g. can be value of the
              channel the button corresponds to, or a delta value corresponding to the amount the knob turned)
        """
        self._lock.acquire()
        try:
            help_request = self._is_help_request(modifier_mask)
            modifier_mask &= ~SAVE_BUTTON
            key = (modifier_mask, macro_id)
            action = 'Help' if help_request else 'Macro'
            if key in self._macro_map:
                doc_str = self._macro_map[key].__doc__
                if doc_str:
                    self._display_fn(action, doc_str)
                    ui.setHintMsg('[%s] %s' % (action, doc_str))
                if not help_request:
                    self._macro_map[key](param_value)
        finally:
            self._lock.release()
Ejemplo n.º 2
0
	def step_param(self):

		self.pattern = patterns.patternNumber()
		self.parameter = switch.Switch.parameter
		self.pad_step = notes.temp_step[0]
		self.step = 0
		self.nothing = 0

		if Switch.mode_toggle == 3 and self.event_one < 27 and ui.getFocused(1): 		# check if param entry mode is on and make sure knob is not out of parameter range
			print('in param knob mode')
			ui.setHintMsg(parameters[self.event_one -20])
			if 6 <= self.event_one - 20 >= 5:
				channels.setStepParameterByIndex(self.channel, self.pattern, self.pad_step - 60, self.event_one - 20, int(mapvalues(self.data_two, 0 , 255, 0, 127)), 1)

			elif self.event_one - 20 == 3:
				channels.setStepParameterByIndex(self.channel, self.pattern, self.pad_step - 60, self.event_one - 20, int(mapvalues(self.data_two, 0 , 240, 0, 127)), 1)

			else:
				channels.setStepParameterByIndex(self.channel, self.pattern, self.pad_step - 60, self.event_one - 20, self.data_two, 1)

		if channels.getGridBit(channels.channelNumber(), self.data_one - 20) == 1 and Switch.mode_toggle == 1 and Switch.shift_status == False:
			# print(f'Switch Mode toggle: {Switch.mode_toggle}')
			print("getGridBit gotten")
			if 6 <= self.parameter >= 5:
				channels.setStepParameterByIndex(self.channel, self.pattern, self.data_one - 20, self.parameter, int(mapvalues(self.data_two, 0 , 255, 0, 127)), 1)

			elif self.parameter == 3:
				channels.setStepParameterByIndex(self.channel, self.pattern, self.data_one - 20, self.parameter, int(mapvalues(self.data_two, 0 , 240, 0, 127)), 1)
			
			else:	
				channels.setStepParameterByIndex(channels.channelNumber(), patterns.patternNumber(), self.data_one - 20, self.parameter, self.data_two, 1)
Ejemplo n.º 3
0
	def switch_toggle(event):
		"""handles midi events that involve switch set to toggle and not momentary"""
		if event.data1 == button["record"]:			
				print('Record')
				transport.record()
				event.handled = True
	
		elif event.data1 == button["set_metronome"]:
			print('Set Metronome')
			transport.globalTransport(midi.FPT_Metronome, 110)
			event.handled = True

		elif event.data1 == button["overdub"]:
				print('Toggle Overdub Mode')
				transport.globalTransport(midi.FPT_Overdub, 112)
				event.handled = True

		elif event.data1 == button["loop"]:						
			print('Toggle Loop Mode')
			transport.globalTransport(midi.FPT_LoopRecord, 113)
			event.handled = True

		elif event.data1 == button["shift"]:
			print('Shift')
			if Switch.shift_status == False:
				Switch.shift_status = True
				ui.setHintMsg('Shift Active')
			elif Switch.shift_status == True:
				Switch.shift_status = False
				ui.setHintMsg('Shift Disabled')
Ejemplo n.º 4
0
def resetAllName():
    if Flag_No_Sel_Names: return
    ui.setHintMsg("reset namePrefix")
    time.sleep(ST_HintMsg)
    for i in range(0, FL_TR_COUNT_MAX):
        lastName = mixer.getTrackName(i)
        if isSelName(lastName): mixer.setTrackName(i, lastName[5:])
Ejemplo n.º 5
0
    def handleNote(self, event, state):
        noteIndex = event.note % 12
        noteName = utils.NoteNameT[noteIndex]

        if noteName in self.noteMap:
            action, description = self.noteMap[noteName]
            transport.globalTransport(action, state * 1, event.pmeFlags)
            ui.setHintMsg(icons.eye + icons.eye + "Alakazam: " + description)
        event.handled = True
    def OnMidiIn(self, event):

        if (event.data1 == nihia.touch_strips["PITCH"]):
            event.handled = False

        if (event.data1 == nihia.touch_strips["MOD"]):
            event.handled = False
            ui.setHintMsg("Modulation: %s" % round(event.data2/1.27))
            nihia.printText(1, "TESTING")
Ejemplo n.º 7
0
 def _select_one_channel(self, index):
     if SCRIPT_VERSION >= 8:
         channels.selectOneChannel(index)
     else:
         channels.deselectAll()
         channels.selectChannel(index, 1)
     if config.ENABLE_CONTROLS_FL_HINTS:
         ui.setHintMsg(
             '[%d:%d] %s' %
             (channels.selectedChannel() + 1, patterns.patternNumber(),
              channels.getChannelName(channels.selectedChannel())))
def OnInit():
    global _controller
    print('Loaded MIDI script for Arturia Keylab mkII (ver %d)' %
          version.CHANGE_DATE)

    _controller.Sync(0xFFFF)
    _controller.paged_display().SetPageLines('welcome',
                                             line1='Connected to ',
                                             line2='   FL Studio')
    _controller.paged_display().SetActivePage('main')
    _controller.paged_display().SetActivePage(
        'welcome', expires=WELCOME_DISPLAY_INTERVAL_MS)

    ui.setHintMsg('Script version: %d' % version.CHANGE_DATE)
Ejemplo n.º 9
0
 def goLeft(steps):
     #Selection go steps to the left sight of Mixer
     sEnd = " "
     global goTo
     lastgoTo = goTo
     if goTo > steps - 1: goTo = goTo - steps  #print("left")
     else:
         goTo = 0
         sEnd = "END of Mixer (left)! - "
     sHi_MixTR_Range = sEnd + "Mix-Tracks " + str(goTo) + "-" + str(
         NK_NrOf_ControlGr + goTo - 1)  #activ HintMsg Track area
     ui.setHintMsg(sHi_MixTR_Range)
     if lastgoTo != goTo: resetTrackName(event, lastgoTo)
     selectActivArea(goTo)
Ejemplo n.º 10
0
    def _display_hint(self, hint_title, hint_value, fl_hint=False):
        if config.HINT_DISPLAY_ALL_CAPS:
            hint_title = hint_title.upper()
            hint_value = hint_value.upper()

        hint_title = ArturiaDisplay.abbreviate(hint_title)

        self._paged_display.SetPageLines('hint', line1=hint_title, line2=hint_value)
        current_time_ms = ArturiaDisplay.time_ms()

        if fl_hint:
            ui.setHintMsg('%s %s' % (hint_title, hint_value))

        if current_time_ms > self._last_hint_time_ms + 100:
            self._paged_display.SetActivePage('hint', expires=5000)
            self._last_hint_time_ms = current_time_ms
Ejemplo n.º 11
0
 def goRight(steps):
     #Selection go steps to the rigeht sight of Mixer
     sEnd = " "
     global goTo  #Warum hier global und in goSteps nicht?
     lastgoTo = goTo
     if goTo + NK_NrOf_ControlGr + steps < FL_TR_COUNT_MAX:
         goTo = goTo + steps  #print("right")
     else:
         goTo = FL_TR_COUNT_MAX - NK_NrOf_ControlGr
         sEnd = "END of Mixer (right)! - "  #wird mir goTo nie überschritten
     sHi_MixTR_Range = sEnd + "Mix-Tracks " + str(goTo) + "-" + str(
         NK_NrOf_ControlGr + goTo - 1)  #activ HintMsg Track area
     ui.setHintMsg(sHi_MixTR_Range)
     if lastgoTo != goTo: resetTrackName(event, lastgoTo)
     selectActivArea(goTo)
     event.handled = True
Ejemplo n.º 12
0
def OnNoteOn(
    event
):  #Let's tell FL what to do when it recieves a note on event through midi
    #print('Midi note on:', event.data1, " ", event.data2)
    if event.data1 > 63 and event.data1 < 81 or event.data1 > 81 and event.data1 < 88:  #Check to see if the note is in the range used by the patch selector
        event.handled = True  #Start by telling FL we are dealing with this note to stop it from playing a tone
        setPatchBank(
            event.data1
        )  #If it is, pass it through to the function that selects patches
        ui.setHintMsg("Bank " + str(selectedBank) + " selected (" +
                      str(((selectedBank - 1) * 9)) + "-" +
                      str(((selectedBank - 1) * 9) + 8) + ")")
    elif event.data1 == 98:
        ui.setHintMsg("LEDs Turned off")
        clearAllLEDs()
        event.handled = True
    else:
        event.handled = False  #Allows you to continue to use the pads inside of the FPC if you want to
    def flush(self):
        """Log all actions taken, and set a hint message if applicable
        """
        # Log all actions taken
        for x in range(len(self.eventProcessors)):
            internal.debugLog(self.eventProcessors[x].getString(),
                              internal.consts.DEBUG.EVENT_ACTIONS)

        # Get hint message to set (ignores silent messages)
        hint_msg = ""
        for x in range(len(self.eventProcessors)):
            cur_msg = self.eventProcessors[x].getHintMsg()

            # Might want to fix this some time, some handler modules append this manually
            if cur_msg != "" and cur_msg != "[Did not handle]":
                hint_msg = cur_msg

        if hint_msg != "":
            # Sometimes this fails...
            try:
                ui.setHintMsg(hint_msg)
            except:
                pass
        self.eventProcessors.clear()
Ejemplo n.º 14
0
	def switch_moment(event):
		"""handles momentary witch midi events"""
		if event.data1 == button["pad_mode_toggle"]:				# This Rotates through pad modes - standard, step sequencer, pad to channel		
			Switch.mode_toggle += 1
			if Switch.mode_toggle == 4:
				Switch.mode_toggle = 0
			print('Pad Mode: ' + mode[Switch.mode_toggle])
			ui.setHintMsg(mode[Switch.mode_toggle])

		elif event.midiId == 224: 								# pitch wheel
			Switch.pitch_num = event.data2	
			if Switch.shift_status == True:
				print(data.notes_list[int(mapvalues(Switch.pitch_num, 0, 11, 0, 244))])

		elif event.data1 == button["play"]:			
			transport.start()
			event.handled = True

		elif event.data1 == button["offset_range"]:
			Switch.offset_iter += 1
			if Switch.offset_iter == 2:     								# 2 here will limit to 32 steps, knobs. Changing to 4 will allow up to 64 steps, knobs. 
				Switch.offset_iter = 0
			ui.setHintMsg("Offset Range: " + str(Switch.offset_iter))
	
		elif event.data1 == button["stop"]:
			print('Stop')
			transport.stop()
			event.handled = True						
																	
		elif event.data1 == button["record"]:			
			print('Record')
			transport.record()
			event.handled = True

		elif event.data1 == button["pattern_down"]:
			if ui.getFocused(5):
				print("Previous Preset")
				ui.previous()
			else:
				print('Pattern Down')
				transport.globalTransport(midi.FPT_PatternJog, -1)
				event.handled = True
					
		elif event.data1 == button["pattern_up"]:
			if ui.getFocused(5):
				print("Next Preset")
				ui.next()
			else:
				print('Pattern Up')
				transport.globalTransport(midi.FPT_PatternJog, 1)
				event.handled = True
																	# Set mod wheel to control channels when channels focused and tracks when mixer
		elif event.data1 == button["mod_wheel"]:					
			if ui.getFocused(0):
				mixer.setTrackNumber(int(mapvalues(event.data2, 0, 64, 0, 127)))
				ui.scrollWindow(midi.widMixer, mixer.trackNumber())
			elif ui.getFocused(1):
				print("Channel Number: " + str(channels.selectedChannel()))
				channels.selectOneChannel(int(round(mapvalues(event.data2, channels.channelCount()-1, 0, 0, 127), 0)))				

		elif event.data1 == 72:
			print(channels.getChannelColor(channels.selectedChannel())) 
			Switch.color_num += 1
			if Switch.color_num == len(colors):
				Switch.color_num = 0
			if ui.getFocused(1):
				channels.setChannelColor(channels.selectedChannel(), colors[Switch.color_num])
			elif ui.getFocused(0):
				mixer.setTrackColor(mixer.trackNumber(), colors[Switch.color_num])
			event.handled = True
		
		elif event.data1 == button["enter"]:
			if ui.getFocused(4):
				print("Select Browser Item")
				ui.selectBrowserMenuItem()		
				event.handled = True
			elif ui.getFocused(1):
				print("Mute Channel")
				channels.muteChannel(channels.selectedChannel())
			elif ui.getFocused(0):
				print("Mute Track")
				mixer.muteTrack(mixer.trackNumber())
			else:
				print('enter')
				ui.enter()
				event.handled = True

		elif event.data1 in range(59, 64) and config.PATTERN_JUMP_ON:						# Sets jump to pattern
			patterns.jumpToPattern(event.data1 - 58)
			event.handled = True		

		elif event.data1 in range(75, 80) and config.PATTERN_JUMP_ON:
			patterns.jumpToPattern(event.data1 - 69)
			event.handled = True

		elif event.data1 == button["solo"]:
			print('Solo')
			if ui.getFocused(0):
				mixer.soloTrack(mixer.trackNumber())
			elif ui.getFocused(1):
				channels.soloChannel(channels.selectedChannel())

		elif event.data1 == button["view_plugin_picker"]:
			print('View Plugin Picker')
			transport.globalTransport(midi.FPT_F8, 67)
			event.handled = True	
			
		elif event.data1 == button["song_mode_toggle"]:			
			print('Toggle Song and Pattern Mode')
			transport.setLoopMode()
			event.handled = True
			
		elif event.data1 == button["view_playlist"]:			
			print('View Playlist')
			transport.globalTransport(midi.FPT_F5, 65)
			event.handled = True
			
		elif event.data1 == button["view_piano_roll"]:
			print('View Piano Roll')
			transport.globalTransport(midi.FPT_F7, 66)
			event.handled = True
		
		elif event.data1 == button["view_channel_rack"]:
			print('View Channel Rack')
			transport.globalTransport(midi.FPT_F6, 65)
			event.handled = True
			
		elif event.data1 == button["view_mixer"]:
			print('View Mixer')
			transport.globalTransport(midi.FPT_F9, 68)
			event.handled = True
																	# Toggle through step parameter options - pitch, pan etc. No Shift control right now. 
		elif event.data1 == button["step_parameter"]:
			
			if ui.getFocused(1) and Switch.mode_toggle == 1:
				print('Toggle Step Parameter')
				Switch.parameter += 1
				if Switch.parameter == 7:
					Switch.parameter = 0
				print(Switch.parameter)
				ui.setHintMsg(parameters[Switch.parameter])

			elif ui.getFocused(0):
				Switch.mixer_num += 1
				if Switch.mixer_num == 2:
					Switch.mixer_num = 0
				print('Mixer Mode: ' + str(Switch.mixer_num))
				ui.setHintMsg(mixer_choice[Switch.mixer_num])
			event.handled = True

		elif event.data1 == button["open_channel_sampler"]:			
			print('Open Sampler Channel')
			channels.showCSForm(channels.channelNumber(), -1)
			event.handled = True					
							
		elif event.data1 == button["left"]:							
			print('Left')
			ui.left()
			event.handled = True	
		
		elif event.data1 == button["down"]:							
			print('Down')
			ui.down()
			event.handled = True				
			
		elif event.data1 == button["right"]:						
			print('Right')
			ui.right()
			event.handled = True			

		elif event.data1 == button["save"]:
			print('Save')
			transport.globalTransport(midi.FPT_Save, 92)
																	# If mixer is open and mute mode selected, top row will mute respective track 
		elif event.data1 == button["undo"]:					
				print('Undo')
				transport.globalTransport(midi.FPT_Undo, 20)
				device.midiOutMsg(144, 1, 63, 80)
				event.handled = True

		elif event.data1 == button["escape"]:
			print('Escape')
			ui.escape()
			event.handled = True
		
		elif event.data1 == button["up"]:
			print('Up')
			ui.up()
			event.handled = True			

		elif event.data1 == button["rotate_window"]:				
			print('Rotate Window')
			ui.nextWindow()
			event.handled = True

		elif event.data1 == button["browser"]:				
			print('Browser')
			if Switch.shift_status == False:
				if ui.getFocused(4):
					ui.hideWindow(4)
					event.handled = True
				else:
					ui.showWindow(4)
					ui.setFocused(4)
					event.handled = True
			
		elif event.data1 == button["step_rec"]:	
			if ui.getFocused(0):
				mixer.armTrack(mixer.trackNumber())	
				print("Toggle Track Rec")
			else:			
				transport.globalTransport(midi.FPT_StepEdit, 114)
				print('Step Record')
				event.handled = True							

		elif event.data1 == button["quantize"]:
			print('quantize')
			channels.quickQuantize(channels.channelNumber())
			event.handled = True

		elif event.data1 == button["link_chan"]:
			print('link channel')
			mixer.linkTrackToChannel(0)

		elif event.data1 == button["rand_steps"]:
			print("Random")
			print(f'Pitch Bend: {event.pitchBend}')
			for i in range(patterns.getPatternLength(patterns.patternNumber())):
				channels.setGridBit(channels.channelNumber(), i, 0)
			for z in range (patterns.getPatternLength(patterns.patternNumber())):
				y = num_gen()
				if y > ( Switch.pitch_num * 516):
					channels.setGridBit(channels.channelNumber(), z, 1)
				else:
					pass
			event.handled = True

		elif event.data1 == button["rand_notes"]:
			print("Randomize Notes")
			Switch.note_gen()
			event.handled = True
Ejemplo n.º 15
0
    def actionButton(self, event, FoundButton):
        #Action to Button (wiht my Index FoundButton[2])
        global goTo
        global Tog_TP
        global Tog_Steps
        global StepsPerTick
        global lsSPT_Values
        global SPT_IDX
        snapVal = 7

        def goRight(steps):
            #Selection go steps to the rigeht sight of Mixer
            sEnd = " "
            global goTo  #Warum hier global und in goSteps nicht?
            lastgoTo = goTo
            if goTo + NK_NrOf_ControlGr + steps < FL_TR_COUNT_MAX:
                goTo = goTo + steps  #print("right")
            else:
                goTo = FL_TR_COUNT_MAX - NK_NrOf_ControlGr
                sEnd = "END of Mixer (right)! - "  #wird mir goTo nie überschritten
            sHi_MixTR_Range = sEnd + "Mix-Tracks " + str(goTo) + "-" + str(
                NK_NrOf_ControlGr + goTo - 1)  #activ HintMsg Track area
            ui.setHintMsg(sHi_MixTR_Range)
            if lastgoTo != goTo: resetTrackName(event, lastgoTo)
            selectActivArea(goTo)
            event.handled = True

        def goLeft(steps):
            #Selection go steps to the left sight of Mixer
            sEnd = " "
            global goTo
            lastgoTo = goTo
            if goTo > steps - 1: goTo = goTo - steps  #print("left")
            else:
                goTo = 0
                sEnd = "END of Mixer (left)! - "
            sHi_MixTR_Range = sEnd + "Mix-Tracks " + str(goTo) + "-" + str(
                NK_NrOf_ControlGr + goTo - 1)  #activ HintMsg Track area
            ui.setHintMsg(sHi_MixTR_Range)
            if lastgoTo != goTo: resetTrackName(event, lastgoTo)
            selectActivArea(goTo)

        if FoundButton[2] == 2:  #8 to left
            goLeft(NK_NrOf_ControlGr)

        elif FoundButton[2] == 3:  #8 to right
            goRight(NK_NrOf_ControlGr)

        elif FoundButton[2] == 4:  #reset
            ui.showWindow(midi.widMixer)
            resetAllName()
            event.handled = True  #sonst knallt es

        elif FoundButton[2] == 5:  #set stepswide
            ### Könnte ich dazu verwenden um einen Track fest zu zu ordnen
            if Tog_Steps and SPT_IDX < len(lsSPT_Values):
                SPT_IDX += 1
                if SPT_IDX == (len(lsSPT_Values) - 1):
                    Tog_Steps = not Tog_Steps  #max 7 per Ticker, Toggel betwenn Up/down
            elif SPT_IDX > 0:
                SPT_IDX -= 1
                if SPT_IDX == 0: Tog_Steps = not Tog_Steps  #max 7 per Ticker
            else: print("Error: Step-Counter")
            StepsPerTick = lsSPT_Values[SPT_IDX]
            ui.setHintMsg("set " + str(lsSPT_Values[SPT_IDX]) + " steps")
            event.handled = True
            time.sleep(ST_HintMsg)

        elif FoundButton[2] == 6:  #StepsPerTick) to left
            goLeft(StepsPerTick)

        elif FoundButton[2] == 7:  #StepsPerTick) to right
            goRight(StepsPerTick)

        elif FoundButton[2] == 8:  #TP Rew
            if Tog_TP: transport.rewind(2)
            else: transport.rewind(0)
            Tog_TP = not Tog_TP
            event.handled = True

        elif FoundButton[2] == 9:  #TP FF
            if Tog_TP: transport.fastForward(2)
            else: transport.fastForward(0)
            Tog_TP = not Tog_TP
            event.handled = True

        elif FoundButton[2] == 10:  #TP stop
            if Tog_TP: transport.fastForward(2)
            transport.stop()
            event.handled = True

        elif FoundButton[2] == 11:  #TP play
            transport.start()
            event.handled = True

        elif FoundButton[2] == 12:  #TP rec
            if bPrintAction:
                print("TP rec ", FoundButton[1], " Wert: ", FoundButton[4])
            transport.record()
            event.handled = True

        elif FoundButton[2] in lsKnob:  #Paning
            nMixTrIndex = FoundButton[3] - (NK_CC_Knob_First
                                            )  #36to43-35=MixTrackIdx in FL
            nMixTrPan = (1 / 64) * (FoundButton[4] - 63
                                    )  # max Pan. FL=-1.0 - 1.0 (0-127 steps)
            FL_Pan = int(mixer.getTrackPan(nMixTrIndex + goTo) * 64)

            #Only change the value if the position of the controller matches the FL value. To avoid jumps
            if FoundButton[4] - 63 in range(FL_Pan - snapVal,
                                            FL_Pan + snapVal) and Reg_Snap:
                mixer.setTrackPan(nMixTrIndex + goTo, nMixTrPan)  #Set Paning
            if Reg_Snap == False:
                mixer.setTrackPan(nMixTrIndex + goTo, nMixTrPan)  #Set Paning
            selectActivMixTrack(nMixTrIndex + goTo)
            event.handled = True

        elif FoundButton[2] in lsSld:  #Volume
            nMixTrIndex = FoundButton[3] - (NK_CC_SLider_First
                                            )  #36to43-35=MixTrackIdx in FL
            nMixTrVolu = (1 / 127) * FoundButton[
                4]  # max Vol. FL=1.0 / max Vol. nK2=127, event.data2=Value from nK2-Slider
            FL_Vol = int(mixer.getTrackVolume(nMixTrIndex + goTo) * 127)
            #Only change the value if the position of the controller matches the FL value. To avoid jumps
            if FoundButton[4] in range(FL_Vol - snapVal,
                                       FL_Vol + snapVal) and Reg_Snap:
                mixer.setTrackVolume(nMixTrIndex + goTo, nMixTrVolu)  #Set Vol
            if Reg_Snap == False:
                mixer.setTrackVolume(nMixTrIndex + goTo, nMixTrVolu)  #Set Vol
            selectActivMixTrack(nMixTrIndex + goTo)
            event.handled = True

        elif FoundButton[2] in lsSoloB:  #Solo-Button
            nMixTrIndex = FoundButton[3] + NK_Solo_But_First
            selectActivMixTrack(nMixTrIndex + goTo)
            mixer.soloTrack(nMixTrIndex + goTo)  #
            event.handled = True

        elif FoundButton[2] in lsMuteB:  #Mute-Button
            nMixTrIndex = FoundButton[3] - (NK_Mute_But_First
                                            )  #36to43-35=MixTrackIdx in FL
            mixer.muteTrack(nMixTrIndex + goTo)  #
            selectActivMixTrack(nMixTrIndex + goTo)
            event.handled = True

        elif FoundButton[2] in lsRecB:  #Rec-Button
            nMixTrIndex = FoundButton[3] - (NK_Rec_But_First
                                            )  #72to73-71=MixTrackIdx in FL
            mixer.armTrack(nMixTrIndex + goTo)  #
            selectActivMixTrack(nMixTrIndex + goTo)
            event.handled = True
Ejemplo n.º 16
0
 def activate(self):
     ui.setHintMsg(icons.eye + icons.eye + "Alakazam!")
     self.activated = True
     if callable(self.onActivated):
         self.onActivated(self)
Ejemplo n.º 17
0
 def deactivate(self):
     ui.setHintMsg("")
     if self.activated:
         self.activated = False
         if callable(self.onDeactivated):
             self.onDeactivated(self)
 def set_hint_message(self, message):
     if isinstance(message, str): ui.setHintMsg(message)
     else:
         print(
             f"self.setHintMessage error:\n  Param 'message' must be of type str."
         )
Ejemplo n.º 19
0
def handleOutput(str):
    if str is not "":
        print(str)
        ui.setHintMsg(str)
Ejemplo n.º 20
0
	def __init__(self, event):
		global proceed
		self.event = event
		global temp_chan
		proceed = False
		self.mode_toggle = Switch.mode_toggle
		# self.mixer_num = mixer.trackNumber()
		self.channel = channels.channelNumber()
		self.round_offset = 0.16
		self.get_track_value = 0
		self.data_one = event.data1 + offset[switch.Switch.offset_iter]
		self.data_two = event.data2
		self.two_rounded = round(self.data_two/127, 2)
		self.plugin = 0
		self.event_one = event.data1
		print('knob class')

		if ui.getFocused(1) and Switch.shift_status == True:
			print('enter step param edit in turning')
			if event.data1 == knob['knob_one']:
				Switch.root_note = int(mapvalues(self.data_two, 0, 11, 0, 127))
				ui.setHintMsg(data.notes_list [int(mapvalues(self.data_two, 0, 11, 0, 127)) ] )
				print(Switch.root_note)
				event.handled = True

			if event.data1 == knob['knob_two']:
				Switch.scale_choice = int(mapvalues(self.data_two, 0, len(data.scale_names)-1, 0, 127))
				ui.setHintMsg(data.scale_names[int(mapvalues(self.data_two, 0, len(data.scale_names)-1, 0, 127))])
				print(Switch.scale_choice)
				event.handled = True

			if event.data1 == knob['knob_three']:
				Switch.lower_limit = int(mapvalues(self.data_two, 0, 25, 0, 127))
				ui.setHintMsg("Setting Lower Limit")
				print(Switch.lower_limit)
				event.handled = True

			if event.data1 == knob['knob_four']:
				Switch.upper_limit = int(mapvalues(self.data_two, 50, 0, 0, 127))
				ui.setHintMsg("Setting Upper Limit")
				print(Switch.upper_limit)
				event.handled = True

		elif ui.getFocused(5) and plugins.isValid(self.channel):
			print('plugin control')
			self.plugin_control()

		elif ui.getFocused(0) and proceed == False:						# This stores the current value at the destination of the knob
			# print('proceed false mixer focused')
			if Switch.mixer_num == 0:
				if mixer.trackNumber() == 0:								# Check if master is selected
					self.get_track_value = mixer.getTrackVolume(0)
				else:		
					self.get_track_value = mixer.getTrackVolume(self.data_one - 19) 

			elif Switch.mixer_num == 1:
				# print('store panning info')
				self.get_track_value = mixer.getTrackPan(self.data_one-19)
				print(self.get_track_value)
				self.two_rounded = mapvalues(self.data_two, -1.0, 1.0, 0, 127)
				print(self.two_rounded)

		elif ui.getFocused(1) and Switch.shift_status == False:
			# print('stored channel')
			if self.mode_toggle != 1 and self.mode_toggle != 3:
				if self.data_one-20 < channels.channelCount():
					self.get_track_value = channels.getChannelVolume(self.data_one-20) 
			else:
				# print('go to step parameter function')
				self.step_param()


	
																					# Knob must match current value before it engages.
		if self.two_rounded <= (self.get_track_value + self.round_offset) and self.two_rounded >= (self.get_track_value - self.round_offset):
			print("matched") 
			proceed = True
			temp_chan = self.data_one
			# print(f'temp chan:  {temp_chan}')
			if switch.Switch.mode_toggle != 1 and Switch.mode_toggle != 3 or ui.getFocused(1)==False:
				# print('enter knob turn function')
				self.knob_turn()
Ejemplo n.º 21
0
    def OnMidiMsg(self, event):
        event.handled = False

        # FOR PRINTING DATA ON SCRIPT OUTPUT

        print("status: {}, port: {}, midiId: {}, data1: {}, data2: {}".format(
            event.status, event.port, event.midiId, event.data1, event.data2))

        # CONTROL CHANGE EVENT FOR BUTTONS OF MIDI
        if event.midiId == midi.MIDI_CONTROLCHANGE:
            if event.data2 > 0:

                if event.data1 == Play:
                    print('Playback')
                    transport.start()
                    ui.setHintMsg("Play/Pause")
                    event.handled = True
                elif event.data1 == Record:
                    print('Record')
                    transport.record()
                    ui.setHintMsg("Record")
                    event.handled = True
                elif event.data1 == Stop:
                    print('Stop')
                    transport.stop()
                    ui.setHintMsg("Stop")
                    event.handled = True
                elif event.data1 == ToggleLoop:
                    print('Toggle Loop')
                    transport.setLoopMode()
                    ui.setHintMsg("Pattern/Song")
                    event.handled = True

                elif event.data1 == Left:
                    print('Previous Tab')
                    transport.globalTransport(midi.FPT_WindowJog, -1)
                    ui.setHintMsg("Previous Tab")
                    event.handled = True
                elif event.data1 == Right:
                    print('Next Tab')
                    transport.globalTransport(midi.FPT_WindowJog, 1)
                    ui.setHintMsg("Next Tab")
                    event.handled = True

                elif event.data1 == Up:
                    print('Undo Up')
                    general.undoUp()
                    ui.setHintMsg("Undo Up")
                    event.handled = True
                elif event.data1 == Down:
                    print('Undo Down/ReDo')
                    general.restoreUndo()
                    ui.setHintMsg("Undo Down/ReDo")
                    event.handled = True

                elif event.data1 in Knobs:
                    mixer.setTrackVolume(
                        mixer.trackNumber() + Knobs.index(event.data1),
                        event.data2 / 127)
                    event.handled = True

        #MIDI NOTE ON/OFF FOR NOTE EVENTS
        elif event.midiId == midi.MIDI_NOTEON:
            if (event.pmeFlags & midi.PME_System != 0):

                if event.data1 == Playlist:
                    print('Playlist')
                    transport.globalTransport(midi.FPT_F5, 1)
                    ui.setHintMsg("Playlist")
                    event.handled = True
                elif event.data1 == ChannelRack:
                    print('ChannelRack')
                    transport.globalTransport(midi.FPT_F6, 1)
                    ui.setHintMsg("ChannelRack")
                    event.handled = True
                elif event.data1 == PianoRoll:
                    print('PianoRoll')
                    transport.globalTransport(midi.FPT_F7, 1)
                    ui.setHintMsg("PianoRoll")
                    event.handled = True
                elif event.data1 == Mixer:
                    print('Mixer')
                    transport.globalTransport(midi.FPT_F9, 1)
                    ui.setHintMsg("Mixer")
                    event.handled = True

                elif event.data1 == Previous:
                    print('Previous')
                    ui.previous()
                    ui.setHintMsg("Previous")
                    event.handled = True
                elif event.data1 == Next:
                    print('Next')
                    ui.next()
                    ui.setHintMsg("Next")
                    event.handled = True

                elif event.data1 == Mute:
                    print('Mute')
                    channels.muteChannel(channels.channelNumber())
                    ui.setHintMsg("Mute")
                    event.handled = True
                elif event.data1 == Solo:
                    print('Solo')
                    channels.soloChannel(channels.channelNumber())
                    ui.setHintMsg("Solo")
                    event.handled = True

                elif event.data1 == PatternUp:
                    print('Pattern Up')
                    transport.globalTransport(midi.FPT_PatternJog, -1)
                    ui.setHintMsg("Pattern Up")
                    event.handled = True
                elif event.data1 == PatternDown:
                    print('Pattern Down')
                    transport.globalTransport(midi.FPT_PatternJog, 1)
                    ui.setHintMsg("Pattern Down")
                    event.handled = True

                elif event.data1 == Overdub:
                    print('Overdub')
                    transport.globalTransport(midi.FPT_Overdub, 1)
                    ui.setHintMsg("Overdub")
                    event.handled = True
                elif event.data1 == LoopRecord:
                    print('Loop Record')
                    transport.globalTransport(midi.FPT_LoopRecord, 1)
                    ui.setHintMsg("Loop Record")
                    event.handled = True

                elif event.data1 == SnapUp:
                    print('Snap -1')
                    transport.globalTransport(midi.FPT_SnapMode, -1)
                    ui.setHintMsg("Snap -1")
                    event.handled = True
                elif event.data1 == SnapDown:
                    print('Snap +1')
                    transport.globalTransport(midi.FPT_SnapMode, 1)
                    ui.setHintMsg("Snap +1")
                    event.handled = True

                elif event.data1 == TapTempo:
                    print('Tap Tempo')
                    transport.globalTransport(midi.FPT_TapTempo, 1)
                    ui.setHintMsg("Tap Tempo")
                    event.handled = True
                elif event.data1 == Metro:
                    print('Metronome')
                    transport.globalTransport(midi.FPT_Metronome, 1)
                    ui.setHintMsg("Metronome")
                    event.handled = True