/** * Stop the current music. */ void stopMusic () { // Stop the music playing SDL_PauseAudio(~0); #if defined(USE_MODPLUG) if (musicFile) { ModPlug_Unload(musicFile); musicFile = NULL; } #elif defined(USE_XMP) int state = xmp_get_player(xmpC, XMP_PLAYER_STATE); if (state == XMP_STATE_LOADED || state == XMP_STATE_PLAYING) { xmp_end_player(xmpC); xmp_release_module(xmpC); } #endif SDL_PauseAudio(0); return; }
static bool modplug_scan_stream(struct input_stream *is, const struct tag_handler *handler, void *handler_ctx) { ModPlugFile *f; GByteArray *bdatas; bdatas = mod_loadfile(NULL, is); if (!bdatas) return false; f = ModPlug_Load(bdatas->data, bdatas->len); g_byte_array_free(bdatas, TRUE); if (f == NULL) return false; tag_handler_invoke_duration(handler, handler_ctx, ModPlug_GetLength(f) / 1000); const char *title = ModPlug_GetName(f); if (title != NULL) tag_handler_invoke_tag(handler, handler_ctx, TAG_TITLE, title); ModPlug_Unload(f); return true; }
static int modplug_read_close(AVFormatContext *s) { ModPlugContext *modplug = s->priv_data; ModPlug_Unload(modplug->f); av_freep(&modplug->buf); return 0; }
virtual bool SetOrder(ALuint order) { std::vector<char> data(16384); ALuint total = 0; while(1) { fstream->read(&data[total], data.size()-total); if(fstream->gcount() == 0) break; total += fstream->gcount(); data.resize(total*2); } data.resize(total); ModPlugFile *newMod = ModPlug_Load(&data[0], data.size()); if(!newMod) { SetError("Could not reload data"); return false; } ModPlug_Unload(modFile); modFile = newMod; // There seems to be no way to tell if the seek succeeds ModPlug_SeekOrder(modFile, order); lastOrder = order; return true; }
static struct tag * modplug_stream_tag(struct input_stream *is) { ModPlugFile *f; struct tag *ret = NULL; GByteArray *bdatas; char *title; bdatas = mod_loadfile(NULL, is); if (!bdatas) return NULL; f = ModPlug_Load(bdatas->data, bdatas->len); g_byte_array_free(bdatas, TRUE); if (f == NULL) return NULL; ret = tag_new(); ret->time = ModPlug_GetLength(f) / 1000; title = g_strdup(ModPlug_GetName(f)); if (title) tag_add_item(ret, TAG_TITLE, title); g_free(title); ModPlug_Unload(f); return ret; }
/***************************************************************************** * Close *****************************************************************************/ static void Close( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t*)p_this; demux_sys_t *p_sys = p_demux->p_sys; ModPlug_Unload( p_sys->f ); }
bool sfMod::Mod::LoadFromMemory(const void* data, unsigned int size) { if (getStatus() != sf::SoundStream::Stopped) stop(); if (file_ != NULL) { ModPlug_Unload(file_); file_ = NULL; } name_ = ""; length_ = 0; file_ = ModPlug_Load(data, size); if (file_ == NULL) return false; name_ = ModPlug_GetName(file_); length_ = ModPlug_GetLength(file_); ModPlug_Settings settings; ModPlug_GetSettings(&settings); initialize(settings.mChannels, settings.mFrequency); return true; }
static void xmms_modplug_destroy (xmms_xform_t *xform) { xmms_modplug_data_t *data; xmms_config_property_t *cfgv; int i; g_return_if_fail (xform); data = xmms_xform_private_data_get (xform); g_return_if_fail (data); if (data->buffer) g_string_free (data->buffer, TRUE); if (data->mod) ModPlug_Unload (data->mod); for (i = 0; i < G_N_ELEMENTS (config_params); i++) { cfgv = xmms_xform_config_lookup (xform, config_params[i].key); xmms_config_property_callback_remove (cfgv, xmms_modplug_config_changed, data); } g_free (data); }
//! \brief Deinitialize decoder bool DeInit(void* context) { if (!context) return true; ModPlug_Unload((ModPlugFile*)context); return true; }
/* * Class: com_peculiargames_andmodplug_PlayerThread * Method: ModPlug_JUnload * Signature: ()Z */ JNIEXPORT jboolean JNICALL Java_com_peculiargames_andmodplug_PlayerThread_ModPlug_1JUnload (JNIEnv *env, jclass cls) { if (currmodFile != NULL) { ModPlug_Unload(currmodFile); currmodFile = NULL; } return JNI_TRUE; }
ModPlay::~ModPlay() { stopped = true; // tell the thread to exit waveOutPause(hWaveOut); // make sure no buffers are written and played in case of a race condition waveOutReset(hWaveOut); // calls WOM_DONE for all buffers (thread checks if stopped == true and exits) WaitForSingleObject(hThread, INFINITE); // Let the thread finish waveOutClose(hWaveOut); CloseHandle(hEventDone); CloseHandle(hThread); ModPlug_Unload(modFile); }
bool sfMod::Mod::LoadFromFile(const std::string& filename) { #if SFML_VERSION_MAJOR < 2 if (GetStatus() != sf::SoundStream::Stopped) Stop(); #else if (getStatus() != sf::SoundStream::Stopped) stop(); #endif if (file_ != NULL) { ModPlug_Unload(file_); file_ = NULL; } name_ = ""; length_ = 0; std::string data; std::ifstream file; file.open(filename.c_str(), std::ios::binary); if (!file.is_open()) return false; file.seekg(0, std::ios::end); unsigned int size = static_cast<unsigned int>(file.tellg()); file.seekg(0, std::ios::beg); data.reserve(size); for (unsigned int i = 0; i < size; ++i) data += file.get(); file.close(); file_ = ModPlug_Load(data.c_str(), size); if (file_ == NULL) return false; name_ = ModPlug_GetName(file_); length_ = ModPlug_GetLength(file_); ModPlug_Settings settings; ModPlug_GetSettings(&settings); #if SFML_VERSION_MAJOR < 2 Initialize(settings.mChannels, settings.mFrequency); #else initialize(settings.mChannels, settings.mFrequency); #endif return true; }
void get_info( file_info & p_info, abort_callback & p_abort ) { ModPlugFile* m_info = ModPlug_Load(file_buffer.get_ptr(), file_buffer.get_size()); p_info.info_set( "encoding", "synthesized" ); int type_module = ModPlug_GetModuleType(m_info); p_info.info_set( "codec", "Module file" ); p_info.info_set_int( "channels", 2 ); p_info.meta_set( "title", pfc::stringcvt::string_utf8_from_ansi( ModPlug_GetName(m_info) )); int len = ModPlug_GetLength(m_info); len /= 1000; p_info.set_length( len ); if(m_info)ModPlug_Unload(m_info); }
static void MODPLUG_close(Sound_Sample *sample) { Sound_SampleInternal *internal = (Sound_SampleInternal *) sample->opaque; ModPlugFile *module = (ModPlugFile *) internal->decoder_private; if (modplug_mutex != NULL) SDL_LockMutex(modplug_mutex); total_mods_decoding--; if (modplug_mutex != NULL) SDL_UnlockMutex(modplug_mutex); ModPlug_Unload(module); } /* MODPLUG_close */
void sfMod::Mod::Release() { if (getStatus() != sf::SoundStream::Stopped) stop(); if (file_ != NULL) { ModPlug_Unload(file_); file_ = NULL; } name_ = ""; length_ = 0; buffer_.clear(); buffer_.resize(SFMOD_BUFFERSIZE / 2); }
/** * Stop the current music. */ void stopMusic () { #ifdef USE_MODPLUG // Stop the music playing SDL_PauseAudio(~0); if (musicFile) { ModPlug_Unload(musicFile); musicFile = NULL; } SDL_PauseAudio(0); #endif return; }
void sfMod::Mod::Release() { #if SFML_VERSION_MAJOR < 2 if (GetStatus() != sf::SoundStream::Stopped) Stop(); #else if (getStatus() != sf::SoundStream::Stopped) stop(); #endif if (file_ != NULL) { ModPlug_Unload(file_); file_ = NULL; } name_ = ""; length_ = 0; buffer_.clear(); buffer_.resize(SFMOD_BUFFERSIZE / 2); }
bool sfMod::Mod::LoadFromMemory(const std::string& data) { #if SFML_VERSION_MAJOR < 2 if (GetStatus() != sf::SoundStream::Stopped) Stop(); #else if (getStatus() != sf::SoundStream::Stopped) stop(); #endif if (file_ != NULL) { ModPlug_Unload(file_); file_ = NULL; } name_ = ""; length_ = 0; file_ = ModPlug_Load(data.c_str(), data.size()); if (file_ == NULL) return false; name_ = ModPlug_GetName(file_); length_ = ModPlug_GetLength(file_); ModPlug_Settings settings; ModPlug_GetSettings(&settings); #if SFML_VERSION_MAJOR < 2 Initialize(settings.mChannels, settings.mFrequency); #else initialize(settings.mChannels, settings.mFrequency); #endif return true; }
gboolean get_mod_info(gchar *file, struct tags *tags) { gchar *data; gsize length; ModPlugFile *mf; if(!g_file_get_contents(file, &data, &length, NULL)) { g_critical("Unable to open file : %s", file); return FALSE; } mf = ModPlug_Load((const void*)data, (int)length); if(!mf) { g_critical("ModPlug_Load failed for %s", file); g_free(data); return FALSE; } ; tags->artist = g_strdup(""); tags->album = g_strdup(""); tags->genre = g_strdup(""); tags->comment = g_strdup(""); tags->title = g_strdup(ModPlug_GetName(mf)); tags->channels = 2; tags->samplerate = 44100; tags->length = ModPlug_GetLength(mf)/1000; ModPlug_Unload(mf); g_free(data); return TRUE; }
int main(int argc, char* argv[]) { long size; char *filedata; term_size terminal; ModPlugFile *f2; int mlen; struct timeval tvstart; struct timeval tv; struct timeval tvpause, tvunpause; struct timeval tvptotal; char status[161]; char songname[41]; char notpaus[4]; int loop=0; // kontest int songsplayed = 0; int nFiles = 0, fnOffset[100]; int i; ModPlug_Settings settings; ModPlug_GetSettings(&settings); ao_device *device; ao_sample_format format = {0}; int default_driver; ao_initialize(); default_driver = ao_default_driver_id(); for (i=1; i<argc; i++) { /* check if arguments need to be parsed */ if (argv[i][0] == '-') { if (strstr(argv[i],"-h")) { printf("\n"); help(argv[0],0); } else if (strstr(argv[i],"-v")) { versioninfo(); exit(0); } else if (strstr(argv[i],"-l")) { loop=1; continue; } else if (strstr(argv[i],"-ao")) { default_driver = ao_driver_id(argv[++i]); continue; } if (argv[i][1] == '-') { // not a song if (strstr(argv[i],"--help")) { help(argv[0],0); } else if (strstr(argv[i],"--version")) { versioninfo(); exit(0); } continue; } } /* "valid" filename - store it */ fnOffset[nFiles++] = i; } format.bits = 16; format.channels = 2; format.rate = 44100; format.byte_format = AO_FMT_LITTLE; // printf("Default driver = %i\n", default_driver); char buffer[128]; int result, nread; struct pollfd pollfds; int timeout = 1; /* Timeout in msec. */ int pause=0; int mono=0; int bits=0; int song; // [rev--dly--] [sur--dly--] [bas--rng--] int rev=0; // a int revdly=0; // s int sur=0; // d int surdly=0; // y int bas=0; // x int basrng=0; // c /* Initialize pollfds; we're looking at input, stdin */ pollfds.fd = 0; /* stdin */ pollfds.events = POLLIN; /* Wait for input */ if (argc==1) { help(argv[0],1); } if (!get_term_size(STDIN_FILENO,&terminal)) { fprintf(stderr,"warning: failed to get terminal size\n"); } srand(time(NULL)); for (song=0; song<nFiles; song++) { char *filename = argv[fnOffset[song]]; /* -- Open driver -- */ if (default_driver == ao_driver_id("wav")) { device = ao_open_file(default_driver, "output.wav", 1, &format, NULL /*no options*/); } else { device = ao_open_live(default_driver, &format, NULL /* no options */); } if (device == NULL) { fprintf(stderr, "Error opening device. (%s)\n", filename); fprintf(stderr, "ERROR: %i\n", errno); return 1; } printf("%s ",filename); printf("[%d/%d]",song+1,nFiles); filedata = getFileData(filename, &size); if (filedata == NULL) continue; printf(" [%ld]\n",size); // Note: All "Basic Settings" must be set before ModPlug_Load. settings.mResamplingMode = MODPLUG_RESAMPLE_FIR; /* RESAMP */ settings.mChannels = 2; settings.mBits = 16; settings.mFrequency = 44100; settings.mStereoSeparation = 128; settings.mMaxMixChannels = 256; /* insert more setting changes here */ ModPlug_SetSettings(&settings); f2 = ModPlug_Load(filedata, size); if (!f2) { printf("could not load %s\n", filename); close(audio_fd); free(filedata); /* ? */ } else { songsplayed++; /* settings.mFlags=MODPLUG_ENABLE_OVERSAMPLING | \ MODPLUG_ENABLE_NOISE_REDUCTION | \ MODPLUG_ENABLE_REVERB | \ MODPLUG_ENABLE_MEGABASS | \ MODPLUG_ENABLE_SURROUND;*/ // settings.mReverbDepth = 100; /* 0 - 100 */ * [REV--DLY--] // settings.mReverbDelay = 200; /* 40 - 200 ms 00-FF */ // settings.mSurroundDepth = 100; /* 0 - 100 */ [SUR--DLY--] // settings.mSurroundDelay = 40; /* 5 - 40 ms */ // settings.mBassAmount = 100; /* 0 - 100 */ [BAS--RNG--] // settings.mBassRange = 100; /* 10 - 100 hz */ // [REV--DLY--] [SUR--DLY--] [BAS--RNG--] // [rev--dly--] [sur--dly--] [bas--rng--] set_keypress(); strcpy(songname, ModPlug_GetName(f2)); /* if no modplug "name" - use last 41 characters of filename */ if (strlen(songname)==0) { int l = strlen(filename); char *st = filename; if (l >= 41) st = filename + l - 41; strncpy(songname,st,41); songname[40] = 0; } sprintf(status,"[1Gplaying %s (%%d.%%d/%d\") (%%d/%%d/%%d) \b\b\b\b",songname,ModPlug_GetLength(f2)/1000); if (loop) sprintf(status,"[1Glooping %s (%%d.%%d/%d\") (%%d/%%d/%%d) \b\b\b\b",songname,ModPlug_GetLength(f2)/1000); gettimeofday(&tvstart,NULL); tvptotal.tv_sec=tvptotal.tv_usec=0; mlen=1; while(mlen!=0) { if (mlen==0) { break; } if (!pause) { gettimeofday(&tv,NULL); mlen = ModPlug_Read(f2,audio_buffer,BUF_SIZE); if (mlen > 0 && ao_play(device, audio_buffer, mlen) == 0) { perror("audio write"); exit(1); } } printf(status,tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec,tv.tv_usec/100000,format.rate,format.channels,settings.mBits/*,rev,revdly,sur,surdly,bas,basrng*/); fflush(stdout); if ((mlen==0) && (loop==1)) { /*printf("LOOPING NOW\n");*/ ModPlug_Seek(f2,0); gettimeofday(&tvstart,NULL); mlen=ModPlug_Read(f2,audio_buffer,BUF_SIZE); tvptotal.tv_sec=tvptotal.tv_usec=0; } result = poll(&pollfds, 1, timeout); switch (result) { case 0: /*printf(".");*/ break; case -1: perror("select"); exit(1); default: if (pollfds.revents && POLLIN) { nread = read(0, buffer, 1); /* s/nread/1/2 */ if (nread == 0) { printf("keyboard done\n"); exit(0); } else { buffer[nread] = 0; /* printf("%s", buffer); */ if (buffer[0]=='q') { mlen=0; song=nFiles; } /* quit */ if (buffer[0]=='f') { if ((tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec+10) < (ModPlug_GetLength(f2)/1000)) { ModPlug_Seek(f2,(tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec)*1000+10000); tvstart.tv_sec-=10; } } /* forward 10" */ if (buffer[0]=='b') { if ((tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec-10) > 0) { ModPlug_Seek(f2,(tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec)*1000-10000); tvstart.tv_sec+=10; } } /* backward 10" */ /* if (buffer[0]=='i') { printf("\n"); } */ /* if (buffer[0]=='a') { rev++; settings.mReverbDepth=rev; ModPlug_SetSettings(&settings); } if (buffer[0]=='A') { rev--; settings.mReverbDepth=rev; ModPlug_SetSettings(&settings); } if (buffer[0]=='s') { revdly++; settings.mReverbDelay=revdly; ModPlug_SetSettings(&settings); } if (buffer[0]=='S') { revdly--; settings.mReverbDelay=revdly; ModPlug_SetSettings(&settings); } if (buffer[0]=='d') { sur++; settings.mSurroundDepth=sur; ModPlug_SetSettings(&settings); } if (buffer[0]=='D') { sur--; settings.mSurroundDepth=sur; ModPlug_SetSettings(&settings); } if (buffer[0]=='y') { surdly++; settings.mSurroundDelay=surdly; ModPlug_SetSettings(&settings); } if (buffer[0]=='Y') { surdly--; settings.mSurroundDelay=surdly; ModPlug_SetSettings(&settings); } if (buffer[0]=='x') { bas++; settings.mBassAmount=bas; ModPlug_SetSettings(&settings); } if (buffer[0]=='X') { bas--; settings.mBassAmount=bas; ModPlug_SetSettings(&settings); } if (buffer[0]=='c') { basrng++; settings.mBassRange=basrng; ModPlug_SetSettings(&settings); } if (buffer[0]=='C') { basrng--; settings.mBassRange=basrng; ModPlug_SetSettings(&settings); } */ if (buffer[0]=='n') { if (song<argc) { mlen=0; pause=0; } } if (buffer[0]=='N') { if (song>1) { song-=2; mlen=0; pause=0; } } if (buffer[0]=='r') { song=(int) ((float)(argc-1)*rand()/(RAND_MAX+1.0)); mlen=0; pause=0; // ioctl(audio_fd,SNDCTL_DSP_RESET,0); /* printf("\n[%d?]\n",song+1); */ } /*if (buffer[0]=='R') { song=(int) ((float)(argc-1)*rand()/(RAND_MAX+1.0)); mlen=0; pause=0; }*/ /* if (buffer[0]=='m') { // mono/stereo mono^=1; if (mono) format.channels=1; else format.channels=2; ioctl(audio_fd,SNDCTL_DSP_RESET,0); if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1) { perror("SNDCTL_DSP_CHANNELS"); exit(1); } if (mono) settings.mChannels=1; else settings.mChannels=2; ModPlug_SetSettings(&settings); f2=ModPlug_Load(d,size); ModPlug_Seek(f2,(tv.tv_sec-tvstart.tv_sec-tvptotal.tv_sec)*1000+10000); } */ if (buffer[0]=='l') { loop^=1; if (loop) { memcpy(status+4,"loop",4); } else { memcpy(status+4,"play",4); } } /* loop */ if (buffer[0]=='p') { pause^=1; if (pause) { gettimeofday(&tvpause,NULL); memcpy(notpaus,status+4,4); memcpy(status+4,"paus",4); } else { gettimeofday(&tvunpause,NULL); memcpy(status+4,notpaus,4); tvptotal.tv_sec+=tvunpause.tv_sec-tvpause.tv_sec; tvptotal.tv_usec+=tvunpause.tv_usec-tvpause.tv_usec; /* printf(status,tv.tv_sec-tvstart.tv_sec,tv.tv_usec/100000); */ } } /* pause */ } } } } printf("\n"); reset_keypress(); ModPlug_Unload(f2); ao_close(device); fprintf(stderr, "Closing audio device.\n"); free(filedata); } /* valid module */ } /* for */ ao_shutdown(); return 0; }
/** * @brief Unloads the IT previously loaded. */ void ItDecoder::unload() { ModPlug_Unload(modplug_file); }
static void mod_decode(struct decoder *decoder, struct input_stream *is) { ModPlugFile *f; ModPlug_Settings settings; GByteArray *bdatas; struct audio_format audio_format; int ret; char audio_buffer[MODPLUG_FRAME_SIZE]; enum decoder_command cmd = DECODE_COMMAND_NONE; bdatas = mod_loadfile(decoder, is); if (!bdatas) { g_warning("could not load stream\n"); return; } ModPlug_GetSettings(&settings); /* alter setting */ settings.mResamplingMode = MODPLUG_RESAMPLE_FIR; /* RESAMP */ settings.mChannels = 2; settings.mBits = 16; settings.mFrequency = 44100; /* insert more setting changes here */ ModPlug_SetSettings(&settings); f = ModPlug_Load(bdatas->data, bdatas->len); g_byte_array_free(bdatas, TRUE); if (!f) { g_warning("could not decode stream\n"); return; } audio_format_init(&audio_format, 44100, SAMPLE_FORMAT_S16, 2); assert(audio_format_valid(&audio_format)); decoder_initialized(decoder, &audio_format, is->seekable, ModPlug_GetLength(f) / 1000.0); do { ret = ModPlug_Read(f, audio_buffer, MODPLUG_FRAME_SIZE); if (ret <= 0) break; cmd = decoder_data(decoder, NULL, audio_buffer, ret, 0); if (cmd == DECODE_COMMAND_SEEK) { float where = decoder_seek_where(decoder); ModPlug_Seek(f, (int)(where * 1000.0)); decoder_command_finished(decoder); } } while (cmd != DECODE_COMMAND_STOP); ModPlug_Unload(f); }
/* Close the given modplug stream */ void modplug_delete(modplug_data *music) { ModPlug_Unload(music->file); SDL_free(music); }
static void destroy(struct sppb_plugin_description *plugin, void *context) { MPSP_DPRINTF("parser: destroy(%p)\n", context); ModPlug_Unload(self); }
~input_modplug() { if(m_player)ModPlug_Unload(m_player); }
static void S_MODPLUG_CodecCloseStream (snd_stream_t *stream) { ModPlug_Unload((ModPlugFile*)stream->priv); S_CodecUtilClose(&stream); }
virtual ~modStream() { if(modFile) ModPlug_Unload(modFile); modFile = NULL; }
MPDemux::~MPDemux() { if ( mpfile ) ModPlug_Unload( mpfile ); }