MIDI::Ngram - Find the top repeated note phrases of a MIDI file
version 0.02
use MIDI::Ngram; my $mng = MIDI::Ngram->new( file => 'eg/twinkle_twinkle.mid', size => 3, patches => [qw( 68 69 70 71 72 73 )], randpatch => 1, verbose => 1, ); $mng->process; $mng->populate; $mng->write;
MIDI::Ngram parses a given MIDI file and finds the top repeated note phrases.
MIDI::Ngram
Required. The MIDI file 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 randpatch 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)
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. Output progress print statements.
The MIDI opus object. Constructed at runtime. Constructor argument if given will be ignored.
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 MIDI::Ngram object.
$mng->process;
Find all ngram phrases.
$mng->populate;
Add notes to the MIDI score.
$mng->write;
Write out the MIDI file.
Preserve note durations instead of random assignment.
Moo
Lingua::EN::Ngram
List::Util
List::Util::WeightedChoice
Music::Note
MIDI::Simple
Music::Tempo
Gene Boggs <gene@cpan.org>
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.
To install MIDI::Ngram, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MIDI::Ngram
CPAN shell
perl -MCPAN -e shell install MIDI::Ngram
For more information on module installation, please visit the detailed CPAN module installation guide.