Beispiel #1
0
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;
}
Beispiel #2
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;
}