Kohi Game Engine
audio_frontend.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <defines.h>
4 #include <identifiers/khandle.h>
5 #include <math/math_types.h>
6 #include <strings/kname.h>
7 
8 #include "audio/kaudio_types.h"
9 #include "core_audio_types.h"
10 
15 #define AUDIO_CHANNEL_MAX_COUNT 16
16 
17 struct kaudio_system_state;
18 struct frame_data;
19 
20 b8 kaudio_system_initialize(u64* memory_requirement, void* memory, const char* config_str);
21 void kaudio_system_shutdown(struct kaudio_system_state* state);
22 
26 b8 kaudio_system_update(struct kaudio_system_state* state, struct frame_data* p_frame_data);
27 
35 KAPI void kaudio_system_listener_orientation_set(struct kaudio_system_state* state, vec3 position, vec3 forward, vec3 up);
36 
37 KAPI void kaudio_master_volume_set(struct kaudio_system_state* state, f32 volume);
38 KAPI f32 kaudio_system_master_volume_get(struct kaudio_system_state* state);
39 
40 KAPI kaudio_instance kaudio_acquire(struct kaudio_system_state* state, kname asset_name, b8 is_streaming, kaudio_space audio_space);
41 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);
42 KAPI void kaudio_release(struct kaudio_system_state* state, kaudio_instance* instance);
43 
44 KAPI vec3 kaudio_position_get(struct kaudio_system_state* state, kaudio_instance instance);
45 KAPI b8 kaudio_position_set(struct kaudio_system_state* state, kaudio_instance instance, vec3 position);
46 KAPI f32 kaudio_inner_radius_get(struct kaudio_system_state* state, kaudio_instance instance);
47 KAPI b8 kaudio_inner_radius_set(struct kaudio_system_state* state, kaudio_instance instance, f32 inner_radius);
48 KAPI f32 kaudio_outer_radius_get(struct kaudio_system_state* state, kaudio_instance instance);
49 KAPI b8 kaudio_outer_radius_set(struct kaudio_system_state* state, kaudio_instance instance, f32 outer_radius);
50 KAPI f32 kaudio_falloff_get(struct kaudio_system_state* state, kaudio_instance instance);
51 KAPI b8 kaudio_falloff_set(struct kaudio_system_state* state, kaudio_instance instance, f32 falloff);
52 
53 KAPI i8 kaudio_category_id_get(struct kaudio_system_state* state, kname name);
54 KAPI b8 kaudio_play_in_category_by_name(struct kaudio_system_state* state, kaudio_instance instance, kname category_name);
55 KAPI b8 kaudio_play_in_category(struct kaudio_system_state* state, kaudio_instance instance, u8 category_index);
56 KAPI b8 kaudio_play(struct kaudio_system_state* state, kaudio_instance instance, i8 channel_index);
57 KAPI b8 kaudio_stop(struct kaudio_system_state* state, kaudio_instance instance);
58 KAPI b8 kaudio_pause(struct kaudio_system_state* state, kaudio_instance instance);
59 KAPI b8 kaudio_resume(struct kaudio_system_state* state, kaudio_instance instance);
60 KAPI b8 kaudio_is_valid(struct kaudio_system_state* state, kaudio_instance instance);
61 KAPI f32 kaudio_pitch_get(struct kaudio_system_state* state, kaudio_instance instance);
62 KAPI b8 kaudio_pitch_set(struct kaudio_system_state* state, kaudio_instance instance, f32 pitch);
63 KAPI f32 kaudio_volume_get(struct kaudio_system_state* state, kaudio_instance instance);
64 KAPI b8 kaudio_volume_set(struct kaudio_system_state* state, kaudio_instance instance, f32 volume);
65 KAPI b8 kaudio_looping_get(struct kaudio_system_state* state, kaudio_instance instance);
66 KAPI b8 kaudio_looping_set(struct kaudio_system_state* state, kaudio_instance instance, b8 looping);
67 
68 // KAPI b8 kaudio_seek(struct kaudio_system_state* state, audio_instance instance, f32 seconds);
69 // KAPI f32 kaudio_time_played_get(struct kaudio_system_state* state, audio_instance instance);
70 // KAPI f32 kaudio_time_length_get(struct kaudio_system_state* state, audio_instance instance);
71 
72 KAPI b8 kaudio_channel_play(struct kaudio_system_state* state, u8 channel_index);
73 KAPI b8 kaudio_channel_pause(struct kaudio_system_state* state, u8 channel_index);
74 KAPI b8 kaudio_channel_resume(struct kaudio_system_state* state, u8 channel_index);
75 KAPI b8 kaudio_channel_stop(struct kaudio_system_state* state, u8 channel_index);
76 KAPI b8 kaudio_channel_is_playing(struct kaudio_system_state* state, u8 channel_index);
77 KAPI b8 kaudio_channel_is_paused(struct kaudio_system_state* state, u8 channel_index);
78 KAPI b8 kaudio_channel_is_stopped(struct kaudio_system_state* state, u8 channel_index);
79 KAPI b8 kaudio_channel_looping_get(struct kaudio_system_state* state, u8 channel_index);
80 KAPI b8 kaudio_channel_looping_set(struct kaudio_system_state* state, u8 channel_index, b8 looping);
81 
89 KAPI f32 kaudio_channel_volume_get(struct kaudio_system_state* state, u8 channel_index);
90 
98 KAPI b8 kaudio_channel_volume_set(struct kaudio_system_state* state, u8 channel_index, f32 volume);
99 
100 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, khandle* out_emitter);
101 
102 KAPI b8 kaudio_emitter_load(struct kaudio_system_state* state, khandle emitter);
103 
104 KAPI b8 kaudio_emitter_unload(struct kaudio_system_state* state, khandle emitter_handle);
105 
106 KAPI b8 kaudio_emitter_world_position_set(struct kaudio_system_state* state, khandle 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_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, khandle *out_emitter)
KAPI b8 kaudio_pitch_set(struct kaudio_system_state *state, kaudio_instance instance, f32 pitch)
KAPI b8 kaudio_emitter_unload(struct kaudio_system_state *state, khandle emitter_handle)
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_emitter_world_position_set(struct kaudio_system_state *state, khandle emitter_handle, vec3 world_position)
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 b8 kaudio_position_set(struct kaudio_system_state *state, kaudio_instance instance, vec3 position)
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 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_load(struct kaudio_system_state *state, khandle 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_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:205
signed char i8
Signed 8-bit integer.
Definition: defines.h:33
_Bool b8
8-bit boolean type
Definition: defines.h:58
float f32
32-bit floating point number
Definition: defines.h:47
unsigned long long u64
Unsigned 64-bit integer.
Definition: defines.h:28
unsigned char u8
Unsigned 8-bit integer.
Definition: defines.h:19
A global handle system for Kohi. Handles are used to obtain various resources using a unique handle i...
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:11
Definition: kaudio_types.h:13
A handle is a unique identifier used a system in the engine to avoid using raw pointers where possibl...
Definition: khandle.h:25
A 3-element vector.
Definition: math_types.h:49