Cookie policy 
By continuing to browse the site, you're agreeing to our use of cookies. Please review our Terms of Service for further details.Got it!

Krets

Modular audio environment

Overview

KRETS is a modular environment that can be used in any DAW compatible with the AudioUnit or VST format.

The application is based on a set of modules that can be connected in different ways, where focus is on low level audio DSP processing. There are (almost) no ready-made effects to hook into an audio stream, the purpose is for the user to create these more or less from scratch.

By combining mathematical expressions and functions (available as modules) a plethora of audio effects can be created, anything from a compression algorithm to generative soundscapes.

KRETS

Ok, can I try it?

Yes! Although we're in an early development phase, we'd love if you would like to play with it. Maybe you'll find a couple of bugs, maybe you'll invent a killer distortion algorithm by accident. (true story: An accidental algorithm is actually the reason that Klevgrand started making plugins in the first place)

In order to use Krets, you'll need a Klevgrand account. It is very free and lightweight. You’ll also need a Internet connected computer to authorize your copy of KRETS.

Video

Get KRETS

This will require an account.

Stay updated

All the latest news and discussions take place in the dedicated Krets Forum.

Go to the Krets Forum
Please note
Krets is currently in a Public Alpha version, meaning two things:
  1. A lot of things may change, including functions, graphics & other features.
  2. Anything created with Krets may be lost or broken in upcoming releases.
Knowing and understanding this, you're invited to try it out yourself!
Warning
When working with signal generators and complex signal paths, there is always risk for unintentional high level audio signals. It may very well damage your hearing if things go wrong. Make sure to turn down the volume if you're unsure about what an interaction may result in.

Documentation

KRETS

This document describes how to use KRETS, a low level modular system for Audio DSP prototyping, research and experimentation. The software KRETS, concept and examples are developed by Klevgränd Produkter AB.

What is KRETS?

KRETS is a modular environment that can be used in any DAW compatible with the AudioUnit or VST format.

The application is based on a set of modules that can be connected in different ways, and focus is on low level audio DSP processing. There are (almost) no ready-made effects to hook into an audio stream, the purpose is for the user to create these more or less from scratch.

By combining mathematical expressions and functions (available as modules) a plethora of audio effects can be created, anything from a compression algorithm to generative soundscapes.


User Interface

First time open

When KRETS is opened for the first time, it’s necessary to login. Use the same email and password as on the Klevgrand site.

Overview

1 - The canvas

This is the surface that contains all modules. Use left mouse button to drag it around, and right mouse button to add new modules.

2 - Input Module

This module outputs two audio streams from the host (left and right).

3 - Modules (added by the user)

All modules can be connected to each other in different ways. Every module has a number of slots, and these slot positions specifies their kind.

The topmost row (green slots) is for audio input, the ones in the bottom are for audio output. The leftmost are for parameter data input, and the rightmost for parameter data output. It’s perfectly OK (and sometimes necessary) to connect an audio output to a parameter input, or a parameter output to an audio input.

Hovering a slot with the mouse will show additional info about the slot such as its name.

Two modules can be connected by clicking a module´s slot, and drag to the destination module´s slot. To remove a connection, just click a connected slot, move the mouse to the canvas and release.

Modules can be moved by click and drag at its name.

To remove a module, right click it and choose remove.

4 - Output module

Any signals routed to this modules input slots will be passed on to the host DAW. Note that there’s a built in brick wall limiter at 0dB in this module.

5 - Host parameters

These are the 8 parameters known by the host (that also can be automated). A module called ”Host Parameters” can be added to the surface and each one of those outputs reflects the DAW parameters.

A parameter can be renamed by clicking its name and type a new one. Note that the host won’t see this change, the name is only visible inside the plugin.

6 - Contextual info

When hovering a module with the mouse some more info about the module will show up here.

7 - Window resizing

Click and drag to resize the window.

8 - Annotations

By right-clicking the canvas, one can also create an annotation. Click the annotation text to change it, and click and drag the left side to move it. These annotations are just comments to help out understanding more complex patches.

9 - Menu

Click to reveal a list of functions to load / save / publish patches.

10 - Patch title

A saved patch’s (via the Menu) name

11 - Share

Opens a saved patch in the default browser. This link can be shared and imported via Menu/Import patch URL

User menu

New Patch

Creates a new empty patch.

My Patches

Opens a list of saved patches. Click a patch to load it. Click the rightmost X to remove a patch.

Public Patches

Opens a list of all public patches. Click a patch to load it. The list can be filtered by category and optionally only show trusted patches (created or confirmed by Klevgrand) and/or favourited patches. To make a patch a favorite, tick the corresponding box in the ”Fav” column.

Save Patch

Saves a patch. If the patch name already exist in the My Patches list, it’ll be overwritten. If the Public checkbox is set, the patch will be visible to all users in the Public Patches list.

Import Patch URL

Import a patch using a direct URL. This function also imports non-public patches.

Logout

Logs out the current user.


Examples

Examples: Getting started

This package contains a set of example patches. In the tutorial folder the following patches can be found.

Example 1: Gain plugin

This is a simple patch that maps a host parameter value to two gain modules via a splitter module. By adjusting the parameter (from host or from the plugin UI) the output gain will change between 0 and 1 (-inf dB and 0 dB).

Example 2: Tremolo

This module creates a tremolo effect (output gain is controlled by an oscillator). Note that the output of the oscillator is between -1 and 1, so the transform module ”Audio to Fac” is used to scale to a value between 0 and 1.

This value is then multiplied with a user defined ”depth value”, and then inverted making a minimal depth returning a value near 1 instead of 0.

Example 3: Haas delay

A haas delay takes a stereo signal and delays the left or right channel a few milliseconds to achieve a psychoacoustic effect making it sound panned to the opposite side of the delayed signal.

This example maps two host parameters scales them to a value between 0 and 0.01 (0 and 10 milliseconds) and uses these values as delay time. Use the host parameters ”Delay Left” and ”Delay Right” to control each channels delay time separately.

Example 4: Feedback delay

A feedback delay takes a fraction of its own delayed signal and adds it to the input of the delay.

This example converts the input signal to mono, and then splits it to a dry and a delayed signal. The merger before the delay mixes the regained (using a Multiply module) feedback signal with the to-be-delayed signal.

The wet output is controlled by an additional gain (wet level), and in parallell the dry signal is gained before they’re merged into one signal for output.

Example 5: Tempo synchronized tremolo

This example shows an alternate way of generating a sine wave using math functions and it also uses the Beat Sync module for synchronization with the host tempo and position.

The Beat Sync module outputs the current song position in beats (and fractions of a beat). We only need the fraction so the Modulo module to the right takes care of that.

Then the value gets multiplied with a User Value, which sets number of cycles of the oscillating wave per beat. This value must also be Modulo:ed with 1 to make it possible to convert safe to a radian range (Fac 2 Radian).

We’re using cosine instead of sine because it starts with 1 (sine starts with 0). This makes wave peak at the start of the beat.

The cosine value is then transformed to a factorial value between 0 and 1, and then scaled by a User Value. Before the split, the value is inverted (just as in the previous Tremolo example).


Modules

DSP Modules

Modules that generates or processes audio in some way.

OSC Sine

A sine wave generator.
Inputs:

Frequency in hertz

Phase offset (in radians)

Sync (if >=1, this module will reset)

Outputs:

Generated sine wave (value between -1 and 1)

Delay

A single tap delay. Max delay time 5 seconds.
Inputs:

Audio In

Delay time (in seconds)

Outputs delayed signal

Low Pass Filter

Simple IIR Filter
Inputs:

Audio In

Frequency

Q value

Outputs filtered signal.

High Pass Filter

Simple IIR Filter
Inputs:

Audio In

Frequency

Q value

Outputs filtered signal.

Band Pass Filter

Simple IIR Filter
Inputs:

Audio In

Frequency

Q value

Outputs filtered signal.

All Pass Filter

Simple IIR Filter
Inputs:

Audio In

Frequency

Q value

Outputs filtered signal.

Gain

Amplifier that modulates the input signal with the input parameter.
Inputs:

Audio In

Gain level (factor)

Outputs:

Amplified signal

Noise Generator

Generates white noise.
Inputs:

Gain level (factor)

Outputs:

Noise signal

Sample Delay

Delays the incoming stream with N samples.

Envelope Follower

Creates an envelope signal with adjustable attack and release time.
Inputs:

Data Input (Input signal)

Attack Time (seconds)

Release Time (seconds)

Output:

Envelope signal

Gain Computer

Calculates the output gain on an audio signal based on threshold, ratio and knee values.
Inputs:

Audio Input

Threshold (in dB)

Ratio (should be larger than 1)

Knee (in dB)

Output:

Gain in dB

Fourband Split

Splits incoming audio into 4 frequency bands. Split frequencies can be set directly on the module.

Input:

Audio Input

Outputs:

(Audio) Band 1, Band 2, Band 3, Band 4

Peak Filter

Simple IIR Filter
Inputs:

Audio In

Frequency

Q value

Outputs filtered signal.

Soft Clip

Saturates the incoming signal.
Inputs:

Audio Signal

Threshold (linear value, not dB)

Softness (gain map curve)

Output:

Processed audio Signal

Tube Saturation

Very simple tube emulation using pow.
Inputs:

Audio Signal

Gain Level (linear)

Curve (exponent)

Output:

Processed audio signal

Dry Wet Mix

Linear blend of two audio signals signals
Inputs:

Audio Signal 1

Audio Signal 2

Mix Value (0-1 where 0.5 blends both equally, 0 only outputs Sig1 and 1 Sig2)

Output:

Blended audio signal

Util Modules

Helper modules for signal routing etc.

Audio Splitter x2

Splits a signal into two identical signals (vertical)

Merger

Merges two signals into one by addition (audio mix).

Param Splitter x2

Splits a signal into two identical signals (horizontal).

Audio Splitter x4

Splits a signal into four identical signals (vertical).

Param Splitter x4

Splits a signal into four identical signals (horizontal).

Null output

Forces connected modules to process even if they’re not connected to the output module.

MS Encoder

Encodes a stereo stream (input) to mid and side signals (output).

MS Decoder

Decodes mid and side signals (input) to a stereo stream (output).

Host Values Modules

Modules outputting values provided by the host application.

Host Parameters

Outputs the 8 parameters available from the host (and right side of the UI). Note that

changes to these parameter values are smoothed with a slew function.

Sample rate

Outputs the host sample rate.

BPM

Outputs the host tempo in beats per minute.

BPM as Freq

Outputs the host tempo as a frequency (120 BPM equals 2 Hz)

Beat as Time

Outputs the host tempo as time of one beat (120 BPM equals 0.5s)

Math Modules: Arithmetics

These modules perform basic math operations and always have two inputs and one output.

Add

Adds the two input parameters and outputs the sum.

Subtract

Subtract input parameter A with B and outputs the result.

Multiply

Multiplies the two input parameters and outputs the result.

Divide

Divides input parameter A with B and outputs the result (A/B = result).

Math Modules: Functions

A set of common math functions.

Power of

Calculates the result of input parameter A to the power of B.

Min

Outputs the lowest value of the two input parameters.

Max

Outputs the highest value of the two input parameters.

Modulo

Outputs the rest of A divided with B.

sin

Outputs the sine of input parameter A (in radians)

cos

Outputs the cosine of input parameter A (in radians)

tan

Outputs the tangent of input parameter A (in radians)

Absolute

Outputs the absolute value of input parameter A.

Round

Outputs the nearest integer value of A (1.6 will output 2, 1.2 will output 1)

Floor

Outputs the largest possible integer value which is less than or equal to A.

Ceil

Outputs the smallest possible integer value which is greater then or equal to A.

Random

Generates a random value between 0 and the input parameter A.

Math Modules: Values

These modules only have one parameter output. These values are static and won’t change (except for ”User Value” that can be changed by the user).

User Value

Outputs a constant value set by the user (click the value and type a new one to change)

0 - Outputs zero.

-1 - Outputs -1

1 - Outputs 1

2 - Outputs 2

PI - Outputs PI (3.141596…..)

sqr(0.5) - Outputs the square root of 0.5

sqr(2) - Outputs the square root of 2

Math Modules: Transforms

Helper modules. The result of all these can be calculated with ordinary math modules, but these modules can be used to make the canvas more clean and easy to overview.

Neg

Outputs -1 * the input parameter value.

MIDI Note 2 Freq

Converts the input value (expected to be a MIDI note value between 1 and 127) to the notes base frequency.

Param 2 Freq

Converts a factorial (between 0 and 1) to a frequency between 20 and 20000.

Freq 2 Param

Converts a frequency value to a factorial (between 0 and 1).

Fac to Audio

Converts a factorial value to an audio signal value. Output = 2*Input - 1

Audio to Fac

Converts an audio value to a factorial value (Output = 0.5*Input + 0.5)

Fac to Radian

Converts a factorial value to radian range (Output = PI2Input)

Radian to Fac

Converts a radian value to factorial value (Output = input / (PI*2))

Fac Invert (1-V)

Inverts a factorial value (Output = 1-Input)

Range

Scales a factorial input (0-1) to the range (min / max) set in the module view.

Gain to Db

Converts linear gain to a dB value.

Db to Gain

Converts a dB value to a linear gain value.

Iterator Modules

These modules outputs values are changing in different ways and can be used for modulation, signaling, smoothing and timing.

Beat Sync

Outputs the current song position in beats (and subdivisions). To get an accurate value, the host needs to be playing.

Slew

Ramps the input value with the time input value (in seconds).

Peak

Outputs the peak value of input value. The coefficient input value decimates the peak value with the given value (peak = lastpeak * coef)

Counter

Increments the output value from 0 to 1 (and repeats) over the input value time (seconds).

Memory t-1

A one sample delay.

Capacitor

Work in progress. Does not currently work.

Signaling Modules

This category contains modules that handles conditions and triggers.

Less Than

Compares the A and B input values and outputs the C or D value.

if (A<B) return C; else return D;

Greater Than

Compares the A and B input values and outputs the C or D value.

if (A>B) return C; else return D;

Trig on Rise

Outputs 1 if the input value is greater than the previous input value. Otherwise outputs 0

Trig on Fall

Outputs 1 if the input value is less than the previous input value. Otherwise outputs 0

S&H (Sample and Hold)

”Freezes” the audio input value if the sync input is 1 (always outputs the last value). Otherwise outputs the input value.

Visualizers Modules

Different ways of showing a data signal visually. These modules endpoints must be the output module (or a Null module!) to be able to show any values.

Oscillioscope

Shows a waveform view over the signal with adaptive range.

VU Meter

Shows the signal peak level with a range between +12dB to -60dB (the list marks 0dB)

Value Meter

Shows the signal average value as text, and also indicates its value graphically if the value is near audio level. Middle equals 0, left side -1 and right side +1.

Value Monitor

Displays a heartbeat-monitor-like curve over the incoming signal. Values (0-1)