예제 #1
0
ZeroCrossing::OutputList
ZeroCrossing::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor zc;
    zc.identifier = "counts";
    zc.name = "Zero Crossing Counts";
    zc.description = "The number of zero crossing points per processing block";
    zc.unit = "crossings";
    zc.hasFixedBinCount = true;
    zc.binCount = 1;
    zc.hasKnownExtents = false;
    zc.isQuantized = true;
    zc.quantizeStep = 1.0;
    zc.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(zc);

    zc.identifier = "zerocrossings";
    zc.name = "Zero Crossings";
    zc.description = "The locations of zero crossing points";
    zc.unit = "";
    zc.hasFixedBinCount = true;
    zc.binCount = 0;
    zc.sampleType = OutputDescriptor::VariableSampleRate;
    zc.sampleRate = m_inputSampleRate;
    list.push_back(zc);

    return list;
}
예제 #2
0
Energy::OutputList
Energy::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor rmsenergy;
    rmsenergy.identifier = "rmsenergy";
    rmsenergy.name = "RMS Energy";
    rmsenergy.description = "RMS of the signal.";
    rmsenergy.unit = "";
    rmsenergy.hasFixedBinCount = true;
    rmsenergy.binCount = 1;
    rmsenergy.hasKnownExtents = false;
    rmsenergy.isQuantized = false;
    rmsenergy.sampleType = OutputDescriptor::OneSamplePerStep;
    rmsenergy.hasDuration = false;
    list.push_back(rmsenergy);

    OutputDescriptor lowenergy;
    lowenergy.identifier = "lowenergy";
    lowenergy.name = "Low Energy";
    lowenergy.description = "Percentage of track which is below the low energy threshold.";
    lowenergy.unit = "";
    lowenergy.hasFixedBinCount = true;
    lowenergy.binCount = 1;
    lowenergy.hasKnownExtents = false;
    lowenergy.isQuantized = false;
    lowenergy.sampleType = OutputDescriptor::VariableSampleRate;
    lowenergy.sampleRate = 0;
    lowenergy.hasDuration = false;
    list.push_back(lowenergy);

    return list;
}
PercussionOnsetDetector::OutputList
PercussionOnsetDetector::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "onsets";
    d.name = "Onsets";
    d.description = "Percussive note onset locations";
    d.unit = "";
    d.hasFixedBinCount = true;
    d.binCount = 0;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = m_inputSampleRate;
    list.push_back(d);

    d.identifier = "detectionfunction";
    d.name = "Detection Function";
    d.description = "Broadband energy rise detection function";
    d.binCount = 1;
    d.isQuantized = true;
    d.quantizeStep = 1.0;
    d.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(d);

    return list;
}
예제 #4
0
MFCCPlugin::OutputList
MFCCPlugin::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "coefficients";
    d.name = "Coefficients";
    d.unit = "";
    d.description = "MFCC values";
    d.hasFixedBinCount = true;
    d.binCount = m_bins;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(d);

    d.identifier = "means";
    d.name = "Means of Coefficients";
    d.description = "Mean values of MFCCs across duration of audio input";
    d.sampleType = OutputDescriptor::FixedSampleRate;
    d.sampleRate = 1;
    list.push_back(d);

    return list;
}
예제 #5
0
BarBeatTracker::OutputList
BarBeatTracker::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor beat;
    beat.identifier = "beats";
    beat.name = "Beats";
    beat.description = "Beat locations labelled with metrical position";
    beat.unit = "";
    beat.hasFixedBinCount = true;
    beat.binCount = 0;
    beat.sampleType = OutputDescriptor::VariableSampleRate;
    beat.sampleRate = 1.0 / m_stepSecs;

    OutputDescriptor bars;
    bars.identifier = "bars";
    bars.name = "Bars";
    bars.description = "Bar locations";
    bars.unit = "";
    bars.hasFixedBinCount = true;
    bars.binCount = 0;
    bars.sampleType = OutputDescriptor::VariableSampleRate;
    bars.sampleRate = 1.0 / m_stepSecs;

    OutputDescriptor beatcounts;
    beatcounts.identifier = "beatcounts";
    beatcounts.name = "Beat Count";
    beatcounts.description = "Beat counter function";
    beatcounts.unit = "";
    beatcounts.hasFixedBinCount = true;
    beatcounts.binCount = 1;
    beatcounts.sampleType = OutputDescriptor::VariableSampleRate;
    beatcounts.sampleRate = 1.0 / m_stepSecs;

    OutputDescriptor beatsd;
    beatsd.identifier = "beatsd";
    beatsd.name = "Beat Spectral Difference";
    beatsd.description = "Beat spectral difference function used for bar-line detection";
    beatsd.unit = "";
    beatsd.hasFixedBinCount = true;
    beatsd.binCount = 1;
    beatsd.sampleType = OutputDescriptor::VariableSampleRate;
    beatsd.sampleRate = 1.0 / m_stepSecs;

    list.push_back(beat);
    list.push_back(bars);
    list.push_back(beatcounts);
    list.push_back(beatsd);

    return list;
}
예제 #6
0
OnsetDetector::OutputList
OnsetDetector::getOutputDescriptors() const
{
    OutputList list;

    float stepSecs = m_preferredStepSecs;
//    if (m_d) stepSecs = m_d->dfConfig.stepSecs;

    OutputDescriptor onsets;
    onsets.identifier = "onsets";
    onsets.name = "Note Onsets";
    onsets.description = "Perceived note onset positions";
    onsets.unit = "";
    onsets.hasFixedBinCount = true;
    onsets.binCount = 0;
    onsets.sampleType = OutputDescriptor::VariableSampleRate;
    onsets.sampleRate = 1.0 / stepSecs;

    OutputDescriptor df;
    df.identifier = "detection_fn";
    df.name = "Onset Detection Function";
    df.description = "Probability function of note onset likelihood";
    df.unit = "";
    df.hasFixedBinCount = true;
    df.binCount = 1;
    df.hasKnownExtents = false;
    df.isQuantized = false;
    df.sampleType = OutputDescriptor::OneSamplePerStep;

    OutputDescriptor sdf;
    sdf.identifier = "smoothed_df";
    sdf.name = "Smoothed Detection Function";
    sdf.description = "Smoothed probability function used for peak-picking";
    sdf.unit = "";
    sdf.hasFixedBinCount = true;
    sdf.binCount = 1;
    sdf.hasKnownExtents = false;
    sdf.isQuantized = false;

    sdf.sampleType = OutputDescriptor::VariableSampleRate;

//!!! SV doesn't seem to handle these correctly in getRemainingFeatures
//    sdf.sampleType = OutputDescriptor::FixedSampleRate;
    sdf.sampleRate = 1.0 / stepSecs;

    list.push_back(onsets);
    list.push_back(df);
    list.push_back(sdf);

    return list;
}
예제 #7
0
TonalChangeDetect::OutputList TonalChangeDetect::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor hc;
    hc.identifier = "tcstransform";
    hc.name = "Transform to 6D Tonal Content Space";
    hc.unit = "";
    hc.description = "Representation of content in a six-dimensional tonal space";
    hc.hasFixedBinCount = true;
    hc.binCount = 6;
    hc.hasKnownExtents = true;
    hc.minValue = -1.0;
    hc.maxValue = 1.0;
    hc.isQuantized = false;
    hc.sampleType = OutputDescriptor::OneSamplePerStep;

    OutputDescriptor d;
    d.identifier = "tcfunction";
    d.name = "Tonal Change Detection Function";
    d.unit = "";
    d.description = "Estimate of the likelihood of a tonal change occurring within each spectral frame";
    d.minValue = 0;
    d.minValue = 2;
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    double dStepSecs = double(getPreferredStepSize()) / m_inputSampleRate;
    d.sampleRate = 1.0f / dStepSecs;

    OutputDescriptor changes;
    changes.identifier = "changepositions";
    changes.name = "Tonal Change Positions";
    changes.unit = "";
    changes.description = "Estimated locations of tonal changes";
    changes.hasFixedBinCount = true;
    changes.binCount = 0;
    changes.hasKnownExtents = false;
    changes.isQuantized = false;
    changes.sampleType = OutputDescriptor::VariableSampleRate;
    changes.sampleRate = 1.0 / dStepSecs;

    list.push_back(hc);
    list.push_back(d);
    list.push_back(changes);

    return list;
}
예제 #8
0
Vamp::Plugin::OutputList VampPlugin::getOutputDescriptors() const
{
    OutputList outputs;

    OutputDescriptor out;
    out.identifier = "output";
    out.name = "Output";
    out.sampleType = OutputDescriptor::FixedSampleRate;
    out.hasFixedBinCount = true;
    if (m_system)
    {
#if 1
      mrs_natural in_rate = m_system->getControl("mrs_natural/inSamples")->to<mrs_natural>();
      mrs_natural out_rate = m_system->getControl("mrs_natural/onSamples")->to<mrs_natural>();
      float input_output_rate_ratio = (float) out_rate / (float) in_rate;
      out.sampleRate = m_input_sample_rate * input_output_rate_ratio;
#endif
      out.sampleRate = m_input_sample_rate / (m_step_size * out_rate);
      out.binCount = m_system->getControl("mrs_natural/onObservations")->to<mrs_natural>();
    }

    outputs.push_back(out);

    return outputs;
}
예제 #9
0
CQChromaVamp::OutputList
CQChromaVamp::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "chromagram";
    d.name = "Chromagram";
    d.unit = "";
    d.description = "Chromagram obtained from output of constant-Q transform, folding over each process block into a single-octave vector";
    d.hasFixedBinCount = true;
    d.binCount = m_bpo;

    if (m_chroma) {
        for (int i = 0; i < (int)d.binCount; ++i) {
            d.binNames.push_back(m_chroma->getBinName(i));
        }
    }

    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::FixedSampleRate;
    d.sampleRate = m_inputSampleRate / (m_chroma ? m_chroma->getColumnHop() : 256);
    list.push_back(d);

    return list;
}
예제 #10
0
SegmenterPlugin::OutputList
SegmenterPlugin::getOutputDescriptors() const
{
    OutputList list;
	
    OutputDescriptor segmentation;
    segmentation.identifier = "segmentation";
    segmentation.name = "Segmentation";
    segmentation.description = "Segmentation";
    segmentation.unit = "segment-type";
    segmentation.hasFixedBinCount = true;
    segmentation.binCount = 1;
    segmentation.hasKnownExtents = true;
    segmentation.minValue = 1;
    segmentation.maxValue = nSegmentTypes;
    segmentation.isQuantized = true;
    segmentation.quantizeStep = 1;
    segmentation.sampleType = OutputDescriptor::VariableSampleRate;
    segmentation.sampleRate = m_inputSampleRate / getPreferredStepSize();
    segmentation.hasDuration = true;
	
    list.push_back(segmentation);
    
    return list;
}
예제 #11
0
MF0UA::OutputList
MF0UA::getOutputDescriptors() const
{
    OutputList list;

    // See OutputDescriptor documentation for the possibilities here.
    // Every plugin must have at least one output.

    OutputDescriptor d;
    d.identifier = "mf0ua";
    d.name = "UA Multiple f0 Estimation";
    d.description = "Estimated note pitch (MIDI note number)";
    d.unit = "MIDI units";
    d.hasFixedBinCount=true;
    d.binCount = 1;
    d.hasKnownExtents = true;
    d.minValue = 0;
    d.maxValue = 127;
    d.isQuantized = true;
    d.quantizeStep = 1;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = (m_stepSize == 0) ? m_inputSampleRate/2048 : m_inputSampleRate/m_stepSize;
    d.hasDuration = true;
    list.push_back(d);

    return list;
}
예제 #12
0
AdaptiveSpectrogram::OutputList
AdaptiveSpectrogram::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "output";
    d.name = "Output";
    d.description = "The output of the plugin";
    d.unit = "";
    d.hasFixedBinCount = true;
    d.binCount = getPreferredBlockSize() / 2;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::FixedSampleRate;
    d.sampleRate = m_inputSampleRate / ((2 << m_w) / 2);
    d.hasDuration = false;
    char name[20];
    for (int i = 0; i < d.binCount; ++i) {
        float freq = (m_inputSampleRate / (d.binCount * 2)) * (i + 1); // no DC bin
        sprintf(name, "%d Hz", int(freq));
        d.binNames.push_back(name);
    }
    list.push_back(d);

    return list;
}
예제 #13
0
PluginHostAdapter::OutputList
PluginHostAdapter::getOutputDescriptors() const
{
    OutputList list;
    if (!m_handle) {
//        std::cerr << "PluginHostAdapter::getOutputDescriptors: no handle " << std::endl;
        return list;
    }

    unsigned int count = m_descriptor->getOutputCount(m_handle);

    for (unsigned int i = 0; i < count; ++i) {
        VampOutputDescriptor *sd = m_descriptor->getOutputDescriptor(m_handle, i);
        OutputDescriptor d;
        d.identifier = sd->identifier;
        d.name = sd->name;
        d.description = sd->description;
        d.unit = sd->unit;
        d.hasFixedBinCount = sd->hasFixedBinCount;
        d.binCount = sd->binCount;
        if (d.hasFixedBinCount && sd->binNames) {
            for (unsigned int j = 0; j < sd->binCount; ++j) {
                d.binNames.push_back(sd->binNames[j] ? sd->binNames[j] : "");
            }
        }
        d.hasKnownExtents = sd->hasKnownExtents;
        d.minValue = sd->minValue;
        d.maxValue = sd->maxValue;
        d.isQuantized = sd->isQuantized;
        d.quantizeStep = sd->quantizeStep;

        switch (sd->sampleType) {
        case vampOneSamplePerStep:
            d.sampleType = OutputDescriptor::OneSamplePerStep;
            break;
        case vampFixedSampleRate:
            d.sampleType = OutputDescriptor::FixedSampleRate;
            break;
        case vampVariableSampleRate:
            d.sampleType = OutputDescriptor::VariableSampleRate;
            break;
        }

        d.sampleRate = sd->sampleRate;

        if (m_descriptor->vampApiVersion >= 2) {
            d.hasDuration = sd->hasDuration;
        } else {
            d.hasDuration = false;
        }

        list.push_back(d);

        m_descriptor->releaseOutputDescriptor(sd);
    }

    return list;
}
예제 #14
0
Silence::OutputList
Silence::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;

    d.identifier = "silent";
    d.name = "Silent Regions";
    d.description = "Return an interval covering each silent region";
    d.hasFixedBinCount = true;
    d.binCount = 0;
    d.hasKnownExtents = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = 0;
    d.hasDuration = true;
    list.push_back(d);

    d.identifier = "noisy";
    d.name = "Non-Silent Regions";
    d.description = "Return an interval covering each non-silent region";
    d.hasFixedBinCount = true;
    d.binCount = 0;
    d.hasKnownExtents = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = 0;
    d.hasDuration = true;
    list.push_back(d);

    d.identifier = "silencelevel";
    d.name = "Silence Test";
    d.description = "Return a function that switches from 1 to 0 when silence falls, and back again when it ends";
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = true;
    d.minValue = 0;
    d.maxValue = 1;
    d.isQuantized = true;
    d.quantizeStep = 1;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = 0;
    list.push_back(d);

    return list;
}
예제 #15
0
BeatTracker::OutputList
BeatTracker::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor beat;
    beat.identifier = "beats";
    beat.name = "Beats";
    beat.description = "Estimated metrical beat locations";
    beat.unit = "";
    beat.hasFixedBinCount = true;
    beat.binCount = 0;
    beat.sampleType = OutputDescriptor::VariableSampleRate;
    beat.sampleRate = 1.0 / m_stepSecs;

    OutputDescriptor df;
    df.identifier = "detection_fn";
    df.name = "Onset Detection Function";
    df.description = "Probability function of note onset likelihood";
    df.unit = "";
    df.hasFixedBinCount = true;
    df.binCount = 1;
    df.hasKnownExtents = false;
    df.isQuantized = false;
    df.sampleType = OutputDescriptor::OneSamplePerStep;

    OutputDescriptor tempo;
    tempo.identifier = "tempo";
    tempo.name = "Tempo";
    tempo.description = "Locked tempo estimates";
    tempo.unit = "bpm";
    tempo.hasFixedBinCount = true;
    tempo.binCount = 1;
    tempo.hasKnownExtents = false;
    tempo.isQuantized = false;
    tempo.sampleType = OutputDescriptor::VariableSampleRate;
    tempo.sampleRate = 1.0 / m_stepSecs;

    list.push_back(beat);
    list.push_back(df);
    list.push_back(tempo);

    return list;
}
예제 #16
0
VampEBUr128::OutputList
VampEBUr128::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor zc;
    zc.identifier = "loundless";
    zc.name = "Integrated loudness";
    zc.description = "Integrated Loudness";
    zc.unit = "LUFS";
    zc.hasFixedBinCount = true;
    zc.binCount = 0;
    zc.hasKnownExtents = false;
    zc.isQuantized = false;
    zc.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(zc);

    zc.identifier = "range";
    zc.name = "Integrated Loudness Range";
    zc.description = "Dynamic Range of the Audio";
    zc.unit = "LU";
    zc.hasFixedBinCount = true;
    zc.binCount = 0;
    zc.hasKnownExtents = false;
    zc.isQuantized = false;
    zc.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(zc);

    zc.identifier = "histogram";
    zc.name = "Loudness Histogram";
    zc.description = "Dynamic Range of the audio";
    zc.unit = "";
    zc.hasFixedBinCount = false;
    zc.binCount = 0;
    zc.hasKnownExtents = false;
    zc.isQuantized = false;
    zc.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(zc);

    return list;
}
예제 #17
0
파일: engine.cpp 프로젝트: samsaga2/llforth
void Engine::ParseBody(const std::string &end)
{
	istack.Clear();
	do
	{
		if(lexer.word == end)
			break;

		std::string word = lexer.word;
		int token = lexer.token;
		int number_integer = lexer.number_integer;
		int number_float = lexer.number_float;
		lexer.NextToken();

		FunctionBaseAST *function = FindFunction(word);
		if(function != NULL)
		{
			// append function call
			OutputList *args = new OutputList();
			for(size_t i = 0; i < function->InputSize(); i++)
				args->push_back(istack.Pop(function->InputType(i)));

			AST *ast = new CallAST(function, args);
			istack.Push(ast);
			func_body->push_back(ast);
		}
		else
			switch(token)
			{
			case Lexer::tok_word:
				// append core word
				AppendCore(word, 1);
				break;
			case Lexer::tok_integer:
				// append literal integer
				{
					AST *ast = new IntegerAST(number_integer);
					istack.Push(ast);
					func_body->push_back(ast);
				}
				break;
			case Lexer::tok_float:
				// append literal float
				{
					AST *ast = new FloatAST(number_float);
					istack.Push(ast);
					func_body->push_back(ast);
				}
				break;
			}
	}
	while(true);
}
SpeechMusicSegmenter::OutputList
SpeechMusicSegmenter::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor segmentation;
    segmentation.identifier = "segmentation";
    segmentation.name = "Segmentation";
    segmentation.description = "Segmentation";
    segmentation.unit = "segment-type";
    segmentation.hasFixedBinCount = true;
    segmentation.binCount = 1;
    segmentation.hasKnownExtents = true;
    segmentation.minValue = 0;
    segmentation.maxValue = 2;
    segmentation.isQuantized = true;
    segmentation.quantizeStep = 1;
    segmentation.sampleType = OutputDescriptor::VariableSampleRate;
    segmentation.sampleRate = m_inputSampleRate / getPreferredStepSize();

    OutputDescriptor skewness;
    skewness.identifier = "skewness";
    skewness.name = "Detection function";
    skewness.description = "Detection function";
    skewness.unit = "segment-type";
    skewness.hasFixedBinCount = true;
    skewness.binCount = 1;
    skewness.hasKnownExtents = true;
    skewness.minValue = 0;
    skewness.maxValue = 2;
    skewness.isQuantized = true;
    skewness.quantizeStep = 1;
    skewness.sampleType = OutputDescriptor::VariableSampleRate;
    skewness.sampleRate = m_inputSampleRate / getPreferredStepSize();

    list.push_back(segmentation);
    list.push_back(skewness);

    return list;
}
예제 #19
0
SpectralCentroid::OutputList
SpectralCentroid::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "logcentroid";
    d.name = "Log Frequency Centroid";
    d.description = "Centroid of the log weighted frequency spectrum";
    d.unit = "Hz";
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(d);

    d.identifier = "linearcentroid";
    d.name = "Linear Frequency Centroid";
    d.description = "Centroid of the linear frequency spectrum";
    list.push_back(d);

    return list;
}
예제 #20
0
FindPulseBatch::OutputList
FindPulseBatch::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor zc;

    zc.identifier = "pulses";
    zc.name = "Pulses";
    zc.description = "The locations and features of pulses";
    zc.unit = "";
    zc.hasFixedBinCount = true;
    zc.binCount = 4;
    zc.sampleType = OutputDescriptor::VariableSampleRate;
    zc.sampleRate = m_inputSampleRate;
    list.push_back(zc);

    return list;
}
예제 #21
0
MarsyasBExtractRolloff::OutputList
MarsyasBExtractRolloff::getOutputDescriptors() const
{
  OutputList list;

  OutputDescriptor output;
  output.identifier = "rolloff";
  output.name = "Spectral Rolloff";
  output.description = "The value of the Spectral Rolloff";
  output.unit = "value";
  output.hasFixedBinCount = true;
  output.binCount = 1;
  output.hasKnownExtents = false;
  output.isQuantized = false;
  output.sampleType = OutputDescriptor::OneSamplePerStep;
  list.push_back(output);

  return list;
}
AmplitudeFollower::OutputList
AmplitudeFollower::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor sca;
    sca.identifier = "amplitude";
    sca.name = "Amplitude";
    sca.description = "The peak tracked amplitude for the current processing block";
    sca.unit = "V";
    sca.hasFixedBinCount = true;
    sca.binCount = 1;
    sca.hasKnownExtents = false;
    sca.isQuantized = false;
    sca.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(sca);

    return list;
}
예제 #23
0
Mfcc::OutputList
Mfcc::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "mfcc";
    d.name = "Mel-Frequency Cepstrum Coefficients";
    d.description = "List of detected Mel-Frequency Cepstrum Coefficients";
    d.unit = "";
    d.hasFixedBinCount = true;
    d.binCount = m_ncoeffs;
    d.isQuantized = true;
    d.quantizeStep = 1.0;
    d.sampleType = OutputDescriptor::OneSamplePerStep;
    list.push_back(d);

    return list;
}
예제 #24
0
MiniBpmVamp::OutputList
MiniBpmVamp::getOutputDescriptors() const
{
    OutputList outputs;

    OutputDescriptor d;
    d.identifier = "bpm";
    d.name = "Tempo";
    d.description = "Single estimated tempo in beats per minute";
    d.unit = "bpm";
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::FixedSampleRate;
    d.sampleRate = m_inputSampleRate;
    d.hasDuration = true;
    outputs.push_back(d);

    return outputs;
}
예제 #25
0
파일: DWT.cpp 프로젝트: Jchuchla/vixen
DWT::OutputList
DWT::getOutputDescriptors() const
{
    OutputList list;
	
    OutputDescriptor sg;
    sg.identifier = "wcoeff";
    sg.name = "Wavelet Coefficients";
    sg.description = "Wavelet coefficients";
    sg.unit = "";
    sg.hasFixedBinCount = true;              // depends on block size
    sg.binCount = m_scales; 	// number of scales
    sg.hasKnownExtents = false;
    sg.isQuantized = false;
    sg.sampleType = OutputDescriptor::FixedSampleRate; 
    sg.sampleRate = .5 * m_inputSampleRate;
	
    list.push_back(sg);
	
    return list;
}
예제 #26
0
Pitch::OutputList
Pitch::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "frequency";
    d.name = "Fundamental Frequency";
    d.description = "List of detected frequencies";
    d.unit = "Hz";
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = 0;
    if (m_stepSize != 0) {
        d.sampleRate = m_inputSampleRate / m_stepSize;
    }
    list.push_back(d);

    return list;
}
예제 #27
0
MyPlugin::OutputList
MyPlugin::getOutputDescriptors() const
{
    OutputList list;

    // See OutputDescriptor documentation for the possibilities here.
    // Every plugin must have at least one output.

    OutputDescriptor d;
    d.identifier = "output";
    d.name = "My Output";
    d.description = "";
    d.unit = "";
    d.hasFixedBinCount = true;
    d.binCount = 1;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::OneSamplePerStep;
    d.hasDuration = false;
    list.push_back(d);

    return list;
}
예제 #28
0
파일: CQVamp.cpp 프로젝트: cannam/silvet
CQVamp::OutputList
CQVamp::getOutputDescriptors() const
{
    OutputList list;

    OutputDescriptor d;
    d.identifier = "constantq";
    d.name = "Constant-Q Spectrogram";
    d.unit = "";
    d.description = "Output of constant-Q transform, as a single vector per process block";
    d.hasFixedBinCount = true;
    d.binCount = (m_cq ? m_cq->getTotalBins() : (9 * 24));

    if (m_cq) {
        char name[20];
        for (int i = 0; i < (int)d.binCount; ++i) {
            float freq = m_cq->getBinFrequency(d.binCount - i - 1);
            sprintf(name, "%.1f Hz", freq);
            int note = Pitch::getPitchForFrequency(freq, 0, m_tuningFrequency);
            float nearestFreq =
                Pitch::getFrequencyForPitch(note, 0, m_tuningFrequency);
            if (fabs(freq - nearestFreq) < 0.01) {
                d.binNames.push_back(name + std::string(" ") + noteName(note));
            } else {
                d.binNames.push_back(name);
            }
        }
    }

    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::FixedSampleRate;
    d.sampleRate = m_inputSampleRate / (m_cq ? m_cq->getColumnHop() : 256);
    list.push_back(d);

    return list;
}
예제 #29
0
MzSpectrogramFFTW::OutputList 
MzSpectrogramFFTW::getOutputDescriptors(void) const {

   OutputList       list;
   OutputDescriptor od;

   // First and only output channel:
   od.identifier       = "magnitude";
   od.name             = "Magnitude Spectrum";
   od.unit             = "decibels";
   od.hasFixedBinCount = true;
   od.binCount         = mz_maxbin - mz_minbin + 1;
   od.hasKnownExtents  = false;
   // od.minValue      = 0.0;
   // od.maxValue      = 0.0;
   od.isQuantized      = false;
   // od.quantizeStep  = 1.0;
   od.sampleType       = OutputDescriptor::OneSamplePerStep;
   // od.sampleRate    = 0.0;
   list.push_back(od);


   return list; 
}
예제 #30
0
TemporalCentroid::OutputList
TemporalCentroid::getOutputDescriptors() const
{
    OutputList list;

    // See OutputDescriptor documentation for the possibilities here.
    // Every plugin must have at least one output.

    OutputDescriptor d;
    d.identifier = "temporalcentroid";
    d.name = "Temporal Centroid";
    d.description = "";
    d.unit = "";
    d.hasFixedBinCount = true;
    d.binCount = 0;
    d.hasKnownExtents = false;
    d.isQuantized = false;
    d.sampleType = OutputDescriptor::VariableSampleRate;
    d.sampleRate = 0;
    d.hasDuration = false;
    list.push_back(d);

    return list;
}