1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE
NOTICE:

Our Traktor Pro Public Beta is available again in our new online community. Join us if you want to try new features.

MORE INFO

MixerFX with QML code ?

Dieses Thema im Forum "KONTROL S5/ KONTROL S8" wurde erstellt von Jike, 24. Oktober 2018.

  1. Jike

    Jike NI Product Owner

    Beiträge:
    103
    Is there a way to access to the Filter/MixerFX selection using qml ?

    Is somebody tried to do this ?
     
  2. Adriano Nadalin

    Adriano Nadalin New Member

    Beiträge:
    8
    i would really like to make shift+filter on button on the S8 select the effect.

    I mapped (work in progress) the mixerFX to a midi fighter twister controller, but the filter knob of the S8 would be ideal.
     
    • Like Like x 1
  3. Jike

    Jike NI Product Owner

    Beiträge:
    103
    but there is no midi on the S5/S8... we have to use qml to do this.

    shift+filter_on to toggle MixerFx is a good idea but the filter on/off buttons seems to be not usable with qml...

    the main problem is first to access by the code to toggle the 4 mixer Fx :

    Wire { from: "[something]"; to: TogglePropertyAdapter { path: "app.traktor.???"; } }
     
  4. ErikMinekus

    ErikMinekus NI Product Owner

    Beiträge:
    966
    • Like Like x 1
    • Informative Informative x 1
  5. Jike

    Jike NI Product Owner

    Beiträge:
    103
  6. Jike

    Jike NI Product Owner

    Beiträge:
    103
    In S5/Mixer.qml, I've tried :

    Code:
    //Wire { from: "%surface%.mixer.snap";  to: TogglePropertyAdapter { path: "app.traktor.snap";  } }
    Wire { from: "%surface%.mixer.snap";  to: TogglePropertyAdapter { path: "mapping.state.channelFxSelection"; value: 2; } }
    Not working...
     
  7. ErikMinekus

    ErikMinekus NI Product Owner

    Beiträge:
    966
    Try:
    Code:
    Wire { from: "%surface%.mixer.snap"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: 2; } }
     
  8. Jike

    Jike NI Product Owner

    Beiträge:
    103
    Working !

    This affect only one channel but not a problem... I'll do something with this...

    Thanks !!
     
    • Like Like x 1
  9. Jike

    Jike NI Product Owner

    Beiträge:
    103
    Better solution using the 4 Filter On/Off buttons :

    Shift+Filter On Deck C > MixerFx 1
    Shift+Filter On Deck A > MixerFx 2
    Shift+Filter On Deck B > MixerFx 3
    Shift+Filter On Deck D > MixerFx 4

    1. In CSI/S5/Channel.qml :

    Replace
    Code:
    Wire { from: surface_prefix + "filter_on";  to: TogglePropertyAdapter { path: app_prefix + "fx.on"     } }
    by
    Code:
    Wire
      {
        enabled: !shift
        from: surface_prefix + "filter_on"
        to: TogglePropertyAdapter { path: app_prefix + "fx.on" }
      }
    
    2. In CSI/S5/Mixer.qml :

    Insert
    Code:
    WiresGroup
        {
            enabled: shift
    
            Wire { from: "%surface%.mixer.channels.3.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: 1; } }
            Wire { from: "%surface%.mixer.channels.3.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.2.fx.select"; value: 1; } }
            Wire { from: "%surface%.mixer.channels.3.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.3.fx.select"; value: 1; } }
            Wire { from: "%surface%.mixer.channels.3.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.4.fx.select"; value: 1; } }
    
            Wire { from: "%surface%.mixer.channels.1.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: 2; } }
            Wire { from: "%surface%.mixer.channels.1.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.2.fx.select"; value: 2; } }
            Wire { from: "%surface%.mixer.channels.1.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.3.fx.select"; value: 2; } }
            Wire { from: "%surface%.mixer.channels.1.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.4.fx.select"; value: 2; } }
    
            Wire { from: "%surface%.mixer.channels.2.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: 3; } }
            Wire { from: "%surface%.mixer.channels.2.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.2.fx.select"; value: 3; } }
            Wire { from: "%surface%.mixer.channels.2.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.3.fx.select"; value: 3; } }
            Wire { from: "%surface%.mixer.channels.2.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.4.fx.select"; value: 3; } }
    
            Wire { from: "%surface%.mixer.channels.4.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: 4; } }
            Wire { from: "%surface%.mixer.channels.4.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.2.fx.select"; value: 4; } }
            Wire { from: "%surface%.mixer.channels.4.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.3.fx.select"; value: 4; } }
            Wire { from: "%surface%.mixer.channels.4.filter_on"; to: TogglePropertyAdapter { path: "app.traktor.mixer.channels.4.fx.select"; value: 4; } }
        }
    
    It's better like that !!

    Many thanks to Erik Minekus for his help !!
     
    • Like Like x 2
  10. Moonified

    Moonified NI Product Owner

    Beiträge:
    33
    Hi, it looks pretty straight forward to make those edits. erik - any plans to update the nexus code to support this ?:-

    https://github.com/ErikMinekus/traktor-kontrol-screens/tree/nexus

    Infact.. whilst I'm at it, does anyone know how the s8 changes the mixer fx's with the default qml ?

    And finally..

    The code above looks like it sets EVERY channels mixerFX to the same value. (Depending on the button pressed). is that a limitation in Traktor, or can you set each channels active mixerfx to a different value. ? Assuming traktor can do this, the ideal QML mod is going to need a rotary input, such as the fx knobs at the top of the unit ? So (say) shift+ top left fx rotaries let you scroll through the mixerfx, one rotary per channel.
     
  11. kokernutz

    kokernutz Active Member

    Beiträge:
    446
    Create a variable for the FX value and pre increment ala ++fxValue?
     
  12. Jike

    Jike NI Product Owner

    Beiträge:
    103
    The 4 MixerFx buttons on the S2MK3 and the S4MK3 are used to select one effect for the all the channels. I've made the same with the 4 Filter On/Off buttons and Shift.

    But, as we can see in the code, it's possible to select differents effects for each channel. We can do the same using the mouse on Traktor.
    We just have to found what controls we will use to do this without needing a third hand ! LOL
     
  13. Moonified

    Moonified NI Product Owner

    Beiträge:
    33
    Thats exactly what I was thinking! If the combo ended up being shift+filter on+fx knob thats starting to get tricky with 2 hands!

    I think the implementation on the mk3's is sloppy. If I have a filter effect on say channel 1, and I want to bring a new track in using a different mixer fx on channel 2, and I press one of those buttons, its just changed channel 1 as well...!

    I think the mk3's would have been better if you hold down the mixer FX button you want, then the filter on button to apply it to that specific channel.
     
  14. ErikMinekus

    ErikMinekus NI Product Owner

    Beiträge:
    966
    You can do that. Pressing the Mixer FX button applies it to all channels, holding it down and pressing the ON button applies it only to that channel.
     
    • Like Like x 1
  15. Jike

    Jike NI Product Owner

    Beiträge:
    103
    Don’t forget that there is no MixerFx buttons on the S5/S8.... The MixerFx buttons and the FilterOn buttons are the sames in the mod (MixerFx = Shift+FilterOn).

    Maybe another Shift button to use the controls for extended functions...
     
  16. Jike

    Jike NI Product Owner

    Beiträge:
    103
    I've just finished to watch the S4MK3 review from Ean Golden (DJTT) and, first, he told that it wiil be possible, in the furure, to remap the controls on the new S4MK3. Maybe it will be possible to do the same with our D2/S5/S8 because they all use the QML language.

    Second, i've seen it using the Mixer Fx section.

    There are 5 (Not 4) buttons : 1~4 Mixer Fx select and a "Filter Fx" button :

    - The "Filter Fx" button works as a "Reset to Filter" for all the channels,
    - The 4 Mixer Fx buttons set an effect to all the channels when pressed individualy and reset to filter when pressed again,
    - Filter Channel button+Mixer Fx button set an effect only on the channel selected by the Filter Channel button you pressed
    and, i suppose, reset to Filter the channel when the combo is pressed a second time.

    We need more buttons !!

    I think that we can do something like that :

    - Using Quant and Snap as "MixerFx 1" and "MixerFx 2" (Only two favorites...),
    - Using the combo Quant+Snap to reset to Filter all the channels (Like "Filter Fx" do),
    - Using Filter Channel+Quant/Snap to select MixerFx 1/2 on the desired channel.

    Any other idea ???
     
  17. kokernutz

    kokernutz Active Member

    Beiträge:
    446
    ErikMinekus, what about implementing something like this, where a SHIFT-FILTER TOGGLE will cycle through the MixerFX choices for that deck only?

    AppProperty { id: deck1FX; path: "app.traktor.mixer.channels.1.fx.select" }

    Wire { from: "%surface%.mixer.channels.1.filter_on"; to: SetPropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: ++deck1FX.value % 5; } }

    =

    I can't figure out the correct syntax. When you press the key combo, the MixerFX selection seems to quickly go through all the effects 0 - 4. ‍♂️
     
  18. Jike

    Jike NI Product Owner

    Beiträge:
    103
    Maybe we'll have to wait for the onRelease event to increase de counter on the next press (ButtonScriptAdapter)

    There is also a Pressed event(I suppose because it exist in the Qt files, not tested) that stay "True" until the button is released.

    However, i think we must have a feedback on screens to see what effect is selected on the desired channel and a combo "Reset to filter" for all the channels.
     
    Zuletzt bearbeitet: 28. Oktober 2018
    • Like Like x 1
  19. kokernutz

    kokernutz Active Member

    Beiträge:
    446
    I think everything I need is in the S4MK3ChannelFX and S4MK3ChannelFXSelector files. Stay tuned...
     
  20. Jike

    Jike NI Product Owner

    Beiträge:
    103
    I've tried :
    Code:
    AppProperty { id: deck1FX; path: "app.traktor.mixer.channels.1.fx.select" }
    
    function _RollFx1Select()
        {
            var CurrentFx;
    
            CurrentFx = deck1FX.value;
            CurrentFx = (CurrentFx == 4) ? 0 : CurrentFx + 1;
    
            return CurrentFx;
        }
    
    Wire { from: "%surface%.mixer.snap";  to: SetPropertyAdapter { path: "app.traktor.mixer.channels.1.fx.select"; value: _RollFx1Select(); } }
    
    but it doesn't work... the deck1FX.value is not read and always equal to 0 (Or Null ?) and the fx selected is always the first one (Or the second if the code is CurrentFx = (CurrentFx == 4) ? 0 : CurrentFx + 2; etc...)
     
    Zuletzt bearbeitet: 28. Oktober 2018