forked from g0orx/wdsp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen.h
134 lines (114 loc) · 2.59 KB
/
gen.h
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* gen.h
This file is part of a program that implements a Software-Defined Radio.
Copyright (C) 2013 Warren Pratt, NR0V
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
The author can be reached by email at
*/
#ifndef _gen_h
#define _gen_h
typedef struct _gen
{
int run; // run
int size; // number of samples per buffer
double* in; // input buffer (retained in case I want to mix in a generated signal)
double* out; // output buffer
double rate; // sample rate
int mode;
struct _tone
{
double mag;
double freq;
double phs;
double delta;
double cosdelta;
double sindelta;
} tone;
struct _tt
{
double mag1;
double mag2;
double f1;
double f2;
double phs1;
double phs2;
double delta1;
double delta2;
double cosdelta1;
double cosdelta2;
double sindelta1;
double sindelta2;
} tt;
struct _noise
{
double mag;
} noise;
struct _sweep
{
double mag;
double f1;
double f2;
double sweeprate;
double phs;
double dphs;
double d2phs;
double dphsmax;
} sweep;
struct _saw
{
double mag;
double f;
double period;
double delta;
double t;
} saw;
struct _tri
{
double mag;
double f;
double period;
double half;
double delta;
double t;
double t1;
} tri;
struct _pulse
{
double mag;
double pf;
double pdutycycle;
double ptranstime;
double* ctrans;
int pcount;
int pnon;
int pntrans;
int pnoff;
double pperiod;
double tf;
double tphs;
double tdelta;
double tcosdelta;
double tsindelta;
int state;
} pulse;
} gen, *GEN;
extern GEN create_gen (int run, int size, double* in, double* out, int rate, int mode);
extern void destroy_gen (GEN a);
extern void flush_gen (GEN a);
extern void xgen (GEN a);
extern void setBuffers_gen (GEN a, double* in, double* out);
extern void setSamplerate_gen (GEN a, int rate);
extern void setSize_gen (GEN a, int size);
// TXA Properties
extern __declspec (dllexport) void SetTXAgenRun (int channel, int run);
#endif