cmio

[Function]
  `(``cmio` {keyword value}*`)`

Opens and returns a new CMIO window. Initial window values can be customized by specifying optional keyword arguments to the function. Each keyword is the keyword name of a notebook page in the window and its value is a property list containing zero or more page field names and values. The syntax of the property list for each page is described below.

`cmio` supports the following keyword arguments:

`:clm` list
  Initializes data fields on the CLM page according to list, a property list with the following keyword field names and values:

  `:score-file` | string
  `:versions` | boolean
  `:sound-file` | string
  `:play` | boolean
  `:srate` | number
  `:channels` | number
  `:scaled-to` | number
  `:scaled-by` | number
  `:clipped` | boolean
  `:statistics` | boolean
  `:verbose` | boolean
  `:comment` | string
  `:reverb` | symbol
  `:decay-time` | number
  `:reverb-data` | list

`:cmn` list
  Initializes data fields on the CMN page according to list, a property list with the following keyword field names and values:

  `:output-file` | string
  `:versions` | boolean
  `:view` | boolean
  `:all-output-in-one-file` | boolean
  `:title` | string
  `:size` | integer
  `:metronome` | integer
  `:exact` | boolean
  `:staffing` | list

  See the documentation on clm-stream for a description of the `:staffing` list.
`:csound` list
  Initializes data fields on the Csound page according to list, a property list with the following keyword field names and values:

  `:score-file` | string
  `:versions` | boolean
  `:header` | string
  `:orchestra` | string
  `:sound` | string

`:eventio` list
  Initializes data fields on the Event IO page according to list, a property list with the following keyword field names and values:

  `:events` | expression
  `:starts` | {number | list}

`:files` list
  Initializes data fields on the Files page according to list, a property list with the following keyword field names and values:

  `:audio` | string
  `:midi` | string
  `:sco` | string
  `:eps` | string
  `:html` | string
  `:ins` | string
  `:clm` | string
  `:lisp` | string
  `:wait` | boolean
  `:output` | boolean

`:midi` list
  Initializes data fields on the Midi page according to list, a property list with the following keyword field names and values:

  `:midi-file` | string
  `:microtuning` | {`:none` | `:divisions` | `:note-by-note`}
  `:exclude-tracks` | string
  `:meta-exclude` | boolean
  `:keynum-format` | {`:keynum` | `:note` | `:hertz`}
  `:override-tempo` | number
  `:time-format` | {`:beats` | `:ticks`}

`:midishare` list
  Initializes data fields on the Midishare page according to list, a property list with the following keyword field names and values:

  `:connection` | {`:midi-port` | `:midi-player`}
  `:name` | string
  `:track` | number
  `:play` | boolean

`:plotter` list
  Initializes data fields on the Plotter page according to list, a property list with the following keyword field names and values:

  `:title` | string
  `:event-layering` | {`:add` | `:mix` | `:replace` | `:overwrite`}
  `:x-axis` | list
  `:y-axis` | list

  See the documentation on axis for a description of the `:x-axis` and `:y-axis` lists.
`:seq` list
  Initializes data fields on the Seq page according to list, a property list with the following keyword field names and values:

  `:name` | string
  `:replace` | boolean

`:systems` list
  Initializes data fields on the Systems page according to list, a property list with the following keyword field names and values:

  `:clm-directory` | string
  `:clm-bin-directory` | string
  `:cmn-directory` | string
  `:cmn-bin-directory` | string

`:target` page
  Selects keyword page as the active target page when the window opens. Defaults to `:midi`.

#### Examples:

Example 1. Customizing a Midi page.

    (cmio :midi '(:midi-file "temp.mid" :microtuning :divisions))

Example 2. Customizing a CLM configuration.

    (cmio :clm '(:srate 44100 :channels 2 :reverb nrev :statistics t)
          :files '(:audio "/usr/bin/sndplay")
          :systems '(:clm-directory "/usr/share/clm-2")
          :target ':clm)

Example 3. Customizing a Plotter page.

    (cmio :plotter '(:title "My Data"
                     :event-layering ':overwrite
                     :x-axis (:maximum 60 :slot (time duration)
                                       :ticks-per-increment 1)
                     :y-axis (:keynum :minimum 60 :maximum 80
                                      :slot keynum))
          :target ':plotter)

#### See also:

- CMIO [Topic]
- Plotter [Topic]