+diff -pruN --exclude build ./demo_clean/src/LAppWavFileHandler.cpp ./demo_dev/src/LAppWavFileHandler.cpp
+--- ./demo_clean/src/LAppWavFileHandler.cpp 2024-03-28 18:19:04.555847400 +0000
++++ ./demo_dev/src/LAppWavFileHandler.cpp 2023-03-05 23:22:10.921862800 +0000
+@@ -11,8 +11,7 @@
+ #include "LAppPal.hpp"
+
+ LAppWavFileHandler::LAppWavFileHandler()
+- : _rawData(NULL)
+- , _pcmData(NULL)
++ : _pcmData(NULL)
+ , _userTimeSeconds(0.0f)
+ , _lastRms(0.0f)
+ , _sampleOffset(0)
+@@ -21,11 +20,6 @@ LAppWavFileHandler::LAppWavFileHandler()
+
+ LAppWavFileHandler::~LAppWavFileHandler()
+ {
+- if (_rawData != NULL)
+- {
+- CSM_FREE(_rawData);
+- }
+-
+ if (_pcmData != NULL)
+ {
+ ReleasePcmData();
+@@ -91,115 +85,11 @@ Csm::csmFloat32 LAppWavFileHandler::GetR
+ return _lastRms;
+ }
+
+-const LAppWavFileHandler::WavFileInfo& LAppWavFileHandler::GetWavFileInfo() const
+-{
+- return _wavFileInfo;
+-}
+-
+-const Csm::csmByte* LAppWavFileHandler::GetRawData() const
+-{
+- return _rawData;
+-}
+-
+-Csm::csmUint64 LAppWavFileHandler::GetRawDataSize() const
+-{
+- return _rawDataSize;
+-}
+-
+-Csm::csmVector<Csm::csmFloat32> LAppWavFileHandler::GetPcmData() const
+-{
+- Csm::csmVector<Csm::csmFloat32> buffer;
+-
+- for (Csm::csmUint32 sampleCount = 0; sampleCount < _wavFileInfo._samplesPerChannel; sampleCount++)
+- {
+- for (Csm::csmUint32 channelCount = 0; channelCount < _wavFileInfo._numberOfChannels; channelCount++)
+- {
+- buffer.PushBack(_pcmData[channelCount][sampleCount]);
+- }
+- }
+-
+- return buffer;
+-}
+-
+-void LAppWavFileHandler::GetPcmDataChannel(Csm::csmFloat32* dst, Csm::csmUint32 useChannel) const
+-{
+- for (Csm::csmUint32 sampleCount = 0; sampleCount < _wavFileInfo._samplesPerChannel; sampleCount++)
+- {
+- dst[sampleCount] = _pcmData[useChannel][sampleCount];
+- }
+-}
+-
+-Csm::csmFloat32 LAppWavFileHandler::NormalizePcmSample(Csm::csmUint32 bitsPerSample, Csm::csmByte* data, Csm::csmUint32 dataSize)
+-{
+- Csm::csmInt32 pcm32;
+-
+- // 32ビット幅に拡張してから-1~1の範囲に丸める
+- switch (bitsPerSample)
+- {
+- case 8:
+- if (1 <= dataSize)
+- {
+- const Csm::csmUint8 ret = data[0];
+- pcm32 = static_cast<Csm::csmInt32>(ret) - 128;
+- pcm32 <<= 24;
+- }
+- else
+- {
+- pcm32 = 0;
+- }
+- break;
+- case 16:
+- if (2 <= dataSize)
+- {
+- const Csm::csmUint16 ret = (data[1] << 8) | data[0];
+- pcm32 = ret << 16;
+- }
+- else
+- {
+- pcm32 = 0;
+- }
+- break;
+- case 24:
+- if (3 <= dataSize)
+- {
+- const Csm::csmUint32 ret = (data[2] << 16) | (data[1] << 8) | data[0];
+- pcm32 = ret << 8;
+- }
+- else
+- {
+- pcm32 = 0;
+- }
+- break;
+- case 32:
+- if (4 <= dataSize)
+- {
+- const Csm::csmUint32 ret = (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0];
+- pcm32 = ret << 0;
+- }
+- else
+- {
+- pcm32 = 0;
+- }
+- break;
+- default:
+- // 対応していないビット幅
+- pcm32 = 0;
+- break;
+- }
+-
+- return static_cast<Csm::csmFloat32>(pcm32) / INT32_MAX;
+-}
+-
+ Csm::csmBool LAppWavFileHandler::LoadWavFile(const Csm::csmString& filePath)
+ {
+ Csm::csmBool ret;
+
+ // 既にwavファイルロード済みならば領域開放
+- if (_rawData != NULL)
+- {
+- CSM_FREE(_rawData);
+- _rawDataSize = 0;
+- }
+ if (_pcmData != NULL)
+ {
+ ReleasePcmData();
+@@ -251,10 +141,10 @@ Csm::csmBool LAppWavFileHandler::LoadWav
+ _wavFileInfo._numberOfChannels = _byteReader.Get16LittleEndian();
+ // サンプリングレート
+ _wavFileInfo._samplingRate = _byteReader.Get32LittleEndian();
+- // 平均データ速度
+- _wavFileInfo._avgBytesPerSec = _byteReader.Get32LittleEndian();
+- // ブロックサイズ
+- _wavFileInfo._blockAlign = _byteReader.Get16LittleEndian();
++ // データ速度[byte/sec](読み飛ばし)
++ _byteReader.Get32LittleEndian();
++ // ブロックサイズ(読み飛ばし)
++ _byteReader.Get16LittleEndian();
+ // 量子化ビット数
+ _wavFileInfo._bitsPerSample = _byteReader.Get16LittleEndian();
+ // fmtチャンクの拡張部分の読み飛ばし
+@@ -280,25 +170,16 @@ Csm::csmBool LAppWavFileHandler::LoadWav
+ _wavFileInfo._samplesPerChannel = (dataChunkSize * 8) / (_wavFileInfo._bitsPerSample * _wavFileInfo._numberOfChannels);
+ }
+ // 領域確保
+- _rawDataSize = static_cast<Csm::csmUint64>(_wavFileInfo._blockAlign) * static_cast<Csm::csmUint64>(_wavFileInfo._samplesPerChannel);
+- _rawData = static_cast<Csm::csmByte*>(CSM_MALLOC(sizeof(Csm::csmByte) * _rawDataSize));
+ _pcmData = static_cast<Csm::csmFloat32**>(CSM_MALLOC(sizeof(Csm::csmFloat32*) * _wavFileInfo._numberOfChannels));
+ for (Csm::csmUint32 channelCount = 0; channelCount < _wavFileInfo._numberOfChannels; channelCount++)
+ {
+ _pcmData[channelCount] = static_cast<Csm::csmFloat32*>(CSM_MALLOC(sizeof(Csm::csmFloat32) * _wavFileInfo._samplesPerChannel));
+ }
+ // 波形データ取得
+- Csm::csmUint64 rawPos = 0;
+ for (Csm::csmUint32 sampleCount = 0; sampleCount < _wavFileInfo._samplesPerChannel; sampleCount++)
+ {
+ for (Csm::csmUint32 channelCount = 0; channelCount < _wavFileInfo._numberOfChannels; channelCount++)
+ {
+- // 正規化前
+- for (Csm::csmUint32 byteCount = 0; byteCount < _wavFileInfo._bitsPerSample / 8; byteCount++)
+- {
+- _rawData[rawPos++] = _byteReader._fileByte[_byteReader._readOffset + byteCount];
+- }
+- // 正規化後
+ _pcmData[channelCount][sampleCount] = GetPcmSample();
+ }
+ }
+diff -pruN --exclude build ./demo_clean/src/LAppWavFileHandler.hpp ./demo_dev/src/LAppWavFileHandler.hpp
+--- ./demo_clean/src/LAppWavFileHandler.hpp 2024-03-28 18:19:04.132172700 +0000
++++ ./demo_dev/src/LAppWavFileHandler.hpp 2023-03-05 23:22:10.871136700 +0000
+@@ -8,7 +8,7 @@
+ #pragma once
+
+ #include <CubismFramework.hpp>
+-#include <Type/csmVector.hpp>
++#include <Utils/CubismString.hpp>
+
+ /**
+ * @brief wavファイルハンドラ
+@@ -18,28 +18,6 @@ class LAppWavFileHandler
+ {
+ public:
+ /**
+- * @brief 読み込んだwavfileの情報
+- */
+- struct WavFileInfo
+- {
+- /**
+- * @brief コンストラクタ
+- */
+- WavFileInfo() : _fileName(""), _numberOfChannels(0),
+- _bitsPerSample(0), _samplingRate(0), _samplesPerChannel(0),
+- _avgBytesPerSec(0), _blockAlign(0)
+- { }
+-
+- Csm::csmString _fileName; ///< ファイル名
+- Csm::csmUint32 _numberOfChannels; ///< チャンネル数
+- Csm::csmUint32 _bitsPerSample; ///< サンプルあたりビット数
+- Csm::csmUint32 _samplingRate; ///< サンプリングレート
+- Csm::csmUint32 _samplesPerChannel; ///< 1チャンネルあたり総サンプル数
+- Csm::csmUint32 _avgBytesPerSec; ///< 平均データ速度
+- Csm::csmUint32 _blockAlign; ///< ブロックサイズ
+- } _wavFileInfo;
+-
+- /**
+ * @brief コンストラクタ
+ */
+ LAppWavFileHandler();
+@@ -72,53 +50,6 @@ public:
+ */
+ Csm::csmFloat32 GetRms() const;
+
+- /**
+- * @brief ファイル情報を取得
+- *
+- * @retval ファイル情報
+- */
+- const WavFileInfo& GetWavFileInfo() const;
+-
+- /**
+- * @brief 正規化前のデータを取得
+- *
+- * @retval 正規化前のデータ
+- */
+- const Csm::csmByte* GetRawData() const;
+-
+- /**
+- * @brief 正規化前のデータの大きさを取得
+- *
+- * @retval 正規化前のデータの大きさ
+- */
+- Csm::csmUint64 GetRawDataSize() const;
+-
+- /**
+- * @brief 正規化データを取得する
+- *
+- * @retval 正規化データ
+- */
+- Csm::csmVector<Csm::csmFloat32> GetPcmData() const;
+-
+- /**
+- * @brief 引数で指定したチャンネルの正規化データを取得する
+- *
+- * @param[in] dst 格納先
+- * @param[in] useChannel 使用するチャンネル
+- */
+- void GetPcmDataChannel(Csm::csmFloat32* dst, Csm::csmUint32 useChannel) const;
+-
+- /**
+- * @brief -1~1の範囲の1サンプル取得
+- *
+- * @param[in] bitsPerSample ビット深度
+- * @param[in] data 正規化したいデータ
+- * @param[in] dataSize 正規化したいデータの大きさ
+- *
+- * @retval csmFloat32 正規化されたサンプル
+- */
+- static Csm::csmFloat32 NormalizePcmSample(Csm::csmUint32 bitsPerSample, Csm::csmByte* data, Csm::csmUint32 dataSize);
+-
+ private:
+ /**
+ * @brief wavファイルのロード
+@@ -141,6 +72,25 @@ private:
+ Csm::csmFloat32 GetPcmSample();
+
+ /**
++ * @brief 読み込んだwavfileの情報
++ */
++ struct WavFileInfo
++ {
++ /**
++ * @brief コンストラクタ
++ */
++ WavFileInfo() : _fileName(""), _numberOfChannels(0),
++ _bitsPerSample(0), _samplingRate(0), _samplesPerChannel(0)
++ { }
++
++ Csm::csmString _fileName; ///< ファイル名
++ Csm::csmUint32 _numberOfChannels; ///< チャンネル数
++ Csm::csmUint32 _bitsPerSample; ///< サンプルあたりビット数
++ Csm::csmUint32 _samplingRate; ///< サンプリングレート
++ Csm::csmUint32 _samplesPerChannel; ///< 1チャンネルあたり総サンプル数
++ } _wavFileInfo;
++
++ /**
+ * @brief バイトリーダ
+ */
+ struct ByteReader {
+@@ -225,8 +175,6 @@ private:
+ Csm::csmUint32 _readOffset; ///< ファイル参照位置
+ } _byteReader;
+
+- Csm::csmByte* _rawData; ///< 正規化される前のバイト列
+- Csm::csmUint64 _rawDataSize; ///< 正規化される前のバイト列の大きさ
+ Csm::csmFloat32** _pcmData; ///< -1から1の範囲で表現された音声データ配列
+ Csm::csmUint32 _sampleOffset; ///< サンプル参照位置
+ Csm::csmFloat32 _lastRms; ///< 最後に計測したRMS値