Skip to content

File WaveTableLoader.h

File List > external-docs > libDaisy > src > util > WaveTableLoader.h

Go to the documentation of this file

Source Code

#pragma once
#include "fatfs.h"
#include "util/wav_format.h"
namespace daisy
{
class WaveTableLoader
{
  public:
    enum class Result
    {
        OK,
        ERR_TABLE_INFO_OVERFLOW,
        ERR_FILE_READ,
        ERR_GENERIC,
    };
    WaveTableLoader() {}
    ~WaveTableLoader() {}

    void Init(float *mem, size_t mem_size);

    Result SetWaveTableInfo(size_t samps, size_t count);

    Result Import(const char *filename);

    float *GetTable(size_t idx);

  private:
    static constexpr int kWorkspaceSize = 1024;
    float *              buf_;
    size_t               buf_size_;
    WAV_FormatTypeDef    header_;
    size_t               samps_per_table_;
    size_t               num_tables_;
    int32_t              workspace[kWorkspaceSize];
    FIL                  fp_;
};

} // namespace daisy