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.
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 the relevant information.
While the option is turned 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 Input is available for Chrome and Firefox browsers. 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.
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.
The polyphonic mode can be activated by selecting a number of voices in the Poly Voices menu on the left. Standard Polyphony Parameters have to be used in the DSP voice.
A global effect can be added using the effect = foo;
convention.
Tools to display audio signals are available in the left panel:
-
Mode can be Offline, Continuous, On Event (to synchronize visualisation with control event changes), and Manual (to be triggered with the Plot (Snapshot) button at the bottom)
-
Samples changes the number of displayed samples (so corresponding to the window width)
-
Sample Rate displays the currently selected audio device sample rate
-
FFT Size and FFT Overlap value are used when using Oscilloscope and Spectroscope modes
In the Plot Tab in the middle section, you can switch the visualization between Data, Interleaved, Oscilloscope and Spectroscope. Note that when used with On Event mode, values in the Data visualisation mode only change at sample 128 (since On Event mode plots from 128 samples before the event).
Both input and output have an audio analyzer in the right panel. In the small audio output window at the bottom, 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.
The Diagram tab allows displaying the circuit SVG diagram. You can navigate inside it by clicking on the dark blue part to go down in the circuit hierarchy, or clicking on the diagram border to go up in the circuit hierarchy.
The recommended browsers are the latest versions of Chrome and Firefox for AudioWorklet and MIDI, but it requires an https connection to use the audio inputs.
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.
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.
You'll have to raise the package version number in package.json
before npm run build
to properly work.
Deployment remains an operation that must take place under the user control. It must be made from the master branch. The procedure consists of:
- generating the site
- copying the contents of the
dist
directory into thedocs
directory - 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.
- https://faustide.grame.fr: the official link on the Faust IDE website
- https://github.com/grame-cncm/faustide: the github repository
- 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 and Firefox
- a bug in the Safari/Webkit implementation (see https://bugs.webkit.org/show_bug.cgi?id=220038) makes the AudioWorklet mode fail or behave incorrectly. 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