home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / misc / sci / gfft / source / settings.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-29  |  6.0 KB  |  200 lines

  1. /***************************************************************************
  2.  *          Copyright (C) 1994  Charles P. Peterson                  *
  3.  *         4007 Enchanted Sun, San Antonio, Texas 78244-1254             *
  4.  *              Email: Charles_P_Peterson@fcircus.sat.tx.us                *
  5.  *                                                                         *
  6.  *          This is free software with NO WARRANTY.                  *
  7.  *          See gfft.c, or run program itself, for details.              *
  8.  *              Support is available for a fee.                      *
  9.  ***************************************************************************
  10.  *
  11.  * Program:     gfft--General FFT analysis
  12.  * File:        settings.h
  13.  * Purpose:     define or declare settings
  14.  * Author:      Charles Peterson (CPP)
  15.  * History:     31-May-1993 CPP; Created.
  16.  *              9-Aug-94 CPP (1.10); Hidden3D setting
  17.  *              28-Aug-94 CPP (1.12); fix LowFrequency for FFP
  18.  * Comment:     Options are defined here if DEFINEHERE is defined.
  19.  *              *.c should undefine DEFINEHERE afterwards
  20.  */
  21.  
  22. #include <stdio.h>      /* This is needed below for FILE* */
  23. #include <limits.h>     /* ULONG_MAX and LONG_MAX */
  24. #include <float.h>      /* DBL_MAX */
  25. #include "defxtern.h"   /* DEFXTERN */
  26.  
  27. /*
  28.  * Types
  29.  */
  30.  
  31. typedef struct
  32. {
  33. unsigned long zero;
  34. int bits;
  35. BOOLEAN binary;        /* Ascii otherwise */
  36. }
  37. IOFormatS;
  38.  
  39. struct cal_st
  40.     struct cal_st *next;
  41.     char *filename;
  42.     long size;
  43.     BOOLEAN db;
  44.     double *frequencies;
  45.     float *amplitudes;
  46.  
  47.     long index;  /* 'instance' variable */
  48. };
  49.  
  50. /*
  51.  * Definitions
  52.  */
  53.  
  54. #define RECTANGLE_WINDOW 0
  55. #define TRIANGLE_WINDOW 1
  56. #define PARZEN_WINDOW 2
  57. #define WELCH_WINDOW 3
  58. #define HANN_WINDOW 4
  59. #define HAMMING_WINDOW 5
  60. #define BLACKMAN_HARRIS_74DB_WINDOW 6
  61. #define BLACKMAN_HARRIS_92DB_WINDOW 7
  62.  
  63. #define FORWARD_FFT 1
  64. #define INVERSE_FFT 2
  65. #define POWER_SPECTRUM 4
  66. #define AMPLITUDE_SPECTRUM 8
  67. #define MEAN_NORMALIZATION 16
  68. #define TWO_SIDED 32
  69.  
  70.  
  71.  
  72. #define INPUT_FORMAT_DEFAULTS {DEFAULT_INPUT_ZERO,DEFAULT_INPUT_BITS,\
  73. DEFAULT_INPUT_BINARY}
  74.  
  75. #define OUTPUT_FORMAT_DEFAULTS {DEFAULT_OUTPUT_ZERO,DEFAULT_OUTPUT_BITS,\
  76. DEFAULT_OUTPUT_BINARY}
  77.  
  78. #define NO_PLOT 0
  79. #define GNUPLOT_PLOT 1
  80. #define ANY_PLOT 1
  81.  
  82. #define AUTO_RATE 0.0L   /* This never-valid rate means 'automatic' */
  83. #define INVALID_RATE DBL_MAX  /* This unuseable rate means 'invalid' */
  84. #define MAX_BINS -1L  /* This unuseable value means 'maximum' for file */
  85. #define INVALID_BINS -2L  /* This unuseable value means 'invalid' */
  86. #define INVALID_INTERLEAVE ULONG_MAX  /* This means 'invalid' */
  87. #define NO_SMOOTHING -1L      /* Do not perform smoothing */
  88. #define INVALID_SMOOTHING -2L /* User last set invalid value */
  89. #define NOT_SET -1
  90. #define INVALID_SET -2
  91. #define DEFAULT_TIME_OVERLAP 0.50
  92.  
  93. #define HIGHEST_FREQUENCY DBL_MAX
  94. /* #define LOWEST_FREQUENCY DBL_MIN  * problem with FFP; 0 == DBL_MIN */
  95. #define LOWEST_FREQUENCY -1.0  
  96.  
  97. #define HIGHEST_Y DBL_MAX
  98. #define LOWEST_Y DBL_MIN
  99.  
  100.  
  101. #define MIN_QUANTIZATION DBL_MIN
  102. #define BAD_QUANTIZATION DBL_MAX
  103.  
  104. #define DEF_ROT_X 60
  105. #define DEF_ROT_Z 30
  106. #define INVALID_ROTATION -361.0
  107.  
  108. /*
  109.  * FileFormat info needed in this scope
  110.  */
  111. #define UNFORMATTED 0
  112.  
  113.  
  114. /*
  115.  * These options are set directly by interactive/batch commands
  116.  */
  117. DEFXTERN (BOOLEAN, Amplitude, TRUE)
  118. DEFXTERN (BOOLEAN, Appending, FALSE)
  119. DEFXTERN (struct cal_st, *CalibrationList, NULL)
  120. DEFXTERN (ULONG, Channel, 1L)
  121. DEFXTERN (BOOLEAN, CombinePlots, FALSE)
  122. DEFXTERN (BOOLEAN, Db, FALSE)
  123. DEFXTERN (ULONG, Frames, ULONG_MAX)
  124. DEFXTERN (BOOLEAN, Hidden3D, FALSE)
  125. DEFXTERN (double, HighFrequency, HIGHEST_FREQUENCY)
  126. DEFXTERN (double, HighY, HIGHEST_Y)
  127. DEFXTERN (BOOLEAN, IgnoreFormat, FALSE)
  128. DEFXTERN (IOFormatS, InputFormat, INPUT_FORMAT_DEFAULTS)
  129. DEFXTERN (ULONG, Interleave, 1)
  130. DEFXTERN (BOOLEAN, LogX, FALSE)
  131. DEFXTERN (BOOLEAN, LogY, FALSE)
  132. DEFXTERN (double, LowFrequency, LOWEST_FREQUENCY)
  133. DEFXTERN (double, LowY, LOWEST_Y)
  134. DEFXTERN (BOOLEAN, Mean, TRUE)
  135. DEFXTERN (double, Multiply, 1.0L)
  136. DEFXTERN (long, NumberBins, MAX_BINS)
  137. DEFXTERN (BOOLEAN, Numerical, FALSE)
  138. DEFXTERN (ULONG, Octave, 1L)
  139. DEFXTERN (BOOLEAN, OneShotOnly, FALSE)
  140. DEFXTERN (IOFormatS, OutputFormat, OUTPUT_FORMAT_DEFAULTS)
  141. DEFXTERN (BOOLEAN, Overlap, TRUE)
  142. DEFXTERN (BOOLEAN, Pad, FALSE)
  143. DEFXTERN (BOOLEAN, Parseval, TRUE)
  144. DEFXTERN (BOOLEAN, Pink, FALSE)
  145. DEFXTERN (int, Plot, NO_PLOT)
  146. DEFXTERN (char, *PlotOutput, NULL)
  147. DEFXTERN (BOOLEAN, Power, FALSE)
  148. DEFXTERN (BOOLEAN, PSDensity, FALSE)
  149. DEFXTERN (double, Quantization, MIN_QUANTIZATION)
  150. DEFXTERN (BOOLEAN, Quiet, FALSE)
  151. DEFXTERN (double, Rate, AUTO_RATE)
  152. DEFXTERN (double, RotX, DEF_ROT_X)
  153. DEFXTERN (double, RotZ, DEF_ROT_Z)
  154. DEFXTERN (char, *ReadName, NULL)
  155. DEFXTERN (FILE, *ReadPtr, NULL)
  156. DEFXTERN (BOOLEAN, RepeatOnly, FALSE)
  157. DEFXTERN (BOOLEAN, SaveMemory, FALSE)
  158. DEFXTERN (long, SmoothingSegments, NO_SMOOTHING)
  159. DEFXTERN (long, SquaredSmoothing, FALSE)
  160. DEFXTERN (ULONG, StartByte, 0)
  161. DEFXTERN (ULONG, StartFrame, 0)
  162. DEFXTERN (ULONG, StopByte, ULONG_MAX)
  163. DEFXTERN (char, *Terminal, NULL)
  164. DEFXTERN (BOOLEAN, Time3D, FALSE)
  165. DEFXTERN (long, TimeOffset, NOT_SET)
  166. DEFXTERN (double, TimeOverlap, DEFAULT_TIME_OVERLAP)
  167. DEFXTERN (long, TimeSegments, NOT_SET)
  168. DEFXTERN (long, TimeSegSize, NOT_SET)
  169. DEFXTERN (int, WindowType, RECTANGLE_WINDOW)
  170. DEFXTERN (char, *WriteName, NULL)
  171. DEFXTERN (FILE, *WritePtr, NULL)
  172.  
  173. /*
  174.  * These options are set by formatted files
  175.  */
  176. DEFXTERN (int, FileFormat, UNFORMATTED)
  177. DEFXTERN (int, FileFormatOK, FALSE)
  178. DEFXTERN (double, FileRate, AUTO_RATE)
  179. DEFXTERN (ULONG, FileDataOffset, 0)
  180. DEFXTERN (ULONG, FileFrames, 0)
  181. DEFXTERN (double, FileVolume, 1.0L)
  182. DEFXTERN (int, FileChannels, 1)
  183. DEFXTERN (ULONG, FileOneShotHiFrames, 0)
  184. DEFXTERN (ULONG, FileRepeatHiFrames, 0)
  185. DEFXTERN (int, FileOctaves, 1)
  186.  
  187. /*
  188.  * When the OK module gains control, it decides to use the following
  189.  */
  190.  
  191. DEFXTERN (double, OkRate, AUTO_RATE)
  192. DEFXTERN (ULONG, OkFrames, ULONG_MAX)
  193. DEFXTERN (ULONG, OkOffset, 0)
  194. DEFXTERN (int, OkChannels, 1)
  195. DEFXTERN (ULONG, OkStartFrame, 0)
  196. DEFXTERN (int, OkOctaveOffset, 0)
  197. DEFXTERN (double, OkSegmentTime, 0.0)
  198. DEFXTERN (char, *OkWriteName, NULL)
  199.