Class: Webmidi::Middleware::Transpose

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

Instance Method Summary collapse

Constructor Details

#initialize(app, semitones: 0, **options) ⇒ Transpose

Returns a new instance of Transpose.



6
7
8
9
# File 'lib/webmidi/middleware/transpose.rb', line 6

def initialize(app, semitones: 0, **options)
  super(app, **options)
  @semitones = semitones
end

Instance Method Details

#call(message) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/webmidi/middleware/transpose.rb', line 11

def call(message)
  if note_message?(message)
    new_note = (message.note + @semitones).clamp(0, 127)
    transposed = message.with(note: new_note)
    @app.call(transposed)
  else
    @app.call(message)
  end
end