File: scot.h

package info (click to toggle)
csound 1%3A6.18.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: 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 (139 lines) | stat: -rw-r--r-- 4,035 bytes parent folder | download | duplicates (5)
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
135
136
137
138
139
/*
    scot.h:

    Copyright (C) 1991 Alan deLespinasse

    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
*/

/*                                                      SCOT.H       */
/* aldel Jul 91 */

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
#define PITCHCLASSES 7
#define NOTESPEROCT 12
#define MAXLINE 300
#define NEXTP "!&"

typedef struct
{
  unsigned long num,denom;
} Rat;

typedef struct strlist          /* used for p-fields */
{
  struct strlist *next;
  char str[32];
} Strlist;

typedef struct note
{
  struct note *next;
  double instrum;
  Rat start,                    /* when note starts */
      dur,                      /* length of note (mul by grpmul) */
      lastdur;                  /* duration to carry to next note */
  int octave,                   /* 8=middle c-b */
      pitchclass,               /* c=0, d=1, e=2... */
      accid,                    /* -1=flat, +1=sharp, etc. */
      accmod,                   /* TRUE if note had #,-,n modifiers */
      slur,                     /* 0,1,2,3 */
      tie,                      /* TRUE if note has __ after it */
      written;                  /* TRUE when written to score */
  Strlist *p,                   /* pfields local to this note */
          *carryp;              /* pfields to carry to next note */
} Note;

typedef struct nextp            /* keeps track of !next keywords */
{
  struct nextp *next;
  int src,dst;                  /* !next psrc "pdst" */
} Nextp;

typedef struct macro
{
  struct macro *next;
  char name[33],text[128];      /* [name="text..."] */
} Macro;

typedef struct inst
{
  struct inst *next;
  char *name;
  unsigned number;
  Macro *lmac;                  /* local macros */
} Inst;

typedef struct tempo
{
  struct tempo *next;
  Rat time;
  int val;
} Tempo;

#include <stdlib.h>

static void readinstsec(Inst *,Nextp **,
                        Rat *,Rat *,Rat *,Rat *,Rat *,
                        Note **,Note **,Tempo **,
                        int *,int *,int *,int *,int *,int*,
                        char *);
static void addparam(int,char *,Strlist **);
static char *findparam(int,Strlist **);
static char *readparams(Inst *);
static int applymacs(char **,Inst *);
static char *macval(char *,Inst *);
static void initnote(Note *);
static void readorch(Inst **);
static void readmacros(Macro **);
static void readfunctions(void);
static void readscore(Inst *);
static int expectchar(int);
static int findint(int *);
static int findchar(int *);
static int findonoff(int *);
static int findword(char *);
static void efindword(char *);
static int letterval(int);
static double pitchval(int,int,int,int);
static void writenote(Note *);
static void freenote(Note *);
static void freeps(Strlist *);
static void strlistcopy(Strlist **,Strlist **);
static int getccom(void);
static double ratval(Rat *);
static void ratreduce(Rat *);
static void ratadd(Rat *,Rat *,Rat *);
static void ratmul(Rat *,Rat *,Rat *);
static void ratdiv(Rat *,Rat *,Rat *);
static int ratcmp(Rat *,Rat *);
static void ratass(Rat *,Rat *);
static void scoterror(char *);
static void scotferror(char *);
static void initf(FILE *,FILE *,char *);
static int scotgetc(void);
static void scotungetc(void);
static void reporterrcount(void);