Hexen gamecode follows very similar syntax like Quake gamecode.
You can use most features/mods which have been developed for Quake in Hexen2 as well with only minor adjustments. *hint*
You have a few different existing .hc compilers. Though, to be able to use most advanced features you should of course use fteqccgui.exe. It has a lot of options which also includes H2 adjustments.
When you are familiar with QuakeC you will feel home very quick with HexenC as well. Coding is almost identical.
Back to your question:
Just like in Quake you also have this sound function (look into .hc files to find lots examples):
void (entity e, float chan, string samp, float vol, float atten) sound
As you can see, float vol
sets the volume. 0 ... 1
Different attentuations and distances can be used by these values:
float ATTN_NONE = 0;
float ATTN_NORM = 1;
float ATTN_IDLE = 2;
float ATTN_STATIC = 3;
float ATTN_LOOP = 4;
Different channels by these:
float CHAN_AUTO = 0;
float CHAN_WEAPON = 1;
float CHAN_VOICE = 2;
float CHAN_ITEM = 3;
float CHAN_BODY = 4;
You can use either original Hexen2 source or any Quake source (incl. mods) to see hundreds of examples of how these things are beeing used.
It is not difficult. I am sure you will be able to do what you are aiming for.