Skip to content

Commit 93012ac

Browse files
committed
audio: Add pan API
1 parent 89d23cb commit 93012ac

File tree

6 files changed

+42
-0
lines changed

6 files changed

+42
-0
lines changed

src/audio/iaudioplayer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class IAudioPlayer
1919
virtual float pitch() const = 0;
2020
virtual void setPitch(float pitch) = 0;
2121

22+
virtual float pan() const = 0;
23+
virtual void setPan(float pan) = 0;
24+
2225
virtual bool isLoaded() const = 0;
2326

2427
virtual void start() = 0;

src/audio/internal/audioplayer.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ bool AudioPlayer::load(unsigned int size, const void *data, unsigned long sample
5959
m_loaded = true;
6060
ma_sound_set_volume(m_sound, m_volume);
6161
ma_sound_set_pitch(m_sound, m_pitch);
62+
ma_sound_set_pan(m_sound, m_pan);
6263
return true;
6364
}
6465

@@ -83,6 +84,7 @@ bool AudioPlayer::loadCopy(IAudioPlayer *player)
8384
m_copy = true;
8485
ma_sound_set_volume(m_sound, m_volume);
8586
ma_sound_set_pitch(m_sound, m_pitch);
87+
ma_sound_set_pan(m_sound, m_pan);
8688
return true;
8789
}
8890

@@ -123,6 +125,22 @@ void AudioPlayer::setPitch(float pitch)
123125
ma_sound_set_pitch(m_sound, pitch);
124126
}
125127

128+
float AudioPlayer::pan() const
129+
{
130+
return m_pan;
131+
}
132+
133+
void AudioPlayer::setPan(float pan)
134+
{
135+
// -1 ... 0 ... 1
136+
m_pan = pan;
137+
138+
if (!m_loaded)
139+
return;
140+
141+
ma_sound_set_pan(m_sound, pan);
142+
}
143+
126144
bool AudioPlayer::isLoaded() const
127145
{
128146
return m_loaded;

src/audio/internal/audioplayer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class AudioPlayer : public IAudioPlayer
2525
float pitch() const override;
2626
void setPitch(float pitch) override;
2727

28+
float pan() const override;
29+
void setPan(float pan) override;
30+
2831
bool isLoaded() const override;
2932

3033
void start() override;
@@ -40,6 +43,7 @@ class AudioPlayer : public IAudioPlayer
4043
bool m_started = false;
4144
float m_volume = 1;
4245
float m_pitch = 1;
46+
float m_pan = 0;
4347
};
4448

4549
} // namespace libscratchcpp

src/audio/internal/audioplayerstub.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ void AudioPlayerStub::setPitch(float pitch)
3838
m_pitch = pitch;
3939
}
4040

41+
float AudioPlayerStub::pan() const
42+
{
43+
return m_pan;
44+
}
45+
46+
void AudioPlayerStub::setPan(float pan)
47+
{
48+
m_pan = pan;
49+
}
50+
4151
bool AudioPlayerStub::isLoaded() const
4252
{
4353
return true;

src/audio/internal/audioplayerstub.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ class AudioPlayerStub : public IAudioPlayer
2121
float pitch() const override;
2222
void setPitch(float pitch) override;
2323

24+
float pan() const override;
25+
void setPan(float pan) override;
26+
2427
bool isLoaded() const override;
2528

2629
void start() override;
@@ -31,6 +34,7 @@ class AudioPlayerStub : public IAudioPlayer
3134
private:
3235
float m_volume = 1;
3336
float m_pitch = 1;
37+
float m_pan = 0;
3438
};
3539

3640
} // namespace libscratchcpp

test/mocks/audioplayermock.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ class AudioPlayerMock : public IAudioPlayer
1717
MOCK_METHOD(float, pitch, (), (const, override));
1818
MOCK_METHOD(void, setPitch, (float), (override));
1919

20+
MOCK_METHOD(float, pan, (), (const, override));
21+
MOCK_METHOD(void, setPan, (float), (override));
22+
2023
MOCK_METHOD(bool, isLoaded, (), (const, override));
2124

2225
MOCK_METHOD(void, start, (), (override));

0 commit comments

Comments
 (0)