# triolet.worker

> triolet.worker

Latest version **1.1.0** (published 2015-12-31) · MIT license · 0 weekly downloads

## Install

```sh
npm install triolet.worker
pnpm add triolet.worker
yarn add triolet.worker
bun add triolet.worker
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2015-12-31 |
| First published | 2015-12-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 5 |
| Author | Nao Yonamine |
| Maintainers | mohayonao |
| Keywords | triolet |

## Links

- npm: https://www.npmjs.com/package/triolet.worker
- Repository: https://github.com/mohayonao/triolet
- Homepage: https://github.com/mohayonao/triolet/tree/master/triolet.worker
- Issues: https://github.com/mohayonao/triolet/issues
- npm.io page: https://npm.io/package/triolet.worker

## Dependencies (2)

- [object-assign](https://npm.io/package/object-assign.md) ^4.0.1
- [triolet._config](https://npm.io/package/triolet._config.md) ^1.0.0

## Recent versions

- 1.1.0 (latest) — 2015-12-31
- 1.0.0 — 2015-12-29
- 0.8.0 — 2015-12-29
- 0.7.4 — 2015-12-29
- 0.7.3 — 2015-12-29
- 0.7.2 — 2015-12-29
- 0.7.1 — 2015-12-29
- 0.7.0 — 2015-12-29
- 0.6.0 — 2015-12-29
- 0.5.0 — 2015-12-28
- 0.4.0 — 2015-12-27
- 0.3.0 — 2015-12-27

## README

# triolet.worker
[![NPM Version](http://img.shields.io/npm/v/triolet.worker.svg?style=flat-square)](https://www.npmjs.org/package/triolet.worker)
[![License](http://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](http://mohayonao.mit-license.org/)

`DRIVER` in the main thread; `API` and `DSP` in the worker thread. This architecture works on the browser.

[![triolet.worker](https://raw.githubusercontent.com/wiki/mohayonao/triolet/images/triolet.worker.png)](https://github.com/mohayonao/triolet/tree/master/triolet.worker)

## Installation

```
$ npm install triolet.worker
```

## Example

in the main thread

```js
const triolet = require("triolet.worker/client")();
const Driver = require("pico.driver.webaudio");

let audioContext = new AudioContext();

triolet.compose({ workerPath: "/path/to/worker", driver: new Driver() });
triolet.setup({ context: audioContext, bufferLength: 1024 });

triolet.sendToWorker({ type: "start" });
```

in the worker thread

```js
const triolet = require("triolet.worker/worker")(self);
const API = require("./api");
const DSP = require("./dsp");

triolet.compose({ api: new API(), dsp: new DSP() });

triolet.recvFromClient = (e) => {
  if (e.type === "start") {
    triolet.start();
  }
};
```

## API
### client/Triolet
- `constructor()`

#### Instance attributes
- `driver: TrioletDriver`
- `sampleRate: number` _(implicit readonly)_
- `bufferLength: number` _(implicit readonly)_
- `state: string` _(implicit readonly)_

#### Instance methods
- `compose(spec: object): self`
- `setup(opts: object): self`
- `start(): self`
- `stop(): self`
- `sendToWorker(data: any): void`

### worker/Triolet
- `constructor(self: DedicatedWorkerGlobalScope)`

#### Instance attributes
- `api: TrioletAPI`
- `dsp: TrioletDSP`
- `sampleRate: number` _(implicit readonly)_
- `bufferLength: number` _(implicit readonly)_
- `state: string` _(implicit readonly)_

#### Instance methods
- `compose(spec: object): self`
- `setup(opts: object): self`
- `start(): self`
- `stop(): self`
- `sendToAPI(data: any): void`
- `sendToDSP(data: any): void`
- `recvFromClient(data: any): void`

## Interfaces

- [triolet.api](https://github.com/mohayonao/triolet/tree/master/triolet.api)

```
interface TrioletAPI {
  optional setup(opts: object) => void;
  optional start() => void;
  optional stop() => void;
  process(inNumSamples: number) => void;
}
```

- [triolet.dsp](https://github.com/mohayonao/triolet/tree/master/triolet.dsp)

```
interface TrioletDSP {
  optional setup(opts: object) => void;
  optional start() => void;
  optional stop() => void;
  process(bufL: Float32Array, bufR: Float32Array) => void;
}
```

## Audio Drivers

- [pico.driver.webaudio](https://github.com/mohayonao/pico.driver/tree/master/pico.driver.webaudio)

## License

MIT

---
_Source: https://npm.io/package/triolet.worker · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
