1 /*
2     ugens1.h:
3 
4     Copyright (C) 1991 Barry Vercoe, John ffitch
5 
6     This file is part of Csound.
7 
8     The Csound Library is free software; you can redistribute it
9     and/or modify it under the terms of the GNU Lesser General Public
10     License as published by the Free Software Foundation; either
11     version 2.1 of the License, or (at your option) any later version.
12 
13     Csound is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU Lesser General Public License for more details.
17 
18     You should have received a copy of the GNU Lesser General Public
19     License along with Csound; if not, write to the Free Software
20     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21     02110-1301 USA
22 */
23 
24 /*                                                         UGENS1.H        */
25 
26 typedef struct {
27         OPDS    h;
28         MYFLT   *xr, *ia, *idur, *ib;
29          double   val, incr, kincr;
30 } LINE;
31 
32 typedef struct {
33         OPDS    h;
34         MYFLT   *xr, *ia, *idur, *ib;
35         double   val, mlt, kmlt;
36 } EXPON;
37 
38 typedef struct {
39         int32  cnt, acnt;
40          MYFLT  val, mlt, amlt;
41 } XSEG;
42 
43 typedef struct {
44         int32   cnt, acnt;
45         double  nxtpt;
46 } SEG;
47 
48 typedef struct {
49         OPDS    h;
50         MYFLT   *rslt, *argums[VARGMAX];
51         SEG     *cursegp;
52         int32   nsegs;
53         int32   segsrem, curcnt;
54         double  curval, curinc, curainc;
55         AUXCH   auxch;
56         int32   xtra;
57 } LINSEG;
58 
59 typedef struct {
60         OPDS    h;
61         MYFLT   *rslt, *argums[VARGMAX];
62         SEG     *cursegp;
63         int32   nsegs;
64         int32   segsrem, curcnt;
65         double  y1, y2, x, inc, val;
66         AUXCH   auxch;
67         int32   xtra;
68 } COSSEG;
69 
70 typedef struct {
71         OPDS    h;
72         MYFLT   *rslt, *argums[VARGMAX];
73         SEG     *cursegp;
74         int32   segsrem, curcnt;
75         double  curval, curmlt, curamlt;
76         int32   nsegs;
77         AUXCH   auxch;
78         int32   xtra;
79 } EXPSEG;
80 
81 typedef struct {
82         OPDS    h;
83         MYFLT   *rslt, *argums[VARGMAX];
84         XSEG    *cursegp;
85         int32   segsrem, curcnt;
86         double  curval, curmlt, curamlt;
87         int32   nsegs;
88         AUXCH   auxch;
89 } EXXPSEG;
90 
91 typedef struct {
92         OPDS    h;
93         MYFLT   *rslt, *sig, *iris, *idur, *idec;
94         double  lin1, inc1, lin2, inc2;
95         int64_t  cnt1, cnt2;
96 } LINEN;
97 
98 typedef struct {
99         OPDS    h;
100         MYFLT   *rslt, *sig, *iris, *idec, *iatdec;
101         double  lin1, inc1, val, val2, mlt2;
102         int64_t  cnt1;
103 } LINENR;
104 
105 typedef struct {
106         OPDS    h;
107         MYFLT   *rslt, *xamp, *irise, *idur, *idec, *ifn, *iatss;
108         MYFLT   *iatdec, *ixmod;
109         int32   phs, ki, cnt1;
110         double  val, mlt1, mlt2, asym;
111         FUNC    *ftp;
112 } ENVLPX;
113 
114 typedef struct {
115         OPDS    h;
116         MYFLT   *rslt, *xamp, *irise, *idec, *ifn, *iatss, *iatdec;
117         MYFLT   *ixmod, *irind;
118         int32   phs, ki, rlsing, rlscnt, rindep;
119         double  val, mlt1, mlt2, asym, atdec;
120         FUNC    *ftp;
121 } ENVLPR;
122 
123 typedef struct {
124         OPDS    h;
125         MYFLT   *rslt, *argums[VARGMAX];
126         XSEG    *cursegp;
127         int32   nsegs;
128         AUXCH   auxch;
129 } EXPSEG2;                         /*gab-A1*/
130