Etterna 0.75.1
Loading...
Searching...
No Matches
RageSoundReader_Merge.h
1#ifndef RAGE_SOUND_READER_MERGE
2#define RAGE_SOUND_READER_MERGE
3
4#include "RageSoundReader.h"
5#include <vector>
6
9{
10 public:
12 ~RageSoundReader_Merge() override;
14 RageSoundReader_Merge* Copy() const override
15 {
16 return new RageSoundReader_Merge(*this);
17 }
18
19 int GetLength() const override;
20 int GetLength_Fast() const override;
21 int SetPosition(int iFrame) override;
22 int Read(float* pBuf, int iFrames) override;
23 int GetSampleRate() const override { return m_iSampleRate; }
24 unsigned GetNumChannels() const override { return m_iChannels; }
25 bool SetProperty(const std::string& sProperty, float fValue) override;
26 int GetNextSourceFrame() const override { return m_iNextSourceFrame; }
27 float GetStreamToSourceRatio() const override
28 {
29 return m_fCurrentStreamToSourceRatio;
30 }
31 std::string GetError() const override { return ""; }
32
33 void AddSound(RageSoundReader* pSound);
34
38 void Finish(int iPreferredSampleRate);
39
40 private:
41 int GetSampleRateInternal() const;
42
43 int m_iSampleRate;
44 unsigned m_iChannels;
45
46 std::vector<RageSoundReader*> m_aSounds;
47
48 /* Read state: */
49 int m_iNextSourceFrame;
50 float m_fCurrentStreamToSourceRatio;
51};
52
53#endif
Chain different sounds together.
Definition RageSoundReader_Merge.h:9
void Finish(int iPreferredSampleRate)
Finish adding sounds.
Definition RageSoundReader_Merge.cpp:60
Definition RageSoundReader.h:7