Subversion Repositories svn.mios32

Rev

Rev 1408 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1408 Rev 1960
Line 1... Line 1...
1
/* -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*- */
1
/* -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*- */
2
// $Id: MbCvMod.h 1408 2012-01-22 23:24:13Z tk $
2
// $Id: MbCvMod.h 1960 2014-02-09 20:21:24Z tk $
3
/*
3
/*
4
 * MIDIbox CV Modulation Matrix
4
 * MIDIbox CV Modulation Matrix
5
 *
5
 *
6
 * ==========================================================================
6
 * ==========================================================================
7
 *
7
 *
Line 21... Line 21...
21
21
22
// number of MOD nodes
22
// number of MOD nodes
23
#define MBCV_NUM_MOD 4
23
#define MBCV_NUM_MOD 4
24
24
25
// Modulation source assignments
25
// Modulation source assignments
-
 
26
#define MBCV_MOD_SRC_NONE      0
26
#define MBCV_MOD_SRC_ENV1      0
27
#define MBCV_MOD_SRC_ENV1      1
27
#define MBCV_MOD_SRC_ENV2      1
28
#define MBCV_MOD_SRC_ENV2      2
28
#define MBCV_MOD_SRC_LFO1      2
29
#define MBCV_MOD_SRC_LFO1      3
29
#define MBCV_MOD_SRC_LFO2      3
30
#define MBCV_MOD_SRC_LFO2      4
30
#define MBCV_MOD_SRC_MOD1      4
31
#define MBCV_MOD_SRC_MOD1      5
31
#define MBCV_MOD_SRC_MOD2      5
32
#define MBCV_MOD_SRC_MOD2      6
32
#define MBCV_MOD_SRC_MOD3      6
33
#define MBCV_MOD_SRC_MOD3      7
33
#define MBCV_MOD_SRC_MOD4      7
34
#define MBCV_MOD_SRC_MOD4      8
34
#define MBCV_MOD_SRC_KEY       8
35
#define MBCV_MOD_SRC_KEY       9
35
#define MBCV_MOD_SRC_VEL       9
36
#define MBCV_MOD_SRC_VEL      10
36
#define MBCV_MOD_SRC_MDW      10
37
#define MBCV_MOD_SRC_MDW      11
37
#define MBCV_MOD_SRC_PBN      11
38
#define MBCV_MOD_SRC_PBN      12
38
#define MBCV_MOD_SRC_ATH      12
39
#define MBCV_MOD_SRC_ATH      13
39
#define MBCV_MOD_SRC_KNOB1    13
40
#define MBCV_MOD_SRC_KNOB1    14
40
#define MBCV_MOD_SRC_KNOB2    14
41
#define MBCV_MOD_SRC_KNOB2    15
41
#define MBCV_MOD_SRC_KNOB3    15
42
#define MBCV_MOD_SRC_KNOB3    16
42
#define MBCV_MOD_SRC_KNOB4    16
43
#define MBCV_MOD_SRC_KNOB4    17
43
#define MBCV_MOD_SRC_KNOB5    17
44
#define MBCV_MOD_SRC_KNOB5    18
44
#define MBCV_MOD_SRC_KNOB6    18
45
#define MBCV_MOD_SRC_KNOB6    19
45
#define MBCV_MOD_SRC_KNOB7    19
46
#define MBCV_MOD_SRC_KNOB7    20
46
#define MBCV_MOD_SRC_KNOB8    20
47
#define MBCV_MOD_SRC_KNOB8    21
47
#define MBCV_MOD_SRC_AIN1     21
48
#define MBCV_MOD_SRC_AIN1     22
48
#define MBCV_MOD_SRC_AIN2     22
49
#define MBCV_MOD_SRC_AIN2     23
49
#define MBCV_MOD_SRC_AIN3     23
50
#define MBCV_MOD_SRC_AIN3     24
50
#define MBCV_MOD_SRC_AIN4     24
51
#define MBCV_MOD_SRC_AIN4     25
51
#define MBCV_MOD_SRC_AIN5     25
52
#define MBCV_MOD_SRC_AIN5     26
52
#define MBCV_MOD_SRC_AIN6     26
53
#define MBCV_MOD_SRC_AIN6     27
53
#define MBCV_MOD_SRC_AIN7     27
54
#define MBCV_MOD_SRC_AIN7     28
54
#define MBCV_MOD_SRC_AIN8     28
55
#define MBCV_MOD_SRC_AIN8     29
55
#define MBCV_MOD_SRC_SEQ_ENVMOD 29
56
#define MBCV_MOD_SRC_SEQ_ENVMOD 30
56
#define MBCV_MOD_SRC_SEQ_ACCENT 30
57
#define MBCV_MOD_SRC_SEQ_ACCENT 31
57
58
58
#define MBCV_NUM_MOD_SRC      31
59
#define MBCV_NUM_MOD_SRC      32
-
 
60
-
 
61
-
 
62
// Modulation Operators
-
 
63
#define MBCV_MOD_OP_NONE       0
-
 
64
#define MBCV_MOD_OP_SRC1_ONLY  1
-
 
65
#define MBCV_MOD_OP_SRC2_ONLY  2
-
 
66
#define MBCV_MOD_OP_PLUS       3
-
 
67
#define MBCV_MOD_OP_MINUS      4
-
 
68
#define MBCV_MOD_OP_MULTIPLY   5
-
 
69
#define MBCV_MOD_OP_XOR        6
-
 
70
#define MBCV_MOD_OP_OR         7
-
 
71
#define MBCV_MOD_OP_AND        8
-
 
72
#define MBCV_MOD_OP_MIN        9
-
 
73
#define MBCV_MOD_OP_MAX        10
-
 
74
#define MBCV_MOD_OP_LT         11
-
 
75
#define MBCV_MOD_OP_GT         12
-
 
76
#define MBCV_MOD_OP_EQ         13
-
 
77
#define MBCV_MOD_OP_S_AND_H    14
-
 
78
#define MBCV_MOD_OP_FTS        15
-
 
79
-
 
80
#define MBCV_NUM_MOD_OP        16
59
81
60
82
61
// Modulation destination assignments
83
// Modulation destination assignments
62
#define MBCV_MOD_DST_PITCH     0
84
#define MBCV_MOD_DST_NONE      0
-
 
85
#define MBCV_MOD_DST_CV        1
63
#define MBCV_MOD_DST_LFO1_A    1
86
#define MBCV_MOD_DST_LFO1_A    2
64
#define MBCV_MOD_DST_LFO2_A    2
87
#define MBCV_MOD_DST_LFO2_A    3
65
#define MBCV_MOD_DST_LFO1_R    3
88
#define MBCV_MOD_DST_LFO1_R    4
66
#define MBCV_MOD_DST_LFO2_R    4
89
#define MBCV_MOD_DST_LFO2_R    5
67
#define MBCV_MOD_DST_ENV1_A    5
90
#define MBCV_MOD_DST_ENV1_A    6
68
#define MBCV_MOD_DST_ENV2_A    6
91
#define MBCV_MOD_DST_ENV2_A    7
69
#define MBCV_MOD_DST_ENV1_R    7
92
#define MBCV_MOD_DST_ENV1_R    8
70
#define MBCV_MOD_DST_ENV2_R    8
93
#define MBCV_MOD_DST_ENV2_R    9
71
// maybe we should also control the ENV2 step? Too complicated?
94
// maybe we should also control the ENV2 step? Too complicated?
72
95
73
#define MBCV_NUM_MOD_DST       9
96
#define MBCV_NUM_MOD_DST       10
74
97
75
98
76
class MbCvMod
99
class MbCvMod
77
{
100
{
78
public:
101
public:
Line 90... Line 113...
90
    void tick(void);
113
    void tick(void);
91
114
92
    // modulation parmeters
115
    // modulation parmeters
93
    typedef struct modPatchT {
116
    typedef struct modPatchT {
94
        s8 depth;
117
        s8 depth;
-
 
118
        s8 offset;
95
        u8 src1;
119
        u8 src1;
96
        u8 src1_chn;
120
        u8 src1_chn;
97
        u8 src2;
121
        u8 src2;
98
        u8 src2_chn;
122
        u8 src2_chn;
99
        u8 op;
123
        u8 op;
Line 101... Line 125...
101
        u8 dst2;
125
        u8 dst2;
102
    } ModPatchT;
126
    } ModPatchT;
103
127
104
    ModPatchT modPatch[MBCV_NUM_MOD];
128
    ModPatchT modPatch[MBCV_NUM_MOD];
105
129
106
    // Values of modulation sources
130
    // Output values of modulation paths
107
    s32 modSrc[MBCV_NUM_MOD_SRC];
131
    s16 modOut[MBCV_NUM_MOD];
108
132
109
    // Values of modulation destinations
133
    // Values of modulation destinations
110
    s32 modDst[MBCV_NUM_MOD_DST];
134
    s32 modDst[MBCV_NUM_MOD_DST];
111
135
112
    s32 takeDstValue(const u8& ix);
136
    s32 takeDstValue(const u8& ix);
113
137
114
protected:
-
 
115
    // flags modulation transitions
138
    // flags modulation transitions
116
    u8 modTransition;
139
    u8 modTransition;
117
};
140
};
118
141
119
#endif /* _MB_CV_MOD_H */
142
#endif /* _MB_CV_MOD_H */