All Projects → grame-cncm → faustide

grame-cncm / faustide

Licence: other
Faust IDE (Integrated Development Environment)

Programming Languages

Faust
14 projects
typescript
32286 projects
SCSS
7915 projects
HTML
75241 projects

Labels

Projects that are alternatives of or similar to faustide

MIMS
PyQt application for creating mass interaction models and compiling them into Faust dsp code, or ~gen objects (for Max/MSP)
Stars: ✭ 22 (-50%)
Mutual labels:  faust
faustgen-supercollider
Livecode Faust in SuperCollider using an embedded Faust compiler.
Stars: ✭ 25 (-43.18%)
Mutual labels:  faust
deep cage
code for "Neural Cages for Detail-Preserving 3D Deformations"
Stars: ✭ 115 (+161.36%)
Mutual labels:  faust
string-machine
Digital model of electronic string ensemble instrument
Stars: ✭ 38 (-13.64%)
Mutual labels:  faust
faustplayground
Online platform to combine and run Faust DSP modules, test it here:
Stars: ✭ 21 (-52.27%)
Mutual labels:  faust
faustlive
No description or website provided.
Stars: ✭ 55 (+25%)
Mutual labels:  faust
TD-Faust
FAUST (Functional Audio Stream) for TouchDesigner
Stars: ✭ 38 (-13.64%)
Mutual labels:  faust
juce faustllvm
JUCE Module for the libfaust JIT compiler
Stars: ✭ 32 (-27.27%)
Mutual labels:  faust
pMix2
pMix - a preset interpolator, plug-in chainer and Faust IDE written with JUCE
Stars: ✭ 84 (+90.91%)
Mutual labels:  faust

Faust IDE Badge

The online Faust IDE can be used to edit, compile and run Faust code from any recent Web Browser with webassembly support. It works completely on the client side and it is therefore very convenient for situations with many simultaneous users (workshops, classrooms, etc.). It embeds the latest version of the Faust compiler with an efficient webassembly backend and offers polyphonic MIDI support.

Features

Code Editing

The editor engine is based on Monaco Editor. It provides syntax highlighting, auto completion, code hinting and direct access to the online documentation. The documentation command (Ctrl-D) uses the function name at the cursor position to locate to the relevant information.

Auto-Compiling

While the option is turning on, the diagram or the DSP UI will automatically be updated from the code. The editor will also try to tell if there is an error in your code.

MIDI API

MIDI Input is available for Chrome Browser, you can also use the computer keyboard to input MIDI notes. We are using key map as Ablelon Live: A-line and Q-line for keys, ZX to move octave, CV to change velocity.

Audio Input

You can choose your audio device or use an audio file to simulate the audio input of DSP. Drap and drop your file to the waveform below to substitute the file.

Analyzer

Both input and output have an audio analyzer. You can switch the visualization between oscilloscope and spectroscope, or change buffer size and channel. Three numbers showing at right side are current value, estimated frequency and RMS.

Recommended Browsers

The recommended browsers are the latest versions of Chrome for AudioWorklet, MIDI, but it requires an https connection to use the audio inputs.

Building

Firstly ensure that you have Git and Node.js installed.

Clone a copy of the repo then change to the directory:

git clone https://github.com/grame-cncm/faustide.git --depth 1
cd faustide

Beware: on Windows, before cloning the repository, and for the libfaust-wasm.data file line ending to be correctly handled, you'll have to do:

git config --global core.autocrlf false

Install dev dependencies:

npm install

Possibly:

npm update

To build everything (using Webpack 4, Babel 7, TypeScript), this will produce dist/index.js

npm run build

To test, put the directory in a local server, then open page: ./dist/index.html

If you need to update the editor's version using git pull, as the repository has other dependencies hosted on Github, you may run npm update to make sure everything is up to date.

Launching the local editor

A local HTTP server has to be started with npm run serve (or something similar), then use http://127.0.0.1:8000/dist/ to launch the local editor.

Versioning

You'll have to raise the package version number in package.json before npm run build to properly work.


Deployment

Deployment remains an operation that must take place under the user control. It must be made from the master branch. The procedure consists of:

  1. generating the site
  2. copying the contents of the dist directory into the docs directory
  3. checking the proper functioning of the site from the docs directory

For 1), see Building section above For 2), you can run:

npm run publish

If you run the copy manually, BE CAREFUL not to delete the files CNAME and .nojekyll.

For 3), you can launch a local web server from the docs directory:

npm run serve-docs

WARNING: the following step is mandatory for the deployed site to properly work !

Once the site is validated add (using git add docs) and commit the entire contents of the docs directory then push to git.

Useful links

Known problems and solutions

  • evaluating a heavy DSP program may hang the IDE, which will stay in this state even if you open it again, if the Real-time Compile checkbox was set. You can deactivate the checkbox by opening the IDE with the https://faustide.grame.fr/?realtime_compile=0 URL
  • MIDI is only working in Chrome
  • a bug in the Safari/Webkit implementation (see https://bugs.webkit.org/show_bug.cgi?id=220038) makes the AudioWorklet mode fails. You'll have to use the old ScriptProcessor mode for now
  • the ExpressVPN browser extension runs a background loop when "Not Connected" which causes any instantiated FaustUI element to fail after a few seconds. Disabling the extension will solve this problem (not tested on Safari)
  • some users report random problems when exporting the code, like missing labels when exporting on osx/coreaudio-qt. Clearing the browser's cache and cookies can fix the issue
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].