summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/xe_sound.cpp32
-rw-r--r--engine/xe_sound.hpp1
-rw-r--r--engine/xe_sound_device.cpp78
3 files changed, 51 insertions, 60 deletions
diff --git a/engine/xe_sound.cpp b/engine/xe_sound.cpp
index fbb4628..d315179 100644
--- a/engine/xe_sound.cpp
+++ b/engine/xe_sound.cpp
@@ -8,33 +8,22 @@ namespace xe {
XeSound::XeSound(const std::string& filename) {
- ALvoid *data;
- ALsizei size, freq;
- ALenum format;
- ALboolean loop;
- char *bufferData;
+ // ALvoid *data;
+ // ALsizei size, freq;
+ // ALenum format;
+ // ALboolean loop;
+ // char *bufferData;
- // alutLoadWAVFile(filename.c_str(), &format, &data, &size, &freq, &loop);
+ alutInit(0, NULL);
- // AudioFile<float> file;
- // file.load(filename);
+ std::cout << std::hex << alutGetError() << "\n";
- // std::vector<uint8_t> data;
- // file.writePCMToBuffer(data);
- // auto getALSoundFormat = [](AudioFile<float>& audioFile) {
- // int bitDepth = audioFile.getBitDepth();
- // if (bitDepth == 16)
- // return audioFile.isStereo() ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16;
- // else if (bitDepth == 8)
- // return audioFile.isStereo() ? AL_FORMAT_STEREO8 : AL_FORMAT_MONO8;
- // else
- // return -1;
- // };
+ buffer = alutCreateBufferFromFile(filename.c_str());
- // alGenBuffers(1, &buffer);
- // alBufferData(buffer, getALSoundFormat(file), data.data(), data.size(), file.getSampleRate());
+ std::cout << std::hex << alutGetError() << "\n";
alGenSources(1, &source);
+
alSourcef(source, AL_GAIN, 1.f);
alSourcef(source, AL_PITCH, 1.f);
alSource3f(source, AL_POSITION, 0, 0, 0);
@@ -47,6 +36,7 @@ XeSound::XeSound(const std::string& filename) {
XeSound::~XeSound() {
alDeleteSources(1, &source);
alDeleteBuffers(1, &buffer);
+ alutExit();
}
void XeSound::play() {
diff --git a/engine/xe_sound.hpp b/engine/xe_sound.hpp
index 3d0caa2..334e793 100644
--- a/engine/xe_sound.hpp
+++ b/engine/xe_sound.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <AL/al.h>
+#include <AL/alc.h>
#include <AL/alut.h>
#include <string>
diff --git a/engine/xe_sound_device.cpp b/engine/xe_sound_device.cpp
index 0b85b6a..3bc931d 100644
--- a/engine/xe_sound_device.cpp
+++ b/engine/xe_sound_device.cpp
@@ -8,57 +8,57 @@ namespace xe {
XeSoundDevice::XeSoundDevice() {
- ALboolean enumeration;
- enumeration = alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT");
- if (enumeration == AL_FALSE) {
- fprintf(stderr, "enumeration extension not available\n");
- listAudioDevices(alcGetString(NULL, ALC_DEVICE_SPECIFIER));
- }
+// ALboolean enumeration;
+// enumeration = alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT");
+// if (enumeration == AL_FALSE) {
+// fprintf(stderr, "enumeration extension not available\n");
+// listAudioDevices(alcGetString(NULL, ALC_DEVICE_SPECIFIER));
+// }
- listAudioDevices(alcGetString(NULL, ALC_DEVICE_SPECIFIER));
+// listAudioDevices(alcGetString(NULL, ALC_DEVICE_SPECIFIER));
- const ALCchar* name = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
+// const ALCchar* name = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
- device = alcOpenDevice(name);
- if (!device) {
- std::runtime_error("failed to get sound device");
- }
+// device = alcOpenDevice(name);
+// if (!device) {
+// std::runtime_error("failed to get sound device");
+// }
- std::cout << "Audio Device: " << alcGetString(device, ALC_DEVICE_SPECIFIER) << "\n";
+// std::cout << "Audio Device: " << alcGetString(device, ALC_DEVICE_SPECIFIER) << "\n";
- context = alcCreateContext(device, NULL);
- if(!alcMakeContextCurrent(context)) {
- std::runtime_error("failed to make sound context current");
- }
+// context = alcCreateContext(device, NULL);
+// if(!alcMakeContextCurrent(context)) {
+// std::runtime_error("failed to make sound context current");
+// }
- alListener3f(AL_POSITION, 0.f, 0.f, 0.f);
- alListener3f(AL_VELOCITY, 0.f, 0.f, 0.f);
- ALfloat frontAndUpVectors[] = {
- /* front*/1.f, 0.f, 0.f,
- /* up */ 0.f, 1.f, 0.f
- };
- alListenerfv(AL_ORIENTATION, frontAndUpVectors);
+// alListener3f(AL_POSITION, 0.f, 0.f, 0.f);
+// alListener3f(AL_VELOCITY, 0.f, 0.f, 0.f);
+// ALfloat frontAndUpVectors[] = {
+// /* front*/1.f, 0.f, 0.f,
+// /* up */ 0.f, 1.f, 0.f
+// };
+// alListenerfv(AL_ORIENTATION, frontAndUpVectors);
-}
+// }
-void XeSoundDevice::listAudioDevices(const ALCchar* devices) {
- const ALCchar *device = devices, *next = devices + 1;
- size_t len = 0;
+// void XeSoundDevice::listAudioDevices(const ALCchar* devices) {
+// const ALCchar *device = devices, *next = devices + 1;
+// size_t len = 0;
- fprintf(stdout, "Devices list: ");
- while (device && *device != '\0' && next && *next != '\0') {
- fprintf(stdout, "%s, ", device);
- len = strlen(device);
- device += (len + 1);
- next += (len + 2);
- }
- std::cout << "\n";
+// fprintf(stdout, "Devices list: ");
+// while (device && *device != '\0' && next && *next != '\0') {
+// fprintf(stdout, "%s, ", device);
+// len = strlen(device);
+// device += (len + 1);
+// next += (len + 2);
+// }
+// std::cout << "\n";
}
XeSoundDevice::~XeSoundDevice() {
- alcMakeContextCurrent(nullptr);
- alcDestroyContext(context);
- alcCloseDevice(device);
+ // alcMakeContextCurrent(nullptr);
+ // alcDestroyContext(context);
+ // alcCloseDevice(device);
}
} \ No newline at end of file