« Return to Thread: Adding filters

Adding filters

by Robert Smyth :: Rate this Message:

Reply to Author | View in Thread

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

_______________________________________________
Openal mailing list
Openal@...
http://opensource.creative.com/mailman/listinfo/openal

 « Return to Thread: Adding filters