Skip to main content

Open Sound Control server and client implementations in pure Python

Project description

Open Sound Control server and client implementations in pure python (3.3+).

Current status

This library was developped following the specifications at http://opensoundcontrol.org/spec-1_0 and is currently in a stable state.

Features

  • UDP blocking/threading/forking server implementations

  • UDP client

  • int, float, string, blob OSC arguments

  • simple OSC address<->callback matching system

  • extensive unit test coverage

  • basic client and server examples

Installation

python-osc is a pure python library that has no external dependencies, to install it just use pip (prefered):

$ pip install python-osc

or from the raw sources for the development version:

$ python setup.py test
$ python setup.py install

Examples

Simple client

"""
This program sends 10 random values between 0.0 and 1.0 to the /filter address,
waiting for 1 seconds between each value.
"""
import argparse
import random
import time

from pythonosc import osc_message_builder
from pythonosc import udp_client


if __name__ == "__main__":
  parser = argparse.ArgumentParser()
  parser.add_argument("--ip", default="127.0.0.1",
      help="The ip of the OSC server")
  parser.add_argument("--port", type=int, default=8000,
      help="The port the OSC server is listening on")
  args = parser.parse_args()

  client = udp_client.UDPClient(args.ip, args.port)

  for x in range(10):
    msg = osc_message_builder.OscMessageBuilder(address = "/filter")
    msg.add_arg(random.random())
    msg = msg.build()
    client.send(msg)
    time.sleep(1)

Simple server

import argparse
import math

from pythonosc import dispatcher
from pythonosc import osc_server

def print_volume_handler(unused_addr, args, volume):
  print("[{0}] ~ {1}".format(args[0], volume))

def print_compute_handler(unused_addr, args, volume):
  try:
    print("[{0}] ~ {1}".format(args[0], args[1](volume)))
  except ValueError: pass

if __name__ == "__main__":
  parser = argparse.ArgumentParser()
  parser.add_argument("--ip",
      default="127.0.0.1", help="The ip to listen on")
  parser.add_argument("--port",
      type=int, default=5005, help="The port to listen on")
  args = parser.parse_args()

  dispatcher = dispatcher.Dispatcher()
  dispatcher.map("/debug", print)
  dispatcher.map("/volume", print_volume_handler, "Volume")
  dispatcher.map("/logvolume", print_compute_handler, "Log volume", math.log)

  server = osc_server.ThreadingOSCUDPServer(
      (args.ip, args.port), dispatcher)
  print("Serving on {}".format(server.server_address))
  server.serve_forever()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

python-osc-1.4.1.zip (26.9 kB view details)

Uploaded Source

python-osc-1.4.1.tar.gz (16.6 kB view details)

Uploaded Source

File details

Details for the file python-osc-1.4.1.zip.

File metadata

  • Download URL: python-osc-1.4.1.zip
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for python-osc-1.4.1.zip
Algorithm Hash digest
SHA256 ec6848a3e2fe8f3ebe5af845bf67433c83c2975013464cecd7e15681657eb0f1
MD5 9d9a13e105ef638f35772281ff53fe3b
BLAKE2b-256 00d6f5e222ae81d689e3ffe45ad36ea02902f7426beeeb6a5864311ae0a222e5

See more details on using hashes here.

File details

Details for the file python-osc-1.4.1.tar.gz.

File metadata

  • Download URL: python-osc-1.4.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for python-osc-1.4.1.tar.gz
Algorithm Hash digest
SHA256 e376c5a073cee3c2a64a58e55fcb1e103a3676b8d8ecafac62186b970f54f2fa
MD5 b716b576ab97009fe9f3f41361ea9faa
BLAKE2b-256 3808d9ae428b48fd9e7db9744a0cd96a3b541672de278116e65306728f4233b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page