Esempio n. 1
0
    buffer & buffer::operator/=(const buffer & s) {
      // use length of shortest buffer to prevent memory errors
      UInt l = getLength() < s.getLength() ? getLength() : s.getLength();
      Flt * ptr1 = storage.data();
      const Flt * ptr2 = s.storage.data();
      for (; l > 7; l -= 8, ptr1 += 8, ptr2 += 8) {
        ptr1[0] = (ptr2[0] ? ptr1[0] /= ptr2[0] : 0);
        ptr1[1] = (ptr2[1] ? ptr1[1] /= ptr2[1] : 0);
        ptr1[2] = (ptr2[2] ? ptr1[2] /= ptr2[2] : 0);
        ptr1[3] = (ptr2[3] ? ptr1[3] /= ptr2[3] : 0);
        ptr1[4] = (ptr2[4] ? ptr1[4] /= ptr2[4] : 0);
        ptr1[5] = (ptr2[5] ? ptr1[5] /= ptr2[5] : 0);
        ptr1[6] = (ptr2[6] ? ptr1[6] /= ptr2[6] : 0);
        ptr1[7] = (ptr2[7] ? ptr1[7] /= ptr2[7] : 0);

      }
      while (l--) {
        *ptr1 = (*ptr2 ? *ptr1 / *ptr2 : 0);
        ptr1++, ptr2++;
      }

      copyOverflow();

      return (*this);
    }
Esempio n. 2
0
    buffer & buffer::operator*=(const buffer & s) {
      // use length of shortest buffer to prevent memory errors
      UInt l = getLength() < s.getLength() ? getLength() : s.getLength();
      Flt * ptr1 = storage.data();
      const Flt * ptr2 = s.storage.data();
      for (; l > 7; l -= 8, ptr1 += 8, ptr2 += 8) {
        ptr1[0] *= ptr2[0]; ptr1[1] *= ptr2[1]; ptr1[2] *= ptr2[2]; ptr1[3] *= ptr2[3];
        ptr1[4] *= ptr2[4]; ptr1[5] *= ptr2[5]; ptr1[6] *= ptr2[6]; ptr1[7] *= ptr2[7];
      }
      while (l--) *ptr1++ *= *ptr2++;

      copyOverflow();

      return (*this);
    }
Esempio n. 3
0
bool YSE::DSP::fileBuffer::load(const char * fileName, UInt channel) {
  /*ScopedPointer<AudioFormatReader> reader = getReader(fileName);
  if (reader == nullptr) return false;
  if (channel >= reader->numChannels) return false;

  juce::AudioSampleBuffer tBuf;
  tBuf.setSize(reader->numChannels, (Int)reader->lengthInSamples);
  reader->read(&tBuf, 0, (Int)reader->lengthInSamples, 0, true, true);

  setSampleRateAdjustment(static_cast<Flt>(reader->sampleRate) / static_cast<Flt>(SAMPLERATE));

  resize(tBuf.getNumSamples());
  const float * in = tBuf.getReadPointer(channel);
  Flt * out = getPtr();
  for (int i = 0; i < tBuf.getNumSamples(); i++) {
    *out++ = *in++;
  }*/

  copyOverflow();
  return true;
}
void YSE::DSP::wavetable::createFourierTable(const std::vector<Flt> & harmonics, Int length, Flt phase) {
  Dbl width;

  if (length + overflow != storage.size()) resize(length + overflow);
  buffer::operator=(0.f);
  phase *= YSE::Pi2;

  for (UInt i = 0; i < harmonics.size(); i++) {
    Flt * ptr = storage.data();
    Flt amplitude = harmonics[i];

    for (int j = 0; j < length; j++) {
      width = (i + 1) * (j * YSE::Pi2 / length);
      *ptr++ += static_cast<Flt>(amplitude * cos(width + phase));
    }

    Normalize(*this);

  }

  copyOverflow();
}