hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 *
 * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de>
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 */
 
enum E_In84{
   eFader0 = 0,
   eFader1,
   eFader2,
   eFader3,
   eFader4,
   eFader5,
   eFader6,
   eFader7,
   eFaderM,
   eTransport,
   eModifier = 10,
   eFilterSelect,
   eSelect,
   eMute,
 
   eSwitch   = 15,
   eWheelGain,
   eWheelFreq,
   eWheelQ,
   eWheelPan,
   eWheel    = 20
};
 
#define T_RECORD   1
#define T_PLAY     2
#define T_STOP     4
#define T_F_FWD    8
#define T_REW   0x10
#define T_SOLO  0x20
#define T_REC   0x40
#define T_NULL  0x80
 
 
struct us428_ctls {
   unsigned char   Fader[9];
   unsigned char     Transport;
   unsigned char     Modifier;
   unsigned char     FilterSelect;
   unsigned char     Select;
   unsigned char   Mute;
   unsigned char   UNKNOWN;
   unsigned char   Switch;         
   unsigned char   Wheel[5];
};
 
struct us428_setByte {
   unsigned char Offset,
       Value;
};
 
enum {
   eLT_Volume = 0,
   eLT_Light
};
 
struct usX2Y_volume {
   unsigned char Channel,
       LH,
       LL,
       RH,
       RL;
};
 
struct us428_lights {
   struct us428_setByte Light[7];
};
 
struct us428_p4out {
   char type;
   union {
       struct usX2Y_volume vol;
       struct us428_lights lights;
   } val;
};
 
#define N_us428_ctl_BUFS 16
#define N_us428_p4out_BUFS 16
struct us428ctls_sharedmem{
   struct us428_ctls    CtlSnapShot[N_us428_ctl_BUFS];
   int            CtlSnapShotDiffersAt[N_us428_ctl_BUFS];
   int            CtlSnapShotLast, CtlSnapShotRed;
   struct us428_p4out    p4out[N_us428_p4out_BUFS];
   int            p4outLast, p4outSent;
};