summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-07-08 18:48:19 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-07-08 18:48:19 -0400
commite314577d9c775bd189e9494e7700e2e04cf79c21 (patch)
tree6fae0c3164a3ed755c795d42add21e7ebf8ec74b /tests
parent512df40330e1409516b654857ca031fac19927b6 (diff)
pke: spatial audio first-pass
Diffstat (limited to 'tests')
-rw-r--r--tests/pke-test-audio.cpp57
1 files changed, 56 insertions, 1 deletions
diff --git a/tests/pke-test-audio.cpp b/tests/pke-test-audio.cpp
index 2c1ac97..076634a 100644
--- a/tests/pke-test-audio.cpp
+++ b/tests/pke-test-audio.cpp
@@ -71,14 +71,69 @@ int pke_test_audio_001() {
return 0;
}
+int pke_test_audio_002() {
+ uint32_t i, k;
+ try {
+ bkt = pk_mem_bucket_create("pke_test_serialization", PK_MEM_DEFAULT_BUCKET_SIZE, PK_MEMBUCKET_FLAG_NONE);
+
+ UBO.model = glm::translate(glm::mat4(1.f), glm::vec3(0, 0, 0));
+
+ AssetHandle ahs[3];
+ const AssetKey aks[3] {"sawtooth", "sawtooth2", "sawtooth3"};
+ float freqs[3] = {440.f, 110.f, 330.f};
+ glm::vec3 src_poss[3] = {
+ glm::vec3(-1, 0, 3),
+ glm::vec3( 0, 0, 0),
+ glm::vec3( 1, 0, 0),
+ };
+
+ for(k = 0; k < 3; ++k) {
+ float *zip_bop_bytes = pk_new<float>(48000, bkt);
+ float phase = 0.0f;
+ float phase_increment = freqs[k] / 48000.f;
+ for (i = 0; i < 48000; ++i) {
+ zip_bop_bytes[i] = 2.f * (phase - floor(phase + 0.5f));
+ phase += phase_increment;
+ if (phase >= 1.f) phase -= 1.f;
+ }
+ ahs[k] = AM_Register(aks[k], PKE_ASSET_TYPE_AUDIO, zip_bop_bytes, sizeof(float) * 48000, 64);
+ pk_delete<float>(zip_bop_bytes, 48000, bkt);
+ }
+ std::chrono::milliseconds(1);
+ for(k = 0; k < 3; ++k) {
+ pke_audio_play(ahs[k], pke_audio_source_music, src_poss[k], pke_audio_flag_pos_spatial);
+ }
+
+ while (pke_audio_mstr.playing_objects.next > 0) {
+ pke_audio_tick(0.001f);
+ std::this_thread::sleep_for(std::chrono::milliseconds(1));
+ }
+
+ for(k = 0; k < 3; ++k) {
+ AM_Release(ahs[k]);
+ }
+
+ } catch (const std::exception &ex) {
+ pk_mem_bucket_destroy(bkt);
+ throw;
+ }
+ pk_mem_bucket_destroy(bkt);
+ return 0;
+}
+
struct pke_test_group *pke_test_audio_get_group() {
- static const uint64_t test_count = 1;
+ static const uint64_t test_count = 2;
static struct pke_test tests[test_count] = {
{
.title = "test 001",
.func = pke_test_audio_001,
.expected_result = 0,
},
+ {
+ .title = "test 002",
+ .func = pke_test_audio_002,
+ .expected_result = 0,
+ },
};
static struct pke_test_group group = {};
group.title = "audio";