#pragma once
#include "randomaccessaudioreadable.h"
#include "resampler.h"
#include "timestretch.h"
#include <memory>

struct AudioClipBackend {
  const std::shared_ptr<TimestretchReader> timestretchReader;
  const std::shared_ptr<RandomAccessAudioReadable> underlyingReadable;
  const std::shared_ptr<Resampler> resampler;

  AudioClipBackend(
      std::shared_ptr<TimestretchReader> timestretchReader,
      std::shared_ptr<RandomAccessAudioReadable> underlyingReadable,
      std::shared_ptr<Resampler> resampler)
      : timestretchReader(std::move(timestretchReader)),
        underlyingReadable(std::move(underlyingReadable)),
        resampler(std::move(resampler)) {}
};