[Openal] Adding filters
Robert Smyth
macgabhr at tcd.ie
Tue May 26 02:43:05 PDT 2009
Hi,
I am trying to add filters to a raw source using openal. THe code I am using
can be seen below. I have read the sdk ext manual and seem to be doing
everything correctly. The program compiles and I get a correct sound device
to be found and no erros when creating my filter but instead of playing the
filtered source it just repeats what has already been played, i.e the filter
doesnt seem to work. I am using microsoft visual studio 9.0 on a dell
precision through windows.
// Basic.cpp : Defines the entry point for the console application.
//
// Basic
// Just makes a basic sound for a few seconds then applies a low pass filter
// Then some effects
#include<alut.h>
#include<efx.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <al.h>
#include <alc.h>
#include <EFX-Util.h>
#include <efx-creative.h>
#define NULL 0
LPALGENFILTERS alGenFilters;
LPALFILTERI alFilteri;
LPALFILTERF alFilterf;
LPALGENEFFECTS alGenEffects;
LPALEFFECTI alEffecti;
LPALEFFECTF alEffectf;
LPALGENAUXILIARYEFFECTSLOTS alGenAuxiliaryEffectSlots;
LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti;
LPALISFILTER alIsFilter;
int main(int argc, char **argv)
{
ALuint helloBuffer, source;
ALuint filter,filtera;
ALuint EffectSlot,ReverbEffect;
ALCcontext *Context;
ALCdevice *Device;
ALCint iSends;
const ALCchar *DeviceName;
// Setting up openal
alutInit (&argc, argv);
Context=alcGetCurrentContext();
Device=alcGetContextsDevice(Context);
DeviceName=alcGetString(0,ALC_DEFAULT_DEVICE_SPECIFIER);//ALC_DEFAULT_ALL_DEVICES_SPECIFIER
this was here in henrys code
printf("\n\nDevice is %s\n",DeviceName);
// And effects definitions
alGenFilters = (LPALGENFILTERS)alGetProcAddress("alGenFilters");
alFilteri=(LPALFILTERI)alGetProcAddress("alFilteri");
alFilterf=(LPALFILTERF)alGetProcAddress("alFilterf");
alGenEffects=(LPALGENEFFECTS)alGetProcAddress("alGenEffects");
alEffecti=(LPALEFFECTI)alGetProcAddress("alEffecti");
alEffectf=(LPALEFFECTF)alGetProcAddress("alEffectf");
alGenAuxiliaryEffectSlots=(LPALGENAUXILIARYEFFECTSLOTS)alGetProcAddress(
"alGenAuxiliaryEffectSlots");
alAuxiliaryEffectSloti=(LPALAUXILIARYEFFECTSLOTI)alGetProcAddress(
"alAuxiliaryEffectSloti");
alIsFilter= (LPALISFILTER)alGetProcAddress("alIsFilter");
// Setup Buffer from input file or helloworld
if(argc==2)
helloBuffer= alutCreateBufferFromFile(argv[1]);
else
helloBuffer = alutCreateBufferHelloWorld ();
// Generate Source and attach buffer
alGenSources(1,&source);
alSourcei(source,AL_BUFFER,helloBuffer);
// Set up some soruce parameters
alSourcei(source, AL_LOOPING, AL_TRUE);
printf("\nRaw Source\n");
alSourcePlay (source);
alutSleep(3);
alSourceStop(source);
// Now with a filter
alGetError();
alGenFilters(1,&filter);
if (alGetError() == AL_NO_ERROR)
printf("Generated Filter %i\n",filter);
alFilteri(filter,AL_FILTER_TYPE,AL_FILTER_LOWPASS);
if (alGetError() != AL_NO_ERROR)
printf("Low Pass Filter not supported\n");
else
{
alFilterf(filter,AL_LOWPASS_GAIN,0.5);
alFilterf(filter,AL_LOWPASS_GAINHF,0.01);
}
alSourcei(source,AL_DIRECT_FILTER,filter);
if (alGetError() == AL_NO_ERROR)
{
printf("\nFiltered Source\n");
}
alSourcePlay (source);
alutSleep(3);
alSourceStop(source);
--
Robert Smyth
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://opensource.creative.com/pipermail/openal/attachments/20090526/d072aef4/attachment.html
More information about the Openal
mailing list