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; }
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); } }
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)); }
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); }
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; }
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(); }
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; }