Exemplo n.º 1
0
	BOOL __cdecl GetInfo(char *filename, int audioDataOffset, TrackInfo *trackInfo)
	{
		BYTE module[ASAPInfo_MAX_MODULE_LENGTH];
		int module_len;
		if (!loadModule(filename, module, &module_len))
			return FALSE;
		ASAPInfo *info = ASAPInfo_New();
		if (info == NULL)
			return FALSE;
		if (!ASAPInfo_Load(info, filename, module, module_len)) {
			ASAPInfo_Delete(info);
			return FALSE;
		}
		strcpy(trackInfo->suggestedTitle, ASAPInfo_GetTitle(info));
		trackInfo->fileSize = module_len;
		trackInfo->seekable = TRUE;
		trackInfo->hasEqualizer = FALSE;
		int duration = getSongDuration(info, ASAPInfo_GetDefaultSong(info));
		trackInfo->playingTime = duration >= 0 ? duration : -1;
		trackInfo->bitRate = 0;
		trackInfo->sampleRate = ASAP_SAMPLE_RATE;
		trackInfo->numChannels = ASAPInfo_GetChannels(info);
		trackInfo->bitResolution = BITS_PER_SAMPLE;
		strcpy(trackInfo->fileTypeDescription, "8-bit Atari music");
		ASAPInfo_Delete(info);
		return TRUE;
	}
Exemplo n.º 2
0
static void setSaved(void)
{
	int i;
	_tcscpy(saved_author, ASAPInfo_GetAuthor(edited_info));
	_tcscpy(saved_title, ASAPInfo_GetTitle(edited_info));
	_tcscpy(saved_date, ASAPInfo_GetDate(edited_info));
	for (i = 0; i < ASAPInfo_GetSongs(edited_info); i++) {
		saved_durations[i] = ASAPInfo_GetDuration(edited_info, i);
		saved_loops[i] = ASAPInfo_GetLoop(edited_info, i);
	}
}
Exemplo n.º 3
0
	void get_info(t_uint32 p_subsong, file_info &p_info, abort_callback &p_abort)
	{
		int duration = get_song_duration(p_subsong, false);
		if (duration >= 0)
			p_info.set_length(duration / 1000.0);
		const ASAPInfo *info = ASAP_GetInfo(asap);
		p_info.info_set_int("channels", ASAPInfo_GetChannels(info));
		p_info.info_set_int("subsongs", ASAPInfo_GetSongs(info));
		meta_set(p_info, "composer", ASAPInfo_GetAuthor(info));
		meta_set(p_info, "title", ASAPInfo_GetTitle(info));
		meta_set(p_info, "date", ASAPInfo_GetDate(info));
	}
Exemplo n.º 4
0
static void asap_file_info_box(char *filename)
{
	ASAPInfo *info = asap_get_info(filename);
	char s[3 * ASAPInfo_MAX_TEXT_LENGTH + 100];
	char *p;
	if (info == NULL)
		return;
	p = asap_stpcpy(s, "Author: ");
	p = asap_stpcpy(p, ASAPInfo_GetAuthor(info));
	p = asap_stpcpy(p, "\nName: ");
	p = asap_stpcpy(p, ASAPInfo_GetTitle(info));
	p = asap_stpcpy(p, "\nDate: ");
	p = asap_stpcpy(p, ASAPInfo_GetDate(info));
	*p = '\0';
	ASAPInfo_Delete(info);
	asap_show_message("File information", s);
}
Exemplo n.º 5
0
static BOOL infoChanged(void)
{
	int i;
	if (_tcscmp(ASAPInfo_GetAuthor(edited_info), saved_author) != 0)
		return TRUE;
	if (_tcscmp(ASAPInfo_GetTitle(edited_info), saved_title) != 0)
		return TRUE;
	if (_tcscmp(ASAPInfo_GetDate(edited_info), saved_date) != 0)
		return TRUE;
	for (i = 0; i < ASAPInfo_GetSongs(edited_info); i++) {
		if (ASAPInfo_GetDuration(edited_info, i) != saved_durations[i])
			return TRUE;
		if (saved_durations[i] >= 0 && ASAPInfo_GetLoop(edited_info, i) != saved_loops[i])
			return TRUE;
	}
	return FALSE;
}
Exemplo n.º 6
0
Arquivo: asap-sdl.c Projeto: epi/asap
static void process_file(const char *input_file)
{
	FILE *fp;
	static unsigned char module[ASAPInfo_MAX_MODULE_LENGTH];
	int module_len;
	ASAP *asap;
	const ASAPInfo *info;
	SDL_AudioSpec desired;

	fp = fopen(input_file, "rb");
	if (fp == NULL)
		fatal_error("cannot open %s", input_file);
	module_len = fread(module, 1, sizeof(module), fp);
	fclose(fp);

	asap = ASAP_New();
	if (!ASAP_Load(asap, input_file, module, module_len))
		fatal_error("%s: unsupported file", input_file);
	info = ASAP_GetInfo(asap);
	if (song < 0)
		song = ASAPInfo_GetDefaultSong(info);
	if (!ASAP_PlaySong(asap, song, -1))
		fatal_error("%s: PlaySong failed", input_file);
	print_header("Name", ASAPInfo_GetTitle(info));
	print_header("Author", ASAPInfo_GetAuthor(info));
	print_header("Date", ASAPInfo_GetDate(info));

	if (SDL_Init(SDL_INIT_AUDIO) != 0)
		sdl_error("SDL_Init");
	desired.freq = ASAP_SAMPLE_RATE;
	desired.format = AUDIO_S16LSB;
	desired.channels = ASAPInfo_GetChannels(info);
	desired.samples = 4096;
	desired.callback = audio_callback;
	desired.userdata = asap;
	if (SDL_OpenAudio(&desired, NULL) != 0)
		sdl_error("SDL_OpenAudio");
	SDL_PauseAudio(0);
	printf(" playing - press Enter to quit\n");
	getchar();
	SDL_Quit();
}
Exemplo n.º 7
0
    HRESULT GetData(LPCSHCOLUMNID pscid, PROPVARIANT *pvarData, BOOL vista)
    {
        if (!m_hasInfo)
            return S_FALSE;

        if (pscid->fmtid == FMTID_SummaryInformation) {
            if (pscid->pid == PIDSI_TITLE)
                return GetString(pvarData, ASAPInfo_GetTitle(m_pinfo));
            if (pscid->pid == PIDSI_AUTHOR)
                return GetAuthors(pvarData, vista);
        }
        else if (pscid->fmtid == FMTID_MUSIC) {
            if (pscid->pid == PIDSI_ARTIST)
                return GetAuthors(pvarData, vista);
            if (pscid->pid == PIDSI_YEAR) {
                int year = ASAPInfo_GetYear(m_pinfo);
                if (year < 0) {
                    pvarData->vt = VT_EMPTY;
                    return S_OK;
                }
                pvarData->vt = VT_UI8;
                pvarData->ulVal = (ULONG) year;
                return S_OK;
            }
        }
        else if (pscid->fmtid == FMTID_AudioSummaryInformation) {
            if (pscid->pid == PIDASI_TIMELENGTH) {
                int duration = ASAPInfo_GetDuration(m_pinfo, ASAPInfo_GetDefaultSong(m_pinfo));
                if (duration < 0) {
                    pvarData->vt = VT_EMPTY;
                    return S_OK;
                }
                if (g_windowsVer == WINDOWS_OLD) {
                    duration /= 1000;
                    char timeStr[16];
                    sprintf(timeStr, "%02d:%02d:%02d", duration / 3600, duration / 60 % 60, duration % 60);
                    return GetString(pvarData, timeStr);
                }
                else {
                    pvarData->vt = VT_UI8;
                    pvarData->uhVal.QuadPart = 10000ULL * duration;
                    return S_OK;
                }
            }
            if (pscid->pid == PIDASI_CHANNEL_COUNT) {
                pvarData->vt = VT_UI4;
                pvarData->ulVal = (ULONG) ASAPInfo_GetChannels(m_pinfo);
                return S_OK;
            }
        }
        else if (pscid->fmtid == CLSID_ASAPMetadataHandler) {
            if (pscid->pid == 1) {
                pvarData->vt = VT_UI4;
                pvarData->ulVal = (ULONG) ASAPInfo_GetSongs(m_pinfo);
                return S_OK;
            }
            if (pscid->pid == 2)
                return GetString(pvarData, ASAPInfo_IsNtsc(m_pinfo) ? "NTSC" : "PAL");
        }
        return S_FALSE;
    }