Marsyas  0.2
Data Structures
Here are the data structures with brief descriptions:
AbsMaxCalculate the maximum absolute value for each observation signal (per slice)
AbsSoundFileSinkAbstract Interface for SoundFileSinks of various formats
AbsSoundFileSourceAbstract Interface for SoundFileSource of various formats
AbsSoundFileSource2Abstract Interface for SoundFileSource of various formats
AccentFilterBankBasic example on how to use controls efficiently in MarSystems
AccumulatorAccumulate result of multiple ticks
AdditiveOscGenerates what is perceptually a saw wave
ADRessAzimuth Discrimination and Resynthesis (ADRess) implementation, which takes a stereo input (i.e. input is expected to be the output of a parallel of two Spectrum MarSystems, one for each stereo channel), and outputs the phase vector and frequency dependent nulls matrix for each channel using the following format:
ADRessSpectrumTakes the output of the ADRess (i.e. the stereo azimuth-frequency maps) and outputs a single channel spectrum of the part of the freq-azimuth plane selected by the d and H controls. This can then be inverse transformed back into time domain for resynthesis purposes
ADRessStereoSpectrumTakes the output of the ADRess (i.e. the panning-frequency maps) and outputs the panning coefficient for each spectral bin (N/2+1 bins)
ADSRenvelopeMultiply input realvec by Value of Envelope
AimBoxes'Box-cutting' routine to generate dense features
AimGammatoneSlaney's gammatone filterbank
AimHCLHalfwave rectification, compression and lowpass filtering
AimHCL2Halfwave rectification, compression and lowpass filtering
AimLocalMaxLocal maximum strobe criterion: decaying threshold with timeout
AimPZFCTime-domain AimPZFC
AimPZFC2Time-domain AimPZFC2
AimSAIStabilised auditory image
AimSSISize-shape image (aka the 'sscAI')
AimVQVector quantization for dense to sparse features
AliasingOscA simple aliasing oscillator
AMDFAverage Magnitude Difference Function
ANN_nodeSingle node used to build Artifical Neural Networks
AnnotatorAnnotate a feature vector/slice with a label
APDelayOscA non-aliasing analog oscillator algorithm
ArffFileSinkWrites slices to a file in (Weka) ARFF format
AubioYinPitch detection using the YIN algorithm
AudioSinkReal-time Audio source for Linux
AudioSinkBlockingReal-time Audio source for Linux
AudioSourceReal-time audio source
AudioSourceBlockingReal-time audio source
AuFileSinkSoundFileSink for .au (.snd) soundfiles
AuFileSourceSoundFileSource for .au (.snd) soundfiles
AutoCorrelationCompute the generalized autocorrelation of input window
AutoCorrelationFFTAutoCorrelation System based on FFT
AutoCorrelationFFTAutoCorrelation System based on FFT
BaseAudioSinkInterface for real-time audio sources
BeatAgentEntity representing a given {period, phase} hypothesis regarding a train of beat positions paced by the following tempo. A set of initial agents are feeded by the initial hypothesis given by an initial tempo induction stage. Each BeatAgent is recursively evaluated in real-time, by a given score function (heuristics), around each predicted beat. According to the goodness-of-fit between each agent's prediction and the correspondent local maxima in the observed data (given by the onset detection function calculated by the Spectral Flux) the agent's current score is incremented or decremented, calling for the creation of new agents (children) when large discrepancies are observed
BeatHistoFeaturesBeat Histogram Features
BeatPhaseGiven a periodicity calculate best matching phase
BeatRefereeCentral agency responsible for causally evaluating a pool of active BeatAgents around each beat prediction, and selecting the best one at each time ("frame" - tick), based on a given heuristics (score function) which affers the goodness-of-fit between each agent prediction and local maxima in the observed data (given by the onset detection function calculated by the Spectral Flux)
BeatTimesSinkOutputs predicted beat times (in seconds or "frames"-ticks) and/or the median IBI (in BPMs)
BICchangeDetectorDetect changes between to succeeding segments using BIC
BiquadFilter a Signal
BlitOscA BLIT oscillator
CARFACMultiply input realvec with a fixed value
Cartesian2PolarPerform conversion of spectral values
CascadeCascade of MarSystem objects
CentroidCentroid of each time slice of observations
ClassificationReportReports various measures of classification accuracy
CollectionList of files
CollectionFileSourceCollectionFileSource abstracts a collections of soundfiles as a SoundFileSource
ColorTriplet of RGB values
CombinatorBasic example on how to use controls efficiently in MarSystems
CommunicatorAbstract base class for communicator
CompExpMultiply input realvec with CompExp
CompressorBasic example on how to use controls efficiently in MarSystems
ConfidenceConfidence calculates classification confidence
ConversionsVarious conversion functions
cppClasses for managing the symbol table - functions and variables
CrossCorrelationComputes the cross correlation of an input
CsvFileSourceReads CSV (comma-separated values) text files
Daub4Daubechies4 WaveletStep
DCSourceDCSource generates a constant signal (with configurable level) at the output
DeinterleaveDeinterleave i.e. Reorder input realvec along observations
DeInterleaveSizecontrolDeinterleave i.e. Reorder input realvec
DelaySamplesSimple MarSystem that shifts samples back in time
DeltaFirstOrderRegressionCalculate simple time domain delta in first order regression fashion
DifferentiatorCalculate the difference of successive input samples
DownSamplerDownsample the input signal by dropping samples
DTWCalculate Alignment from a SimilarityMatrix at input
EnergyCompute the Energy of the input observations into one column
EnhADRessAzimuth Discrimination and Resynthesis (EnhADRess) implementation, which takes a stereo input (i.e. input is expected to be the output of a parallel of two Spectrum MarSystems, one for each stereo channel), and outputs the magnitudes, phases and panning indexes for N/2+1 bins, stacked vertically:
EnhADRessStereoSpectrumTakes the output of the enhADRess and outputs the panning coefficient for each spectral bin (N/2+1 bins)
EnvelopeMultiply input realvec by Value of Envelope
ERBERB Filterbank
EsitarUpdate midi inpput using controls. Just through for dataflow
EvEventDispatchComparatorClass for comparing dispatch times of events. required for insertion into the Heap
EvExprExpression Event evaluates the supplied expression when prompted by the scheduler
EvGetUpdGet a control value and use it to update another
EvValUpdUpdate a MarSystem control value
ExConvenience class that encapsulates an expression string and knows how to parse that string to an ExNode expression tree
ExCommonExCommon provides common information for Ex the expression compiler
ExFileConvenience class for placing Ex and Rp expressions in a separate file to be read at parse time. Expressions are separated by declaring block headers: #::ExInit: #::ExExpr: #::RpInit: #::RpExpr: #::RpRate:
ExNodeExNode is the base class for an expression tree node
ExNode_IterForIterate over list and do something with each value in the list, not destroying old list
ExNode_IterIterIter : iterate over list and replace each element in original list
ExNode_IterMapMap : iterate over list creating new list of same size without destroying original
ExNode_StringForIterate over list and do something with each value in the list, not destroying old list, returns unit
ExNode_StringIterIter : iterate over list and replace each element in original list
ExprExpr encapsulates an evaluatable expression. Ex is a convenience class that encapsulates an expression string and can parse to a tree. Rp is the same as Ex but is interpreted as an expression for deciding on repetition
ExRecordSymbol table node that symbolises a path component to a record. ie Real.cos(mrs_real) := ExRecord("Real",ExRecord("cos(mrs_real)")) A syntax is defined for adding functions as well as defining aliases to those functions. Adding and removing imports is also defined where an import is simply a shortcut that eliminates a portion of the start of the name
ExRefCountConvenient parent class for reference counted objects
ExValExVal is the abstract value type for expression tree nodes. Every expression results in a ExVal of the basic types: string, natural, real, bool
F0AnalysisCompute F0s in input spectrum
FaninFanin of MarSystem objects
FanoutFanout of MarSystem objects
FanOutInFanOutIn of MarSystem objects
fftFft calculation
FileNameVarious utilities
FilterFilter a Signal
FlowCutSourceBreak the data flow consistency by entering a black hole in the network
FlowThruFlowThru of MarSystem objects
FluxFlux calculate the flux between the current and prev. spectrum (e.g. output of PowerSpectrum)
FMFM synthesis source
FMeasureCompute the FMeasure
FullWaveRectifierFull wave rectification: take the absolute value of all samples
GainMultiply input realvec with a fixed value
GaussianClassifierSingle Gaussian multidimensional classifier
GMMClassifierSingle Gaussian multidimensional classifier
GStreamerSourceSoundFileSource which uses GStreamer to decode an input file
HalfWaveRectifierNegative values are trimmed to zero, positive values are kept
HarmonicEnhancerUsed to strengthen harmonic peaks in Beat Histograms
HarmonicStrengthCalculates the relative strength of harmonics
HeapHeap used by the scheduler for sorting scheduled event objects
HWPSCalculates the Harmonic Wrapped Peak Similarity (HWPS) of input peaks
InjectInject a vector specified by the mrs_realvec/inject control into the datastream
InvSpectrumConvert back the complex spectrum to time domain
KNNClassifierSingle KNN multidimensional classifier
Krumhansl_key_finderKrumhansl-Schmuckler Key-Finding Algorithm
LimiterMultiply input realvec with Limiter
LPCCompute Warped LPC coefficients, Pitch and Power [STILL UNDER TESTING!]
LPCCConvert LPC coefficients to Cepstrum coefficients
LSPCompute Linear Spectral Pair (LSP) coefficients Takes the output of ::LPC() and calculates the corresponding LSP values. See the LPC class implementation
LyonAgcAutomatic Gain control specific for Lyon's Passive Ear
LyonChannelDiffChannel Difference specific for Lyon's Passive Ear
LyonPassiveEarLyon filterbank
LyonZeroOutPreEmphSet the first two filter channels (preemphasis) to zero
MarControlMarControlPtr is a smart pointer wrapper for MarControl. MarControl is the control class containing a name, type and value. Created by and
MarControlManagerMarControlManager handle controls creation
MarControlValueGeneric class for Marsyas control values Created by and
MarFileSinkText output sink
marohtmlGenerate xml representing a MarSystem
marojsonGenerate json representing a MarSystem and its controls
marostringAbstract class for Marsyas Network string representation generators
marosvgGenerate svg representing a MarSystem
maroxmlGenerate xml representing a MarSystem
MarSystemMarSystem transforms a realvec
MarSystemManagerMarSystemManager of MarSystem objects
MarSystemQtWrapperThis is the basic wrapper which allows MarSystems to function inside a multithreaded Qt app
MarSystemTemplateAdvancedAdvanced example on how to use composite ad custom controls efficiently in MarSystems
MarSystemTemplateBasicBasic example on how to use controls efficiently in MarSystems
MarSystemTemplateMediumBasic example on how to use controls efficiently in MarSystems
Marx2DGraphFully-featured realvec plotting Qt objectMarx2DGraph provides 2D graphing for Marsyas where the ordinates are given by a marsyas realvec object and the abscissa a per sample spacing. Plot types are give in Marx2DGraph.h and include points, precsion, linear and polynomial interpolation
MathPowerEach output = pow(input, x). Supports decimal exponents (i.e. taking the nth root)
MATLABengineUtility class for exchanging data between Marsyas and MATLAB
MaxArgMaxCalculate k maximums and their positions
MaxMinCalculate the maximum and minimum values for each observation signal (per slice)
McAulayQuatieriPerforms McAulay-Quatieri frame-to-frame peak matching
MeanMean calculate the mean of each row of observations
MeanAbsoluteDeviationCalculates the mean absolute deviation
MeddisHairCellMeddisHairCell for auditory models
MedianMedian calculate the median of each row of observations
MedianFilterApply median filter on input vector
MemoryMemory output the past memSize input observations
MetricComputes metrics (e.g. euclidean, mahalanobis, cosine, etc) between two realvecs
MFCCMFCC Mel-Frequency Cepstral Coefficients. Takes as input the N/2+1 spectrum Magnitude points output by PowerSpectrum
MidiFileSynthSourceReads a MIDI file and synthesizes audio (needs MATLAB and the MIDI Toolbox)
MidiInputUpdate midi inpput using controls. Just through for dataflow
MidiOutputControl of MahaDeviBot Commands via Midi Controls
MinArgMinCalculate k minimums and their positions
MixToMonoMix the input channels (observations rows) into one output observation channel
Mono2StereoConvert mono to stereo by copying
MP3FileSinkMP3FileSink for .MP3 soundfiles
MP3FileSourceMP3FileSource read mp3 files using libmad
MrsLogLogging Class
NegativeToggle the sign of the input samples
NoiseGateMultiply input realvec with NoiseGate
NoiseSourceCreates noise
NormNormalize each observation channel separately per slice
NormalizeNormalize my mapping min/max range to user specified range
NormalizeAbsNormalize each observation channel by absolute value
NormCutComputes the Normalized Cut for an input similarity matrix
NormMatrixNormalize the input data slice as a whole
NormMaxMinNormalize by mapping min/max range to user specified range
NumericLibAssorted Numerical Routines
OggFileSourceOggFileSource read ogg files using vorbisfile
OnePoleSimple one-pole digital filter
OneRClassifierImplements the OneR classifier
OnsetTimesRetrieves M first beat times (phases, in "frames"-ticks), retrieved from peaks from an onset function
OrcaSnipMultiply input realvec with OrcaSnip
OscMapperInterface between OSC and Marsyas and QtLong description
PanoramaAmplitude Panning to move single broadband source to an azimuth angle
ParallelParallel composite of MarSystem objects
ParallelMatrixWeightBasic example on how to use controls efficiently in MarSystems
PatchMatrixLinear Combine Each input channel (i.e. observation) with each other channel the weights for the combinations can be provided through the weights control: each column of the weights control contains the weight for the input channel (i.e. row) with the same number indexwise. Sets of weight for each channel are expected to be found within same channel of the weights control. A constant vector can also be provided in the consts control to set the offset for each channel respectively
PathObjectConnect osc-messages with QObjects
PCAPerform Principal Component Analysis
Peak2RmsPeak to Rms ratio for time domain signals
PeakClusterSelectDownsample the number of clusters according to cluster density (most dense 'numClustersToKeep' clusters retained)
PeakDistanceHorizontalityCompute a weight depending on how "horizontal" the distance between two peak entries is
PeakEnhancerEnhance peaks that are harmonic
PeakEnhancerEnhance peaks that are harmonic
PeakerPick peaks out of signal
PeakerAdaptivePick peaks out of signal
PeakerOnsetDetects if input contains a onset point
PeakFeatureSelectThis MarSystem takes a realvec with peak information (using peakView) and allows to select which peak features should be sent to the output. Used for similarity computations on peaks
PeakInObservationCompute peaks in observation vector
PeakLabelerAssigns clustering labels to the "pkGroup" feature of the input peak realvec, based on the information received at the mrs_realvec/labels control
PeakMaskBasic example on how to use controls efficiently in MarSystems
PeakPeriods2BPMPeakPeriods2BPM: convert peaks to beats per minute. This block should have as input a vector with the peak amplitudes in its pair indexes and the peak arguments (in frames) in its odd indexes. It was created to convert the input given by "MaxArgMax" which outputs the chosen number of peaks in the referred form
PeakRatioIncorporates the ratio of the higest peak to minimal/average peak of each observation samplewise to the output vector
PeakResidualCompute the Signal-to-Noise Ratio (input: obs1:noisy signal, obs2:original signal) Controls:
PeakSynthFFTPerform amplitude modification of Power Spectrum using Peaks Info
peakViewHelper class for accessing peaks in a realvec
PeakViewMergeThis MarSystem receives two stacked realvecs peak information (using peakView) and merges them
PeakViewSinkThis MarSystem accumulates realvecs with peak information (using peakView) arriving at its input and when receiving a "done" control trigger, saves the peak data to the specified file in .peak format
PeakViewSourceMarSystem to read .peak files and at each tick output the peaks in each frame
PeUtilitiesUtilties for peaks extraction project
PhaseLockRetrieves the N best {period, phase} hypotheses by affering the phase more suited to each period (by correlating each of the N*M hypotheses with the onset detection function within the initial induction window). Besides, it tries to infer the correct metre (duple or triple) by atributing the correspondent hierarchical set of initial scores, normalized in accordance to the weigth imposed by the time of the initial induction window. It supports ground-truth mode which inputs the first two beats retrieved from a ground-truth beat times annotation file, for initially assigning (only) one agent with the ground-truth period and phase
PhiSEMFilterCreates noise
PhiSEMSourceCreates noise
Pitch2ChromaTransform pitch to chroma
PitchDiffDifference between detected and expected pitch
PlotSinkText output sink Output input data at each tick to sequence numbered text files, to Marsyas messages (default = stdout), and as a MATLAB plot if MATLAB engine is being used
PluckedMultiply input realvec with gain
Polar2CartesianPerform conversion of spectral values
PowerCompute the RMS Power of the input observations into one column
PowerSpectrumPowerSpectrum computes the magnitude/power of the complex spectrum
PowerToAverageRatioPowerToAverageRatio (or Power-to-Average Ratio) of a window
PvMultiResolutionSwitches between short and long windows in multiresolution phasevocoder
PWMSourcePWMSource generates a PWM wave which outputs ones and zeros
QGMMModelQuasi-GMM Model
QOscClientClient-object for outgoing OSC-Datagrams
QOscServerServer-object for incoming OSC-Datagrams
QtMarAboutProvides a simple static "about marsyas" box
QtMarPlotA simple realvec plotting widget.Plots a realvec. Is simple to use, but lacks many features of the other plotting widget
RadioDrumInputSpecial MIDIInput to address the radio drum control structure
RawFileSourceSoundFileSource for .raw wavetable files
RBFRadial Basis Functions
realvecVector of mrs_real values
ReassignUsed to strengthen harmonic peaks in Beat Histograms
RemoveObservationsRemoves observations outside a given range
RepeatEncapsulates repetition information for scheduled events
ResampleResamples all observations using a piecewise cubic bezier polynomial for interpolation between samples
ResampleBezierResamples all observations using a piecewise cubic bezier polynomial for interpolation between samples
ResampleLinearStretch samples using linear interpolation
ResampleNearestNeighbourStretch samples using the samples' nearest neighbours
ResampleSincResamples all observations using a sum of sinc functions wheareas each point is modeled by a sinc function with the given points amplitude, that is set to zero after the 5th zero crossing
ReverseReverse the input samples (i.e. first samples become last and vice-versa)
RmsRms energy of realvec
RolloffRolloff of each time slice of observations
RpRp works in a similar way to Ex except that the single parameter constructor is an expression that must evaluate to a boolean that determines if the event is to repeat while the two parameter constructor must be a boolean expression (if true then repeat) and an expression that evaluates to a string that specifies when the event is to repeat with respect to the current time and in a representation of time that is known to the timer (ie '1s' on sample count timer)
RunningAutocorrelationRunning calculation (across slices) of the autocorrelation values
RunningStatisticsGathers the running average, variance, standard deviation, etc
SchedulerScheduler schedules things
SelectorSelect different observations from input data
SelfSimilarityMatrixCalculate Similarity Matrix of a set of feature vectors at input
SeneffEarSeneffEar auditory model
SeriesSeries of MarSystem objects
ShifterShifts the input and outputs the original and shifted version
ShiftInputApply sliding window with certain hop size and window size
ShiftOuputShift next D samples
ShredderSplit the output of an accumulator
SignumCompute sign of input vector: output vector is 1 for strictly positive observations, 0 for the rest
SilenceRemoveBlocks tick()s if the output is silent
SimulMaskingFftReturn only the power spectrum components above the masking threshold
SineSourceSineSource generate a sine wave
SkewnessSkewness computes the skewness of the input
SliceDeltaTakes the difference (delta) between successive input slices
SliceShuffleShuffle the incoming slices randomly
SMOSupport Vector Machine similar to the Weka implementation
SNRCompute SNR and variations
SOMSelf-organizing map
SoundFileSinkInterface for sound file sinks
SoundFileSourceInterface for sound file sources
SoundFileSource2Interface for sound file sources
SoundFileSourceHopperGenerates slices from a sound file source in a sliding window fashion with hopping
SpectralSpectral Flatness Measure
SpectralSpectral Crest Factor
SpectralCentroidBandNormBasic example on how to use controls efficiently in MarSystems
SpectralFlatnessAllBandsCalculates a single spectral flatness value
SpectralSNRSpectralSNR computes a frequency domain signal-to-noise ratio. Takes as input two stacked PowerSpectrums
SpectralTransformationContains various spectral transformation. Input and output is a complex spectrum. Mostly used to demonstrate how spectral analyis works
SpectrumCompute the complex spectrum of input window
Spectrum2ACMChromaTransform an (amplitude) spectrum to a chroma profile
Spectrum2ChromaConvert spectrum magnitude (e.g. output from PowerSpectrum MarSystem) into a Chroma vector representation
Spectrum2MelConvert spectrum magnitude (e.g. output from PowerSpectrum MarSystem) into Mel frequency scale
SquareSquare the input samples
StandardStandard Deviation of each row of observations
statisticsAssorted Stastical Routines Routines for computing Nth moments around a mean (such as std, skewness, and kurtosis)
StereoSpectrumStereoSpectrum computes the panning index for each spectrum bin of a stereo input (i.e. input is expected to be the output of a parallel of two Spectrum MarSystems, one for each stereo channel)
StereoSpectrumFeaturesStereoSpectrumFeatures capture panning information
StereoSpectrumSourcesStereoSpectrumSources estimates the number of sources placed into different stereo positions
StkSTK base class
StkErrorSTK error handling class
StretchLinearStretch samples using linear interpolation
SubtractBasic example on how to use controls efficiently in MarSystems
SubtractMeanSubtract the mean of each observation channel
SumSum the input rows of observations into one row
SVMClassifierSVM classifier based on libsvm
TalkMessage handler
TempoHypothesesOrganizes a NN x 3 matrix given NN = N x M raw {period, phase, periodSalience} hypotheses. (if no periods were retrieved some manually defined periods will be assumed)
ThreadSTK thread class
TimeFreqPeakConnectivityUses dynamic programming to create a (symmetric) distance matrix between the series of peaks at the inputs
TimeLineTimeLine is a list of TimeRegions
TimelineLabelerA MarSystem that loads a TimeLine object with label info corresponding to an audio file, where at each timeline region a class or label is assigned. Can be used for training a classifier, using the different labeled regions of the signal as ground truth
TimeStretchTimeStretch input realvec by factor
TmControlValueTmControlValue is a simple parameter passing mechanism for updtimer
TmParamTmParam associates a name with a value and is used for setting parameters of timers
TmRealTimeTmRealTime reads the getlocaltime() function, system clock to get the current number of microseconds
TmSampleCountTmSampleCount reads the insamples information to advance the timer
TmTimerBase timer class must be overriden to create new concrete timers
TmVirtualTimeTmVirtualTime reads the insamples information to advance the timer
TranscriberA collection of functions which simplify transcription (detecting onsets via pitch and amplitudes, calculating notes, etc)
TranscriberExtractA collection of functions which simplify transcription (pitch extraction, amplitude extraction, etc)
TransposerSwitches samples and observations, i.e. transposes the output realvec (inSamples -> onObservations, onSamples -> inObservations)
TriangularFilterBankTriangular FilterBank Takes as input the N/2+1 spectrum Magnitude points output by PowerSpectrum. For example it can be used to compute a Mel-scale or Constant-Q filterbank
UnfoldTake a two-dimesional realvec and unfold it to make a one-dimensional realvec
UpsampleUpsample input realvec by integer factor using chosen interpolation. Frame size is also increased by the same factor
VibratoApply vibrato using time-varying delay
ViconFileSourceViconFileSource for exported VICON .txt files
WaveguideOscGenerates a sine wave
WaveletBandsCalculate time-domain wavelet-based bands
WaveletPyramidPyramid wavelet algorithm
WaveletStepOne step of Discrete Wavelet Transform (DWT)
WavFileSinkWavFileSink for .wav soundfiles
WavFileSourceSoundFileSource for .wav soundfiles
WavFileSource2SoundFileSource for .wav soundfiles
WekaSinkOutput sink (text) in WEKA (ARFF) format
WekaSourceInput source for Weka-formatted (textual) feature data
WHaSpCalculate Wrapped Harmonically Spectrum (WHaSp)
WhiteningChanges a spectrum so that all bins have the same phase, but magnitude equal to 1
WindowingApply a windowing function (envelope) to the input signal
YinPitch detection using the YIN algorithm
ZeroCrossingsTime-domain ZeroCrossings
ZeroRClassifierSingle ZeroR multidimensional classifier