Example #1
0
static qboolean S_MODPLUG_CodecOpenStream (snd_stream_t *stream)
{
/* need to load the whole file into memory and pass it to libmodplug */
	byte *moddata;
	long len;
	int mark;

	len = FS_filelength (&stream->fh);
	mark = Hunk_LowMark();
	moddata = (byte *) Hunk_Alloc(len);
	FS_fread(moddata, 1, len, &stream->fh);

	S_MODPLUG_SetSettings(stream);
	stream->priv = ModPlug_Load(moddata, len);
	Hunk_FreeToLowMark(mark); /* free original file data */
	if (!stream->priv)
	{
		Con_DPrintf("Could not load module %s\n", stream->name);
		return false;
	}

	ModPlug_Seek((ModPlugFile*)stream->priv, 0);
#if 0
	/* default volume (128) sounds rather low? */
	ModPlug_SetMasterVolume((ModPlugFile*)stream->priv, 384);	/* 0-512 */
#endif
	return true;
}
Example #2
0
ModPlugFile* load_mod_plug(struct sppb_byte_input *input)
{
	ModPlugFile *self_;

	if (!input->get_length || !input->seek)
		return NULL;

	ssize_t len = input->get_length(input);

	if (len < 0) return NULL;

	void *data = malloc(len);

	if (!data) return NULL;

	if (input->read(input, data, len) != len) {
		MPSP_EPRINTF("failed to read from input\n");
		free(data);
		return NULL;
	}

	self_ = ModPlug_Load(data, len);

	if (self_) {
		// The default volume of 127 is lower than the GMES
		// volume, so set to maximum.
		ModPlug_SetMasterVolume(self_, 512);
	} else {
		MPSP_EPRINTF("failed to load file\n");
	}

	free(data);

	return self_;
}
Example #3
0
void sfMod::Mod::SetMasterVolume(unsigned int volume)
{
  ModPlug_SetMasterVolume(file_, volume);
}
int modplug_init(SDL_AudioSpec *spec)
{
	ModPlug_GetSettings(&settings);
	settings.mFlags=MODPLUG_ENABLE_OVERSAMPLING;
	current_output_channels=spec->channels;
	settings.mChannels=spec->channels>1?2:1;
	settings.mBits=spec->format&0xFF;

	music_swap8 = 0;
	music_swap16 = 0;

	switch(spec->format)
	{
		case AUDIO_U8:
		case AUDIO_S8: {
			if ( spec->format == AUDIO_S8 ) {
				music_swap8 = 1;
			}
			settings.mBits=8;
		}
		break;

		case AUDIO_S16LSB:
		case AUDIO_S16MSB: {
			/* See if we need to correct MikMod mixing */
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
			if ( spec->format == AUDIO_S16MSB ) {
#else
			if ( spec->format == AUDIO_S16LSB ) {
#endif
				music_swap16 = 1;
			}
			settings.mBits=16;
		}
		break;

		default: {
			Mix_SetError("Unknown hardware audio format");
			return -1;
		}

	}

	settings.mFrequency=spec->freq; /*TODO: limit to 11025, 22050, or 44100 ? */
	settings.mResamplingMode=MODPLUG_RESAMPLE_FIR;
	settings.mReverbDepth=0;
	settings.mReverbDelay=100;
	settings.mBassAmount=0;
	settings.mBassRange=50;
	settings.mSurroundDepth=0;
	settings.mSurroundDelay=10;
	settings.mLoopCount=0;
	ModPlug_SetSettings(&settings);
	return 0;
}

/* Uninitialize the music players */
void modplug_exit()
{
}

/* Set the volume for a modplug stream */
void modplug_setvolume(modplug_data *music, int volume)
{
	ModPlug_SetMasterVolume(music->file, volume*4);
}