From: hgn Date: Mon, 3 Mar 2025 14:39:58 +0000 (+0000) Subject: dawhdwahe X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=1cb6e22cc8b3f667f4ce46c266fdb01745c7c965;p=carveJwlIkooP6JGAAIwe30JlM.git dawhdwahe --- diff --git a/src/audio.c b/src/audio.c index 736b213..7664250 100644 --- a/src/audio.c +++ b/src/audio.c @@ -143,7 +143,8 @@ audio_clip audio_challenge[] = { struct air_synth_data air_audio_data; -static void audio_air_synth_get_samples( void *_data, f32 *buf, u32 count ){ +static void audio_air_synth_get_samples( void *_data, f32 *buf, u32 count ) +{ struct air_synth_data *data = _data; SDL_AtomicLock( &data->sl ); @@ -160,7 +161,8 @@ static void audio_air_synth_get_samples( void *_data, f32 *buf, u32 count ){ dsp_init_biquad_butterworth_lpf( &data->lpf, f ); - for( u32 i=0; ilpf, v ); @@ -171,7 +173,8 @@ static void audio_air_synth_get_samples( void *_data, f32 *buf, u32 count ){ data->t += (f32)(count)/44100.0f; }; -static audio_clip air_synth = { +static audio_clip air_synth = +{ .flags = k_audio_format_gen, .size = 0, .generative_function = audio_air_synth_get_samples, @@ -195,23 +198,24 @@ void audio_init(void) audio_clip_loadn( audio_water, VG_ARRAY_LEN(audio_water), NULL ); audio_clip_loadn( audio_grass, VG_ARRAY_LEN(audio_grass), NULL ); audio_clip_loadn( audio_footsteps, VG_ARRAY_LEN(audio_footsteps), NULL ); - audio_clip_loadn( audio_footsteps_grass, - VG_ARRAY_LEN(audio_footsteps_grass), NULL ); - audio_clip_loadn( audio_footsteps_wood, - VG_ARRAY_LEN(audio_footsteps_wood), NULL ); + audio_clip_loadn( audio_footsteps_grass, VG_ARRAY_LEN(audio_footsteps_grass), NULL ); + audio_clip_loadn( audio_footsteps_wood, VG_ARRAY_LEN(audio_footsteps_wood), NULL ); audio_clip_loadn( audio_rewind, VG_ARRAY_LEN(audio_rewind), NULL ); audio_clip_loadn( audio_ui, VG_ARRAY_LEN(audio_ui), NULL ); audio_clip_loadn( audio_challenge, VG_ARRAY_LEN(audio_challenge), NULL ); - audio_lock(); - audio_set_lfo_wave( 0, k_lfo_polynomial_bipolar, 80.0f ); - audio_set_lfo_frequency( 0, 20.0f ); + vg_audio_lock(); + audio_lfo *bump_lfo = vg_audio_get_first_idle_lfo(); + VG_ASSERT( bump_lfo ); - air_audio_data.channel = audio_get_first_idle_channel(); - if( air_audio_data.channel ) - audio_channel_init( air_audio_data.channel, &air_synth, 0 ); + vg_audio_set_lfo_polynomial_bipolar( bump_lfo, 80.0f ); + vg_audio_set_lfo_frequency( bump_lfo, 20.0f ); - audio_unlock(); + air_audio_data.channel = vg_audio_get_first_idle_channel(); + VG_ASSERT( air_audio_data.channel ); + audio_channel_init( air_audio_data.channel, &air_synth, 0 ); + + vg_audio_unlock(); } void audio_ambient_sprite_play( v3f co, audio_clip *clip ) diff --git a/src/player_skate.c b/src/player_skate.c index b95defe..c53c00a 100644 --- a/src/player_skate.c +++ b/src/player_skate.c @@ -65,7 +65,7 @@ void player__skate_bind(void){ } void player__skate_kill_audio(void){ - audio_lock(); + vg_audio_lock(); if( player_skate.aud_main ){ player_skate.aud_main = audio_channel_fadeout( player_skate.aud_main, 0.1f ); @@ -78,7 +78,7 @@ void player__skate_kill_audio(void){ player_skate.aud_slide = audio_channel_fadeout( player_skate.aud_slide, 0.1f ); } - audio_unlock(); + vg_audio_unlock(); } /* @@ -778,10 +778,10 @@ static void skate_apply_trick_model(void){ v3_copy( state->trick_vel, state->trick_residualv ); v3_zero( state->trick_vel ); - audio_lock(); + vg_audio_lock(); audio_oneshot_3d( &audio_flips[vg_randu32(&vg.rand)%4], localplayer.rb.co, 40.0f, 1.0f ); - audio_unlock(); + vg_audio_unlock(); } else state->trick_time += vg.time_fixed_delta / interval; @@ -1285,10 +1285,10 @@ void player__skate_pre_update(void){ if( state->activity <= k_skate_activity_air_to_grind ){ if( trick && (state->trick_input_collect < 0.1f) ){ if( state->trick_time == 0.0f ){ - audio_lock(); + vg_audio_lock(); audio_oneshot_3d( &audio_flips[vg_randu32(&vg.rand)%4], localplayer.rb.co, 40.0f, 1.0f ); - audio_unlock(); + vg_audio_unlock(); } if( state->trick_time < 0.1f ){ @@ -1312,9 +1312,10 @@ void player__skate_pre_update(void){ state->trick_type = k_trick_type_none; } -void player__skate_comp_audio( void *_animator ){ +void player__skate_comp_audio( void *_animator ) +{ struct player_skate_animator *animator = _animator; - audio_lock(); + vg_audio_lock(); f32 air = ((animator->activity <= k_skate_activity_air_to_grind) || (animator->activity == k_skate_activity_handplant))? 1.0f: 0.0f, @@ -1412,9 +1413,8 @@ void player__skate_comp_audio( void *_animator ){ &audio_board[5] }; - if( (player_skate.main_sample_type != sample_type) || - (!player_skate.aud_main) ){ - + if( (player_skate.main_sample_type != sample_type) || (!player_skate.aud_main) ) + { player_skate.aud_main = audio_channel_crossfade( player_skate.aud_main, relevant_samples[sample_type], @@ -1424,11 +1424,22 @@ void player__skate_comp_audio( void *_animator ){ } } - if( player_skate.aud_main ){ - player_skate.aud_main->colour = 0x00103efe; - audio_channel_set_spacial( player_skate.aud_main, - animator->root_co, 40.0f ); - //audio_channel_slope_volume( player_skate.aud_main, 0.05f, vol_main ); + if( player_skate.lfo_bumps == NULL ) + { + audio_lfo *lfo = vg_audio_get_first_idle_lfo(); + if( lfo ) + { + player_skate.lfo_bumps = lfo; + vg_audio_set_lfo_polynomial_bipolar( lfo, 80.0f ); + vg_audio_set_lfo_frequency( lfo, 20.0f ); + vg_audio_start_lfo( lfo ); + } + } + + if( player_skate.aud_main ) + { + player_skate.aud_main->ui_colour = 0x00103efe; + vg_audio_channel_set_spacial_falloff( player_skate.aud_main, animator->root_co, 40.0f ); audio_channel_edit_volume( player_skate.aud_main, vol_main, 1 ); audio_channel_sidechain_lfo( player_skate.aud_main, 0, sidechain_amt ); @@ -1453,7 +1464,7 @@ void player__skate_comp_audio( void *_animator ){ audio_channel_edit_volume( player_skate.aud_air, vol_air, 1 ); } - audio_unlock(); + vg_audio_unlock(); } void player__skate_post_update(void){ @@ -3636,7 +3647,7 @@ void player__skate_animator_exchange( bitpack_ctx *ctx, void *data ) void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ) { - audio_lock(); + vg_audio_lock(); if( id == k_player_skate_soundeffect_jump ){ audio_oneshot_3d( &audio_jumps[vg_randu32(&vg.rand)%2], pos, 40.0f, volume ); @@ -3657,5 +3668,5 @@ void player__skate_sfx_oneshot( u8 id, v3f pos, f32 volume ) audio_oneshot_3d( &audio_board[8], pos, 40.0f, volume ); } - audio_unlock(); + vg_audio_unlock(); } diff --git a/src/player_skate.h b/src/player_skate.h index 338658c..1e4899e 100644 --- a/src/player_skate.h +++ b/src/player_skate.h @@ -162,6 +162,7 @@ struct player_skate{ v3f truckv0[2]; audio_channel *aud_main, *aud_slide, *aud_air; + audio_lfo *lfo_bumps; enum mdl_surface_prop surface, audio_surface; int wheel_contacts[2];