It won't be possible to emulate EAX environments with the BASS_FX_DX8_REVERB effect, as it has limited configurability, but you may have more luck with the BASS_FX_DX8_I3DL2REVERB effect. If you look in the DSOUND.H header, you will find presets corresponding to the EAX ones, eg. I3DL2_ENVIRONMENT_PRESET_FOREST. For example, you can use them in a BASS_FXSetParameters call like this:
BASS_DX8_I3DL2REVERB param = { I3DL2_ENVIRONMENT_PRESET_FOREST }; // "forest" preset parameters
BASS_FXSetParameters(revfx, ¶m); // apply the parameters
Note BASS_FX_DX8_I3DL2REVERB is only available on Windows. Also note that its output is 100% wet. If you want wet/dry control, you will need to implement that yourself. You can do so by using a "dummy" stream to apply the effect on a copy of the data and then mix that with the original data at the wanted levels. The copying/applying/mixing can be done in a DSPPROC callback. It could all look something like this:
BASS_CHANNELINFO info;
BASS_ChannelGetInfo(stream, &info); // get stream info
revstream = BASS_StreamCreate(info.freq, info.chans, info.flags | BASS_STREAM_DECODE, STREAMPROC_DUMMY, 0); // create dummy stream with same format
revfx = BASS_ChannelSetFX(revstream, BASS_FX_DX8_I3DL2REVERB, 0); // set I3DL2 reverb effect on it
BASS_DX8_I3DL2REVERB param = { I3DL2_ENVIRONMENT_PRESET_FOREST }; // "forest" preset parameters
BASS_FXSetParameters(revfx, ¶m); // apply the parameters
BASS_ChannelSetDSP(stream, ReverbDSP, 0, 0); // set DSP function to apply reverb on main stream
...
void CALLBACK ReverbDSP(HDSP handle, DWORD channel, void *buffer, DWORD length, void *user)
{
float *data = (float*)buffer;
float *temp = new float[length / sizeof(float)]; // temp array
memcpy(temp, data, length); // copy data to temp array
BASS_ChannelGetData(revstream, temp, length); // apply dummy stream's effect(s) to it
for (int a = 0; a < length / sizeof(float); a++)
data[a] = data[a] * dry + temp[a] * wet; // mix the dry and wet data
delete temp;
}
Note this is assuming that the BASS_SAMPLE_FLOAT flag is set on the stream, which I would recommend doing. Please see the documentation for details on the mentioned functions.