Class: MIDI::Event

Inherits:
Object
  • Object
show all
Defined in:
lib/midilib/event.rb

Overview

The abstract superclass of all MIDI events.

Direct Known Subclasses

ChannelEvent, MetaEvent, Realtime, SystemCommon

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#delta_timeObject

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

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

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

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

#statusObject (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_startObject

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_bytesObject

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_sObject



76
77
78
# File 'lib/midilib/event.rb', line 76

def to_s
  "#{@delta_time}: "
end