Class: Webmidi::Middleware::VelocityClamp

Inherits:
Base
  • Object
show all
Defined in:
lib/webmidi/middleware/velocity_clamp.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, min: 0, max: 127, include_note_off: true, **options) ⇒ VelocityClamp

Returns a new instance of VelocityClamp.



6
7
8
9
10
11
12
13
14
15
# File 'lib/webmidi/middleware/velocity_clamp.rb', line 6

def initialize(app, min: 0, max: 127, include_note_off: true, **options)
  super(app, **options)
  validate_velocity!(min, "min")
  validate_velocity!(max, "max")
  raise InvalidMessageError, "min cannot be greater than max" if min > max

  @min = min
  @max = max
  @include_note_off = include_note_off
end

Instance Method Details

#call(message) ⇒ Object



17
18
19
20
21
# File 'lib/webmidi/middleware/velocity_clamp.rb', line 17

def call(message)
  return @app.call(message) unless velocity_message?(message)

  @app.call(message.with(velocity: message.velocity.clamp(@min, @max)))
end