1 /*
2     TiMidity++ -- MIDI to WAVE converter and player
3     Copyright (C) 1999-2002 Masanao Izumo <mo@goice.co.jp>
4     Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20 
21 #ifndef ___W32G_UTL_H_
22 #define ___W32G_UTL_H_
23 
24 #ifdef IA_W32G_SYN
25 #ifndef MAX_PORT
26 #define MAX_PORT 4
27 #endif
28 #endif
29 
30 // ini & config
31 #define IniVersion "2.2"
32 typedef struct SETTING_PLAYER_ {
33 // Main Window
34 	int InitMinimizeFlag;
35 // SubWindow Starting Create Flag
36 	int DebugWndStartFlag;
37 	int ConsoleWndStartFlag;
38 	int ListWndStartFlag;
39 	int TracerWndStartFlag;
40 	int DocWndStartFlag;
41 	int WrdWndStartFlag;
42 // SubWindow Starting Valid Flag
43 	int DebugWndFlag;
44 	int ConsoleWndFlag;
45 	int ListWndFlag;
46 	int TracerWndFlag;
47 	int DocWndFlag;
48 	int WrdWndFlag;
49 	int SoundSpecWndFlag;
50 // SubWindow Max Numer
51 	int SubWindowMax;
52 // Default File
53 	char ConfigFile[MAXPATH + 32];
54 	char PlaylistFile[MAXPATH + 32];
55 	char PlaylistHistoryFile[MAXPATH + 32];
56 // Default Dir
57 	char MidiFileOpenDir[MAXPATH + 32];
58 	char ConfigFileOpenDir[MAXPATH + 32];
59 	char PlaylistFileOpenDir[MAXPATH + 32];
60 // Thread Priority
61 	int PlayerThreadPriority;
62 	int GUIThreadPriority;
63 // Font
64 	char SystemFont[256];
65 	char PlayerFont[256];
66 	char WrdFont[256];
67 	char DocFont[256];
68 	char ListFont[256];
69 	char TracerFont[256];
70 	int SystemFontSize;
71 	int PlayerFontSize;
72 	int WrdFontSize;
73 	int DocFontSize;
74 	int ListFontSize;
75 	int TracerFontSize;
76 // Misc.
77 	int WrdGraphicFlag;
78 	int TraceGraphicFlag;
79 	int DocMaxSize;
80 	char DocFileExt[256];
81 // End.
82 	int PlayerLanguage;
83 	int DocWndIndependent;
84 	int DocWndAutoPopup;
85 	int SeachDirRecursive;
86 	int IniFileAutoSave;
87 	int SecondMode;
88   int AutoloadPlaylist;
89   int AutosavePlaylist;
90   int PosSizeSave;
91   char DefaultPlaylistName[256];
92 // End.
93 } SETTING_PLAYER;
94 
95 typedef struct SETTING_TIMIDITY_ {
96     // Parameter from command line options.
97 
98     int32 amplification;	// A
99     int antialiasing_allowed;	// a
100     int buffer_fragments;	// B
101     int32 control_ratio;	// C
102 				// c (ignore)
103     ChannelBitMask default_drumchannels, default_drumchannel_mask; // D
104 				// d (ignore)
105 
106 				// E...
107     int opt_modulation_wheel;	// E w/W
108     int opt_portamento;		// E p/P
109     int opt_nrpn_vibrato;  	// E v/V
110     int opt_channel_pressure;	// E s/S
111     int opt_trace_text_meta_event; // E t/T
112     int opt_overlap_voice_allow;// E o/O
113     int opt_default_mid;	// E mXX
114     int default_tonebank;	// E b
115     int special_tonebank;	// E B
116     int effect_lr_mode;		// E Fdelay
117     int effect_lr_delay_msec;	// E Fdelay
118     int opt_reverb_control;	// E Freverb
119     int opt_chorus_control;	// E Fchorus
120     int noise_sharp_type;	// E Fns
121 	int opt_surround_chorus; // E ?
122 	int opt_tva_attack;			// E ?
123 	int opt_tva_decay;			// E ?
124 	int opt_tva_release;		// E ?
125 	int opt_delay_control;		// E ?
126 	int opt_default_module;		// --module
127 	int opt_lpf_def;			// E ?
128 	int opt_drum_effect;			// E ?
129 	int opt_modulation_envelope;			// E ?
130 	int opt_pan_delay;			// E ?
131 	int opt_eq_control;			// E ?
132 	int opt_insertion_effect;	// E ?
133     int opt_evil_mode;		// e
134     int adjust_panning_immediately; // F
135     int fast_decay;		// f
136 #ifdef SUPPORT_SOUNDSPEC
137     int view_soundspec_flag;	// g
138     double spectrogram_update_sec; // g
139 #endif
140 				// h (ignore)
141     int default_program[MAX_CHANNELS]; // I
142     char opt_ctl[30];		// i
143     int opt_realtime_playing;	// j
144     int reduce_voice_threshold; // k
145 				// L (ignore)
146     char opt_playmode[16];	// O
147     char OutputName[MAXPATH + 32]; // o : string
148     char OutputDirName[MAXPATH + 32]; // o : string
149 	int auto_output_mode;
150 				// P (ignore)
151     int voices;			// p
152     int auto_reduce_polyphony;  // pa
153     ChannelBitMask quietchannels; // Q
154     int temper_type_mute;	// Q
155     char opt_qsize[16];		// q
156     int32 modify_release;	// R
157     int32 allocate_cache_size;	// S
158 	int32 opt_drum_power;	// ?
159 	int32 opt_amp_compensation;	// ?
160 	int key_adjust;		// K
161 	int8 opt_force_keysig;	// H
162 	int opt_pure_intonation;	// Z
163 	int8 opt_init_keysig;	// Z
164     int output_rate;		// s
165     char output_text_code[16];	// t
166     int free_instruments_afterwards; // U
167     char opt_wrd[16];		// W
168 #if defined(__W32__) && defined(SMFCONV)
169     int opt_rcpcv_dll;		// wr, wR
170 #endif
171 				// x (ignore)
172 				// Z (ignore)
173     /* for w32g_a.c */
174     int data_block_bits;
175     int data_block_num;
176 //??    int waveout_data_block_size;
177 #ifdef IA_W32G_SYN
178 		int SynIDPort[MAX_PORT];
179 		int syn_AutoStart;
180 		DWORD processPriority;
181 		DWORD syn_ThreadPriority;
182 		int SynPortNum;
183 		int SynShTime;
184 #endif
185 } SETTING_TIMIDITY;
186 
187 // #### obsoleted
188 #define PLAYERMODE_AUTOQUIT				0x0001
189 #define PLAYERMODE_AUTOREFINE				0x0002
190 #define PLAYERMODE_AUTOUNIQ				0x0004
191 #define PLAYERMODE_NOT_CONTINUE			0x0008
192 #define PLAYERMODE_NOT_DRAG_START	0x0010
193 
194 
195 extern char *OutputName;
196 
197 extern void LoadIniFile(SETTING_PLAYER *sp,  SETTING_TIMIDITY *st);
198 extern void SaveIniFile(SETTING_PLAYER *sp,  SETTING_TIMIDITY *st);
199 
200 extern SETTING_PLAYER *sp_default, *sp_current, *sp_temp;
201 extern SETTING_TIMIDITY *st_default, *st_current, *st_temp;
202 extern CHAR *INI_INVALID;
203 extern CHAR *INI_SEC_PLAYER;
204 extern CHAR *INI_SEC_TIMIDITY;
205 extern char *SystemFont;
206 extern char *PlayerFont;
207 extern char *WrdFont;
208 extern char *DocFont;
209 extern char *ListFont;
210 extern char *TracerFont;
211 extern HFONT hSystemFont;
212 extern HFONT hPlayerFont;
213 extern HFONT hWrdFont;
214 extern HFONT hDocFont;
215 extern HFONT hListFont;
216 extern HFONT hTracerFont;
217 extern int SystemFontSize;
218 extern int PlayerFontSize;
219 extern int WrdFontSize;
220 extern int DocFontSize;
221 extern int ListFontSize;
222 extern int TracerFontSize;
223 
224 extern int IniGetKeyInt32(char *section, char *key,int32 *n);
225 extern int IniGetKeyInt32Array(char *section, char *key, int32 *n, int arraysize);
226 extern int IniGetKeyInt(char *section, char *key, int *n);
227 extern int IniGetKeyInt8(char *section, char *key, int8 *n);
228 extern int IniGetKeyChar(char *section, char *key, char *c);
229 extern int IniGetKeyIntArray(char *section, char *key, int *n, int arraysize);
230 extern int IniGetKeyString(char *section, char *key,char *str);
231 extern int IniGetKeyStringN(char *section, char *key,char *str, int size);
232 extern int IniGetKeyFloat(char *section, char *key, FLOAT_T *n);
233 extern int IniPutKeyInt32(char *section, char *key,int32 *n);
234 extern int IniPutKeyInt32Array(char *section, char *key, int32 *n, int arraysize);
235 extern int IniPutKeyInt(char *section, char *key, int *n);
236 extern int IniPutKeyInt8(char *section, char *key, int8 *n);
237 extern int IniPutKeyChar(char *section, char *key, char *c);
238 extern int IniPutKeyIntArray(char *section, char *key, int *n, int arraysize);
239 extern int IniPutKeyString(char *section, char *key, char *str);
240 extern int IniPutKeyStringN(char *section, char *key, char *str, int size);
241 extern int IniPutKeyFloat(char *section, char *key, FLOAT_T n);
242 extern void ApplySettingPlayer(SETTING_PLAYER *sp);
243 extern void SaveSettingPlayer(SETTING_PLAYER *sp);
244 extern void ApplySettingTiMidity(SETTING_TIMIDITY *st);
245 extern void SaveSettingTiMidity(SETTING_TIMIDITY *st);
246 extern void SettingCtlFlag(SETTING_TIMIDITY *st, int opt_id, int onoff);
247 extern int IniVersionCheck(void);
248 extern void BitBltRect(HDC dst, HDC src, RECT *rc);
249 #if 0
250 extern TmColors tm_colors[ /* TMCC_SIZE */ ];
251 #define TmCc(c) (tm_colors[c].color)
252 extern void TmInitColor(void);
253 extern void TmFreeColor(void);
254 extern void TmFillRect(HDC hdc, RECT *rc, int color);
255 #endif
256 extern void w32g_uninitialize(void);
257 extern void w32g_initialize(void);
258 extern int is_directory(char *path);
259 extern int directory_form(char *path_in_out);
260 
261 extern char *timidity_window_inifile;
262 extern char *timidity_output_inifile;
263 
264 #endif /* ___W32G_UTL_H_ */
265