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 w32g_pref.c: Written by Daisuke Aoki <dai@y7.net>
21 */
22 #ifdef HAVE_CONFIG_H
23 #include "config.h"
24 #endif /* HAVE_CONFIG_H */
25 #include "interface.h"
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <process.h>
29 #include <stddef.h>
30 #include <windows.h>
31 #undef RC_NONE
32 #include <commctrl.h>
33 #ifndef NO_STRING_H
34 #include <string.h>
35 #else
36 #include <strings.h>
37 #endif
38
39 #include "timidity.h"
40 #include "common.h"
41 #include "instrum.h"
42 #include "playmidi.h"
43 #include "readmidi.h"
44 #include "output.h"
45 #include "controls.h"
46 #include "tables.h"
47 #include "miditrace.h"
48 #include "reverb.h"
49 #ifdef SUPPORT_SOUNDSPEC
50 #include "soundspec.h"
51 #endif /* SUPPORT_SOUNDSPEC */
52 #include "recache.h"
53 #include "arc.h"
54 #include "strtab.h"
55 #include "wrd.h"
56 #include "mid.defs"
57
58 #include "w32g.h"
59 #include "w32g_res.h"
60 #include "w32g_utl.h"
61 #include "w32g_pref.h"
62
63 #ifdef AU_GOGO
64 /* #include <musenc.h> /* for gogo */
65 #include <gogo/gogo.h> /* for gogo */
66 #include "gogo_a.h"
67 #endif
68
69 /* TiMidity Win32GUI preference / PropertySheet */
70
71 #ifndef IA_W32G_SYN
72 extern void w32g_restart(void);
73 #endif
74 extern void set_gogo_opts_use_commandline_options(char *commandline);
75
76 extern void restore_voices(int save_voices);
77
78 extern void TracerWndApplyQuietChannel( ChannelBitMask quietchannels_ );
79
80 volatile int PrefWndDoing = 0;
81
82 static void PrefSettingApply(void);
83
84 static volatile int PrefWndSetOK = 0;
85 static HWND hPrefWnd = NULL;
86 static BOOL APIENTRY CALLBACK PrefWndDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
87 static BOOL APIENTRY PrefPlayerDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
88 static BOOL APIENTRY PrefTiMidity1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
89 static BOOL APIENTRY PrefTiMidity2DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
90 static BOOL APIENTRY PrefTiMidity3DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
91 static BOOL APIENTRY PrefTiMidity4DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
92 #ifdef IA_W32G_SYN
93 static BOOL APIENTRY PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam);
94 #endif
95 static int DlgOpenConfigFile(char *Filename, HWND hwnd);
96 static int DlgOpenOutputFile(char *Filename, HWND hwnd);
97
98 static int vorbisCofigDialog(void);
99 static int gogoCofigDialog(void);
100
101 //#if defined(__CYGWIN32__) || defined(__MINGW32__)
102 #if 0 /* New version of mingw */
103 //#define pszTemplate u1.pszTemplate
104 //#define pszIcon u2.pszIcon
105 #ifndef NONAMELESSUNION
106 #define NONAMELESSUNION
107 #endif
108 #ifndef DUMMYUNIONNAME
109 #define DUMMYUNIONNAME u1
110 #endif
111 #ifndef DUMMYUNIONNAME2
112 #define DUMMYUNIONNAME2 u2
113 #endif
114 #ifndef DUMMYUNIONNAME3
115 #define DUMMYUNIONNAME3 u3
116 #endif
117 #endif
118
119 #ifdef IA_W32G_SYN
120 static char **GetMidiINDrivers ( void );
121 #endif
122
123 #define WM_MYSAVE (WM_USER + 100)
124 #define WM_MYRESTORE (WM_USER + 101)
125
126 typedef struct pref_page_t_ {
127 int index;
128 char *title;
129 HWND hwnd;
130 UINT control;
131 DLGPROC dlgproc;
132 int opt;
133 } pref_page_t;
134
135 static pref_page_t pref_pages_ja[] = {
136 { 0, "�v���C��", (HWND)NULL, IDD_PREF_PLAYER, (DLGPROC) PrefPlayerDialogProc, 0 },
137 { 1, "�G�t�F�N�g", (HWND)NULL, IDD_PREF_TIMIDITY1, (DLGPROC) PrefTiMidity1DialogProc, 0 },
138 { 2, "���̑�", (HWND)NULL, IDD_PREF_TIMIDITY2, (DLGPROC) PrefTiMidity2DialogProc, 0 },
139 { 3, "�o��", (HWND)NULL, IDD_PREF_TIMIDITY3, (DLGPROC) PrefTiMidity3DialogProc, 0 },
140 { 4, "�`�����l��", (HWND)NULL, IDD_PREF_TIMIDITY4, (DLGPROC) PrefTiMidity4DialogProc, 0 },
141 #ifdef IA_W32G_SYN
142 { 5, "�V���Z�T�C�U", (HWND)NULL, IDD_PREF_SYN1, (DLGPROC) PrefSyn1DialogProc, 0 },
143 #endif
144 };
145
146 static pref_page_t pref_pages_en[] = {
147 { 0, "Player", (HWND)NULL, IDD_PREF_PLAYER_EN, (DLGPROC) PrefPlayerDialogProc, 0 },
148 { 1, "Effect", (HWND)NULL, IDD_PREF_TIMIDITY1_EN, (DLGPROC) PrefTiMidity1DialogProc, 0 },
149 { 2, "Misc", (HWND)NULL, IDD_PREF_TIMIDITY2_EN, (DLGPROC) PrefTiMidity2DialogProc, 0 },
150 { 3, "Output", (HWND)NULL, IDD_PREF_TIMIDITY3_EN, (DLGPROC) PrefTiMidity3DialogProc, 0 },
151 { 4, "Channel", (HWND)NULL, IDD_PREF_TIMIDITY4_EN, (DLGPROC) PrefTiMidity4DialogProc, 0 },
152 #ifdef IA_W32G_SYN
153 { 5, "Synthesizer", (HWND)NULL, IDD_PREF_SYN1_EN, (DLGPROC) PrefSyn1DialogProc, 0 },
154 #endif
155 };
156
157 #ifndef IA_W32G_SYN
158 #define PREF_PAGE_MAX 5
159 #else
160 #define PREF_PAGE_MAX 6
161 #endif
162
163 static pref_page_t *pref_pages;
PrefWndCreatePage(HWND hwnd)164 static void PrefWndCreatePage ( HWND hwnd )
165 {
166 int i;
167 RECT rc;
168 HWND hwnd_tab;
169
170 #ifdef IA_W32G_SYN
171 GetMidiINDrivers ();
172 #endif
173
174 switch(PlayerLanguage) {
175 case LANGUAGE_JAPANESE:
176 pref_pages = pref_pages_ja;
177 break;
178 default:
179 case LANGUAGE_ENGLISH:
180 pref_pages = pref_pages_en;
181 break;
182 }
183
184 hwnd_tab = GetDlgItem ( hwnd, IDC_TAB_MAIN );
185 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
186 TC_ITEM tci;
187 tci.mask = TCIF_TEXT;
188 tci.pszText = pref_pages[i].title;
189 tci.cchTextMax = strlen ( pref_pages[i].title );
190 SendMessage ( hwnd_tab, TCM_INSERTITEM, (WPARAM)i, (LPARAM)&tci );
191 }
192 GetClientRect ( hwnd_tab, &rc );
193 SendDlgItemMessage ( hwnd, IDC_TAB_MAIN, TCM_ADJUSTRECT, (WPARAM)0, (LPARAM)&rc );
194 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
195 pref_pages[i].hwnd = CreateDialog ( hInst, MAKEINTRESOURCE(pref_pages[i].control),
196 hwnd, pref_pages[i].dlgproc );
197 ShowWindow ( pref_pages[i].hwnd, SW_HIDE );
198 MoveWindow ( pref_pages[i].hwnd, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE );
199 }
200 }
201
PrefWndCreate(HWND hwnd)202 void PrefWndCreate(HWND hwnd)
203 {
204 VOLATILE_TOUCH(PrefWndDoing);
205 if(PrefWndDoing)
206 return;
207 PrefWndDoing = 1;
208 PrefWndSetOK = 1;
209
210 switch(PlayerLanguage) {
211 case LANGUAGE_JAPANESE:
212 DialogBox ( hInst, MAKEINTRESOURCE(IDD_DIALOG_PREF), hwnd, PrefWndDialogProc );
213 break;
214 default:
215 case LANGUAGE_ENGLISH:
216 DialogBox ( hInst, MAKEINTRESOURCE(IDD_DIALOG_PREF_EN), hwnd, PrefWndDialogProc );
217 break;
218 }
219 hPrefWnd = NULL;
220 PrefWndSetOK = 0;
221 PrefWndDoing = 0;
222 return;
223 }
224
PrefWndDialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)225 static BOOL APIENTRY CALLBACK PrefWndDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
226 {
227 int i;
228
229 switch (uMess){
230 case WM_INITDIALOG:
231 {
232 hPrefWnd = hwnd;
233 PrefWndCreatePage ( hwnd );
234 SendDlgItemMessage ( hwnd, IDC_TAB_MAIN, TCM_SETCURSEL, (WPARAM)0, (LPARAM)0 );
235 ShowWindow ( pref_pages[0].hwnd, TRUE );
236 return TRUE;
237 }
238 case WM_COMMAND:
239 switch (LOWORD(wParam)) {
240 case IDOK:
241 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
242 SendMessage ( pref_pages[i].hwnd, WM_MYSAVE, (WPARAM)0, (LPARAM)0 );
243 }
244 PrefSettingApply();
245 SetWindowLong(hwnd, DWL_MSGRESULT, TRUE);
246 EndDialog ( hwnd, TRUE );
247 return TRUE;
248 case IDCANCEL:
249 SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
250 EndDialog ( hwnd, FALSE );
251 return TRUE;
252 case IDC_BUTTON_APPLY:
253 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
254 SendMessage ( pref_pages[i].hwnd, WM_MYSAVE, (WPARAM)0, (LPARAM)0 );
255 }
256 PrefSettingApply();
257 #ifndef IA_W32G_SYN
258 TracerWndApplyQuietChannel(st_temp->quietchannels);
259 #endif
260 SetWindowLong(hwnd, DWL_MSGRESULT, TRUE);
261 return TRUE;
262 }
263 break;
264
265 case WM_NOTIFY:
266 {
267 int idCtrl = (int) wParam;
268 LPNMHDR pnmh = (LPNMHDR) lParam;
269 if ( pnmh->idFrom == IDC_TAB_MAIN ) {
270 switch ( pnmh->code ) {
271 case TCN_SELCHANGE:
272 {
273 int nIndex = SendDlgItemMessage ( hwnd, IDC_TAB_MAIN, TCM_GETCURSEL, (WPARAM)0, (LPARAM)0);
274 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
275 if ( nIndex == i ) {
276 ShowWindow ( pref_pages[i].hwnd, TRUE );
277 } else {
278 ShowWindow ( pref_pages[i].hwnd, FALSE );
279 }
280 }
281 }
282 return TRUE;
283 }
284 }
285 break;
286 }
287
288 case WM_SIZE:
289 {
290 RECT rc;
291 HWND hwnd_tab = GetDlgItem ( hwnd, IDC_TAB_MAIN );
292 GetClientRect ( hwnd_tab, &rc );
293 SendDlgItemMessage ( hwnd, IDC_TAB_MAIN, TCM_ADJUSTRECT, (WPARAM)TRUE, (LPARAM)&rc );
294 for ( i = 0; i < PREF_PAGE_MAX; i++ ) {
295 MoveWindow ( pref_pages[i].hwnd, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, TRUE );
296 }
297 return TRUE;
298 }
299
300 case WM_CLOSE:
301 break;
302
303 default:
304 break;
305 }
306
307 return FALSE;
308 }
309
310 // SetWindowLong(hwnd, DWL_MSGRESULT, FALSE);
311
312 #define DLG_CHECKBUTTON_TO_FLAG(hwnd,ctlid,x) \
313 ((SendDlgItemMessage((hwnd),(ctlid),BM_GETCHECK,0,0))?((x)=1):((x)=0))
314 #define DLG_FLAG_TO_CHECKBUTTON(hwnd,ctlid,x) \
315 ((x)?(SendDlgItemMessage((hwnd),(ctlid),BM_SETCHECK,1,0)):\
316 (SendDlgItemMessage((hwnd),(ctlid),BM_SETCHECK,0,0)))
317
318
319 extern void TracerWndApplyQuietChannel( ChannelBitMask quietchannels_ );
320
321 #ifndef IA_W32G_SYN
322 /* st_temp, sp_temp ��K�p����
323 * ����: MainThread ����̌Ăяo���֎~�A�댯�I
324 */
PrefSettingApplyReally(void)325 void PrefSettingApplyReally(void)
326 {
327 int restart;
328 extern int IniFileAutoSave;
329
330 free_instruments(1);
331 if(play_mode->fd != -1)
332 play_mode->close_output();
333
334 restart = (PlayerLanguage != sp_temp->PlayerLanguage);
335 // restart |= (strcmp(sp_temp->ConfigFile,ConfigFile) != 0);
336 if(sp_temp->PlayerLanguage == LANGUAGE_JAPANESE)
337 strcpy(st_temp->output_text_code, "SJIS");
338 else
339 strcpy(st_temp->output_text_code, "ASCII");
340 ApplySettingPlayer(sp_temp);
341 ApplySettingTiMidity(st_temp);
342 SaveSettingPlayer(sp_current);
343 SaveSettingTiMidity(st_current);
344 memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER));
345 memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY));
346 restore_voices(1);
347 PrefWndSetOK = 0;
348 if(IniFileAutoSave)
349 SaveIniFile(sp_current, st_current);
350 if(restart &&
351 MessageBox(hListWnd,"Restart TiMidity?", "TiMidity",
352 MB_YESNO)==IDYES)
353 {
354 w32g_restart();
355 // PrefWndDoing = 0;
356 }
357 }
358 #endif
359
360 #ifdef IA_W32G_SYN
361 extern int w32g_syn_do_before_pref_apply ( void );
362 extern int w32g_syn_do_after_pref_apply ( void );
363 #endif
364
365 extern int IniFileAutoSave;
PrefSettingApply(void)366 static void PrefSettingApply(void)
367 {
368 #ifndef IA_W32G_SYN
369 w32g_send_rc(RC_EXT_APPLY_SETTING, 0);
370 #else
371 int before_pref_apply_ok;
372 before_pref_apply_ok = ( w32g_syn_do_before_pref_apply () == 0 );
373 ApplySettingPlayer(sp_temp);
374 ApplySettingTiMidity(st_temp);
375 SaveSettingPlayer(sp_current);
376 SaveSettingTiMidity(st_current);
377 memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER));
378 memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY));
379 if(IniFileAutoSave)
380 SaveIniFile(sp_current, st_current);
381 if ( before_pref_apply_ok )
382 w32g_syn_do_after_pref_apply ();
383 PrefWndSetOK = 0;
384 // PrefWndDoing = 0;
385 #endif
386 }
387
reload_cfg(void)388 void reload_cfg(void)
389 {
390 free_instrument_map();
391 clean_up_pathlist();
392 free_instruments(0);
393 tmdy_free_config();
394 timidity_start_initialize();
395 read_config_file ( sp_temp->ConfigFile, 0 );
396 PrefSettingApply();
397 #ifndef IA_W32G_SYN
398 TracerWndApplyQuietChannel(st_temp->quietchannels);
399 #endif
400 }
401
402 static BOOL APIENTRY
PrefPlayerDialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)403 PrefPlayerDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
404 {
405 static int initflag = 1;
406 switch (uMess){
407 case WM_INITDIALOG:
408 SetDlgItemText(hwnd,IDC_EDIT_CONFIG_FILE,TEXT(sp_temp->ConfigFile));
409 {
410 char buff[64];
411 sprintf(buff,"%d",sp_temp->SubWindowMax);
412 SetDlgItemText(hwnd,IDC_EDIT_SUBWINDOW_MAX,TEXT(buff));
413 }
414 switch(sp_temp->PlayerLanguage){
415 case LANGUAGE_ENGLISH:
416 CheckRadioButton(hwnd,IDC_RADIOBUTTON_JAPANESE,IDC_RADIOBUTTON_ENGLISH,
417 IDC_RADIOBUTTON_ENGLISH);
418 break;
419 default:
420 case LANGUAGE_JAPANESE:
421 CheckRadioButton(hwnd,IDC_RADIOBUTTON_JAPANESE,IDC_RADIOBUTTON_ENGLISH,
422 IDC_RADIOBUTTON_JAPANESE);
423 break;
424 }
425 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOQUIT,
426 strchr(st_temp->opt_ctl + 1, 'x'));
427 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOUNIQ,
428 strchr(st_temp->opt_ctl + 1, 'u'));
429 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOREFINE,
430 strchr(st_temp->opt_ctl + 1, 'R'));
431 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOSTART,
432 strchr(st_temp->opt_ctl + 1, 'a'));
433 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_CONTINUE,
434 strchr(st_temp->opt_ctl + 1, 'C'));
435 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_DRAG_START,
436 !strchr(st_temp->opt_ctl + 1, 'd'));
437 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_LOOPING,
438 !strchr(st_temp->opt_ctl + 1, 'l'));
439 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_RANDOM,
440 strchr(st_temp->opt_ctl + 1, 'r'));
441
442 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_SEACHDIRRECURSIVE,
443 sp_temp->SeachDirRecursive);
444 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_DOCWNDINDEPENDENT,
445 sp_temp->DocWndIndependent);
446 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_DOCWNDAUTOPOPUP,
447 sp_temp->DocWndAutoPopup);
448 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_INIFILE_AUTOSAVE,
449 sp_temp->IniFileAutoSave);
450 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_AUTOLOAD_PLAYLIST,
451 sp_temp->AutoloadPlaylist);
452 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_AUTOSAVE_PLAYLIST,
453 sp_temp->AutosavePlaylist);
454 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_POS_SIZE_SAVE,
455 sp_temp->PosSizeSave);
456 initflag = 0;
457 break;
458 case WM_COMMAND:
459 switch (LOWORD(wParam)) {
460 case IDC_BUTTON_CONFIG_FILE:
461 {
462 char filename[MAXPATH+1];
463 filename[0] = '\0';
464 SendDlgItemMessage(hwnd,IDC_EDIT_CONFIG_FILE,WM_GETTEXT,
465 (WPARAM)MAX_PATH,(LPARAM)TEXT(filename));
466 if(!DlgOpenConfigFile(filename,hwnd))
467 if(filename[0]!='\0')
468 SetDlgItemText(hwnd,IDC_EDIT_CONFIG_FILE,TEXT(filename));
469 }
470 break;
471 case IDC_BUTTON_CFG_EDIT:
472
473 if(getenv("TIMIDITY_CFG_EDITOR") != NULL){
474 ShellExecute(NULL, "open", getenv("TIMIDITY_CFG_EDITOR"), ConfigFile, NULL, SW_SHOWNORMAL);
475 }else{
476 ShellExecute(NULL, "open", "notepad.exe", ConfigFile, NULL, SW_SHOWNORMAL);
477 }
478 break;
479 /* ShellExecute(NULL, "open", "notepad.exe", ConfigFile, NULL, SW_SHOWNORMAL);
480 break;
481 case IDC_BUTTON_CFG_DIR:
482 ShellExecute(NULL, "open", ConfigFileOpenDir, NULL, NULL, SW_SHOWNORMAL);
483 break;*/
484 case IDC_BUTTON_CFG_RELOAD:
485 {
486 int i;
487 for (i = 0; i < PREF_PAGE_MAX; i++ ) {
488 SendMessage ( pref_pages[i].hwnd, WM_MYSAVE, (WPARAM)0, (LPARAM)0 );
489 }
490 reload_cfg();
491 SetWindowLong(hwnd, DWL_MSGRESULT, TRUE);
492 }
493 break;
494 case IDC_RADIOBUTTON_JAPANESE:
495 case IDC_RADIOBUTTON_ENGLISH:
496 break;
497 default:
498 break;
499 }
500 PrefWndSetOK = 1;
501 break;
502
503 case WM_MYSAVE:
504 {
505 if ( initflag ) break;
506 SendDlgItemMessage(hwnd,IDC_EDIT_CONFIG_FILE,WM_GETTEXT,
507 (WPARAM)MAX_PATH,(LPARAM)TEXT(sp_temp->ConfigFile));
508 {
509 char buff[64];
510 SendDlgItemMessage(hwnd,IDC_EDIT_SUBWINDOW_MAX,WM_GETTEXT,
511 (WPARAM)60,(LPARAM)TEXT(buff));
512 sp_temp->SubWindowMax = atoi(buff);
513 if ( sp_temp->SubWindowMax < 1 )
514 sp_temp->SubWindowMax = 1;
515 if ( sp_temp->SubWindowMax > 10 )
516 sp_temp->SubWindowMax = 10;
517 }
518 if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_ENGLISH,BM_GETCHECK,0,0)){
519 sp_temp->PlayerLanguage = LANGUAGE_ENGLISH;
520 } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_JAPANESE,BM_GETCHECK,0,0)){
521 sp_temp->PlayerLanguage = LANGUAGE_JAPANESE;
522 }
523 {
524 int flag;
525
526 SettingCtlFlag(st_temp, 'x',
527 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOQUIT,flag));
528 SettingCtlFlag(st_temp, 'u',
529 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOUNIQ,flag));
530 SettingCtlFlag(st_temp, 'R',
531 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOREFINE,flag));
532 SettingCtlFlag(st_temp, 'a',
533 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOSTART,flag));
534 SettingCtlFlag(st_temp, 'C',
535 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_CONTINUE,flag));
536 SettingCtlFlag(st_temp, 'd',
537 !DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_DRAG_START,flag));
538 SettingCtlFlag(st_temp, 'l',
539 !DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_LOOPING,flag));
540 SettingCtlFlag(st_temp, 'r',
541 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_RANDOM,flag));
542 }
543 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_SEACHDIRRECURSIVE,
544 sp_temp->SeachDirRecursive);
545 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_DOCWNDINDEPENDENT,
546 sp_temp->DocWndIndependent);
547 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_DOCWNDAUTOPOPUP,
548 sp_temp->DocWndAutoPopup);
549 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_INIFILE_AUTOSAVE,
550 sp_temp->IniFileAutoSave);
551 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_AUTOLOAD_PLAYLIST,
552 sp_temp->AutoloadPlaylist);
553 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_AUTOSAVE_PLAYLIST,
554 sp_temp->AutosavePlaylist);
555 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_POS_SIZE_SAVE,
556 sp_temp->PosSizeSave);
557 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
558 }
559 break;
560 case WM_SIZE:
561 return FALSE;
562 case WM_CLOSE:
563 break;
564 default:
565 break;
566 }
567 return FALSE;
568 }
569
570 // IDC_COMBO_REVERB
571 #define cb_num_IDC_COMBO_REVERB 5
572
573 static char *cb_info_IDC_COMBO_REVERB_en[] = {
574 "No Reverb",
575 "Standard Reverb",
576 "Global Old Reverb",
577 "New Reverb",
578 "Global New Reverb",
579 };
580
581 static char *cb_info_IDC_COMBO_REVERB_jp[] = {
582 "���o�[�u�Ȃ�",
583 "�W�����o�[�u",
584 "�W�����o�[�u�i�O���[�o���j",
585 "�V���o�[�u",
586 "�V���o�[�u�i�O���[�o���j",
587 };
588
589 // IDC_COMBO_CHORUS
590 #define cb_num_IDC_COMBO_CHORUS 3
591
592 static char *cb_info_IDC_COMBO_CHORUS_en[] = {
593 "No Chorus",
594 "Standard Chorus",
595 "Surround Chorus",
596 };
597
598 static char *cb_info_IDC_COMBO_CHORUS_jp[] = {
599 "�R�[���X�Ȃ�",
600 "�W���R�[���X",
601 "�T���E���h�R�[���X",
602 };
603
604 // IDC_COMBO_DELAY
605 #define cb_num_IDC_COMBO_DELAY 2
606
607 static char *cb_info_IDC_COMBO_DELAY_en[] = {
608 "No Delay",
609 "Standard Delay",
610 };
611
612 static char *cb_info_IDC_COMBO_DELAY_jp[] = {
613 "�f�B���C�Ȃ�",
614 "�W���f�B���C",
615 };
616
617 // IDC_COMBO_LPF
618 #define cb_num_IDC_COMBO_LPF 3
619
620 static char *cb_info_IDC_COMBO_LPF_en[] = {
621 "No Filter",
622 "Lowpass Filter (12dB/oct)",
623 "Lowpass Filter (24dB/oct)",
624 };
625
626 static char *cb_info_IDC_COMBO_LPF_jp[] = {
627 "�t�B���^�Ȃ�",
628 "LPF (12dB/oct)",
629 "LPF (24dB/oct)",
630 };
631
632 // IDC_COMBO_MODULE
633 struct _ModuleList {
634 int num;
635 char *name;
636 };
637
638 static struct _ModuleList cb_info_IDC_COMBO_MODULE[] = {
639 MODULE_TIMIDITY_DEFAULT, "TiMidity++ Default",
640 MODULE_SC55, "SC-55",
641 MODULE_SC88, "SC-88",
642 MODULE_SC88PRO, "SC-88Pro",
643 MODULE_SC8850, "SC-8850",
644 MODULE_MU50, "MU-50",
645 MODULE_MU80, "MU-80",
646 MODULE_MU90, "MU-90",
647 MODULE_MU100, "MU-100",
648 MODULE_SBLIVE, "Sound Blaster Live!",
649 MODULE_SBAUDIGY, "Sound Blaster Audigy",
650 MODULE_TIMIDITY_SPECIAL1, "TiMidity++ Special 1",
651 MODULE_TIMIDITY_DEBUG, "TiMidity++ Debug",
652 };
653
654 #define cb_num_IDC_COMBO_MODULE (sizeof(cb_info_IDC_COMBO_MODULE) / sizeof(struct _ModuleList))
655
find_combo_module_item(int val)656 static int find_combo_module_item(int val)
657 {
658 int i;
659 for (i = 0; i < cb_num_IDC_COMBO_MODULE; i++)
660 if (val == cb_info_IDC_COMBO_MODULE[i].num) {return i;}
661 return 0;
662 }
663
664 static BOOL APIENTRY
PrefTiMidity1DialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)665 PrefTiMidity1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
666 {
667 static int initflag = 1;
668 int i;
669 char **cb_info;
670 switch (uMess){
671 case WM_INITDIALOG:
672 // CHORUS
673 if (PlayerLanguage == LANGUAGE_JAPANESE)
674 cb_info = cb_info_IDC_COMBO_CHORUS_jp;
675 else
676 cb_info = cb_info_IDC_COMBO_CHORUS_en;
677
678 for (i = 0; i < cb_num_IDC_COMBO_CHORUS; i++)
679 SendDlgItemMessage(hwnd, IDC_COMBO_CHORUS,
680 CB_INSERTSTRING, (WPARAM) -1,
681 (LPARAM) cb_info[i]);
682
683 if(GetDlgItemInt(hwnd, IDC_EDIT_CHORUS, NULL, FALSE)==0)
684 SetDlgItemInt(hwnd, IDC_EDIT_CHORUS, 1, TRUE);
685 if (st_temp->opt_surround_chorus)
686 i = 2;
687 else
688 i = st_temp->opt_chorus_control;
689 if (i >= 0) {
690 SendDlgItemMessage(hwnd, IDC_COMBO_CHORUS, CB_SETCURSEL,
691 (WPARAM) i, (LPARAM) 0);
692 SendDlgItemMessage(hwnd, IDC_CHECKBOX_CHORUS_LEVEL, BM_SETCHECK, 0, 0);
693 } else {
694 SendDlgItemMessage(hwnd, IDC_COMBO_CHORUS, CB_SETCURSEL,
695 (WPARAM) ((-i) / 128 + 1), (LPARAM) 0);
696 SendDlgItemMessage(hwnd, IDC_CHECKBOX_CHORUS_LEVEL, BM_SETCHECK, 1, 0);
697 SetDlgItemInt(hwnd, IDC_EDIT_CHORUS, -i, TRUE);
698 }
699 SendMessage(hwnd, WM_COMMAND, IDC_CHECKBOX_CHORUS_LEVEL, 0);
700 // REVERB
701 if (PlayerLanguage == LANGUAGE_JAPANESE)
702 cb_info = cb_info_IDC_COMBO_REVERB_jp;
703 else
704 cb_info = cb_info_IDC_COMBO_REVERB_en;
705
706 for (i = 0; i < cb_num_IDC_COMBO_REVERB; i++)
707 SendDlgItemMessage(hwnd, IDC_COMBO_REVERB,
708 CB_INSERTSTRING, (WPARAM) -1,
709 (LPARAM) cb_info[i]);
710
711 if(GetDlgItemInt(hwnd, IDC_EDIT_REVERB, NULL, FALSE)==0)
712 SetDlgItemInt(hwnd, IDC_EDIT_REVERB, 1, TRUE);
713 if (st_temp->opt_reverb_control >= 0) {
714 SendDlgItemMessage(hwnd, IDC_COMBO_REVERB, CB_SETCURSEL,
715 (WPARAM) st_temp->opt_reverb_control, (LPARAM) 0);
716 SendDlgItemMessage(hwnd, IDC_CHECKBOX_REVERB_LEVEL, BM_SETCHECK, 0, 0);
717 } else {
718 SendDlgItemMessage(hwnd, IDC_COMBO_REVERB, CB_SETCURSEL,
719 (WPARAM) ((-st_temp->opt_reverb_control) / 128 + 1), (LPARAM) 0);
720 SendDlgItemMessage(hwnd, IDC_CHECKBOX_REVERB_LEVEL, BM_SETCHECK, 1, 0);
721 SetDlgItemInt(hwnd, IDC_EDIT_REVERB, (-st_temp->opt_reverb_control) % 128, TRUE);
722 }
723 SendMessage(hwnd, WM_COMMAND, IDC_CHECKBOX_REVERB_LEVEL, 0);
724 // DELAY
725 if (PlayerLanguage == LANGUAGE_JAPANESE)
726 cb_info = cb_info_IDC_COMBO_DELAY_jp;
727 else
728 cb_info = cb_info_IDC_COMBO_DELAY_en;
729
730 for (i = 0; i < cb_num_IDC_COMBO_DELAY; i++)
731 SendDlgItemMessage(hwnd, IDC_COMBO_DELAY,
732 CB_INSERTSTRING, (WPARAM) -1,
733 (LPARAM) cb_info[i]);
734
735 SendDlgItemMessage(hwnd, IDC_COMBO_DELAY, CB_SETCURSEL,
736 (WPARAM) st_temp->opt_delay_control, (LPARAM) 0);
737 // DEFAULT MODULE
738 for (i = 0; i < cb_num_IDC_COMBO_MODULE; i++)
739 SendDlgItemMessage(hwnd, IDC_COMBO_MODULE,
740 CB_INSERTSTRING, (WPARAM) -1,
741 (LPARAM) cb_info_IDC_COMBO_MODULE[i].name);
742
743 SendDlgItemMessage(hwnd, IDC_COMBO_MODULE, CB_SETCURSEL,
744 (WPARAM) find_combo_module_item(st_temp->opt_default_module), (LPARAM) 0);
745 // LPF
746 if (PlayerLanguage == LANGUAGE_JAPANESE)
747 cb_info = cb_info_IDC_COMBO_LPF_jp;
748 else
749 cb_info = cb_info_IDC_COMBO_LPF_en;
750
751 for (i = 0; i < cb_num_IDC_COMBO_LPF; i++)
752 SendDlgItemMessage(hwnd, IDC_COMBO_LPF,
753 CB_INSERTSTRING, (WPARAM) -1,
754 (LPARAM) cb_info[i]);
755
756 SendDlgItemMessage(hwnd, IDC_COMBO_LPF, CB_SETCURSEL,
757 (WPARAM) st_temp->opt_lpf_def, (LPARAM) 0);
758 // L&R DELAY
759 SetDlgItemInt(hwnd,IDC_EDIT_DELAY,st_temp->effect_lr_delay_msec,TRUE);
760 if(st_temp->effect_lr_mode<0){
761 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_SETCHECK,0,0);
762 } else {
763 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_SETCHECK,1,0);
764 switch(st_temp->effect_lr_mode){
765 case 0:
766 CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER,
767 IDC_RADIOBUTTON_DELAY_LEFT);
768 break;
769 case 1:
770 CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER,
771 IDC_RADIOBUTTON_DELAY_RIGHT);
772 break;
773 case 2:
774 default:
775 CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER,
776 IDC_RADIOBUTTON_DELAY_CENTER);
777 break;
778 }
779 }
780 SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_DELAY,0);
781 // NOISESHARPING
782 SetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,st_temp->noise_sharp_type,TRUE);
783 // Misc
784 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel);
785 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento);
786 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NRPNVIB,st_temp->opt_nrpn_vibrato);
787 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CHPRESS,st_temp->opt_channel_pressure);
788 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow);
789 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event);
790 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAA,st_temp->opt_tva_attack);
791 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAD,st_temp->opt_tva_decay);
792 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TVAR,st_temp->opt_tva_release);
793 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_DRUM_EFFECT,st_temp->opt_drum_effect);
794 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_MOD_ENV,st_temp->opt_modulation_envelope);
795 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_PAN_DELAY,st_temp->opt_pan_delay);
796 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_EQ,st_temp->opt_eq_control);
797 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_IEFFECT,st_temp->opt_insertion_effect);
798 SetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,st_temp->modify_release,TRUE);
799 initflag = 0;
800 break;
801 case WM_COMMAND:
802 switch (LOWORD(wParam)) {
803 case IDCLOSE:
804 break;
805 case IDC_CHECKBOX_CHORUS_LEVEL:
806 if(SendDlgItemMessage(hwnd, IDC_CHECKBOX_CHORUS_LEVEL, BM_GETCHECK, 0, 0)){
807 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_CHORUS), TRUE);
808 } else {
809 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_CHORUS), FALSE);
810 }
811 break;
812 case IDC_CHECKBOX_REVERB_LEVEL:
813 if(SendDlgItemMessage(hwnd, IDC_CHECKBOX_REVERB_LEVEL, BM_GETCHECK, 0, 0)){
814 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_REVERB), TRUE);
815 } else {
816 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_REVERB), FALSE);
817 }
818 break;
819 case IDC_CHECKBOX_DELAY:
820 case IDC_RADIOBUTTON_DELAY_LEFT:
821 case IDC_RADIOBUTTON_DELAY_RIGHT:
822 case IDC_RADIOBUTTON_DELAY_CENTER:
823 if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,BM_GETCHECK,0,0))
824 if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT,BM_GETCHECK,0,0))
825 if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_CENTER,BM_GETCHECK,0,0))
826 CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER,IDC_RADIOBUTTON_DELAY_CENTER);
827 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_GETCHECK,0,0)){
828 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_LEFT),TRUE);
829 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT),TRUE);
830 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_CENTER),TRUE);
831 EnableWindow(GetDlgItem(hwnd,IDC_EDIT_DELAY),TRUE);
832 } else {
833 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_LEFT),FALSE);
834 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT),FALSE);
835 EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_CENTER),FALSE);
836 EnableWindow(GetDlgItem(hwnd,IDC_EDIT_DELAY),FALSE);
837 }
838 break;
839 default:
840 PrefWndSetOK = 1;
841 return FALSE;
842 break;
843 }
844 PrefWndSetOK = 1;
845 break;
846 case WM_MYSAVE:
847 {
848 if ( initflag ) break;
849 // CHORUS
850 st_temp->opt_chorus_control = (int)SendDlgItemMessage(hwnd, IDC_COMBO_CHORUS, CB_GETCURSEL, 0, 0);
851 if (st_temp->opt_chorus_control && SendDlgItemMessage(hwnd, IDC_CHECKBOX_CHORUS_LEVEL, BM_GETCHECK, 0, 0)) {
852 st_temp->opt_chorus_control = -(int)GetDlgItemInt(hwnd, IDC_EDIT_CHORUS, NULL, TRUE);
853 }
854 if (st_temp->opt_chorus_control == 2) {
855 st_temp->opt_chorus_control = 1;
856 st_temp->opt_surround_chorus = 1;
857 } else {
858 st_temp->opt_surround_chorus = 0;
859 }
860 // REVERB
861 st_temp->opt_reverb_control = (int)SendDlgItemMessage(hwnd, IDC_COMBO_REVERB, CB_GETCURSEL, 0, 0);
862 if(st_temp->opt_reverb_control && SendDlgItemMessage(hwnd, IDC_CHECKBOX_REVERB_LEVEL, BM_GETCHECK, 0, 0)) {
863 st_temp->opt_reverb_control = -(int)GetDlgItemInt(hwnd, IDC_EDIT_REVERB, NULL, TRUE)
864 - (st_temp->opt_reverb_control - 1) * 128;
865 }
866 // DELAY
867 st_temp->opt_delay_control = (int)SendDlgItemMessage(hwnd, IDC_COMBO_DELAY, CB_GETCURSEL, 0, 0);
868 // DEFAULT MODULE
869 st_temp->opt_default_module = cb_info_IDC_COMBO_MODULE[(int)SendDlgItemMessage(hwnd, IDC_COMBO_MODULE, CB_GETCURSEL, 0, 0)].num;
870 // LPF
871 st_temp->opt_lpf_def = (int)SendDlgItemMessage(hwnd, IDC_COMBO_LPF, CB_GETCURSEL, 0, 0);
872 // L&R DELAY
873 st_temp->effect_lr_delay_msec = GetDlgItemInt(hwnd,IDC_EDIT_DELAY,NULL,FALSE);
874 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_GETCHECK,0,0)){
875 if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,BM_GETCHECK,0,0)){
876 st_temp->effect_lr_mode = 0;
877 } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT,BM_GETCHECK,0,0)){
878 st_temp->effect_lr_mode = 1;
879 } else {
880 st_temp->effect_lr_mode = 2;
881 }
882 } else {
883 st_temp->effect_lr_mode = -1;
884 }
885 // NOISESHARPING
886 st_temp->noise_sharp_type = GetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,NULL,FALSE);
887 // Misc
888 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel);
889 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento);
890 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NRPNVIB,st_temp->opt_nrpn_vibrato);
891 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_CHPRESS,st_temp->opt_channel_pressure);
892 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow);
893 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event);
894 st_temp->modify_release = GetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,NULL,FALSE);
895 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAA,st_temp->opt_tva_attack);
896 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAD,st_temp->opt_tva_decay);
897 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TVAR,st_temp->opt_tva_release);
898 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_DRUM_EFFECT,st_temp->opt_drum_effect);
899 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_MOD_ENV,st_temp->opt_modulation_envelope);
900 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_PAN_DELAY,st_temp->opt_pan_delay);
901 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_EQ,st_temp->opt_eq_control);
902 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_IEFFECT,st_temp->opt_insertion_effect);
903 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
904 }
905 break;
906 case WM_SIZE:
907 return FALSE;
908 case WM_CLOSE:
909 break;
910 default:
911 break;
912 }
913 return FALSE;
914 }
915
char_count(char * s,int c)916 static int char_count(char *s, int c)
917 {
918 int n = 0;
919 while(*s)
920 n += (*s++ == c);
921 return n;
922 }
923
924 // IDC_COMBO_(INIT|FORCE)_KEYSIG
925 static char *cb_info_IDC_COMBO_KEYSIG[] = {
926 "Cb Maj / Ab Min (b7)",
927 "Gb Maj / Eb Min (b6)",
928 "Db Maj / Bb Min (b5)",
929 "Ab Maj / F Min (b4)",
930 "Eb Maj / C Min (b3)",
931 "Bb Maj / G Min (b2)",
932 "F Maj / D Min (b1)",
933 "C Maj / A Min (0)",
934 "G Maj / E Min (#1)",
935 "D Maj / B Min (#2)",
936 "A Maj / F# Min (#3)",
937 "E Maj / C# Min (#4)",
938 "B Maj / G# Min (#5)",
939 "F# Maj / D# Min (#6)",
940 "C# Maj / A# Min (#7)"
941 };
942
943 static BOOL APIENTRY
PrefTiMidity2DialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)944 PrefTiMidity2DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
945 {
946 int i;
947 static int initflag = 1;
948
949 switch (uMess){
950 case WM_INITDIALOG:
951 SetDlgItemInt(hwnd,IDC_EDIT_VOICES,st_temp->voices,FALSE);
952 SetDlgItemInt(hwnd,IDC_EDIT_AMPLIFICATION,st_temp->amplification,FALSE);
953 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_FREE_INST,st_temp->free_instruments_afterwards);
954 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_ANTIALIAS,st_temp->antialiasing_allowed);
955 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_LOADINST_PLAYING,st_temp->opt_realtime_playing);
956 SetDlgItemInt(hwnd,IDC_EDIT_CACHE_SIZE,st_temp->allocate_cache_size,FALSE);
957
958 SetDlgItemInt(hwnd,IDC_EDIT_REDUCE_VOICE,st_temp->reduce_voice_threshold,TRUE);
959 SendDlgItemMessage(hwnd,IDC_CHECKBOX_REDUCE_VOICE,BM_SETCHECK,st_temp->reduce_voice_threshold,0);
960 SetDlgItemInt(hwnd,IDC_EDIT_DEFAULT_TONEBANK,st_temp->default_tonebank,FALSE);
961 SetDlgItemInt(hwnd,IDC_EDIT_SPECIAL_TONEBANK,st_temp->special_tonebank,TRUE);
962 if(st_temp->special_tonebank<0){
963 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_SETCHECK,0,0);
964 } else {
965 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_SETCHECK,1,0);
966 }
967 SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_SPECIAL_TONEBANK,0);
968 switch(st_temp->opt_default_mid){
969 case 0x41:
970 CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_GS);
971 break;
972 case 0x43:
973 CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_XG);
974 break;
975 default:
976 case 0x7e:
977 CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_GM);
978 break;
979 }
980 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CTL_TRACE_PLAYING,
981 strchr(st_temp->opt_ctl + 1, 't'));
982 SetDlgItemInt(hwnd,IDC_EDIT_CTL_VEBOSITY,
983 char_count(st_temp->opt_ctl + 1, 'v') -
984 char_count(st_temp->opt_ctl + 1, 'q') + 1, TRUE);
985 SetDlgItemInt(hwnd,IDC_EDIT_CONTROL_RATIO,st_temp->control_ratio,FALSE);
986 SetDlgItemInt(hwnd,IDC_EDIT_DRUM_POWER,st_temp->opt_drum_power,FALSE);
987 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AMP_COMPENSATION,st_temp->opt_amp_compensation);
988 DLG_FLAG_TO_CHECKBUTTON(hwnd, IDC_CHECKBOX_PURE_INTONATION,
989 st_temp->opt_pure_intonation);
990 SendMessage(hwnd, WM_COMMAND, IDC_CHECKBOX_PURE_INTONATION, 0);
991 DLG_FLAG_TO_CHECKBUTTON(hwnd, IDC_CHECKBOX_INIT_KEYSIG,
992 (st_temp->opt_init_keysig != 8));
993 SendMessage(hwnd, WM_COMMAND, IDC_CHECKBOX_PURE_INTONATION, 0);
994 for (i = 0; i < 15; i++)
995 SendDlgItemMessage(hwnd, IDC_COMBO_INIT_KEYSIG, CB_INSERTSTRING,
996 (WPARAM) -1, (LPARAM) cb_info_IDC_COMBO_KEYSIG[i]);
997 if (st_temp->opt_init_keysig == 8) {
998 SendDlgItemMessage(hwnd, IDC_COMBO_INIT_KEYSIG, CB_SETCURSEL,
999 (WPARAM) 7, (LPARAM) 0);
1000 SendDlgItemMessage(hwnd, IDC_CHECKBOX_INIT_MI, BM_SETCHECK,
1001 0, 0);
1002 } else {
1003 SendDlgItemMessage(hwnd, IDC_COMBO_INIT_KEYSIG, CB_SETCURSEL,
1004 (WPARAM) st_temp->opt_init_keysig + 7 & 0x0f,
1005 (LPARAM) 0);
1006 SendDlgItemMessage(hwnd, IDC_CHECKBOX_INIT_MI, BM_SETCHECK,
1007 (st_temp->opt_init_keysig + 7 & 0x10) ? 1 : 0, 0);
1008 }
1009 SetDlgItemInt(hwnd, IDC_EDIT_KEY_ADJUST, st_temp->key_adjust, TRUE);
1010 DLG_FLAG_TO_CHECKBUTTON(hwnd, IDC_CHECKBOX_FORCE_KEYSIG,
1011 (st_temp->opt_force_keysig != 8));
1012 SendMessage(hwnd, WM_COMMAND, IDC_CHECKBOX_FORCE_KEYSIG, 0);
1013 for (i = 0; i < 15; i++)
1014 SendDlgItemMessage(hwnd, IDC_COMBO_FORCE_KEYSIG, CB_INSERTSTRING,
1015 (WPARAM) -1, (LPARAM) cb_info_IDC_COMBO_KEYSIG[i]);
1016 if (st_temp->opt_force_keysig == 8)
1017 SendDlgItemMessage(hwnd, IDC_COMBO_FORCE_KEYSIG, CB_SETCURSEL,
1018 (WPARAM) 7, (LPARAM) 0);
1019 else
1020 SendDlgItemMessage(hwnd, IDC_COMBO_FORCE_KEYSIG, CB_SETCURSEL,
1021 (WPARAM) st_temp->opt_force_keysig + 7, (LPARAM) 0);
1022 initflag = 0;
1023 break;
1024 case WM_COMMAND:
1025 switch (LOWORD(wParam)) {
1026 case IDCLOSE:
1027 break;
1028 case IDC_CHECKBOX_SPECIAL_TONEBANK:
1029 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_SPECIAL_TONEBANK,
1030 BM_GETCHECK, 0, 0))
1031 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_SPECIAL_TONEBANK),
1032 TRUE);
1033 else
1034 EnableWindow(GetDlgItem(hwnd, IDC_EDIT_SPECIAL_TONEBANK),
1035 FALSE);
1036 break;
1037 case IDC_CHECKBOX_PURE_INTONATION:
1038 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_PURE_INTONATION,
1039 BM_GETCHECK, 0, 0)) {
1040 EnableWindow(GetDlgItem(hwnd,
1041 IDC_CHECKBOX_INIT_KEYSIG), TRUE);
1042 if (SendDlgItemMessage(hwnd,
1043 IDC_CHECKBOX_INIT_KEYSIG, BM_GETCHECK, 0, 0)) {
1044 EnableWindow(GetDlgItem(hwnd,
1045 IDC_COMBO_INIT_KEYSIG), TRUE);
1046 EnableWindow(GetDlgItem(hwnd,
1047 IDC_CHECKBOX_INIT_MI), TRUE);
1048 } else {
1049 EnableWindow(GetDlgItem(hwnd,
1050 IDC_COMBO_INIT_KEYSIG), FALSE);
1051 EnableWindow(GetDlgItem(hwnd,
1052 IDC_CHECKBOX_INIT_MI), FALSE);
1053 }
1054 } else {
1055 EnableWindow(GetDlgItem(hwnd,
1056 IDC_CHECKBOX_INIT_KEYSIG), FALSE);
1057 EnableWindow(GetDlgItem(hwnd, IDC_COMBO_INIT_KEYSIG), FALSE);
1058 EnableWindow(GetDlgItem(hwnd, IDC_CHECKBOX_INIT_MI), FALSE);
1059 }
1060 break;
1061 case IDC_CHECKBOX_INIT_KEYSIG:
1062 if (SendDlgItemMessage(hwnd,
1063 IDC_CHECKBOX_INIT_KEYSIG, BM_GETCHECK, 0, 0)) {
1064 EnableWindow(GetDlgItem(hwnd, IDC_COMBO_INIT_KEYSIG), TRUE);
1065 EnableWindow(GetDlgItem(hwnd, IDC_CHECKBOX_INIT_MI), TRUE);
1066 } else {
1067 EnableWindow(GetDlgItem(hwnd, IDC_COMBO_INIT_KEYSIG), FALSE);
1068 EnableWindow(GetDlgItem(hwnd, IDC_CHECKBOX_INIT_MI), FALSE);
1069 }
1070 break;
1071 case IDC_COMBO_INIT_KEYSIG:
1072 case IDC_CHECKBOX_INIT_MI:
1073 st_temp->opt_init_keysig = SendDlgItemMessage(hwnd,
1074 IDC_COMBO_INIT_KEYSIG, CB_GETCURSEL,
1075 (WPARAM) 0, (LPARAM) 0) + ((SendDlgItemMessage(hwnd,
1076 IDC_CHECKBOX_INIT_MI, BM_GETCHECK,
1077 0, 0)) ? 16 : 0) - 7;
1078 break;
1079 case IDC_CHECKBOX_FORCE_KEYSIG:
1080 if (SendDlgItemMessage(hwnd,
1081 IDC_CHECKBOX_FORCE_KEYSIG, BM_GETCHECK, 0, 0))
1082 EnableWindow(GetDlgItem(hwnd, IDC_COMBO_FORCE_KEYSIG), TRUE);
1083 else
1084 EnableWindow(GetDlgItem(hwnd, IDC_COMBO_FORCE_KEYSIG), FALSE);
1085 break;
1086 case IDC_COMBO_FORCE_KEYSIG:
1087 st_temp->opt_force_keysig = SendDlgItemMessage(hwnd,
1088 IDC_COMBO_FORCE_KEYSIG, CB_GETCURSEL,
1089 (WPARAM) 0, (LPARAM) 0) - 7;
1090 break;
1091 default:
1092 break;
1093 }
1094 PrefWndSetOK = 1;
1095 break;
1096 case WM_MYSAVE:
1097 if ( initflag ) break;
1098 {
1099 int i;
1100 char *p;
1101 st_temp->voices = GetDlgItemInt(hwnd,IDC_EDIT_VOICES,NULL,FALSE);
1102 if(st_temp->voices > max_voices){
1103 max_voices = st_temp->voices;
1104 voice = (Voice *) safe_realloc(voice, max_voices * sizeof(Voice));
1105 memset(voice, 0, max_voices * sizeof(Voice));
1106 }
1107 st_temp->amplification = GetDlgItemInt(hwnd,IDC_EDIT_AMPLIFICATION,NULL,FALSE);
1108 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_FREE_INST,st_temp->free_instruments_afterwards);
1109 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_ANTIALIAS,st_temp->antialiasing_allowed);
1110 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_LOADINST_PLAYING,st_temp->opt_realtime_playing);
1111 st_temp->allocate_cache_size = GetDlgItemInt(hwnd,IDC_EDIT_CACHE_SIZE,NULL,FALSE);
1112 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REDUCE_VOICE,BM_GETCHECK,0,0))
1113 {
1114 st_temp->reduce_voice_threshold = -1;
1115 st_temp->auto_reduce_polyphony = 1;
1116 }
1117 else
1118 {
1119 st_temp->reduce_voice_threshold = 0;
1120 st_temp->auto_reduce_polyphony = 0;
1121 }
1122
1123 st_temp->default_tonebank = GetDlgItemInt(hwnd,IDC_EDIT_DEFAULT_TONEBANK,NULL,FALSE);
1124 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_GETCHECK,0,0)){
1125 st_temp->special_tonebank = GetDlgItemInt(hwnd,IDC_EDIT_SPECIAL_TONEBANK,NULL,TRUE);
1126 } else {
1127 st_temp->special_tonebank = -1;
1128 }
1129 if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_GS,BM_GETCHECK,0,0)){
1130 st_temp->opt_default_mid = 0x41;
1131 } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_XG,BM_GETCHECK,0,0)){
1132 st_temp->opt_default_mid = 0x43;
1133 } else
1134 st_temp->opt_default_mid = 0x7e;
1135
1136 SettingCtlFlag(st_temp, 't',
1137 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_CTL_TRACE_PLAYING,i));
1138
1139 /* remove 'v' and 'q' from st_temp->opt_ctl */
1140 while(strchr(st_temp->opt_ctl + 1, 'v'))
1141 SettingCtlFlag(st_temp, 'v', 0);
1142 while(strchr(st_temp->opt_ctl + 1, 'q'))
1143 SettingCtlFlag(st_temp, 'q', 0);
1144
1145 /* append 'v' or 'q' */
1146 p = st_temp->opt_ctl + strlen(st_temp->opt_ctl);
1147 i = GetDlgItemInt(hwnd,IDC_EDIT_CTL_VEBOSITY,NULL,TRUE);
1148 while(i > 1) { *p++ = 'v'; i--; }
1149 while(i < 1) { *p++ = 'q'; i++; }
1150
1151 st_temp->control_ratio = GetDlgItemInt(hwnd,IDC_EDIT_CONTROL_RATIO,NULL,FALSE);
1152 st_temp->opt_drum_power = GetDlgItemInt(hwnd,IDC_EDIT_DRUM_POWER,NULL,FALSE);
1153
1154 DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AMP_COMPENSATION,st_temp->opt_amp_compensation);
1155
1156 DLG_CHECKBUTTON_TO_FLAG(hwnd,
1157 IDC_CHECKBOX_PURE_INTONATION, st_temp->opt_pure_intonation);
1158 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_PURE_INTONATION,
1159 BM_GETCHECK, 0, 0) && SendDlgItemMessage(hwnd,
1160 IDC_CHECKBOX_INIT_KEYSIG, BM_GETCHECK, 0, 0))
1161 st_temp->opt_init_keysig = SendDlgItemMessage(hwnd,
1162 IDC_COMBO_INIT_KEYSIG, CB_GETCURSEL,
1163 (WPARAM) 0, (LPARAM) 0) + ((SendDlgItemMessage(hwnd,
1164 IDC_CHECKBOX_INIT_MI, BM_GETCHECK,
1165 0, 0)) ? 16 : 0) - 7;
1166 else
1167 st_temp->opt_init_keysig = 8;
1168 st_temp->key_adjust = GetDlgItemInt(hwnd,
1169 IDC_EDIT_KEY_ADJUST, NULL, TRUE);
1170 if (SendDlgItemMessage(hwnd,
1171 IDC_CHECKBOX_FORCE_KEYSIG, BM_GETCHECK, 0, 0))
1172 st_temp->opt_force_keysig = SendDlgItemMessage(hwnd,
1173 IDC_COMBO_FORCE_KEYSIG, CB_GETCURSEL,
1174 (WPARAM) 0, (LPARAM) 0) - 7;
1175 else
1176 st_temp->opt_force_keysig = 8;
1177
1178 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
1179 }
1180 break;
1181 case WM_SIZE:
1182 return FALSE;
1183 case WM_CLOSE:
1184 break;
1185 default:
1186 break;
1187 }
1188 return FALSE;
1189 }
1190
1191 // IDC_COMBO_SAMPLE_RATE
1192 #define cb_num_IDC_COMBO_SAMPLE_RATE 10
1193 static char *cb_info_IDC_COMBO_SAMPLE_RATE[] = {
1194 "4000",
1195 "8000",
1196 "11025",
1197 "16000",
1198 "22050",
1199 "24000",
1200 "32000",
1201 "40000",
1202 "44100",
1203 "48000",
1204 };
1205
1206 // IDC_COMBO_BANDWIDTH
1207 #define cb_num_IDC_COMBO_BANDWIDTH 3
1208 enum {
1209 BANDWIDTH_8BIT = 0,
1210 BANDWIDTH_16BIT = 1,
1211 BANDWIDTH_24BIT = 2,
1212 };
1213 static char *cb_info_IDC_COMBO_BANDWIDTH_en[] = {
1214 "8-bit",
1215 "16-bit",
1216 "24-bit",
1217 };
1218 static char *cb_info_IDC_COMBO_BANDWIDTH_jp[] = {
1219 "8�r�b�g",
1220 "16�r�b�g",
1221 "24�r�b�g",
1222 };
1223 static char **cb_info_IDC_COMBO_BANDWIDTH;
1224
1225 // IDC_COMBO_OUTPUT_MODE
1226 static char *cb_info_IDC_COMBO_OUTPUT_MODE_jp[]= {
1227 "�ȉ��̃t�@�C���ɏo��",(char *)0,
1228 #if defined(__CYGWIN32__) || defined(__MINGW32__)
1229 // "�t�@�C�����������Ō��肵�A�\\�[�X�Ɠ����t�H���_�ɏo��",(char *)1,
1230 #else
1231 "�t�@�C�����������Ō��肵�A�\�[�X�Ɠ����t�H���_�ɏo��",(char *)1,
1232 #endif
1233
1234 "�t�@�C�����������Ō��肵�A�ȉ��̃t�H���_�ɏo��",(char *)2,
1235 "�t�@�C�����������Ō��肵�A�ȉ��̃t�H���_�ɏo��(�t�H���_���t��)",(char *)3,
1236 NULL
1237 };
1238 static char *cb_info_IDC_COMBO_OUTPUT_MODE_en[]= {
1239 "next output file",(char *)0,
1240 "auto filename",(char *)1,
1241 "auto filename and output in next dir",(char *)2,
1242 "auto filename and output in next dir (with folder name)",(char *)3,
1243 NULL
1244 };
1245 static char **cb_info_IDC_COMBO_OUTPUT_MODE;
1246
1247 static BOOL APIENTRY
PrefTiMidity3DialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)1248 PrefTiMidity3DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
1249 {
1250 static int initflag = 1;
1251 switch (uMess){
1252 case WM_INITDIALOG:
1253 {
1254 int i;
1255 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_RESETCONTENT,(WPARAM)0,(LPARAM)0);
1256 for(i=0;play_mode_list[i]!=0;i++){
1257 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)play_mode_list[i]->id_name);
1258 }
1259 if (PlayerLanguage == LANGUAGE_JAPANESE)
1260 cb_info_IDC_COMBO_OUTPUT_MODE = cb_info_IDC_COMBO_OUTPUT_MODE_jp;
1261 else
1262 cb_info_IDC_COMBO_OUTPUT_MODE = cb_info_IDC_COMBO_OUTPUT_MODE_en;
1263 for(i=0;cb_info_IDC_COMBO_OUTPUT_MODE[i];i+=2){
1264 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_OUTPUT_MODE[i]);
1265 }
1266 {
1267 int cb_num;
1268 for(cb_num=0;(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num];cb_num+=2){
1269 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_SETCURSEL,(WPARAM)0,(LPARAM)0);
1270 if(st_temp->auto_output_mode==(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num+1]){
1271 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0);
1272 break;
1273 }
1274 }
1275 }
1276 }
1277 {
1278 char *opt;
1279 int num = 0;
1280 int i;
1281 for(i=0;play_mode_list[i]!=0;i++){
1282 if(st_temp->opt_playmode[0]==play_mode_list[i]->id_character){
1283 num = i;
1284 break;
1285 }
1286 }
1287 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_SETCURSEL,(WPARAM)num,(LPARAM)0);
1288 if(st_temp->auto_output_mode==0){
1289 if(st_temp->OutputName[0]=='\0')
1290 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT("output.wav"));
1291 else
1292 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT(st_temp->OutputName));
1293 } else
1294 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName);
1295
1296 opt = st_temp->opt_playmode + 1;
1297 if(strchr(opt, 'U')){
1298 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,1,0);
1299 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1300 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0);
1301 } else if(strchr(opt, 'A')){
1302 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1303 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,1,0);
1304 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0);
1305 } else {
1306 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1307 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1308 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1309 }
1310 // BANDWIDTH
1311 if (PlayerLanguage == LANGUAGE_JAPANESE)
1312 cb_info_IDC_COMBO_BANDWIDTH = cb_info_IDC_COMBO_BANDWIDTH_jp;
1313 else
1314 cb_info_IDC_COMBO_BANDWIDTH = cb_info_IDC_COMBO_BANDWIDTH_en;
1315 for (i = 0; i < cb_num_IDC_COMBO_BANDWIDTH; i++)
1316 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH,
1317 CB_INSERTSTRING, (WPARAM) -1,
1318 (LPARAM) cb_info_IDC_COMBO_BANDWIDTH[i]);
1319 if (strchr(opt, '2')) { // 24-bit
1320 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_SETCURSEL,
1321 (WPARAM) BANDWIDTH_24BIT, (LPARAM) 0);
1322 } else if (strchr(opt, '1')) { // 16-bit
1323 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_SETCURSEL,
1324 (WPARAM) BANDWIDTH_16BIT, (LPARAM) 0);
1325 } else { // 8-bit
1326 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_SETCURSEL,
1327 (WPARAM) BANDWIDTH_8BIT, (LPARAM) 0);
1328 }
1329 if(strchr(opt, 's')){
1330 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0);
1331 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0);
1332 } else {
1333 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0);
1334 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0);
1335 }
1336 if(strchr(opt, 'x')){
1337 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,1,0);
1338 } else {
1339 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0);
1340 }
1341 if(strchr(opt, 'M')){
1342 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0);
1343 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0);
1344 } else {
1345 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0);
1346 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0);
1347 }
1348 // SAMPLE_RATE
1349 for (i = 0; i < cb_num_IDC_COMBO_SAMPLE_RATE; i++)
1350 SendDlgItemMessage(hwnd, IDC_COMBO_SAMPLE_RATE,
1351 CB_INSERTSTRING, (WPARAM) -1,
1352 (LPARAM) cb_info_IDC_COMBO_SAMPLE_RATE[i]);
1353 SetDlgItemInt(hwnd, IDC_COMBO_SAMPLE_RATE, st_temp->output_rate, FALSE);
1354 }
1355 initflag = 0;
1356 break;
1357 case WM_COMMAND:
1358 switch (LOWORD(wParam)) {
1359 case IDCLOSE:
1360 break;
1361 case IDC_BUTTON_OUTPUT_FILE:
1362 {
1363 char filename[MAXPATH+1];
1364 filename[0] = '\0';
1365 SendDlgItemMessage(hwnd,IDC_EDIT_OUTPUT_FILE,WM_GETTEXT,
1366 (WPARAM)MAX_PATH,(LPARAM)TEXT(filename));
1367 if(!DlgOpenOutputFile(filename,hwnd))
1368 if(filename[0]!='\0')
1369 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT(filename));
1370 }
1371 break;
1372 case IDC_BUTTON_OUTPUT_FILE_DEL:
1373 {
1374 char filename[MAXPATH+1];
1375 DWORD res;
1376 if(st_temp->auto_output_mode>0){
1377 break;
1378 }
1379 GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,filename,(WPARAM)MAX_PATH);
1380 res = GetFileAttributes(filename);
1381 if(res!=0xFFFFFFFF && !(res & FILE_ATTRIBUTE_DIRECTORY)){
1382 if(DeleteFile(filename)!=TRUE){
1383 char buffer[MAXPATH + 1024];
1384 sprintf(buffer,"Can't delete file %s !",filename);
1385 MessageBox(NULL,buffer,"Error!", MB_OK);
1386 } else {
1387 char buffer[MAXPATH + 1024];
1388 sprintf(buffer,"Delete file %s !",filename);
1389 MessageBox(NULL,buffer,"Delete!", MB_OK);
1390 }
1391 }
1392 }
1393 break;
1394 case IDC_CHECKBOX_ULAW:
1395 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_GETCHECK,0,0)){
1396 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,1,0);
1397 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1398 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0);
1399 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_SETCURSEL,
1400 (WPARAM) BANDWIDTH_8BIT, (LPARAM) 0);
1401 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0);
1402 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0);
1403 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0);
1404 } else {
1405 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1406 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1407 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1408 }
1409 break;
1410 case IDC_CHECKBOX_ALAW:
1411 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_GETCHECK,0,0)){
1412 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1413 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,1,0);
1414 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0);
1415 SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_SETCURSEL,
1416 (WPARAM) BANDWIDTH_8BIT, (LPARAM) 0);
1417 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0);
1418 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0);
1419 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0);
1420 } else {
1421 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1422 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1423 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1424 }
1425 break;
1426 case IDC_CHECKBOX_LINEAR:
1427 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_GETCHECK,0,0)){
1428 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1429 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1430 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1431 } else {
1432 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1433 }
1434 break;
1435 case IDC_CHECKBOX_SIGNED:
1436 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_GETCHECK,0,0)){
1437 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0);
1438 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0);
1439 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1440 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1441 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1442 } else {
1443 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0);
1444 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0);
1445 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1446 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1447 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1448 }
1449 break;
1450 case IDC_CHECKBOX_UNSIGNED:
1451 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_GETCHECK,0,0)){
1452 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0);
1453 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0);
1454 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1455 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1456 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1457 } else {
1458 SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0);
1459 SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0);
1460 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1461 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1462 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1463 }
1464 break;
1465 case IDC_CHECKBOX_BYTESWAP:
1466 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_GETCHECK,0,0)){
1467 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,1,0);
1468 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1469 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1470 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1471 } else {
1472 SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0);
1473 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0);
1474 SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0);
1475 SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0);
1476 }
1477 break;
1478 case IDC_RADIO_STEREO:
1479 if(SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_GETCHECK,0,0)){
1480 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0);
1481 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0);
1482 } else {
1483 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0);
1484 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0);
1485 }
1486 break;
1487 case IDC_RADIO_MONO:
1488 if(SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_GETCHECK,0,0)){
1489 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0);
1490 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0);
1491 } else {
1492 SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0);
1493 SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0);
1494 }
1495 break;
1496 case IDC_BUTTON_OUTPUT_OPTIONS:
1497 {
1498 int num;
1499 num = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);
1500 if(num>=0){
1501 st_temp->opt_playmode[0]=play_mode_list[num]->id_character;
1502 } else {
1503 st_temp->opt_playmode[0]='d';
1504 }
1505 #ifdef AU_VORBIS
1506 if(st_temp->opt_playmode[0]=='v'){
1507 vorbisConfigDialog();
1508 }
1509 #endif
1510 #ifdef AU_GOGO
1511 if(st_temp->opt_playmode[0]=='g'){
1512 gogoConfigDialog();
1513 }
1514 #endif
1515 #ifdef AU_PORTAUDIO_DLL
1516 if(st_temp->opt_playmode[0]=='o'){
1517 asioConfigDialog();
1518 }
1519 #endif
1520 }
1521 break;
1522 case IDC_COMBO_OUTPUT_MODE:
1523 {
1524 int cb_num1, cb_num2;
1525 cb_num1 = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_MODE,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);
1526 if (PlayerLanguage == LANGUAGE_JAPANESE)
1527 cb_info_IDC_COMBO_OUTPUT_MODE = cb_info_IDC_COMBO_OUTPUT_MODE_jp;
1528 else
1529 cb_info_IDC_COMBO_OUTPUT_MODE = cb_info_IDC_COMBO_OUTPUT_MODE_en;
1530 for(cb_num2=0;(int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num2];cb_num2+=2){
1531 if(cb_num1*2==cb_num2){
1532 st_temp->auto_output_mode = (int)cb_info_IDC_COMBO_OUTPUT_MODE[cb_num2+1];
1533 break;
1534 }
1535 }
1536 if (PlayerLanguage == LANGUAGE_JAPANESE) {
1537 if(st_temp->auto_output_mode>0){
1538 SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"�o�͐�");
1539 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName);
1540 } else {
1541 SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"�o�̓t�@�C��");
1542 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName);
1543 }
1544 } else {
1545 if(st_temp->auto_output_mode>0){
1546 SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"Output File");
1547 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName);
1548 } else {
1549 SendDlgItemMessage(hwnd,IDC_BUTTON_OUTPUT_FILE,WM_SETTEXT,0,(LPARAM)"Output File");
1550 SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName);
1551 }
1552 }
1553 }
1554 break;
1555 default:
1556 break;
1557 }
1558 PrefWndSetOK = 1;
1559 break;
1560 case WM_MYSAVE:
1561 if ( initflag ) break;
1562 {
1563 int i = 0;
1564 int num;
1565 num = SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT,CB_GETCURSEL,(WPARAM)0,(LPARAM)0);
1566 if(num>=0){
1567 st_temp->opt_playmode[i]=play_mode_list[num]->id_character;
1568 } else {
1569 st_temp->opt_playmode[i]='d';
1570 }
1571 i++;
1572 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_GETCHECK,0,0))
1573 st_temp->opt_playmode[i++] = 'U';
1574 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_GETCHECK,0,0))
1575 st_temp->opt_playmode[i++] = 'A';
1576 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_GETCHECK,0,0))
1577 st_temp->opt_playmode[i++] = 'l';
1578 num = SendDlgItemMessage(hwnd, IDC_COMBO_BANDWIDTH, CB_GETCURSEL, (WPARAM)0, (LPARAM)0);
1579 if(num == BANDWIDTH_8BIT)
1580 st_temp->opt_playmode[i++] = '8';
1581 else if(num == BANDWIDTH_24BIT)
1582 st_temp->opt_playmode[i++] = '2';
1583 else // 16-bit
1584 st_temp->opt_playmode[i++] = '1';
1585 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_GETCHECK,0,0))
1586 st_temp->opt_playmode[i++] = 's';
1587 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_GETCHECK,0,0))
1588 st_temp->opt_playmode[i++] = 'u';
1589 if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_GETCHECK,0,0))
1590 st_temp->opt_playmode[i++] = 'x';
1591 if(SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_GETCHECK,0,0))
1592 st_temp->opt_playmode[i++] = 'S';
1593 if(SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_GETCHECK,0,0))
1594 st_temp->opt_playmode[i++] = 'M';
1595 st_temp->opt_playmode[i] = '\0';
1596 st_temp->output_rate = GetDlgItemInt(hwnd, IDC_COMBO_SAMPLE_RATE, NULL, FALSE);
1597 if(st_temp->auto_output_mode==0)
1598 GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName,(WPARAM)sizeof(st_temp->OutputName));
1599 else
1600 GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputDirName,(WPARAM)sizeof(st_temp->OutputDirName));
1601
1602 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
1603 }
1604 break;
1605
1606 break;
1607 case WM_SIZE:
1608 return FALSE;
1609 case WM_CLOSE:
1610 break;
1611 default:
1612 break;
1613 }
1614 return FALSE;
1615 }
1616
1617 #define PREF_CHANNEL_MODE_DRUM_CHANNEL 1
1618 #define PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK 2
1619 #define PREF_CHANNEL_MODE_QUIET_CHANNEL 3
1620 static BOOL APIENTRY
PrefTiMidity4DialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)1621 PrefTiMidity4DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
1622 {
1623 static int initflag = 1;
1624 static int pref_channel_mode;
1625 switch (uMess){
1626 case WM_INITDIALOG:
1627 pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL;
1628 SendMessage(hwnd,WM_MYRESTORE,(WPARAM)0,(LPARAM)0);
1629 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_EQUAL,
1630 st_temp->temper_type_mute & 1 << 0);
1631 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_PYTHA,
1632 st_temp->temper_type_mute & 1 << 1);
1633 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_MEANTONE,
1634 st_temp->temper_type_mute & 1 << 2);
1635 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_PUREINT,
1636 st_temp->temper_type_mute & 1 << 3);
1637 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_USER0,
1638 st_temp->temper_type_mute & 1 << 4);
1639 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_USER1,
1640 st_temp->temper_type_mute & 1 << 5);
1641 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_USER2,
1642 st_temp->temper_type_mute & 1 << 6);
1643 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TEMPER_USER3,
1644 st_temp->temper_type_mute & 1 << 7);
1645 initflag = 0;
1646 break;
1647 case WM_MYRESTORE:
1648 {
1649 ChannelBitMask channelbitmask;
1650 switch(pref_channel_mode){
1651 case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK:
1652 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0);
1653 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,1,0);
1654 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0);
1655 channelbitmask = st_temp->default_drumchannel_mask;
1656 break;
1657 case PREF_CHANNEL_MODE_QUIET_CHANNEL:
1658 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0);
1659 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0);
1660 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,1,0);
1661 channelbitmask = st_temp->quietchannels;
1662 break;
1663 default:
1664 case PREF_CHANNEL_MODE_DRUM_CHANNEL:
1665 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,1,0);
1666 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0);
1667 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0);
1668 channelbitmask = st_temp->default_drumchannels;
1669 break;
1670 }
1671 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH01,IS_SET_CHANNELMASK(channelbitmask,0));
1672 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH02,IS_SET_CHANNELMASK(channelbitmask,1));
1673 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH03,IS_SET_CHANNELMASK(channelbitmask,2));
1674 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH04,IS_SET_CHANNELMASK(channelbitmask,3));
1675 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH05,IS_SET_CHANNELMASK(channelbitmask,4));
1676 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH06,IS_SET_CHANNELMASK(channelbitmask,5));
1677 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH07,IS_SET_CHANNELMASK(channelbitmask,6));
1678 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH08,IS_SET_CHANNELMASK(channelbitmask,7));
1679 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH09,IS_SET_CHANNELMASK(channelbitmask,8));
1680 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH10,IS_SET_CHANNELMASK(channelbitmask,9));
1681 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH11,IS_SET_CHANNELMASK(channelbitmask,10));
1682 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH12,IS_SET_CHANNELMASK(channelbitmask,11));
1683 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH13,IS_SET_CHANNELMASK(channelbitmask,12));
1684 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH14,IS_SET_CHANNELMASK(channelbitmask,13));
1685 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH15,IS_SET_CHANNELMASK(channelbitmask,14));
1686 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH16,IS_SET_CHANNELMASK(channelbitmask,15));
1687 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH17,IS_SET_CHANNELMASK(channelbitmask,16));
1688 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH18,IS_SET_CHANNELMASK(channelbitmask,17));
1689 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH19,IS_SET_CHANNELMASK(channelbitmask,18));
1690 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH20,IS_SET_CHANNELMASK(channelbitmask,19));
1691 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH21,IS_SET_CHANNELMASK(channelbitmask,20));
1692 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH22,IS_SET_CHANNELMASK(channelbitmask,21));
1693 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH23,IS_SET_CHANNELMASK(channelbitmask,22));
1694 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH24,IS_SET_CHANNELMASK(channelbitmask,23));
1695 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH25,IS_SET_CHANNELMASK(channelbitmask,24));
1696 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH26,IS_SET_CHANNELMASK(channelbitmask,25));
1697 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH27,IS_SET_CHANNELMASK(channelbitmask,26));
1698 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH28,IS_SET_CHANNELMASK(channelbitmask,27));
1699 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH29,IS_SET_CHANNELMASK(channelbitmask,28));
1700 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH30,IS_SET_CHANNELMASK(channelbitmask,29));
1701 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH31,IS_SET_CHANNELMASK(channelbitmask,30));
1702 DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH32,IS_SET_CHANNELMASK(channelbitmask,31));
1703 }
1704 break;
1705 case WM_COMMAND:
1706 switch (LOWORD(wParam)) {
1707 case IDCLOSE:
1708 break;
1709 case IDC_CHECKBOX_DRUM_CHANNEL:
1710 {
1711 SendMessage(hwnd,WM_MYSAVE,(WPARAM)0,(LPARAM)0);
1712 pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL;
1713 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,1,0);
1714 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0);
1715 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0);
1716 SendMessage(hwnd,WM_MYRESTORE,(WPARAM)0,(LPARAM)0);
1717 }
1718 break;
1719 case IDC_CHECKBOX_DRUM_CHANNEL_MASK:
1720 {
1721 SendMessage(hwnd,WM_MYSAVE,(WPARAM)0,(LPARAM)0);
1722 pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK;
1723 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0);
1724 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,1,0);
1725 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0);
1726 SendMessage(hwnd,WM_MYRESTORE,(WPARAM)0,(LPARAM)0);
1727 }
1728 break;
1729 case IDC_CHECKBOX_QUIET_CHANNEL:
1730 {
1731 SendMessage(hwnd,WM_MYSAVE,(WPARAM)0,(LPARAM)0);
1732 pref_channel_mode = PREF_CHANNEL_MODE_QUIET_CHANNEL;
1733 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0);
1734 SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0);
1735 SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,1,0);
1736 SendMessage(hwnd,WM_MYRESTORE,(WPARAM)0,(LPARAM)0);
1737 }
1738 break;
1739 case IDC_BUTTON_REVERSE:
1740 {
1741 SendMessage(hwnd,WM_MYSAVE,(WPARAM)0,(LPARAM)0);
1742 switch(pref_channel_mode){
1743 case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK:
1744 REVERSE_CHANNELMASK(st_temp->default_drumchannel_mask);
1745 break;
1746 case PREF_CHANNEL_MODE_QUIET_CHANNEL:
1747 REVERSE_CHANNELMASK(st_temp->quietchannels);
1748 break;
1749 default:
1750 case PREF_CHANNEL_MODE_DRUM_CHANNEL:
1751 REVERSE_CHANNELMASK(st_temp->default_drumchannels);
1752 break;
1753 }
1754 SendMessage(hwnd,WM_MYRESTORE,(WPARAM)0,(LPARAM)0);
1755 }
1756 break;
1757 default:
1758 break;
1759 }
1760 PrefWndSetOK = 1;
1761 break;
1762 case WM_MYSAVE:
1763 if ( initflag ) break;
1764 {
1765 ChannelBitMask channelbitmask;
1766 int tmp;
1767 #define PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,ctlid,channelbitmask,ch,tmp) \
1768 { if(DLG_CHECKBUTTON_TO_FLAG((hwnd),(ctlid),(tmp))) SET_CHANNELMASK((channelbitmask),(ch)); \
1769 else UNSET_CHANNELMASK((channelbitmask),(ch)); }
1770 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH01,channelbitmask,0,tmp);
1771 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH02,channelbitmask,1,tmp);
1772 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH03,channelbitmask,2,tmp);
1773 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH04,channelbitmask,3,tmp);
1774 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH05,channelbitmask,4,tmp);
1775 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH06,channelbitmask,5,tmp);
1776 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH07,channelbitmask,6,tmp);
1777 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH08,channelbitmask,7,tmp);
1778 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH09,channelbitmask,8,tmp);
1779 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH10,channelbitmask,9,tmp);
1780 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH11,channelbitmask,10,tmp);
1781 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH12,channelbitmask,11,tmp);
1782 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH13,channelbitmask,12,tmp);
1783 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH14,channelbitmask,13,tmp);
1784 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH15,channelbitmask,14,tmp);
1785 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH16,channelbitmask,15,tmp);
1786 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH17,channelbitmask,16,tmp);
1787 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH18,channelbitmask,17,tmp);
1788 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH19,channelbitmask,18,tmp);
1789 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH20,channelbitmask,19,tmp);
1790 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH21,channelbitmask,20,tmp);
1791 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH22,channelbitmask,21,tmp);
1792 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH23,channelbitmask,22,tmp);
1793 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH24,channelbitmask,23,tmp);
1794 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH25,channelbitmask,24,tmp);
1795 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH26,channelbitmask,25,tmp);
1796 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH27,channelbitmask,26,tmp);
1797 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH28,channelbitmask,27,tmp);
1798 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH29,channelbitmask,28,tmp);
1799 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH30,channelbitmask,29,tmp);
1800 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH31,channelbitmask,30,tmp);
1801 PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH32,channelbitmask,31,tmp);
1802 switch(pref_channel_mode){
1803 case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK:
1804 st_temp->default_drumchannel_mask = channelbitmask;
1805 break;
1806 case PREF_CHANNEL_MODE_QUIET_CHANNEL:
1807 st_temp->quietchannels = channelbitmask;
1808 break;
1809 default:
1810 case PREF_CHANNEL_MODE_DRUM_CHANNEL:
1811 st_temp->default_drumchannels = channelbitmask;
1812 break;
1813 }
1814 }
1815 st_temp->temper_type_mute = 0;
1816 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_EQUAL,
1817 BM_GETCHECK, 0, 0))
1818 st_temp->temper_type_mute |= 1 << 0;
1819 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_PYTHA,
1820 BM_GETCHECK, 0, 0))
1821 st_temp->temper_type_mute |= 1 << 1;
1822 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_MEANTONE,
1823 BM_GETCHECK, 0, 0))
1824 st_temp->temper_type_mute |= 1 << 2;
1825 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_PUREINT,
1826 BM_GETCHECK, 0, 0))
1827 st_temp->temper_type_mute |= 1 << 3;
1828 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_USER0,
1829 BM_GETCHECK, 0, 0))
1830 st_temp->temper_type_mute |= 1 << 4;
1831 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_USER1,
1832 BM_GETCHECK, 0, 0))
1833 st_temp->temper_type_mute |= 1 << 5;
1834 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_USER2,
1835 BM_GETCHECK, 0, 0))
1836 st_temp->temper_type_mute |= 1 << 6;
1837 if (SendDlgItemMessage(hwnd, IDC_CHECKBOX_TEMPER_USER3,
1838 BM_GETCHECK, 0, 0))
1839 st_temp->temper_type_mute |= 1 << 7;
1840 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
1841 break;
1842 case WM_SIZE:
1843 return FALSE;
1844 case WM_CLOSE:
1845 break;
1846 default:
1847 break;
1848 }
1849 return FALSE;
1850 }
1851
1852 #ifdef IA_W32G_SYN
1853 extern int syn_ThreadPriority;
1854 static char **MidiINDrivers = NULL;
1855 // 0 MIDI Mapper -1
1856 // 1 MIDI IN Driver 0
1857 // 2 MIDI IN Driver 1
GetMidiINDrivers(void)1858 static char **GetMidiINDrivers ( void )
1859 {
1860 int i;
1861 int max = midiInGetNumDevs ();
1862 if ( MidiINDrivers != NULL ) {
1863 for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
1864 free ( MidiINDrivers[i] );
1865 }
1866 free ( MidiINDrivers );
1867 MidiINDrivers = NULL;
1868 }
1869 MidiINDrivers = ( char ** ) malloc ( sizeof ( char * ) * ( max + 2 ) );
1870 if ( MidiINDrivers == NULL ) return MidiINDrivers;
1871 MidiINDrivers[0] = strdup ( "MIDI Mapper" );
1872 for ( i = 1; i <= max; i ++ ) {
1873 MIDIINCAPS mic;
1874 if ( midiInGetDevCaps ( i - 1, &mic, sizeof ( MIDIINCAPS ) ) == 0 ) {
1875 MidiINDrivers[i] = strdup ( mic.szPname );
1876 if ( MidiINDrivers[i] == NULL )
1877 break;
1878 } else {
1879 MidiINDrivers[i] = NULL;
1880 break;
1881 }
1882 }
1883 MidiINDrivers[max+1] = NULL;
1884 return MidiINDrivers;
1885 }
1886
1887 static BOOL APIENTRY
PrefSyn1DialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)1888 PrefSyn1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
1889 {
1890 int i;
1891 static int initflag = 1;
1892 switch (uMess){
1893 case WM_INITDIALOG:
1894 for ( i = 0; i <= MAX_PORT; i ++ ) {
1895 char buff[32];
1896 sprintf ( buff, "%d", i );
1897 SendDlgItemMessage(hwnd, IDC_COMBO_PORT_NUM,
1898 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) buff );
1899 }
1900 if ( MidiINDrivers != NULL ) {
1901 for ( i = 0; MidiINDrivers[i] != NULL; i ++ ) {
1902 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0,
1903 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
1904 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1,
1905 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
1906 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2,
1907 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
1908 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3,
1909 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) MidiINDrivers[i] );
1910 }
1911 }
1912 DLG_FLAG_TO_CHECKBUTTON(hwnd, IDC_CHECK_SYN_AUTOSTART, st_temp->syn_AutoStart);
1913 if (PlayerLanguage == LANGUAGE_JAPANESE) {
1914 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1915 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "�Ⴂ" );
1916 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1917 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "�����Ⴂ" );
1918 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1919 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "����" );
1920 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1921 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "��������" );
1922 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1923 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "����" );
1924 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1925 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "���A���^�C��" );
1926
1927 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1928 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "�Ⴂ" );
1929 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1930 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "�����Ⴂ" );
1931 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1932 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "����" );
1933 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1934 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "��������" );
1935 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1936 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "����" );
1937 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1938 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "�^�C���N���e�B�J��" );
1939 } else {
1940 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1941 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Lowest" );
1942 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1943 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Below normal" );
1944 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1945 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Normal" );
1946 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1947 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Above nomal" );
1948 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1949 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Highest" );
1950 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1951 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Realtime" );
1952
1953 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1954 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Lowest" );
1955 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1956 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Below normal" );
1957 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1958 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Normal" );
1959 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1960 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Above nomal" );
1961 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1962 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Highest" );
1963 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
1964 CB_INSERTSTRING, (WPARAM) -1, (LPARAM) "Time critical" );
1965 }
1966 SendDlgItemMessage(hwnd, IDC_COMBO_PORT_NUM,
1967 CB_SETCURSEL, (WPARAM) st_temp->SynPortNum, (LPARAM) 0 );
1968 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT0,
1969 CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[0], (LPARAM) 0 );
1970 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT1,
1971 CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[1], (LPARAM) 0 );
1972 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT2,
1973 CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[2], (LPARAM) 0 );
1974 SendDlgItemMessage(hwnd, IDC_COMBO_IDPORT3,
1975 CB_SETCURSEL, (WPARAM) st_temp->SynIDPort[3], (LPARAM) 0 );
1976 {
1977 int index;
1978
1979 // Select process priority
1980 if ( st_temp->processPriority == IDLE_PRIORITY_CLASS )
1981 index = 0;
1982 else if ( st_temp->processPriority == BELOW_NORMAL_PRIORITY_CLASS )
1983 index = 1;
1984 else if ( st_temp->processPriority == NORMAL_PRIORITY_CLASS )
1985 index = 2;
1986 else if ( st_temp->processPriority == ABOVE_NORMAL_PRIORITY_CLASS )
1987 index = 3;
1988 else if ( st_temp->processPriority == HIGH_PRIORITY_CLASS )
1989 index = 4;
1990 else if ( st_temp->processPriority == REALTIME_PRIORITY_CLASS )
1991 index = 5;
1992 SendDlgItemMessage(hwnd, IDC_COMBO_PROCESS_PRIORITY,
1993 CB_SETCURSEL, (WPARAM) index, (LPARAM) 0 );
1994
1995 // Select thread priority
1996 if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_LOWEST )
1997 index = 0;
1998 else if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_BELOW_NORMAL )
1999 index = 1;
2000 else if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_NORMAL )
2001 index = 2;
2002 else if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_ABOVE_NORMAL )
2003 index = 3;
2004 else if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_HIGHEST )
2005 index = 4;
2006 else if ( st_temp->syn_ThreadPriority == THREAD_PRIORITY_TIME_CRITICAL )
2007 index = 5;
2008 SendDlgItemMessage(hwnd, IDC_COMBO_SYN_THREAD_PRIORITY,
2009 CB_SETCURSEL, (WPARAM) index, (LPARAM) 0 );
2010 }
2011 SetDlgItemInt(hwnd,IDC_EDIT_SYN_SH_TIME,st_temp->SynShTime,FALSE);
2012 initflag = 0;
2013 break;
2014 case WM_COMMAND:
2015 switch (LOWORD(wParam)) {
2016 case IDC_RADIOBUTTON_JAPANESE:
2017 case IDC_RADIOBUTTON_ENGLISH:
2018 break;
2019 default:
2020 break;
2021 }
2022 PrefWndSetOK = 1;
2023 break;
2024
2025 case WM_MYSAVE:
2026 if ( initflag ) break;
2027 {
2028 int res;
2029 res = SendDlgItemMessage ( hwnd, IDC_COMBO_PORT_NUM, CB_GETCURSEL, 0, 0 );
2030 if ( res != CB_ERR ) st_temp->SynPortNum = res;
2031 res = SendDlgItemMessage ( hwnd, IDC_COMBO_IDPORT0, CB_GETCURSEL, 0, 0 );
2032 if ( res != CB_ERR ) st_temp->SynIDPort[0] = res;
2033 res = SendDlgItemMessage ( hwnd, IDC_COMBO_IDPORT1, CB_GETCURSEL, 0, 0 );
2034 if ( res != CB_ERR ) st_temp->SynIDPort[1] = res;
2035 res = SendDlgItemMessage ( hwnd, IDC_COMBO_IDPORT2, CB_GETCURSEL, 0, 0 );
2036 if ( res != CB_ERR ) st_temp->SynIDPort[2] = res;
2037 res = SendDlgItemMessage ( hwnd, IDC_COMBO_IDPORT3, CB_GETCURSEL, 0, 0 );
2038 if ( res != CB_ERR ) st_temp->SynIDPort[3] = res;
2039 SetWindowLong(hwnd,DWL_MSGRESULT,FALSE);
2040 DLG_CHECKBUTTON_TO_FLAG(hwnd, IDC_CHECK_SYN_AUTOSTART, st_temp->syn_AutoStart);
2041 // Set process priority
2042 res = SendDlgItemMessage ( hwnd, IDC_COMBO_PROCESS_PRIORITY, CB_GETCURSEL, 0, 0 );
2043 if ( res != CB_ERR ) {
2044 switch ( res ) {
2045 case 0:
2046 st_temp->processPriority = IDLE_PRIORITY_CLASS;
2047 break;
2048 case 1:
2049 st_temp->processPriority = BELOW_NORMAL_PRIORITY_CLASS;
2050 break;
2051 default:
2052 case 2:
2053 st_temp->processPriority = NORMAL_PRIORITY_CLASS;
2054 break;
2055 case 3:
2056 st_temp->processPriority = ABOVE_NORMAL_PRIORITY_CLASS;
2057 break;
2058 case 4:
2059 st_temp->processPriority = HIGH_PRIORITY_CLASS;
2060 break;
2061 case 5:
2062 st_temp->processPriority = REALTIME_PRIORITY_CLASS;
2063 break;
2064 }
2065 }
2066
2067 // Set thread priority
2068 res = SendDlgItemMessage ( hwnd, IDC_COMBO_SYN_THREAD_PRIORITY, CB_GETCURSEL, 0, 0 );
2069 if ( res != CB_ERR ) {
2070 switch ( res ) {
2071 case 0:
2072 st_temp->syn_ThreadPriority = THREAD_PRIORITY_LOWEST;
2073 break;
2074 case 1:
2075 st_temp->syn_ThreadPriority = THREAD_PRIORITY_BELOW_NORMAL;
2076 break;
2077 default:
2078 case 2:
2079 st_temp->syn_ThreadPriority = THREAD_PRIORITY_NORMAL;
2080 break;
2081 case 3:
2082 st_temp->syn_ThreadPriority = THREAD_PRIORITY_ABOVE_NORMAL;
2083 break;
2084 case 4:
2085 st_temp->syn_ThreadPriority = THREAD_PRIORITY_HIGHEST;
2086 break;
2087 case 5:
2088 st_temp->syn_ThreadPriority = THREAD_PRIORITY_TIME_CRITICAL;
2089 break;
2090 }
2091 }
2092
2093 st_temp->SynShTime = GetDlgItemInt(hwnd,IDC_EDIT_SYN_SH_TIME,NULL,FALSE);
2094 if ( st_temp->SynShTime < 0 ) st_temp->SynShTime = 0;
2095 }
2096 break;
2097 case WM_SIZE:
2098 return FALSE;
2099 case WM_CLOSE:
2100 break;
2101 default:
2102 break;
2103 }
2104 return FALSE;
2105 }
2106 #endif
2107
ShowPrefWnd(void)2108 void ShowPrefWnd ( void )
2109 {
2110 if ( IsWindow ( (HWND)hPrefWnd ) )
2111 ShowWindow ( (HWND)hPrefWnd, SW_SHOW );
2112 }
HidePrefWnd(void)2113 void HidePrefWnd ( void )
2114 {
2115 if ( IsWindow ( (HWND)hPrefWnd ) )
2116 ShowWindow ( (HWND)hPrefWnd, SW_HIDE );
2117 }
IsVisiblePrefWnd(void)2118 BOOL IsVisiblePrefWnd ( void )
2119 {
2120 return IsWindowVisible ( (HWND)hPrefWnd );
2121 }
2122
DlgOpenConfigFile(char * Filename,HWND hwnd)2123 static int DlgOpenConfigFile(char *Filename, HWND hwnd)
2124 {
2125 OPENFILENAME ofn;
2126 char filename[MAXPATH + 256];
2127 char dir[MAXPATH + 256];
2128 int res;
2129
2130 strncpy(dir,ConfigFileOpenDir,MAXPATH);
2131 dir[MAXPATH-1] = '\0';
2132 strncpy(filename,Filename,MAXPATH);
2133 filename[MAXPATH-1] = '\0';
2134
2135 memset(&ofn, 0, sizeof(OPENFILENAME));
2136 ofn.lStructSize = sizeof(OPENFILENAME);
2137 ofn.hwndOwner = hwnd;
2138 ofn.hInstance = hInst ;
2139 ofn.lpstrFilter =
2140 "config file\0*.cfg;*.config\0"
2141 "all files\0*.*\0"
2142 "\0\0";
2143 ofn.lpstrCustomFilter = NULL;
2144 ofn.nMaxCustFilter = 0;
2145 ofn.nFilterIndex = 1 ;
2146 ofn.lpstrFile = filename;
2147 ofn.nMaxFile = 256;
2148 ofn.lpstrFileTitle = NULL;
2149 ofn.nMaxFileTitle = 0;
2150 if(dir[0] != '\0')
2151 ofn.lpstrInitialDir = dir;
2152 else
2153 ofn.lpstrInitialDir = 0;
2154 ofn.lpstrTitle = "Open Config File";
2155 ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_EXPLORER
2156 | OFN_READONLY | OFN_HIDEREADONLY;
2157 ofn.lpstrDefExt = 0;
2158 ofn.lCustData = 0;
2159 ofn.lpfnHook = 0;
2160 ofn.lpTemplateName= 0;
2161
2162 res = GetOpenFileName(&ofn);
2163 strncpy(ConfigFileOpenDir,dir,MAXPATH);
2164 ConfigFileOpenDir[MAXPATH-1] = '\0';
2165 if(res==TRUE){
2166 strncpy(Filename,filename,MAXPATH);
2167 Filename[MAXPATH-1] = '\0';
2168 return 0;
2169 }
2170 else {
2171 Filename[0] = '\0';
2172 return -1;
2173 }
2174 }
2175
DlgOpenOutputFile(char * Filename,HWND hwnd)2176 static int DlgOpenOutputFile(char *Filename, HWND hwnd)
2177 {
2178 OPENFILENAME ofn;
2179 char filename[MAXPATH + 256];
2180 char dir[MAXPATH + 256];
2181 int res;
2182 static char OutputFileOpenDir[MAXPATH+256];
2183 static int initflag = 1;
2184
2185 if(initflag){
2186 OutputFileOpenDir[0] = '\0';
2187 initflag = 0;
2188 }
2189 strncpy(dir,OutputFileOpenDir,MAXPATH);
2190 dir[MAXPATH-1] = '\0';
2191 strncpy(filename,Filename,MAXPATH);
2192 filename[MAXPATH-1] = '\0';
2193
2194 memset(&ofn, 0, sizeof(OPENFILENAME));
2195 ofn.lStructSize = sizeof(OPENFILENAME);
2196 ofn.hwndOwner = hwnd;
2197 ofn.hInstance = hInst ;
2198 ofn.lpstrFilter =
2199 "wave file\0*.wav;*.wave;*.aif;*.aiff;*.aifc;*.au;*.snd;*.audio\0"
2200 "all files\0*.*\0"
2201 "\0\0";
2202 ofn.lpstrCustomFilter = NULL;
2203 ofn.nMaxCustFilter = 0;
2204 ofn.nFilterIndex = 1 ;
2205 ofn.lpstrFile = filename;
2206 ofn.nMaxFile = 256;
2207 ofn.lpstrFileTitle = NULL;
2208 ofn.nMaxFileTitle = 0;
2209 if(dir[0] != '\0')
2210 ofn.lpstrInitialDir = dir;
2211 else
2212 ofn.lpstrInitialDir = 0;
2213 ofn.lpstrTitle = "Output File";
2214 ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY;
2215 ofn.lpstrDefExt = 0;
2216 ofn.lCustData = 0;
2217 ofn.lpfnHook = 0;
2218 ofn.lpTemplateName= 0;
2219
2220 res = GetSaveFileName(&ofn);
2221 strncpy(OutputFileOpenDir,dir,MAXPATH);
2222 OutputFileOpenDir[MAXPATH-1] = '\0';
2223 if(res==TRUE){
2224 strncpy(Filename,filename,MAXPATH);
2225 Filename[MAXPATH-1] = '\0';
2226 return 0;
2227 } else {
2228 Filename[0] = '\0';
2229 return -1;
2230 }
2231 }
2232
2233 volatile int w32g_interactive_id3_tag_set = 0;
w32g_gogo_id3_tag_dialog(void)2234 int w32g_gogo_id3_tag_dialog(void)
2235 {
2236 return 0;
2237 }
2238
2239
2240 #ifdef AU_GOGO
2241 ///////////////////////////////////////////////////////////////////////
2242 //
2243 // gogo ConfigDialog
2244 //
2245 ///////////////////////////////////////////////////////////////////////
2246
2247 // id �̃R���{�{�b�N�X�̏��̒�`
2248 #define CB_INFO_TYPE1_BEGIN(id) static int cb_info_ ## id [] = {
2249 #define CB_INFO_TYPE1_END };
2250 #define CB_INFO_TYPE2_BEGIN(id) static char * cb_info_ ## id [] = {
2251 #define CB_INFO_TYPE2_END };
2252
2253 // cb_info_type1_�h�c cb_info_type2_�h�c �Ƃ����ӂ��ɂȂ�B
2254
2255 // IDC_COMBO_OUTPUT_FORMAT
2256 CB_INFO_TYPE2_BEGIN(IDC_COMBO_OUTPUT_FORMAT)
2257 "MP3+TAG",(char *)MC_OUTPUT_NORMAL,
2258 "RIFF/WAVE",(char *)MC_OUTPUT_RIFF_WAVE,
2259 "RIFF/RMP",(char *)MC_OUTPUT_RIFF_RMP,
2260 NULL
2261 CB_INFO_TYPE2_END
2262
2263 // IDC_COMBO_MPEG1_AUDIO_BITRATE
2264 CB_INFO_TYPE1_BEGIN(IDC_COMBO_MPEG1_AUDIO_BITRATE)
2265 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1
2266 CB_INFO_TYPE1_END
2267
2268 // IDC_COMBO_MPEG2_AUDIO_BITRATE
2269 CB_INFO_TYPE1_BEGIN(IDC_COMBO_MPEG2_AUDIO_BITRATE)
2270 8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1
2271 CB_INFO_TYPE1_END
2272
2273 // IDC_COMBO_ENCODE_MODE
2274 CB_INFO_TYPE2_BEGIN(IDC_COMBO_ENCODE_MODE)
2275 "monoral",(char *)MC_MODE_MONO,
2276 "stereo",(char *)MC_MODE_STEREO,
2277 "joint stereo",(char *)MC_MODE_JOINT,
2278 "mid/side stereo",(char *)MC_MODE_MSSTEREO,
2279 "dual channel",(char *)MC_MODE_DUALCHANNEL,
2280 NULL
2281 CB_INFO_TYPE2_END
2282
2283 // IDC_COMBO_EMPHASIS_TYPE
2284 CB_INFO_TYPE2_BEGIN(IDC_COMBO_EMPHASIS_TYPE)
2285 "NONE",(char *)MC_EMP_NONE,
2286 "50/15ms (normal CD-DA emphasis)",(char *)MC_EMP_5015MS,
2287 "CCITT",(char *)MC_EMP_CCITT,
2288 NULL
2289 CB_INFO_TYPE2_END
2290
2291 // IDC_COMBO_VBR_BITRATE_LOW
2292 CB_INFO_TYPE1_BEGIN(IDC_COMBO_VBR_BITRATE_LOW)
2293 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1
2294 CB_INFO_TYPE1_END
2295
2296 // IDC_COMBO_VBR_BITRATE_HIGH
2297 CB_INFO_TYPE1_BEGIN(IDC_COMBO_VBR_BITRATE_HIGH)
2298 32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1
2299 CB_INFO_TYPE1_END
2300
2301 // IDC_COMBO_VBR
2302 CB_INFO_TYPE2_BEGIN(IDC_COMBO_VBR)
2303 "Quality 0 (320 - 32 kbps)",(char *)0,
2304 "Quality 1 (256 - 32 kbps)",(char *)1,
2305 "Quality 2 (256 - 32 kbps)",(char *)2,
2306 "Quality 3 (256 - 32 kbps)",(char *)3,
2307 "Quality 4 (256 - 32 kbps)",(char *)4,
2308 "Quality 5 (224 - 32 kbps)",(char *)5,
2309 "Quality 6 (192 - 32 kbps)",(char *)6,
2310 "Quality 7 (160 - 32 kbps)",(char *)7,
2311 "Quality 8 (128 - 32 kbps)",(char *)8,
2312 "Quality 9 (128 - 32 kbps)",(char *)9,
2313 NULL
2314 CB_INFO_TYPE2_END
2315
2316 // id �̃R���{�{�b�N�X��I���̐ݒ肷��B
2317 #define CB_SETCURSEL_TYPE1(id) \
2318 { \
2319 int cb_num; \
2320 for(cb_num=0;(int)cb_info_ ## id [cb_num]>=0;cb_num++){ \
2321 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \
2322 if(gogo_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num]){ \
2323 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num,(LPARAM)0); \
2324 break; \
2325 } \
2326 } \
2327 }
2328 #define CB_SETCURSEL_TYPE2(id) \
2329 { \
2330 int cb_num; \
2331 for(cb_num=0;(int)cb_info_ ## id [cb_num];cb_num+=2){ \
2332 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \
2333 if(gogo_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num+1]){ \
2334 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0); \
2335 break; \
2336 } \
2337 } \
2338 }
2339 // id �̃R���{�{�b�N�X�̑I����ϐ��ɑ������B
2340 #define CB_GETCURSEL_TYPE1(id) \
2341 { \
2342 int cb_num1, cb_num2; \
2343 cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \
2344 for(cb_num2=0;(int)cb_info_ ## id [cb_num2]>=0;cb_num2++) \
2345 if(cb_num1==cb_num2){ \
2346 gogo_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2]; \
2347 break; \
2348 } \
2349 }
2350 #define CB_GETCURSEL_TYPE2(id) \
2351 { \
2352 int cb_num1, cb_num2; \
2353 cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \
2354 for(cb_num2=0;(int)cb_info_ ## id [cb_num2];cb_num2+=2) \
2355 if(cb_num1*2==cb_num2){ \
2356 gogo_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2+1]; \
2357 break; \
2358 } \
2359 }
2360 // �`�F�b�N����Ă��邩�B
2361 #define IS_CHECK(id) SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)
2362 // �`�F�b�N����B
2363 #define CHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0)
2364 // �`�F�b�N���͂����B
2365 #define UNCHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0)
2366 // id �̃`�F�b�N�{�b�N�X��ݒ肷��B
2367 #define CHECKBOX_SET(id) \
2368 if(gogo_ConfigDialogInfo.opt ## id>0) \
2369 SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0); \
2370 else \
2371 SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0); \
2372 // id �̃`�F�b�N�{�b�N�X��ϐ��ɑ������B
2373 #define CHECKBOX_GET(id) \
2374 if(SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)) \
2375 gogo_ConfigDialogInfo.opt ## id = 1; \
2376 else \
2377 gogo_ConfigDialogInfo.opt ## id = 0; \
2378 // id �̃G�f�B�b�g��ݒ肷��B
2379 #define EDIT_SET(id) SendDlgItemMessage(hwnd,id,WM_SETTEXT,0,(LPARAM)gogo_ConfigDialogInfo.opt ## id);
2380 // id �̃G�f�B�b�g��ϐ��ɑ������B
2381 #define EDIT_GET(id,size) SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)gogo_ConfigDialogInfo.opt ## id);
2382 #define EDIT_GET_RANGE(id,size,min,max) \
2383 { \
2384 char tmpbuf[1024]; \
2385 int value; \
2386 SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)gogo_ConfigDialogInfo.opt ## id); \
2387 value = atoi((char *)gogo_ConfigDialogInfo.opt ## id); \
2388 if(value<min) value = min; \
2389 if(value>max) value = max; \
2390 sprintf(tmpbuf,"%d",value); \
2391 strncpy((char *)gogo_ConfigDialogInfo.opt ## id,tmpbuf,size); \
2392 (gogo_ConfigDialogInfo.opt ## id)[size] = '\0'; \
2393 }
2394 // �R���g���[���̗L����
2395 #define ENABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),TRUE);
2396 // �R���g���[���̖�����
2397 #define DISABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),FALSE);
2398
2399 static void gogoConfigDialogProcControlEnableDisable(HWND hwnd);
2400 static void gogoConfigDialogProcControlApply(HWND hwnd);
2401 static void gogoConfigDialogProcControlReset(HWND hwnd);
2402 static int gogo_ConfigDialogInfoLock();
2403 static int gogo_ConfigDialogInfoUnLock();
2404 static HANDLE hgogoConfigDailog = NULL;
gogoConfigDialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)2405 static BOOL APIENTRY gogoConfigDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
2406 {
2407 char buff[1024];
2408 switch (uMess){
2409 case WM_INITDIALOG:
2410 {
2411 int i;
2412 // �R���{�{�b�N�X�̏�����
2413 for(i=0;cb_info_IDC_COMBO_OUTPUT_FORMAT[i];i+=2){
2414 SendDlgItemMessage(hwnd,IDC_COMBO_OUTPUT_FORMAT,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_OUTPUT_FORMAT[i]);
2415 }
2416 for(i=0;cb_info_IDC_COMBO_MPEG1_AUDIO_BITRATE[i]>=0;i++){
2417 sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_MPEG1_AUDIO_BITRATE[i]);
2418 SendDlgItemMessage(hwnd,IDC_COMBO_MPEG1_AUDIO_BITRATE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);
2419 }
2420 for(i=0;cb_info_IDC_COMBO_MPEG2_AUDIO_BITRATE[i]>=0;i++){
2421 sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_MPEG2_AUDIO_BITRATE[i]);
2422 SendDlgItemMessage(hwnd,IDC_COMBO_MPEG2_AUDIO_BITRATE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);
2423 }
2424 for(i=0;cb_info_IDC_COMBO_ENCODE_MODE[i];i+=2){
2425 SendDlgItemMessage(hwnd,IDC_COMBO_ENCODE_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_ENCODE_MODE[i]);
2426 }
2427 for(i=0;cb_info_IDC_COMBO_EMPHASIS_TYPE[i];i+=2){
2428 SendDlgItemMessage(hwnd,IDC_COMBO_EMPHASIS_TYPE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_EMPHASIS_TYPE[i]);
2429 }
2430 for(i=0;cb_info_IDC_COMBO_VBR_BITRATE_LOW[i]>=0;i++){
2431 sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_VBR_BITRATE_LOW[i]);
2432 SendDlgItemMessage(hwnd,IDC_COMBO_VBR_BITRATE_LOW,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);
2433 }
2434 for(i=0;cb_info_IDC_COMBO_VBR_BITRATE_HIGH[i]>=0;i++){
2435 sprintf(buff,"%d kbit/sec",cb_info_IDC_COMBO_VBR_BITRATE_HIGH[i]);
2436 SendDlgItemMessage(hwnd,IDC_COMBO_VBR_BITRATE_HIGH,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)buff);
2437 }
2438 for(i=0;cb_info_IDC_COMBO_VBR[i];i+=2){
2439 SendDlgItemMessage(hwnd,IDC_COMBO_VBR,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_VBR[i]);
2440 }
2441 // �ݒ�
2442 gogoConfigDialogProcControlReset(hwnd);
2443 }
2444 break;
2445 case WM_COMMAND:
2446 switch (LOWORD(wParam)) {
2447 case IDCLOSE:
2448 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
2449 break;
2450 case IDOK:
2451 gogoConfigDialogProcControlApply(hwnd);
2452 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
2453 break;
2454 case IDCANCEL:
2455 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
2456 break;
2457 case IDC_BUTTON_APPLY:
2458 gogoConfigDialogProcControlApply(hwnd);
2459 break;
2460 case IDC_CHECK_DEFAULT:
2461 gogoConfigDialogProcControlEnableDisable(hwnd);
2462 break;
2463 case IDC_CHECK_COMMANDLINE_OPTS:
2464 gogoConfigDialogProcControlEnableDisable(hwnd);
2465 break;
2466 case IDC_EDIT_COMMANDLINE_OPTION:
2467 break;
2468 case IDC_CHECK_OUTPUT_FORMAT:
2469 gogoConfigDialogProcControlEnableDisable(hwnd);
2470 break;
2471 case IDC_COMBO_OUTPUT_FORMAT:
2472 break;
2473 case IDC_CHECK_MPEG1AUDIOBITRATE:
2474 if(IS_CHECK(IDC_CHECK_MPEG1AUDIOBITRATE)){
2475 CHECK(IDC_CHECK_MPEG2AUDIOBITRATE);
2476 UNCHECK(IDC_CHECK_VBR);
2477 UNCHECK(IDC_CHECK_VBR_BITRATE);
2478 } else {
2479 UNCHECK(IDC_CHECK_MPEG2AUDIOBITRATE);
2480 }
2481 gogoConfigDialogProcControlEnableDisable(hwnd);
2482 break;
2483 case IDC_COMBO_MPEG1_AUDIO_BITRATE:
2484 break;
2485 case IDC_CHECK_MPEG2AUDIOBITRATE:
2486 if(IS_CHECK(IDC_CHECK_MPEG2AUDIOBITRATE)){
2487 CHECK(IDC_CHECK_MPEG1AUDIOBITRATE);
2488 UNCHECK(IDC_CHECK_VBR);
2489 UNCHECK(IDC_CHECK_VBR_BITRATE);
2490 } else {
2491 UNCHECK(IDC_CHECK_MPEG1AUDIOBITRATE);
2492 }
2493 gogoConfigDialogProcControlEnableDisable(hwnd);
2494 break;
2495 case IDC_COMBO_MPEG2_AUDIO_BITRATE:
2496 break;
2497 case IDC_CHECK_ENHANCED_LOW_PASS_FILTER:
2498 if(IS_CHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)){
2499 UNCHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER);
2500 }
2501 gogoConfigDialogProcControlEnableDisable(hwnd);
2502 break;
2503 case IDC_EDIT_LPF_PARA1:
2504 break;
2505 case IDC_EDIT_LPF_PARA2:
2506 break;
2507 case IDC_CHECK_ENCODE_MODE:
2508 gogoConfigDialogProcControlEnableDisable(hwnd);
2509 break;
2510 case IDC_COMBO_ENCODE_MODE:
2511 break;
2512 case IDC_CHECK_EMPHASIS_TYPE:
2513 gogoConfigDialogProcControlEnableDisable(hwnd);
2514 break;
2515 case IDC_COMBO_EMPHASIS_TYPE:
2516 break;
2517 case IDC_CHECK_OUTFREQ:
2518 gogoConfigDialogProcControlEnableDisable(hwnd);
2519 break;
2520 case IDC_EDIT_OUTFREQ:
2521 break;
2522 case IDC_CHECK_MSTHRESHOLD:
2523 gogoConfigDialogProcControlEnableDisable(hwnd);
2524 break;
2525 case IDC_EDIT_MSTHRESHOLD_THRESHOLD:
2526 break;
2527 case IDC_EDIT_MSTHRESHOLD_MSPOWER:
2528 break;
2529 case IDC_CHECK_USE_CPU_OPTS:
2530 gogoConfigDialogProcControlEnableDisable(hwnd);
2531 break;
2532 case IDC_CHECK_CPUMMX:
2533 break;
2534 case IDC_CHECK_CPUSSE:
2535 break;
2536 case IDC_CHECK_CPU3DNOW:
2537 break;
2538 case IDC_CHECK_CPUE3DNOW:
2539 break;
2540 case IDC_CHECK_CPUCMOV:
2541 break;
2542 case IDC_CHECK_CPUEMMX:
2543 break;
2544 case IDC_CHECK_CPUSSE2:
2545 break;
2546 case IDC_CHECK_VBR:
2547 if(IS_CHECK(IDC_CHECK_VBR)){
2548 UNCHECK(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2549 UNCHECK(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2550 }
2551 gogoConfigDialogProcControlEnableDisable(hwnd);
2552 break;
2553 case IDC_COMBO_VBR:
2554 break;
2555 case IDC_CHECK_VBR_BITRATE:
2556 if(IS_CHECK(IDC_CHECK_VBR_BITRATE)){
2557 CHECK(IDC_CHECK_VBR);
2558 UNCHECK(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2559 UNCHECK(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2560 }
2561 gogoConfigDialogProcControlEnableDisable(hwnd);
2562 break;
2563 case IDC_COMBO_VBR_BITRATE_LOW:
2564 break;
2565 case IDC_COMBO_VBR_BITRATE_HIGH:
2566 break;
2567 case IDC_CHECK_USEPSY:
2568 break;
2569 case IDC_CHECK_VERIFY:
2570 break;
2571 case IDC_CHECK_16KHZ_LOW_PASS_FILTER:
2572 if(IS_CHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER)){
2573 UNCHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);
2574 }
2575 gogoConfigDialogProcControlEnableDisable(hwnd);
2576 break;
2577 default:
2578 break;
2579 }
2580 break;
2581 case WM_NOTIFY:
2582 break;
2583 case WM_SIZE:
2584 return FALSE;
2585 case WM_CLOSE:
2586 gogo_ConfigDialogInfoSaveINI();
2587 //MessageBox(NULL,"CLOSE","CLOSE",MB_OK);
2588 DestroyWindow(hwnd);
2589 break;
2590 case WM_DESTROY:
2591 hgogoConfigDailog = NULL;
2592 //MessageBox(NULL,"DESTROY","DESTROY",MB_OK);
2593 break;
2594 default:
2595 break;
2596 }
2597 return FALSE;
2598 }
2599
2600 // �R���g���[���̗L�� / ������
gogoConfigDialogProcControlEnableDisable(HWND hwnd)2601 static void gogoConfigDialogProcControlEnableDisable(HWND hwnd)
2602 {
2603 ENABLE_CONTROL(IDC_CHECK_DEFAULT);
2604 if(IS_CHECK(IDC_CHECK_DEFAULT)){
2605 DISABLE_CONTROL(IDC_CHECK_COMMANDLINE_OPTS);
2606 DISABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);
2607 DISABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);
2608 DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);
2609 DISABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);
2610 DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2611 DISABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);
2612 DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2613 DISABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);
2614 DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);
2615 DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);
2616 DISABLE_CONTROL(IDC_CHECK_ENCODE_MODE);
2617 DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);
2618 DISABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);
2619 DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);
2620 DISABLE_CONTROL(IDC_CHECK_OUTFREQ);
2621 DISABLE_CONTROL(IDC_EDIT_OUTFREQ);
2622 DISABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);
2623 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);
2624 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);
2625 DISABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);
2626 DISABLE_CONTROL(IDC_CHECK_CPUMMX);
2627 DISABLE_CONTROL(IDC_CHECK_CPUSSE);
2628 DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);
2629 DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);
2630 DISABLE_CONTROL(IDC_CHECK_CPUCMOV);
2631 DISABLE_CONTROL(IDC_CHECK_CPUEMMX);
2632 DISABLE_CONTROL(IDC_CHECK_CPUSSE2);
2633 DISABLE_CONTROL(IDC_CHECK_VBR);
2634 DISABLE_CONTROL(IDC_COMBO_VBR);
2635 DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);
2636 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);
2637 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);
2638 DISABLE_CONTROL(IDC_CHECK_USEPSY);
2639 DISABLE_CONTROL(IDC_CHECK_VERIFY);
2640 DISABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);
2641 } else {
2642 ENABLE_CONTROL(IDC_CHECK_COMMANDLINE_OPTS);
2643 if(IS_CHECK(IDC_CHECK_COMMANDLINE_OPTS)){
2644 ENABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);
2645 DISABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);
2646 DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);
2647 DISABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);
2648 DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2649 DISABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);
2650 DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2651 DISABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);
2652 DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);
2653 DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);
2654 DISABLE_CONTROL(IDC_CHECK_ENCODE_MODE);
2655 DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);
2656 DISABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);
2657 DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);
2658 DISABLE_CONTROL(IDC_CHECK_OUTFREQ);
2659 DISABLE_CONTROL(IDC_EDIT_OUTFREQ);
2660 DISABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);
2661 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);
2662 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);
2663 DISABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);
2664 DISABLE_CONTROL(IDC_CHECK_CPUMMX);
2665 DISABLE_CONTROL(IDC_CHECK_CPUSSE);
2666 DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);
2667 DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);
2668 DISABLE_CONTROL(IDC_CHECK_CPUCMOV);
2669 DISABLE_CONTROL(IDC_CHECK_CPUEMMX);
2670 DISABLE_CONTROL(IDC_CHECK_CPUSSE2);
2671 DISABLE_CONTROL(IDC_CHECK_VBR);
2672 DISABLE_CONTROL(IDC_COMBO_VBR);
2673 DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);
2674 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);
2675 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);
2676 DISABLE_CONTROL(IDC_CHECK_USEPSY);
2677 DISABLE_CONTROL(IDC_CHECK_VERIFY);
2678 DISABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);
2679 } else {
2680 DISABLE_CONTROL(IDC_EDIT_COMMANDLINE_OPTION);
2681 ENABLE_CONTROL(IDC_CHECK_OUTPUT_FORMAT);
2682 if(IS_CHECK(IDC_CHECK_OUTPUT_FORMAT)){
2683 ENABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);
2684 } else {
2685 DISABLE_CONTROL(IDC_COMBO_OUTPUT_FORMAT);
2686 }
2687 ENABLE_CONTROL(IDC_CHECK_16KHZ_LOW_PASS_FILTER);
2688 ENABLE_CONTROL(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);
2689 if(IS_CHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER)){
2690 UNCHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER);
2691 DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);
2692 DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);
2693 } else {
2694 if(IS_CHECK(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)){
2695 UNCHECK(IDC_CHECK_16KHZ_LOW_PASS_FILTER);
2696 ENABLE_CONTROL(IDC_EDIT_LPF_PARA1);
2697 ENABLE_CONTROL(IDC_EDIT_LPF_PARA2);
2698 } else {
2699 DISABLE_CONTROL(IDC_EDIT_LPF_PARA1);
2700 DISABLE_CONTROL(IDC_EDIT_LPF_PARA2);
2701 }
2702 }
2703 ENABLE_CONTROL(IDC_CHECK_ENCODE_MODE);
2704 if(IS_CHECK(IDC_CHECK_ENCODE_MODE)){
2705 ENABLE_CONTROL(IDC_COMBO_ENCODE_MODE);
2706 } else {
2707 DISABLE_CONTROL(IDC_COMBO_ENCODE_MODE);
2708 }
2709 ENABLE_CONTROL(IDC_CHECK_EMPHASIS_TYPE);
2710 if(IS_CHECK(IDC_CHECK_EMPHASIS_TYPE)){
2711 ENABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);
2712 } else {
2713 DISABLE_CONTROL(IDC_COMBO_EMPHASIS_TYPE);
2714 }
2715 ENABLE_CONTROL(IDC_CHECK_OUTFREQ);
2716 if(IS_CHECK(IDC_CHECK_OUTFREQ)){
2717 ENABLE_CONTROL(IDC_EDIT_OUTFREQ);
2718 } else {
2719 DISABLE_CONTROL(IDC_EDIT_OUTFREQ);
2720 }
2721 ENABLE_CONTROL(IDC_CHECK_MSTHRESHOLD);
2722 if(IS_CHECK(IDC_CHECK_MSTHRESHOLD)){
2723 ENABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);
2724 ENABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);
2725 } else {
2726 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_THRESHOLD);
2727 DISABLE_CONTROL(IDC_EDIT_MSTHRESHOLD_MSPOWER);
2728 }
2729 ENABLE_CONTROL(IDC_CHECK_USE_CPU_OPTS);
2730 if(IS_CHECK(IDC_CHECK_USE_CPU_OPTS)){
2731 ENABLE_CONTROL(IDC_CHECK_CPUMMX);
2732 ENABLE_CONTROL(IDC_CHECK_CPUSSE);
2733 ENABLE_CONTROL(IDC_CHECK_CPU3DNOW);
2734 ENABLE_CONTROL(IDC_CHECK_CPUE3DNOW);
2735 ENABLE_CONTROL(IDC_CHECK_CPUCMOV);
2736 ENABLE_CONTROL(IDC_CHECK_CPUEMMX);
2737 ENABLE_CONTROL(IDC_CHECK_CPUSSE2);
2738 } else {
2739 DISABLE_CONTROL(IDC_CHECK_CPUMMX);
2740 DISABLE_CONTROL(IDC_CHECK_CPUSSE);
2741 DISABLE_CONTROL(IDC_CHECK_CPU3DNOW);
2742 DISABLE_CONTROL(IDC_CHECK_CPUE3DNOW);
2743 DISABLE_CONTROL(IDC_CHECK_CPUCMOV);
2744 DISABLE_CONTROL(IDC_CHECK_CPUEMMX);
2745 DISABLE_CONTROL(IDC_CHECK_CPUSSE2);
2746 }
2747 ENABLE_CONTROL(IDC_CHECK_VBR);
2748 ENABLE_CONTROL(IDC_CHECK_MPEG1AUDIOBITRATE);
2749 ENABLE_CONTROL(IDC_CHECK_MPEG2AUDIOBITRATE);
2750 if(IS_CHECK(IDC_CHECK_VBR)){
2751 ENABLE_CONTROL(IDC_COMBO_VBR);
2752 ENABLE_CONTROL(IDC_CHECK_VBR_BITRATE);
2753 if(IS_CHECK(IDC_CHECK_VBR_BITRATE)){
2754 ENABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);
2755 ENABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);
2756 } else {
2757 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);
2758 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);
2759 }
2760 UNCHECK(IDC_CHECK_MPEG1AUDIOBITRATE);
2761 UNCHECK(IDC_CHECK_MPEG2AUDIOBITRATE);
2762 DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2763 DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2764 } else {
2765 UNCHECK(IDC_CHECK_VBR_BITRATE);
2766 DISABLE_CONTROL(IDC_COMBO_VBR);
2767 DISABLE_CONTROL(IDC_CHECK_VBR_BITRATE);
2768 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_LOW);
2769 DISABLE_CONTROL(IDC_COMBO_VBR_BITRATE_HIGH);
2770 if(IS_CHECK(IDC_CHECK_MPEG1AUDIOBITRATE)){
2771 ENABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2772 } else {
2773 DISABLE_CONTROL(IDC_COMBO_MPEG1_AUDIO_BITRATE);
2774 }
2775 if(IS_CHECK(IDC_CHECK_MPEG2AUDIOBITRATE)){
2776 ENABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2777 } else {
2778 DISABLE_CONTROL(IDC_COMBO_MPEG2_AUDIO_BITRATE);
2779 }
2780 }
2781 ENABLE_CONTROL(IDC_CHECK_USEPSY);
2782 ENABLE_CONTROL(IDC_CHECK_VERIFY);
2783 }
2784 }
2785 }
2786
gogoConfigDialogProcControlReset(HWND hwnd)2787 static void gogoConfigDialogProcControlReset(HWND hwnd)
2788 {
2789 // �R���{�{�b�N�X�̑I��ݒ�
2790 CB_SETCURSEL_TYPE2(IDC_COMBO_OUTPUT_FORMAT)
2791 CB_SETCURSEL_TYPE1(IDC_COMBO_MPEG1_AUDIO_BITRATE)
2792 CB_SETCURSEL_TYPE1(IDC_COMBO_MPEG2_AUDIO_BITRATE)
2793 CB_SETCURSEL_TYPE2(IDC_COMBO_ENCODE_MODE)
2794 CB_SETCURSEL_TYPE2(IDC_COMBO_EMPHASIS_TYPE)
2795 CB_SETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_LOW)
2796 CB_SETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_HIGH)
2797 CB_SETCURSEL_TYPE2(IDC_COMBO_VBR)
2798 // �`�F�b�N�{�b�N�X�̐ݒ�
2799 CHECKBOX_SET(IDC_CHECK_DEFAULT)
2800 CHECKBOX_SET(IDC_CHECK_COMMANDLINE_OPTS)
2801 CHECKBOX_SET(IDC_CHECK_OUTPUT_FORMAT)
2802 CHECKBOX_SET(IDC_CHECK_MPEG1AUDIOBITRATE)
2803 CHECKBOX_SET(IDC_CHECK_MPEG2AUDIOBITRATE)
2804 CHECKBOX_SET(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)
2805 CHECKBOX_SET(IDC_CHECK_ENCODE_MODE)
2806 CHECKBOX_SET(IDC_CHECK_EMPHASIS_TYPE)
2807 CHECKBOX_SET(IDC_CHECK_OUTFREQ)
2808 CHECKBOX_SET(IDC_CHECK_MSTHRESHOLD)
2809 CHECKBOX_SET(IDC_CHECK_USE_CPU_OPTS)
2810 CHECKBOX_SET(IDC_CHECK_CPUMMX)
2811 CHECKBOX_SET(IDC_CHECK_CPUSSE)
2812 CHECKBOX_SET(IDC_CHECK_CPU3DNOW)
2813 CHECKBOX_SET(IDC_CHECK_CPUE3DNOW)
2814 CHECKBOX_SET(IDC_CHECK_CPUCMOV)
2815 CHECKBOX_SET(IDC_CHECK_CPUEMMX)
2816 CHECKBOX_SET(IDC_CHECK_CPUSSE2)
2817 CHECKBOX_SET(IDC_CHECK_VBR)
2818 CHECKBOX_SET(IDC_CHECK_VBR_BITRATE)
2819 CHECKBOX_SET(IDC_CHECK_USEPSY)
2820 CHECKBOX_SET(IDC_CHECK_VERIFY)
2821 CHECKBOX_SET(IDC_CHECK_16KHZ_LOW_PASS_FILTER)
2822 // �G�f�B�b�g�̐ݒ�
2823 EDIT_SET(IDC_EDIT_OUTFREQ)
2824 EDIT_SET(IDC_EDIT_MSTHRESHOLD_THRESHOLD)
2825 EDIT_SET(IDC_EDIT_MSTHRESHOLD_MSPOWER)
2826 EDIT_SET(IDC_EDIT_COMMANDLINE_OPTION)
2827 EDIT_SET(IDC_EDIT_LPF_PARA1)
2828 EDIT_SET(IDC_EDIT_LPF_PARA2)
2829 // �R���g���[���̗L�� / ������
2830 gogoConfigDialogProcControlEnableDisable(hwnd);
2831 }
2832
gogoConfigDialogProcControlApply(HWND hwnd)2833 static void gogoConfigDialogProcControlApply(HWND hwnd)
2834 {
2835 // �R���{�{�b�N�X�̑I��ݒ�
2836 CB_GETCURSEL_TYPE2(IDC_COMBO_OUTPUT_FORMAT)
2837 CB_GETCURSEL_TYPE1(IDC_COMBO_MPEG1_AUDIO_BITRATE)
2838 CB_GETCURSEL_TYPE1(IDC_COMBO_MPEG2_AUDIO_BITRATE)
2839 CB_GETCURSEL_TYPE2(IDC_COMBO_ENCODE_MODE)
2840 CB_GETCURSEL_TYPE2(IDC_COMBO_EMPHASIS_TYPE)
2841 CB_GETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_LOW)
2842 CB_GETCURSEL_TYPE1(IDC_COMBO_VBR_BITRATE_HIGH)
2843 CB_GETCURSEL_TYPE2(IDC_COMBO_VBR)
2844 // �`�F�b�N�{�b�N�X�̐ݒ�
2845 CHECKBOX_GET(IDC_CHECK_DEFAULT)
2846 CHECKBOX_GET(IDC_CHECK_COMMANDLINE_OPTS)
2847 CHECKBOX_GET(IDC_CHECK_OUTPUT_FORMAT)
2848 CHECKBOX_GET(IDC_CHECK_MPEG1AUDIOBITRATE)
2849 CHECKBOX_GET(IDC_CHECK_MPEG2AUDIOBITRATE)
2850 CHECKBOX_GET(IDC_CHECK_ENHANCED_LOW_PASS_FILTER)
2851 CHECKBOX_GET(IDC_CHECK_ENCODE_MODE)
2852 CHECKBOX_GET(IDC_CHECK_EMPHASIS_TYPE)
2853 CHECKBOX_GET(IDC_CHECK_OUTFREQ)
2854 CHECKBOX_GET(IDC_CHECK_MSTHRESHOLD)
2855 CHECKBOX_GET(IDC_CHECK_USE_CPU_OPTS)
2856 CHECKBOX_GET(IDC_CHECK_CPUMMX)
2857 CHECKBOX_GET(IDC_CHECK_CPUSSE)
2858 CHECKBOX_GET(IDC_CHECK_CPU3DNOW)
2859 CHECKBOX_GET(IDC_CHECK_CPUE3DNOW)
2860 CHECKBOX_GET(IDC_CHECK_CPUCMOV)
2861 CHECKBOX_GET(IDC_CHECK_CPUEMMX)
2862 CHECKBOX_GET(IDC_CHECK_CPUSSE2)
2863 CHECKBOX_GET(IDC_CHECK_VBR)
2864 CHECKBOX_GET(IDC_CHECK_VBR_BITRATE)
2865 CHECKBOX_GET(IDC_CHECK_USEPSY)
2866 CHECKBOX_GET(IDC_CHECK_VERIFY)
2867 CHECKBOX_GET(IDC_CHECK_16KHZ_LOW_PASS_FILTER)
2868 // �G�f�B�b�g�̐ݒ�
2869 EDIT_GET_RANGE(IDC_EDIT_OUTFREQ,6,MIN_OUTPUT_RATE,MAX_OUTPUT_RATE)
2870 EDIT_GET_RANGE(IDC_EDIT_MSTHRESHOLD_THRESHOLD,4,0,100)
2871 EDIT_GET_RANGE(IDC_EDIT_MSTHRESHOLD_MSPOWER,4,0,100)
2872 EDIT_GET(IDC_EDIT_COMMANDLINE_OPTION,1024)
2873 EDIT_GET_RANGE(IDC_EDIT_LPF_PARA1,4,0,100)
2874 EDIT_GET_RANGE(IDC_EDIT_LPF_PARA2,4,0,100)
2875 // �R���g���[���̗L�� / ������
2876 gogoConfigDialogProcControlEnableDisable(hwnd);
2877 // ���Z�b�g
2878 gogoConfigDialogProcControlReset(hwnd);
2879 }
2880
2881 #undef CB_INFO_TYPE1_BEGIN
2882 #undef CB_INFO_TYPE1_END
2883 #undef CB_INFO_TYPE2_BEGIN
2884 #undef CB_INFO_TYPE2_END
2885 #undef CB_SETCURSEL_TYPE1
2886 #undef CB_SETCURSEL_TYPE2
2887 #undef CB_GETCURSEL_TYPE1
2888 #undef CB_GETCURSEL_TYPE2
2889 #undef CHECKBOX_SET
2890 #undef CHECKBOX_GET
2891 #undef EDIT_SET
2892 #undef EDIT_GET
2893 #undef EDIT_GET_RANGE
2894
2895 #endif
2896
gogoConfigDialog(void)2897 int gogoConfigDialog(void)
2898 {
2899 #ifdef AU_GOGO
2900 if(!IsWindow(hgogoConfigDailog)) {
2901 if (PlayerLanguage == LANGUAGE_JAPANESE)
2902 hgogoConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_GOGO),(HWND)hPrefWnd,gogoConfigDialogProc);
2903 else
2904 hgogoConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_GOGO_EN),(HWND)hPrefWnd,gogoConfigDialogProc);
2905 }
2906 ShowWindow(hgogoConfigDailog,SW_SHOW);
2907 #endif
2908 return 0;
2909 }
2910
2911 #ifdef AU_GOGO
2912
gogo_ConfigDialogInfoLock()2913 static int gogo_ConfigDialogInfoLock()
2914 {
2915 return 0;
2916 }
gogo_ConfigDialogInfoUnLock()2917 static int gogo_ConfigDialogInfoUnLock()
2918 {
2919 return 0;
2920 }
2921
2922 volatile gogo_ConfigDialogInfo_t gogo_ConfigDialogInfo;
2923
gogo_ConfigDialogInfoInit(void)2924 int gogo_ConfigDialogInfoInit(void)
2925 {
2926 gogo_ConfigDialogInfo.optIDC_CHECK_DEFAULT = 1;
2927 gogo_ConfigDialogInfo.optIDC_CHECK_COMMANDLINE_OPTS = 0;
2928 gogo_ConfigDialogInfo.optIDC_EDIT_COMMANDLINE_OPTION[0] = '\0';
2929 gogo_ConfigDialogInfo.optIDC_CHECK_OUTPUT_FORMAT = 1;
2930 gogo_ConfigDialogInfo.optIDC_COMBO_OUTPUT_FORMAT = MC_OUTPUT_NORMAL;
2931 gogo_ConfigDialogInfo.optIDC_CHECK_MPEG1AUDIOBITRATE = 1;
2932 gogo_ConfigDialogInfo.optIDC_COMBO_MPEG1_AUDIO_BITRATE = 160;
2933 gogo_ConfigDialogInfo.optIDC_CHECK_MPEG2AUDIOBITRATE = 1;
2934 gogo_ConfigDialogInfo.optIDC_COMBO_MPEG2_AUDIO_BITRATE = 80;
2935 gogo_ConfigDialogInfo.optIDC_CHECK_ENHANCED_LOW_PASS_FILTER = 0;
2936 strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA1,"55");
2937 strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA2,"70");
2938 gogo_ConfigDialogInfo.optIDC_CHECK_ENCODE_MODE = 1;
2939 gogo_ConfigDialogInfo.optIDC_COMBO_ENCODE_MODE = MC_MODE_STEREO;
2940 gogo_ConfigDialogInfo.optIDC_CHECK_EMPHASIS_TYPE = 1;
2941 gogo_ConfigDialogInfo.optIDC_COMBO_EMPHASIS_TYPE = MC_EMP_NONE;
2942 gogo_ConfigDialogInfo.optIDC_CHECK_OUTFREQ = 0;
2943 strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_OUTFREQ,"44100");
2944 gogo_ConfigDialogInfo.optIDC_CHECK_MSTHRESHOLD = 0;
2945 strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_THRESHOLD,"75");
2946 strcpy((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_MSPOWER,"66");
2947 gogo_ConfigDialogInfo.optIDC_CHECK_USE_CPU_OPTS = 0;
2948 gogo_ConfigDialogInfo.optIDC_CHECK_CPUMMX = 0;
2949 gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE = 0;
2950 gogo_ConfigDialogInfo.optIDC_CHECK_CPU3DNOW = 0;
2951 gogo_ConfigDialogInfo.optIDC_CHECK_CPUE3DNOW = 0;
2952 gogo_ConfigDialogInfo.optIDC_CHECK_CPUCMOV = 0;
2953 gogo_ConfigDialogInfo.optIDC_CHECK_CPUEMMX = 0;
2954 gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE2 = 0;
2955 gogo_ConfigDialogInfo.optIDC_CHECK_VBR = 0;
2956 gogo_ConfigDialogInfo.optIDC_COMBO_VBR = 0;
2957 gogo_ConfigDialogInfo.optIDC_CHECK_VBR_BITRATE = 0;
2958 gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_LOW = 32;
2959 gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_HIGH = 320;
2960 gogo_ConfigDialogInfo.optIDC_CHECK_USEPSY = 1;
2961 gogo_ConfigDialogInfo.optIDC_CHECK_VERIFY = 0;
2962 gogo_ConfigDialogInfo.optIDC_CHECK_16KHZ_LOW_PASS_FILTER = 1;
2963 return 0;
2964 }
2965
gogo_ConfigDialogInfoApply(void)2966 int gogo_ConfigDialogInfoApply(void)
2967 {
2968 gogo_ConfigDialogInfoLock();
2969 if(gogo_ConfigDialogInfo.optIDC_CHECK_DEFAULT>0){
2970 gogo_opts_reset();
2971 gogo_ConfigDialogInfoUnLock();
2972 return 0;
2973 }
2974 if(gogo_ConfigDialogInfo.optIDC_CHECK_COMMANDLINE_OPTS>0){
2975 gogo_opts_reset();
2976 set_gogo_opts_use_commandline_options((char *)gogo_ConfigDialogInfo.optIDC_EDIT_COMMANDLINE_OPTION);
2977 gogo_ConfigDialogInfoUnLock();
2978 return 0;
2979 }
2980 if(gogo_ConfigDialogInfo.optIDC_CHECK_OUTPUT_FORMAT>0){
2981 gogo_opts.optOUTPUT_FORMAT = gogo_ConfigDialogInfo.optIDC_COMBO_OUTPUT_FORMAT;
2982 }
2983 if(gogo_ConfigDialogInfo.optIDC_CHECK_MPEG1AUDIOBITRATE>0){
2984 gogo_opts.optBITRATE1 = gogo_ConfigDialogInfo.optIDC_COMBO_MPEG1_AUDIO_BITRATE;
2985 }
2986 if(gogo_ConfigDialogInfo.optIDC_CHECK_MPEG2AUDIOBITRATE>0){
2987 gogo_opts.optBITRATE2 = gogo_ConfigDialogInfo.optIDC_COMBO_MPEG2_AUDIO_BITRATE;
2988 }
2989 if(gogo_ConfigDialogInfo.optIDC_CHECK_ENHANCED_LOW_PASS_FILTER>0){
2990 gogo_opts.optENHANCEDFILTER_A = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA1);
2991 gogo_opts.optENHANCEDFILTER_B = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_LPF_PARA2);
2992 }
2993 if(gogo_ConfigDialogInfo.optIDC_CHECK_ENCODE_MODE>0){
2994 gogo_opts.optENCODEMODE = gogo_ConfigDialogInfo.optIDC_COMBO_ENCODE_MODE;
2995 }
2996 if(gogo_ConfigDialogInfo.optIDC_CHECK_EMPHASIS_TYPE>0){
2997 gogo_opts.optEMPHASIS = gogo_ConfigDialogInfo.optIDC_COMBO_EMPHASIS_TYPE;
2998 }
2999 if(gogo_ConfigDialogInfo.optIDC_CHECK_OUTFREQ>0){
3000 gogo_opts.optOUTFREQ = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_OUTFREQ);
3001 }
3002 if(gogo_ConfigDialogInfo.optIDC_CHECK_MSTHRESHOLD>0){
3003 gogo_opts.optMSTHRESHOLD_threshold = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_THRESHOLD);
3004 gogo_opts.optMSTHRESHOLD_mspower = atoi((char *)gogo_ConfigDialogInfo.optIDC_EDIT_MSTHRESHOLD_MSPOWER);
3005 }
3006 if(gogo_ConfigDialogInfo.optIDC_CHECK_USE_CPU_OPTS>0){
3007 gogo_opts.optUSECPUOPT = 1;
3008 gogo_opts.optUSEMMX = gogo_ConfigDialogInfo.optIDC_CHECK_CPUMMX;
3009 gogo_opts.optUSEKNI = gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE;
3010 gogo_opts.optUSE3DNOW = gogo_ConfigDialogInfo.optIDC_CHECK_CPU3DNOW;
3011 gogo_opts.optUSEE3DNOW = gogo_ConfigDialogInfo.optIDC_CHECK_CPUE3DNOW;
3012 gogo_opts.optUSESSE = gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE;
3013 gogo_opts.optUSECMOV = gogo_ConfigDialogInfo.optIDC_CHECK_CPUCMOV;
3014 gogo_opts.optUSEEMMX = gogo_ConfigDialogInfo.optIDC_CHECK_CPUEMMX;
3015 gogo_opts.optUSESSE2 = gogo_ConfigDialogInfo.optIDC_CHECK_CPUSSE2;
3016 } else {
3017 gogo_opts.optUSECPUOPT = 0;
3018 }
3019 if(gogo_ConfigDialogInfo.optIDC_CHECK_VBR>0){
3020 gogo_opts.optVBR = gogo_ConfigDialogInfo.optIDC_COMBO_VBR;
3021 }
3022 if(gogo_ConfigDialogInfo.optIDC_CHECK_VBR_BITRATE>0){
3023 gogo_opts.optVBRBITRATE_low = gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_LOW;
3024 gogo_opts.optVBRBITRATE_high = gogo_ConfigDialogInfo.optIDC_COMBO_VBR_BITRATE_HIGH;
3025 }
3026 if(gogo_ConfigDialogInfo.optIDC_CHECK_USEPSY>0){
3027 gogo_opts.optUSEPSY = TRUE;
3028 }
3029 if(gogo_ConfigDialogInfo.optIDC_CHECK_VERIFY>0){
3030 gogo_opts.optVERIFY = TRUE;
3031 }
3032 if(gogo_ConfigDialogInfo.optIDC_CHECK_16KHZ_LOW_PASS_FILTER>0){
3033 gogo_opts.optUSELPF16 = TRUE;
3034 }
3035 // gogo_opts.optINPFREQ; // SYSTEM USE(�V�X�e���Ŏg�p���邩��w��ł��Ȃ�)
3036 // gogo_opts.optSTARTOFFSET; // SYSTEM USE
3037 // gogo_opts.optADDTAGnum; // SYSTEM USE
3038 // gogo_opts.optADDTAG_len[64]; // SYSTEM USE
3039 // gogo_opts.optADDTAG_buf[64]; // SYSTEM USE
3040 // gogo_opts.optCPU; // PREPAIRING(������)
3041 // gogo_opts.optBYTE_SWAP; // SYSTEM USE
3042 // gogo_opts.opt8BIT_PCM; // SYSTEM USE
3043 // gogo_opts.optMONO_PCM; // SYSTEM USE
3044 // gogo_opts.optTOWNS_SND; // SYSTEM USE
3045 // gogo_opts.optTHREAD_PRIORITY; // PREPARING
3046 // gogo_opts.optREADTHREAD_PRIORITY; // PREPARING
3047 // gogo_opts.optOUTPUTDIR[1024]; // SYSTEM USE
3048 // gogo_opts.output_name[1024]; // SYSTEM USE
3049 gogo_ConfigDialogInfoUnLock();
3050 return 0;
3051 }
3052
3053 #define SEC_GOGO "gogo"
gogo_ConfigDialogInfoSaveINI(void)3054 int gogo_ConfigDialogInfoSaveINI(void)
3055 {
3056 char *section = SEC_GOGO;
3057 char *inifile = timidity_output_inifile;
3058 char buffer[1024];
3059 #if defined(__MINGW32__) || defined(__CYGWIN__)
3060 #define NUMSAVE(name) \
3061 sprintf(buffer,"%d",gogo_ConfigDialogInfo.name ); \
3062 WritePrivateProfileString(section, #name ,buffer,inifile);
3063 #define STRSAVE(name) \
3064 WritePrivateProfileString(section,(char *) #name ,(char *)gogo_ConfigDialogInfo.name ,inifile);
3065 #else
3066 #define NUMSAVE(name) \
3067 sprintf(buffer,"%d",gogo_ConfigDialogInfo. ## name ); \
3068 WritePrivateProfileString(section, #name ,buffer,inifile);
3069 #define STRSAVE(name) \
3070 WritePrivateProfileString(section,(char *) #name ,(char *)gogo_ConfigDialogInfo. ## name ,inifile);
3071 #endif
3072 NUMSAVE(optIDC_CHECK_DEFAULT)
3073 NUMSAVE(optIDC_CHECK_COMMANDLINE_OPTS)
3074 STRSAVE(optIDC_EDIT_COMMANDLINE_OPTION)
3075 NUMSAVE(optIDC_CHECK_OUTPUT_FORMAT)
3076 NUMSAVE(optIDC_COMBO_OUTPUT_FORMAT)
3077 NUMSAVE(optIDC_CHECK_MPEG1AUDIOBITRATE)
3078 NUMSAVE(optIDC_COMBO_MPEG1_AUDIO_BITRATE)
3079 NUMSAVE(optIDC_CHECK_MPEG2AUDIOBITRATE)
3080 NUMSAVE(optIDC_COMBO_MPEG2_AUDIO_BITRATE)
3081 NUMSAVE(optIDC_CHECK_ENHANCED_LOW_PASS_FILTER)
3082 STRSAVE(optIDC_EDIT_LPF_PARA1)
3083 STRSAVE(optIDC_EDIT_LPF_PARA2)
3084 NUMSAVE(optIDC_CHECK_ENCODE_MODE)
3085 NUMSAVE(optIDC_COMBO_ENCODE_MODE)
3086 NUMSAVE(optIDC_CHECK_EMPHASIS_TYPE)
3087 NUMSAVE(optIDC_COMBO_EMPHASIS_TYPE)
3088 NUMSAVE(optIDC_CHECK_OUTFREQ)
3089 STRSAVE(optIDC_EDIT_OUTFREQ)
3090 NUMSAVE(optIDC_CHECK_MSTHRESHOLD)
3091 STRSAVE(optIDC_EDIT_MSTHRESHOLD_THRESHOLD)
3092 STRSAVE(optIDC_EDIT_MSTHRESHOLD_MSPOWER)
3093 NUMSAVE(optIDC_CHECK_USE_CPU_OPTS)
3094 NUMSAVE(optIDC_CHECK_CPUMMX)
3095 NUMSAVE(optIDC_CHECK_CPUSSE)
3096 NUMSAVE(optIDC_CHECK_CPU3DNOW)
3097 NUMSAVE(optIDC_CHECK_CPUE3DNOW)
3098 NUMSAVE(optIDC_CHECK_CPUCMOV)
3099 NUMSAVE(optIDC_CHECK_CPUEMMX)
3100 NUMSAVE(optIDC_CHECK_CPUSSE2)
3101 NUMSAVE(optIDC_CHECK_VBR)
3102 NUMSAVE(optIDC_COMBO_VBR)
3103 NUMSAVE(optIDC_CHECK_VBR_BITRATE)
3104 NUMSAVE(optIDC_COMBO_VBR_BITRATE_LOW)
3105 NUMSAVE(optIDC_COMBO_VBR_BITRATE_HIGH)
3106 NUMSAVE(optIDC_CHECK_USEPSY)
3107 NUMSAVE(optIDC_CHECK_VERIFY)
3108 NUMSAVE(optIDC_CHECK_16KHZ_LOW_PASS_FILTER)
3109 WritePrivateProfileString(NULL,NULL,NULL,inifile); // Write Flush
3110 #undef NUMSAVE
3111 #undef STRSAVE
3112 return 0;
3113 }
gogo_ConfigDialogInfoLoadINI(void)3114 int gogo_ConfigDialogInfoLoadINI(void)
3115 {
3116 char *section = SEC_GOGO;
3117 char *inifile = timidity_output_inifile;
3118 int num;
3119 char buffer[1024];
3120 #if defined(__MINGW32__) || defined(__CYGWIN__)
3121 #define NUMLOAD(name) \
3122 num = GetPrivateProfileInt(section, #name ,-1,inifile); \
3123 if(num!=-1) gogo_ConfigDialogInfo.name = num;
3124 #define STRLOAD(name,len) \
3125 GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \
3126 buffer[len-1] = '\0'; \
3127 if(buffer[0]!=0) \
3128 strcpy((char *)gogo_ConfigDialogInfo.name ,buffer);
3129 #else
3130 #define NUMLOAD(name) \
3131 num = GetPrivateProfileInt(section, #name ,-1,inifile); \
3132 if(num!=-1) gogo_ConfigDialogInfo. ## name = num;
3133 #define STRLOAD(name,len) \
3134 GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \
3135 buffer[len-1] = '\0'; \
3136 if(buffer[0]!=0) \
3137 strcpy((char *)gogo_ConfigDialogInfo. ## name ,buffer);
3138 #endif
3139 gogo_ConfigDialogInfoLock();
3140 NUMLOAD(optIDC_CHECK_DEFAULT)
3141 NUMLOAD(optIDC_CHECK_COMMANDLINE_OPTS)
3142 STRLOAD(optIDC_EDIT_COMMANDLINE_OPTION,1024)
3143 NUMLOAD(optIDC_CHECK_OUTPUT_FORMAT)
3144 NUMLOAD(optIDC_COMBO_OUTPUT_FORMAT)
3145 NUMLOAD(optIDC_CHECK_MPEG1AUDIOBITRATE)
3146 NUMLOAD(optIDC_COMBO_MPEG1_AUDIO_BITRATE)
3147 NUMLOAD(optIDC_CHECK_MPEG2AUDIOBITRATE)
3148 NUMLOAD(optIDC_COMBO_MPEG2_AUDIO_BITRATE)
3149 NUMLOAD(optIDC_CHECK_ENHANCED_LOW_PASS_FILTER)
3150 STRLOAD(optIDC_EDIT_LPF_PARA1,4)
3151 STRLOAD(optIDC_EDIT_LPF_PARA2,4)
3152 NUMLOAD(optIDC_CHECK_ENCODE_MODE)
3153 NUMLOAD(optIDC_COMBO_ENCODE_MODE)
3154 NUMLOAD(optIDC_CHECK_EMPHASIS_TYPE)
3155 NUMLOAD(optIDC_COMBO_EMPHASIS_TYPE)
3156 NUMLOAD(optIDC_CHECK_OUTFREQ)
3157 STRLOAD(optIDC_EDIT_OUTFREQ,6)
3158 NUMLOAD(optIDC_CHECK_MSTHRESHOLD)
3159 STRLOAD(optIDC_EDIT_MSTHRESHOLD_THRESHOLD,4)
3160 STRLOAD(optIDC_EDIT_MSTHRESHOLD_MSPOWER,4)
3161 NUMLOAD(optIDC_CHECK_USE_CPU_OPTS)
3162 NUMLOAD(optIDC_CHECK_CPUMMX)
3163 NUMLOAD(optIDC_CHECK_CPUSSE)
3164 NUMLOAD(optIDC_CHECK_CPU3DNOW)
3165 NUMLOAD(optIDC_CHECK_CPUE3DNOW)
3166 NUMLOAD(optIDC_CHECK_CPUCMOV)
3167 NUMLOAD(optIDC_CHECK_CPUEMMX)
3168 NUMLOAD(optIDC_CHECK_CPUSSE2)
3169 NUMLOAD(optIDC_CHECK_VBR)
3170 NUMLOAD(optIDC_COMBO_VBR)
3171 NUMLOAD(optIDC_CHECK_VBR_BITRATE)
3172 NUMLOAD(optIDC_COMBO_VBR_BITRATE_LOW)
3173 NUMLOAD(optIDC_COMBO_VBR_BITRATE_HIGH)
3174 NUMLOAD(optIDC_CHECK_USEPSY)
3175 NUMLOAD(optIDC_CHECK_VERIFY)
3176 NUMLOAD(optIDC_CHECK_16KHZ_LOW_PASS_FILTER)
3177 #undef NUMLOAD
3178 #undef STRLOAD
3179 gogo_ConfigDialogInfoUnLock();
3180 return 0;
3181 }
3182
3183 #endif // AU_GOGO
3184
3185
3186 #ifdef AU_VORBIS
3187 ///////////////////////////////////////////////////////////////////////
3188 //
3189 // vorbis ConfigDialog
3190 //
3191 ///////////////////////////////////////////////////////////////////////
3192
3193 volatile vorbis_ConfigDialogInfo_t vorbis_ConfigDialogInfo;
3194
3195 // id �̃R���{�{�b�N�X�̏��̒�`
3196 #define CB_INFO_TYPE1_BEGIN(id) static int cb_info_ ## id [] = {
3197 #define CB_INFO_TYPE1_END };
3198 #define CB_INFO_TYPE2_BEGIN(id) static char * cb_info_ ## id [] = {
3199 #define CB_INFO_TYPE2_END };
3200
3201 // cb_info_type1_�h�c cb_info_type2_�h�c �Ƃ����ӂ��ɂȂ�B
3202
3203 // IDC_COMBO_MODE_jp
3204 CB_INFO_TYPE2_BEGIN(IDC_COMBO_MODE_jp)
3205 "VBR �i�� 1 (��)",(char *)1,
3206 "VBR �i�� 2",(char *)2,
3207 "VBR �i�� 3",(char *)3,
3208 "VBR �i�� 4",(char *)4,
3209 "VBR �i�� 4.99",(char *)499,
3210 "VBR �i�� 5",(char *)5,
3211 "VBR �i�� 6",(char *)6,
3212 "VBR �i�� 7",(char *)7,
3213 "VBR �i�� 8 (�f�t�H���g)",(char *)8,
3214 "VBR �i�� 9",(char *)9,
3215 "VBR �i�� 10 (��)",(char *)10,
3216 #if 0
3217 "�f�t�H���g(��128kbps VBR)",(char *)0,
3218 "��112kbps VBR",(char *)1,
3219 "��128kbps VBR",(char *)2,
3220 "��160kbps VBR",(char *)3,
3221 "��192kbps VBR",(char *)4,
3222 "��256kbps VBR",(char *)5,
3223 "��350kbps VBR",(char *)6,
3224 #endif
3225 NULL
3226 CB_INFO_TYPE2_END
3227
3228 // IDC_COMBO_MODE_en
3229 CB_INFO_TYPE2_BEGIN(IDC_COMBO_MODE_en)
3230 "VBR Quality 1 (low)",(char *)1,
3231 "VBR Quality 2",(char *)2,
3232 "VBR Quality 3",(char *)3,
3233 "VBR Quality 4",(char *)4,
3234 "VBR Quality 4.99",(char *)499,
3235 "VBR Quality 5",(char *)5,
3236 "VBR Quality 6",(char *)6,
3237 "VBR Quality 7",(char *)7,
3238 "VBR Quality 8 (default)",(char *)8,
3239 "VBR Quality 9",(char *)9,
3240 "VBR Quality 10 (high)",(char *)10,
3241 #if 0
3242 "Default (About 128kbps VBR)",(char *)0,
3243 "About 112kbps VBR",(char *)1,
3244 "About 128kbps VBR",(char *)2,
3245 "About 160kbps VBR",(char *)3,
3246 "About 192kbps VBR",(char *)4,
3247 "About 256kbps VBR",(char *)5,
3248 "About 350kbps VBR",(char *)6,
3249 #endif
3250 NULL
3251 CB_INFO_TYPE2_END
3252
3253 static char **cb_info_IDC_COMBO_MODE;
3254
3255 // id �̃R���{�{�b�N�X��I���̐ݒ肷��B
3256 #define CB_SETCURSEL_TYPE1(id) \
3257 { \
3258 int cb_num; \
3259 for(cb_num=0;(int)cb_info_ ## id [cb_num]>=0;cb_num++){ \
3260 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \
3261 if(vorbis_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num]){ \
3262 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num,(LPARAM)0); \
3263 break; \
3264 } \
3265 } \
3266 }
3267 #define CB_SETCURSEL_TYPE2(id) \
3268 { \
3269 int cb_num; \
3270 for(cb_num=0;(int)cb_info_ ## id [cb_num];cb_num+=2){ \
3271 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)0,(LPARAM)0); \
3272 if(vorbis_ConfigDialogInfo.opt ## id == (int) cb_info_ ## id [cb_num+1]){ \
3273 SendDlgItemMessage(hwnd,id,CB_SETCURSEL,(WPARAM)cb_num/2,(LPARAM)0); \
3274 break; \
3275 } \
3276 } \
3277 }
3278 // id �̃R���{�{�b�N�X�̑I����ϐ��ɑ������B
3279 #define CB_GETCURSEL_TYPE1(id) \
3280 { \
3281 int cb_num1, cb_num2; \
3282 cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \
3283 for(cb_num2=0;(int)cb_info_ ## id [cb_num2]>=0;cb_num2++) \
3284 if(cb_num1==cb_num2){ \
3285 vorbis_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2]; \
3286 break; \
3287 } \
3288 }
3289 #define CB_GETCURSEL_TYPE2(id) \
3290 { \
3291 int cb_num1, cb_num2; \
3292 cb_num1 = SendDlgItemMessage(hwnd,id,CB_GETCURSEL,(WPARAM)0,(LPARAM)0); \
3293 for(cb_num2=0;(int)cb_info_ ## id [cb_num2];cb_num2+=2) \
3294 if(cb_num1*2==cb_num2){ \
3295 vorbis_ConfigDialogInfo.opt ## id = (int)cb_info_ ## id [cb_num2+1]; \
3296 break; \
3297 } \
3298 }
3299 // �`�F�b�N����Ă��邩�B
3300 #define IS_CHECK(id) SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)
3301 // �`�F�b�N����B
3302 #define CHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0)
3303 // �`�F�b�N���͂����B
3304 #define UNCHECK(id) SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0)
3305 // id �̃`�F�b�N�{�b�N�X��ݒ肷��B
3306 #define CHECKBOX_SET(id) \
3307 if(vorbis_ConfigDialogInfo.opt ## id>0) \
3308 SendDlgItemMessage(hwnd,id,BM_SETCHECK,1,0); \
3309 else \
3310 SendDlgItemMessage(hwnd,id,BM_SETCHECK,0,0); \
3311 // id �̃`�F�b�N�{�b�N�X��ϐ��ɑ������B
3312 #define CHECKBOX_GET(id) \
3313 if(SendDlgItemMessage(hwnd,id,BM_GETCHECK,0,0)) \
3314 vorbis_ConfigDialogInfo.opt ## id = 1; \
3315 else \
3316 vorbis_ConfigDialogInfo.opt ## id = 0; \
3317 // id �̃G�f�B�b�g��ݒ肷��B
3318 #define EDIT_SET(id) SendDlgItemMessage(hwnd,id,WM_SETTEXT,0,(LPARAM)vorbis_ConfigDialogInfo.opt ## id);
3319 // id �̃G�f�B�b�g��ϐ��ɑ������B
3320 #define EDIT_GET(id,size) SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)vorbis_ConfigDialogInfo.opt ## id);
3321 #define EDIT_GET_RANGE(id,size,min,max) \
3322 { \
3323 char tmpbuf[1024]; \
3324 int value; \
3325 SendDlgItemMessage(hwnd,id,WM_GETTEXT,(WPARAM)size,(LPARAM)vorbis_ConfigDialogInfo.opt ## id); \
3326 value = atoi((char *)vorbis_ConfigDialogInfo.opt ## id); \
3327 if(value<min) value = min; \
3328 if(value>max) value = max; \
3329 sprintf(tmpbuf,"%d",value); \
3330 strncpy((char *)vorbis_ConfigDialogInfo.opt ## id,tmpbuf,size); \
3331 (vorbis_ConfigDialogInfo.opt ## id)[size] = '\0'; \
3332 }
3333 // �R���g���[���̗L����
3334 #define ENABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),TRUE);
3335 // �R���g���[���̖�����
3336 #define DISABLE_CONTROL(id) EnableWindow(GetDlgItem(hwnd,id),FALSE);
3337
3338
3339 static void vorbisConfigDialogProcControlEnableDisable(HWND hwnd);
3340 static void vorbisConfigDialogProcControlApply(HWND hwnd);
3341 static void vorbisConfigDialogProcControlReset(HWND hwnd);
3342 static int vorbis_ConfigDialogInfoLock();
3343 static int vorbis_ConfigDialogInfoUnLock();
3344 static HANDLE hvorbisConfigDailog = NULL;
vorbisConfigDialogProc(HWND hwnd,UINT uMess,WPARAM wParam,LPARAM lParam)3345 static BOOL APIENTRY vorbisConfigDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam)
3346 {
3347 switch (uMess){
3348 case WM_INITDIALOG:
3349 {
3350 int i;
3351 // �R���{�{�b�N�X�̏�����
3352 if (PlayerLanguage == LANGUAGE_JAPANESE)
3353 cb_info_IDC_COMBO_MODE = cb_info_IDC_COMBO_MODE_jp;
3354 else
3355 cb_info_IDC_COMBO_MODE = cb_info_IDC_COMBO_MODE_en;
3356
3357 for(i=0;cb_info_IDC_COMBO_MODE[i];i+=2){
3358 SendDlgItemMessage(hwnd,IDC_COMBO_MODE,CB_INSERTSTRING,(WPARAM)-1,(LPARAM)cb_info_IDC_COMBO_MODE[i]);
3359 }
3360 // �ݒ�
3361 vorbisConfigDialogProcControlReset(hwnd);
3362 }
3363 break;
3364 case WM_COMMAND:
3365 switch (LOWORD(wParam)) {
3366 case IDCLOSE:
3367 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
3368 break;
3369 case IDOK:
3370 vorbisConfigDialogProcControlApply(hwnd);
3371 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
3372 break;
3373 case IDCANCEL:
3374 SendMessage(hwnd,WM_CLOSE,(WPARAM)0,(LPARAM)0);
3375 break;
3376 case IDC_BUTTON_APPLY:
3377 vorbisConfigDialogProcControlApply(hwnd);
3378 break;
3379 case IDC_CHECK_DEFAULT:
3380 vorbisConfigDialogProcControlEnableDisable(hwnd);
3381 break;
3382 case IDC_COMBO_MODE:
3383 break;
3384 default:
3385 break;
3386 }
3387 break;
3388 case WM_NOTIFY:
3389 break;
3390 case WM_SIZE:
3391 return FALSE;
3392 case WM_CLOSE:
3393 vorbis_ConfigDialogInfoSaveINI();
3394 DestroyWindow(hwnd);
3395 break;
3396 case WM_DESTROY:
3397 hvorbisConfigDailog = NULL;
3398 break;
3399 default:
3400 break;
3401 }
3402 return FALSE;
3403 }
3404
3405 // �R���g���[���̗L�� / ������
vorbisConfigDialogProcControlEnableDisable(HWND hwnd)3406 static void vorbisConfigDialogProcControlEnableDisable(HWND hwnd)
3407 {
3408 ENABLE_CONTROL(IDC_CHECK_DEFAULT);
3409 if(IS_CHECK(IDC_CHECK_DEFAULT)){
3410 DISABLE_CONTROL(IDC_COMBO_MODE);
3411 } else {
3412 ENABLE_CONTROL(IDC_COMBO_MODE);
3413 }
3414 }
3415
vorbisConfigDialogProcControlReset(HWND hwnd)3416 static void vorbisConfigDialogProcControlReset(HWND hwnd)
3417 {
3418 // �R���{�{�b�N�X�̑I��ݒ�
3419 CB_SETCURSEL_TYPE2(IDC_COMBO_MODE)
3420 // �`�F�b�N�{�b�N�X�̐ݒ�
3421 CHECKBOX_SET(IDC_CHECK_DEFAULT)
3422 // �G�f�B�b�g�̐ݒ�
3423 // �R���g���[���̗L�� / ������
3424 vorbisConfigDialogProcControlEnableDisable(hwnd);
3425 }
3426
vorbisConfigDialogProcControlApply(HWND hwnd)3427 static void vorbisConfigDialogProcControlApply(HWND hwnd)
3428 {
3429 // �R���{�{�b�N�X�̑I��ݒ�
3430 CB_GETCURSEL_TYPE2(IDC_COMBO_MODE)
3431 // �`�F�b�N�{�b�N�X�̐ݒ�
3432 CHECKBOX_GET(IDC_CHECK_DEFAULT)
3433 // �G�f�B�b�g�̐ݒ�
3434 // �R���g���[���̗L�� / ������
3435 vorbisConfigDialogProcControlEnableDisable(hwnd);
3436 // ���Z�b�g
3437 vorbisConfigDialogProcControlReset(hwnd);
3438 }
3439
3440 #undef CB_INFO_TYPE1_BEGIN
3441 #undef CB_INFO_TYPE1_END
3442 #undef CB_INFO_TYPE2_BEGIN
3443 #undef CB_INFO_TYPE2_END
3444 #undef CB_SETCURSEL_TYPE1
3445 #undef CB_SETCURSEL_TYPE2
3446 #undef CB_GETCURSEL_TYPE1
3447 #undef CB_GETCURSEL_TYPE2
3448 #undef CHECKBOX_SET
3449 #undef CHECKBOX_GET
3450 #undef EDIT_SET
3451 #undef EDIT_GET
3452 #undef EDIT_GET_RANGE
3453
3454 #endif
3455
vorbisConfigDialog(void)3456 int vorbisConfigDialog(void)
3457 {
3458 #ifdef AU_VORBIS
3459 if(!IsWindow(hvorbisConfigDailog)) {
3460 if (PlayerLanguage == LANGUAGE_JAPANESE)
3461 hvorbisConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_VORBIS),(HWND)hPrefWnd,vorbisConfigDialogProc);
3462 else
3463 hvorbisConfigDailog = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_VORBIS_EN),(HWND)hPrefWnd,vorbisConfigDialogProc);
3464 }
3465 ShowWindow(hvorbisConfigDailog,SW_SHOW);
3466 #endif
3467 return 0;
3468 }
3469
3470 #ifdef AU_VORBIS
3471
vorbis_ConfigDialogInfoLock()3472 static int vorbis_ConfigDialogInfoLock()
3473 {
3474 return 0;
3475 }
vorbis_ConfigDialogInfoUnLock()3476 static int vorbis_ConfigDialogInfoUnLock()
3477 {
3478 return 0;
3479 }
3480
vorbis_ConfigDialogInfoInit(void)3481 int vorbis_ConfigDialogInfoInit(void)
3482 {
3483 vorbis_ConfigDialogInfo.optIDC_CHECK_DEFAULT = 1;
3484 vorbis_ConfigDialogInfo.optIDC_COMBO_MODE = 0;
3485 return 0;
3486 }
3487
3488 extern volatile int ogg_vorbis_mode;
vorbis_ConfigDialogInfoApply(void)3489 int vorbis_ConfigDialogInfoApply(void)
3490 {
3491 vorbis_ConfigDialogInfoLock();
3492 if(vorbis_ConfigDialogInfo.optIDC_CHECK_DEFAULT>0){
3493 // vorbis_opts_reset();
3494 vorbis_ConfigDialogInfoUnLock();
3495 return 0;
3496 }
3497 ogg_vorbis_mode = vorbis_ConfigDialogInfo.optIDC_COMBO_MODE;
3498 vorbis_ConfigDialogInfoUnLock();
3499 return 0;
3500 }
3501
3502 #define SEC_VORBIS "vorbis"
vorbis_ConfigDialogInfoSaveINI(void)3503 int vorbis_ConfigDialogInfoSaveINI(void)
3504 {
3505 char *section = SEC_VORBIS;
3506 char *inifile = timidity_output_inifile;
3507 char buffer[1024];
3508 // int len;
3509 #if defined(__MINGW32__) || defined(__CYGWIN__)
3510 #define NUMSAVE(name) \
3511 sprintf(buffer,"%d",vorbis_ConfigDialogInfo.name ); \
3512 WritePrivateProfileString(section, #name ,buffer,inifile);
3513 //#define STRSAVE(name,len) \
3514 // WritePrivateProfileString(section,(char *) #name ,(char *)vorbis_ConfigDialogInfo.name ,inifile);
3515 #else
3516 #define NUMSAVE(name) \
3517 sprintf(buffer,"%d",vorbis_ConfigDialogInfo. ## name ); \
3518 WritePrivateProfileString(section, #name ,buffer,inifile);
3519 //#define STRSAVE(name,len) \
3520 // WritePrivateProfileString(section,(char *) #name ,(char *)vorbis_ConfigDialogInfo. ## name ,inifile);
3521 #endif
3522 NUMSAVE(optIDC_CHECK_DEFAULT)
3523 NUMSAVE(optIDC_COMBO_MODE)
3524 WritePrivateProfileString(NULL,NULL,NULL,inifile); // Write Flush
3525 #undef NUMSAVE
3526 //#undef STRSAVE
3527 return 0;
3528 }
vorbis_ConfigDialogInfoLoadINI(void)3529 int vorbis_ConfigDialogInfoLoadINI(void)
3530 {
3531 char *section = SEC_VORBIS;
3532 char *inifile = timidity_output_inifile;
3533 int num;
3534 // char buffer[1024];
3535 #if defined(__MINGW32__) || defined(__CYGWIN__)
3536 #define NUMLOAD(name) \
3537 num = GetPrivateProfileInt(section, #name ,-1,inifile); \
3538 if(num!=-1) vorbis_ConfigDialogInfo.name = num;
3539 //#define STRLOAD(name,len) \
3540 // GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \
3541 // buffer[len-1] = '\0'; \
3542 // if(buffer[0]!=0) \
3543 // strcpy((char *)vorbis_ConfigDialogInfo.name ,buffer);
3544 #else
3545 #define NUMLOAD(name) \
3546 num = GetPrivateProfileInt(section, #name ,-1,inifile); \
3547 if(num!=-1) vorbis_ConfigDialogInfo. ## name = num;
3548 //#define STRLOAD(name,len) \
3549 // GetPrivateProfileString(section,(char *) #name ,"",buffer,len,inifile); \
3550 // buffer[len-1] = '\0'; \
3551 // if(buffer[0]!=0) \
3552 // strcpy((char *)vorbis_ConfigDialogInfo. ## name ,buffer);
3553 #endif
3554 vorbis_ConfigDialogInfoLock();
3555 NUMLOAD(optIDC_CHECK_DEFAULT)
3556 NUMLOAD(optIDC_COMBO_MODE)
3557 #undef NUMLOAD
3558 //#undef STRLOAD
3559 vorbis_ConfigDialogInfoUnLock();
3560 return 0;
3561 }
3562
3563 #endif // AU_VORBIS
3564
3565
3566 #ifdef AU_PORTAUDIO_DLL
3567 ///////////////////////////////////////////////////////////////////////
3568 //
3569 // asioConfigDialog
3570 //
3571 ///////////////////////////////////////////////////////////////////////
3572 #include <portaudio.h>
3573 #include <pa_asio.h>
3574 #include "w32_portaudio.h"
3575
3576
asioConfigDialog(void)3577 int asioConfigDialog(void)
3578 {
3579 extern HWND hMainWnd;
3580
3581 PaHostApiTypeId HostApiTypeId;
3582 const PaHostApiInfo *HostApiInfo;
3583 PaDeviceIndex DeviceIndex;
3584 PaError err;
3585 HWND hWnd;
3586 int buffered_data;
3587
3588 PaHostApiIndex i, ApiCount;
3589
3590
3591 if(load_portaudio_dll(0))
3592 return -1;
3593
3594 play_mode->acntl(PM_REQ_GETFILLED, &buffered_data);
3595 if (buffered_data != 0) return -1;
3596
3597 play_mode->close_output();
3598 err = Pa_Initialize();
3599 if( err != paNoError ) goto error1;
3600
3601
3602 HostApiTypeId = paASIO;
3603 i = 0;
3604 hWnd = hPrefWnd;
3605 ApiCount = Pa_GetHostApiCount();
3606 do{
3607 HostApiInfo=Pa_GetHostApiInfo(i);
3608 if( HostApiInfo->type == HostApiTypeId ) break;
3609 i++;
3610 }while ( i < ApiCount );
3611 if ( i == ApiCount ) goto error2;
3612 DeviceIndex = HostApiInfo->defaultOutputDevice;
3613 if(DeviceIndex==paNoDevice) goto error2;
3614
3615 if (HostApiTypeId == paASIO){
3616 err = PaAsio_ShowControlPanel( DeviceIndex, (void*) hWnd);
3617 if( err != paNoError ) goto error1;
3618 }
3619 Pa_Terminate();
3620 play_mode->open_output();
3621 // free_portaudio_dll();
3622 return 0;
3623
3624 error1:
3625 // free_portaudio_dll();
3626 MessageBox(NULL, Pa_GetErrorText( err ), "Port Audio (asio) error", IDOK);
3627 error2:
3628 Pa_Terminate();
3629 return -1;
3630 }
3631
3632 #endif //AU_PORTAUDIO_DLL
3633