NAME

MIDI::Util - MIDI Utilities

VERSION

version 0.0800

SYNOPSIS

use MIDI::Util qw(midi_dump midi_format set_chan_patch set_time_sig setup_score);

my $dump = midi_dump('volume'); # length, etc.
print Dumper $dump;

my $score = setup_score( bpm => 120, etc => '...', );

set_time_sig( $score, '5/4' );

set_chan_patch( $score, 0, 1 );

my @notes = midi_format('C','C#','Db','D'); # C, Cs, Df, D

$score->n('wn', @notes);         # MIDI::Simple functionality
$score->write_score('some.mid'); # MIDI::Simple functionality

DESCRIPTION

MIDI::Util comprises handy MIDI utilities.

Nothing is exported by default.

FUNCTIONS

setup_score

$score = MIDI::Util::setup_score;  # Use defaults

$score = MIDI::Util::setup_score(  # Override defaults
  lead_in   => $beats,
  volume    => $volume,
  bpm       => $bpm,
  channel   => $channel,
  patch     => $patch,
  octave    => $octave,
  signature => $signature,
);

Set basic MIDI parameters and return a MIDI::Simple object. If given a lead_in, play a hi-hat for that many beats. Do not include a lead_in by passing 0 as its value.

Named parameters and defaults:

lead_in:   4
volume:    120
bpm:       100
channel:   0
patch:     0
octave:    4
signature: 4/4

set_chan_patch

MIDI::Util::set_chan_patch( $score, $channel );  # Just set the channel

MIDI::Util::set_chan_patch( $score, $channel, $patch );

Set the MIDI channel and patch.

Positional parameters and defaults:

score:   undef (required)
channel: 0
patch:   undef

midi_dump

$dump = MIDI::Util::midi_dump($list_name);

Return sorted array references of the following MIDI, MIDI::Simple, and MIDI::Event internal lists:

Volume
Length
TICKS
Note
note2number
number2note
patch2number
number2patch
notenum2percussion
percussion2notenum
All_events
MIDI_events
Meta_events
Text_events
Nontext_meta_events

midi_format

@formatted = MIDI::Util::midi_format(@notes);

Change sharp # and flat b, in the list of named notes, to the MIDI::Simple s and f respectively.

set_time_sig

MIDI::Util::set_time_sig( $score, $signature );

Set the score time_signature based on the given string.

SEE ALSO

The t/01-functions.t test file in this distribution

MIDI

MIDI::Simple

Music::Tempo

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2020 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.