annotate capnproto/vamp.capnp @ 7:b14b42b3a7a2

Begin vampipe-convert
author Chris Cannam
date Fri, 20 May 2016 18:05:02 +0100
parents 2606f98ef2d9
children d6725f1c323c
rev   line source
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