Sha256: 2155245211ab1207e40d4904ddd6724370ce6c6b517aaf8c0de70847384334c7
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
# frozen_string_literal: true module Vissen module Input module Message # From the MIDI Association: # This the same code as the Control Change (above), but implements Mode # control and special message by using reserved controller numbers # 120-127. The commands are: # # - All Sound Off (120) # When All Sound Off is received all oscillators will turn off, and # their volume envelopes are set to zero as soon as possible. # - Reset All Controllers (121) # When Reset All Controllers is received, all controller values are # reset to their default values. # - Local Control (122) # When Local Control is Off, all devices on a given channel will # respond only to data received over MIDI. Played data, etc. will be # ignored. Local Control On restores the functions of the normal # controllers. # - All Notes Off (123..127) # When an All Notes Off is received, all oscillators will turn off. # class ChannelMode < Base DATA_LENGTH = 2 STATUS = 0xB0 # @return [Integer] the control number. def number data[1] end class << self protected # The channel mode message is special in that it is only valid when # the second byte takes values equal to or greather than 120. We # therefore need to override `Base.klass_matcher`. # # FIXME: other matchers created may not be correct. def klass_matcher super do |d| (d[0] & STATUS_MASK) == STATUS && d[1] >= 120 end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vissen-input-0.2.2 | lib/vissen/input/message/channel_mode.rb |