preliminary compressed audio
authorhgn <hgodden00@gmail.com>
Sun, 25 Sep 2022 23:40:02 +0000 (00:40 +0100)
committerhgn <hgodden00@gmail.com>
Sun, 25 Sep 2022 23:40:02 +0000 (00:40 +0100)
25 files changed:
audio.h
common.h
player.h
sound_src/bird0.ogg
sound_src/bird1.ogg
sound_src/bird2.ogg
sound_src/docks_generic.ogg
sound_src/field_generic.ogg
sound_src/grass0.ogg
sound_src/grass1.ogg
sound_src/grass2.ogg
sound_src/grass3.ogg
sound_src/grobplab.ogg
sound_src/leaves0.ogg
sound_src/leaves1.ogg
sound_src/leaves2.ogg
sound_src/leaves3.ogg
sound_src/town_generic.ogg
sound_src/wave0.ogg
sound_src/wave1.ogg
sound_src/wave2.ogg
sound_src/wave3.ogg
sound_src/wave4.ogg
sound_src/wave5.ogg
world_audio.h

diff --git a/audio.h b/audio.h
index 212ed9f19d8231a13e004122d5c5b7a39d8ae994..60ad27ef431bccbdbe113dbe5ed0cc099d2bc341 100644 (file)
--- a/audio.h
+++ b/audio.h
@@ -1,6 +1,4 @@
 #include "common.h"
-static void audio_spacialize( sfx_system *sys,
-                              v3f pos, v3f camera, v3f ears, float vol );
 
 #ifndef AUDIO_H
 #define AUDIO_H
@@ -12,57 +10,53 @@ static float audio_occlusion_current = 0.0f,
 
 static int   k_audio_debug_soundscape = 0;
 
-sfx_set audio_board =
+
+audio_clip audio_board[] =
 {
-   .sources = "sound/skate.ogg\0"
-              "sound/wheel.ogg\0"
-              "sound/slide.ogg\0"
-              "sound/reverb.ogg\0"
+   {.path="sound/skate.ogg", .source_mode=k_audio_source_mono_compressed },
+   {.path="sound/wheel.ogg", .source_mode=k_audio_source_mono_compressed },
+   {.path="sound/slide.ogg", .source_mode=k_audio_source_mono_compressed },
+   {.path="sound/reverb.ogg",.source_mode=k_audio_source_mono_compressed }
 };
 
-sfx_system audio_player0 =
+audio_player audio_player0 =
 {
-   .vol = 0.0f,
-   .ch = 1,
-   .vol_src = &audio_vol_all,
    .name = "Player0",
-   .flags = SFX_FLAG_REPEAT | SFX_FLAG_PERSISTENT 
 };
 
-sfx_system audio_player1 =
+audio_player audio_player1 =
 {
-   .vol = 0.0f,
-   .ch = 1,
-   .vol_src = &audio_vol_all,
    .name = "Player1",
-   .flags = SFX_FLAG_REPEAT | SFX_FLAG_PERSISTENT
 };
 
-sfx_system audio_player2 =
+audio_player audio_player2 =
 {
-   .vol = 0.0f,
-   .ch = 1,
-   .vol_src = &audio_vol_all,
    .name = "Player2",
-   .flags = SFX_FLAG_REPEAT | SFX_FLAG_PERSISTENT
 };
 
-sfx_system audio_player3 =
+audio_player audio_player3 =
 {
-   .vol = 0.0f,
-   .ch = 1,
-   .vol_src = &audio_vol_all,
    .name = "Player3",
-   .flags = SFX_FLAG_REPEAT | SFX_FLAG_PERSISTENT
 };
 
 static void audio_init(void)
 {
-   sfx_set_init( &audio_board, NULL );
-   sfx_set_play( &audio_board, &audio_player0, 0 );
-   sfx_set_play( &audio_board, &audio_player1, 1 );
-   sfx_set_play( &audio_board, &audio_player2, 2 );
-   sfx_set_play( &audio_board, &audio_player3, 3 );
+   audio_clip_loadn( audio_board, vg_list_size(audio_board) );
+
+   audio_lock();
+   u32 flags = AUDIO_FLAG_LOOP|AUDIO_FLAG_SPACIAL_3D;
+
+   audio_player_set_flags( &audio_player0, flags );
+   audio_player_set_flags( &audio_player1, flags );
+   audio_player_set_flags( &audio_player2, flags );
+   audio_player_set_flags( &audio_player3, AUDIO_FLAG_LOOP );
+
+   audio_player_playclip( &audio_player0, &audio_board[0] );
+   audio_player_playclip( &audio_player1, &audio_board[1] );
+   audio_player_playclip( &audio_player2, &audio_board[2] );
+   audio_player_playclip( &audio_player3, &audio_board[3] );
+
+   audio_unlock();
 
    vg_convar_push( (struct vg_convar){
       .name = "aud_debug_soundscape",
@@ -83,22 +77,6 @@ static void audio_init(void)
 
 static void audio_free(void)
 {
-   sfx_set_free( &audio_board );
-}
-
-static void audio_spacialize( sfx_system *sys,
-                              v3f pos, v3f camera, v3f ears, float vol )
-{
-   float attn = (v3_dist( pos, camera ) / vol) +1.0f;
-
-   v3f delta;
-   v3_sub( pos, camera, delta );
-   v3_normalize( delta );
-   
-   float pan = v3_dot( ears, delta );
-
-   sys->vol = 1.0f/(attn*attn);
-   sys->pan = pan;
 }
 
 static void audio_sample_occlusion( v3f origin )
@@ -146,7 +124,7 @@ static void audio_debug_soundscapes(void)
    char buf[64];
    snprintf( buf, 31, "occlusion: %.5f", audio_occlusion_current );
 
-   ui_global_ctx.cursor[0] = 250;
+   ui_global_ctx.cursor[0] = 450;
    ui_global_ctx.cursor[1] = 10;
    ui_global_ctx.cursor[2] = audio_occlusion_current * 200.0f;
    ui_global_ctx.cursor[3] = 20;
index a9197a4a9a0bf65fa75c991d5170092841c3045c..587c31b551011c3e60f2b1d100bbfdb72b20a8a3 100644 (file)
--- a/common.h
+++ b/common.h
@@ -47,7 +47,4 @@ static void eval_bezier_time( v3f p0, v3f p1, v3f h0, v3f h1, float t, v3f p )
    v3_muladds( p, p0, 3.0f*tt  -ttt -3.0f*t +1.0f, p );
 }
 
-/* TODO: he needs a home somewhere */
-sfx_vol_control audio_vol_all = { .val = 1.0f, .name = "All" };
-
 #endif /* COMMON_H */
index 3d42096d2f420296566a897ebe2f77e5d0079ede..c3ff3e97511e2c99386161c8c64fe7bf71f1a9a0 100644 (file)
--- a/player.h
+++ b/player.h
@@ -1137,7 +1137,7 @@ static void player_animate_camera(void)
  */
 static void player_audio(void)
 {
-   sfx_lock();
+   audio_lock();
 
    static float air = 0.0f;
    air = vg_lerpf(air, player.in_air? 1.0f: 0.0f, 5.0f*ktimestep);
@@ -1149,47 +1149,50 @@ static void player_audio(void)
    float *cam = player.camera[3],
          *pos = player.rb.co;
 
+   audio_player_set_position( &audio_player0, player.rb.co );
+   audio_player_set_position( &audio_player1, player.rb.co );
+   audio_player_set_position( &audio_player2, player.rb.co );
+
    v3_sub( player.rb.co, player.camera[3], delta );
    v3_normalize( delta );
    m3x3_mulv( player.camera, ears, ears );
+
+   /* TODO, Make function */
+   v3_copy( ears, vg_audio.listener_ears );
+   v3_copy( player.camera[3], vg_audio.listener_pos );
+
+   /* Tunnel / occlusion */
+   audio_sample_occlusion( player.camera[3] );
    
    if( freecam || player.is_dead || !player.on_board )
    {
-      audio_player0.vol = 0.0f;
-      audio_player1.vol = 0.0f;
-      audio_player2.vol = 0.0f;
-
-      audio_player0.pan = 0.0f;
-      audio_player1.pan = 0.0f;
-      audio_player2.pan = 0.0f;
+      audio_player_set_vol( &audio_player0, 0.0f );
+      audio_player_set_vol( &audio_player1, 0.0f );
+      audio_player_set_vol( &audio_player2, 0.0f );
    }
    else
    {
-      /* Spacialize 0 */
-      audio_spacialize( &audio_player0, pos, cam, ears, 1.0f );
-      audio_player1.pan = audio_player0.pan;
-      audio_player2.pan = audio_player0.pan;
-
       /* Composite */
       float speed = vg_minf(v3_length( player.rb.v )*0.1f,1.0f),
-            attn  = audio_player0.vol * speed,
+            attn  = speed,
             slide = vg_clampf( fabsf(player.slip), 0.0f, 1.0f ),
             vol0  = (1.0f-air)*attn*(1.0f-slide),
             vol1  =       air *attn,
             vol2  = (1.0f-air)*attn*slide;
+      
+      audio_player_set_vol( &audio_player0, vol0 );
+      audio_player_set_vol( &audio_player1, vol1 );
+      audio_player_set_vol( &audio_player2, vol2 );
 
-      audio_player1.vol = vol1;
-      audio_player2.vol = vol2;
-      audio_player0.vol = vol0;
+      float reverb_amt = vol0 * audio_occlusion_current * 1.0f;
+      audio_player_set_pan( &audio_player3, 0.0f );
+      audio_player_set_vol( &audio_player3, reverb_amt );
    }
-
-   /* Tunnel / occlusion */
-   audio_sample_occlusion( player.camera[3] );
-   audio_player3.pan = 0.0f;
-   audio_player3.vol = audio_player0.vol * audio_occlusion_current * 2.0f;
    
+#if 0
    world_audio_update( cam, ears );
-   sfx_unlock();
+#endif
+   audio_unlock();
 }
 
 /*
index 8d16ffd23da8f187a9f4c2ddbd722b1a9ade30b2..adb1f03df0851e3969b8c58e26e20d55ca9a488f 100644 (file)
Binary files a/sound_src/bird0.ogg and b/sound_src/bird0.ogg differ
index 4597258264aa4e718ec6f1de05671e12a3b7cd40..077fd78ff1c32301cc0be7e81f9a26ba46319580 100644 (file)
Binary files a/sound_src/bird1.ogg and b/sound_src/bird1.ogg differ
index 5872341712814c72afcfe07ad0341b85dad668da..3389374db76a08d78b6c3f5d0102f4f46aff5074 100644 (file)
Binary files a/sound_src/bird2.ogg and b/sound_src/bird2.ogg differ
index 9bd811122577f475a393ca49dbcbaab2594d762b..e223c7219e0b821fd01c8a9296ad76f24ad96b5c 100644 (file)
Binary files a/sound_src/docks_generic.ogg and b/sound_src/docks_generic.ogg differ
index 11f6bc0311defd7260aaededc99c40be60a14ce0..ed6165d5dd35d123e33c71a392e635af9a04d122 100644 (file)
Binary files a/sound_src/field_generic.ogg and b/sound_src/field_generic.ogg differ
index 184d599bfce3cbad5f3ff6fd992f2c4ceafcdcc1..3e6cc1c62082c35f87e258ce0d84f9d649aff1b7 100644 (file)
Binary files a/sound_src/grass0.ogg and b/sound_src/grass0.ogg differ
index 71b22ee61e3d9285d30cd172b4bbcd1131043696..6a89776a826bde8361016cdaef2d50667de3130c 100644 (file)
Binary files a/sound_src/grass1.ogg and b/sound_src/grass1.ogg differ
index fedb06ed50afce2449cfb80fbae57c92ef195e2e..16382d0fa91e9d9719ce0a551714e0d9adbf94ce 100644 (file)
Binary files a/sound_src/grass2.ogg and b/sound_src/grass2.ogg differ
index b6537fb1ba3eb9b9155f26bbe892abd9fd3d5b97..000cd38ddae87cabf2ceb19d8d7c897aefcf2cb0 100644 (file)
Binary files a/sound_src/grass3.ogg and b/sound_src/grass3.ogg differ
index eb68d45cdbe398d9442aa347f81b882191194043..32ce5b20705098991e2a3004b276f2ce9add0d85 100644 (file)
Binary files a/sound_src/grobplab.ogg and b/sound_src/grobplab.ogg differ
index cf0a7d95ec257abd8ba63152199afe9f70a82cd4..3af6c5f457ece890dea88ddea9dd26f67b3591b1 100644 (file)
Binary files a/sound_src/leaves0.ogg and b/sound_src/leaves0.ogg differ
index 2acc99ea8489f1795f68937db3d62ca367178335..65fd3d26fe011c8a125a47e0810b0127fd4c8823 100644 (file)
Binary files a/sound_src/leaves1.ogg and b/sound_src/leaves1.ogg differ
index 3da688a83f3ac857d72476fb60e74a40df518f5f..34fdab720601c6d45000fafdc3f3c2620f39a954 100644 (file)
Binary files a/sound_src/leaves2.ogg and b/sound_src/leaves2.ogg differ
index 905a02ee4168c236058af73c7bb1a147cc172797..b47d1c2fd5089c6dd8775922c07b2dcadfe4d44f 100644 (file)
Binary files a/sound_src/leaves3.ogg and b/sound_src/leaves3.ogg differ
index 8a5d3c2a1b285fafe9f2f54dafc0b83e81a7ae52..6f72ccc1747434cc6a353261849e098978c5ea80 100644 (file)
Binary files a/sound_src/town_generic.ogg and b/sound_src/town_generic.ogg differ
index 2009b90dce385ad27b372e4d76212227ba21c736..54b6c941b7dfd8e831a16b7b58b3b864881da0f8 100644 (file)
Binary files a/sound_src/wave0.ogg and b/sound_src/wave0.ogg differ
index bca14df77de7e686b2d4a6c0e1530c32d39342ab..19af0b3043b565732f489c1169406ef367e51c7d 100644 (file)
Binary files a/sound_src/wave1.ogg and b/sound_src/wave1.ogg differ
index c3678b588716c464e370e62cc8983cfa7fedcdfa..dc59237e501e6a936f437fe4324d2ab67809e22c 100644 (file)
Binary files a/sound_src/wave2.ogg and b/sound_src/wave2.ogg differ
index cbde47c8d4746e92532368c7b6778e58e0233991..06809f23eb76cf11ffc45169ecd20c6b86bb81a4 100644 (file)
Binary files a/sound_src/wave3.ogg and b/sound_src/wave3.ogg differ
index 7336171fa521a1f17b7e250567ae20e3ddb4ddc9..1b147503306618d18a5f72f88622c2e57ef1f029 100644 (file)
Binary files a/sound_src/wave4.ogg and b/sound_src/wave4.ogg differ
index 08740ea2fbd5d2f0c674b0ca445bcbf8a2b2e437..7bb6d42adbf9fbd1652fc0f1aad7edbfdb040019 100644 (file)
Binary files a/sound_src/wave5.ogg and b/sound_src/wave5.ogg differ
index e6ee331a8ee1267e91c6194e750e441008de4b89..2de8bf2b07402f429e9bc4d42ad3a7b23117bc2e 100644 (file)
@@ -2,14 +2,19 @@
 #define WORLD_AUDIO_H
 
 #include "common.h"
+#include "vg/vg_audio.h"
 #include "audio.h"
 
-sfx_set audio_birds =
+#if 0
+audio_pack audio_birds =
 {
    .sources = "sound/bird0.ogg\0"
               "sound/bird1.ogg\0"
-              "sound/bird2.ogg\0"
+              "sound/bird2.ogg\0",
+   .name = "Birds",
+   .source_mode = k_audio_source_compressed
 };
+#endif
 
 static float k_audio_random_freq = 1.0f/10.0f,
              k_audio_random_hz   = 1.0f;
@@ -18,14 +23,15 @@ static double world_audio_last_tick = 0.0;
 
 static struct world_ambient_layer
 {
-   sfx_system sys;
+   audio_player sys;
    v3f pos;
 }
 world_ambient_layers[8];
 
 static void world_audio_init(void)
 {
-   sfx_set_init( &audio_birds, NULL );
+#if 0
+   audio_pack_init( &audio_birds );
 
    vg_convar_push( (struct vg_convar){
       .name = "aud_random_freq",
@@ -38,17 +44,18 @@ static void world_audio_init(void)
    for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
    {
       struct world_ambient_layer *layer = &world_ambient_layers[i];
-      sfx_system *sys = &layer->sys;
-      sys->vol = 1.0f;
+      audio_player *sys = &layer->sys;
+      sys->_vol = 1.0f;
       sys->ch  = 1;
-      sys->vol_src = &audio_vol_all;
       sys->name = "ambient";
       sys->flags = SFX_FLAG_PERSISTENT;
    }
+#endif
 }
 
 static void world_audio_spawn_random( v3f around )
 {
+#if 0
    for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
    {
       struct world_ambient_layer *layer = &world_ambient_layers[i];
@@ -64,10 +71,12 @@ static void world_audio_spawn_random( v3f around )
          return;
       }
    }
+#endif
 }
 
 static void world_audio_update( v3f around, v3f ears )
 {
+#if 0
    if( world_audio_last_tick + (double)k_audio_random_hz < vg_time )
    {
       world_audio_last_tick = vg_time;
@@ -85,12 +94,14 @@ static void world_audio_update( v3f around, v3f ears )
       struct world_ambient_layer *layer = &world_ambient_layers[i];
 
       if( layer->sys.is_playing )
-         audio_spacialize( &layer->sys, layer->pos, around, ears, 30.0f );
+         audio_player_spacialize(&layer->sys, layer->pos, around, ears, 30.0f);
    }
+#endif
 }
 
 static void world_audio_debug(void)
 {
+#if 0
    for( int i=0; i<vg_list_size(world_ambient_layers); i++ )
    {
       struct world_ambient_layer *layer = &world_ambient_layers[i];
@@ -100,6 +111,7 @@ static void world_audio_debug(void)
          vg_line_pt3( layer->pos, 1.0f, 0xffff00ff );
       }
    }
+#endif
 }
 
 #endif /* WORLD_AUDIO_H */