Specific noise while using arduino ADC in free running mode
Sounds like you have several things going on. Aliasing is highly likely. First, you are sending data at 115200 baud. That is in bits per second, so with 10 bits per byte, it takes about 200uS to send a 2 byte int. That is about 5K bandwidth. You say that you are sampling at 76.9K, samples per second.

Then you are doing some reasonably complicated math (map()), for an 8 bit micro, on the data which may have an impact on the sampling response. And you have a delay. All of that will have an impact on the sampling rate.

On top of that, and probably more importantly, you are updating the variable 'aval' in your ADC interrupt. 'aval' is a two byte int, so, in an 8 bit processor, it takes two memory moves to save the value. How do you guarantee that you don't get an interrupt between byte moves and have 'aval' be half of one reading and half of a different reading?

Then you are performing the map() function on that data. Is the map() function re-entrant? If the map function retrieves the 'aval' data several times in side the function, it is likely that the data will be updated by the interrupt during that time.

I would try to synchronize the interrupt to your main loop so the 'aval' value is not changed while you are operating on it. I would create another int and, at the beginning of your main loop, disable interrupts, copy 'aval' to that new variable, re-enable interrupts, then operate on the new variable.

That may clean things up some, but I think you will still have a bandwidth issue between the sampling and communications.