Vuo
2.4.4
Loading...
Searching...
No Matches
type
VuoAudioSamples.c
Go to the documentation of this file.
1
10
#include <stdlib.h>
11
#include "
VuoAudioSamples.h
"
12
#include "
VuoInteger.h
"
13
#include "
VuoReal.h
"
14
#include "
VuoText.h
"
15
17
#ifdef VUO_COMPILER
18
VuoModuleMetadata
({
19
"title"
:
"Audio Samples"
,
20
"description"
:
"A set of audio amplitudes for a single channel."
,
21
"keywords"
: [ ],
22
"version"
:
"1.0.0"
,
23
"dependencies"
: [
24
"VuoInteger"
,
25
"VuoReal"
,
26
"VuoText"
27
]
28
});
29
#endif
31
32
const
VuoInteger
VuoAudioSamples_bufferSize
= 512;
33
const
VuoReal
VuoAudioSamples_sampleRate
= 48000;
34
45
VuoAudioSamples
VuoAudioSamples_makeFromJson
(json_object * js)
46
{
47
VuoAudioSamples
value = {0, NULL, 0};
48
json_object *o = NULL;
49
50
if
(json_object_object_get_ex(js,
"samples"
, &o))
51
{
52
int
sampleCount = json_object_array_length(o);
53
if
(sampleCount)
54
{
55
value =
VuoAudioSamples_alloc
(sampleCount);
56
57
for
(
VuoInteger
i = 0; i < sampleCount; ++i)
58
value.
samples
[i] = json_object_get_double(json_object_array_get_idx(o, i));
59
}
60
else
61
{
62
value.
sampleCount
= 0;
63
value.
samples
= NULL;
64
}
65
}
66
67
if
(json_object_object_get_ex(js,
"samplesPerSecond"
, &o))
68
value.
samplesPerSecond
=
VuoReal_makeFromJson
(o);
69
70
return
value;
71
}
72
76
json_object *
VuoAudioSamples_getJson
(
const
VuoAudioSamples
value)
77
{
78
json_object *js = json_object_new_object();
79
80
json_object *samplesObject = json_object_new_array();
81
for
(
VuoInteger
i=0; i<value.
sampleCount
; ++i)
82
json_object_array_add(samplesObject,
VuoReal_getJson
(value.
samples
[i]));
83
json_object_object_add(js,
"samples"
, samplesObject);
84
85
json_object *samplesPerSecondObject =
VuoReal_getJson
(value.
samplesPerSecond
);
86
json_object_object_add(js,
"samplesPerSecond"
, samplesPerSecondObject);
87
88
return
js;
89
}
90
94
char
*
VuoAudioSamples_getSummary
(
const
VuoAudioSamples
value)
95
{
96
return
VuoText_format
(
"%lld samples @ %g kHz"
, value.
sampleCount
, value.
samplesPerSecond
/1000);
97
}
98
102
VuoAudioSamples
VuoAudioSamples_alloc
(
VuoInteger
sampleCount)
103
{
104
VuoAudioSamples
value;
105
106
value.
sampleCount
= sampleCount;
107
108
value.
samples
= (
VuoReal
*)malloc(
sizeof
(
VuoReal
)*value.
sampleCount
);
109
VuoRegister
(value.
samples
, free);
110
111
return
value;
112
}
113
119
bool
VuoAudioSamples_isEmpty
(
const
VuoAudioSamples
samples)
120
{
121
if
(samples.
sampleCount
== 0)
122
return
true
;
123
124
for
(
VuoInteger
i = 0; i < samples.
sampleCount
; ++i)
125
if
(fabs(samples.
samples
[i]) >= 0.0001)
126
return
false
;
127
128
return
true
;
129
}
130
135
bool
VuoAudioSamples_isPopulated
(
const
VuoAudioSamples
samples)
136
{
137
return
(samples.
sampleCount
> 0);
138
}
Generated on Thu Nov 9 2023 16:59:30 for Vuo by
1.9.8