Benutzer-Werkzeuge

Webseiten-Werkzeuge


friedhof:otus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
project:otus [2011-05-17 21:49] ::ffff:93.231.143.25project:otus [2013-05-29 10:07] – [Linux] 91.203.212.124
Zeile 1: Zeile 1:
 ====== OTUS ====== ====== OTUS ======
 +{{tag>project audio music hadez}}
 +
 [[leute:hadez]] bought an OTUS and doesn't get around using it. [[leute:hadez]] bought an OTUS and doesn't get around using it.
 Be nice, don't scratch it, don't drown it in club-mate. Be nice, don't scratch it, don't drown it in club-mate.
Zeile 18: Zeile 20:
  
 ==== Linux ==== ==== Linux ====
-  +EKS claimed support for Linux, that's why hadez bought the damn thing. 
 +<del>Turns out there's no Linux driver</del>, so he reverse engineered the protocol. 
 + 
 +  [[https://github.com/shackspace/LOTUS|Repo at GitHub]] 
 + 
 +There is [[http://mixxx.org/wiki/doku.php/eks_otus|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   
friedhof/otus.txt · Zuletzt geändert: 2020-07-20 11:43 von neos