Edge of Chaos


This repository contains libraries including some essential building blocks for the implementation of musical complex adaptive systems in the Faust programming environment. (https://faust.grame.fr.)

It includes a set of time-domain algorithms, some of which are original, for the processing of low-level and high-level information as well as the processing of sound using standard and non-conventional techniques. It also includes functions for the realisation of networks with different topologies, linear and nonlinear mapping strategies to render positive and negative feedback relationships, and different kinds of energy-preserving techniques for the stability of self-oscillating systems.

Edge of Chaos is being developed and maintained by Dario Sanfilippo, and it is the library through which he creates his music.



sanfilippo.dario at gmail dot com

Overview of the library modules

allEOC.lib:         access to all Edge of Chaos library modules from a 
                    single point.

auxiliaryEOC.lib:   auxiliary functions library for testing, analysis, 
                    inspection, and debugging.

delaysEOC.lib:      delay line functions library with 
                    samplerate-independent delay parameters based on 
                    aust's delay lines for integer and fractional delays.

edgeofchaos.lib:    this file provides access to all the Edge of Chaos 
                    library modules through a series of environments.

filtersEOC.lib:     filters library containing bilinear transform and 
                    topology preserving transform implementations 
                    (zero-delay feedback) of allpass, lowpass, highpass, 
                    bandpass, bandstop, shelving, and state-variable 
                    filters. Furthermore, there are implementations of 
                    crossovers, comb-integrator circuits, analytic filters, 
                    and integrators, among others.

informationEOC.lib: information processing functions library including 
                    low-level and high-level algorithms both based on 
                    hard-coded and adaptive mechanisms. The low-level 
                    functions provide time-domain techniques for feature 
                    extraction that are normally based on FFT processing, 
                    such as spectral centroid and spectral flatness 
                    (noisiness). The high-level functions provide an 
                    analysis of the state space of low-level information 
                    signals to determine, based on notions of complexity 
                    theory and music perception, characteristics such as 
                    dynamicity, heterogeneity, and complexity of audio 

mathsEOC.lib:       math library containing functions for statistics, 
                    linear and nonlinear fuzzy logic, interpolators, 
                    network topologies, matrices, linear and nonlinear 
                    mapping, windowing functions, hysteresis, angular 
                    frequency, and several time constants for exponential 
                    decays in one-pole systems.

oscillatorsEOC.lib: mainly oscillators based on band-limited impulse 
                    trains and an excellent recursive quadrature

outformationEOC.lib:audio processing library containing standard and 
                    original techniques for audio transformations.
                    The functions include delay-line granulators with 
                    non-homogenous windowing, windowless granulation 
                    through zero-crossing detection, modulations, 
                    FDN-based processes, and time-variant transfer 
                    functions. The library also includes dynamical
                    systems such as chaotic systems and cellular

stabilityEOC.lib:   stability processing functions including standard 
                    dynamics processing as well as self-regulating designs.

Coding conventions

ā€“ 80 characters per line.

ā€“ Infix syntax should be used when possible to increace conciseness.

ā€“ Spacing should be used between operands and operators to increase readability.

ā€“ Spacing should be used between operators and arguments for partial application with infix operators (see the Faust manual for a complete list of such operators).

ā€“ No spacing should be used between operators and arguments for partial application with functions.

ā€“ Spacing should be used between the first operand and the parallel composition operator (comma operator), while the second operand should be on a new line indented with the first one.

ā€“ When separating arguments, there should be no spacing between the comma and the argument on its left to distinguish it from the parallel composition operator (comma).

ā€“ The recursive composition operator and its right-operand should be on a new line and indented with the operator where the recursion is connected.


This repository contains the Faust libraries for sound and information processing that I use to implement my music complex adaptive systems.

Edgeofchaos Info

ā­ Stars 23
šŸ”— Source Code github.com
šŸ•’ Last Update 10 months ago
šŸ•’ Created 2 years ago
šŸž Open Issues 0
āž— Star-Issue Ratio Infinity
šŸ˜Ž Author dariosanfilippo