Class: MIDIMessage::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/midi-message/context.rb

Overview

A DSL for instantiating message objects

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Context

Returns a new instance of Context

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)
  • :velocity (Fixnum)

20
21
22
23
# File 'lib/midi-message/context.rb', line 20

def initialize(options = {})
  @channel = options[:channel]
  @velocity = options[:velocity]
end

Instance Attribute Details

#channelObject

Returns the value of attribute channel


6
7
8
# File 'lib/midi-message/context.rb', line 6

def channel
  @channel
end

#velocityObject

Returns the value of attribute velocity


6
7
8
# File 'lib/midi-message/context.rb', line 6

def velocity
  @velocity
end

Class Method Details

.with(options = {}, &block) ⇒ Object

Open a context with the given options

Parameters:

  • options (Hash) (defaults to: {})
  • block (Proc)

Options Hash (options):

  • :channel (Fixnum)
  • :velocity (Fixnum)

13
14
15
# File 'lib/midi-message/context.rb', line 13

def self.with(options = {}, &block)
  new(options, &block).instance_eval(&block)
end

Instance Method Details

#channel_aftertouch(value, options = {}) ⇒ Object Also known as: ChannelAftertouch, ChannelPressure, channel_pressure

A channel pressure message

Parameters:

  • value (Fixnum)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)

118
119
120
121
122
# File 'lib/midi-message/context.rb', line 118

def channel_aftertouch(value, options = {})
  channel = options[:channel] || @channel
  raise "channel_aftertouch requires a channel" if channel.nil?
  ChannelAftertouch.new(channel, value, options)
end

#control_change(index, value, options = {}) ⇒ Object Also known as: ControlChange, Controller, controller

A control change message

Parameters:

  • index (Fixnum, String)
  • value (Fixnum)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)
  • :velocity (Fixnum)

80
81
82
83
84
85
86
87
88
# File 'lib/midi-message/context.rb', line 80

def control_change(index, value, options = {})
  channel = options[:channel] || @channel
  raise "control_change requires channel" if channel.nil?
  if index.kind_of?(String)
    ControlChange[index].new(channel, value, options)
  else
    ControlChange.new(channel, index, value, options)
  end
end

#note_off(note, options = {}) ⇒ Object Also known as: NoteOff

A note off message

Parameters:

  • note (Fixnum, String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)
  • :velocity (Fixnum)

30
31
32
33
34
35
36
37
38
39
# File 'lib/midi-message/context.rb', line 30

def note_off(note, options = {})
  channel = options[:channel] || @channel
  velocity = options[:velocity] || @velocity
  raise "note_off requires both channel and velocity" if channel.nil? || velocity.nil?
  if note.kind_of?(String)
    NoteOff[note].new(channel, velocity, options)
  else
    NoteOff.new(channel, note, velocity, options)
  end
end

#note_on(note, options = {}) ⇒ Object Also known as: NoteOn

A note on message

Parameters:

  • note (Fixnum, String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)
  • :velocity (Fixnum)

47
48
49
50
51
52
53
54
55
56
# File 'lib/midi-message/context.rb', line 47

def note_on(note, options = {})
  channel = options[:channel] || @channel
  velocity = options[:velocity] || @velocity
  raise "note_on requires both channel and velocity" if channel.nil? || velocity.nil?
  if note.kind_of?(String)
    NoteOn[note].new(channel, velocity, options)
  else
    NoteOn.new(channel, note, velocity, options)
  end
end

#pitch_bend(low, high, options = {}) ⇒ Object Also known as: PitchBend

A poly pressure message

Parameters:

  • low (Fixnum)
  • high (Fixnum)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)

132
133
134
135
136
# File 'lib/midi-message/context.rb', line 132

def pitch_bend(low, high, options = {})
  channel = options[:channel] || @channel
  raise "channel_aftertouch requires a channel" if channel.nil?
  PitchBend.new(channel, low, high, options)
end

#polyphonic_aftertouch(note, value, options = {}) ⇒ Object Also known as: PolyphonicAftertouch, PolyAftertouch, PolyphonicPressure, PolyPressure, poly_aftertouch, poly_pressure

A poly pressure message

Parameters:

  • note (Fixnum, String)
  • value (Fixnum)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)

98
99
100
101
102
103
104
105
106
# File 'lib/midi-message/context.rb', line 98

def polyphonic_aftertouch(note, value, options = {})
  channel = options[:channel] || @channel
  raise "channel_aftertouch requires a channel" if channel.nil?
  if note.kind_of?(String)
    PolyphonicAftertouch[note].new(channel, value, options)
  else
    PolyphonicAftertouch.new(channel, note, value, options)
  end
end

#program_change(program, options = {}) ⇒ Object Also known as: ProgramChange

A program change message

Parameters:

  • program (Fixnum, String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :channel (Fixnum)

63
64
65
66
67
68
69
70
71
# File 'lib/midi-message/context.rb', line 63

def program_change(program, options = {})
  channel = options[:channel] || @channel
  raise "program_change requires channel" if channel.nil?
  if program.kind_of?(String)
    ProgramChange[program].new(channel, options)
  else
    ProgramChange.new(channel, program, options)
  end
end