chris@163
|
1 /**
|
chris@163
|
2 * Copyright (c) 2014, 2015, Enzien Audio Ltd.
|
chris@163
|
3 *
|
chris@163
|
4 * Permission to use, copy, modify, and/or distribute this software for any
|
chris@163
|
5 * purpose with or without fee is hereby granted, provided that the above
|
chris@163
|
6 * copyright notice and this permission notice appear in all copies.
|
chris@163
|
7 *
|
chris@163
|
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
chris@163
|
9 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
chris@163
|
10 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
chris@163
|
11 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
chris@163
|
12 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
chris@163
|
13 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
chris@163
|
14 * PERFORMANCE OF THIS SOFTWARE.
|
chris@163
|
15 */
|
chris@163
|
16
|
chris@163
|
17 #ifndef _HEAVY_CONTROL_BINOP_H_
|
chris@163
|
18 #define _HEAVY_CONTROL_BINOP_H_
|
chris@163
|
19
|
chris@163
|
20 #include "HvBase.h"
|
chris@163
|
21
|
chris@163
|
22 typedef enum BinopType {
|
chris@163
|
23 HV_BINOP_ADD,
|
chris@163
|
24 HV_BINOP_SUBTRACT,
|
chris@163
|
25 HV_BINOP_MULTIPLY,
|
chris@163
|
26 HV_BINOP_DIVIDE,
|
chris@163
|
27 HV_BINOP_INT_DIV,
|
chris@163
|
28 HV_BINOP_MOD_BIPOLAR,
|
chris@163
|
29 HV_BINOP_MOD_UNIPOLAR,
|
chris@163
|
30 HV_BINOP_BIT_LEFTSHIFT,
|
chris@163
|
31 HV_BINOP_BIT_RIGHTSHIFT,
|
chris@163
|
32 HV_BINOP_BIT_AND,
|
chris@163
|
33 HV_BINOP_BIT_XOR,
|
chris@163
|
34 HV_BINOP_BIT_OR,
|
chris@163
|
35 HV_BINOP_EQ,
|
chris@163
|
36 HV_BINOP_NEQ,
|
chris@163
|
37 HV_BINOP_LOGICAL_AND,
|
chris@163
|
38 HV_BINOP_LOGICAL_OR,
|
chris@163
|
39 HV_BINOP_LESS_THAN,
|
chris@163
|
40 HV_BINOP_LESS_THAN_EQL,
|
chris@163
|
41 HV_BINOP_GREATER_THAN,
|
chris@163
|
42 HV_BINOP_GREATER_THAN_EQL,
|
chris@163
|
43 HV_BINOP_MAX,
|
chris@163
|
44 HV_BINOP_MIN,
|
chris@163
|
45 HV_BINOP_POW,
|
chris@163
|
46 HV_BINOP_ATAN2
|
chris@163
|
47 } BinopType;
|
chris@163
|
48
|
chris@163
|
49 typedef struct ControlBinop {
|
chris@163
|
50 float k;
|
chris@163
|
51 } ControlBinop;
|
chris@163
|
52
|
chris@163
|
53 hv_size_t cBinop_init(ControlBinop *o, float k);
|
chris@163
|
54
|
chris@163
|
55 void cBinop_onMessage(HvBase *_c, ControlBinop *o, BinopType op, int letIn,
|
chris@163
|
56 const HvMessage *const m,
|
chris@163
|
57 void (*sendMessage)(HvBase *, int, const HvMessage *const));
|
chris@163
|
58
|
chris@163
|
59 void cBinop_k_onMessage(HvBase *_c, void *o, BinopType op, const float k,
|
chris@163
|
60 int letIn, const HvMessage *const m,
|
chris@163
|
61 void (*sendMessage)(HvBase *, int, const HvMessage *const));
|
chris@163
|
62
|
chris@163
|
63 #endif // _HEAVY_CONTROL_BINOP_H_
|