I’ve verified the steps work (with some deviation required) for CM 4.x through 8.x
As I have access to both Windows and Linux, I have directions that may utilize either one of these platforms.
Save your file as a .wav. I ended up using VLC Player to convert/stream to a .wav file.
On linux (with sox installed)
sox -t wav MYWAVEFILE.wav -t raw -r 8000 -U -b 8 -c 1 NEWFILE.raw resample -ql
Next steps are not well described, but I may expand them later.
Open your callmanager web page
Login on the OS Administration portal
Grab the ringtone.xml file (mine was in the / dir) (TFTP files)
Edit this based on your current ring tone files (follow along like a template)
Upload both the newly edited ringtone.xml and the ringtone.raw
Login on the Unified Serviceability portal
Tools > Services Feature
Restart the TFTP service
Check your phone and verify you can see the new ringtone. I found that certain models (7940) didn’t like ringtones longer than ~5 seconds whereas others (7945) were totally fine.