I am trying to write an OFDM modem. I've already written a QAM modem, which I'm using as a basis for this project. The way I'm doing this currently is by spinning up several QAM modulators, each with a carrier frequency corresponding to a different DFT bin, and adding the waves together. On the decode side, I'm spinning up a QAM demodulator for each frequency and feeding the samples into each one.
For instance, I'm trying to use 52 carriers. My DFT has a bin size of 46.875 Hz. I use a symbol rate of 31.25 Hz, because I only process 2/3 of each symbol. My subcarriers are on the following frequencies: 1242.1875 Hz, 1289.0625 Hz, 1335.9375 Hz, etc.
Even though the QAM modem works fine on a clear channel, multiple QAM modems spaced apart as mentioned seems to cause problems. Here is a constellation from one of the demodulators:
Also, here is the output audio file from the OFDM modulator.
I am reasonably confident that the QAM modem is not the issue, as I have tested that it behaves properly with regards to synchronization and noisy channels.