{"id":13418218,"url":"https://github.com/grame-cncm/faust","last_synced_at":"2025-05-14T00:07:26.715Z","repository":{"id":38417727,"uuid":"72926839","full_name":"grame-cncm/faust","owner":"grame-cncm","description":"Functional programming language for signal processing and sound synthesis","archived":false,"fork":false,"pushed_at":"2025-05-04T08:10:14.000Z","size":379125,"stargazers_count":2719,"open_issues_count":211,"forks_count":347,"subscribers_count":89,"default_branch":"master-dev","last_synced_at":"2025-05-04T09:20:20.407Z","etag":null,"topics":["audio","c","c-plus-plus","cmajor","compiler","cpp","csharp","dlang","dsp","faust","functional-programming","jax","jsfx","julia","julia-language","llvm","rnbo","rust","wasm"],"latest_commit_sha":null,"homepage":"http://faust.grame.fr","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grame-cncm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-11-05T13:09:11.000Z","updated_at":"2025-05-04T08:10:18.000Z","dependencies_parsed_at":"2023-02-14T15:46:27.384Z","dependency_job_id":"9d6faa8a-e084-407f-b26e-2d1bcbfc6bef","html_url":"https://github.com/grame-cncm/faust","commit_stats":null,"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grame-cncm%2Ffaust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grame-cncm%2Ffaust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grame-cncm%2Ffaust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grame-cncm%2Ffaust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grame-cncm","download_url":"https://codeload.github.com/grame-cncm/faust/tar.gz/refs/heads/master-dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043732,"owners_count":22005006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","c","c-plus-plus","cmajor","compiler","cpp","csharp","dlang","dsp","faust","functional-programming","jax","jsfx","julia","julia-language","llvm","rnbo","rust","wasm"],"created_at":"2024-07-30T22:00:59.823Z","updated_at":"2025-05-14T00:07:21.707Z","avatar_url":"https://github.com/grame-cncm.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","C++","C/C++","Uncategorized","c-plus-plus","DSP","Domain Specific Languages (DSLs)"],"sub_categories":["Uncategorized"],"readme":"# Faust - Programming Language for Audio Applications and Plugins\n\n## Grame, Centre National de Creation Musicale: \u003chttps://www.grame.fr\u003e\n\nBuild status: [![Ubuntu](https://github.com/grame-cncm/faust/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/grame-cncm/faust/actions/workflows/ubuntu.yml) [![MacOS](https://github.com/grame-cncm/faust/actions/workflows/macos.yml/badge.svg)](https://github.com/grame-cncm/faust/actions/workflows/macos.yml) [![Windows](https://github.com/grame-cncm/faust/actions/workflows/windows.yml/badge.svg)](https://github.com/grame-cncm/faust/actions/workflows/windows.yml)\n\n## Introduction\n\nFaust (Functional Audio Stream) is a functional programming language specifically designed for real-time signal processing and synthesis. A distinctive characteristic of Faust is that it is fully compiled.\n\nThe Faust compiler translates DSP specifications into very efficient code for various languages (C++, C, JAVA, LLVM IR, WebAssembly etc.) working at sample level. It targets high-performance signal processing applications, libraries, and audio plug-ins for a variety of audio platforms and standards. A same Faust specification can be used to easily generate various kinds of native standalone applications, iOS and Android apps, as well as Csound, LADSPA, Max/MSP, PD, Q, SuperCollider, VST, AU plugins, etc. (see the README in the `/architecture` folder for an exhaustive list).\n\nWhile there are Faust contributors everywhere across the globe, Faust is mainly being developed at Grame, Centre National de Creation Musicale (\u003chttps://www.grame.fr\u003e), its birthplace.\n\n## Versions and Branches\n\nThe Faust distribution can be downloaded on the Faust Github repository: \u003chttps://github.com/grame-cncm/faust\u003e. Official release packages are also available here: \u003chttps://github.com/grame-cncm/faust/releases\u003e.\n\nIn the following subsections, details about the branches of the repository are given.\n\n### `master`\n\n`master` is the main Faust branch. It can compile in different languages: C, C++, JAVA, LLVM IR, WebAssembly etc. Thanks to its ability to generate LLVM IR and by using LLVM JIT, Faust is \"embeddable\" in any C++ program through a library called `libfaust`, which is needed by some sister projects of Faust such as FaustLive, FaucK, faustgen~, etc.\n\n### `master-dev` (Preferred Development Branch)\n\n`master-dev` is the development sub-branch of `master`. It is used by Faust developers to commit their changes and can be considered as \"the main development branch.\" The goal is to make sure that `master` is always functional. Merges between `master-dev` and `master` are carried out typically where doing a release.\n\nMore experimental branches are also available but are not documented here.\n\n## Overview of the Faust Distribution\n\nThis is an overview of the content of the top-level folders of the Faust distribution. Most of these folders contain their own README describing their content in more details.\n\n\tarchitecture/          : the architecture files currently supported\n\tbuild/                 : build tools and scripts (cmake based)\n\tbenchmark/             : tools to measure the impact of various compiler options\n\tcompiler/              : sources of the Faust compiler\n\tdebian/                : files for Debian installation\n\tdocumentation/         : Faust developer's documentation\n\texamples/              : Faust programs examples organized by categories\n\tinstaller/             : various installers for Linux distribution\n\tlibraries/             : DSP libraries\n\tsyntax-highlighting/   : support for syntax highlighting for several editors\n\ttests/                 : various tests\n\ttools/                 : additional easy-to-use scripts (faust2...) to produce binaries and plugins\n\twindows/               : Windows related resources\n\n## Libraries and additional dependencies\n\nFaust libraries are now in a [separated project](https://github.com/grame-cncm/faustlibraries) and included as a git submodule. \n\nThe [oboe](https://github.com/google/oboe) project is included as submodule in two different places: `architecture/android/app/oboe` and `architecture/smartkeyboard/app/oboe`. \n\nThe [faust2ck](https://github.com/ccrma/faust2ck) project is included as submodule in `tools/faust2ck`. \n\nThe [py2max](https://github.com/shakfu/py2max) project is also included as submodule in `architecture/max-msp/py2max`. \n\nThe [node-matcher-plugin](https://github.com/nuchi/node-matcher-plugin) project is also included as submodule in `node-matcher-plugin`. \n\nThese submodules are synchronized from time to time in the main Faust repository using the following commands:\n\n    git submodule update --remote --merge\n    git add libraries tools/faust2ck architecture/android/app/oboe architecture/smartKeyboard/android/app/oboe architecture/max-msp/py2max node-matcher-plugin\n    git commit -m \"Faust updated to the latest version of the libraries, faust2ck, oboe, py2max, node-matcher-plugin\"\n    git push\n\nOr to synchronize the *libraries* folder only:\n\n    git submodule update --remote --merge libraries\n    git add libraries \n    git commit -m \"Faust updated to the latest version of libraries.\"\n    git push\n    \nOr to synchronize the *faust2ck* folder only:\n\n    git submodule update --remote --merge tools/faust2ck\n    git add tools/faust2ck \n    git commit -m \"Faust updated to the latest version of faust2ck.\"\n    git push\n\nOr to synchronize the *py2max* folder only (note that current used stable py2max version is v0.1.1):\n\n    git submodule update --remote --merge architecture/max-msp/py2max\n    git add architecture/max-msp/py2max \n    git commit -m \"Faust updated to the latest version of py2max.\"\n    git push\n    \nOr to synchronize the *node-matcher-plugin* folder only:\n\n    git submodule update --remote --merge node-matcher-plugin\n    git add node-matcher-plugin\n    git commit -m \"Faust updated to the latest version of node-matcher-plugin.\"\n    git push\n\n## Compilation and Installation\n\nSince release 2.5.18, Faust compilation and installation is based on [CMake](https://cmake.org/). For details about compilation, you should look at the [Faust wiki pages](https://github.com/grame-cncm/faust/wiki) or go directly to the [simple tutorial](https://github.com/grame-cncm/faust/wiki/BuildingSimple) to compile and install.\n\n## Using the Faust Examples\n\nThe `/examples` folder contains dozen of example Faust codes organized by categories. There are many options to use them.\n\n### Online Faust Editor\n\nThe [Online Faust Editor](https://fausteditor.grame.fr) is a zero-conf tool that provides all the compilation services, including binaries generation for all the supported platforms and architectures.\n\n### Online Faust IDE\n\nThe [Online Faust IDE](https://faustide.grame.fr) is a zero-conf tool that provides all the compilation services, including binaries generation for all the supported platforms and architectures, but also various utilities for signal processing development.\n\n### Faust Playground\n\n[Faust Playground](https://faustplayground.grame.fr/) is an online tool to compile and use Faust code directly in a web browser. To use a Faust example from the `/examples` folder, just drag-and-drop it in the work space and it should work right away!\n\n### FaustLive\n\n[FaustLive](https://github.com/grame-cncm/faustlive) is a program that was designed to facilitate the prototyping of Faust codes. It embeds the LLVM powered dynamic libfaust compiler allowing you to very rapidly compile Faust codes on your computer. Binaries and installation packages of FaustLive are available for [Linux, Windows and OSX](https://github.com/grame-cncm/faustlive/releases).\n\n### `faust2...` Scripts and Programs\n\nThe `faust2...` scripts and programs are command line tools allowing to compile Faust codes to any of the supported Faust targets (\"architectures\"). They are placed on your system during the Faust installation process. The fastest way to get an exhaustive list of all of them is to open a terminal window, type `faust2`, and then press the Tab key for auto-completion. For example, to compile a Faust code as a JACK application with a Qt interface, run:\n\n\tfaust2jaqt yourCode.dsp\n\nThe most commonly used `faust2` scripts are:\n\n    faust2alqt              : ALSA application with Qt UI\n    faust2ladspa            : LADSPA plug-in\n    faust2pdf               : pdf block diagram\n    faust2supercollider     : SuperCollider external\n    faust2alsa              : ALSA application with GTK UI\n    faust2faustvst          : VST plug-in\n    faust2lv2               : LV2 plug-in\n    faust2plot              : command line program to debug DSP (sample plotting, etc.)\n    faust2svg               : SVG block diagram\n    faust2alsaconsole       : ALSA command line program\n    faust2mathdoc           : automatic pdf mathematical documentation\n    faust2png               : png block diagram\n    faust2android           : Android app\n    faust2graph             : svg graph\n    faust2puredata          : PureData external\n    faust2api               : API generator\n    faust2msp               : MaxMSP 5 external and patch\n    faust2max6              : MaxMSP 6 (and later) external and patch\n    faust2ios               : iOS app\n    faust2ros               : ROS app\n    faust2au                : Audio Unit plugin\n    faust2rosgtk            : ROS app with GTK UI\n    faust2bela              : BELA program\n    faust2jack              : JACK application with GTK UI\n    faust2netjackconsole    : NetJack command line program\n    faust2rpialsaconsole    : Raspberry Pi ALSA command line program\n    faust2caqt              : CoreAudio application with Qt UI\n    faust2jackconsole       : JACK command line program\n    faust2netjackqt         : NetJack application with Qt UI\n    faust2rpinetjackconsole : Raspberry Pi JACK command line program\n    faust2caqtios           : iOS app with Qt UI\n    faust2octave            : Octave script\n    faust2csound            : CSOUND Opcode\n    faust2owl               : OWL Program\n    faust2sig               : SVG signal\n    faust2jaqt              : JACK application with Qt UI\n\nObviously, the corresponding dependencies for each of them must be installed on your system for compilation to be successful. For example, if you use `faust2jaqt`, JACK and Qt libraries must be installed.\n\n## Documentation and Resources\n\n* `/documentation/faust-quick-reference.pdf` contains the most up-to-date documentation of Faust.\n* `/libraries/doc/library.pdf` contains the documentation of the Faust DSP libraries.\n* The [Faust website](https://faust.grame.fr) contains useful resources around Faust.\n* The [Faust online course](https://ccrma.stanford.edu/~rmichon/faustWorkshops/course2015/) or the [Faust Hero in 2 Hours tutorial](https://ccrma.stanford.edu/~rmichon/faustTutorials/#faust-hero-in-2-hours) might be good starting points for beginners.\n* [Julius Smith's website](https://ccrma.stanford.edu/~jos) is an incredible resource on various topics around DSP and Faust.\n\n## Acknowledgements\n\nMany persons have been contributing to the Faust project by\nproviding code for the compiler, architecture files, libraries,\nexamples, documentation, scripts, bug reports, ideas, etc.\n\nI would like to thank them and especially: Fons Adriaensen, Tiziano\nBole, Baktery Chanka, Thomas Charbonnel, Damien Cramet, Etienne\nGaudrin, Albert Graef, Stefan Kersten, Victor Lazzarini, Matthieu\nLeberre, Mathieu Leroi, Kjetil Matheussen, Remy Muller, Sampo\nSavolainen, Nicolas Scaringella, Stephen Sinclair, Travis Skare,\nJulius Smith, as well as my colleagues at GRAME, in particular :\nDominique Fober, Stephane Letz and Karim Barkati, and from the\nASTREE project : Jerome Barthelemy (IRCAM), Alain Bonardi (IRCAM),\nRaffaele Ciavarella (IRCAM), Pierre Jouvelot (Ecole des\nMines/ParisTech), Laurent Pottier (U. Saint-Etienne)\n\n## Questions and suggestions\n\nIf you have questions suggestions and comments, or if you want to\ncontribute to the project, two mailing lists are available:\n- [Development List](https://lists.sourceforge.net/lists/listinfo/faudiostream-devel)\n- [Users List](https://lists.sourceforge.net/lists/listinfo/faudiostream-users)\n\n[Yann Orlarey](https://github.com/orlarey)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrame-cncm%2Ffaust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrame-cncm%2Ffaust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrame-cncm%2Ffaust/lists"}