Quick Sign In:  

Forum: VirtualDJ Technical Support

Topic: Motorized Controller Pitch
I'm working on converting a Tascam TT-M1 to interface with VirtualDJ via HID. At a high level it should operate similar to Phase in HID mode- use a turntable record's motion to control the track without any extra midi info such as pitch slider, start/stop button, etc. I've made some progress and can get playback and scratching using "motorwheel3 posdelta" and "motorwheel3 timedelta 1000", but I'd like to have the pitch fader respond to tempo changes like it does with timecode.

I'm seeing the verbs "timecode_pitch", "motor_switch", and "pitch_motorized" which all seem promising, but I've been unable to incorporate them. I'm also wondering if phase_movement could be used, and I could configure my device to send data in the format that function expects (assuming some combination of position and time?).

Any assistance or insight is appreciated. Thank you!
 

Posted Thu 23 May 24 @ 11:56 pm
You should start simple:
With "pitch_slider"
Get that to work, and then you can investigate on which action you really need.
My guess is that probably a special action will be needed in order to avoid getting a feedback loop, but that's something to be seen after you can get the pitch slider to move.
 

Posted Fri 24 May 24 @ 8:20 am
Hi Phantom,

I can get the pitch slider to move. I'm confused why getting the pitch slider to move with pitch_slider would help me here, unless I'm misunderstanding how the pitch slider is supposed to be controlled. I'm seeing 2 options:

1. My controller communicates encoder ticks+time corresponding to the platters speed, and VDJ determines the pitch. If the 0% (33 1/3 RPM) rate is 8000 ticks per rotation and the controller is feeding 10% more ticks per unit time, VDJ plays back the track at 10% speed (I have this working now) and adjusts the pitch fader+bpm readout+waveform scaling by its own calculation (I'd like to accomplish this). This is the same idea as timecode- there's no feedback to the record to change its base tick rate, and timecode doesn't have a pitch_slider or other action for VDJ to update- VDJ calculates the pitch it's reading and adjusts. I suspect phase works the same way, feeding position+time and letting VDJ determine the pitch.

If I add pitch_slider to my current setup then I can get the pitch slider to move, but now my controller's playback speed is offset from there, so playback speed of +5% and pitch slider at +5% results in +10.25% playback speed.

2. My controller communicates encoder ticks+time and controls the pitch fader, and recalculates the tick rate to be proportional based on pitch. For example, if the controller reads 8800 ticks/rotation (or equivalent ticks/time), it would communicate the pitch 10% to VDJ and then adjust its tick rate to 0%. Without rebasing the tick rate, the controller would report the platter tick rate of +10% AND the pitch slider is now +10%. This seems like it could result in the feedback loop you mentioned, and also seems like extra effort given VDJ can already calculate pitch from timecode (and I suspect phase).

3. Something else?

If possible, I'd like to go with option 1, but I think a special action is needed.

Any help is appreciated. Thank you!
 

Posted Fri 24 May 24 @ 1:25 pm