Inhaltsverzeichnis

OTUS

hadez bought an OTUS and doesn't get around using it. Be nice, don't scratch it, don't drown it in club-mate.

Drivers

OTUS Product Support Website (Login: ywrlroxuriw:ywrlroxuriwywrlroxuriw)

Windows

The OTUS came bundled with NI Traktor LE, however in more recent versions of Traktor LE, OTUS support was removed. NI support wants to push you to invest into Traktor Pro. Lesson learned: don't ever update Traktor.

OSX

Linux

EKS claimed support for Linux, that's why hadez bought the damn thing. Turns out there's no Linux driver, so he reverse engineered the protocol.

There is OTUS HID support in mixxx 1.11.0!

Protocol

typedef struct OTUSMsg_ {
  unsigned short magic;           // 0x0035

  unsigned short jog0Rot;         // 0x0000..0xffff, rollover
    signed short jog0Speed;       // <0: CCW rotation, >0: CW rotation

  unsigned int timestamp;         // looks like unixtime, have to check details

  unsigned int _0a_0d_reserved;

  unsigned char jog2Rot;          // 0x0000..0x00ff, rollover
  unsigned char jog4Rot;          // 0x0000..0x00ff, rollover
  unsigned char jog3Rot;          // 0x0000..0x00ff, rollover
  unsigned char jog1Rot;          // 0x0000..0x00ff, rollover

  unsigned short rotAGain;        // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotBGain;        // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotAHigh;        // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotBHigh;        // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotAMid;         // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotBMid;         // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotALow;         // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotBLow;         // 0x0000..0x7dc0, mask: 0xfff0

  unsigned short rotXFader;       // 0x0000..0x7dc0, mask: 0xfff0
  unsigned short rotMaster;       // 0x0000..0x7dc0, mask: 0xfff0

  unsigned short padY;            // 0x0000..0xffff, 0x0000:bottom 
  unsigned short padX;            // 0x0000..0xffff, 0x0000:left
  unsigned short pitchA;          // 0x0000..0xffff
  unsigned short pitchB;          // 0x0000..0xffff

  unsigned int buttons;           // one-hot bitmask for 32 button actions

  unsigned char filler;
  unsigned char msgCounter;      // 0x0000..0xff00, mask:0xff00, rollover
  unsigned short status;          // 0x0000: Deck A, 0x0001: Deck B

  unsigned char _36_reserved;
  unsigned char _37_reserved;
  unsigned int _38_3b_reserved;
  unsigned int _3c_3f_reserved;
} __attribute__((__packed__)) OTUSMsg;
// button mapping for the OTUSMsg.buttons field
#define OTUS_BUTTON_PLAYPAUSE        0x00008000
#define OTUS_BUTTON_UNKNOWN3         0x00004000
#define OTUS_BUTTON_JOG3             0x00002000
#define OTUS_BUTTON_RETURNLEFT       0x00001000
#define OTUS_BUTTON_SHIFT            0x00000800
#define OTUS_BUTTON_RETURNRIGHT      0x00000400
#define OTUS_BUTTON_JOG4             0x00000200
#define OTUS_BUTTON_PITCH_SCALE      0x00000100
#define OTUS_BUTTON_LOOP             0x00000080
#define OTUS_BUTTON_LOOPOUT          0x00000040
#define OTUS_BUTTON_LOOPIN           0x00000020
#define OTUS_BUTTON_LOOPFULL         0x00000010
#define OTUS_BUTTON_LOOPHALF         0x00000008
#define OTUS_BUTTON_LOOPQUARTER      0x00000004
#define OTUS_BUTTON_LOOPEIGTH        0x00000002
#define OTUS_BUTTON_JOG2             0x00000001
#define OTUS_BUTTON_XYPAD            0x80000000
#define OTUS_BUTTON_PITCH            0x40000000
#define OTUS_BUTTON_USER5            0x20000000
#define OTUS_BUTTON_USER4            0x10000000
#define OTUS_BUTTON_USER3            0x08000000
#define OTUS_BUTTON_USER2            0x04000000
#define OTUS_BUTTON_USER1            0x02000000
#define OTUS_BUTTON_USER0            0x01000000
#define OTUS_BUTTON_MOUSERIGHT       0x00800000
#define OTUS_BUTTON_MOUSELEFT        0x00400000
#define OTUS_BUTTON_MOUSELEFT        0x00400000
#define OTUS_BUTTON_JOG0             0x00200000
#define OTUS_BUTTON_JOG1             0x00100000
#define OTUS_BUTTON_FASTFORWARD      0x00080000
#define OTUS_BUTTON_UNKNOWN1         0x00040000
#define OTUS_BUTTON_UNKNOWN2         0x00020000
#define OTUS_BUTTON_CUE              0x00010000
// IDs for value knobs
#define OTUS_VALUE_JOG0ROT          0   
#define OTUS_VALUE_JOG0SPEED        1   
#define OTUS_VALUE_JOG1ROT          2   
#define OTUS_VALUE_JOG2ROT          3   
#define OTUS_VALUE_JOG3ROT          4   
#define OTUS_VALUE_JOG4ROT          5   
#define OTUS_VALUE_GAINA            6   
#define OTUS_VALUE_GAINB            7   
#define OTUS_VALUE_GAINM            8   
#define OTUS_VALUE_HIGHA            9   
#define OTUS_VALUE_HIGHB            10  
#define OTUS_VALUE_MIDA             11  
#define OTUS_VALUE_MIDB             12  
#define OTUS_VALUE_LOWA             13  
#define OTUS_VALUE_LOWB             14  
#define OTUS_VALUE_XFADER           15  
#define OTUS_VALUE_PITCHA           16  
#define OTUS_VALUE_PITCHB           17  
#define OTUS_VALUE_PADX             18  
#define OTUS_VALUE_PADY             19  
project/otus.txt · Zuletzt geändert: 2013/05/29 10:09 von 91.203.212.124