FFMpeg should handle that just fine.
Can you give me a tutorial ?
From a terminal
ffmpeg -i input.wav -acodec adpcm_adx output.wav
That will take an input wav and encode it as ADX and store it in a wav file. The input file can be a bunch of different formats... whatever ffmpeg is capable of decoding, be it ogg or mp3 or plain pcm. The output should be stored in a wav file - the header will have the compression type set in it. That is the simplest form of transcoding, and will have the same settings as the input file - if the input was mono and 44kHz, so will the output. If the input was 22kHz and stereo, so will the output.
To change the audio before encoding, you can use filters in ffmpeg, or a completely different app to pipe the data to ffmpeg. Here's how you use sox to pipe data to ffmpeg
sox -v 0.90 BadAppleEn.ogg -t wav -c 2 -r 22050 - | ffmpeg -i - -acodec adpcm_adx output.wav
That will have sox decode BadAppleEn.ogg into a wav at 90% volume with two channels and 22kHz sample rate that will be piped into ffmpeg which will then encode it to a wav with ADX encoding. If you needed it to be 8kHz mono 8-bit, you would do
sox -v 0.90 BadAppleEn.ogg -t wav -c 1 -r 8000 -b 8 - | ffmpeg -i - -acodec adpcm_adx output.wav
EDIT: Found an issue with my instructions... you can't actually store an ADX stream in a wave. Weird, but ffmpeg won't do that. In fact, I'm having trouble finding an output format that WILL store an ADX stream. What good is ADX encoding if you can't save the encoded data? It won't even save it as raw data.
EDIT 2: Couldn't find anything on saving the output of ffmpeg when encoding as ADX. I guess for now it's wav2adx or nothing.