knyst 0.5.1

Real time dynamic audio graph and synthesis library
Documentation
# Knyst examples

List all available examples using:

```shell
cargo run --example
```

## Basic examples

### Tone

This example plays a single tone

```shell
cargo run --example tone
```

### Tones

This example plays two tones. One in the left channel and one in the right channel.

```shell
cargo run --example tones
```

### Modulation

This example plays a tone modulated by a oscillator.

```shell
cargo run --example modulation
```

### Adjust frequency

This example plays a different tone in each channel, both with different modulators. You can change the frequency of the tone in the left channel by entering a numerical value.

```shell
cargo run --example adjust_frequency
```

### Sound file playback

Plays back 10 seconds of an audio file chosen by the user.

```shell
cargo run --example sound_file_playback
```

### Schedule a tone

Plays back a tone after 3 seconds of silence.

```shell
cargo run --example scheduling
```

## Envelopes

### Volume envelope

This example plays a tone with a volume envelope.

```shell
cargo run --example volume_envelope
```

### Frequency envelope

This example plays a tone with a frequency envelope.

```shell
cargo run --example frequency_envelope
```

## Advanced

### Beat Callbacks

The main function initializes and starts the audio processing system with the default settings. It sets up a graph with wavetables, modulators, and amplitude modulators, and schedules beat-accurate parameter changes. The function reads user input to allow interaction with the callback and offers options to stop the callback or quit the program.

```shell
cargo run --example beat_callbacks
```

### Filter

```shell
cargo run --example filter_test
```

### Interactive

This example aims to provide an overview of different ways that Knyst can be used. The example currently demonstrates:

- starting an audio backend
- pushing nodes
- making connections
- inner graphs
- async and multi threaded usage of KnystCommands
- scheduling changes
- interactivity
- wrapping other dsp libraries (fundsp in this case)
- writing a custom error handler

```shell
cargo run --example interactive
```

### More advanced example

```shell
cargo run --example more_advanced_example
```

## Using JACK

All the examples currently use either the JACK or the CPAL backend. If you want to use JACK, add that as a feature flag. Also uncomment the JACK backend line in the example and comment out the CPAL backend line.

```sh
cargo run --example filter_test --features jack
```