{"id":15043199,"url":"https://github.com/hoijui/javaosc","last_synced_at":"2025-04-09T06:05:16.991Z","repository":{"id":2437316,"uuid":"3407162","full_name":"hoijui/JavaOSC","owner":"hoijui","description":"OSC content format/\"protocol\" library for JVM languages","archived":false,"fork":false,"pushed_at":"2024-12-30T17:59:19.000Z","size":1634,"stargazers_count":160,"open_issues_count":19,"forks_count":47,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-09T06:04:58.675Z","etag":null,"topics":["content-format","java","java-8","library","open-sound-control","osc","osgi-bundle","protocol"],"latest_commit_sha":null,"homepage":"http://www.illposed.com/software/javaosc.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hoijui.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-02-10T12:54:00.000Z","updated_at":"2025-02-11T17:19:12.000Z","dependencies_parsed_at":"2024-01-12T18:39:19.965Z","dependency_job_id":"46b89719-d19d-4713-a141-04d0c898e84a","html_url":"https://github.com/hoijui/JavaOSC","commit_stats":{"total_commits":802,"total_committers":10,"mean_commits":80.2,"dds":0.0785536159600998,"last_synced_commit":"755995b1d46c7fdf96e002a1689596acdf826907"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoijui%2FJavaOSC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoijui%2FJavaOSC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoijui%2FJavaOSC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoijui%2FJavaOSC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoijui","download_url":"https://codeload.github.com/hoijui/JavaOSC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987184,"owners_count":21028891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["content-format","java","java-8","library","open-sound-control","osc","osgi-bundle","protocol"],"created_at":"2024-09-24T20:48:41.535Z","updated_at":"2025-04-09T06:05:16.971Z","avatar_url":"https://github.com/hoijui.png","language":"Java","readme":"```text\n      _                       ____    _____   _____\n     | |                     / __ \\  / ____| / ____|\n     | |  __ _ __   __ __ _ | |  | || (___  | |\n _   | | / _` |\\ \\ / // _` || |  | | \\___ \\ | |\n| |__| || (_| | \\ V /| (_| || |__| | ____) || |____\n \\____/  \\__,_|  \\_/  \\__,_| \\____/ |_____/  \\_____|\n```\n\n\u003c!-- The title was created with: `figlet -k -f big JavaOSC` --\u003e\n\n\u003c!--\nSPDX-FileCopyrightText: 2012 C. Ramakrishnan / Illposed Software\nSPDX-FileCopyrightText: 2021 - 2024 Robin Vobruba \u003choijui.quaero@gmail.com\u003e\n\nSPDX-License-Identifier: CC0-1.0\n--\u003e\n\n## Status\n\n[![License](\nhttps://img.shields.io/github/license/hoijui/JavaOSC.svg?color=orange)](\nhttps://github.com/hoijui/JavaOSC/blob/master/LICENSE)\n[![Latest version at Maven Central](\nhttps://maven-badges.herokuapp.com/maven-central/com.illposed.osc/javaosc-core/badge.svg?color=blue)](\nhttps://maven-badges.herokuapp.com/maven-central/com.illposed.osc/javaosc-core/)\n[![Issues](\nhttps://img.shields.io/badge/issues-GitHub-red.svg)](\nhttps://github.com/hoijui/JavaOSC/issues)\n[![Chat](\nhttps://img.shields.io/badge/chat-IRC-darkgreen.svg)](\nirc://irc.freenode.net/javaosc)\n\n[![REUSE status](\nhttps://api.reuse.software/badge/github.com/hoijui/JavaOSC)](\nhttps://api.reuse.software/info/github.com/hoijui/JavaOSC)\n[![GitHub last commit](\nhttps://img.shields.io/github/last-commit/hoijui/JavaOSC.svg)](\nhttps://github.com/hoijui/JavaOSC)\n[![Build Status](\nhttps://travis-ci.org/hoijui/JavaOSC.svg?branch=master)](\nhttps://travis-ci.org/hoijui/JavaOSC?branch=master)\n\n[![Code Quality (LGTM)](\nhttps://img.shields.io/lgtm/grade/java/g/hoijui/JavaOSC.svg?logo=lgtm\u0026logoWidth=18)](\nhttps://lgtm.com/projects/g/hoijui/JavaOSC/context:java)\n[![Total alerts (LGTM)](\nhttps://img.shields.io/lgtm/alerts/g/hoijui/JavaOSC.svg?logo=lgtm\u0026logoWidth=18)](\nhttps://lgtm.com/projects/g/hoijui/JavaOSC/alerts/)\n[![Status (SonarCloud)](\nhttps://sonarcloud.io/api/project_badges/measure?project=com.illposed.osc:javaosc\u0026metric=alert_status)](\nhttps://sonarcloud.io/dashboard?id=com.illposed.osc:javaosc)\n[![Coverage (SonarCloud)](\nhttps://sonarcloud.io/api/project_badges/measure?project=com.illposed.osc:javaosc\u0026metric=coverage)](\nhttps://sonarcloud.io/component_measures/metric/coverage/list?id=com.illposed.osc:javaosc)\n[![Bugs (SonarCloud)](\nhttps://sonarcloud.io/api/project_badges/measure?project=com.illposed.osc:javaosc\u0026metric=bugs)](\nhttps://sonarcloud.io/component_measures/metric/reliability_rating/list?id=com.illposed.osc:javaosc)\n[![Vulnerabilities (SonarCloud)](\nhttps://sonarcloud.io/api/project_badges/measure?project=com.illposed.osc:javaosc\u0026metric=vulnerabilities)](\nhttps://sonarcloud.io/component_measures/metric/security_rating/list?id=com.illposed.osc:javaosc)\n\n## What is this?\n\n### JavaOSC\n\nJavaOSC is primarily a library that gives JVM language programs the ability\nof serializing, parsing, sending and receiving data in the OSC content format.\nIt is written in Java 8, and its only runtime dependency is a logging facade (_SLF4J_).\nIt is also an [OSGi](https://www.osgi.org/developer/what-is-osgi/)\n(a dynamic module system for Java) bundle.\n\nIn a separate package,\nit also contains a sample GUI that allows to send OSC messages to SuperCollider.\n\n### Open Sound Control (OSC)\n\nis a simple _content format_,\nalthough it is often though of as a _protocol_\nfor the transmission of data over a network.\n\n#### Application domains\n\n* as a **replacement for MIDI** -\n  a network-protocol for the exchange of musical control data between soft- and hardware,\n  usually over a UDP/IP network\n* in **robotics** -\n  for communication between the parts of a robot,\n  or multiple robots amongst each other\n\nIts main strength is its simplicity.\n\n## How to\n\n### Get it\n\nThe latest release version of the library is available on\n[GitHub for manual download](https://github.com/hoijui/JavaOSC/releases)\nor on\n[Maven central](https://search.maven.org/search?q=a:javaosc-core)\n\n```xml\n\u003cdependency\u003e\n\t\u003cgroupId\u003ecom.illposed.osc\u003c/groupId\u003e\n\t\u003cartifactId\u003ejavaosc-core\u003c/artifactId\u003e\n\t\u003cversion\u003e0.8\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nThe latest development sources can be found\n[on GithHub](https://github.com/hoijui/JavaOSC).\n\n### Run the Demo UI\n\n#### ... with SuperCollider\n\nJavaOSC is not a standalone application, but designed to be used in other applications.\nThough there is a very basic application for demonstration purposes.\n\nTo _run the demo app_, make sure you have all parts packaged and installed:\n\n```bash\nmvn install\n```\n\nThen start the UI:\n\n```bash\ncd modules/ui\nmvn exec:java\n```\n\nNext, launch SuperCollider (SC), open the file located in the\n`modules/core/src/main/resources/supercollider/` directory,\nand load the synthdef into SuperCollider.\nStart the SC local server.\nIn the JavaOSC Demo UI, click the \"All On\" button and start moving the sliders.\nYou should hear the sounds change.\nTo see what messages the UI is sending, run either the CNMAT `dumpOSC`,\nor turn on dumpOSC in SuperCollider.\n\n#### ... with PD\n\nThere is also a PureData patch created by Alexandre Quessy,\navailable [here](http://www.sourcelibre.com/puredata/).\n\nTo try the demo UI with PureData,\nlaunch (this is important!) _pd-extended_ and open the file\n`modules/core/src/main/resources/puredata/javaosc.pd`.\nTurn down the volume a bit at first, as it might be very loud.\nClick the \"All On\" button, and start moving the sliders.\nYou should hear the sounds change.\nTo see what messages the UI is sending, just look in the PD window or\nin the terminal.\n\n### Run the OSH Echo Server\n\nThis tool simple listens on `0.0.0.0`,\nand returns every OSC message it gets, as-is.\n\nBefore running -\nand every time the sources change -\nrun this once:\n\n```bash\nmvn install\n```\n\nThen to run, simply execute:\n\n```bash\nmvn --projects modules/cmds exec:java\n```\n\n### Use the library\n\nThe classes that deal with sending OSC data\nare located in the `com.illposed.osc` package.\nThe core classes are `com.illposed.osc.transport.OSCPort{In,  Out}`,\n`com.illposed.osc.OSCMessage` and `com.illposed.osc.OSCBundle`.\n\nThe common way to use the library is to instantiate an `OSCPort{In,  Out}`\nconnected to the receiving machine, and then call `port.send(myPacket)`.\n\nThere are some associated JUnit tests, which also contain code that may illustrate\nhow to use the library.\nThey can be run with `mvn test`.\n\n## Release a SNAPSHOT (devs only)\n\nTo release a development version to the Sonatype snapshot repository only:\n\n```bash\n# open a \"private\" shell, to not spill the changes in env vars\nbash\n# set env vars\nexport JAVA_HOME=\"${JAVA_8_HOME}\"\n# do the release\nmvn clean deploy\n# leave our \"private\" shell instance again\nexit\n```\n\nIn the project you want to use the _SNAPSHOT_ release,\nyou need to add this to your _pom.xml_:\n\n```xml\n\t\u003crepositories\u003e\n\t\t\u003crepository\u003e\n\t\t\t\u003cid\u003eossrh\u003c/id\u003e\n\t\t\t\u003curl\u003ehttps://oss.sonatype.org/content/repositories/snapshots\u003c/url\u003e\n\t\t\u003c/repository\u003e\n\t\u003c/repositories\u003e\n```\n\n## Release (devs only)\n\n### Prepare \"target/\" for the release process\n\n```bash\nmvn release:clean\n```\n\n### Setup for signing the release\n\nTo be able to sign the release artifacts,\nmake sure you have a section in your `~/.m2/settings.xml` that looks like this:\n\n```xml\n\t\u003cprofiles\u003e\n\t\t\u003cprofile\u003e\n\t\t\t\u003cid\u003eossrh\u003c/id\u003e\n\t\t\t\u003cactivation\u003e\n\t\t\t\t\u003cactiveByDefault\u003etrue\u003c/activeByDefault\u003e\n\t\t\t\u003c/activation\u003e\n\t\t\t\u003cproperties\u003e\n\t\t\t\t\u003cgpg.executable\u003egpg2\u003c/gpg.executable\u003e\n\t\t\t\t\u003c!--\n\t\t\t\t\tThis needs to match the `uid` as displayed by `gpg2 --list-keys`,\n\t\t\t\t\tand needs to be XML escaped.\n\t\t\t\t--\u003e\n\t\t\t\t\u003cgpg.keyname\u003eFirstname Lastname (Comment) \u0026lt;user@email.org\u0026gt;\u003c/gpg.keyname\u003e\n\t\t\t\u003c/properties\u003e\n\t\t\u003c/profile\u003e\n\t\u003c/profiles\u003e\n```\n\nIf you have not yet done so, generate and publish a key-pair.\nSee [the Sonatype guide](http://central.sonatype.org/pages/working-with-pgp-signatures.html)\nfor further details about how to work with GPG keys.\n\n### Prepare the release\n\n```bash\n# open a \"private\" shell, to not spill the changes in env vars\nbash\n# set env vars\nexport JAVA_HOME=\"${JAVA_8_HOME}\"\n# check if everything is in order\nmvn \\\n\tclean \\\n\tpackage \\\n\tverify \\\n\tgpg:sign \\\n\tsite\nmvn release:clean\nmvn \\\n\t-DdryRun=true \\\n\trelease:prepare\n# run the prepare phase for real\nmvn release:clean\nmvn \\\n\t-DdryRun=false \\\n\trelease:prepare\n# leave our \"private\" shell instance again\nexit\n```\n\nThis does the following:\n\n* _Important for backwards compatibility_:\n  use the oldest possible JDK version to compile (currently 1.8)\n* asks for the release and new snapshot versions to use (for all modules)\n* packages\n* signs with GPG\n* commits\n* tags\n\n### Perform the release (main part)\n\n```bash\n# open a \"private\" shell, to not spill the changes in env vars\nbash\n# set env vars\nexport JAVA_HOME=\"${JAVA_8_HOME}\"\n# perform the release\ngit push origin master --tags\nmvn release:perform\nmvn deploy -P release\n# leave our \"private\" shell instance again\nexit\n```\n\nThis does the following:\n\n* pushes to origin\n* checks-out the release tag\n* builds\n* deploy into Sonatype staging repository\n* promote it on Maven Central repository (may have a delay of up to 4h)\n\n## Thanks\n\nThanks to John Thompson for writing the UI (demo application),\nAlexandre Quessy for the PD demo,\nand to Martin Kaltenbrunner and Alex Potsides for their contributions.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoijui%2Fjavaosc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoijui%2Fjavaosc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoijui%2Fjavaosc/lists"}