- TO DO
- SEE ALSO
- COPYRIGHT AND LICENSE
MIDI::Ngram - Find the top repeated note phrases of a MIDI file
use MIDI::Ngram; my $mng = MIDI::Ngram->new( in_file => [ 'eg/twinkle_twinkle.mid' ], ngram_size => 3, patches => [qw( 68 69 70 71 72 73 )], random_patch => 1, gestalt => 1, ); my $analysis = $mng->process; my $playback = $mng->populate; $mng->write;
MIDI::Ngram parses a given list of MIDI files and finds the top repeated note phrases.
Required. An ArrayRef of MIDI files to process.
Ngram phrase size. Default: 2
The maximum number of phrases to play. Default: 10
Beats per minute. Default: 100
The note durations to choose from (at random). Default: [qn tqn]
The patches to choose from (at random) if given the random_patch option. Otherwise 0 (piano) is used. Default: [0 .. 127]
MIDI output file. Default: midi-ngram.mid
Insert a rest of the given duration after each phrase. Default: '' (no resting)
ArrayRef of the channels to analyze. If not given, all channels are analyzed.
The number of times to choose a weighted phrase. * Only works with the weight option. Default: 4
Boolean. Play phrases by their ngram repetition occurrence. Default: 0
Boolean. Choose a random patch from patches for each channel. Default: 0 (piano)
Boolean. Shuffle the non-weighted phrases before playing them. Default: 0
Boolean. Allow single occurrence ngrams. Default: 0
Boolean. Accumulate phrases into a single list. Default: 0
Boolean. Include pitch range in the analysis.
The MIDI score object. Constructed at runtime. Constructor argument if given will be ignored.
The bucket of ngrams. Constructed at runtime. Constructor argument if given will be ignored.
$mng = MIDI::Ngram->new(%arguments);
Create a new
my $analysis = $mng->process;
Find all ngram phrases and return the note analysis.
my $playback = $mng->populate;
Add notes to the MIDI score and return the playback notes.
Write out the MIDI file.
Preserve note durations instead of random assignment.
Gene Boggs <email@example.com>
This software is copyright (c) 2018 by Gene Boggs.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.