6 //timidity.c
\82Å static
\82È
\83O
\83\8d\81[
\83o
\83\8b\95Ï
\90\94\82É
\83A
\83N
\83Z
\83X
\82·
\82é
\95K
\97v
\82ª
\82 \82é
7 //timidity.c
\82ð
\88ê
\90Ø
\8f\91\82«
\8a·
\82¦
\82È
\82¢
\82æ
\82¤
\82É
\82·
\82é
\82½
\82ß
\82É
\82Í
\81A
\82±
\82¤
\82·
\82é
\82µ
\82©
\82È
\82¢
\82Æ
10 void kbtim_initialize(char *szCfgFile);
11 void kbtim_uninitialize(void);
12 void kbtim_play_midi_file(char *szFileName);
14 static void kbtim_start_initialize(void);//timidity_start_initialize
\91\8a\93\96
15 static void kbtim_init_player(void);//timidity_init_player
\91\8a\93\96
17 extern void uninitialize_resampler_coeffs(void);
18 //extern void free_reverb_buffer(void);
19 extern void free_resamp_cache_data(void);
20 extern void free_audio_bucket(void);
21 extern void free_userdrum(void);
22 //extern void free_userdrum2(void);
23 extern void free_soundfonts(void);
26 void kbtim_start_initialize(void)//timidity_start_initialize
\91\8a\93\96
29 static int drums[] = DEFAULT_DRUMCHANNELS;
31 if(!output_text_code){
32 output_text_code = safe_strdup(OUTPUT_TEXT_CODE);
35 opt_aq_max_buff = safe_strdup("5.0");
37 if(!opt_aq_fill_buff){
38 opt_aq_fill_buff = safe_strdup("100%");
40 for(i = 0; i < MAX_CHANNELS; i++){
41 memset(&(channel[i]), 0, sizeof(Channel));
44 CLEAR_CHANNELMASK(quietchannels);
45 CLEAR_CHANNELMASK(default_drumchannels);
47 for(i = 0; drums[i] > 0; i++){
48 SET_CHANNELMASK(default_drumchannels, drums[i] - 1);
50 for(i = 16; i < MAX_CHANNELS; i++){
51 if(IS_SET_CHANNELMASK(default_drumchannels, i & 0xF)){
52 SET_CHANNELMASK(default_drumchannels, i);
55 for(i = 0; i < MAX_CHANNELS; i++){
56 default_program[i] = DEFAULT_PROGRAM;
57 memset(channel[i].drums, 0, sizeof(channel[i].drums));
60 for(i = 0; url_module_list[i]; i++){
61 url_add_module(url_module_list[i]);
63 init_string_table(&opt_config_string);
65 init_freq_table_tuning();
66 init_freq_table_pytha();
67 init_freq_table_meantone();
68 init_freq_table_pureint();
69 init_freq_table_user();
74 init_attack_vol_table();
76 init_modenv_vol_table();
79 init_perceived_vol_table();
81 for(i = 0; i < NSPECIAL_PATCH; i++){
82 special_patch[i] = NULL;
85 int_rand(-1); // initialize random seed
86 int_rand(42); // the 1st number generated is not very random
91 void kbtim_init_player(void)//timidity_init_player
\91\8a\93\96
96 voice = (Voice*) safe_calloc(max_voices, sizeof(Voice));
99 COPY_CHANNELMASK(drumchannels, default_drumchannels);
100 COPY_CHANNELMASK(drumchannel_mask, default_drumchannel_mask);
102 init_output(); // div_playmode_rate
110 void kbtim_initialize(char *szCfgFile)
113 kbtim_start_initialize();
114 initialize_resampler_coeffs();
115 //timidity_pre_load_configuration
\91\8a\93\96
116 lstrcpyn(local, szCfgFile, sizeof(local));
118 read_config_file(local, 0, READ_CONFIG_SUCCESS);
120 //timidity_post_load_configuration
\91\8a\93\96
121 if(opt_config_string.nstring > 0){
122 char **config_string_list;
123 config_string_list = make_string_array(&opt_config_string);
124 if(config_string_list != NULL){
126 for(i = 0; config_string_list[i]; i++){
127 read_config_file(config_string_list[i], 1, READ_CONFIG_SUCCESS); ///r
129 free(config_string_list[0]);
130 free(config_string_list);
135 init_load_soundfont();
137 load_all_instrument();
138 #ifdef MULTI_THREAD_COMPUTE
139 begin_compute_thread();
143 void kbtim_uninitialize(void)
147 //timidity_play_main
\82Ì
\8cã
\8en
\96\96
148 free_archive_files();
150 //win_main
\82Ì
\8cã
\8en
\96\96
151 #ifdef MULTI_THREAD_COMPUTE
152 terminate_compute_thread();
154 safe_free(pcm_alternate_file);
155 pcm_alternate_file = NULL;
156 safe_free(opt_output_name);
157 opt_output_name = NULL;
158 safe_free(opt_aq_max_buff);
159 opt_aq_max_buff = NULL;
160 safe_free(opt_aq_fill_buff);
161 opt_aq_fill_buff = NULL;
162 safe_free(opt_reduce_voice_threshold);
163 opt_reduce_voice_threshold = NULL;
164 safe_free(opt_reduce_quality_threshold);
165 opt_reduce_quality_threshold = NULL;
166 safe_free(opt_reduce_polyphony_threshold);
167 opt_reduce_polyphony_threshold = NULL;
168 safe_free(output_text_code);
169 output_text_code = NULL;
170 safe_free(wrdt_open_opts);
171 wrdt_open_opts = NULL;
178 //freq.c::freq_initialize_fft_arrays
\82Å
\8am
\95Û
\82µ
\82½
\83\81\83\82\83\8a\82Ì
\89ð
\95ú
184 free_global_mblock();
186 //free_reverb_buffer();
187 free_effect_buffers();
191 free_voices();//free_voice_by_Kobarin()
\82Ì
\91ã
\82í
\82è
192 //initialize_resampler_coeffs
\82Å
\8am
\95Û
\82µ
\82½
\83\81\83\82\83\8a\82Ì
\89ð
\95ú
193 uninitialize_resampler_coeffs();
195 for (i = 0; i < MAX_CHANNELS; i++)
199 void kbtim_play_midi_file(char *szFileName)
201 // KbTimDecoder::Open()
\82Ì
\83\8c\81[
\83g
\94½
\89f
202 init_output(); // div_playmode_rate
209 if(!opt_control_ratio){
210 control_ratio = play_mode->rate / CONTROLS_PER_SECOND;
211 if(control_ratio < 1){
214 else if(control_ratio > MAX_CONTROL_RATIO){
215 control_ratio = MAX_CONTROL_RATIO;
219 timidity_init_aq_buff();
221 if(allocate_cache_size > 0)
222 resamp_cache_reset();
225 set_default_program(def_prog);
227 set_default_instrument(def_instr_name);
229 play_mode->open_output();
230 play_midi_file(szFileName);
232 play_mode->close_output();
235 if(free_instruments_afterwards){
238 free_all_midi_file_info();//
\82±
\82ê
\82ª
\82È
\82¢
\82Æ
\8bÈ
\90Ø
\82è
\91Ö
\82¦
\8e\9e\82Ì
\89\89\91t
\82ª
\82¨
\82©
\82µ
\82
\82È
\82é
\81i
\81H
\81j
239 free_userdrum(); //init_userdrum()
\82Å
\8am
\95Û
\82µ
\82½
\83\81\83\82\83\8a\82Ì
\89ð
\95ú
240 free_archive_files();