Kohi Game Engine
audio_frontend.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <defines.h>
4 #include <math/math_types.h>
5 #include <strings/kname.h>
6 
7 #include "audio/kaudio_types.h"
8 #include "core_audio_types.h"
9 
14 #define AUDIO_CHANNEL_MAX_COUNT 16
15 
16 struct kaudio_system_state;
17 struct frame_data;
18 
20 #define KAUDIO_EMITTER_INVALID INVALID_ID_U16
21 
22 b8 kaudio_system_initialize(u64* memory_requirement, void* memory, const char* config_str);
23 void kaudio_system_shutdown(struct kaudio_system_state* state);
24 
28 b8 kaudio_system_update(struct kaudio_system_state* state, struct frame_data* p_frame_data);
29 
30 // To be invoked by the audio plugin when a non-looping audio has completed play.
31 // Should not be called anywhere except by the plugin.
32 KAPI void _kaudio_system_play_completed(struct kaudio_system_state* state, kaudio audio, u16 instance_id);
33 
41 KAPI void kaudio_system_listener_orientation_set(struct kaudio_system_state* state, vec3 position, vec3 forward, vec3 up);
42 
43 KAPI void kaudio_master_volume_set(struct kaudio_system_state* state, f32 volume);
44 KAPI f32 kaudio_system_master_volume_get(struct kaudio_system_state* state);
45 
46 // Preloads audio only, does not create instance.
47 KAPI kaudio kaudio_preload(struct kaudio_system_state* state, kname asset_name, b8 is_streaming);
48 KAPI kaudio kaudio_preload_from_package(struct kaudio_system_state* state, kname asset_name, kname package_name, b8 is_streaming);
49 KAPI kaudio_instance kaudio_acquire_from_base(struct kaudio_system_state* state, kaudio base, kaudio_space audio_space);
50 KAPI kaudio_instance kaudio_acquire(struct kaudio_system_state* state, kname asset_name, b8 is_streaming, kaudio_space audio_space);
51 KAPI kaudio_instance kaudio_acquire_from_package(struct kaudio_system_state* state, kname asset_name, kname package_name, b8 is_streaming, kaudio_space audio_space);
52 KAPI void kaudio_release(struct kaudio_system_state* state, kaudio_instance* instance);
53 
54 KAPI vec3 kaudio_position_get(struct kaudio_system_state* state, kaudio_instance instance);
55 KAPI b8 kaudio_position_set(struct kaudio_system_state* state, kaudio_instance instance, vec3 position);
56 KAPI f32 kaudio_inner_radius_get(struct kaudio_system_state* state, kaudio_instance instance);
57 KAPI b8 kaudio_inner_radius_set(struct kaudio_system_state* state, kaudio_instance instance, f32 inner_radius);
58 KAPI f32 kaudio_outer_radius_get(struct kaudio_system_state* state, kaudio_instance instance);
59 KAPI b8 kaudio_outer_radius_set(struct kaudio_system_state* state, kaudio_instance instance, f32 outer_radius);
60 KAPI f32 kaudio_falloff_get(struct kaudio_system_state* state, kaudio_instance instance);
61 KAPI b8 kaudio_falloff_set(struct kaudio_system_state* state, kaudio_instance instance, f32 falloff);
62 
63 KAPI i8 kaudio_category_id_get(struct kaudio_system_state* state, kname name);
64 KAPI b8 kaudio_play_in_category_by_name(struct kaudio_system_state* state, kaudio_instance instance, kname category_name);
65 KAPI b8 kaudio_play_in_category(struct kaudio_system_state* state, kaudio_instance instance, u8 category_index);
66 KAPI b8 kaudio_play(struct kaudio_system_state* state, kaudio_instance instance, i8 channel_index);
67 KAPI b8 kaudio_stop(struct kaudio_system_state* state, kaudio_instance instance);
68 KAPI b8 kaudio_pause(struct kaudio_system_state* state, kaudio_instance instance);
69 KAPI b8 kaudio_resume(struct kaudio_system_state* state, kaudio_instance instance);
70 KAPI b8 kaudio_is_valid(struct kaudio_system_state* state, kaudio_instance instance);
71 KAPI f32 kaudio_pitch_get(struct kaudio_system_state* state, kaudio_instance instance);
72 KAPI b8 kaudio_pitch_set(struct kaudio_system_state* state, kaudio_instance instance, f32 pitch);
73 KAPI f32 kaudio_volume_get(struct kaudio_system_state* state, kaudio_instance instance);
74 KAPI b8 kaudio_volume_set(struct kaudio_system_state* state, kaudio_instance instance, f32 volume);
75 KAPI b8 kaudio_looping_get(struct kaudio_system_state* state, kaudio_instance instance);
76 KAPI b8 kaudio_looping_set(struct kaudio_system_state* state, kaudio_instance instance, b8 looping);
77 
78 // KAPI b8 kaudio_seek(struct kaudio_system_state* state, audio_instance instance, f32 seconds);
79 // KAPI f32 kaudio_time_played_get(struct kaudio_system_state* state, audio_instance instance);
80 // KAPI f32 kaudio_time_length_get(struct kaudio_system_state* state, audio_instance instance);
81 
82 KAPI b8 kaudio_channel_play(struct kaudio_system_state* state, u8 channel_index);
83 KAPI b8 kaudio_channel_pause(struct kaudio_system_state* state, u8 channel_index);
84 KAPI b8 kaudio_channel_resume(struct kaudio_system_state* state, u8 channel_index);
85 KAPI b8 kaudio_channel_stop(struct kaudio_system_state* state, u8 channel_index);
86 KAPI b8 kaudio_channel_is_playing(struct kaudio_system_state* state, u8 channel_index);
87 KAPI b8 kaudio_channel_is_paused(struct kaudio_system_state* state, u8 channel_index);
88 KAPI b8 kaudio_channel_is_stopped(struct kaudio_system_state* state, u8 channel_index);
89 KAPI b8 kaudio_channel_looping_get(struct kaudio_system_state* state, u8 channel_index);
90 KAPI b8 kaudio_channel_looping_set(struct kaudio_system_state* state, u8 channel_index, b8 looping);
91 
99 KAPI f32 kaudio_channel_volume_get(struct kaudio_system_state* state, u8 channel_index);
100 
108 KAPI b8 kaudio_channel_volume_set(struct kaudio_system_state* state, u8 channel_index, f32 volume);
109 
110 KAPI b8 kaudio_emitter_create(struct kaudio_system_state* state, f32 inner_radius, f32 outer_radius, f32 volume, f32 falloff, b8 is_looping, b8 is_streaming, kname audio_resource_name, kname package_name, kaudio_emitter* out_emitter);
111 
112 KAPI b8 kaudio_emitter_destroy(struct kaudio_system_state* state, kaudio_emitter* emitter);
113 
114 KAPI b8 kaudio_emitter_world_position_set(struct kaudio_system_state* state, kaudio_emitter emitter_handle, vec3 world_position);
KAPI void kaudio_release(struct kaudio_system_state *state, kaudio_instance *instance)
KAPI b8 kaudio_resume(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_pitch_set(struct kaudio_system_state *state, kaudio_instance instance, f32 pitch)
KAPI kaudio kaudio_preload_from_package(struct kaudio_system_state *state, kname asset_name, kname package_name, b8 is_streaming)
KAPI b8 kaudio_channel_looping_get(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_channel_is_paused(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_falloff_set(struct kaudio_system_state *state, kaudio_instance instance, f32 falloff)
KAPI void kaudio_system_listener_orientation_set(struct kaudio_system_state *state, vec3 position, vec3 forward, vec3 up)
KAPI b8 kaudio_channel_pause(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_stop(struct kaudio_system_state *state, kaudio_instance instance)
void kaudio_system_shutdown(struct kaudio_system_state *state)
KAPI f32 kaudio_falloff_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI f32 kaudio_inner_radius_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_channel_is_playing(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_channel_play(struct kaudio_system_state *state, u8 channel_index)
b8 kaudio_system_initialize(u64 *memory_requirement, void *memory, const char *config_str)
KAPI b8 kaudio_channel_stop(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_looping_set(struct kaudio_system_state *state, kaudio_instance instance, b8 looping)
KAPI i8 kaudio_category_id_get(struct kaudio_system_state *state, kname name)
KAPI b8 kaudio_channel_resume(struct kaudio_system_state *state, u8 channel_index)
KAPI b8 kaudio_play_in_category_by_name(struct kaudio_system_state *state, kaudio_instance instance, kname category_name)
KAPI kaudio_instance kaudio_acquire(struct kaudio_system_state *state, kname asset_name, b8 is_streaming, kaudio_space audio_space)
KAPI kaudio kaudio_preload(struct kaudio_system_state *state, kname asset_name, b8 is_streaming)
KAPI b8 kaudio_position_set(struct kaudio_system_state *state, kaudio_instance instance, vec3 position)
u16 kaudio_emitter
Definition: audio_frontend.h:17
KAPI f32 kaudio_system_master_volume_get(struct kaudio_system_state *state)
KAPI b8 kaudio_volume_set(struct kaudio_system_state *state, kaudio_instance instance, f32 volume)
KAPI b8 kaudio_channel_is_stopped(struct kaudio_system_state *state, u8 channel_index)
KAPI kaudio_instance kaudio_acquire_from_package(struct kaudio_system_state *state, kname asset_name, kname package_name, b8 is_streaming, kaudio_space audio_space)
KAPI b8 kaudio_is_valid(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_inner_radius_set(struct kaudio_system_state *state, kaudio_instance instance, f32 inner_radius)
KAPI void kaudio_master_volume_set(struct kaudio_system_state *state, f32 volume)
KAPI void _kaudio_system_play_completed(struct kaudio_system_state *state, kaudio audio, u16 instance_id)
KAPI kaudio_instance kaudio_acquire_from_base(struct kaudio_system_state *state, kaudio base, kaudio_space audio_space)
KAPI b8 kaudio_channel_volume_set(struct kaudio_system_state *state, u8 channel_index, f32 volume)
Sets the volume for the given channel id.
KAPI b8 kaudio_play_in_category(struct kaudio_system_state *state, kaudio_instance instance, u8 category_index)
KAPI f32 kaudio_channel_volume_get(struct kaudio_system_state *state, u8 channel_index)
Queries the given channel's volume volume.
KAPI b8 kaudio_emitter_destroy(struct kaudio_system_state *state, kaudio_emitter *emitter)
KAPI f32 kaudio_pitch_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_pause(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_emitter_create(struct kaudio_system_state *state, f32 inner_radius, f32 outer_radius, f32 volume, f32 falloff, b8 is_looping, b8 is_streaming, kname audio_resource_name, kname package_name, kaudio_emitter *out_emitter)
KAPI b8 kaudio_emitter_world_position_set(struct kaudio_system_state *state, kaudio_emitter emitter_handle, vec3 world_position)
KAPI b8 kaudio_looping_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_outer_radius_set(struct kaudio_system_state *state, kaudio_instance instance, f32 outer_radius)
b8 kaudio_system_update(struct kaudio_system_state *state, struct frame_data *p_frame_data)
Updates the audio system. Should happen once an update cycle.
KAPI b8 kaudio_channel_looping_set(struct kaudio_system_state *state, u8 channel_index, b8 looping)
KAPI f32 kaudio_outer_radius_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI vec3 kaudio_position_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI f32 kaudio_volume_get(struct kaudio_system_state *state, kaudio_instance instance)
KAPI b8 kaudio_play(struct kaudio_system_state *state, kaudio_instance instance, i8 channel_index)
kaudio_space
Describes the dimensionality of audio.
Definition: core_audio_types.h:26
This file contains global type definitions which are used throughout the entire engine and applicatio...
#define KAPI
Import/export qualifier.
Definition: defines.h:209
signed char i8
Signed 8-bit integer.
Definition: defines.h:35
_Bool b8
8-bit boolean type
Definition: defines.h:60
float f32
32-bit floating point number
Definition: defines.h:49
unsigned short u16
Unsigned 16-bit integer.
Definition: defines.h:24
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:30
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:21
u16 kaudio
Definition: kaudio_types.h:9
This files contains an implementation of knames.
u64 kname
A kname is a string hash made for quick comparisons versus traditional string comparisons.
Definition: kname.h:36
Contains various math types required for the engine.
Engine-level current frame-specific data.
Definition: frame_data.h:15
Definition: kaudio_types.h:19
A 3-element vector.
Definition: math_types.h:117