Additional techniques
Trellis codes are a combination of modulation and a convolutional code which allows operation at a higher data rate for a given signal to noise ratio than could be accomplished without the trellis code.
Two dimensional codes “cost” one bit per symbol. Four dimensional codes “cost” one bit per two symbols.
The net coding gain is about 3 dB.
V.32 uses a 32 symbol constellation (5 bits per symbol), and a 2D trellis code.