LibArtNet
Art-Net 4 protocol implementation in Java
Install / Use
/learn @deltaeight/LibArtNetREADME
LibArtNet

LibArtNet is a Java implementation of the Art-Net 4 protocol as maintained by Artistic License Ltd. <img src="artnet.gif" height="150" align="right">
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.
<a name="features">Features</a>
- Basic Art-Net receiver
- Basic Art-Net sender
Supported Art-Net packets
- ArtDmx
- Sequence number
- 15bit universe addressing
- ArtPoll
- unicast
- sending
ArtPollReplyon 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
<a name="roadmap">Roadmap</a>
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();
<a name="contribute">Contribute</a>
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.
