midi-control-change

[Class]
  `midi-control-change`

A MIDI control change or mode change event. See Table of Control and Mode Changes for information about MIDI control and mode messages.

`midi-control-change` supports the following slot initializations:

`:time` number
  The start time of the object.
`:channel` integer
  A MIDI channel number. The default value is 0.
`:controller` integer
  A MIDI controller value 0-127.
`:value` integer
  A MIDI control value 0-127.

#### Examples:

Example 1. Creating MIDI control and mode changes.

    ;;; a 'Sustain Pedal Down' control event
    (new midi-control-change :time 0 :channel 3
         :controller 64 :value 127)

    ;;; a 'Local Control Off' mode event
    (new midi-control-change :time 0 :controller 122 :value 0)

Example 2. Process with pedal control.

    (define (sustain at chan val)
      ;; make sustain pedal event
      (new midi-control-change :time at :channel chan
           :controller 122 :value 0)

    (define (playsome num)
      (process repeat num
               output (new midi :time (now)
                           :keynum (between 60 90)
                           :duraion (pick .2 .4 .6))
               wait (pick .1 .2 .3)
               ;; pedal up 5 seconds after end
               finally (output (sustain (+ (now) 5) 0 0))))

    (events (list (sustain 0 0 127)
                  (playsome 32))
            "test.mid")
    ⇒ "test.mid"

Example 3. Setting pitch bend sensitivity.

    (define (pbs time chan width)
      ;; a seq of control changes to set pitch bend
      ;; sensitivity for a chan to a width in half-steps.
      (new seq :time time
           :subobjects
           (list ;; Registered Parameter Number (fine)
                 (new midi-control-change
                      :time 0 :channel chan
                      :controller 100
                      :value 0)
                 ;; RPN (coarse)
                 (new midi-control-change
                      :time 0 :channel chan
                      :controller 101
                      :value 0)
                 ;; Data entry
                 (new midi-control-change
                   :time 0 :channel chan
                   :controller 6
                   :value width))))

#### See also:

- MIDI event classes [Topic]
- MIDI score classes [Topic]