code: function (inputData, outputData) {
          for (var i = 0; i < outputData.length; i++) {
              this.state.baud_frac += this.state.baud_incr;
              if (this.state.baud_frac >= 1) {
                  this.state.baud_frac -= 1;
                  if (this.state.bitpos == 0) {
                      if (this.state.datapos <= inputData.length) {
                          this.state.curbyte = inputData[this.state.datapos++];
                          this.state.bitpos = 8;
                      } else {
                          return outputData;
                      }
                  }
                  this.state.current_bit = this.state.curbyte & 1;
                  this.state.curbyte >>= 1;
                  this.state.bitpos--;
              }
              outputData[i] = Math.cos(this.state.phase);
              if (this.state.current_bit == 0) {
                  this.state.phase += this.state.omega_lo;
              } else {
                  this.state.phase += this.state.omega_hi;
              }
          }
  
          this.state.datapos = 0;
          return outputData;
      }
docs: does what you think it does -- input data should be uint8 array, outputdata is floats