int mdx_open( t_mdxmini *data, char *filename , char *pcmdir ) { data->nlg_tempo = -1; data->songdata = malloc(sizeof(songdata)); MDX_DATA *mdx = NULL; PDX_DATA *pdx = NULL; pdx_pathname = (char *)NULL; no_pdx = FLAG_FALSE; no_fm = FLAG_FALSE; no_opl3 = FLAG_TRUE; no_ym2151 = FLAG_FALSE; no_fm_voice = FLAG_FALSE; fm_waveform = 0; pcm_volume = 127; fm_volume = 127; volume = 127; is_output_to_stdout = FLAG_FALSE; max_infinite_loops = 3; fade_out_speed = 5; dump_voice = FLAG_FALSE; output_titles = FLAG_FALSE; is_use_reverb = FLAG_FALSE; reverb_predelay = 0.05f; reverb_roomsize = 0.5f; reverb_damp = 0.1f; reverb_width = 0.8f; reverb_wet = 0.2f; reverb_dry = 0.5f; dsp_device = (char *)NULL; is_use_fragment = FLAG_TRUE; is_output_to_stdout_in_wav = FLAG_TRUE; if (!self_construct(data->songdata)) { /* failed to create class instances */ return -1; } /* load mdx file */ data->mdx = mdx_open_mdx( filename ); if ( !data->mdx ) return -1; mdx = data->mdx; if ( pcmdir ) strcpy(mdx->pdx_dir , pcmdir ); mdx->is_use_pcm8 = no_pdx == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; mdx->is_use_fm = no_fm == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; mdx->is_use_opl3 = no_opl3 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; mdx->is_use_ym2151 = no_ym2151 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; mdx->is_use_fm_voice = no_fm_voice == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; mdx->fm_wave_form = fm_waveform; mdx->master_volume = volume; mdx->fm_volume = fm_volume * volume/127; mdx->pcm_volume = pcm_volume * volume/127; mdx->max_infinite_loops = max_infinite_loops; mdx->fade_out_speed = fade_out_speed; mdx->is_output_to_stdout = is_output_to_stdout; mdx->is_use_fragment = is_use_fragment; mdx->dsp_device = dsp_device; mdx->dump_voice = dump_voice; mdx->is_output_titles = output_titles; mdx->dsp_speed = dsp_speed; mdx->is_use_reverb = is_use_reverb; mdx->reverb_predelay = reverb_predelay; mdx->reverb_roomsize = reverb_roomsize; mdx->reverb_damp = reverb_damp; mdx->reverb_width = reverb_width; mdx->reverb_dry = reverb_dry; mdx->reverb_wet = reverb_wet; mdx->is_output_to_stdout_in_wav = is_output_to_stdout_in_wav; ym2151_set_logging(1, data->songdata); /* voice data load */ if ( mdx_get_voice_parameter( mdx ) != 0 ) return -1; /* load pdx data */ pdx = data->pdx = _get_pdx( mdx, filename ); data->self = mdx_parse_mml_ym2151_async_initialize(mdx, pdx, data->songdata); if (!data->self) return -1; data->samples = 0; data->channels = pcm8_get_output_channels(data->songdata); return 0; }
int mdx_load( char *filename, MDX_DATA **mdx, PDX_DATA **pdx, int slowDevice, int infloop ) { if (!self_construct()) { /* failed to create class instances */ return -1; } pdx_pathname = (char *)NULL; no_pdx = FLAG_FALSE; no_fm = FLAG_FALSE; no_opl3 = FLAG_TRUE; no_ym2151 = FLAG_FALSE; no_fm_voice = FLAG_FALSE; fm_waveform = 0; pcm_volume = 127; fm_volume = 127; volume = 127; is_output_to_stdout = FLAG_FALSE; max_infinite_loops = (infloop==1?10:1); fade_out_speed = 5; dump_voice = FLAG_FALSE; output_titles = FLAG_FALSE; is_use_reverb = (slowDevice?FLAG_FALSE:FLAG_TRUE); reverb_predelay = 0.05f; reverb_roomsize = 0.5f; reverb_damp = 0.1f; reverb_width = 0.8f; reverb_wet = 0.2f; reverb_dry = 0.5f; dsp_device = (char *)NULL; is_use_fragment = FLAG_TRUE; is_output_to_stdout_in_wav = FLAG_TRUE; /* load mdx file */ *mdx = mdx_open_mdx( filename ); if ( (*mdx) == NULL ) error_end(_("file not found")); (*mdx)->slowDevice = slowDevice; (*mdx)->is_use_pcm8 = no_pdx == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_fm = no_fm == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_opl3 = no_opl3 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_ym2151 = no_ym2151 == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->is_use_fm_voice = no_fm_voice == FLAG_TRUE ? FLAG_FALSE:FLAG_TRUE; (*mdx)->fm_wave_form = fm_waveform; (*mdx)->master_volume = volume; (*mdx)->fm_volume = fm_volume * volume/127; (*mdx)->pcm_volume = pcm_volume * volume/127; (*mdx)->max_infinite_loops = max_infinite_loops; (*mdx)->fade_out_speed = fade_out_speed; (*mdx)->is_output_to_stdout = is_output_to_stdout; (*mdx)->is_use_fragment = is_use_fragment; (*mdx)->dsp_device = dsp_device; (*mdx)->dump_voice = dump_voice; (*mdx)->is_output_titles = output_titles; (*mdx)->is_use_reverb = is_use_reverb; (*mdx)->reverb_predelay = reverb_predelay; (*mdx)->reverb_roomsize = reverb_roomsize; (*mdx)->reverb_damp = reverb_damp; (*mdx)->reverb_width = reverb_width; (*mdx)->reverb_dry = reverb_dry; (*mdx)->reverb_wet = reverb_wet; (*mdx)->is_output_to_stdout_in_wav = is_output_to_stdout_in_wav; /* voice data load */ if ( mdx_get_voice_parameter( *mdx ) == 0 ) { /* load pdx data */ *pdx = _get_pdx(*mdx, filename); } else { self_destroy(); return -1; } return 0; }