Skip to content

deltaeight/LibArtNet

Repository files navigation

LibArtNet Maven Central Javadocs Build Status

LibArtNet is a Java implementation of the Art-Net 4 protocol as maintained by Artistic License Ltd.

Please have in mind that LibArtNet is still in beta.

However, see the feature list, the roadmap and how to contribute for further information. If you feel there is something missing that is not listed there, feel free to open an issue.

  • Basic Art-Net receiver
  • Basic Art-Net sender

Supported Art-Net packets

  • ArtDmx
    • Sequence number
    • 15bit universe addressing
  • ArtPoll
    • unicast
    • sending ArtPollReply on state changes
    • priorities for diagnostic data
  • ArtPollReply
    • macros
    • remotes
    • OEM codes (all OEM codes built in)
    • short/long names
    • equipment styles
    • much more
  • ArtTimeCode
    • 24/25/29.97/30 fps

Planned features are

  • Art-Net controller, an abstraction layer using the existing receiver and sender to act as a console
  • Art-Net node, an abstraction layer using the existing receiver and sender to act as a node
  • RDM support

Usage

All classes are documented using Javadoc. However, if there is something missing or unclear, feel free to open an issue.

Requirements

  • Java 1.8 or higher
  • Gradle if you want to compile from source

Installation

LibArtNet is available on Maven Central and on the release page.

Maven

Add this dependency to pom.xml:

<dependency>
  <groupId>de.deltaeight</groupId>
  <artifactId>LibArtNet</artifactId>
  <version>1.1.2-beta</version>
</dependency>

Gradle

Add this to build.gradle:

dependencies {
    implementation 'de.deltaeight:LibArtNet:1.1.2-beta'
}

Compiling from source

To build a .jar file to use in your IDE, run

./gradlew :lib:jar 

Usage examples

Using the receiver

The receiver needs receive handlers which are called when the appropriate packet is received:

ArtNetReceiver receiver = new ArtNetReceiver()
    .withArtDmxReceiveHandler(packet -> System.out.println("Channel 63 value: " + packet.getData()[62]));

receiver.start();

// Do other stuff

receiver.stop();

Using the sender

The sender needs Art-Net packets to send, therefore we need a builder instance for the desired packets first:

ArtPollReplyBuilder builder = new ArtPollReplyBuilder()
        // report as Robert Juliat Dalis Reference : 860
        .withProduct(OemCode.getProductByOemCode("OemRobertJulDalis1"))
        .withBindIp(new byte[]{127, 0, 0, 1});

ArtNetSender sender = new ArtNetSender();
sender.start();

sender.send(InetAddress.getByName("127.0.0.1"), builder.build());

// Do other stuff

sender.stop();

Your contribution is more than welcome!

If you'd like to contribute, every help is much appreciated. Feel free to fork, create pull requests and open issues for bugs or feature requests.

For bug reports, feature requests and pull requests there are templates that you can just fill out to provide us with the required information.

Please have a look at the contribution guide and the code of conduct before you contribute.

License

LibArtNet is licensed under the MIT License. See LICENSE.md for details.