
Originally Posted by
Kristof - Belgium
The controller has LED's (20 separate LED's) underneath the jog wheels. When in pitch bend mode all the LED's burn (I presume every separate LED has to be mapped individually when jog is in Pitch Bend Mode ?), when in scratch mode the LED's rotate when the music is playing and stop rotating (only 1 LED burning) when platter is touched (music stops). As you move the platter to left or right (scratch), the LED's follow one by one back and forth the movement of the platter.
How do I map this in TP2 (LED's rotate, stop rotating (only 1 LED burning) when platter is touched, LED's follow one by one back and forth the movement of the platter) ?
as Yul said you really need some middleware software or to do that kind of thing in the controllers own firmware. i did most of that in midimasher for my scs3d leds. it spins one complete revolution every 2 beats and if you scratch the led moves round the 'platter' staying at the correct position (90% of the time)
if you didn't mind one complete revolution for every beat then it should be possible to di just in traktor natively tho i guess. heck of a lot of work tho as you'd need one OUT for every led for each mode you want to implement.
this is my midimasher code that achieves this for my scs3d. it stores the last known beatphase value and led position and due to the rather cool midi implementation in the scs3d only needs to send out one midi message to ensure the correct led in the "circle" is lit up.
Code:
-- cdj style spinning led's, assume it's for traktor
-- tsi ranges from 0 to 16 roughly twice a second (at 120bpm)
-- need to make it feel more like a 33rpm record
-- the +10/-10 code is to make a guess as to whether the beat phase has reset
-- or if the platter is being spun backwards
capture("traktor", "beat_phase_monitor_"..deck, ALL, 0, function(td, e, v, p)
if v ~= scs3d.cache[d]["beat_phase_"..deck] then
diff = v - scs3d.cache[d]["beat_phase_"..deck]
if diff < -10 then
diff = diff + 16
elseif diff > 10 then
diff = diff - 16
end
scs3d.cache[d]["circle_pos_"..deck] = scs3d.cache[d]["circle_pos_"..deck] + diff
scs3d.cache[d]["beat_phase_"..deck] = v
if scs3d.cache[d]["circle_pos_"..deck] >= 64 then
scs3d.cache[d]["circle_pos_"..deck] = scs3d.cache[d]["circle_pos_"..deck] - 64
elseif scs3d.cache[d]["circle_pos_"..deck] < 0 then
scs3d.cache[d]["circle_pos_"..deck] = scs3d.cache[d]["circle_pos_"..deck] + 64
end
if get(d, "deck") == deck_id and scs3d.cache[d]["layer"] == mode then
send(d, "fader3", scs3d.cache[d]["circle_pos_"..deck] / 4 + 1)
end
end
end)
Bookmarks