1 | /*
|
---|
2 | =============================================================================
|
---|
3 | curtab.c -- compute sine wave cursor table for waveshape editor
|
---|
4 | Written by D.N. Lynx Crowe -- see VER below for version
|
---|
5 | =============================================================================
|
---|
6 | */
|
---|
7 |
|
---|
8 | #define VER "Version 4 -- 1987-10-07"
|
---|
9 |
|
---|
10 | #define DEBUGIT 0
|
---|
11 |
|
---|
12 | #include "stdio.h"
|
---|
13 | #include "limits.h"
|
---|
14 | #include "math.h"
|
---|
15 | #include "stddefs.h"
|
---|
16 |
|
---|
17 | #define TWOPI ((double)(2.0 * PI))
|
---|
18 |
|
---|
19 | #define TABLEN 256
|
---|
20 | #define DTABLEN ((double)256.0)
|
---|
21 |
|
---|
22 | #define LO_LIM 64
|
---|
23 | #define HI_LIM 192
|
---|
24 |
|
---|
25 | #define ADJUSTER ((double)32768.0)
|
---|
26 |
|
---|
27 | #define THE_FILE "wdcurtab.dat"
|
---|
28 |
|
---|
29 | char *fname1;
|
---|
30 |
|
---|
31 | int t[TABLEN];
|
---|
32 | double k[TABLEN];
|
---|
33 | double m[TABLEN];
|
---|
34 |
|
---|
35 | /* |
---|
36 |
|
---|
37 | */
|
---|
38 |
|
---|
39 | /*
|
---|
40 | =============================================================================
|
---|
41 | curtab.c: main -- compute sine wave cursor table for waveshape editor
|
---|
42 | =============================================================================
|
---|
43 | */
|
---|
44 |
|
---|
45 | main()
|
---|
46 | {
|
---|
47 | register FILE *fp1;
|
---|
48 | register int i, j;
|
---|
49 | double q;
|
---|
50 |
|
---|
51 | printf("Buchla 700 Waveshape Cursor Table Generator %s\n", VER);
|
---|
52 |
|
---|
53 | fname1 = THE_FILE;
|
---|
54 |
|
---|
55 | if( (fp1 = fopen(fname1, "wa")) EQ NULL) {
|
---|
56 |
|
---|
57 | printf("curtab: ERROR - couldn't open [%s]\n", fname1);
|
---|
58 | exit();
|
---|
59 | }
|
---|
60 |
|
---|
61 | printf("curtab: Creating %d entry waveshape cursor table\n", TABLEN);
|
---|
62 |
|
---|
63 | q = TWOPI / DTABLEN;
|
---|
64 |
|
---|
65 | for(i = 0; i < TABLEN; i++) {
|
---|
66 |
|
---|
67 | k[i] = sin((double)i * q);
|
---|
68 |
|
---|
69 | if(k[i] GE (double)1.0)
|
---|
70 | k[i] = (double)0.999999;
|
---|
71 |
|
---|
72 | m[i] = (k[i] + (double)1.0) / (double)2.0;
|
---|
73 | t[i] = m[i] * ADJUSTER;
|
---|
74 |
|
---|
75 | #if DEBUGIT
|
---|
76 | if (! (i & 0x00000007))
|
---|
77 | printf("%4d %04x %04.4x %10.8f %11.8f\n",
|
---|
78 | i, i, (t[i] & 0x0000FFFF), k[i], m[i]);
|
---|
79 | #endif
|
---|
80 | }
|
---|
81 |
|
---|
82 | printf("curtab: Writing entries %d thru %d to file [%s]\n",
|
---|
83 | LO_LIM, (HI_LIM - 1), fname1);
|
---|
84 |
|
---|
85 | for (i = LO_LIM , j = 0; i < HI_LIM; i++ , j++)
|
---|
86 | fprintf(fp1, "\t0x%04.4x,\t/* %4d %4d %11.8f %11.8f */\n",
|
---|
87 | (t[i] & 0x0000FFFF), j, i, k[i], m[i]);
|
---|
88 |
|
---|
89 | fclose(fp1);
|
---|
90 |
|
---|
91 | printf("curtab: Output complete on [%s].\n", fname1);
|
---|
92 | }
|
---|