1 #ifndef SND_0_H
2 #define SND_0_H
3 
4 #if HAVE_RUBY
5   #undef _
6 #endif
7 
8 #ifndef STRFTIME_FORMAT
9   #define STRFTIME_FORMAT "%a %d-%b-%Y %H:%M %Z"
10 #endif
11 
12 #ifndef _MSC_VER
13   #define STRCMP(a, b) strcasecmp(a, b)
14   #define STRNCMP(a, b, c) strncasecmp(a, b, c)
15 #else
16   #define STRCMP(a, b) strcmp(a, b)
17   #define STRNCMP(a, b, c) strncmp(a, b, c)
18 #endif
19 
20 #define strcopy(Dest, Src, Len) snprintf(Dest, Len, "%s", Src)
21 
22 #define unpack_sound(a) ((int)a >> 16)
23 #define unpack_channel(a) ((int)a & 0xff)
24 #define pack_sound_and_channel(a, b) ((a << 16) | b)
25 
26 #define POINT_BUFFER_SIZE 8192
27 
28 #define FILE_BUFFER_SIZE 8192
29 #define MAX_BUFFER_SIZE 65536
30 #define PRINT_BUFFER_SIZE 512
31 #define LABEL_BUFFER_SIZE 128
32 #define REPORTING_SIZE (MAX_BUFFER_SIZE * 32)
33 /* progress bar (hourglass icon) is displayed if more than this many samples are being processed */
34 
35 #if (!USE_NO_GUI)
36   #define NUM_HOURGLASSES 15
37 #else
38   #define NUM_HOURGLASSES 1
39 #endif
40 
41 #define PEAK_ENV_CUTOFF 50000
42 #define MIN_INIT 1000000.0
43 #define MAX_INIT -1000000.0
44 
45 #define DEFAULT_OUTPUT_CHANS 1
46 #define DEFAULT_OUTPUT_SRATE 44100
47 #define DEFAULT_OUTPUT_HEADER_TYPE MUS_NEXT
48 /* mus-next is probably best here since intermediate/temp files can be any length (> 2^32 bytes)
49  *   and the next header-specified size, although 32 bits, is explicitly "advisory".
50  */
51 
52 #if MUS_LITTLE_ENDIAN
53   #define DEFAULT_OUTPUT_SAMPLE_TYPE MUS_LFLOAT
54 #else
55   #define DEFAULT_OUTPUT_SAMPLE_TYPE MUS_BFLOAT
56 #endif
57 
58 #define NO_COMPLETER -1
59 #define NO_SELECTION -1
60 #define NO_END_SPECIFIED -1
61 #define NO_MIX_TAG -1
62 #define INVALID_MIX_ID -1
63 #define SAVE_ALL_CHANS -1
64 #define ANY_MIX_ID -2
65 #define NO_COLOR -1
66 #define NOT_A_GC_LOC -1
67 #define NOT_A_SOUND -1
68 
69 #define MIX_FILE_NO_MIX -1
70 #define MIX_FILE_NO_FILE -2
71 #define MIX_FILE_NO_SP -3
72 #define MIX_FILE_NO_TEMP_FILE -4
73 
74 #ifndef POPUP_BUTTON
75   #define POPUP_BUTTON 3
76 #endif
77 
78 #define I_HELP "Help"
79 #define I_GO_AWAY "Go away"
80 #define I_NEXT "Next"
81 #define I_PREVIOUS "Previous"
82 #define I_FIND "Find"
83 #define I_find "find:"
84 #define I_STOP "Stop"
85 
86 typedef enum {SOUND_SAVE_AS, SELECTION_SAVE_AS, REGION_SAVE_AS} save_dialog_t;
87 typedef enum {NOT_IN_BACKGROUND, IN_BACKGROUND} play_process_t;
88 typedef enum {WITHOUT_VIRTUAL_CHANNELS, WITH_VIRTUAL_CHANNELS} virtual_channels_t;
89 typedef enum {WITH_FW_BUTTONS, WITH_ARROWS} fw_button_t;
90 typedef enum {WITHOUT_HOOK, WITH_HOOK} with_hook_t;
91 typedef enum {WITHOUT_WORD_WRAP, WITH_WORD_WRAP} with_word_wrap_t;
92 typedef enum {DRAG_ENTER, DRAG_LEAVE, DRAG_MOTION} drag_style_t;
93 typedef enum {ENVED_AMPLITUDE, ENVED_SPECTRUM, ENVED_SRATE} enved_target_t;
94 typedef enum {ENVELOPE_LINEAR, ENVELOPE_EXPONENTIAL} env_type_t;
95 typedef enum {GRAPH_LINES, GRAPH_DOTS, GRAPH_FILLED, GRAPH_DOTS_AND_LINES, GRAPH_LOLLIPOPS, NUM_GRAPH_STYLES} graph_style_t;
96 typedef enum {APPLY_TO_SOUND, APPLY_TO_CHANNEL, APPLY_TO_SELECTION} snd_apply_t;
97 typedef enum {GRAPH_ONCE, GRAPH_AS_SONOGRAM, GRAPH_AS_SPECTROGRAM, GRAPH_AS_WAVOGRAM} graph_type_t;
98 typedef enum {ZOOM_FOCUS_LEFT, ZOOM_FOCUS_RIGHT, ZOOM_FOCUS_ACTIVE, ZOOM_FOCUS_MIDDLE, ZOOM_FOCUS_PROC} zoom_focus_t;
99 typedef enum {DONT_DELETE_ME, DELETE_ME, ALREADY_DELETED, MULTICHANNEL_DELETION, MULTICHANNEL_DELETION_IF_FILE} file_delete_t;
100 typedef enum {SND_REOPEN_CLOSED_FILE, SND_OPEN_CHANNEL, SND_COPY_READER, SND_INSERT_FILE, SND_CHANGE_FILE, SND_OVERRIDE_FILE, SND_MIX_FILE} open_reason_t;
101 typedef enum {CURSOR_CROSS, CURSOR_LINE, CURSOR_PROC} cursor_style_t;
102 typedef enum {SHOW_NO_AXES, SHOW_ALL_AXES, SHOW_X_AXIS, SHOW_ALL_AXES_UNLABELLED, SHOW_X_AXIS_UNLABELLED, SHOW_BARE_X_AXIS, NUM_SHOW_AXES} show_axes_t;
103 typedef enum {DONT_NORMALIZE, NORMALIZE_BY_CHANNEL, NORMALIZE_BY_SOUND, NORMALIZE_GLOBALLY, NUM_TRANSFORM_NORMALIZATIONS} fft_normalize_t;
104 typedef enum {NO_DISK_SPACE, NOT_ENOUGH_DISK_SPACE, DISK_SPACE_OK} disk_space_t;
105 typedef enum {CHAN_GC, CHAN_IGC, CHAN_SELGC, CHAN_CGC, CHAN_MGC, CHAN_MXGC, CHAN_TMPGC} chan_gc_t;
106 typedef enum {NOT_A_VIEWER, FILE_VIEWER, REGION_VIEWER} file_viewer_t; /* 1 and 2, according to docs for mouse-enter-label-hook */
107 typedef enum {COLOR_ORIENTATION_DIALOG, ENVED_DIALOG, TRANSFORM_DIALOG,
108 	      FILE_OPEN_DIALOG, SOUND_SAVE_AS_DIALOG, VIEW_FILES_DIALOG, RAW_DATA_DIALOG, NEW_FILE_DIALOG,
109 	      FILE_MIX_DIALOG, EDIT_HEADER_DIALOG, FIND_DIALOG, HELP_DIALOG, MIX_DIALOG,
110 	      PRINT_DIALOG, REGION_DIALOG, POST_IT_DIALOG, CONTROLS_DIALOG, SELECTION_SAVE_AS_DIALOG,
111               FILE_INSERT_DIALOG, REGION_SAVE_AS_DIALOG, PREFERENCES_DIALOG, NUM_DIALOGS} snd_dialog_t;
112 typedef enum {SOUND_IDLE, SOUND_NORMAL, SOUND_WRAPPER, SOUND_REGION, SOUND_READER} sound_inuse_t;
113 typedef enum {IO_NO_ERROR, IO_SAVE_HOOK_CANCELLATION, IO_BAD_CHANNEL, IO_CANT_REOPEN_FILE, IO_TOO_MANY_OPEN_FILES,
114 	      IO_UNKNOWN_SNDLIB_ERROR, IO_NO_MEMORY, IO_CANT_OPEN_FILE, IO_NO_FILENAME, IO_BAD_SAMPLE_TYPE, IO_BAD_HEADER_TYPE,
115 	      IO_SNDLIB_UNINITIALIZED, IO_NOT_A_SOUND_FILE, IO_FILE_CLOSED, IO_WRITE_ERROR, IO_INTERRUPTED, IO_CANT_CLOSE_FILE,
116 	      IO_BAD_HEADER, IO_DISK_FULL, IO_WRITE_PROTECTED, IO_CANT_READ_SELECTION_FILE, IO_NEED_WRITE_CONFIRMATION,
117 	      IO_NO_CHANGES, IO_EDIT_HOOK_CANCELLATION, IO_CANT_CREATE_FILE, IO_ERROR_NUM} io_error_t;
118 typedef enum {INSERTION_EDIT, DELETION_EDIT, CHANGE_EDIT, INITIALIZE_EDIT, SCALED_EDIT, ZERO_EDIT, RAMP_EDIT,
119 	      EXTEND_EDIT, MIX_EDIT, CHANGE_MIX_EDIT,
120               NUM_EDIT_TYPES} edit_t;
121 typedef enum {SAMPLER, REGION_READER, MIX_READER} reader_t;
122 typedef enum {MIX_FOLLOWS_SYNC, MIX_SETS_SYNC_LOCALLY} mix_sync_t;
123 typedef enum {CHANNEL_FREED, CHANNEL_INACTIVE, CHANNEL_INITIALIZED, CHANNEL_HAS_EDIT_LIST, CHANNEL_HAS_AXES} channel_state_t;
124 
125 enum {BLACK_AND_WHITE_COLORMAP, GRAY_COLORMAP, HOT_COLORMAP, COOL_COLORMAP, BONE_COLORMAP, COPPER_COLORMAP, PINK_COLORMAP, JET_COLORMAP, PRISM_COLORMAP,
126       AUTUMN_COLORMAP, WINTER_COLORMAP, SPRING_COLORMAP, SUMMER_COLORMAP, RAINBOW_COLORMAP, FLAG_COLORMAP, PHASES_COLORMAP, NUM_BUILTIN_COLORMAPS};
127 
128 
129 #define is_serious_io_error(Err) ((Err != IO_NO_ERROR) && \
130                                   (Err != IO_EDIT_HOOK_CANCELLATION) && \
131                                   (Err != IO_SAVE_HOOK_CANCELLATION) && \
132                                   (Err != IO_INTERRUPTED) && \
133                                   (Err != IO_NEED_WRITE_CONFIRMATION) && \
134                                   (Err != IO_NO_CHANGES))
135 
136 enum {FILE_OPENED, FILE_CLOSED};
137 typedef enum {WITH_READABLE_HEADERS, WITH_WRITABLE_HEADERS, WITH_BUILTIN_HEADERS} header_choice_t;
138 enum {SORT_A_TO_Z, SORT_Z_TO_A, SORT_NEW_TO_OLD, SORT_OLD_TO_NEW, SORT_SMALL_TO_BIG, SORT_BIG_TO_SMALL, SORT_XEN};
139 
140 typedef enum {FILE_READ_WRITE, FILE_READ_ONLY} read_only_t;
141 #define FORCE_REFFT true
142 #define DONT_FORCE_REFFT false
143 #define FORCE_REDISPLAY true
144 #define DONT_FORCE_REDISPLAY false
145 #define WITH_EVENTS true
146 #define WITHOUT_EVENTS false
147 #define NOT_IN_AS_ONE_EDIT false
148 #define IN_AS_ONE_EDIT true
149 #define FILE_SELECTED true
150 #define FILE_NOT_SELECTED false
151 #define EXIT_FORCED true
152 #define EXIT_NOT_FORCED false
153 
154 #if HAVE_RUBY
155   #define to_proc_name(Str) xen_scheme_procedure_to_ruby(Str)
156   #define TO_VAR_NAME(Str) xen_scheme_constant_to_ruby(Str)
157   #define PROC_OPEN "("
158   #define PROC_SEP ", "
159   #define LIST_OPEN "["
160   #define LIST_CLOSE "]"
161   #define BPAREN ""
162   #define EPAREN ""
163   #define PROC_FALSE "false"
164   #define PROC_TRUE "true"
165   #define PROC_QUOTE ""
166 #endif
167 #if HAVE_FORTH
168   #define to_proc_name(Str) Str
169   #define TO_VAR_NAME(Str) Str
170   #define PROC_OPEN " "
171   #define PROC_SEP " "
172   #define LIST_OPEN " '( "
173   #define LIST_CLOSE " ) "
174   #define BPAREN ""
175   #define EPAREN " drop"
176   #define PROC_FALSE "#f"
177   #define PROC_TRUE  "#t"
178   #define PROC_QUOTE ""
179 #endif
180 #if HAVE_SCHEME || (!HAVE_EXTENSION_LANGUAGE)
181   #define to_proc_name(Str) Str
182   #define TO_VAR_NAME(Str) Str
183   #define PROC_OPEN " "
184   #define PROC_SEP " "
185   #define LIST_OPEN "(list "
186   #define LIST_CLOSE ")"
187   #define BPAREN "("
188   #define EPAREN ")"
189   #define PROC_FALSE "#f"
190   #define PROC_TRUE  "#t"
191   #define PROC_QUOTE "'"
192 #endif
193 
194 #define MAX_MAIN_MENUS 64
195 #define NO_REGIONS -2
196 #define INVALID_REGION -1
197 #define NO_LIST -1
198 
199 typedef enum {READ_FORWARD, READ_BACKWARD} read_direction_t;
200 typedef enum {DONT_TRACK, TRACK_AND_RETURN, TRACK_AND_STAY} tracking_cursor_t;
201 typedef enum {DONT_UPDATE_DISPLAY, UPDATE_DISPLAY} cut_selection_regraph_t;
202 typedef enum {IGNORE_CACHE, REMOVE_FROM_CACHE} cache_remove_t;
203 typedef enum {FFT_UNCHANGED, FFT_CHANGED, FFT_CHANGE_LOCKED} fft_change_t;
204 typedef enum {WITHOUT_GRAPH, WITH_GRAPH, WITHOUT_INITIAL_GRAPH_HOOK} channel_graph_t;
205 typedef enum {NOT_PRINTING, PRINTING} printing_t;
206 typedef enum {NO_X_AXIS, WITH_X_AXIS} with_x_axis_t;
207 typedef enum {NO_GRID, WITH_GRID} with_grid_t;
208 typedef enum {WITH_LINEAR_AXES, WITH_LOG_X_AXIS, WITH_LOG_Y_AXIS} log_axis_t;
209 
210 #define GET_NEW_SYNC -1
211 #define GET_ORIGINAL_SYNC -2
212 
213 #define OVER_SELECTION true
214 #define OVER_SOUND false
215 
216 #define AT_CURRENT_EDIT_POSITION -1
217 
218 typedef enum {X_AXIS_IN_SECONDS, X_AXIS_IN_SAMPLES, X_AXIS_AS_PERCENTAGE, X_AXIS_IN_BEATS,
219 	      X_AXIS_IN_MEASURES, X_AXIS_AS_CLOCK, NUM_X_AXIS_STYLES} x_axis_style_t;
220 typedef enum {SPEED_CONTROL_AS_FLOAT, SPEED_CONTROL_AS_RATIO, SPEED_CONTROL_AS_SEMITONE, NUM_SPEED_CONTROL_STYLES} speed_style_t;
221 typedef enum {CURSOR_IN_VIEW, CURSOR_ON_LEFT, CURSOR_ON_RIGHT, CURSOR_IN_MIDDLE, KEYBOARD_NO_ACTION} kbd_cursor_t;
222 typedef enum {CHANNELS_SEPARATE, CHANNELS_COMBINED, CHANNELS_SUPERIMPOSED, NOT_A_CHANNEL_STYLE} channel_style_t;
223 #define NUM_CHANNEL_STYLES 3
224 typedef enum {SYNC_NONE, SYNC_ALL, SYNC_BY_SOUND} sync_style_t;
225 #define NUM_SYNC_STYLES 3
226 typedef enum {FD_CLOSED, FD_OPEN} fd_open_t;
227 typedef enum {PRINT_SND, PRINT_ENV} print_choice_t;
228 typedef enum {SND_DATA_NO_DATA, SND_DATA_FILE, SND_DATA_BUFFER} snd_data_file_t;
229 typedef enum {SOUNDS_VERTICAL, SOUNDS_HORIZONTAL, SOUNDS_IN_NOTEBOOK, SOUNDS_IN_SEPARATE_WINDOWS} sound_style_t;
230 enum {FOURIER, WAVELET, WALSH, AUTOCORRELATION, CEPSTRUM, HAAR, NUM_BUILTIN_TRANSFORM_TYPES}; /* not typedef'd -- grows as new ones are added */
231 #define NUM_WAVELETS 48
232 
233 typedef enum {FCP_X_ANGLE, FCP_X_SCALE, FCP_Y_ANGLE, FCP_Y_SCALE, FCP_Z_ANGLE, FCP_Z_SCALE,
234 	      FCP_SPECTRUM_END, FCP_SPECTRUM_START, FCP_ALPHA, FCP_BETA, FCP_BEATS} fcp_t;
235 typedef enum {TIME_AXIS_INFO, TRANSFORM_AXIS_INFO, LISP_AXIS_INFO} axis_info_t;
236 typedef enum {COLOR_POSITION, COLOR_ZOOM} slider_choice_t;
237 
238 typedef enum {PLAY_COMPLETE, PLAY_CLOSE, PLAY_BUTTON_UNSET, PLAY_STOP_CALLED, PLAY_C_G, PLAY_NO_CHANNEL,
239 	      PLAY_ERROR, PLAY_APPLY, PLAY_EDIT, PLAY_C_T} play_stop_t;
240 
241 typedef enum {NO_REQUESTOR, FROM_UPDATE, FROM_VIEW_FILES, FROM_DRAG_AND_DROP, FROM_OPEN_DIALOG,
242 	      FROM_KEYBOARD, FROM_STARTUP, FROM_REGION_EDIT, FROM_NEW_FILE_DIALOG, FROM_OPEN_SOUND,
243 	      FROM_OPEN_RAW_SOUND, FROM_VIEW_SOUND, FROM_NEW_SOUND, FROM_RAW_DATA_DIALOG, FROM_MIX_DIALOG,
244               FROM_INSERT_DIALOG, FROM_VIEW_FILES_MIX_DIALOG, FROM_VIEW_FILES_INSERT_DIALOG,
245 	      FROM_OPEN_RECENT_MENU, FROM_OPEN_DIALOG_POPUP, FROM_POPUP_CUT_TO_NEW} open_requestor_t;
246 
247 #define DEFAULT_AMP_CONTROL 1.0
248 #define DEFAULT_CONTRAST_CONTROL 0.0
249 #define DEFAULT_EXPAND_CONTROL 1.0
250 #define DEFAULT_REVERB_CONTROL_LENGTH 1.0
251 #define DEFAULT_REVERB_CONTROL_SCALE 0.0
252 #define DEFAULT_SPEED_CONTROL 1.0
253 #define DEFAULT_CONTRAST_CONTROL_ON false
254 #define DEFAULT_EXPAND_CONTROL_ON false
255 #define DEFAULT_FILTER_CONTROL_ON false
256 #define DEFAULT_REVERB_CONTROL_ON false
257 
258 
259 #define filter_control_in_dB(ss) ss->Filter_Control_In_Db
260 #if HAVE_SCHEME
261   #define in_set_filter_control_in_dB(ss, val) {ss->Filter_Control_In_Db = val; s7_symbol_set_value(s7, ss->filter_control_in_db_symbol, s7_make_boolean(s7, val));}
262 #else
263   #define in_set_filter_control_in_dB(ss, val) ss->Filter_Control_In_Db = val
264 #endif
265 #define DEFAULT_FILTER_CONTROL_IN_DB false
266 
267 #define filter_control_in_hz(ss) ss->Filter_Control_In_Hz
268 #if HAVE_SCHEME
269   #define in_set_filter_control_in_hz(ss, val) {ss->Filter_Control_In_Hz = val; s7_symbol_set_value(s7, ss->filter_control_in_hz_symbol, s7_make_boolean(s7, val));}
270 #else
271   #define in_set_filter_control_in_hz(ss, val) ss->Filter_Control_In_Hz = val
272 #endif
273 #define DEFAULT_FILTER_CONTROL_IN_HZ false
274 
275 #define speed_control_tones(ss) ss->Speed_Control_Tones
276 #if HAVE_SCHEME
277   #define in_set_speed_control_tones(ss, val) {ss->Speed_Control_Tones = val; s7_symbol_set_value(s7, ss->speed_control_tones_symbol, s7_make_integer(s7, val));}
278 #else
279   #define in_set_speed_control_tones(ss, val) ss->Speed_Control_Tones = val
280 #endif
281 #define DEFAULT_SPEED_CONTROL_TONES 12
282 
283 #define speed_control_style(ss) ss->Speed_Control_Style
284 #if HAVE_SCHEME
285   #define in_set_speed_control_style(ss, val) {ss->Speed_Control_Style = val; s7_symbol_set_value(s7, ss->speed_control_style_symbol, s7_make_integer(s7, val));}
286 #else
287   #define in_set_speed_control_style(ss, val) ss->Speed_Control_Style = val
288 #endif
289 #define DEFAULT_SPEED_CONTROL_STYLE SPEED_CONTROL_AS_FLOAT
290 
291 #define expand_control_length(ss) ss->Expand_Control_Length
292 #if HAVE_SCHEME
293   #define in_set_expand_control_length(ss, val) {ss->Expand_Control_Length = val; s7_symbol_set_value(s7, ss->expand_control_length_symbol, s7_make_real(s7, val));}
294 #else
295   #define in_set_expand_control_length(ss, val) ss->Expand_Control_Length = val
296 #endif
297 #define DEFAULT_EXPAND_CONTROL_LENGTH 0.15
298 
299 #define expand_control_ramp(ss) ss->Expand_Control_Ramp
300 #if HAVE_SCHEME
301   #define in_set_expand_control_ramp(ss, val) {ss->Expand_Control_Ramp = val; s7_symbol_set_value(s7, ss->expand_control_ramp_symbol, s7_make_real(s7, val));}
302 #else
303   #define in_set_expand_control_ramp(ss, val) ss->Expand_Control_Ramp = val
304 #endif
305 #define DEFAULT_EXPAND_CONTROL_RAMP 0.4
306 
307 #define expand_control_hop(ss) ss->Expand_Control_Hop
308 #if HAVE_SCHEME
309   #define in_set_expand_control_hop(ss, val) {ss->Expand_Control_Hop = val; s7_symbol_set_value(s7, ss->expand_control_hop_symbol, s7_make_real(s7, val));}
310 #else
311   #define in_set_expand_control_hop(ss, val) ss->Expand_Control_Hop = val
312 #endif
313 #define DEFAULT_EXPAND_CONTROL_HOP 0.05
314 
315 #define expand_control_jitter(ss) ss->Expand_Control_Jitter
316 #if HAVE_SCHEME
317   #define in_set_expand_control_jitter(ss, val) {ss->Expand_Control_Jitter = val; s7_symbol_set_value(s7, ss->expand_control_jitter_symbol, s7_make_real(s7, val));}
318 #else
319   #define in_set_expand_control_jitter(ss, val) ss->Expand_Control_Jitter = val
320 #endif
321 #define DEFAULT_EXPAND_CONTROL_JITTER 0.1
322 
323 #define contrast_control_amp(ss) ss->Contrast_Control_Amp
324 #if HAVE_SCHEME
325   #define in_set_contrast_control_amp(ss, val) {ss->Contrast_Control_Amp = val; s7_symbol_set_value(s7, ss->contrast_control_amp_symbol, s7_make_real(s7, val));}
326 #else
327   #define in_set_contrast_control_amp(ss, val) ss->Contrast_Control_Amp = val
328 #endif
329 #define DEFAULT_CONTRAST_CONTROL_AMP 1.0
330 
331 #define reverb_control_feedback(ss) ss->Reverb_Control_Feedback
332 #if HAVE_SCHEME
333   #define in_set_reverb_control_feedback(ss, val) {ss->Reverb_Control_Feedback = val; s7_symbol_set_value(s7, ss->reverb_control_feedback_symbol, s7_make_real(s7, val));}
334 #else
335   #define in_set_reverb_control_feedback(ss, val) ss->Reverb_Control_Feedback = val
336 #endif
337 #define DEFAULT_REVERB_CONTROL_FEEDBACK 1.09
338 
339 #define reverb_control_lowpass(ss) ss->Reverb_Control_Lowpass
340 #if HAVE_SCHEME
341   #define in_set_reverb_control_lowpass(ss, val) {ss->Reverb_Control_Lowpass = val; s7_symbol_set_value(s7, ss->reverb_control_lowpass_symbol, s7_make_real(s7, val));}
342 #else
343   #define in_set_reverb_control_lowpass(ss, val) ss->Reverb_Control_Lowpass = val
344 #endif
345 #define DEFAULT_REVERB_CONTROL_LOWPASS 0.7
346 
347 #define reverb_control_decay(ss) ss->Reverb_Control_Decay
348 #if HAVE_SCHEME
349   #define in_set_reverb_control_decay(ss, val) {ss->Reverb_Control_Decay = val; s7_symbol_set_value(s7, ss->reverb_control_decay_symbol, s7_make_real(s7, val));}
350 #else
351   #define in_set_reverb_control_decay(ss, val) ss->Reverb_Control_Decay = val
352 #endif
353 #define DEFAULT_REVERB_CONTROL_DECAY 1.0
354 
355 #define contrast_control_min(ss) ss->Contrast_Control_Min
356 #define in_set_contrast_control_min(ss, val) ss->Contrast_Control_Min = val
357 #define DEFAULT_CONTRAST_CONTROL_MIN 0.0
358 
359 #define contrast_control_max(ss) ss->Contrast_Control_Max
360 #define in_set_contrast_control_max(ss, val) ss->Contrast_Control_Max = val
361 #define DEFAULT_CONTRAST_CONTROL_MAX 10.0
362 
363 #define expand_control_min(ss) ss->Expand_Control_Min
364 #define in_set_expand_control_min(ss, val) ss->Expand_Control_Min = val
365 #define DEFAULT_EXPAND_CONTROL_MIN 0.05
366 
367 #define expand_control_max(ss) ss->Expand_Control_Max
368 #define in_set_expand_control_max(ss, val) ss->Expand_Control_Max = val
369 #define DEFAULT_EXPAND_CONTROL_MAX 20.0
370 
371 #define speed_control_min(ss) ss->Speed_Control_Min
372 #define in_set_speed_control_min(ss, val) ss->Speed_Control_Min = val
373 #define DEFAULT_SPEED_CONTROL_MIN 0.05
374 
375 #define speed_control_max(ss) ss->Speed_Control_Max
376 #define in_set_speed_control_max(ss, val) ss->Speed_Control_Max = val
377 #define DEFAULT_SPEED_CONTROL_MAX 20.0
378 
379 #define amp_control_min(ss) ss->Amp_Control_Min
380 #define in_set_amp_control_min(ss, val) ss->Amp_Control_Min = val
381 #define DEFAULT_AMP_CONTROL_MIN 0.0
382 
383 #define amp_control_max(ss) ss->Amp_Control_Max
384 #define in_set_amp_control_max(ss, val) ss->Amp_Control_Max = val
385 #define DEFAULT_AMP_CONTROL_MAX 8.0
386 
387 #define reverb_control_scale_min(ss) ss->Reverb_Control_Scale_Min
388 #define in_set_reverb_control_scale_min(ss, val) ss->Reverb_Control_Scale_Min = val
389 #define DEFAULT_REVERB_CONTROL_SCALE_MIN 0.0
390 
391 #define reverb_control_scale_max(ss) ss->Reverb_Control_Scale_Max
392 #define in_set_reverb_control_scale_max(ss, val) ss->Reverb_Control_Scale_Max = val
393 #define DEFAULT_REVERB_CONTROL_SCALE_MAX 4.0
394 
395 #define reverb_control_length_min(ss) ss->Reverb_Control_Length_Min
396 #define in_set_reverb_control_length_min(ss, val) ss->Reverb_Control_Length_Min = val
397 #define DEFAULT_REVERB_CONTROL_LENGTH_MIN 0.0
398 
399 #define reverb_control_length_max(ss) ss->Reverb_Control_Length_Max
400 #define in_set_reverb_control_length_max(ss, val) ss->Reverb_Control_Length_Max = val
401 #define DEFAULT_REVERB_CONTROL_LENGTH_MAX 5.0
402 
403 #define filter_control_order(ss) ss->Filter_Control_Order
404 #if HAVE_SCHEME
405   #define in_set_filter_control_order(ss, val) {ss->Filter_Control_Order = val; s7_symbol_set_value(s7, ss->filter_control_order_symbol, s7_make_integer(s7, val));}
406 #else
407   #define in_set_filter_control_order(ss, val) ss->Filter_Control_Order = val
408 #endif
409 #define DEFAULT_FILTER_CONTROL_ORDER 20
410 
411 #define in_show_controls(ss) ss->Show_Controls
412 #if HAVE_SCHEME
413   #define in_set_show_controls(ss, val) \
414     do {\
415         ss->Show_Controls = val; \
416         s7_symbol_set_value(s7, ss->show_controls_symbol, s7_make_boolean(s7, ss->Show_Controls));\
417     } while (0)
418 #else
419   #define in_set_show_controls(ss, val) ss->Show_Controls = val
420 #endif
421 #define DEFAULT_SHOW_CONTROLS false
422 
423 #define with_tracking_cursor(ss) ss->With_Tracking_Cursor
424 #if HAVE_SCHEME
425 #define set_with_tracking_cursor(ss, val) \
426   do {\
427       ss->With_Tracking_Cursor = val; \
428       s7_symbol_set_value(s7, ss->with_tracking_cursor_symbol, s7_make_integer(s7, (int)(ss->With_Tracking_Cursor))); \
429      } while (0)
430 #else
431   #define set_with_tracking_cursor(ss, val) ss->With_Tracking_Cursor = val
432 #endif
433 #define DEFAULT_WITH_TRACKING_CURSOR DONT_TRACK
434 
435 #define just_sounds(ss) ss->Just_Sounds
436 #if HAVE_SCHEME
437   #define set_just_sounds(val) \
438     do {\
439         ss->Just_Sounds = val; \
440         s7_symbol_set_value(s7, ss->just_sounds_symbol, s7_make_boolean(s7, ss->Just_Sounds));\
441     } while (0)
442 #else
443   #define set_just_sounds(val) ss->Just_Sounds = val
444 #endif
445 #define DEFAULT_JUST_SOUNDS true
446 
447 #define DEFAULT_SYNC 0
448 #define DEFAULT_INIT_WINDOW_X -1
449 #define DEFAULT_INIT_WINDOW_Y -1
450 #define DEFAULT_INIT_WINDOW_WIDTH 0
451 #define DEFAULT_INIT_WINDOW_HEIGHT 0
452 
453 #define default_output_header_type(ss) ss->Default_Output_Header_Type
454 #if HAVE_SCHEME
455   #define set_default_output_header_type(a) \
456     do {\
457       ss->Default_Output_Header_Type = (mus_header_t)a;			\
458         s7_symbol_set_value(s7, ss->default_output_header_type_symbol, s7_make_integer(s7, (s7_int)(ss->Default_Output_Header_Type))); \
459     } while (0)
460 #else
461 #define set_default_output_header_type(a) ss->Default_Output_Header_Type = (mus_header_t)a
462 #endif
463 
464 #define default_output_chans(ss) ss->Default_Output_Chans
465 #if HAVE_SCHEME
466   #define set_default_output_chans(a) \
467     do {\
468         ss->Default_Output_Chans = a; \
469         s7_symbol_set_value(s7, ss->default_output_chans_symbol, s7_make_integer(s7, ss->Default_Output_Chans));\
470     } while (0)
471 #else
472   #define set_default_output_chans(a) ss->Default_Output_Chans = a
473 #endif
474 
475 #define default_output_srate(ss) ss->Default_Output_Srate
476 #if HAVE_SCHEME
477   #define set_default_output_srate(a) \
478     do {\
479         ss->Default_Output_Srate = a; \
480         s7_symbol_set_value(s7, ss->default_output_srate_symbol, s7_make_integer(s7, ss->Default_Output_Srate));\
481     } while (0)
482 #else
483   #define set_default_output_srate(a) ss->Default_Output_Srate = a
484 #endif
485 
486 #define default_output_sample_type(ss) ss->Default_Output_Sample_Type
487 #if HAVE_SCHEME
488   #define set_default_output_sample_type(a) \
489     do {\
490         ss->Default_Output_Sample_Type = (mus_sample_t)a;			\
491         s7_symbol_set_value(s7, ss->default_output_sample_type_symbol, s7_make_integer(s7, (s7_int)ss->Default_Output_Sample_Type)); \
492        } while (0)
493 #else
494 #define set_default_output_sample_type(a) ss->Default_Output_Sample_Type = (mus_sample_t)a
495 #endif
496 
497 #define dac_size(ss) ss->Dac_Size
498 #if HAVE_SCHEME
499   #define set_dac_size(a) \
500     do {\
501         ss->Dac_Size = a; \
502         s7_symbol_set_value(s7, ss->dac_size_symbol, s7_make_integer(s7, ss->Dac_Size));\
503     } while (0)
504 #else
505   #define set_dac_size(a) ss->Dac_Size = a
506 #endif
507 #if (HAVE_OSS || HAVE_ALSA)
508   #define DEFAULT_DAC_SIZE 256
509 #else
510   #if __APPLE__
511     #define DEFAULT_DAC_SIZE 64
512   #else
513     #define DEFAULT_DAC_SIZE 1024
514   #endif
515 #endif
516 
517 #define dac_combines_channels(ss) ss->Dac_Combines_Channels
518 #if HAVE_SCHEME
519   #define set_dac_combines_channels(a) \
520     do {\
521         ss->Dac_Combines_Channels = a; \
522         s7_symbol_set_value(s7, ss->dac_combines_channels_symbol, s7_make_boolean(s7, ss->Dac_Combines_Channels));\
523     } while (0)
524 #else
525   #define set_dac_combines_channels(a) ss->Dac_Combines_Channels = a
526 #endif
527 #define DEFAULT_DAC_COMBINES_CHANNELS true
528 
529 #define max_regions(ss) ss->Max_Regions
530 #if HAVE_SCHEME
531   #define in_set_max_regions(a) \
532     do {\
533         ss->Max_Regions = a; \
534         s7_symbol_set_value(s7, ss->max_regions_symbol, s7_make_integer(s7, ss->Max_Regions));\
535        } while (0)
536 #else
537   #define in_set_max_regions(a) ss->Max_Regions = a
538 #endif
539 #define DEFAULT_MAX_REGIONS 16
540 
541 #define max_transform_peaks(ss) ss->Max_Transform_Peaks
542 #if HAVE_SCHEME
543   #define in_set_max_transform_peaks(a) \
544     do {\
545         ss->Max_Transform_Peaks = a; \
546         s7_symbol_set_value(s7, ss->max_transform_peaks_symbol, s7_make_integer(s7, ss->Max_Transform_Peaks));\
547     } while (0)
548 #else
549   #define in_set_max_transform_peaks(a) ss->Max_Transform_Peaks = a
550 #endif
551 #define DEFAULT_MAX_TRANSFORM_PEAKS 100
552 
553 #define auto_resize(ss) ss->Auto_Resize
554 #if HAVE_SCHEME
555   #define set_auto_resize(a) \
556     do {\
557         ss->Auto_Resize = a; \
558         s7_symbol_set_value(s7, ss->auto_resize_symbol, s7_make_boolean(s7, ss->Auto_Resize));\
559     } while (0)
560 #else
561   #define set_auto_resize(a) ss->Auto_Resize = a
562 #endif
563 #define DEFAULT_AUTO_RESIZE true
564 
565 #define auto_update(ss) ss->Auto_Update
566 #if HAVE_SCHEME
567   #define set_auto_update(a) \
568     do {\
569         ss->Auto_Update = a; \
570         s7_symbol_set_value(s7, ss->auto_update_symbol, s7_make_boolean(s7, ss->Auto_Update));\
571     } while (0)
572 #else
573   #define set_auto_update(a) ss->Auto_Update = a
574 #endif
575 #define DEFAULT_AUTO_UPDATE false
576 
577 #define auto_update_interval(ss) ss->Auto_Update_Interval
578 #if HAVE_SCHEME
579   #define set_auto_update_interval(a) \
580     do {\
581         ss->Auto_Update_Interval = a; \
582         s7_symbol_set_value(s7, ss->auto_update_interval_symbol, s7_make_real(s7, ss->Auto_Update_Interval));\
583     } while (0)
584 #else
585   #define set_auto_update_interval(a) ss->Auto_Update_Interval = a
586 #endif
587 #define DEFAULT_AUTO_UPDATE_INTERVAL 60.0
588 
589 #define cursor_update_interval(ss) ss->Cursor_Update_Interval
590 #if HAVE_SCHEME
591   #define set_cursor_update_interval(a) \
592     do {\
593         ss->Cursor_Update_Interval = a; \
594         s7_symbol_set_value(s7, ss->cursor_update_interval_symbol, s7_make_real(s7, ss->Cursor_Update_Interval));\
595     } while (0)
596 #else
597   #define set_cursor_update_interval(a) ss->Cursor_Update_Interval = a
598 #endif
599 #define DEFAULT_CURSOR_UPDATE_INTERVAL 0.05
600 
601 #define cursor_location_offset(ss) ss->Cursor_Location_Offset
602 #if HAVE_SCHEME
603   #define set_cursor_location_offset(a) \
604     do {\
605         ss->Cursor_Location_Offset = a; \
606         s7_symbol_set_value(s7, ss->cursor_location_offset_symbol, s7_make_integer(s7, ss->Cursor_Location_Offset));\
607     } while (0)
608 #else
609   #define set_cursor_location_offset(a) ss->Cursor_Location_Offset = a
610 #endif
611 #define DEFAULT_CURSOR_LOCATION_OFFSET 0
612 
613 #define color_cutoff(ss) ss->Color_Cutoff
614 #if HAVE_SCHEME
615   #define in_set_color_cutoff(a) \
616     do {\
617         ss->Color_Cutoff = a; \
618         s7_symbol_set_value(s7, ss->color_cutoff_symbol, s7_make_real(s7, ss->Color_Cutoff));\
619     } while (0)
620 #else
621   #define in_set_color_cutoff(a) ss->Color_Cutoff = a
622 #endif
623 #define DEFAULT_COLOR_CUTOFF 0.003
624 
625 #define color_inverted(ss) ss->Color_Inverted
626 #if HAVE_SCHEME
627   #define in_set_color_inverted(a) \
628     do {\
629         ss->Color_Inverted = a; \
630         s7_symbol_set_value(s7, ss->color_inverted_symbol, s7_make_boolean(s7, ss->Color_Inverted));\
631     } while (0)
632 #else
633   #define in_set_color_inverted(a) ss->Color_Inverted = a
634 #endif
635 #define DEFAULT_COLOR_INVERTED true
636 
637 #define color_scale(ss) ss->Color_Scale
638 #if HAVE_SCHEME
639   #define in_set_color_scale(a) \
640     do {\
641         ss->Color_Scale = a; \
642         s7_symbol_set_value(s7, ss->color_scale_symbol, s7_make_real(s7, ss->Color_Scale));\
643     } while (0)
644 #else
645   #define in_set_color_scale(a) ss->Color_Scale = a
646 #endif
647 #define DEFAULT_COLOR_SCALE 1.0
648 
649 #define fft_window_alpha(ss) ss->Fft_Window_Alpha
650 #if HAVE_SCHEME
651   #define in_set_fft_window_alpha(a) \
652     do {\
653         ss->Fft_Window_Alpha = a; \
654         s7_symbol_set_value(s7, ss->fft_window_alpha_symbol, s7_make_real(s7, ss->Fft_Window_Alpha));\
655     } while (0)
656 #else
657   #define in_set_fft_window_alpha(a) ss->Fft_Window_Alpha = a
658 #endif
659 #define DEFAULT_FFT_WINDOW_ALPHA 0.0
660 
661 #define fft_window_beta(ss) ss->Fft_Window_Beta
662 #if HAVE_SCHEME
663   #define in_set_fft_window_beta(a) \
664     do {\
665         ss->Fft_Window_Beta = a; \
666         s7_symbol_set_value(s7, ss->fft_window_beta_symbol, s7_make_real(s7, ss->Fft_Window_Beta));\
667     } while (0)
668 #else
669   #define in_set_fft_window_beta(a) ss->Fft_Window_Beta = a
670 #endif
671 #define DEFAULT_FFT_WINDOW_BETA 0.0
672 
673 #define transform_size(ss) ss->Transform_Size
674 #if HAVE_SCHEME
675   #define in_set_transform_size(a) \
676     do {\
677         ss->Transform_Size = a; \
678         s7_symbol_set_value(s7, ss->transform_size_symbol, s7_make_integer(s7, ss->Transform_Size));\
679     } while (0)
680 #else
681   #define in_set_transform_size(a) ss->Transform_Size = a
682 #endif
683 #define DEFAULT_TRANSFORM_SIZE 512
684 
685 #define transform_graph_type(ss) ss->Transform_Graph_Type
686 #if HAVE_SCHEME
687   #define in_set_transform_graph_type_1(a) \
688     do {\
689         ss->Transform_Graph_Type = a; \
690         s7_symbol_set_value(s7, ss->transform_graph_type_symbol, s7_make_integer(s7, ss->Transform_Graph_Type));\
691     } while (0)
692 #else
693   #define in_set_transform_graph_type_1(a) ss->Transform_Graph_Type = a
694 #endif
695 #define DEFAULT_TRANSFORM_GRAPH_TYPE GRAPH_ONCE
696 
697 #define time_graph_type(ss) ss->Time_Graph_Type
698 #if HAVE_SCHEME
699   #define in_set_time_graph_type(a) \
700     do {\
701         ss->Time_Graph_Type = a; \
702         s7_symbol_set_value(s7, ss->time_graph_type_symbol, s7_make_integer(s7, ss->Time_Graph_Type));\
703     } while (0)
704 #else
705   #define in_set_time_graph_type(a) ss->Time_Graph_Type = a
706 #endif
707 #define DEFAULT_TIME_GRAPH_TYPE GRAPH_ONCE
708 
709 #define fft_window(ss) ss->Fft_Window
710 #if HAVE_SCHEME
711   #define in_set_fft_window_1(a) \
712     do {\
713         ss->Fft_Window = a; \
714         s7_symbol_set_value(s7, ss->fft_window_symbol, s7_make_integer(s7, ss->Fft_Window));\
715     } while (0)
716 #else
717   #define in_set_fft_window_1(a) ss->Fft_Window = a
718 #endif
719 #define DEFAULT_FFT_WINDOW MUS_BLACKMAN2_WINDOW
720 
721 #define log_freq_start(ss) ss->Log_Freq_Start
722 #if HAVE_SCHEME
723   #define in_set_log_freq_start(a) \
724     do {\
725         ss->Log_Freq_Start = a; \
726         s7_symbol_set_value(s7, ss->log_freq_start_symbol, s7_make_real(s7, ss->Log_Freq_Start));\
727     } while (0)
728 #else
729   #define in_set_log_freq_start(a) ss->Log_Freq_Start = a
730 #endif
731 #define DEFAULT_LOG_FREQ_START 32.0
732 
733 #define dot_size(ss) ss->Dot_Size
734 #if HAVE_SCHEME
735   #define in_set_dot_size(a) \
736     do {\
737         ss->Dot_Size = a; \
738         s7_symbol_set_value(s7, ss->dot_size_symbol, s7_make_integer(s7, ss->Dot_Size));\
739     } while (0)
740 #else
741   #define in_set_dot_size(a) ss->Dot_Size = a
742 #endif
743 #define DEFAULT_DOT_SIZE 1
744 #define MIN_DOT_SIZE 0
745 #define MAX_DOT_SIZE 100
746 
747 #define grid_density(ss) ss->Grid_Density
748 #if HAVE_SCHEME
749   #define in_set_grid_density(a) \
750     do {\
751         ss->Grid_Density = a; \
752         s7_symbol_set_value(s7, ss->grid_density_symbol, s7_make_real(s7, ss->Grid_Density));\
753     } while (0)
754 #else
755   #define in_set_grid_density(a) ss->Grid_Density = a
756 #endif
757 #define DEFAULT_GRID_DENSITY 1.0
758 
759 #define transform_normalization(ss) ss->Transform_Normalization
760 #if HAVE_SCHEME
761   #define in_set_transform_normalization(a) \
762     do {\
763         ss->Transform_Normalization = a; \
764         s7_symbol_set_value(s7, ss->transform_normalization_symbol, s7_make_integer(s7, ss->Transform_Normalization));\
765     } while (0)
766 #else
767   #define in_set_transform_normalization(a) ss->Transform_Normalization = a
768 #endif
769 #define DEFAULT_TRANSFORM_NORMALIZATION NORMALIZE_BY_CHANNEL
770 
771 #define ask_before_overwrite(ss) ss->Ask_Before_Overwrite
772 #if HAVE_SCHEME
773   #define set_ask_before_overwrite(a) \
774     do {\
775         ss->Ask_Before_Overwrite = a; \
776         s7_symbol_set_value(s7, ss->ask_before_overwrite_symbol, s7_make_boolean(s7, ss->Ask_Before_Overwrite));\
777     } while (0)
778 #else
779   #define set_ask_before_overwrite(a) ss->Ask_Before_Overwrite = a
780 #endif
781 #define DEFAULT_ASK_BEFORE_OVERWRITE false
782 
783 #define with_toolbar(ss) ss->With_Toolbar
784 #if HAVE_SCHEME
785   #define set_with_toolbar(a) \
786     do {\
787         ss->With_Toolbar = a; \
788         s7_symbol_set_value(s7, ss->with_toolbar_symbol, s7_make_boolean(s7, ss->With_Toolbar));\
789     } while (0)
790 #else
791   #define set_with_toolbar(a) ss->With_Toolbar = a
792 #endif
793 #define DEFAULT_WITH_TOOLBAR false
794 
795 #define with_tooltips(ss) ss->With_Tooltips
796 #if HAVE_SCHEME
797   #define in_set_with_tooltips(a) \
798     do {\
799         ss->With_Tooltips = a; \
800         s7_symbol_set_value(s7, ss->with_tooltips_symbol, s7_make_boolean(s7, ss->With_Tooltips));\
801     } while (0)
802 #else
803   #define in_set_with_tooltips(a) ss->With_Tooltips = a
804 #endif
805 #define DEFAULT_WITH_TOOLTIPS true
806 
807 #define with_menu_icons(ss) ss->With_Menu_Icons
808 #if HAVE_SCHEME
809   #define in_set_with_menu_icons(a) \
810     do {\
811         ss->With_Menu_Icons = a; \
812         s7_symbol_set_value(s7, ss->with_menu_icons_symbol, s7_make_boolean(s7, ss->With_Menu_Icons));\
813     } while (0)
814 #else
815   #define in_set_with_menu_icons(a) ss->With_Menu_Icons = a
816 #endif
817 #define DEFAULT_WITH_MENU_ICONS true
818 
819 #define save_as_dialog_src(ss) ss->Save_As_Dialog_Src
820 #if HAVE_SCHEME
821   #define in_set_save_as_dialog_src(a) \
822     do {\
823         ss->Save_As_Dialog_Src = a; \
824         s7_symbol_set_value(s7, ss->save_as_dialog_src_symbol, s7_make_boolean(s7, ss->Save_As_Dialog_Src));\
825     } while (0)
826 #else
827   #define in_set_save_as_dialog_src(a) ss->Save_As_Dialog_Src = a
828 #endif
829 #define DEFAULT_SAVE_AS_DIALOG_SRC false
830 
831 #define save_as_dialog_auto_comment(ss) ss->Save_As_Dialog_Auto_Comment
832 #if HAVE_SCHEME
833   #define in_set_save_as_dialog_auto_comment(a) \
834     do {\
835         ss->Save_As_Dialog_Auto_Comment = a; \
836         s7_symbol_set_value(s7, ss->save_as_dialog_auto_comment_symbol, s7_make_boolean(s7, ss->Save_As_Dialog_Auto_Comment));\
837     } while (0)
838 #else
839   #define in_set_save_as_dialog_auto_comment(a) ss->Save_As_Dialog_Auto_Comment = a
840 #endif
841 #define DEFAULT_SAVE_AS_DIALOG_AUTO_COMMENT false
842 
843 #define remember_sound_state(ss) ss->Remember_Sound_State
844 #if HAVE_SCHEME
845   #define set_remember_sound_state(a) \
846     do {\
847         ss->Remember_Sound_State = a; \
848         s7_symbol_set_value(s7, ss->remember_sound_state_symbol, s7_make_boolean(s7, ss->Remember_Sound_State));\
849     } while (0)
850 #else
851   #define set_remember_sound_state(a) ss->Remember_Sound_State = a
852 #endif
853 #define DEFAULT_REMEMBER_SOUND_STATE false
854 
855 #define ask_about_unsaved_edits(ss) ss->Ask_About_Unsaved_Edits
856 #if HAVE_SCHEME
857   #define set_ask_about_unsaved_edits(a) \
858     do {\
859         ss->Ask_About_Unsaved_Edits = a; \
860         s7_symbol_set_value(s7, ss->ask_about_unsaved_edits_symbol, s7_make_boolean(s7, ss->Ask_About_Unsaved_Edits));\
861     } while (0)
862 #else
863   #define set_ask_about_unsaved_edits(a) ss->Ask_About_Unsaved_Edits = a
864 #endif
865 #define DEFAULT_ASK_ABOUT_UNSAVED_EDITS false
866 
867 #define show_full_duration(ss) ss->Show_Full_Duration
868 #if HAVE_SCHEME
869   #define set_show_full_duration(a) \
870     do {\
871         ss->Show_Full_Duration = a; \
872         s7_symbol_set_value(s7, ss->show_full_duration_symbol, s7_make_boolean(s7, ss->Show_Full_Duration));\
873     } while (0)
874 #else
875   #define set_show_full_duration(a) ss->Show_Full_Duration = a
876 #endif
877 #define DEFAULT_SHOW_FULL_DURATION false
878 
879 #define initial_beg(ss) ss->Initial_Beg
880 #if HAVE_SCHEME
881   #define set_initial_beg(a) \
882     do {\
883         ss->Initial_Beg = a; \
884         s7_symbol_set_value(s7, ss->initial_beg_symbol, s7_make_real(s7, ss->Initial_Beg));\
885     } while (0)
886 #else
887   #define set_initial_beg(a) ss->Initial_Beg = a
888 #endif
889 #define DEFAULT_INITIAL_BEG 0.0
890 
891 #define initial_dur(ss) ss->Initial_Dur
892 #if HAVE_SCHEME
893   #define set_initial_dur(a) \
894     do {\
895         ss->Initial_Dur = a; \
896         s7_symbol_set_value(s7, ss->initial_dur_symbol, s7_make_real(s7, ss->Initial_Dur));\
897     } while (0)
898 #else
899   #define set_initial_dur(a) ss->Initial_Dur = a
900 #endif
901 #define DEFAULT_INITIAL_DUR 0.1
902 
903 #define show_full_range(ss) ss->Show_Full_Range
904 #if HAVE_SCHEME
905   #define set_show_full_range(a) \
906     do {\
907         ss->Show_Full_Range = a; \
908         s7_symbol_set_value(s7, ss->show_full_range_symbol, s7_make_boolean(s7, ss->Show_Full_Range));\
909     } while (0)
910 #else
911   #define set_show_full_range(a) ss->Show_Full_Range = a
912 #endif
913 #define DEFAULT_SHOW_FULL_RANGE false
914 
915 #define spectrum_end(ss) ss->Spectrum_End
916 #if HAVE_SCHEME
917   #define in_set_spectrum_end(a) \
918     do {\
919         ss->Spectrum_End = a; \
920         s7_symbol_set_value(s7, ss->spectrum_end_symbol, s7_make_real(s7, ss->Spectrum_End));\
921     } while (0)
922 #else
923   #define in_set_spectrum_end(a) ss->Spectrum_End = a
924 #endif
925 #define DEFAULT_SPECTRUM_END 1.0
926 
927 #define spectrum_start(ss) ss->Spectrum_Start
928 #if HAVE_SCHEME
929   #define in_set_spectrum_start(a) \
930     do {\
931         ss->Spectrum_Start = a; \
932         s7_symbol_set_value(s7, ss->spectrum_start_symbol, s7_make_real(s7, ss->Spectrum_Start));\
933     } while (0)
934 #else
935   #define in_set_spectrum_start(a) ss->Spectrum_Start = a
936 #endif
937 #define DEFAULT_SPECTRUM_START 0.0
938 
939 #define spectro_x_angle(ss) ss->Spectro_X_Angle
940 #if HAVE_SCHEME
941   #define in_set_spectro_x_angle(a) \
942     do {\
943         ss->Spectro_X_Angle = a; \
944         s7_symbol_set_value(s7, ss->spectro_x_angle_symbol, s7_make_real(s7, ss->Spectro_X_Angle));\
945     } while (0)
946 #else
947   #define in_set_spectro_x_angle(a) ss->Spectro_X_Angle = a
948 #endif
949 #if HAVE_GL
950   #define DEFAULT_SPECTRO_X_ANGLE 300.0
951 #else
952   #define DEFAULT_SPECTRO_X_ANGLE 90.0
953 #endif
954 
955 #define spectro_y_angle(ss) ss->Spectro_Y_Angle
956 #if HAVE_SCHEME
957   #define in_set_spectro_y_angle(a) \
958     do {\
959         ss->Spectro_Y_Angle = a; \
960         s7_symbol_set_value(s7, ss->spectro_y_angle_symbol, s7_make_real(s7, ss->Spectro_Y_Angle));\
961     } while (0)
962 #else
963   #define in_set_spectro_y_angle(a) ss->Spectro_Y_Angle = a
964 #endif
965 #if HAVE_GL
966   #define DEFAULT_SPECTRO_Y_ANGLE 320.0
967 #else
968   #define DEFAULT_SPECTRO_Y_ANGLE 0.0
969 #endif
970 
971 #define spectro_z_angle(ss) ss->Spectro_Z_Angle
972 #if HAVE_SCHEME
973   #define in_set_spectro_z_angle(a) \
974     do {\
975         ss->Spectro_Z_Angle = a; \
976         s7_symbol_set_value(s7, ss->spectro_z_angle_symbol, s7_make_real(s7, ss->Spectro_Z_Angle));\
977     } while (0)
978 #else
979   #define in_set_spectro_z_angle(a) ss->Spectro_Z_Angle = a
980 #endif
981 #if HAVE_GL
982   #define DEFAULT_SPECTRO_Z_ANGLE 0.0
983 #else
984   #define DEFAULT_SPECTRO_Z_ANGLE 358.0
985 #endif
986 
987 #define spectro_x_scale(ss) ss->Spectro_X_Scale
988 #if HAVE_SCHEME
989   #define in_set_spectro_x_scale(a) \
990     do {\
991         ss->Spectro_X_Scale = a; \
992         s7_symbol_set_value(s7, ss->spectro_x_scale_symbol, s7_make_real(s7, ss->Spectro_X_Scale));\
993     } while (0)
994 #else
995   #define in_set_spectro_x_scale(a) ss->Spectro_X_Scale = a
996 #endif
997 #if HAVE_GL
998   #define DEFAULT_SPECTRO_X_SCALE 1.5
999   #define SPECTRO_X_SCALE_MAX 4.0
1000 #else
1001   #define DEFAULT_SPECTRO_X_SCALE 1.0
1002   #define SPECTRO_X_SCALE_MAX 2.0
1003 #endif
1004 
1005 #define spectro_y_scale(ss) ss->Spectro_Y_Scale
1006 #if HAVE_SCHEME
1007   #define in_set_spectro_y_scale(a) \
1008     do {\
1009         ss->Spectro_Y_Scale = a; \
1010         s7_symbol_set_value(s7, ss->spectro_y_scale_symbol, s7_make_real(s7, ss->Spectro_Y_Scale));\
1011     } while (0)
1012 #else
1013   #define in_set_spectro_y_scale(a) ss->Spectro_Y_Scale = a
1014 #endif
1015 #if HAVE_GL
1016   #define DEFAULT_SPECTRO_Y_SCALE 1.0
1017   #define SPECTRO_Y_SCALE_MAX 4.0
1018 #else
1019   #define DEFAULT_SPECTRO_Y_SCALE 1.0
1020   #define SPECTRO_Y_SCALE_MAX 2.0
1021 #endif
1022 
1023 #define spectro_z_scale(ss) ss->Spectro_Z_Scale
1024 #if HAVE_SCHEME
1025   #define in_set_spectro_z_scale(a) \
1026     do {\
1027         ss->Spectro_Z_Scale = a; \
1028         s7_symbol_set_value(s7, ss->spectro_z_scale_symbol, s7_make_real(s7, ss->Spectro_Z_Scale));\
1029     } while (0)
1030 #else
1031   #define in_set_spectro_z_scale(a) ss->Spectro_Z_Scale = a
1032 #endif
1033 #if HAVE_GL
1034   #define DEFAULT_SPECTRO_Z_SCALE 1.0
1035   #define SPECTRO_Z_SCALE_MAX 4.0
1036 #else
1037   #define DEFAULT_SPECTRO_Z_SCALE 0.1
1038   #define SPECTRO_Z_SCALE_MAX 1.0
1039 #endif
1040 
1041 #define spectro_hop(ss) ss->Spectro_Hop
1042 #if HAVE_SCHEME
1043   #define in_set_spectro_hop(a) \
1044     do {\
1045         ss->Spectro_Hop = a; \
1046         s7_symbol_set_value(s7, ss->spectro_hop_symbol, s7_make_integer(s7, ss->Spectro_Hop));\
1047     } while (0)
1048 #else
1049   #define in_set_spectro_hop(a) ss->Spectro_Hop = a
1050 #endif
1051 #define DEFAULT_SPECTRO_HOP 4
1052 
1053 #define color_map(ss) ss->Color_Map
1054 #if HAVE_SCHEME
1055   #define in_set_color_map(a) \
1056     do {\
1057         ss->Color_Map = a; \
1058         s7_symbol_set_value(s7, ss->color_map_symbol, s7_make_integer(s7, ss->Color_Map));\
1059     } while (0)
1060 #else
1061   #define in_set_color_map(a) ss->Color_Map = a
1062 #endif
1063 #define DEFAULT_COLOR_MAP 2
1064 
1065 #define color_map_size(ss) ss->Color_Map_Size
1066 #if HAVE_SCHEME
1067   #define set_color_map_size(a) \
1068     do {\
1069         ss->Color_Map_Size = a; \
1070         s7_symbol_set_value(s7, ss->color_map_size_symbol, s7_make_integer(s7, ss->Color_Map_Size));\
1071     } while (0)
1072 #else
1073   #define set_color_map_size(a) ss->Color_Map_Size = a
1074 #endif
1075 #define DEFAULT_COLOR_MAP_SIZE 512
1076 
1077 #define graph_style(ss) ss->Graph_Style
1078 #if HAVE_SCHEME
1079   #define in_set_graph_style(a) \
1080     do {\
1081         ss->Graph_Style = a; \
1082         s7_symbol_set_value(s7, ss->graph_style_symbol, s7_make_integer(s7, ss->Graph_Style));\
1083     } while (0)
1084 #else
1085   #define in_set_graph_style(a) ss->Graph_Style = a
1086 #endif
1087 #define DEFAULT_GRAPH_STYLE GRAPH_LINES
1088 
1089 #define region_graph_style(ss) ss->Region_Graph_Style
1090 #if HAVE_SCHEME
1091   #define set_region_graph_style(a) \
1092     do {\
1093         ss->Region_Graph_Style = a; \
1094         s7_symbol_set_value(s7, ss->region_graph_style_symbol, s7_make_integer(s7, ss->Region_Graph_Style));\
1095     } while (0)
1096 #else
1097   #define set_region_graph_style(a) ss->Region_Graph_Style = a
1098 #endif
1099 
1100 #define sinc_width(ss) ss->Sinc_Width
1101 #if HAVE_SCHEME
1102   #define set_sinc_width(a) \
1103     do {\
1104         ss->Sinc_Width = a; \
1105         s7_symbol_set_value(s7, ss->sinc_width_symbol, s7_make_integer(s7, ss->Sinc_Width));\
1106     } while (0)
1107 #else
1108   #define set_sinc_width(a) ss->Sinc_Width = a
1109 #endif
1110 #define DEFAULT_SINC_WIDTH 10
1111 
1112 #define with_verbose_cursor(ss) ss->With_Verbose_Cursor
1113 #if HAVE_SCHEME
1114   #define in_set_with_verbose_cursor(a) \
1115     do {\
1116         ss->With_Verbose_Cursor = a; \
1117         s7_symbol_set_value(s7, ss->with_verbose_cursor_symbol, s7_make_boolean(s7, ss->With_Verbose_Cursor));\
1118     } while (0)
1119 #else
1120   #define in_set_with_verbose_cursor(a) ss->With_Verbose_Cursor = a
1121 #endif
1122 #define DEFAULT_WITH_VERBOSE_CURSOR false
1123 
1124 #define with_inset_graph(ss) ss->With_Inset_Graph
1125 #if HAVE_SCHEME
1126   #define set_with_inset_graph(a) \
1127     do {\
1128         ss->With_Inset_Graph = a; \
1129         s7_symbol_set_value(s7, ss->with_inset_graph_symbol, s7_make_boolean(s7, ss->With_Inset_Graph));\
1130     } while (0)
1131 #else
1132   #define set_with_inset_graph(a) ss->With_Inset_Graph = a
1133 #endif
1134 #define DEFAULT_WITH_INSET_GRAPH false
1135 
1136 #define with_interrupts(ss) ss->With_Interrupts
1137 #if HAVE_SCHEME
1138   #define set_with_interrupts(a) \
1139     do {\
1140         ss->With_Interrupts = a; \
1141         s7_symbol_set_value(s7, ss->with_interrupts_symbol, s7_make_boolean(s7, ss->With_Interrupts));\
1142     } while (0)
1143 #else
1144   #define set_with_interrupts(a) ss->With_Interrupts = a
1145 #endif
1146 #define DEFAULT_WITH_INTERRUPTS true
1147 
1148 #define with_smpte_label(ss) ss->With_Smpte_Label
1149 #if HAVE_SCHEME
1150   #define set_with_smpte_label(a) \
1151     do {\
1152         ss->With_Smpte_Label = a; \
1153         s7_symbol_set_value(s7, ss->with_smpte_label_symbol, s7_make_boolean(s7, ss->With_Smpte_Label));\
1154     } while (0)
1155 #else
1156   #define set_with_smpte_label(a) ss->With_Smpte_Label = a
1157 #endif
1158 #define DEFAULT_WITH_SMPTE_LABEL false
1159 
1160 #define with_pointer_focus(ss) ss->With_Pointer_Focus
1161 #if HAVE_SCHEME
1162   #define set_with_pointer_focus(a) \
1163     do {\
1164         ss->With_Pointer_Focus = a; \
1165         s7_symbol_set_value(s7, ss->with_pointer_focus_symbol, s7_make_boolean(s7, ss->With_Pointer_Focus));\
1166     } while (0)
1167 #else
1168   #define set_with_pointer_focus(a) ss->With_Pointer_Focus = a
1169 #endif
1170 #define DEFAULT_WITH_POINTER_FOCUS false
1171 
1172 #define selection_creates_region(ss) ss->Selection_Creates_Region
1173 #if HAVE_SCHEME
1174   #define set_selection_creates_region(a) \
1175     do {\
1176         ss->Selection_Creates_Region = a; \
1177         s7_symbol_set_value(s7, ss->selection_creates_region_symbol, s7_make_boolean(s7, ss->Selection_Creates_Region));\
1178     } while (0)
1179 #else
1180   #define set_selection_creates_region(a) ss->Selection_Creates_Region = a
1181 #endif
1182 #define DEFAULT_SELECTION_CREATES_REGION true
1183 
1184 #define zoom_focus_style(ss) ss->Zoom_Focus_Style
1185 #if HAVE_SCHEME
1186   #define set_zoom_focus_style(a) \
1187     do {\
1188         ss->Zoom_Focus_Style = a; \
1189         s7_symbol_set_value(s7, ss->zoom_focus_style_symbol, s7_make_integer(s7, ss->Zoom_Focus_Style));\
1190     } while (0)
1191 #else
1192   #define set_zoom_focus_style(a) ss->Zoom_Focus_Style = a
1193 #endif
1194 #define DEFAULT_ZOOM_FOCUS_STYLE ZOOM_FOCUS_ACTIVE
1195 
1196 #define eps_file(ss) ss->Eps_File
1197 #if HAVE_SCHEME
1198   #define set_eps_file(a) \
1199     do {\
1200         ss->Eps_File = a; \
1201         s7_symbol_set_value(s7, ss->eps_file_symbol, s7_make_string(s7, ss->Eps_File));\
1202     } while (0)
1203 #else
1204   #define set_eps_file(a) ss->Eps_File = a
1205 #endif
1206 #define DEFAULT_EPS_FILE "snd.eps"
1207 
1208 #define eps_left_margin(ss) ss->Eps_Left_Margin
1209 #if HAVE_SCHEME
1210   #define set_eps_left_margin(a) \
1211     do {\
1212         ss->Eps_Left_Margin = a; \
1213         s7_symbol_set_value(s7, ss->eps_left_margin_symbol, s7_make_real(s7, ss->Eps_Left_Margin));\
1214     } while (0)
1215 #else
1216   #define set_eps_left_margin(a) ss->Eps_Left_Margin = a
1217 #endif
1218 #define DEFAULT_EPS_LEFT_MARGIN 0.0
1219 
1220 #define eps_bottom_margin(ss) ss->Eps_Bottom_Margin
1221 #if HAVE_SCHEME
1222   #define set_eps_bottom_margin(a) \
1223     do {\
1224         ss->Eps_Bottom_Margin = a; \
1225         s7_symbol_set_value(s7, ss->eps_bottom_margin_symbol, s7_make_real(s7, ss->Eps_Bottom_Margin));\
1226     } while (0)
1227 #else
1228   #define set_eps_bottom_margin(a) ss->Eps_Bottom_Margin = a
1229 #endif
1230 #define DEFAULT_EPS_BOTTOM_MARGIN 0.0
1231 
1232 #define eps_size(ss) ss->Eps_Size
1233 #if HAVE_SCHEME
1234   #define set_eps_size(a) \
1235     do {\
1236         ss->Eps_Size = a; \
1237         s7_symbol_set_value(s7, ss->eps_size_symbol, s7_make_real(s7, ss->Eps_Size));\
1238     } while (0)
1239 #else
1240   #define set_eps_size(a) ss->Eps_Size = a
1241 #endif
1242 #define DEFAULT_EPS_SIZE 1.0
1243 
1244 #define tiny_font(ss) ss->Tiny_Font
1245 #if HAVE_SCHEME
1246   #define in_set_tiny_font(a) \
1247     do {\
1248         ss->Tiny_Font = a; \
1249         s7_symbol_set_value(s7, ss->tiny_font_symbol, s7_make_string(s7, ss->Tiny_Font));\
1250     } while (0)
1251 #else
1252   #define in_set_tiny_font(a) ss->Tiny_Font = a
1253 #endif
1254 
1255 #define peaks_font(ss) ss->Peaks_Font
1256 #if HAVE_SCHEME
1257   #define in_set_peaks_font(a) \
1258     do {\
1259         ss->Peaks_Font = a; \
1260         s7_symbol_set_value(s7, ss->peaks_font_symbol, s7_make_string(s7, ss->Peaks_Font));\
1261     } while (0)
1262 #else
1263   #define in_set_peaks_font(a) ss->Peaks_Font = a
1264 #endif
1265 
1266 #define bold_peaks_font(ss) ss->Bold_Peaks_Font
1267 #if HAVE_SCHEME
1268   #define in_set_bold_peaks_font(a) \
1269     do {\
1270         ss->Bold_Peaks_Font = a; \
1271         s7_symbol_set_value(s7, ss->bold_peaks_font_symbol, s7_make_string(s7, ss->Bold_Peaks_Font));\
1272     } while (0)
1273 #else
1274   #define in_set_bold_peaks_font(a) ss->Bold_Peaks_Font = a
1275 #endif
1276 
1277 #define axis_label_font(ss) ss->Axis_Label_Font
1278 #if HAVE_SCHEME
1279   #define in_set_axis_label_font(a) \
1280     do {\
1281         ss->Axis_Label_Font = a; \
1282         s7_symbol_set_value(s7, ss->axis_label_font_symbol, s7_make_string(s7, ss->Axis_Label_Font));\
1283     } while (0)
1284 #else
1285   #define in_set_axis_label_font(a) ss->Axis_Label_Font = a
1286 #endif
1287 
1288 #define axis_numbers_font(ss) ss->Axis_Numbers_Font
1289 #if HAVE_SCHEME
1290   #define in_set_axis_numbers_font(a) \
1291     do {\
1292         ss->Axis_Numbers_Font = a; \
1293         s7_symbol_set_value(s7, ss->axis_numbers_font_symbol, s7_make_string(s7, ss->Axis_Numbers_Font));\
1294     } while (0)
1295 #else
1296   #define in_set_axis_numbers_font(a) ss->Axis_Numbers_Font = a
1297 #endif
1298 
1299 #define listener_font(ss) ss->Listener_Font
1300 #if HAVE_SCHEME
1301   #define in_set_listener_font(a) \
1302     do {\
1303         ss->Listener_Font = a; \
1304         s7_symbol_set_value(s7, ss->listener_font_symbol, s7_make_string(s7, ss->Listener_Font));\
1305     } while (0)
1306 #else
1307   #define in_set_listener_font(a) ss->Listener_Font = a
1308 #endif
1309 
1310 #define save_state_file(ss) ss->Save_State_File
1311 #if HAVE_SCHEME
1312   #define in_set_save_state_file(a) \
1313     do {\
1314         ss->Save_State_File = a; \
1315         s7_symbol_set_value(s7, ss->save_state_file_symbol, s7_make_string(s7, ss->Save_State_File));\
1316     } while (0)
1317 #else
1318   #define in_set_save_state_file(a) ss->Save_State_File = a
1319 #endif
1320 #define DEFAULT_SAVE_STATE_FILE "saved-snd." Xen_file_extension
1321 
1322 #define temp_dir(ss) ss->Temp_Dir
1323 #if HAVE_SCHEME
1324   #define set_temp_dir(a) \
1325     do {\
1326         ss->Temp_Dir = a; \
1327         s7_symbol_set_value(s7, ss->temp_dir_symbol, s7_make_string(s7, ss->Temp_Dir));\
1328     } while (0)
1329 #else
1330   #define set_temp_dir(a) ss->Temp_Dir = a
1331 #endif
1332 #ifndef MUS_DEFAULT_TEMP_DIR
1333   #define MUS_DEFAULT_TEMP_DIR NULL
1334 #endif
1335 
1336 #define save_dir(ss) ss->Save_Dir
1337 #if HAVE_SCHEME
1338   #define set_save_dir(a) \
1339     do {\
1340         ss->Save_Dir = a; \
1341         s7_symbol_set_value(s7, ss->save_dir_symbol, s7_make_string(s7, ss->Save_Dir));\
1342     } while (0)
1343 #else
1344   #define set_save_dir(a) ss->Save_Dir = a
1345 #endif
1346 #ifndef MUS_DEFAULT_SAVE_DIR
1347   #define MUS_DEFAULT_SAVE_DIR NULL
1348 #endif
1349 
1350 #define ladspa_dir(ss) ss->Ladspa_Dir
1351 #if HAVE_SCHEME
1352   #define set_ladspa_dir(a) \
1353     do {\
1354         ss->Ladspa_Dir = a; \
1355         s7_symbol_set_value(s7, ss->ladspa_dir_symbol, s7_make_string(s7, ss->Ladspa_Dir));\
1356     } while (0)
1357 #else
1358   #define set_ladspa_dir(a) ss->Ladspa_Dir = a
1359 #endif
1360 #ifndef DEFAULT_LADSPA_DIR
1361   #define DEFAULT_LADSPA_DIR NULL
1362 #endif
1363 
1364 #define peak_env_dir(ss) ss->Peak_Env_Dir
1365 #if HAVE_SCHEME
1366   #define set_peak_env_dir(a) \
1367     do {\
1368         ss->Peak_Env_Dir = a; \
1369         s7_symbol_set_value(s7, ss->peak_env_dir_symbol, s7_make_string(s7, ss->Peak_Env_Dir));\
1370     } while (0)
1371 #else
1372   #define set_peak_env_dir(a) ss->Peak_Env_Dir = a
1373 #endif
1374 #ifndef DEFAULT_PEAK_ENV_DIR
1375   #define DEFAULT_PEAK_ENV_DIR NULL
1376 #endif
1377 
1378 #define open_file_dialog_directory(ss) ss->Open_File_Dialog_Directory
1379 #if HAVE_SCHEME
1380   #define set_open_file_dialog_directory(a) \
1381     do {\
1382         ss->Open_File_Dialog_Directory = a; \
1383         s7_symbol_set_value(s7, ss->open_file_dialog_directory_symbol, s7_make_string(s7, ss->Open_File_Dialog_Directory));\
1384     } while (0)
1385 #else
1386   #define set_open_file_dialog_directory(a) ss->Open_File_Dialog_Directory = a
1387 #endif
1388 
1389 #define wavelet_type(ss) ss->Wavelet_Type
1390 #if HAVE_SCHEME
1391   #define in_set_wavelet_type(a) \
1392     do {\
1393         ss->Wavelet_Type = a; \
1394         s7_symbol_set_value(s7, ss->wavelet_type_symbol, s7_make_integer(s7, ss->Wavelet_Type));\
1395     } while (0)
1396 #else
1397   #define in_set_wavelet_type(a) ss->Wavelet_Type = a
1398 #endif
1399 #define DEFAULT_WAVELET_TYPE 0
1400 
1401 #define transform_type(ss) ss->Transform_Type
1402 #if HAVE_SCHEME
1403   #define in_set_transform_type(a) \
1404     do {\
1405         ss->Transform_Type = a; \
1406         s7_symbol_set_value(s7, ss->transform_type_symbol, C_int_to_Xen_transform(ss->Transform_Type));	\
1407     } while (0)
1408 #else
1409   #define in_set_transform_type(a) ss->Transform_Type = a
1410 #endif
1411 #define DEFAULT_TRANSFORM_TYPE FOURIER
1412 
1413 #define show_selection_transform(ss) ss->Show_Selection_Transform
1414 #if HAVE_SCHEME
1415   #define in_set_show_selection_transform(a) \
1416     do {\
1417         ss->Show_Selection_Transform = a; \
1418         s7_symbol_set_value(s7, ss->show_selection_transform_symbol, s7_make_boolean(s7, ss->Show_Selection_Transform));\
1419     } while (0)
1420 #else
1421   #define in_set_show_selection_transform(a) ss->Show_Selection_Transform = a
1422 #endif
1423 #define DEFAULT_SHOW_SELECTION_TRANSFORM false
1424 
1425 #define with_mix_tags(ss) ss->With_Mix_Tags
1426 #if HAVE_SCHEME
1427   #define set_with_mix_tags(a) \
1428     do {\
1429         ss->With_Mix_Tags = a; \
1430         s7_symbol_set_value(s7, ss->with_mix_tags_symbol, s7_make_boolean(s7, ss->With_Mix_Tags));\
1431     } while (0)
1432 #else
1433   #define set_with_mix_tags(a) ss->With_Mix_Tags = a
1434 #endif
1435 #if USE_NO_GUI
1436   #define DEFAULT_WITH_MIX_TAGS false
1437 #else
1438   #define DEFAULT_WITH_MIX_TAGS true
1439 #endif
1440 
1441 #define with_relative_panes(ss) ss->With_Relative_Panes
1442 #if HAVE_SCHEME
1443   #define set_with_relative_panes(a) \
1444     do {\
1445         ss->With_Relative_Panes = a; \
1446         s7_symbol_set_value(s7, ss->with_relative_panes_symbol, s7_make_boolean(s7, ss->With_Relative_Panes));\
1447     } while (0)
1448 #else
1449   #define set_with_relative_panes(a) ss->With_Relative_Panes = a
1450 #endif
1451 #define DEFAULT_WITH_RELATIVE_PANES true
1452 
1453 #define with_gl(ss) ss->With_GL
1454 #if HAVE_SCHEME
1455   #define in_set_with_gl(a) \
1456     do {\
1457         ss->With_GL = a; \
1458         s7_symbol_set_value(s7, ss->with_gl_symbol, s7_make_boolean(s7, ss->With_GL));\
1459     } while (0)
1460 #else
1461   #define in_set_with_gl(a) ss->With_GL = a
1462 #endif
1463 #if HAVE_GL
1464   #define DEFAULT_WITH_GL true
1465 #else
1466   #define DEFAULT_WITH_GL false
1467 #endif
1468 
1469 #define with_background_processes(ss) ss->With_Background_Processes
1470 #if HAVE_SCHEME
1471   #define set_with_background_processes(a) \
1472     do {\
1473         ss->With_Background_Processes = a; \
1474         s7_symbol_set_value(s7, ss->with_background_processes_symbol, s7_make_boolean(s7, ss->With_Background_Processes));\
1475     } while (0)
1476 #else
1477   #define set_with_background_processes(a) ss->With_Background_Processes = a
1478 #endif
1479 #define DEFAULT_WITH_BACKGROUND_PROCESSES true
1480 
1481 #define with_file_monitor(ss) ss->With_File_Monitor
1482 #if HAVE_SCHEME
1483   #define set_with_file_monitor(a) \
1484     do {\
1485         ss->With_File_Monitor = a; \
1486         s7_symbol_set_value(s7, ss->with_file_monitor_symbol, s7_make_boolean(s7, ss->With_File_Monitor));\
1487     } while (0)
1488 #else
1489   #define set_with_file_monitor(a) ss->With_File_Monitor = a
1490 #endif
1491 #define DEFAULT_WITH_FILE_MONITOR true
1492 
1493 #define wavo_hop(ss) ss->Wavo_Hop
1494 #if HAVE_SCHEME
1495   #define in_set_wavo_hop(a) \
1496     do {\
1497         ss->Wavo_Hop = a; \
1498         s7_symbol_set_value(s7, ss->wavo_hop_symbol, s7_make_integer(s7, ss->Wavo_Hop));\
1499     } while (0)
1500 #else
1501   #define in_set_wavo_hop(a) ss->Wavo_Hop = a
1502 #endif
1503 #define DEFAULT_WAVO_HOP 3
1504 
1505 #define wavo_trace(ss) ss->Wavo_Trace
1506 #if HAVE_SCHEME
1507   #define in_set_wavo_trace(a) \
1508     do {\
1509         ss->Wavo_Trace = a; \
1510         s7_symbol_set_value(s7, ss->wavo_trace_symbol, s7_make_integer(s7, ss->Wavo_Trace));\
1511     } while (0)
1512 #else
1513   #define in_set_wavo_trace(a) ss->Wavo_Trace = a
1514 #endif
1515 #define DEFAULT_WAVO_TRACE 64
1516 
1517 #define x_axis_style(ss) ss->X_Axis_Style
1518 #if HAVE_SCHEME
1519   #define in_set_x_axis_style(a) \
1520     do {\
1521         ss->X_Axis_Style = a; \
1522         s7_symbol_set_value(s7, ss->x_axis_style_symbol, s7_make_integer(s7, ss->X_Axis_Style));\
1523     } while (0)
1524 #else
1525   #define in_set_x_axis_style(a) ss->X_Axis_Style = a
1526 #endif
1527 #define DEFAULT_X_AXIS_STYLE X_AXIS_IN_SECONDS
1528 
1529 #define beats_per_minute(ss) ss->Beats_Per_Minute
1530 #if HAVE_SCHEME
1531   #define in_set_beats_per_minute(a) \
1532     do {\
1533         ss->Beats_Per_Minute = a; \
1534         s7_symbol_set_value(s7, ss->beats_per_minute_symbol, s7_make_real(s7, ss->Beats_Per_Minute));\
1535     } while (0)
1536 #else
1537   #define in_set_beats_per_minute(a) ss->Beats_Per_Minute = a
1538 #endif
1539 #define DEFAULT_BEATS_PER_MINUTE 60.0
1540 
1541 #define beats_per_measure(ss) ss->Beats_Per_Measure
1542 #if HAVE_SCHEME
1543   #define in_set_beats_per_measure(a) \
1544     do {\
1545         ss->Beats_Per_Measure = a; \
1546         s7_symbol_set_value(s7, ss->beats_per_measure_symbol, s7_make_integer(s7, ss->Beats_Per_Measure));\
1547     } while (0)
1548 #else
1549   #define in_set_beats_per_measure(a) ss->Beats_Per_Measure = a
1550 #endif
1551 #define DEFAULT_BEATS_PER_MEASURE 4
1552 
1553 #define zero_pad(ss) ss->Zero_Pad
1554 #if HAVE_SCHEME
1555   #define in_set_zero_pad(a) \
1556     do {\
1557         ss->Zero_Pad = a; \
1558         s7_symbol_set_value(s7, ss->zero_pad_symbol, s7_make_integer(s7, ss->Zero_Pad));\
1559     } while (0)
1560 #else
1561   #define in_set_zero_pad(a) ss->Zero_Pad = a
1562 #endif
1563 #define DEFAULT_ZERO_PAD 0
1564 #define MAX_ZERO_PAD 1000
1565 
1566 #define show_transform_peaks(ss) ss->Show_Transform_Peaks
1567 #if HAVE_SCHEME
1568   #define in_set_show_transform_peaks(a) \
1569     do {\
1570         ss->Show_Transform_Peaks = a; \
1571         s7_symbol_set_value(s7, ss->show_transform_peaks_symbol, s7_make_boolean(s7, ss->Show_Transform_Peaks));\
1572     } while (0)
1573 #else
1574   #define in_set_show_transform_peaks(a) ss->Show_Transform_Peaks = a
1575 #endif
1576 #define DEFAULT_SHOW_TRANSFORM_PEAKS false
1577 
1578 #define show_indices(ss) ss->Show_Indices
1579 #if HAVE_SCHEME
1580   #define set_show_indices(a) \
1581     do {\
1582         ss->Show_Indices = a; \
1583         s7_symbol_set_value(s7, ss->show_indices_symbol, s7_make_boolean(s7, ss->Show_Indices));\
1584     } while (0)
1585 #else
1586   #define set_show_indices(a) ss->Show_Indices = a
1587 #endif
1588 #define DEFAULT_SHOW_INDICES false
1589 
1590 #define show_y_zero(ss) ss->Show_Y_Zero
1591 #if HAVE_SCHEME
1592   #define in_set_show_y_zero(a) \
1593     do {\
1594         ss->Show_Y_Zero = a; \
1595         s7_symbol_set_value(s7, ss->show_y_zero_symbol, s7_make_boolean(s7, ss->Show_Y_Zero));\
1596     } while (0)
1597 #else
1598   #define in_set_show_y_zero(a) ss->Show_Y_Zero = a
1599 #endif
1600 #define DEFAULT_SHOW_Y_ZERO false
1601 
1602 #define show_grid(ss) ss->Show_Grid
1603 #if HAVE_SCHEME
1604   #define in_set_show_grid(a) \
1605     do {\
1606         ss->Show_Grid = a; \
1607         s7_symbol_set_value(s7, ss->show_grid_symbol, s7_make_boolean(s7, ss->Show_Grid));\
1608     } while (0)
1609 #else
1610   #define in_set_show_grid(a) ss->Show_Grid = a
1611 #endif
1612 #define DEFAULT_SHOW_GRID NO_GRID
1613 
1614 #define show_sonogram_cursor(ss) ss->Show_Sonogram_Cursor
1615 #if HAVE_SCHEME
1616   #define in_set_show_sonogram_cursor(a) \
1617     do {\
1618         ss->Show_Sonogram_Cursor = a; \
1619         s7_symbol_set_value(s7, ss->show_sonogram_cursor_symbol, s7_make_boolean(s7, ss->Show_Sonogram_Cursor));\
1620     } while (0)
1621 #else
1622   #define in_set_show_sonogram_cursor(a) ss->Show_Sonogram_Cursor = a
1623 #endif
1624 #define DEFAULT_SHOW_SONOGRAM_CURSOR false
1625 
1626 #define show_axes(ss) ss->Show_Axes
1627 #if HAVE_SCHEME
1628   #define in_set_show_axes(a) \
1629     do {\
1630         ss->Show_Axes = a; \
1631         s7_symbol_set_value(s7, ss->show_axes_symbol, s7_make_integer(s7, ss->Show_Axes));\
1632     } while (0)
1633 #else
1634   #define in_set_show_axes(a) ss->Show_Axes = a
1635 #endif
1636 #define DEFAULT_SHOW_AXES SHOW_ALL_AXES
1637 
1638 #define show_mix_waveforms(ss) ss->Show_Mix_Waveforms
1639 #if HAVE_SCHEME
1640   #define in_set_show_mix_waveforms(a) \
1641     do {\
1642         ss->Show_Mix_Waveforms = a; \
1643         s7_symbol_set_value(s7, ss->show_mix_waveforms_symbol, s7_make_boolean(s7, ss->Show_Mix_Waveforms));\
1644     } while (0)
1645 #else
1646   #define in_set_show_mix_waveforms(a) ss->Show_Mix_Waveforms = a
1647 #endif
1648 #define DEFAULT_SHOW_MIX_WAVEFORMS true
1649 
1650 #define mix_waveform_height(ss) ss->Mix_Waveform_Height
1651 #if HAVE_SCHEME
1652   #define in_set_mix_waveform_height(a) \
1653     do {\
1654         ss->Mix_Waveform_Height = a; \
1655         s7_symbol_set_value(s7, ss->mix_waveform_height_symbol, s7_make_integer(s7, ss->Mix_Waveform_Height));\
1656     } while (0)
1657 #else
1658   #define in_set_mix_waveform_height(a) ss->Mix_Waveform_Height = a
1659 #endif
1660 #define DEFAULT_MIX_WAVEFORM_HEIGHT 20
1661 
1662 #define show_marks(ss) ss->Show_Marks
1663 #if HAVE_SCHEME
1664   #define in_set_show_marks(a) \
1665     do {\
1666         ss->Show_Marks = a; \
1667         s7_symbol_set_value(s7, ss->show_marks_symbol, s7_make_boolean(s7, ss->Show_Marks));\
1668     } while (0)
1669 #else
1670   #define in_set_show_marks(a) ss->Show_Marks = a
1671 #endif
1672 #define DEFAULT_SHOW_MARKS true
1673 
1674 #define fft_log_magnitude(ss) ss->Fft_Log_Magnitude
1675 #if HAVE_SCHEME
1676   #define in_set_fft_log_magnitude(a) \
1677     do {\
1678         ss->Fft_Log_Magnitude = a; \
1679         s7_symbol_set_value(s7, ss->fft_log_magnitude_symbol, s7_make_boolean(s7, ss->Fft_Log_Magnitude));\
1680     } while (0)
1681 #else
1682   #define in_set_fft_log_magnitude(a) ss->Fft_Log_Magnitude = a
1683 #endif
1684 #define DEFAULT_FFT_LOG_MAGNITUDE false
1685 
1686 #define fft_log_frequency(ss) ss->Fft_Log_Frequency
1687 #if HAVE_SCHEME
1688   #define in_set_fft_log_frequency(a) \
1689     do {\
1690         ss->Fft_Log_Frequency = a; \
1691         s7_symbol_set_value(s7, ss->fft_log_frequency_symbol, s7_make_boolean(s7, ss->Fft_Log_Frequency));\
1692     } while (0)
1693 #else
1694   #define in_set_fft_log_frequency(a) ss->Fft_Log_Frequency = a
1695 #endif
1696 #define DEFAULT_FFT_LOG_FREQUENCY false
1697 
1698 #define fft_with_phases(ss) ss->Fft_With_Phases
1699 #if HAVE_SCHEME
1700   #define in_set_fft_with_phases(a) \
1701     do {\
1702         ss->Fft_With_Phases = a; \
1703         s7_symbol_set_value(s7, ss->fft_with_phases_symbol, s7_make_boolean(s7, ss->Fft_With_Phases));\
1704     } while (0)
1705 #else
1706   #define in_set_fft_with_phases(a) ss->Fft_With_Phases = a
1707 #endif
1708 #define DEFAULT_FFT_WITH_PHASES false
1709 
1710 #define cursor_style(ss) ss->Cursor_Style
1711 #if HAVE_SCHEME
1712   #define in_set_cursor_style(a) \
1713     do {\
1714         ss->Cursor_Style = a; \
1715         s7_symbol_set_value(s7, ss->cursor_style_symbol, s7_make_integer(s7, ss->Cursor_Style));\
1716     } while (0)
1717 #else
1718   #define in_set_cursor_style(a) ss->Cursor_Style = a
1719 #endif
1720 #define DEFAULT_CURSOR_STYLE CURSOR_CROSS
1721 
1722 #define tracking_cursor_style(ss) ss->Tracking_Cursor_Style
1723 #if HAVE_SCHEME
1724   #define in_set_tracking_cursor_style(a) \
1725     do {\
1726         ss->Tracking_Cursor_Style = a; \
1727         s7_symbol_set_value(s7, ss->tracking_cursor_style_symbol, s7_make_integer(s7, ss->Tracking_Cursor_Style));\
1728     } while (0)
1729 #else
1730   #define in_set_tracking_cursor_style(a) ss->Tracking_Cursor_Style = a
1731 #endif
1732 #define DEFAULT_TRACKING_CURSOR_STYLE CURSOR_LINE
1733 
1734 #define cursor_size(ss) ss->Cursor_Size
1735 #if HAVE_SCHEME
1736   #define in_set_cursor_size(a) \
1737     do {\
1738         ss->Cursor_Size = a; \
1739         s7_symbol_set_value(s7, ss->cursor_size_symbol, s7_make_integer(s7, ss->Cursor_Size));\
1740     } while (0)
1741 #else
1742   #define in_set_cursor_size(a) ss->Cursor_Size = a
1743 #endif
1744 #define DEFAULT_CURSOR_SIZE 15
1745 
1746 #define channel_style(ss) ss->Channel_Style
1747 #if HAVE_SCHEME
1748   #define in_set_channel_style(a) \
1749     do {\
1750         ss->Channel_Style = a; \
1751         s7_symbol_set_value(s7, ss->channel_style_symbol, s7_make_integer(s7, ss->Channel_Style));\
1752     } while (0)
1753 #else
1754   #define in_set_channel_style(a) ss->Channel_Style = a
1755 #endif
1756 #define DEFAULT_CHANNEL_STYLE CHANNELS_COMBINED
1757 
1758 #define sync_style(ss) ss->Sync_Style
1759 #if HAVE_SCHEME
1760   #define set_sync_style(a) \
1761     do {\
1762         ss->Sync_Style = a; \
1763         s7_symbol_set_value(s7, ss->sync_style_symbol, s7_make_integer(s7, ss->Sync_Style));\
1764     } while (0)
1765 #else
1766   #define set_sync_style(a) ss->Sync_Style = a
1767 #endif
1768 #define DEFAULT_SYNC_STYLE SYNC_BY_SOUND
1769 
1770 #define sound_style(ss) ss->Sound_Style
1771 #define set_sound_style(a) ss->Sound_Style = a
1772 #define DEFAULT_SOUND_STYLE SOUNDS_VERTICAL
1773 
1774 #define listener_prompt(ss) ss->Listener_Prompt
1775 #if HAVE_SCHEME
1776   #define in_set_listener_prompt(a) \
1777     do {\
1778         ss->Listener_Prompt = a; \
1779         s7_symbol_set_value(s7, ss->listener_prompt_symbol, s7_make_string(s7, ss->Listener_Prompt));\
1780     } while (0)
1781 #else
1782   #define in_set_listener_prompt(a) ss->Listener_Prompt = a
1783 #endif
1784 #define DEFAULT_LISTENER_PROMPT ">"
1785 
1786 #define stdin_prompt(ss) ss->Stdin_Prompt
1787 #if HAVE_SCHEME
1788   #define set_stdin_prompt(a) \
1789     do {\
1790         ss->Stdin_Prompt = a; \
1791         s7_symbol_set_value(s7, ss->stdin_prompt_symbol, s7_make_string(s7, ss->Stdin_Prompt));\
1792     } while (0)
1793 #else
1794   #define set_stdin_prompt(a) ss->Stdin_Prompt = a
1795 #endif
1796 #define DEFAULT_STDIN_PROMPT ""
1797 
1798 #define print_length(ss) ss->Print_Length
1799 #if HAVE_SCHEME
1800   #define set_print_length(a) \
1801     do {\
1802         ss->Print_Length = a; \
1803         s7_symbol_set_value(s7, ss->print_length_symbol, s7_make_integer(s7, ss->Print_Length));\
1804     } while (0)
1805 #else
1806   #define set_print_length(a) ss->Print_Length = a
1807 #endif
1808 #define DEFAULT_PRINT_LENGTH 12
1809 
1810 #define view_files_sort(ss) ss->View_Files_Sort
1811 #if HAVE_SCHEME
1812   #define set_view_files_sort(a) \
1813     do {\
1814         ss->View_Files_Sort = a; \
1815         s7_symbol_set_value(s7, ss->view_files_sort_symbol, s7_make_integer(s7, ss->View_Files_Sort));\
1816     } while (0)
1817 #else
1818   #define set_view_files_sort(a) ss->View_Files_Sort = a
1819 #endif
1820 #define DEFAULT_VIEW_FILES_SORT SORT_A_TO_Z
1821 
1822 #define enved_clipping(ss) ss->enved->clipping
1823 #define in_set_enved_clipping(a) ss->enved->clipping = a
1824 #define DEFAULT_ENVED_CLIPPING true
1825 
1826 #define enved_with_wave(ss) ss->Enved_With_Wave
1827 #if HAVE_SCHEME
1828   #define in_set_enved_with_wave(a) \
1829     do {\
1830         ss->Enved_With_Wave = a; \
1831         s7_symbol_set_value(s7, ss->enved_with_wave_symbol, s7_make_boolean(s7, ss->Enved_With_Wave));\
1832     } while (0)
1833 #else
1834   #define in_set_enved_with_wave(a) ss->Enved_With_Wave = a
1835 #endif
1836 #define DEFAULT_ENVED_WITH_WAVE false
1837 
1838 #define enved_filter_order(ss) ss->Enved_Filter_Order
1839 #if HAVE_SCHEME
1840   #define in_set_enved_filter_order(a) \
1841     do {\
1842         ss->Enved_Filter_Order = a; \
1843         s7_symbol_set_value(s7, ss->enved_filter_order_symbol, s7_make_integer(s7, ss->Enved_Filter_Order));\
1844     } while (0)
1845 #else
1846   #define in_set_enved_filter_order(a) ss->Enved_Filter_Order = a
1847 #endif
1848 #define DEFAULT_ENVED_FILTER_ORDER 40
1849 
1850 #define enved_in_dB(ss) ss->enved->in_dB
1851 #define in_set_enved_in_dB(a) ss->enved->in_dB = a
1852 #define DEFAULT_ENVED_IN_DB false
1853 
1854 #define enved_target(ss) ss->Enved_Target
1855 #if HAVE_SCHEME
1856   #define in_set_enved_target(a) \
1857     do {\
1858         ss->Enved_Target = a; \
1859         s7_symbol_set_value(s7, ss->enved_target_symbol, s7_make_integer(s7, ss->Enved_Target));\
1860     } while (0)
1861 #else
1862   #define in_set_enved_target(a) ss->Enved_Target = a
1863 #endif
1864 #define DEFAULT_ENVED_TARGET ENVED_AMPLITUDE
1865 
1866 #define enved_base(ss) ss->Enved_Base
1867 #if HAVE_SCHEME
1868   #define in_set_enved_base(a) \
1869     do {\
1870         ss->Enved_Base = a; \
1871         s7_symbol_set_value(s7, ss->enved_base_symbol, s7_make_real(s7, ss->Enved_Base));\
1872     } while (0)
1873 #else
1874   #define in_set_enved_base(a) ss->Enved_Base = a
1875 #endif
1876 #define DEFAULT_ENVED_BASE 1.0
1877 
1878 #define enved_power(ss) ss->Enved_Power
1879 #if HAVE_SCHEME
1880   #define set_enved_power(a) \
1881     do {\
1882         ss->Enved_Power = a; \
1883         s7_symbol_set_value(s7, ss->enved_power_symbol, s7_make_real(s7, ss->Enved_Power));\
1884     } while (0)
1885 #else
1886   #define set_enved_power(a) ss->Enved_Power = a
1887 #endif
1888 #define DEFAULT_ENVED_POWER 3.0
1889 
1890 #define enved_style(ss) ss->Enved_Style
1891 #if HAVE_SCHEME
1892   #define set_enved_style(a) \
1893     do {\
1894         ss->Enved_Style = a; \
1895         s7_symbol_set_value(s7, ss->enved_style_symbol, s7_make_integer(s7, ss->Enved_Style));\
1896     } while (0)
1897 #else
1898   #define set_enved_style(a) ss->Enved_Style = a
1899 #endif
1900 #define DEFAULT_ENVED_STYLE ENVELOPE_LINEAR
1901 
1902 #define in_graph_cursor(ss) ss->Graph_Cursor
1903 
1904 #define clipping(ss) ss->Clipping
1905 #if HAVE_SCHEME
1906   #define set_clipping(a) \
1907     do {\
1908         ss->Clipping = a; \
1909         s7_symbol_set_value(s7, ss->clipping_symbol, s7_make_boolean(s7, ss->Clipping));\
1910     } while (0)
1911 #else
1912   #define set_clipping(a) ss->Clipping = a
1913 #endif
1914 #define DEFAULT_CLIPPING false
1915 
1916 #define html_dir(ss) ss->HTML_Dir
1917 #if HAVE_SCHEME
1918   #define set_html_dir_1(a) \
1919     do {\
1920         ss->HTML_Dir = a; \
1921         s7_symbol_set_value(s7, ss->html_dir_symbol, s7_make_string(s7, ss->HTML_Dir));\
1922     } while (0)
1923 #else
1924   #define set_html_dir_1(a) ss->HTML_Dir = a
1925 #endif
1926 #define DEFAULT_HTML_DIR "."
1927 
1928 #define html_program(ss) ss->HTML_Program
1929 #if HAVE_SCHEME
1930   #define set_html_program(a) \
1931     do {\
1932         ss->HTML_Program = a; \
1933         s7_symbol_set_value(s7, ss->html_program_symbol, s7_make_string(s7, ss->HTML_Program));\
1934     } while (0)
1935 #else
1936   #define set_html_program(a) ss->HTML_Program = a
1937 #endif
1938 #define DEFAULT_HTML_PROGRAM "firefox"
1939 
1940 #define graphs_horizontal(ss) ss->Graphs_Horizontal
1941 #if HAVE_SCHEME
1942   #define in_set_graphs_horizontal(a) \
1943     do {\
1944         ss->Graphs_Horizontal = a; \
1945         s7_symbol_set_value(s7, ss->graphs_horizontal_symbol, s7_make_boolean(s7, ss->Graphs_Horizontal));\
1946     } while (0)
1947 #else
1948   #define in_set_graphs_horizontal(a) ss->Graphs_Horizontal = a
1949 #endif
1950 #define DEFAULT_GRAPHS_HORIZONTAL true
1951 
1952 #define mix_tag_width(ss) ss->Mix_Tag_Width
1953 #if HAVE_SCHEME
1954   #define set_mix_tag_width(a) \
1955     do {\
1956         ss->Mix_Tag_Width = a; \
1957         s7_symbol_set_value(s7, ss->mix_tag_width_symbol, s7_make_integer(s7, ss->Mix_Tag_Width));\
1958     } while (0)
1959 #else
1960   #define set_mix_tag_width(a) ss->Mix_Tag_Width = a
1961 #endif
1962 #define DEFAULT_MIX_TAG_WIDTH 6
1963 
1964 #define mix_tag_height(ss) ss->Mix_Tag_Height
1965 #if HAVE_SCHEME
1966   #define set_mix_tag_height(a) \
1967     do {\
1968         ss->Mix_Tag_Height = a; \
1969         s7_symbol_set_value(s7, ss->mix_tag_height_symbol, s7_make_integer(s7, ss->Mix_Tag_Height));\
1970     } while (0)
1971 #else
1972   #define set_mix_tag_height(a) ss->Mix_Tag_Height = a
1973 #endif
1974 #define DEFAULT_MIX_TAG_HEIGHT 14
1975 
1976 #define mark_tag_width(ss) ss->Mark_Tag_Width
1977 #if HAVE_SCHEME
1978   #define set_mark_tag_width(a) \
1979     do {\
1980         ss->Mark_Tag_Width = a; \
1981         s7_symbol_set_value(s7, ss->mark_tag_width_symbol, s7_make_integer(s7, ss->Mark_Tag_Width));\
1982     } while (0)
1983 #else
1984   #define set_mark_tag_width(a) ss->Mark_Tag_Width = a
1985 #endif
1986 #define DEFAULT_MARK_TAG_WIDTH 10
1987 
1988 #define mark_tag_height(ss) ss->Mark_Tag_Height
1989 #if HAVE_SCHEME
1990   #define set_mark_tag_height(a) \
1991     do {\
1992         ss->Mark_Tag_Height = a; \
1993         s7_symbol_set_value(s7, ss->mark_tag_height_symbol, s7_make_integer(s7, ss->Mark_Tag_Height));\
1994     } while (0)
1995 #else
1996   #define set_mark_tag_height(a) ss->Mark_Tag_Height = a
1997 #endif
1998 #define DEFAULT_MARK_TAG_HEIGHT 4
1999 
2000 #define min_dB(ss) ss->Min_dB
2001 #if HAVE_SCHEME
2002   #define set_min_dB(a) \
2003     do {\
2004         ss->Min_dB = a; \
2005         s7_symbol_set_value(s7, ss->min_db_symbol, s7_make_real(s7, ss->Min_dB));\
2006     } while (0)
2007 #else
2008   #define set_min_dB(a) ss->Min_dB = a
2009 #endif
2010 #define DEFAULT_MIN_DB -60.0
2011 
2012 #define play_arrow_size(ss) ss->Play_Arrow_Size
2013 #if HAVE_SCHEME
2014   #define set_play_arrow_size(a) \
2015     do {\
2016         ss->Play_Arrow_Size = a; \
2017         s7_symbol_set_value(s7, ss->play_arrow_size_symbol, s7_make_integer(s7, ss->Play_Arrow_Size));\
2018     } while (0)
2019 #else
2020   #define set_play_arrow_size(a) ss->Play_Arrow_Size = a
2021 #endif
2022 #define DEFAULT_PLAY_ARROW_SIZE 10
2023 
2024 
2025 #define HAVE_MOTIF use USE_MOTIF not HAVE!
2026 
2027 
2028 #endif
2029