I have questions about using the TEK2 encoders as relative.
Background is that I’m considering to create a custom DJ controller. Main reason is that all DJ controllers have potentiometers instead of encoders for EQ, stems, filters etc. where I would like to have relative encoders with value feedback from the DJ app.
Trying to configure an endless controller for track seek / scratch on a deck. The questions:
It looks like the EC encoder mode block does not work with the TEK2 endless encoders, or am I missing something?
Found the ‘Endless Relative Mode Alter ver.’ cloud config that works with the TEK2 encoders. Used the endless_max to decrease the step size so that you can scratch / seek a track with better precision. It works nice in conjunction with the DJ app settings to get a good overall sensitivity and speed. Is this the right way to set-up the grid?
But a major question is how the relative mode is set in this configuration, could not figure it out and would not be able to create something like this from scratch.
The profile you used works as a relative mode 14-bit endless knob you can certainly use for DJ applications.
In our testing we used a TEK2 in a Traktor setup with relative encoders like here to do seeking when turning the knob as normal and scratching when turning the knob while it’s pushed.
The setup uses a bit of tweaking on the software side to make it a smooth experience, so it’s not something you could implement in any other software just by downloading the profile.
Let me know if the specific Traktor configuration can help you in any way and I’ll share it here.
I think sharing the configuration would be helpful, although use Djay Pro. I now use 1 encoder for scratching that can be switched to one of the 4 decks using the buttons. Lua is easy to learn, as software architect professionally it is nice to do some programming again. I use a couple of midi fighters now for controlling at the moment. Initially I was quite happy with the TEK2, but after comparing to the twister the smoothness just needs to be better.
If I increase the max value too much, the mapping to 63/65 midi message values becomes too strong, which is not possible to compensate in the Djay app speed/responsivness settings, but I think higher resolution is needed for smoothness.
Edit: Found the ‘Traktor TEK2’ from greg-intech, is this the example you were referring to?
Yes, on the Editor side that is the setup we used, but afaik it’s just a variation of the relative mode profile you’re already using.
The magic for the Traktor setup happens software side, in the config files of the Traktor controller setup menu, where Velocity and the smoothness of the rotation is adjusted.
This would be possible on the controller as well, if the self:endless_velocity() was already implemented, but alas it is not.
I’m unsure if your software has built in features like that, but it might be worth a look.
Hello Bart, this is a long time ago, but i hope you get the message: could you tell me what you did for the TEK2 precision with Djay? I am building a grid DJ controller and have some problems adjusting the encoders…
It is still a bit “sticky” but useable for the scratch function, not using it to scratch, just to (re) position, but if I remember i used that midi mapping. I’m not able to check the details right now, but will check later. To be aware of, some endless midi mappings in DJay are buggy, e.g. the tempo has weird jumps and the volume trim similar, for the latter it matters a lot if you set auto gain or not, but never perfect. For these I use the low-res controllers btw. Another funny detail is that there were big issues with the scratch function, very similar to the Reloop Mixon 8 issues, and after I was able to proof it as a reproducible problem, it got solved, the Mixon 8 issues were magically solved as well although it was thought to be a Mixon FW problem.
My advice is to start with a fixed (default from the examples) intech config for the TEK2 endless controller and with that, tweak the DJay mapping settings for the scratch function. It is good to get a feeling / understanding to be able to tweak it according to personal prefs. Btw., I never got the midi seek function to work properly, but maybe gave up too soon.
I think, that after a sort of technology push around 2010, controller makers and hence DJ SW makers became very conservative and prefer absolute pots above endless controllers. And nobody cares or sees the benefit of endless. Cost issue?
I’m using my intech controllers (for 4 decks with 2 TEK’s, one 16 button and 3 16 endless) with DJay Pro mapping on a almost daily basis. Thinking of doing a major update soon.
Lessons learned, controller hobbyists do not have the priority they deserve at Algoriddm.
Edit:
Not to discourage, but it requires a bit of software engineering skills to get the functionality that is needed for a relatively complicated DJ controller into the limited memory space of the modules. You have to think about re-usable Lua functions at design level and think about a channel / id scheme that is different from the intech examples so that the midi responses from the app can be routed to the correct leds in the different modules. It is not buy-and-map level.
Hi @Bart - thank you for answering!
This sounds very interesting. I am in the process of mapping a 2x2 grid (2xTEK2, PBF4 and EN16) to Djay Pro on iPad. I got the functions running but am struggling with the LEDs. Midi-Out seems to be inconsistent.
Would you share your settings and mapping, so that we could study it how you did it or is it too sophisticated to understand if you arent a software engineer?
i had some luck with vibe coding one of the TEK2s so that i have 4 Banks that i change with the upper button row, to have different functions on each bank for all the other elements. I use this for Library, Scrub, Tempo and Loop.
i found out what works for the endless encoders to precise movement (something like song selection in the library) is the using the Rotary (3Fh/41h) with 0,25% speed.
(sorry for the confusion my username got mixed up somehow…)
ARGH i am only allowed to post three answers in one thread?!?!
thats what i wanted to answer to you:
Okay, thanks for the input. I read about the changing of IDs and Channels and a different way to fix that on discord here.
Sometimes it seems to change between the states, so with my PBF4, it sends E1 on this specific button, but every once and a while it also sends C1, which would be the Note when the module is standalone…
Using the “Universal Midirx” snippet from cloud, the LED on another module toggles… it’s a mess.
And then Djay sends back Midi-Out only every 2nd press. Weird… well i am looking forward to your next version
Yes, I also use the TEK2 encoder for library selection, I have 4 encoders / 2 TEK’s for the 4 decks, and with a shift / mode function, set by one of the push buttons, shift-hold, mode-toggle, I can change the midi out so that I can map that in DJay for other functions.
What I did for mapping of controllers to midi in a nutshell. The method in the Intech examples (state halfway 2024) is that the position of the module in the matrix of modules determins the channel and id. So if you detach a module and re-attach it on a different position, they change. What I did is that I assign a function to a module, represented by an integer or enum (have to check the details), counting from 0 upwards. I use that integer, defined as a constant multiplication / addition offset parameter, to determine the channel / id. So, if you reposition a module in the matrix, the mixer remains mixer by keeping the exact channel / id’s. Halfway 2024, the midi responses were distributed over all modules, i.e. each module receives them. In each module I made a function that filters the responses based on the function enum, i.e. reverses the offset to map them to the ‘local’ led id’s. Was very rewarding to see the blinking of the start button after loading of a track. I think the reception became more advanced meanwhile, but I did not look at that. One of the things I will improve in a next version. One more thing is that you should make everything in Lua stateless. E.g. the blinking of the start button led should be independent from what happened with the start button because a track can also be loaded using the UI of the PC / pad. Or creation of a CUE point with the UI should also make the led of the CUE button active.
Hope this makes sense …