Skip to content

Commit

Permalink
Refactoring tracks #11
Browse files Browse the repository at this point in the history
  • Loading branch information
bramdebouvere committed Nov 29, 2022
1 parent 811f282 commit 0b2be8e
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 58 deletions.
33 changes: 4 additions & 29 deletions device_XTouch.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ def Jog(self, event):

elif self.JogSource == mcu_buttons.Tempo:
if event.outEv != 0:
channels.processRECEvent(midi.REC_Tempo, channels.incEventValue(midi.REC_Tempo, event.outEv, midi.EKRes), midi.PME_RECFlagsT[int(event.pmeFlags & midi.PME_LiveInput != 0)] - midi.REC_FromMIDI)
general.processRECEvent(midi.REC_Tempo, channels.incEventValue(midi.REC_Tempo, event.outEv, midi.EKRes), midi.PME_RECFlagsT[int(event.pmeFlags & midi.PME_LiveInput != 0)] - midi.REC_FromMIDI)
self.OnSendMsg(mcu_constants.ArrowsStr + 'Tempo: ' + mixer.getEventIDValueString(midi.REC_Tempo, mixer.getCurrentTempo()))

elif self.JogSource in [mcu_buttons.Free1, mcu_buttons.Free2, mcu_buttons.Free3, mcu_buttons.Free4]:
Expand Down Expand Up @@ -190,7 +190,7 @@ def OnMidiMsg(self, event):
device.processMIDICC(event)
device.hardwareRefreshMixerTrack(self.Tracks[i].TrackNum)
else:
self.SetKnobValue(event.data1 - 0x10, event.outEv, Res)
super().SetKnobValue(event.data1 - 0x10, event.outEv, Res)
event.handled = True
else:
event.handled = False # for extra CCs in emulators
Expand Down Expand Up @@ -394,7 +394,7 @@ def OnMidiMsg(self, event):
else:
mixer.afterRoutingChanged()
else:
self.SetKnobValue(n, midi.MaxInt)
super().SetKnobValue(n, midi.MaxInt)

elif (event.data1 >= 0) & (event.data1 <= 0x1F): # free hold buttons
if self.Page == mcu_pages.Free:
Expand Down Expand Up @@ -506,8 +506,7 @@ def UpdateMsg(self):
self.McuDevice.SetTextDisplay(self.MsgT[1])

def OnSendMsg(self, Msg):
self.MsgT[1] = Msg
self.MsgDirty = True
super().OnSendMsg(Msg)

def OnUpdateBeatIndicator(self, Value):

Expand Down Expand Up @@ -679,30 +678,6 @@ def UpdateColT(self):
self.Tracks[m].LastValueIndex = 48 + m * 6
self.UpdateCol(m)

def SetKnobValue(self, Num, Value, Res = midi.EKRes):

if (self.Tracks[Num].KnobEventID >= 0) & (self.Tracks[Num].KnobMode < 4):
if Value == midi.MaxInt:
if self.Page == mcu_pages.Effects:
if self.Tracks[Num].KnobPressEventID >= 0:

Value = channels.incEventValue(self.Tracks[Num].KnobPressEventID, 0, midi.EKRes)
channels.processRECEvent(self.Tracks[Num].KnobPressEventID, Value, midi.REC_Controller)
s = mixer.getEventIDName(self.Tracks[Num].KnobPressEventID)
self.OnSendMsg(s)
return
else:
mixer.automateEvent(self.Tracks[Num].KnobResetEventID, self.Tracks[Num].KnobResetValue, midi.REC_MIDIController, self.SmoothSpeed)
else:
mixer.automateEvent(self.Tracks[Num].KnobEventID, Value, midi.REC_Controller, self.SmoothSpeed, 1, Res)

# hint
n = mixer.getAutoSmoothEventValue(self.Tracks[Num].KnobEventID)
s = mixer.getEventIDValueString(self.Tracks[Num].KnobEventID, n)
if s != '':
s = ': ' + s
self.OnSendMsg(self.Tracks[Num].KnobName + s)

def SetFirstTrack(self, Value):

if self.Page == mcu_pages.Free:
Expand Down
30 changes: 3 additions & 27 deletions device_XTouch_Ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ def OnMidiMsg(self, event):
device.processMIDICC(event)
device.hardwareRefreshMixerTrack(self.Tracks[i].TrackNum)
else:
self.SetKnobValue(event.data1 - 0x10, event.outEv, Res)
super().SetKnobValue(event.data1 - 0x10, event.outEv, Res)
event.handled = True
else:
event.handled = False # for extra CCs in emulators
Expand Down Expand Up @@ -173,7 +173,7 @@ def OnMidiMsg(self, event):
else:
mixer.afterRoutingChanged()
else:
self.SetKnobValue(n, midi.MaxInt)
super().SetKnobValue(n, midi.MaxInt)

elif (event.data1 >= 0) & (event.data1 <= 0x1F): # free hold buttons
if self.Page == mcu_pages.Free:
Expand Down Expand Up @@ -237,8 +237,7 @@ def UpdateMsg(self):
self.McuDevice.SetTextDisplay(self.MsgT[1])

def OnSendMsg(self, Msg):
self.MsgT[1] = Msg
self.MsgDirty = True
super().OnSendMsg(Msg)

def SetPage(self, Value):

Expand Down Expand Up @@ -369,29 +368,6 @@ def UpdateColT(self):
self.Tracks[m].LastValueIndex = 48 + m * 6
self.UpdateCol(m)

def SetKnobValue(self, Num, Value, Res = midi.EKRes):
if (self.Tracks[Num].KnobEventID >= 0) & (self.Tracks[Num].KnobMode < 4):
if Value == midi.MaxInt:
if self.Page == mcu_pages.Effects:
if self.Tracks[Num].KnobPressEventID >= 0:

Value = channels.incEventValue(self.Tracks[Num].KnobPressEventID, 0, midi.EKRes)
channels.processRECEvent(self.Tracks[Num].KnobPressEventID, Value, midi.REC_Controller)
s = mixer.getEventIDName(self.Tracks[Num].KnobPressEventID)
self.OnSendMsg(s)
return
else:
mixer.automateEvent(self.Tracks[Num].KnobResetEventID, self.Tracks[Num].KnobResetValue, midi.REC_MIDIController, self.SmoothSpeed)
else:
mixer.automateEvent(self.Tracks[Num].KnobEventID, Value, midi.REC_Controller, self.SmoothSpeed, 1, Res)

# hint
n = mixer.getAutoSmoothEventValue(self.Tracks[Num].KnobEventID)
s = mixer.getEventIDValueString(self.Tracks[Num].KnobEventID, n)
if s != '':
s = ': ' + s
self.OnSendMsg(self.Tracks[Num].KnobName + s)

def SetFirstTrack(self, Value):

self.FirstTrackT[self.FirstTrack] = (Value + mixer.trackCount()) % mixer.trackCount()
Expand Down
32 changes: 32 additions & 0 deletions mcu_base_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import mixer
import midi
import transport
import general
import channels

import mcu_constants
import mcu_device
Expand Down Expand Up @@ -192,3 +194,33 @@ def UpdateTrack(self, Num):
self.McuDevice.GetTrack(Num).fader.SetLevelFromFlsFader(sv, True)

self.Tracks[Num].Dirty = False

def OnSendMsg(self, Msg):
self.MsgT[1] = Msg
self.MsgDirty = True

def SetKnobValue(self, trackNumber, midiValue, resolution = midi.EKRes):
""" Sets the value of a knob in FL Studio (for all except free page?) (and shows it on the display) """
if not (self.Tracks[trackNumber].KnobEventID >= 0) & (self.Tracks[trackNumber].KnobMode != mcu_knob.Off):
return

if midiValue == midi.MaxInt:
if self.Page == mcu_pages.Effects:
if self.Tracks[trackNumber].KnobPressEventID >= 0:
midiValue = channels.incEventValue(self.Tracks[trackNumber].KnobPressEventID, 0, midi.EKRes)
general.processRECEvent(self.Tracks[trackNumber].KnobPressEventID, midiValue, midi.REC_Controller)
s = mixer.getEventIDName(self.Tracks[trackNumber].KnobPressEventID)
self.OnSendMsg(s)
return
else:
mixer.automateEvent(self.Tracks[trackNumber].KnobResetEventID, self.Tracks[trackNumber].KnobResetValue, midi.REC_MIDIController, self.SmoothSpeed)
else:
mixer.automateEvent(self.Tracks[trackNumber].KnobEventID, midiValue, midi.REC_Controller, self.SmoothSpeed, 1, resolution)

# show the value of the knob on the display
n = mixer.getAutoSmoothEventValue(self.Tracks[trackNumber].KnobEventID)
s = mixer.getEventIDValueString(self.Tracks[trackNumber].KnobEventID, n)
if s != '':
s = ': ' + s
self.OnSendMsg(self.Tracks[trackNumber].KnobName + s)

4 changes: 2 additions & 2 deletions mcu_device_track_fader.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ def SetLevelFromFlsFader(self, flFaderValue: int, skipIsAssignedCheck: bool = Fa
paramValue = mcu_device_fader_conversion.FlFaderToMcuFader(flFaderValue)
self.SetLevel(paramValue, skipIsAssignedCheck)

def SetLevel(self, flParameterValue: int, skipIsAssignedCheck: bool = False):
def SetLevel(self, value: int, skipIsAssignedCheck: bool = False):
""" Sets the value of the fader on the Xtouch (0 to 16380) """
if skipIsAssignedCheck or device.isAssigned():
data1 = flParameterValue
data1 = value
data2 = data1 & 127
data1 = data1 >> 7
device.midiOutNewMsg(midi.MIDI_PITCHBEND + self.__index + (data2 << 8) + (data1 << 16), self.__baseMidiValue + 5)

0 comments on commit 0b2be8e

Please sign in to comment.