The Alternative Csound Reference Manual
Previous |  | Next

# xyin

xyin -- Sense the cursor position in an output window

## Description

Sense the cursor position in an output window. When xyin is called the position of the mouse within the output window is used to reply to the request. This simple mechanism does mean that only one xyin can be used accurately at once. The position of the mouse is reported in the output window.

## Syntax

kx, ky xyin iprd, ixmin, ixmax, iymin, iymax [, ixinit] [, iyinit]

## Initialization

iprd -- period of cursor sensing (in seconds). Typically .1 seconds.

xmin, xmax, ymin, ymax -- edge values for the x-y coordinates of a cursor in the input window.

ixinit, iyinit (optional) -- initial x-y coordinates reported; the default values are 0,0. If these values are not within the given min-max range, they will be coerced into that range.

## Performance

xyin samples the cursor x-y position in an input window every iprd seconds. Output values are repeated (not interpolated) at the k-rate, and remain fixed until a new change is registered in the window. There may be any number of input windows. This unit is useful for real-time control, but continuous motion should be avoided if iprd is unusually small.

## Examples

Here is an example of the xyin opcode. It uses the files xyin.orc and xyin.sco.

Example 1. Example of the xyin opcode.

    /* xyin.orc */
    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Instrument #1.
    instr 1
      ; Print and capture values every 0.1 seconds.
      iprd = 0.1
      ; The x values are from 1 to 30.
      ixmin = 1
      ixmax = 30
      ; The y values are from 1 to 30.
      iymin = 1
      iymax = 30
      ; The initial values for X and Y are both 15.
      ixinit = 15
      iyinit = 15

      ; Get the values kx and ky using the xyin opcode.
      kx, ky xyin iprd, ixmin, ixmax, iymin, iymax, ixinit, iyinit

      ; Print out the values of kx and ky.
      printks "kx=%f, ky=%f\\n", iprd, kx, ky

      ; Play an oscillator, use the x values for amplitude and
      ; the y values for frequency.
      kamp = kx * 1000
      kcps = ky * 220
      a1 oscil kamp, kcps, 1

      out a1
    endin
    /* xyin.orc */

    /* xyin.sco */
    ; Table #1, a sine wave.
    f 1 0 16384 10 1

    ; Play Instrument #1 for 30 seconds.
    i 1 0 30
    e
    /* xyin.sco */

As the values of kx and ky change, they will be printed out like this:

    kx=8.612036, ky=22.677933
    kx=10.765685, ky=15.644135

## Credits

Example written by Kevin Conder.

Previous | Home | Next
xtratim | Up | zacl