This page provides a more detailed discussion of the components
and function of MEAPsoft. For a quick illustration of how to get
going, see the
MEAPsoft Quick Start Walkthrough.
Feature Extractors
Feature extractors analyze the segments in a .seg file and
output a features file containing one or more values representing the
features found. Some feature extractors, like ChunkPower,
simply put out one number representing the total power in each
segment. Others, like AvgChroma, put out an array of values
for each segment. For a short description of each feature extractor,
hover above the feature extractor's name and a tooltip will pop up.
You can select as many feature extractors as you like, although best
results are usually obtained by selecting features extractors that
work well with the composers you'll feed the .feat file to.
The number box beside each feature extractor is for entering
weights that allow you to specify the relative importance of each
feature in the analysis.
"Meta feature extractors" are a special class of FEs that do higher
level analysis on the outputs of previously run "normal" feature
extractors. In order to use a meta feature extractor, you need to
select at least one normal feature extractor in addition to the meta
feature extractor. If "clear non-meta features" is selected, the
output features file will only contain the selected meta features.
The "Display extracted features" button is enabled after processing a
segments file. It pops up a window with a simple viewer that allows
you to inspect the values of the extracted features. This is useful if
you need to set value ranges in a Composer.
Available feature extractors:
- AvgChroma - 12-dimensional vector of energy distribution across
each semitone of the octave.
- AvgChromaScalar - Single value giving dominant semitone within the
octave.
- AvgChunkPower - Computes the average power in each chunk.
- AvgFreqSimple - Provides a frequency estimation for each segment of
sound.
- AvgMelSpec - Computes the mean spectrum of a chunk and converts it to
the perceptually weighted Mel frequency scale.
- AvgMFCC - Computes the mean MFCCs of a chunk, a commonly used feature
in speech recognition.
- AvgPitchSimple - Provides a pitch estimation for each segment of
sound.
- AvgSpecCentroid - Computes the average spectral center of mass of a
chunk's frames.
- AvgSpecFlatness - Provides a measure of the peakiness of the chunks
average spectrum.
- AvgSpec - Computes the mean spectrum or each chunk.
- ChunkLength - Simply returns the length of each segment.
- ChunkStartTime - Simply returns the start time of each segment. Good
for making backwards tracks!
- Likelihood - MetaFeatureExtractor. Returns the
likelihood of each chunk based on its current features. Lower
numbers mean a segment is more common, higher numbers mean it is
more distinct.
- SpectralStability - Tracks the stability of the spectral energy within
each chunk of sound. More spectrally stable chunks are more likely to
be pitched material.
Composers
A composer takes a feature file as an input, analyzes/sorts/modifys
the segments in that file, and then creates an Edit Decision List
(EDL) representing the order in which the segments from the original
source sound file (as well as others) should be arranged by the
Synthesizer. Composers can be very simple or very complex. For
example, "simple sort" simply sorts a features file by the first
feature in each chunk. You could use this with AvgPitchSimple
to generate a glissando where all of the pitches in the input sound
are arranged from low to high. More complex Composers, like "MashUp"
and "head bang" perform more sophisticated operations.
Each composer is described by a short text that appears when you
select it. The controls for that composer (if any) will appear below
the text.
Controls: Each composer's controls (if any) are different,
and should be described in that composer's explanatory text. The
following Universal Chunk Operations apply to all composers.
- reverse: reverse audio in each chunk.
- apply fade in/out: to avoid pops between segments you may
want to apply a quick fade in/out at the boundaries of each
chunk.
- cross fade: slightly shift each segment so that their
fade in/outs overlap. This generally results in smoother, less clicky
sound.
- fade length (ms): the duration of the fade in/out, in
milliseconds.
- apply gain value: adds a gain value to each
segment in the output EDL. The synthesizer will use the gain value to
scale the amplitude of the samples it writes to the output
soundfile.
- gain value: the gain value to add
to each segment.
The "Display composed features" button is like the "Display extracted
features" button above, but it works on the newly composed EDL
file. This is convenient for inspecting the results of the
composer. For instance, if you run the "simple sort" composer and
display the EDL file you will see that the jumpy colors in the .feat
file have been turned into a smooth fade in the sorted EDL.
Available composers:
- BlipComposer - BlipComposer inserts a blip at the beginning of each
chunk in the input features file. Especially useful for
understanding the output of the segmenter.
- EDLComposer - EDLComposer applies composer options (gain,
crossfade, etc.) to an existing .edl file. It is meant to be used to
generate output from the visualizers.
- HeadBangComposer - HeadBangComposer rocks it hard-core style. Finds
the most common chunk length L and lengths related by a factor of
2, i.e. L/2, L/4, L/8, L*2. These chunks are then shuffled to
create a new piece with a clear beat.
- HMMComposer - HMMComposer uses a features file to train
a simple statistical model of a song and uses it to randomly
generate a new sequence of chunks. This works best when used with
chunks created by the beat detector.
- IntraChunkShuffleComposer - IntraChunkShuffleComposer chops each
chunk up into small pieces and rearranges them. This keeps
the meta chunks intact but scrambles them on a local level.
- MashupComposer - MashupComposer attempts to match chunks in the
input features file using chunks from the chunk database
features file. The result is the source sound file created
from chunks in the chunk database.
- MeapaeMComposer - MeapaeMComposer makes palindromes by writing each
chunk of audio forward and then backward.
- NNComposer - NNComposer starts at the first chunk and proceeds
through the sound file from each chunk to its nearest neighbor,
according to the features in the input features file.
- RotComposer - RotComposer rotates the beats in each measure by a
selectable number of positions. You can set the number of
beats/measure, the number of positions to rotate, and the direction
of rotation.
- SortComposer - SortComposer sorts the features in ascending or
descending order. If there are multiple features, or more than one
value per feature, it sorts according to distance in Euclidean
space.
- ThresholdComposer - ThresholdComposer selects chunks with feature
values falling inside the top and bottom thresholds. It then
creates an output file composed exclusively of either the selected
chunks or the not-selected chunks. ThresholdComposer only really
makes sense for one-dimensional features like pitch and power.
- VQComposer - VQComposer trains a vector quantizer on the
chunks in the input file. It then uses it to quantize the chunks
in another file. For best results use the beat segmenter so each
chunk has roughly the same length.