modulate/demodulate audio file as FSK signal mixed with music signal What I want to do:
I want to encode an audio message inside a regular music file; this shall be decoded by an audio analyzer running on another machine (by listening to the audio playback from the first machine).

What I have tried so far:
Encode:  


Change the pitch of secret audio message to D#/EB-10 (which is 19.5
KHz according to this site:
http://www.flutopedia.com/pitch_to_frequency.htm). This should
convert the secret audio message to something that falls outside of
the human audible range.
Merge this secret audio message with music file.


Decode:  


Apply high pass filter at 19 KHz.
Change pitch back to the original range (e.g. B-6)


I'm using Audacity to do the above steps.

The problems that I'm facing:
1. The "secret" message is still audible in the encoded output.
2. Decoded output is significantly different than the secret message.

I'm new to the audio dsp domain, so I'd appreciate a review of my approach and suggestions to achieve the goal that I described above. 

Edit:
Below is the spectrum plot for "secret" audio message generated using Audacity.



Edit2:
Below image shows linear spectral chart for "secret" signal mixed with generated tone of 19kHz.  



Edit3:
The below spectral graph is for the carrier "music" file.
So, your unmixed secret signal has energy content in a frequency range of ca -6 kHz to +6 kHz.

As far as I understand, you mix that with a real cosine of ca 19 kHz, so that it now has signal content in -25 kHz to -13 kHz, and +13 kHz to +25 kHz. All things are still nice and symmetric – so if you mix it back down to 0 Hz, you'd still have the original spectrum.

Only that your 48 kHz sampling rate doesn't even allow your to unambigously represent a signal above 24 kHz – it instantly aliases into the lower end, and vice versa, so you have distortion in your signal of interest (still shouldn't be hearable).

But then you high-pass filter at 500 kHz above the frequency you shifted to – but that cuts off 5.5 kHz of your signal! So, afterwards, your signal is no longer symmetrical in spectrum, and mixing it back down will produce non-constructive aliases.

So, to understand what's happening here, plot your secret signal's spectrum after being shifted up. Don't use the logarithmic frequency axis, but simply linear frequency.