Exemplo n.º 1
0
/**
 * Delete a MIDI player instance.
 * @param player MIDI player instance
 * @return Always returns #FLUID_OK
 */
int
delete_fluid_player(fluid_player_t *player)
{
    fluid_list_t *q;
    fluid_playlist_item* pi;

    if (player == NULL) {
        return FLUID_OK;
    }
    fluid_player_stop(player);
    fluid_player_reset(player);

    while (player->playlist != NULL) {
        q = player->playlist->next;
        pi = (fluid_playlist_item*) player->playlist->data;
        FLUID_FREE(pi->filename);
        FLUID_FREE(pi->buffer);
        FLUID_FREE(pi);
        delete1_fluid_list(player->playlist);
        player->playlist = q;
    }

    FLUID_FREE(player);
    return FLUID_OK;
}
Exemplo n.º 2
0
void
fluid_player_playlist_load(fluid_player_t *player, unsigned int msec)
{
    fluid_playlist_item* current_playitem;
    int i;

    do {
        fluid_player_advancefile(player);
        if (player->currentfile == NULL) {
            /* Failed to find next song, probably since we're finished */
            player->status = FLUID_PLAYER_DONE;
            return;
        }

        fluid_player_reset(player);
        current_playitem = (fluid_playlist_item *) player->currentfile->data;
    } while (fluid_player_load(player, current_playitem) != FLUID_OK);

    /* Successfully loaded midi file */

    player->begin_msec = msec;
    player->start_msec = msec;
    player->start_ticks = 0;
    player->cur_ticks = 0;

    if (player->reset_synth_between_songs) {
        fluid_synth_system_reset(player->synth);
    }

    for (i = 0; i < player->ntracks; i++) {
        if (player->track[i] != NULL) {
            fluid_track_reset(player->track[i]);
        }
    }
}
Exemplo n.º 3
0
/**
 * Delete a MIDI player instance.
 * @param player MIDI player instance
 * @return Always returns #FLUID_OK
 */
int delete_fluid_player(fluid_player_t* player)
{
	fluid_list_t* q;	

	if (player == NULL) {
		return FLUID_OK;
	}
	fluid_player_stop(player);
	fluid_player_reset(player);
	
	while (player->playlist != NULL) {
		q = player->playlist->next;
		FLUID_FREE(player->playlist->data);
		delete1_fluid_list(player->playlist);
		player->playlist = q;
	}

	FLUID_FREE(player);
	return FLUID_OK;
}