# Set the default hostname and port number for outgoing OSC messages.

``

    use_osc  hostname (string), port (number)

Sets the destination host and port that `osc` will send messages to. If no port number is specified - will default to port 4560 (Sonic Pi’s default OSC listening port).

OSC (Open Sound Control) is a simple way of passing messages between two separate programs on the same computer or even on different computers via a local network or even the internet. `use_osc` allows you to specify which computer (`hostname`) and program (`port`) to send messages to.

It is possible to send messages to the same computer by using the host name `"localhost"`

This is a thread-local setting - therefore each thread (or live loop) can have their own separate `use_osc` values.

Note that calls to `osc_send` will ignore these values.

Introduced in v3.0

## Examples

# Example 1
``
    use_osc "localhost", 7000
    osc "/foo/bar"
| ``
    # Send a simple OSC message to another program on the same machine

    # Specify port 7000 on this machine
    # Send an OSC message with path "/foo/bar"
    # and no arguments
# Example 2
``
    use_osc "localhost", 7000
    osc "/foo/bar" 1, 3.89, "baz"
| ``
    # Send an OSC messages with arguments to another program on the same machine

    # Specify port 7000 on this machine
    # Send an OSC message with path "/foo/bar"
    # and three arguments:
    # 1) The whole number (integer) 1
    # 2) The fractional number (float) 3,89
    # 3) The string "baz"
# Example 3
``
    use_osc "10.0.1.5", 7000
    osc "/foo/bar" 1, 3.89, "baz"
| ``
    # Send an OSC messages with arguments to another program on a different machine

    # Specify port 7000 on the machine with address 10.0.1.5
    # Send an OSC message with path "/foo/bar"
    # and three arguments:
    # 1) The whole number (integer) 1
    # 2) The fractional number (float) 3,89
    # 3) The string "baz"
# Example 4
``
    use_osc "localhost", 7000
    osc "/foo/bar"
    osc "/foo/baz"

    use_osc "localhost", 7005
    osc "/foo/bar"
    osc "/foo/baz"
| ``
    # use_osc only affects calls to osc until the next call to use_osc

    # Specify port 7000 on this machine
    # Send an OSC message to port 7000
    # Send another OSC message to port 7000

    # Specify port 7000 on this machine
    # Send an OSC message to port 7005
    # Send another OSC message to port 7005
# Example 5
``
    use_osc "localhost", 7000

    live_loop :foo do
      osc "/foo/bar"
      sleep 1
    end

    live_loop :bar do
      use_osc "localhost", 7005

      osc "/foo/bar"
      sleep 1
    end

    use_osc "localhost", 7010
    osc "/foo/baz"
| ``
    # threads may have their own use_osc value

    # Specify port 7000 on this machine

    # Thread inherits outside use_osc values
    # and therefore sends OSC messages to port 7000

    # Override OSC hostname and port for just this
    # thread (live loop :bar). Live loop :foo is
    # unaffected.

    # Send OSC messages to port 7005

    # Specify port 7010
    # Send another OSC message to port 7010
    # Note that neither live loops :foo or :bar
    # are affected (their use_osc values are
    # independent and isolated.