audiofile support + improved sample rate support + results of a -Wall -Werr
[terminatorX.git] / src / tX_global.h
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2002  Alexander K├Ânig
4  
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9  
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14  
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  
19     File: tX_global.h
20  
21     Description: Header to tX_global.c / defines the heavily used
22                  tX_global struct.
23                  
24     Changes:
25     
26     21 Jul 1999: Introduced the lowpass globals.
27 */    
28
29 #ifndef _TX_GLOBAL_H
30 #define _TX_GLOBAL_H
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif /* __cplusplus */
35
36 #include <limits.h>
37 #include <stdio.h>
38 #include "tX_types.h"
39
40 #ifndef PATH_MAX
41 #define PATH_MAX 1024
42 #endif
43
44 #define BUTTON_TYPE_ICON 1
45 #define BUTTON_TYPE_TEXT 2
46 #define BUTTON_TYPE_BOTH 3
47
48 #define TX_AUDIODEVICE_TYPE_OSS 0
49 #define TX_AUDIODEVICE_TYPE_ALSA 1
50
51 #ifdef HAVE_CONFIG_H
52 #include <config.h>
53 #endif
54         
55 #ifdef ENABLE_DEBUG_OUTPUT      
56 #define tX_debug(fmt, args...); { fprintf(stderr, "- tX_debug: "); fprintf(stderr, fmt , ## args); fprintf(stderr, "\n"); }
57 #else
58 #define tX_debug(fmt, args...);
59 #endif
60         
61 #define tX_error(fmt, args...); { fprintf(stderr, "* tX_error: "); fprintf(stderr, fmt , ## args); fprintf(stderr, "\n"); }
62 #define tX_warning(fmt, args...); { fprintf(stderr, "+ tX_warning: "); fprintf(stderr, fmt , ## args); fprintf(stderr, "\n"); }
63
64 typedef struct {
65         char    audio_device[PATH_MAX];
66         
67         int     xinput_enable;
68         char    xinput_device[256]; // If your device's name is longer than that
69                                     // you are insane and you simply don't deserve
70                                     // running terminatorX ;) (said the guy who invented 8+3)                                                               
71         int     store_globals;          // if it should store the globals vals on exit
72         char    *startup_set;   
73         char    *alternate_rc;          // a diferent set of stored globals to load
74         int     no_gui;                 // run without any gui
75         
76         int     update_idle;
77         
78         int     buff_no;
79         int     buff_size;
80         
81         int     sense_cycles;
82         
83         int     width;
84         int     height;
85
86         int tooltips;
87         
88         f_prec mouse_speed;
89                 
90         char last_fn[PATH_MAX];
91
92         int use_stdout;
93         int use_stdout_cmdline;
94         int use_stdout_from_conf_file;
95         int show_nag;
96         
97         int prelis;
98         
99         f_prec pitch;
100         f_prec volume;
101         
102         int gui_wrap;
103         
104         char tables_filename[PATH_MAX];
105         char record_filename[PATH_MAX];
106         int autoname;
107         
108         float flash_response;
109         
110         int button_type;
111         
112         char file_editor[PATH_MAX];
113         int true_block_size;
114         int update_delay; 
115         
116         char *current_path;
117         
118         /* new audiodevice handling 
119            we have *all* variables for *all* audiodevice types -
120            even if support for them is not compiled in - to keep
121            the .terminatorX3rc.bin in sync.
122         */
123         
124         int audiodevice_type; // TX_AUDIODEVICE_TYPE_OSS etc.
125         int audiodevice_buffersize; // buffer in samples
126         
127         /* OSS specific options */
128         char audiodevice_oss_devicename[PATH_MAX];
129         
130         /* ALSA specific options */
131         int audiodevice_alsa_card;
132         int audiodevice_alsa_pcm;               
133 } tx_global;
134
135 extern tx_global globals;
136
137 extern void load_globals();
138 extern void store_globals();
139
140 #ifdef __cplusplus
141 }
142 #endif /* __cplusplus */
143
144 #endif