Class: MIDIEvents::Context
- Inherits:
-
Object
- Object
- MIDIEvents::Context
- Defined in:
- lib/midi-events/context.rb
Overview
DSL for creating MIDI messages with shared context
Provides a convenient way to create multiple MIDI messages that share common parameters (like channel and velocity) without repeating them for each message.
Instance Attribute Summary collapse
-
#channel ⇒ Integer?
The MIDI channel (0-15) for messages created in this context.
-
#velocity ⇒ Integer?
The velocity (0-127) for note messages created in this context.
Class Method Summary collapse
-
.with(options = {}, &block) ⇒ Object
Create and execute a context with the given parameters.
Instance Method Summary collapse
-
#channel_aftertouch(value, options = {}) ⇒ Object
(also: #ChannelAftertouch, #ChannelPressure, #channel_pressure)
A channel pressure message.
-
#control_change(index, value, options = {}) ⇒ Object
(also: #ControlChange, #Controller, #controller)
A control change message.
-
#initialize(options = {}) ⇒ Context
constructor
A new instance of Context.
-
#note_off(note, options = {}) ⇒ Object
(also: #NoteOff)
A note off message.
-
#note_on(note, options = {}) ⇒ Object
(also: #NoteOn)
A note on message.
-
#pitch_bend(low, high, options = {}) ⇒ Object
(also: #PitchBend)
A poly pressure message.
-
#polyphonic_aftertouch(note, value, options = {}) ⇒ Object
(also: #PolyphonicAftertouch, #PolyAftertouch, #PolyphonicPressure, #PolyPressure, #poly_aftertouch, #poly_pressure)
A poly pressure message.
-
#program_change(program, options = {}) ⇒ Object
(also: #ProgramChange)
A program change message.
Constructor Details
#initialize(options = {}) ⇒ Context
Returns a new instance of Context.
49 50 51 52 |
# File 'lib/midi-events/context.rb', line 49 def initialize( = {}) @channel = [:channel] @velocity = [:velocity] end |
Instance Attribute Details
#channel ⇒ Integer?
Returns The MIDI channel (0-15) for messages created in this context.
30 31 32 |
# File 'lib/midi-events/context.rb', line 30 def channel @channel end |
#velocity ⇒ Integer?
Returns The velocity (0-127) for note messages created in this context.
33 34 35 |
# File 'lib/midi-events/context.rb', line 33 def velocity @velocity end |
Class Method Details
.with(options = {}, &block) ⇒ Object
Create and execute a context with the given parameters
42 43 44 |
# File 'lib/midi-events/context.rb', line 42 def self.with( = {}, &block) new(, &block).instance_eval(&block) end |
Instance Method Details
#channel_aftertouch(value, options = {}) ⇒ Object Also known as: ChannelAftertouch, ChannelPressure, channel_pressure
A channel pressure message
153 154 155 156 157 158 |
# File 'lib/midi-events/context.rb', line 153 def channel_aftertouch(value, = {}) channel = [:channel] || @channel raise 'channel_aftertouch requires a channel' if channel.nil? ChannelAftertouch.new(channel, value, ) end |
#control_change(index, value, options = {}) ⇒ Object Also known as: ControlChange, Controller, controller
A control change message
112 113 114 115 116 117 118 119 120 121 |
# File 'lib/midi-events/context.rb', line 112 def control_change(index, value, = {}) channel = [:channel] || @channel raise 'control_change requires channel' if channel.nil? if index.is_a?(String) ControlChange[index].new(channel, value, ) else ControlChange.new(channel, index, value, ) end end |
#note_off(note, options = {}) ⇒ Object Also known as: NoteOff
A note off message
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/midi-events/context.rb', line 59 def note_off(note, = {}) channel = [:channel] || @channel velocity = [:velocity] || @velocity raise 'note_off requires both channel and velocity' if channel.nil? || velocity.nil? if note.is_a?(String) NoteOff[note].new(channel, velocity, ) else NoteOff.new(channel, note, velocity, ) end end |
#note_on(note, options = {}) ⇒ Object Also known as: NoteOn
A note on message
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/midi-events/context.rb', line 77 def note_on(note, = {}) channel = [:channel] || @channel velocity = [:velocity] || @velocity raise 'note_on requires both channel and velocity' if channel.nil? || velocity.nil? if note.is_a?(String) NoteOn[note].new(channel, velocity, ) else NoteOn.new(channel, note, velocity, ) end end |
#pitch_bend(low, high, options = {}) ⇒ Object Also known as: PitchBend
A poly pressure message
168 169 170 171 172 173 |
# File 'lib/midi-events/context.rb', line 168 def pitch_bend(low, high, = {}) channel = [:channel] || @channel raise 'channel_aftertouch requires a channel' if channel.nil? PitchBend.new(channel, low, high, ) end |
#polyphonic_aftertouch(note, value, options = {}) ⇒ Object Also known as: PolyphonicAftertouch, PolyAftertouch, PolyphonicPressure, PolyPressure, poly_aftertouch, poly_pressure
A poly pressure message
131 132 133 134 135 136 137 138 139 140 |
# File 'lib/midi-events/context.rb', line 131 def polyphonic_aftertouch(note, value, = {}) channel = [:channel] || @channel raise 'channel_aftertouch requires a channel' if channel.nil? if note.is_a?(String) PolyphonicAftertouch[note].new(channel, value, ) else PolyphonicAftertouch.new(channel, note, value, ) end end |
#program_change(program, options = {}) ⇒ Object Also known as: ProgramChange
A program change message
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/midi-events/context.rb', line 94 def program_change(program, = {}) channel = [:channel] || @channel raise 'program_change requires channel' if channel.nil? if program.is_a?(String) ProgramChange[program].new(channel, ) else ProgramChange.new(channel, program, ) end end |