AbstractWave = function(phase, freq, amp, offset) {
            if (typeof arguments[0] === "object" && !freq && !amp && !offset) {
              //options object
              offset = phase.offset;
              amp = typeof phase.amp === "number" ? phase.amp : phase.amplitude;
              freq = typeof phase.freq === "number" ? phase.freq : phase.frequency;
              phase = phase.phase;
            }
            this.setPhase(defaultNumberTo(phase, 0));
            this.frequency = defaultNumberTo(freq, 0);
            this.amp = defaultNumberTo(amp, 1.0);
            this.offset = defaultNumberTo(offset, 0);
          }
@module toxi/math/waves/AbstractWave
@description Abstract wave oscillator type which needs to be subclassed to implement
different waveforms. Please note that the frequency unit is radians, but
conversion methods to & from Hertz ({@link #hertzToRadians(float, float)})
are included in this base class.