aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/audio_speech.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/audio_speech.cpp')
-rw-r--r--engines/bladerunner/audio_speech.cpp32
1 files changed, 23 insertions, 9 deletions
diff --git a/engines/bladerunner/audio_speech.cpp b/engines/bladerunner/audio_speech.cpp
index 90fc213f2d..1f3465c7eb 100644
--- a/engines/bladerunner/audio_speech.cpp
+++ b/engines/bladerunner/audio_speech.cpp
@@ -22,6 +22,7 @@
#include "bladerunner/audio_speech.h"
+#include "bladerunner/actor.h"
#include "bladerunner/aud_stream.h"
#include "bladerunner/audio_mixer.h"
#include "bladerunner/bladerunner.h"
@@ -30,7 +31,7 @@
namespace BladeRunner {
-#define BUFFER_SIZE 200000
+const int AudioSpeech::kSpeechSamples[] = { 65, 355, 490, 465, 480, 485, 505, 760, 7655, 7770, 7740, 8170, 2705, 7200, 6460, 5560, 4870, 4555, 3880, 3525, 3595, 3250, 3070 };
void AudioSpeech::ended() {
//Common::StackLock lock(_mutex);
@@ -39,14 +40,15 @@ void AudioSpeech::ended() {
}
void AudioSpeech::mixerChannelEnded(int channel, void *data) {
- AudioSpeech *audioSpeech = (AudioSpeech*)data;
+ AudioSpeech *audioSpeech = (AudioSpeech *)data;
audioSpeech->ended();
}
-AudioSpeech::AudioSpeech(BladeRunnerEngine *vm) : _vm(vm) {
- _volume = 50;
+AudioSpeech::AudioSpeech(BladeRunnerEngine *vm) {
+ _vm = vm;
+ _speechVolume = 50;
_isActive = false;
- _data = new byte[BUFFER_SIZE];
+ _data = new byte[kBufferSize];
_channel = -1;
}
@@ -63,8 +65,8 @@ bool AudioSpeech::playSpeech(const char *name, int pan) {
return false;
}
- if (r->size() > BUFFER_SIZE) {
- warning("AudioSpeech::playSpeech: AUD larger than buffer size (%d > %d)", r->size(), BUFFER_SIZE);
+ if (r->size() > kBufferSize) {
+ warning("AudioSpeech::playSpeech: AUD larger than buffer size (%d > %d)", r->size(), kBufferSize);
return false;
}
@@ -87,7 +89,7 @@ bool AudioSpeech::playSpeech(const char *name, int pan) {
audioStream,
100,
false,
- _volume,
+ _speechVolume,
pan,
mixerChannelEnded,
this);
@@ -104,11 +106,23 @@ void AudioSpeech::stopSpeech() {
}
}
-bool AudioSpeech::isPlaying() {
+bool AudioSpeech::isPlaying() const {
if (_channel == -1) {
return false;
}
return _isActive;
}
+void AudioSpeech::setVolume(int volume) {
+ _speechVolume = volume;
+}
+
+int AudioSpeech::getVolume() const {
+ return _speechVolume;
+}
+
+void AudioSpeech::playSample() {
+ _vm->_playerActor->speechPlay(kSpeechSamples[_vm->_rnd.getRandomNumber(22)], true);
+}
+
} // End of namespace BladeRunner