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.



10
11
12
# File 'lib/midilib/event.rb', line 10

def delta_time
  @delta_time
end

Determines if to_s outputs MIDI channel numbers from 1-16 instead of the default 0-15.



28
29
30
# File 'lib/midilib/event.rb', line 28

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.



24
25
26
# File 'lib/midilib/event.rb', line 24

def print_decimal_numbers
  @print_decimal_numbers
end

Determines if to_s outputs hex note numbers (false, the default) or decimal note names (true).



20
21
22
# File 'lib/midilib/event.rb', line 20

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.



16
17
18
# File 'lib/midilib/event.rb', line 16

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.



13
14
15
# File 'lib/midilib/event.rb', line 13

def time_from_start
  @time_from_start
end

Instance Method Details

#<=>(an_event) ⇒ 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 <=>(an_event)
	return @time_from_start <=> an_event.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
	return 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.



40
41
42
# File 'lib/midilib/event.rb', line 40

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)
	return @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.



48
49
50
51
52
53
54
# File 'lib/midilib/event.rb', line 48

def quantize_to(boundary)
	diff = @time_from_start % boundary
	@time_from_start -= diff
	if diff >= boundary / 2
 @time_from_start += boundary
	end
end

#to_sObject



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

def to_s
	"#{@delta_time}: "
end