nannou_laser 0.3.0

A cross-platform laser DAC detection and streaming API.
Documentation
# nannou_laser [![Build Status]https://travis-ci.org/nannou-org/nannou_laser.svg?branch=master]https://travis-ci.org/nannou-org/nannou_laser [![Crates.io]https://img.shields.io/crates/v/nannou_laser.svg]https://crates.io/crates/nannou_laser [![Crates.io]https://img.shields.io/crates/l/nannou_laser.svg]https://github.com/nannou-org/nannou_laser/blob/master/LICENSE-MIT [![docs.rs]https://docs.rs/nannou_laser/badge.svg]https://docs.rs/nannou_laser/

A cross-platform laser DAC detection and streaming API.

**nannou_laser** aims to be a higher-level API around a variety of laser protocols
providing a unified interface for detecting DACs and streaming data to them.

## Features

- **DAC Detection**: Detect all DACs available to the system.
- **Specify maximum latency**: Choose how much latency you wish to allow for
  achieving the right balance between stream stability and low-latency to suit
  the DAC.
- **Frame Streams**: Stream data to the DAC as a sequence of 2D vector images
  without worrying about details like path optimisation, etc.
- **Raw Streams**: While frame streams are convenient, sometimes direct access
  to the lower-level raw DAC stream is required (e.g. when visualising a raw
  audio stream). This can be accessed via the **RawStream** API.
- **Frame Optimisation**: **nannou_laser** implements the full suite of
  optimisations covered in *Accurate and Efficient Drawing Method for Laser
  Projection* by Purkhet Abderyim et al. These include Graph optimisation, draw
  order optimisation, blanking delays and sharp angle delays. See [the
  paper](https://art-science.org/journal/v7n4/v7n4pp155/artsci-v7n4pp155.pdf)
  for more details.
- **Custom frame rate**: Choose the rate at which you wish to present frames.
  **nannou_laser** will determine the number of points used to draw each frame
  using the connected DAC's points-per-second.

*Note: Higher level features like pattern generators and frame graphs are out of
scope for nannou_laser, though could be built downstream. The priority for this
crate is easy laser DAC detection and high-quality, high-performance data
streams.*

## Supported Protocols

Currently, **nannou_laser** only supports the open source [Ether Dream
DAC](https://ether-dream.com/) protocol. The plan is to progressively add
support for more protocols as they are needed by ourselves and users throughout
the lifetime of the project.

## License

Licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or
   http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT]LICENSE-MIT or
   http://opensource.org/licenses/MIT)

at your option.

**Contributions**

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.