The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MIDI::XML::ControlChange - Class encapsulating MIDI Control Change messages.

SYNOPSIS

  use MIDI::XML::ControlChange;

  use MIDI::Track;



  $Control_Change = MIDI::XML::ControlChange->new();

  $Control_Change->delta(384);

  $Control_Change->channel(0);

  $Control_Change->control(11);

  $Control_Change->value(96);

  @event = $Control_Change->as_event();

  $midi_track = MIDI::Track->new();

  push( @{$midi_track->events_r},\@event;

  @xml = $Control_Change->as_MidiXML();

  print join("\n",@xml);

DESCRIPTION

MIDI::XML::ControlChange is a class encapsulating MIDI Control Change messages.

A Control Change message includes either a delta time or absolute time as

implemented by MIDI::XML::Message and the MIDI Note Off event encoded

in 3 bytes as follows:

1011cccc 0nnnnnnn 0vvvvvvv

cccc = channel;

nnnnnnn = control number

vvvvvvv = value

The classes for MIDI Control Change messages and the other six channel

messages are derived from MIDI::XML::Channel.

EXPORT

None by default.

METHODS AND ATTRIBUTES

$Control_Change = MIDI::XML::ControlChange->new()

This creates a new MIDI::XML::ControlChange object.

$Control_Change = MIDI::XML::ControlChange->new($event);

Creates a new ControlChange object initialized with the values of a

MIDI::Event control_change array.

$delta_time = $Control_Change->delta() or $Control_Change->delta($delta_time);

Returns the message time as a delta time or undef if it is an absolute

time. Optionally sets the message time to the specified delta time. To

avoid contradictory times, the absolute time is set to undef when a delta time

is set.

This functionality is provided by the MIDI::XML::Message base class.

$absolute_time = $Control_Change->absolute() or $Control_Change->absolute($absolute_time);

Returns the message time as an absolute time or undef if it is a delta

time. Optionally sets the message time to the specified absolute time. To

avoid contradictory times, the delta time is set to undef when an absolute time

is set.

This functionality is provided by the MIDI::XML::Message base class.

$time = $Control_Change->time();

Returns the message time, absolute or delta, whichever was last set.

This functionality is provided by the MIDI::XML::Message base class.

$channel = $Control_Change->channel() or $Control_Change->channel($channel);

Returns and optionally sets the channel number. Channel numbers are limited

to the range 0-15.

This functionality is provided by the MIDI::XML::Channel base class.

$control = $Control_Change->control() or $Control_Change->control($control);

Returns and optionally sets the control number. Control numbers are limited

to the range 0-127.

$value = $Control_Change->value() or $Control_Change->value($value);

Returns and optionally sets the control value. Values are limited

to the range 0-127.

$ordinal = $Control_Change->ordinal();

Returns a value to be used to order events that occur at the same time.

@event = $Control_Change->as_event();

Returns a MIDI::Event control_change array initialized with the values of the

ControlChange object. MIDI::Event does not expect absolute times and will interpret

them as delta times. Calling this method when the time is absolute will not

generate a warning or error but it is unlikely that the results will be

satisfactory.

@xml = $Control_Change->as_MidiXML();

Returns an array of elements formatted according to the MidiXML DTD. These

elements may be assembled by track into entire documents with the following

suggested DOCTYPE declaration:

        <!DOCTYPE MIDI PUBLIC

                "-//Recordare//DTD MusicXML 0.7 MIDI//EN"

                "http://www.musicxml.org/dtds/midixml.dtd">

AUTHOR

Brian M. Ames, <bmames@apk.net>

SEE ALSO

MIDI::Event.

COPYRIGHT and LICENSE

Copyright 2002 Brian M. Ames. This software may be used under the terms of

the GPL and Artistic licenses, the same as Perl itself.