Class: MIDIEvents::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/midi-events/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-events/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-events/context.rb', line 6

def channel
  @channel
end

#velocityObject

Returns the value of attribute velocity.



6
7
8
# File 'lib/midi-events/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-events/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)


124
125
126
127
128
129
# File 'lib/midi-events/context.rb', line 124

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)


83
84
85
86
87
88
89
90
91
92
# File 'lib/midi-events/context.rb', line 83

def control_change(index, value, options = {})
  channel = options[:channel] || @channel
  raise 'control_change requires channel' if channel.nil?

  if index.is_a?(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
40
# File 'lib/midi-events/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.is_a?(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)


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

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.is_a?(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)


139
140
141
142
143
144
# File 'lib/midi-events/context.rb', line 139

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)


102
103
104
105
106
107
108
109
110
111
# File 'lib/midi-events/context.rb', line 102

def polyphonic_aftertouch(note, value, options = {})
  channel = options[:channel] || @channel
  raise 'channel_aftertouch requires a channel' if channel.nil?

  if note.is_a?(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)


65
66
67
68
69
70
71
72
73
74
# File 'lib/midi-events/context.rb', line 65

def program_change(program, options = {})
  channel = options[:channel] || @channel
  raise 'program_change requires channel' if channel.nil?

  if program.is_a?(String)
    ProgramChange[program].new(channel, options)
  else
    ProgramChange.new(channel, program, options)
  end
end