Chris@0: Chris@0: #include "Azi.h" Chris@0: Chris@0: Chris@0: Azi::Azi(float inputSampleRate) : Chris@0: Plugin(inputSampleRate) Chris@0: // Also be sure to set your plugin parameters (presumably stored Chris@0: // in member variables) to their default values here -- the host Chris@0: // will not do that for you Chris@0: { Chris@0: } Chris@0: Chris@0: Azi::~Azi() Chris@0: { Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getIdentifier() const Chris@0: { Chris@0: return "azi"; Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getName() const Chris@0: { Chris@0: return "Stereo Plan"; Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getDescription() const Chris@0: { Chris@0: // Return something helpful here! Chris@0: return ""; Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getMaker() const Chris@0: { Chris@0: // Your name here Chris@0: return ""; Chris@0: } Chris@0: Chris@0: int Chris@0: Azi::getPluginVersion() const Chris@0: { Chris@0: // Increment this each time you release a version that behaves Chris@0: // differently from the previous one Chris@0: return 1; Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getCopyright() const Chris@0: { Chris@0: // This function is not ideally named. It does not necessarily Chris@0: // need to say who made the plugin -- getMaker does that -- but it Chris@0: // should indicate the terms under which it is distributed. For Chris@0: // example, "Copyright (year). All Rights Reserved", or "GPL" Chris@0: return ""; Chris@0: } Chris@0: Chris@0: Azi::InputDomain Chris@0: Azi::getInputDomain() const Chris@0: { Chris@0: return TimeDomain; Chris@0: } Chris@0: Chris@0: size_t Chris@0: Azi::getPreferredBlockSize() const Chris@0: { Chris@0: return 0; // 0 means "I can handle any block size" Chris@0: } Chris@0: Chris@0: size_t Chris@0: Azi::getPreferredStepSize() const Chris@0: { Chris@0: return 0; // 0 means "anything sensible"; in practice this Chris@0: // means the same as the block size for TimeDomain Chris@0: // plugins, or half of it for FrequencyDomain plugins Chris@0: } Chris@0: Chris@0: size_t Chris@0: Azi::getMinChannelCount() const Chris@0: { Chris@0: return 1; Chris@0: } Chris@0: Chris@0: size_t Chris@0: Azi::getMaxChannelCount() const Chris@0: { Chris@0: return 1; Chris@0: } Chris@0: Chris@0: Azi::ParameterList Chris@0: Azi::getParameterDescriptors() const Chris@0: { Chris@0: ParameterList list; Chris@0: Chris@0: // If the plugin has no adjustable parameters, return an empty Chris@0: // list here (and there's no need to provide implementations of Chris@0: // getParameter and setParameter in that case either). Chris@0: Chris@0: // Note that it is your responsibility to make sure the parameters Chris@0: // start off having their default values (e.g. in the constructor Chris@0: // above). The host needs to know the default value so it can do Chris@0: // things like provide a "reset to default" function, but it will Chris@0: // not explicitly set your parameters to their defaults for you if Chris@0: // they have not changed in the mean time. Chris@0: Chris@0: ParameterDescriptor d; Chris@0: d.identifier = "parameter"; Chris@0: d.name = "Some Parameter"; Chris@0: d.description = ""; Chris@0: d.unit = ""; Chris@0: d.minValue = 0; Chris@0: d.maxValue = 10; Chris@0: d.defaultValue = 5; Chris@0: d.isQuantized = false; Chris@0: list.push_back(d); Chris@0: Chris@0: return list; Chris@0: } Chris@0: Chris@0: float Chris@0: Azi::getParameter(string identifier) const Chris@0: { Chris@0: if (identifier == "parameter") { Chris@0: return 5; // return the ACTUAL current value of your parameter here! Chris@0: } Chris@0: return 0; Chris@0: } Chris@0: Chris@0: void Chris@0: Azi::setParameter(string identifier, float value) Chris@0: { Chris@0: if (identifier == "parameter") { Chris@0: // set the actual value of your parameter Chris@0: } Chris@0: } Chris@0: Chris@0: Azi::ProgramList Chris@0: Azi::getPrograms() const Chris@0: { Chris@0: ProgramList list; Chris@0: Chris@0: // If you have no programs, return an empty list (or simply don't Chris@0: // implement this function or getCurrentProgram/selectProgram) Chris@0: Chris@0: return list; Chris@0: } Chris@0: Chris@0: string Chris@0: Azi::getCurrentProgram() const Chris@0: { Chris@0: return ""; // no programs Chris@0: } Chris@0: Chris@0: void Chris@0: Azi::selectProgram(string name) Chris@0: { Chris@0: } Chris@0: Chris@0: Azi::OutputList Chris@0: Azi::getOutputDescriptors() const Chris@0: { Chris@0: OutputList list; Chris@0: Chris@0: // See OutputDescriptor documentation for the possibilities here. Chris@0: // Every plugin must have at least one output. Chris@0: Chris@0: OutputDescriptor d; Chris@0: d.identifier = "output"; Chris@0: d.name = "My Output"; Chris@0: d.description = ""; Chris@0: d.unit = ""; Chris@0: d.hasFixedBinCount = true; Chris@0: d.binCount = 1; Chris@0: d.hasKnownExtents = false; Chris@0: d.isQuantized = false; Chris@0: d.sampleType = OutputDescriptor::OneSamplePerStep; Chris@0: d.hasDuration = false; Chris@0: list.push_back(d); Chris@0: Chris@0: return list; Chris@0: } Chris@0: Chris@0: bool Chris@0: Azi::initialise(size_t channels, size_t stepSize, size_t blockSize) Chris@0: { Chris@0: if (channels < getMinChannelCount() || Chris@0: channels > getMaxChannelCount()) return false; Chris@0: Chris@0: // Real initialisation work goes here! Chris@0: Chris@0: return true; Chris@0: } Chris@0: Chris@0: void Chris@0: Azi::reset() Chris@0: { Chris@0: // Clear buffers, reset stored values, etc Chris@0: } Chris@0: Chris@0: Azi::FeatureSet Chris@0: Azi::process(const float *const *inputBuffers, Vamp::RealTime timestamp) Chris@0: { Chris@0: // Do actual work! Chris@0: return FeatureSet(); Chris@0: } Chris@0: Chris@0: Azi::FeatureSet Chris@0: Azi::getRemainingFeatures() Chris@0: { Chris@0: return FeatureSet(); Chris@0: } Chris@0: