{"id":13418109,"url":"https://github.com/agraef/pd-faustgen","last_synced_at":"2025-03-15T02:32:41.237Z","repository":{"id":50266883,"uuid":"284332753","full_name":"agraef/pd-faustgen","owner":"agraef","description":"The FAUST compiler in a box","archived":false,"fork":true,"pushed_at":"2024-07-21T18:33:38.000Z","size":635,"stargazers_count":16,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"faustgen2","last_synced_at":"2024-07-31T22:41:11.746Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"CICM/pd-faustgen","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agraef.png","metadata":{"files":{"readme":"README-CICM.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-01T20:20:04.000Z","updated_at":"2024-07-17T01:49:06.000Z","dependencies_parsed_at":"2023-02-14T12:15:41.776Z","dependency_job_id":null,"html_url":"https://github.com/agraef/pd-faustgen","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agraef%2Fpd-faustgen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agraef%2Fpd-faustgen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agraef%2Fpd-faustgen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agraef%2Fpd-faustgen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agraef","download_url":"https://codeload.github.com/agraef/pd-faustgen/tar.gz/refs/heads/faustgen2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243675169,"owners_count":20329218,"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":[],"created_at":"2024-07-30T22:00:58.566Z","updated_at":"2025-03-15T02:32:41.219Z","avatar_url":"https://github.com/agraef.png","language":"C","funding_links":[],"categories":["C","Pure Data external development \u0026 scripting"],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e\n  \u003cimg width=\"50\" alt=\"FaustLogo\" img src=\"https://user-images.githubusercontent.com/1409918/64951909-41544a00-d87f-11e9-87dd-720e0f8e1570.png\"/\u003e faustgen~ \u003cimg width=\"40\" alt=\"PdLogo\" img src=\"https://user-images.githubusercontent.com/1409918/64951943-5335ed00-d87f-11e9-9b52-b4b6af47d7ba.png\"/\u003e\n  \u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    The FAUST compiler embedded in a Pd external\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://travis-ci.org/CICM/pd-faustgen/builds\"\u003e\u003cimg src=\"https://img.shields.io/travis/CICM/pd-faustgen.svg?label=travis\" alt=\"Travis CI\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://ci.appveyor.com/project/CICM/pd-faustgen/history\"\u003e\u003cimg src=\"https://img.shields.io/appveyor/ci/CICM/pd-faustgen.svg?label=appveyor\" alt=\"Appveyor CI\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://app.codacy.com/project/CICM/pd-faustgen/dashboard\"\u003e\u003cimg src=\"https://api.codacy.com/project/badge/Grade/a89aaf703bf045a383ff4a28d6d4b173\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n## Presentation\n\nThe **faustgen~** object is an external with the [FAUST](http://faust.grame.fr/about/) just-in-time (JIT) compiler embedded that allows to load, compile and play FAUST files within the audio programming environment [Pure Data](http://msp.ucsd.edu/software.html). FAUST (Functional Audio Stream) is a functional programming language specifically designed for real-time signal processing and synthesis developed by the [GRAME](http://www.grame.fr/). The FAUST JIT compiler - built with [LLVM](https://llvm.org/) - brings together the convenience of a standalone interpreted language with the efficiency of a compiled language. The **faustgen~** object is a very first version with elementary features, any help and any contribution are welcome.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://vimeo.com/282672255\"\u003e\u003cimg width=\"440\" alt=\"video1\" src=\"https://user-images.githubusercontent.com/1409918/44655622-1be76a80-a9f6-11e8-90dc-ce01d6734a28.png\"\u003e\u003c/a\u003e \u003ca href=\"https://vimeo.com/286662395\"\u003e\u003cimg width=\"440\" alt=\"video2\" src=\"https://user-images.githubusercontent.com/1409918/44655623-1be76a80-a9f6-11e8-86e0-4519609f2e4c.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n**Dependencies:**\n\n- [LLVM](http://llvm.org)\n- [FAUST](https://github.com/grame-cncm/faust.git)\n- [Pure Data](https://github.com/pure-data/pure-data.git)\n- [CMake](https://cmake.org/)\n- [pd.build](https://github.com/pierreguillot/pd.build.git)\n\n## Compilation\n\nThe FAUST compiler requires LLVM 9.0.0 backend (or higher). Once LLVM is installed on your machine, you can use CMake to generate a project that will compile both the FAUST library and the Pure Data external. Then you can use Deken to release the external.\n\n#### Installing LLVM\n\nThe fastest solution to install LLVM is to download the precompiled binaries from the [LLVM website](http://releases.llvm.org). For example, on the Travis CI for MacOS, we assume that the binaries are installed in the llvm folder at the root of the project:\n\n```\ncurl -o ./llvm.tar.xz -L https://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz\ntar xzf ./llvm.tar.xz \u0026\u0026 mv clang+llvm-9.0.0-x86_64-darwin-apple llvm\n```\nor a for a linux system\n```\ncurl -o ./llvm.tar.gz https://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz\ntar xvf ./llvm.tar.gz \u0026\u0026 mv clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04 llvm\n```\nYou can also use HomeBrew or MacPorts on macOS or APT on Linux the compilation of the sources last around 50 minutes and in this case, you change the LLVM_DIR with the proper location.\n\nOn Windows, you must compile from sources using the static runtime library. Compiling LLVM with the Microsoft Visual Compiler requires to use the static runtime library, for example:\n```\ncd llvm-9.0.0.src \u0026\u0026 mkdir build \u0026\u0026 cd build\ncmake .. -G \"Visual Studio 16 2019\" -DLLVM_USE_CRT_DEBUG=MTd -DLLVM_USE_CRT_RELEASE=MT -DLLVM_BUILD_TESTS=Off -DCMAKE_INSTALL_PREFIX=\"./llvm\" -Thost=x64\ncmake --build . --target ALL_BUILD (--config Debug/Release)\ncmake --build . --target INSTALL (optional)\n```\nYou can also use the pre-compiled libraries used on the Appveyor CI.\n\n#### Compiling the FAUST library and the Pd external\n\n```\ngit submodule update --init --recursive\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build .\n```\nUseful CMake options:\n- `USE_LLVM_CONFIG` to disable default LLVM location for FAUST (for example: `-DUSE_LLVM_CONFIG=off`).\n- `LLVM_DIR` to define LLVM location for FAUST and the Pd external (for example: `-DLLVM_DIR=./llvm/lib/cmake/llvm`).\n\nsee also the files `.travis.yml` and `appveyor.yml`.\n\n#### Publishing with Deken\n\nOnce the binaries are compiled or uploaded with Travis and Appveyor to the releases section of GitHub, the external can be published using [Deken](https://github.com/pure-data/deken). First of all, you must have an account on the website https://puredata.info and the [Deken plugin for developers](https://github.com/pure-data/deken/blob/master/developer/README.md) installed. On Windows run the script FaustDeken.bat located in the deken subdirectory with the version of the external, for example: `FaustDeken 0.0.1`. On Unix systems, run the script FaustDeken.sh the deken subdirectory with the version of the external, for example: `FaustDeken.sh 0.0.1`. Once the deken files are prepared, you can upload the files to puredata.info using  `FaustDeken.sh upload 0.0.1`.\n\n## Credits\n\n**FAUST institution**: GRAME  \n**FAUST website**: faust.grame.fr  \n**FAUST developers**: Yann Orlarey, Stéphane Letz, Dominique Fober and others  \n\n**faustgen~ institutions**: CICM - ANR MUSICOLL  \n**faustgen~ website**: github.com/CICM/pd-faustgen  \n**faustgen~ developer**: Pierre Guillot\n\n## Legacy\n\nThis **faustgen~** object for Pd is inspired by the **faustgen~** object for Max developed by Martin Di Rollo and Stéphane Letz.\n\nAnother **faust~** object has been developed by Albert Graef using the programming language [Pure](https://github.com/agraef/pure-lang).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagraef%2Fpd-faustgen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagraef%2Fpd-faustgen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagraef%2Fpd-faustgen/lists"}