X1MK3: Community Performance MOD (qml coding)

13132333436

Comments

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod

    I can make it so that when deck SYNC is ON, it will adjust clock BPM. → Deck BPM (and display) will change along with it.

    Haven't gotten around to doing it (i wanted anyway) since no one requested it and reminded me. Now you did, thanks. I will have a version to test soon. :)

  • spinlud
    spinlud Member Posts: 15 Member

    Thank you very much, it would be awesome!
    One possible plus is to have also the function "Master Clock → Ableton Link → Reset DownBeat" assigned to some SYNC+other_button(s) macro (not sure what combinations are available to use) when LINK is active, it is handy when you want to resync Traktor with Ableton or other link devices for example.

  • spinlud
    spinlud Member Posts: 15 Member

    Other useful macro[s] would be to set the master tempo equal to one of the deck's song original bpm (in sostitution of Sync[Hold]+LoopPush: Reset Tempo). Maybe SYNC+FX_ARROWS for Deck A/B/C/D could be a possible combination

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod
    edited May 1

    You can use overmapping for further shenanegans.

    Here is the solution promised. If deck is synced (and the CLOCK is tempo master), SYNC(Hold)+LoopEncoder adjusts clockBPM.

  • spinlud
    spinlud Member Posts: 15 Member

    That's great, thanks a lot!
    I have messed around with the code a bit, I figured out how to add bpm reset also when in master clock/slave mode:

    Sync[Hold]+LoopPush: set master clock bpm to original track bpm

    Basically I have added/modified this code in X1MK3Deck.qml script:

    AppProperty { id: trackBaseBpmProp; path: "app.traktor.decks." + module.deckIdx + ".tempo.base_bpm" }
    
    // […]
    
    WiresGroup
      {
        // enabled: module.active && !module.shift && module.syncModifier
        // enabled: module.active && !module.shift && module.syncModifier && !module.isSlaveDeck && !browserModeProp.value
        enabled: module.active && !module.shift && module.syncModifier  && !browserModeProp.value
    
        Wire {
          from: "%surface%.loop.turn"
          to: EncoderScriptAdapter {
            onTick: {
              module.resetTempoEngaged = false;
            }
            onIncrement: {
              // tempoAbsProp.value = tempoAbsProp.value + (module.coarseTempoStep ? 0.01 : 0.001)
              if (module.isSlaveDeck) clockBPMProp.value = clockBPMProp.value + (module.coarseTempoStep ? 1 : 0.01)
              else bpmProp.value = bpmProp.value + (module.coarseTempoStep ? 1 : 0.01)
            }
            onDecrement: {
              // tempoAbsProp.value = tempoAbsProp.value - (module.coarseTempoStep ? 0.01 : 0.001)
              if (module.isSlaveDeck) clockBPMProp.value = clockBPMProp.value - (module.coarseTempoStep ? 1 : 0.01)
              else bpmProp.value = bpmProp.value - (module.coarseTempoStep ? 1 : 0.01)
            }
          }
        }
    
        Wire {
          from: "%surface%.loop.push"
          to: ButtonScriptAdapter {
            onPress: {
              module.coarseTempoStep = true;
              module.resetTempoEngaged = true;
            }
            // onRelease: {
            //   module.coarseTempoStep = false;
            //   if (module.resetTempoEngaged)
            //   {
            //     // Reset the tempo
            //     tempoAdjProp.value = 0.0
            //   }
            // }
            onRelease: {
              module.coarseTempoStep = false;
              if (module.resetTempoEngaged) {            
                if (module.isSlaveDeck) {
                  clockBPMProp.value = trackBaseBpmProp.value;
                  tempoAdjProp.value = 0.0;
                }
                else {
                  tempoAdjProp.value = 0.0;  
                }
              }
              
            }
          }
        }
      }
    

    It took quite a while of online search to find that the property I was looking for was app.traktor.decks.[deckIdx].tempo.base_bpm, where do you find the name of the variables to use in the qml code? Is there a documentation of some sort?

  • dariodelima
    dariodelima Member Posts: 75 Advisor
    edited May 2

    @Sûlherokhh

    So i am trying to change the QML codes in the new traktor update 4.2 to test and see if the minimaltempomodenomixer_03 will work, however when i paste the files over it keeps giving me this pop up at the end "The operation can’t be completed because an item with the name “” already exists."

    so it is not pasting the qml codes in there. was thinking to just copy the whole x1mk3 qml folder with mod changes from Traktor 4.1 into 4.2 and going that route or perhaps you may know a solution as to why it wont copy them over.

    Thanks

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod

    This is a collection of commands, all manually extracted (i.e. read, copied and extrapolated) from Traktor.exe. I updated it for TP4.1+ with additional gridmarker commands.

    You can also find many of the commands as use cases scattered among the qml files.

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod

    So the file

    'X1MK3_TP4.1.1_MinimalTempoModeNoMixer_03.zip'

    does NOT work with 4.2?

    Have you tried installing the mod on top of the unchanged original qml files? I am not quite sure what you are saying.

  • dariodelima
    dariodelima Member Posts: 75 Advisor
    edited May 2

    Hey

    So normally i go to show package contents and then into resources and show qml files and then paste your qml files into the folder and press replace when the pop up comes, thus replacing the original qml files with yours and it works, i downloded the new update today Traktor 4.2 and did the same replacing the qml files with your ones. 'X1MK3_TP4.1.1_MinimalTempoModeNoMixer_03.zip' however now when i click replace , i get a pop up saying "The operation can’t be completed because an item with the name “” already exists." where as normaly it just replaces the files and the x1mk3 works. now it wont let me replace the files and gives that pop up error.

    Update:

    Ok so what i did now was just delete the original files and copied your ones in, for some reason it was not letting me copy them and replace. i actually had to delete the files and then paste yours in, wierd.

    will test it and let you know if the mod works with Traktor 4.2

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod
  • spinlud
    spinlud Member Posts: 15 Member

    Very useful, thanks a lot!

    I made another mod to display remaining [bars].[beats] to the next cue (what in Traktor is called "beats to cue") instead of remaining time, I always found it more useful. The remaining time in seconds can still be displayed pressing shift.

    image.png image.png


  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod

    Nice work. I may put this in as an optional display ('making note'). Thanks for working it out yourself. :)

  • spinlud
    spinlud Member Posts: 15 Member
  • vicente foi
    vicente foi Member Posts: 15 Member

    Good morning, I've been following this thread for a while,
     and I've found that the simplest mod works perfectly in 4.2. 
    But here's the question:
     Would it be possible for you to create a line of code for the Z1 mk2 that automatically 
    disconnects the other channels when headphone listening is activated?
     Or, if it's not too much trouble, could you explain how to do it now that it can be
     mapped? 
    Thank you very much in advance. Very good work.
    
  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 3,470 mod

    So, you want to listen in to channel A,

    → then B, C and D (monitor, not main) automatically switch off, yes?

Back To Top