Banjo API 0.0.1
Multi-purpose C99 API
Loading...
Searching...
No Matches
audio.h
1#pragma once
2
3#include <banjo/error.h>
4#include <banjo/api.h>
5
6typedef struct bj_audio_device_t bj_audio_device;
7
8typedef struct bj_audio_properties_t {
9 int16_t amplitude;
10 unsigned int channels;
11 unsigned int sample_rate;
12 uint16_t silence;
13} bj_audio_properties;
14
15typedef void (*bj_audio_callback_t)(
16 int16_t* buffer,
17 unsigned frames,
18 const bj_audio_properties* audio,
19 void* user_data,
20 uint64_t base_sample_index
21);
22
23
24BANJO_EXPORT bj_audio_device* bj_open_audio_device(
25 bj_error** p_error,
26 bj_audio_callback_t p_callback,
27 void * p_callback_user_data
28);
29
30BANJO_EXPORT void bj_close_audio_device(
31 bj_audio_device* p_device
32);
33
34BANJO_EXPORT void bj_audio_device_play(
35 bj_audio_device* p_device
36);
37
38BANJO_EXPORT void bj_audio_device_pause(
39 bj_audio_device* p_device
40);
41
42BANJO_EXPORT void bj_audio_device_reset(
43 bj_audio_device* p_device
44);
45
46BANJO_EXPORT void bj_audio_device_stop(
47 bj_audio_device* p_device
48);
49
50BANJO_EXPORT bj_bool bj_audio_device_is_playing(
51 const bj_audio_device* p_device
52);
53
55 enum {
56 BJ_AUDIO_PLAY_SINE,
57 BJ_AUDIO_PLAY_SQUARE,
58 BJ_AUDIO_PLAY_TRIANGLE,
59 BJ_AUDIO_PLAY_SAWTOOTH,
60 } function;
61 double frequency;
62 double phase;
63} bj_audio_play_note_data;
64
65BANJO_EXPORT void bj_audio_play_note(
66 int16_t* buffer,
67 unsigned frames,
68 const bj_audio_properties* audio,
69 void* user_data,
70 uint64_t base_sample_index
71);
72
73struct bj_audio_layer_data_t;
74
75typedef struct bj_audio_layer_t {
76 bj_audio_device*(*detect_devices)(struct bj_audio_layer_t*);
77 void (*dispose)(struct bj_audio_layer_t*, bj_error** p_error);
78 void(*close_device)(struct bj_audio_layer_t*, bj_audio_device*);
79 bj_audio_device*(*open_device)(struct bj_audio_layer_t*, bj_error** p_error, bj_audio_callback_t, void*);
80 struct bj_audio_layer_data_t* data;
81} bj_audio_layer;
82
83typedef struct {
84 const char* name;
85 bj_audio_layer* (*create)(bj_error** p_error);
General-purpose definitions for Banjo API.
Recoverable error handling.
Error structure.
Definition error.h:131
Definition audio.h:83
Definition audio.h:75
Definition audio.h:54
Definition audio.h:8