def change(type, opts = nil)
      opts ||= {}
      status = %w(up down left right session user1 user2 mixer).include?(type.to_s) ? Status::CC : Status::ON
      output(status, note(type, opts), velocity(opts))
    end
def change(type, opts = nil)
      opts ||= {}
      status = %w(up down left right session user1 user2 mixer).include?(type.to_s) ? Status::CC : Status::ON
      output(status, note(type, opts), velocity(opts))
    end
Changes a single LED.

 Parameters (see Launchpad for values):

 [+type+] type of the button to change

 Optional options hash (see Launchpad for values):

 [<tt>:x</tt>]     x coordinate
 [<tt>:y</tt>]     y coordinate
 [<tt>:red</tt>]   brightness of red LED
 [<tt>:green</tt>] brightness of green LED
 [<tt>:mode</tt>]  button mode, defaults to <tt>:normal</tt>, one of:
                   [<tt>:normal/tt>]     updates the LED for all circumstances (the new value will be written to both buffers)
                   [<tt>:flashing/tt>]   updates the LED for flashing (the new value will be written to buffer 0 while the LED will be off in buffer 1, see buffering_mode)
                   [<tt>:buffering/tt>]  updates the LED for the current update_buffer only

 Errors raised:

 [Launchpad::NoValidGridCoordinatesError] when coordinates aren't within the valid range
 [Launchpad::NoValidBrightnessError] when brightness values aren't within the valid range
 [Launchpad::NoOutputAllowedError] when output is not enabled