I generate a 19kHz audio signal with sampling frequency of 44100 using Matlab. Due to the sampling, some other frequencies are generated in addition to the 19 kHz signal. When I play this audio, I hear additional voices. How I can remove these additional sides? I think it needs aliasing filtering, but I cannot filter signal after DAC, because I generate the audio signal and play it with phone or computer, I cannot put any filter after A/D.
closed as unclear what you're asking by Marcus Müller, MBaz, lennon310, Stanley Pawlukiewicz, Peter K.♦ Jul 23 at 23:22
Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.
If your code is working correctly, than there should be no aliasing.
Most likely this is a problem with your playback system. Most sound cards in computers are terrible and will create a lot of noise and other artifacts. Since the 19 kHz tone is inaudible for most people, you just hear the artifacts.
It's also possible that you turn up the volume too high. The 19 kHz may easily clip your playback hardware. You can't tell if it's "too loud" since your auditory sensitivity at 19 kHz is basically zero. You may have also clipped the sine wave when sending it to the sound card.
There is also the software stack: On Windows, most sound will go through the kernel mixer, which often applies sample rate conversion and other processing. It's default behavior is quite bad, so this is also likely to create a lot of artifacts and noise.
Playing sine waves cleanly requires decent equipment. Typically a good external sound card and a dedicated SW driver that bypasses the operating system. You can try saving it as a wave file and play it over some "known good" hardware.