Code Monkey home page Code Monkey logo

dmx's Introduction

node-dmx

DMX-512 controller library for node.js

Install

npm install dmx

Library API

const DMX = require('dmx')

Class DMX

new DMX()

Create a new DMX instance. This class is used to tie multiple universes together.

dmx.registerDriver(name, module)

  • name - String
  • module - Object implementing the Driver API

Register a new DMX Driver module by its name. These drivers are currently registered by default:

  • null: a development driver that prints the universe to stdout
  • artnet: driver for EnttecODE
  • bbdmx: driver for BeagleBone-DMX
  • dmx4all: driver for DMX4ALL devices like the "NanoDMX USB Interface"
  • enttec-usb-dmx-pro: a driver for devices using a Enttec USB DMX Pro chip like the "DMXKing ultraDMX Micro".
  • enttec-open-usb-dmx: driver for "Enttec Open DMX USB". This device is NOT recommended, there are known hardware limitations and this driver is not very stable. (If possible better obtain a device with the "pro" chip)
  • dmxking-utra-dmx-pro: driver for the DMXKing Ultra DMX pro interface. This driver support multiple universe specify the options with Port = A or B

dmx.addUniverse(name, driver, device_id, options)

  • name - String
  • driver - String, referring a registered driver
  • device_id - Number or Object
  • options - Object, driver specific options

Add a new DMX Universe with a name, driver and an optional device_id used by the driver to identify the device. For enttec-usb-dmx-pro and enttec-open-usb-dmx device_id is the path the the serial device. For artnet it is the target ip.

dmx.update(universe, channels)

  • universe - String, name of the universe
  • channels - Object, keys are channel numbers, values the values to set that channel to

Update one or multiple channels of a universe. Also emits a update Event with the same information.

DMX.devices

A JSON Object describing some Devices and how many channels they use. Currently not many devices are in there but more can be added to the devices.js file. Pull requests welcome ;-)

The following Devices are known:

  • generic - a one channel dimmer
  • showtec-multidim2 - 4 channel dimmer with 4A per channel
  • eurolite-led-bar - Led bar with 3 RGB color segments and some programms
  • stairville-led-par-56 - RGB LED Par Can with some programms

Class DMX.Animation

new DMX.Animation()

Create a new DMX Animation instance. This can be chained similar to jQuery.

animation.add(to, duration, options)

  • to - Object, keys are channel numbers, values the values to set that channel to
  • duration - Number, duration in ms
  • options - Object

Add an animation Step. The options Object takes an easing key which allows to set a easing function from the following list:

  • linear (default)
  • inQuad
  • outQuad
  • inOutQuad
  • inCubic
  • outCubic
  • inOutCubic
  • inQuart
  • outQuart
  • inOutQuart
  • inQuint
  • outQuint
  • inOutQuint
  • inSine
  • outSine
  • inOutSine
  • inExpo
  • outExpo
  • inOutExpo
  • inCirc
  • outCirc
  • inOutCirc
  • inElastic
  • outElastic
  • inOutElastic
  • inBack
  • outBack
  • inOutBack
  • inBounce
  • outBounce
  • inOutBounce

Returns a Animation object with the animation step added.

animation.delay(duration)

  • duration - Number, duration in ms

Delay the next animation step for duration. Returns a Animation object with the delay step added.

animation.run(universe, onFinish)

  • universe - Object, reference to the universe driver
  • onFinish - Function, called when the animation is done

Run the Animation on the specified universe.

animation.runLoop(universe)

  • universe - Object, reference to the universe driver

Runs an animation constantly until animation.stop() is called

The example below shows a value being animated for 5 seconds:

const animation = new DMX.Animation().add({
  1: 255,
}, 100).add({
  1: 0,
}, 100).runLoop(universe)


setTimeout(() => {
  animation.stop()
}, 5000)

Webinterface

Versions prior to 0.2 included a Webinterface. This has since been moved into its own repository at https://github.com/node-dmx/dmx-web

Community

We're happy to help. Chat with us on IRC in #node-dmx on freenode.

dmx's People

Contributors

bluemaex avatar drscream avatar evantahler avatar fensterbank avatar jachwe avatar joebayld avatar kfstudio avatar pboyd04 avatar sdeboeck avatar seriousmanual avatar smcquaid avatar spearway avatar wiedi avatar williamoverton avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.