Program Listing for File delay_buffer.hpp

Return to documentation for file (ear/dsp/delay_buffer.hpp)

#pragma once
#include <memory>
#include "../exceptions.hpp"
#include "../export.hpp"

namespace ear {
  namespace dsp {

    class DelayBufferImpl;

    /// A multi-channel delay buffer
    class EAR_EXPORT DelayBuffer {
     public:
      /// @param nchannels number of input and output channels
      /// @param nsamples length of the delay
      DelayBuffer(size_t nchannels, size_t nsamples);

      /// Process an arbitrary number of samples. \p input and \p output have
      /// \c nchannels channels and \p nsamples samples.
      void process(size_t nsamples, const float *const *input,
                   float *const *output);

      /// Get the delay in samples.
      int get_delay() const;

      ~DelayBuffer();

     private:
      std::unique_ptr<DelayBufferImpl> impl;
    };

  }  // namespace dsp
}  // namespace ear