Stem Deck Reset upon loading next stem track

DJ ALX
DJ ALX Member Posts: 25 Member

As stated in the subject, is there a way to reset the stem deck controls each time i load a song in the same deck?

For example if last song leaves the deck with certain stems muted, certain fx on or off, certain filters at a given position, when i load the next song I have to reset the stem mutes, stem volumes, the FX mutes and FX volumes and filters.

This not only slows down a performance but it can be a show stopper when you have to act fast.

Please help.

Best Answers

  • pixel
    pixel Member Posts: 232 Advisor
    Answer ✓

    I would add this to the S3Stems.qml🙂

  • pixel
    pixel Member Posts: 232 Advisor
    Answer ✓

    Your code already contains this code passage that caused an error🙂

    AppProperty { id: stemMuted_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.muted" }
    AppProperty { id: stemMuted_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.muted" }
    AppProperty { id: stemMuted_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.muted" }
    AppProperty { id: stemMuted_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.muted" }
    

Answers

  • pixel
    pixel Member Posts: 232 Advisor
    edited November 14

    I quickly created a small example for you in QML.
    Maybe you can do something with that.
    If not, you'll have to wait until December 6th.

      AppProperty { id: stemMuted_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.muted" }
      AppProperty { id: stemMuted_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.muted" }
      AppProperty { id: stemMuted_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.muted" }
      AppProperty { id: stemMuted_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.muted" }
      
      AppProperty { id: stemVolume_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.volume" }
      AppProperty { id: stemVolume_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.volume" }
      AppProperty { id: stemVolume_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.volume" }
      AppProperty { id: stemVolume_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.volume" }
      
      AppProperty { id: stemFilterOn_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.filter_on" }
      AppProperty { id: stemFilterOn_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.filter_on" }
      AppProperty { id: stemFilterOn_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.filter_on" }
      AppProperty { id: stemFilterOn_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.filter_on" }
      
      AppProperty { id: stemFilter_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.filter_value" }
      AppProperty { id: stemFilter_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.filter_value" }
      AppProperty { id: stemFilter_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.filter_value" }
      AppProperty { id: stemFilter_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.filter_value" }
      
      AppProperty { id: stemFxSendOn_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.fx_send_on" }
      AppProperty { id: stemFxSendOn_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.fx_send_on" }
      AppProperty { id: stemFxSendOn_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.fx_send_on" }
      AppProperty { id: stemFxSendOn_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.fx_send_on" }
      
      AppProperty { id: stemFxSend_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.fx_send" }
      AppProperty { id: stemFxSend_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.fx_send" }
      AppProperty { id: stemFxSend_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.fx_send" }
      AppProperty { id: stemFxSend_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.fx_send" }
    
      AppProperty { id: deckLoadedSignal; path: "app.traktor.decks." + deckIdx + ".is_loaded_signal";
        onValueChanged: {
          if (value) {
    
    	stemMuted_1.value = false;
    	stemVolume_1.value = 1.0;
    	stemFilterOn_1.value = false;
    	stemFilter_1.value = 0.5;
    	stemFxSendOn_1.value = false;
    	stemFxSend_1.value = 1.0;
    
    	stemMuted_2.value = false;
    	stemVolume_2.value = 1.0;
    	stemFilterOn_2.value = false;
    	stemFilter_2.value = 0.5;
    	stemFxSendOn_2.value = false;
    	stemFxSend_2.value = 1.0;
    
    	stemMuted_3.value = false;
    	stemVolume_3.value = 1.0;
    	stemFilterOn_3.value = false;
    	stemFilter_3.value = 0.5;
    	stemFxSendOn_3.value = false;
    	stemFxSend_3.value = 1.0;
    
    	stemMuted_4.value = false;
    	stemVolume_4.value = 1.0;
    	stemFilterOn_4.value = false;
    	stemFilter_4.value = 0.5;
    	stemFxSendOn_4.value = false;
    	stemFxSend_4.value = 1.0;
    
          }
        }
      }
    

  • DJ ALX
    DJ ALX Member Posts: 25 Member

    Oh wow nice! I will try this immediately.

    in what QML file do i insert the code? the stem or deck qml or any other?

    Also, do i place the code anywhere in the qml?

    Thank you!

  • pixel
    pixel Member Posts: 232 Advisor
    Answer ✓

    I would add this to the S3Stems.qml🙂

  • DJ ALX
    DJ ALX Member Posts: 25 Member

    No, code doesnt seem to work.

    I placed it at the end of the S2Stems.qml. Then i thought the last bracket wasnt needed, took it out but still didnt work.

    I guess Ill have to wait till Dec 6th.

    No problem.

  • pixel
    pixel Member Posts: 232 Advisor

    Please upload your S3Stems.qml🙂

  • DJ ALX
    DJ ALX Member Posts: 25 Member

    Here is my latest working S3Stems.qml

  • pixel
    pixel Member Posts: 232 Advisor
    Answer ✓

    Your code already contains this code passage that caused an error🙂

    AppProperty { id: stemMuted_1;  path: "app.traktor.decks." + deckIdx + ".stems.1.muted" }
    AppProperty { id: stemMuted_2;  path: "app.traktor.decks." + deckIdx + ".stems.2.muted" }
    AppProperty { id: stemMuted_3;  path: "app.traktor.decks." + deckIdx + ".stems.3.muted" }
    AppProperty { id: stemMuted_4;  path: "app.traktor.decks." + deckIdx + ".stems.4.muted" }
    

  • Stevan
    Stevan Traktor Mapping Mod Posts: 2,043 mod

    Other way of doing this is mapping all submixer commands to your deck load buttons.

  • DJ ALX
    DJ ALX Member Posts: 25 Member

    Yes I thought of doing that too, but dont know if its an organic way of doing it since the same commands would be executed when loading non stem tracks. Will do what @pixel suggests and if it doesnt work I will map every reset command to S3's load deck.

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,816 mod

    If you use 3 or more stem/remix decks (i.e. decks with subchannels) at the same time, you have to replicate the active-deck structure of the S3 with modifiers you can use, so that the load button triggers the reset for the active deck only.

    Hit the Performance Mod link in my signature and scroll down the S4-mod description text. At the bottom (before reaching the S3 mod) is a link for a skeleton-map for the S4. Make one for your S3 that looks just like it, so you have the right modifier conditions to use for the load function (browser knob).

  • Sûlherokhh
    Sûlherokhh Member, Traktor Mapping Mod Posts: 2,816 mod
    edited November 14

    I made a quick conversion:

    Includes a modifier skeleton for you own mapping use that recognizes SHIFT and DECK layers in the following manner:

    • Modifer#1 = 0: Deck A
    • Modifer#1 = 1: Deck A (shift layer)
    • Modifer#1 = 4: Deck C
    • Modifer#1 = 5: Deck C (shift layer)
    • Modifer#2 = 0: DeckB
    • Modifer#2 = 1: Deck B (shift layer)
    • Modifer#2 = 4: Deck D
    • Modifer#2 = 5: Deck D (shift layer)

  • Stevan
    Stevan Traktor Mapping Mod Posts: 2,043 mod

    Even though submix will be reset in the background, that doesn't affect your Track Decks. No worries.

  • Stevan
    Stevan Traktor Mapping Mod Posts: 2,043 mod

    But if you still worry then you can assign "Deck Flavor" modifier and set value to "Stem Deck".

  • DJ ALX
    DJ ALX Member Posts: 25 Member

    Indeed!

    I wont need it, its fixed now but yes I think what you say can work!

Back To Top