Chris@0
|
1
|
Chris@0
|
2 @0xc4b1c6c44c999206;
|
Chris@0
|
3
|
Chris@0
|
4 using Cxx = import "/capnp/c++.capnp";
|
Chris@0
|
5 $Cxx.namespace("vampipe");
|
Chris@0
|
6
|
Chris@0
|
7 enum InputDomain {
|
Chris@0
|
8 timeDomain @0;
|
Chris@0
|
9 frequencyDomain @1;
|
Chris@0
|
10 }
|
Chris@0
|
11
|
Chris@0
|
12 enum SampleType {
|
Chris@0
|
13 oneSamplePerStep @0;
|
Chris@0
|
14 fixedSampleRate @1;
|
Chris@0
|
15 variableSampleRate @2;
|
Chris@0
|
16 }
|
Chris@0
|
17
|
Chris@0
|
18 enum AdapterFlag {
|
Chris@0
|
19 adaptInputDomain @0;
|
Chris@0
|
20 adaptChannelCount @1;
|
Chris@0
|
21 adaptBufferSize @2;
|
Chris@0
|
22 }
|
Chris@0
|
23
|
Chris@0
|
24 const adaptAllSafe :List(AdapterFlag) =
|
Chris@0
|
25 [ adaptInputDomain, adaptChannelCount ];
|
Chris@0
|
26
|
Chris@0
|
27 const adaptAll :List(AdapterFlag) =
|
Chris@0
|
28 [ adaptInputDomain, adaptChannelCount, adaptBufferSize ];
|
Chris@0
|
29
|
Chris@0
|
30 struct RealTime {
|
Chris@0
|
31 sec @0 :Int32 = 0;
|
Chris@0
|
32 nsec @1 :Int32 = 0;
|
Chris@0
|
33 }
|
Chris@0
|
34
|
Chris@0
|
35 struct Basic {
|
Chris@0
|
36 identifier @0 :Text;
|
Chris@0
|
37 name @1 :Text;
|
Chris@0
|
38 description @2 :Text;
|
Chris@0
|
39 }
|
Chris@0
|
40
|
Chris@0
|
41 struct ParameterDescriptor {
|
Chris@0
|
42 basic @0 :Basic;
|
Chris@0
|
43 unit @1 :Text;
|
Chris@0
|
44 minValue @2 :Float32 = 0.0;
|
Chris@0
|
45 maxValue @3 :Float32 = 0.0;
|
Chris@0
|
46 defaultValue @4 :Float32 = 0.0;
|
Chris@0
|
47 isQuantized @5 :Bool = false;
|
Chris@0
|
48 quantizeStep @6 :Float32 = 0.0;
|
Chris@0
|
49 valueNames @7 :List(Text) = [];
|
Chris@0
|
50 }
|
Chris@0
|
51
|
Chris@0
|
52 struct OutputDescriptor {
|
Chris@0
|
53 basic @0 :Basic;
|
Chris@0
|
54 unit @1 :Text;
|
Chris@0
|
55 hasFixedBinCount @2 :Bool = false;
|
Chris@0
|
56 binCount @3 :Int32 = 0;
|
Chris@0
|
57 binNames @4 :List(Text) = [];
|
Chris@0
|
58 hasKnownExtents @5 :Bool = false;
|
Chris@0
|
59 minValue @6 :Float32 = 0.0;
|
Chris@0
|
60 maxValue @7 :Float32 = 0.0;
|
Chris@0
|
61 isQuantized @8 :Bool = false;
|
Chris@0
|
62 quantizeStep @9 :Float32 = 0.0;
|
Chris@0
|
63 sampleType @10 :SampleType;
|
Chris@0
|
64 sampleRate @11 :Float32 = 0.0;
|
Chris@0
|
65 hasDuration @12 :Bool = false;
|
Chris@0
|
66 }
|
Chris@0
|
67
|
Chris@0
|
68 struct PluginStaticData {
|
Chris@0
|
69 pluginKey @0 :Text;
|
Chris@0
|
70 basic @1 :Basic;
|
Chris@0
|
71 maker @2 :Text;
|
Chris@0
|
72 copyright @3 :Text;
|
Chris@0
|
73 pluginVersion @4 :Int32;
|
Chris@0
|
74 category @5 :List(Text);
|
Chris@0
|
75 minChannelCount @6 :Int32;
|
Chris@0
|
76 maxChannelCount @7 :Int32;
|
Chris@0
|
77 parameters @8 :List(ParameterDescriptor);
|
Chris@0
|
78 programs @9 :List(Text);
|
Chris@0
|
79 inputDomain @10 :InputDomain;
|
Chris@0
|
80 basicOutputInfo @11 :List(Basic);
|
Chris@0
|
81 }
|
Chris@0
|
82
|
Chris@0
|
83 struct ProcessInput {
|
Chris@0
|
84 inputBuffers @0 :List(List(Float32));
|
Chris@0
|
85 timestamp @1 :RealTime;
|
Chris@0
|
86 }
|
Chris@0
|
87
|
Chris@0
|
88 struct Feature {
|
Chris@0
|
89 hasTimestamp @0 :Bool = false;
|
Chris@0
|
90 timestamp @1 :RealTime;
|
Chris@0
|
91 hasDuration @2 :Bool = false;
|
Chris@0
|
92 duration @3 :RealTime;
|
Chris@0
|
93 label @4 :Text;
|
Chris@0
|
94 values @5 :List(Float32) = [];
|
Chris@0
|
95 }
|
Chris@0
|
96
|
Chris@0
|
97 struct FeatureSet {
|
Chris@0
|
98 struct FSPair {
|
Chris@0
|
99 output @0 :Int32;
|
Chris@0
|
100 features @1 :List(Feature) = [];
|
Chris@0
|
101 }
|
Chris@0
|
102 featurePairs @0 :List(FSPair);
|
Chris@0
|
103 }
|
Chris@0
|
104
|
Chris@0
|
105 struct PluginConfiguration {
|
Chris@0
|
106 struct PVPair {
|
Chris@0
|
107 parameter @0 :Text;
|
Chris@0
|
108 value @1 :Float32;
|
Chris@0
|
109 }
|
Chris@0
|
110 parameterValues @0 :List(PVPair);
|
Chris@0
|
111 currentProgram @1 :Text;
|
Chris@0
|
112 channelCount @2 :Int32;
|
Chris@0
|
113 stepSize @3 :Int32;
|
Chris@0
|
114 blockSize @4 :Int32;
|
Chris@0
|
115 }
|
Chris@0
|
116
|
Chris@0
|
117 struct LoadRequest {
|
Chris@0
|
118 pluginKey @0 :Text;
|
Chris@0
|
119 inputSampleRate @1 :Float32;
|
Chris@0
|
120 adapterFlags @2 :List(AdapterFlag);
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 struct LoadResponse {
|
Chris@3
|
124 pluginHandle @0 :Int32;
|
Chris@0
|
125 staticData @1 :PluginStaticData;
|
Chris@0
|
126 defaultConfiguration @2 :PluginConfiguration;
|
Chris@0
|
127 }
|
Chris@0
|
128
|
Chris@0
|
129 struct ConfigurationRequest {
|
Chris@3
|
130 pluginHandle @0 :Int32;
|
Chris@0
|
131 configuration @1 :PluginConfiguration;
|
Chris@0
|
132 }
|
Chris@0
|
133
|
Chris@0
|
134 struct ConfigurationResponse {
|
Chris@0
|
135 outputs @0 :List(OutputDescriptor);
|
Chris@0
|
136 }
|
Chris@0
|
137
|
Chris@2
|
138 struct ProcessRequest {
|
Chris@3
|
139 pluginHandle @0 :Int32;
|
Chris@5
|
140 input @1 :ProcessInput;
|
Chris@2
|
141 }
|
Chris@2
|
142
|
Chris@7
|
143 struct FinishRequest {
|
Chris@7
|
144 pluginHandle @0 :Int32;
|
Chris@7
|
145 }
|
Chris@7
|
146
|
Chris@6
|
147 struct ProcessResponse {
|
Chris@6
|
148 features @0 :FeatureSet;
|
Chris@6
|
149 }
|
Chris@6
|
150
|
Chris@0
|
151 struct VampRequest {
|
Chris@0
|
152 request :union {
|
Chris@0
|
153 list @0 :Void;
|
Chris@0
|
154 load @1 :LoadRequest;
|
Chris@0
|
155 configure @2 :ConfigurationRequest;
|
Chris@2
|
156 process @3 :ProcessRequest;
|
Chris@7
|
157 finish @4 :FinishRequest; # getRemainingFeatures and unload
|
Chris@0
|
158 }
|
Chris@0
|
159 }
|
Chris@0
|
160
|
Chris@0
|
161 struct VampResponse {
|
Chris@0
|
162 success @0 :Bool;
|
Chris@0
|
163 errorText @1 :Text = "";
|
Chris@0
|
164 response :union {
|
Chris@0
|
165 list @2 :List(PluginStaticData);
|
Chris@0
|
166 load @3 :LoadResponse;
|
Chris@0
|
167 configure @4 :ConfigurationResponse;
|
Chris@6
|
168 process @5 :ProcessResponse;
|
Chris@6
|
169 finish @6 :ProcessResponse;
|
Chris@0
|
170 }
|
Chris@0
|
171 }
|
Chris@0
|
172
|