Class: MIDI::Event
- Inherits:
-
Object
- Object
- MIDI::Event
- Defined in:
- lib/midilib/event.rb
Overview
The abstract superclass of all MIDI events.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#delta_time ⇒ Object
Modifying delta_time does not affect time_from_start.
-
#print_channel_numbers_from_one ⇒ Object
Determines if to_s outputs MIDI channel numbers from 1-16 instead of the default 0-15.
-
#print_decimal_numbers ⇒ Object
Determines if to_s outputs numbers as hex (false, the default) or decimal # (true).
-
#print_note_names ⇒ Object
Determines if to_s outputs hex note numbers (false, the default) or decimal note names (true).
-
#status ⇒ Object
readonly
The MIDI status byte.
-
#time_from_start ⇒ Object
The start time of this event from the beginning of the track.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
For sorting.
-
#channel_to_s(val) ⇒ Object
Returns
val
as a decimal or hex string, depending upon the value of. -
#data_as_bytes ⇒ Object
Returns the raw bytes that are written to a MIDI file or output to a MIDI stream.
-
#number_to_s(val) ⇒ Object
Returns
val
as a decimal or hex string, depending upon the value of. -
#quantize_to(boundary) ⇒ Object
Quantize this event’s time_from_start by moving it to the nearest multiple of
boundary
. - #to_s ⇒ Object
Instance Attribute Details
#delta_time ⇒ Object
Modifying delta_time does not affect time_from_start. You need to call the event’s track’s recalc_time
method.
9 10 11 |
# File 'lib/midilib/event.rb', line 9 def delta_time @delta_time end |
#print_channel_numbers_from_one ⇒ Object
Determines if to_s outputs MIDI channel numbers from 1-16 instead of the default 0-15.
27 28 29 |
# File 'lib/midilib/event.rb', line 27 def print_channel_numbers_from_one @print_channel_numbers_from_one end |
#print_decimal_numbers ⇒ Object
Determines if to_s outputs numbers as hex (false, the default) or decimal # (true). Delta times are always printed as decimal.
23 24 25 |
# File 'lib/midilib/event.rb', line 23 def print_decimal_numbers @print_decimal_numbers end |
#print_note_names ⇒ Object
Determines if to_s outputs hex note numbers (false, the default) or decimal note names (true).
19 20 21 |
# File 'lib/midilib/event.rb', line 19 def print_note_names @print_note_names end |
#status ⇒ Object (readonly)
The MIDI status byte. Never includes the channel, which is held separately by MIDI::ChannelEvent.
15 16 17 |
# File 'lib/midilib/event.rb', line 15 def status @status end |
#time_from_start ⇒ Object
The start time of this event from the beginning of the track. This value is held here but is maintained by the track.
12 13 14 |
# File 'lib/midilib/event.rb', line 12 def time_from_start @time_from_start end |
Instance Method Details
#<=>(other) ⇒ Object
For sorting. Uses @time_from_start, which is maintained by this event’s track. I’m not sure this is necessary, since each track has to maintain its events’ time-from-start values anyway.
59 60 61 |
# File 'lib/midilib/event.rb', line 59 def <=>(other) @time_from_start <=> other.time_from_start end |
#channel_to_s(val) ⇒ Object
Returns val
as a decimal or hex string, depending upon the value of
71 72 73 74 |
# File 'lib/midilib/event.rb', line 71 def channel_to_s(val) val += 1 if @print_channel_numbers_from_one number_to_s(val) end |
#data_as_bytes ⇒ Object
Returns the raw bytes that are written to a MIDI file or output to a MIDI stream. In MIDI::EVENT this raises a “subclass responsibility” exception.
42 43 44 |
# File 'lib/midilib/event.rb', line 42 def data_as_bytes raise 'subclass responsibility' end |
#number_to_s(val) ⇒ Object
Returns val
as a decimal or hex string, depending upon the value of
65 66 67 |
# File 'lib/midilib/event.rb', line 65 def number_to_s(val) @print_decimal_numbers ? val.to_s : ('%02x' % val) end |
#quantize_to(boundary) ⇒ Object
Quantize this event’s time_from_start by moving it to the nearest multiple of boundary
. See MIDI::Track#quantize. Note: does not modify the event’s delta_time, though MIDI::Track#quantize calls recalc_delta_from_times after it asks each event to quantize itself.
50 51 52 53 54 |
# File 'lib/midilib/event.rb', line 50 def quantize_to(boundary) diff = @time_from_start % boundary @time_from_start -= diff @time_from_start += boundary if diff >= boundary / 2 end |
#to_s ⇒ Object
76 77 78 |
# File 'lib/midilib/event.rb', line 76 def to_s "#{@delta_time}: " end |