Depending on the datatype used for the Y value of waveform, there are different ranges that are acceptable. Anything outside the range will be coerced without scaling, i.e. they will be coerced to +1 or -1, whichever is closer. This is documented in the Help file for sound data
That said, to avoid your waveform being coerced you will need to scale your data to correct range according to the data type selected. In general the data will be floating-point, so you should scale the waveform to the range of -1.0 to 1.0.
Below it is an example of how to scale an array of doubles to the range of -1.0 to 1.0.