Vuo 2.4.4
Loading...
Searching...
No Matches
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
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
34
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))
69
70 return value;
71}
72
76json_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
95{
96 return VuoText_format("%lld samples @ %g kHz", value.sampleCount, value.samplesPerSecond/1000);
97}
98
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
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
136{
137 return (samples.sampleCount > 0);
138}