How does waveshaper actually work?


If the array maps to -1.0 and 1.0, it only contains half of the wave pattern. What happens to the other half? Does it just mirror the array? If so, is it impossible to asymmetrically shape a sound input?

Also, are the -1.0 and 1.0 values absolute or is it just a representation of the lowest and highest point of the wave?
Its just a linearly interpolated lookup table. -1 to +1 is the full range of the audio signal. Every sample in therefore mapped to the output via the mapping.
I am not completely sure what the -1 and 1 represent. Are they the lowest and highest frequencies of the sample? If so, how can I derive an array of values that would change the sound to my intentions?
A sample is a sample, it doesn't have a frequency, its just the signal at a point in time. Each sample is mapped via the (linearly interpolated) table the same. -1 to +1 is the range of sample values in this mapping representing the full signal range. Put another way its a time-domain transfer function.