File: crossfm.h

package info (click to toggle)
csound 1%3A6.18.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 63,220 kB
  • sloc: ansic: 192,643; cpp: 14,149; javascript: 9,654; objc: 9,181; python: 3,376; java: 3,337; sh: 1,840; yacc: 1,255; xml: 985; perl: 635; lisp: 411; tcl: 341; lex: 217; makefile: 128
file content (65 lines) | stat: -rw-r--r-- 3,550 bytes parent folder | download | duplicates (2)
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
/*
    crossfm.h:

    Copyright (C) 2005 Francois Pinot

    This file is part of Csound.

    The Csound Library is free software; you can redistribute it
    and/or modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    Csound 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 Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with Csound; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
    02110-1301 USA
*/

/*********************************************************************/
/* Header file for the plugin opcode crossfm                         */
/*                                                                   */
/* crossfm implements a crossed frequency modulation algorithm.      */
/* The audio-rate output of oscillator #1 is used to modulate the    */
/* frequency input of oscillator #2 and the audio-rate output of     */
/* oscillator #2 is used to modulate the frequency input of          */
/* oscillator #1.                                                    */
/*                                                                   */
/* a1,a2   crossfm xfrq1, xfrq2, xndx1, xndx2, kcps, ifn1, ifn2      */
/*                 [, iphs1] [, iphs2]                               */
/*                                                                   */
/* kcps  - base frequency                                            */
/* xfrq1 - frequency multiplier for oscillator #1. Oscillator #1     */
/*         effective frequency is kcps * xfrq1                       */
/* xfrq2 - frequency multiplier for oscillator #2. Oscillator #2     */
/*         effective frequency is kcps * xfrq2                       */
/* xndx1 - index of the modulation of oscillator #2 by oscillator #1 */
/* xndx2 - index of the modulation of oscillator #1 by oscillator #2 */
/* ifn1  - function table number for oscillator #1                   */
/* ifn2  - function table number for oscillator #2                   */
/* iphs1 - optional, initial phase of waveform in table #1           */
/* iphs2 - optional, initial phase of waveform in table #2           */
/*                                                                   */
/*********************************************************************/

typedef struct {
  OPDS h;                                     /* common to all opcodes */

  MYFLT *aout1, *aout2;                       /* output args */
  MYFLT *xfrq1, *xfrq2, *xndx1, *xndx2;       /* input args  */
  MYFLT *kcps, *ifn1, *ifn2;                  /* input args  */
  MYFLT *iphs1, *iphs2;                       /* input args  */

  MYFLT phase1, phase2;                       /* phase of oscillators       */
  MYFLT sig1, sig2;                           /* a-rate oscillators outputs */
  MYFLT siz1, siz2;                           /* size of function tables    */
  FUNC  *ftp1, *ftp2;                         /* function table pointers    */
  short frq1adv, frq2adv, ndx1adv, ndx2adv;   /* increment values for xargs */
                                              /* pointers (0 for i-rate and */
                                              /* k-rate, 1 for a-rate args  */
} CROSSFM;