How to do voltage referencing?

I read that arduino can take input of 5 v or 3.3 V and map that between 0-1023. So depending on which input you are inputting at, the 0-1023 will map differently. I hope what I understand is correct. Now, what can I use, in terms of hardware, to take a 1.8 V sensor and map that to arduino's 5 V input? If I just connect normally then arduino will think the 0-1.8 V input voltage is part of the 0-5V and will give inaccurate values. So what can I do?

Also, how can I use small microphones to create my own sensor that can give output 0-5V for arduino to translate the sound levels as voltage peaks? I am not too familiar with how to use op-amps but I did use them in school to analyze circuits so I know some basics.

With Reference voltage set to 3.3V by selecting external Aref (vs VCC (5V) or 1.1V, the internal references), an analogRead of 1.8V in will return a reading of 1.8/3.3 * 1023 = ~558.

If you make no Aref selection, then Vcc (5V) will be used, and analogRead will return 1.8/5 *1023 = ~368.

Use a summing op-amp circuit to add some DC offset to your signal to get in the range of 0-5V.
Will need low pass filter to get frequency range in the 4KHz range so the ADC can sample fast enough to detect peaks.

The only way to have a switchable AREF of 5 or 3.3V is to actually switch the AREF
pin between 5V and 3.3V.

This could be done with an analog switch chip under program control, or a couple of
logic-level(*) p-channel FETs (drain to AREF, sources to 3.3V and 5V.

An analog SPDT switch is safer as you don't risk shorting the 5V and 3.3V rails together.

(*) one would need to turn on with Vgs=-3.3V

You could simply live with a reference voltage of 5V and lose some precision for
the 3.3V signal.