FAUST (programming language): Difference between revisions

Content deleted Content added
m clean up, typo(s) fixed: doesn’t → doesn't (3), ’s → 's
Add category
 
(2 intermediate revisions by 2 users not shown)
Line 11:
| operating system = [[Linux]], [[OS X]], [[Microsoft Windows|Windows]], [[Unix]]
| genre = Functional programming language for audio signal processing
| repo = {{URL|https://github.com/grame-cncm/faust/}}
| programming language = [[C++]]
| license = [[GNU General Public License|GPL]]
| website = {{URL|faust.grame.fr}}
}}
{{Portal|Free and open-source software}}
 
'''FAUST''' (Functional AUdio STream) is a [[___domain-specific language|___domain-specific]] [[purely functional programming|purely functional]] [[programming language]] for implementing [[signal processing]] [[algorithms]] in the form of [[Library (computing)|libraries]], [[audio plug-ins]], or standalone applications. A FAUST program denotes a signal processor: a mathematical function that is applied to some input signal and then fed out.
 
Line 37 ⟶ 38:
==Example code==
FAUST programs define a <code>process</code> function that operates on incoming data. This is analogous to the <code>main</code> function in most programming languages. The following is an example that produces silence:
<syntaxhighlight lang="haskell">
process = 0;
</syntaxhighlight>
The second example copies the input signal to the output. It involves the <code>_</code> primitive that denotes the [[identity function]] for signals:
<syntaxhighlight lang="haskell">
process = _;
</syntaxhighlight>
Another example sums a stereo signal into a mono signal using the <code>+</code> primitive:
<syntaxhighlight lang="haskell">
process = +;
</syntaxhighlight>
Line 71 ⟶ 72:
 
Using the sequential composition operator <code>:</code> the output of <code>+</code> can be routed to the input of <code>abs</code> to compute the [[absolute value]] of the signal:
<syntaxhighlight lang="haskell">
process = + : abs;
</syntaxhighlight>
Here is an example of parallel composition using the <code>,</code> operator that arranges its left and right expressions in parallel. This is analogous to a stereo cable.
<syntaxhighlight lang="haskell">
process = _,_;
</syntaxhighlight>
These operators can be arbitrarily combined arbitrarily. The following code multiplies an input signal with 0.5:
<syntaxhighlight lang="haskell">
process = _,0.5 : *;
</syntaxhighlight>
The above may be rewritten in [[currying|curried]] form:
<syntaxhighlight lang="haskell">
process = *(0.5);
</syntaxhighlight>
Line 98 ⟶ 99:
{| class="wikitable"
|+ Some architecture files available for FAUST
! File
| alsa-gtk.cpp || ALSA application + GTK
! Architecture
|-
| alsa-gtk.cpp || ALSA application + [[GTK]]
|-
| alsa-qt.cpp || ALSA application + QT4[[Qt (software)|Qt]] 4
|-
| android.cpp || Android applications
Line 106 ⟶ 110:
| au.cpp || Audio Unit plug-in
|-
| ca-qt.cpp || CoreAudio application + QT4Qt 4
|-
| ios-coreaudio.cpp || iPhone and iPad applications
Line 112 ⟶ 116:
| jack-gtk.cpp || JACK application + GTK
|-
| jack-qt.cpp || JACK application + QT4Qt 4
|-
| ladspa.cpp || LADSPA plug-in
Line 118 ⟶ 122:
| max-msp.cpp || Max MSP plug-in
|-
| pd.cpp || PuredataPure Data plug-in
|-
| q.cpp || Q language plug-in
|-
| supercollider.cpp || SupercolliderSuperCollider plug-in
|-
| vst.cpp || VST plug-in
Line 193 ⟶ 197:
| year = 2011
}}
* {{cite journal
|first1=Pierre
|last1=Jouvelot
Line 202 ⟶ 206:
|url=http://faust.grame.fr/images/faust-doc/papers/faust-elsevier2011.pdf
|year=2011
|volume=37
|issue=3
|pages=113–131
Line 214 ⟶ 218:
| year = 2011
}}
* {{cite journal
|first3=Dominique
|last3=Fober
Line 225 ⟶ 229:
|url=http://faust.grame.fr/images/faust-doc/papers/faust-CFA-2010.pdf
|year=2010
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
| first3 = Dominique
Line 247 ⟶ 251:
| year = 2010
}}
* {{cite journal
|first1=Jérôme
|last1=Barthélemy
Line 265 ⟶ 269:
|pages=369–372
|year=2010
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
| first1 = Pierre
Line 281 ⟶ 285:
| url-status = dead
}}
* {{cite journal
|first3=Dominique
|last3=Fober
Line 292 ⟶ 296:
|url=http://faust.grame.fr/test/images/faust-doc/papers/faustLAC09.pdf
|year=2009
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite book
| first1 = Pierre
Line 313 ⟶ 317:
| url = http://smc2009.smcnetwork.org/programme/pdfs/232.pdf
| year = 2009
| archive-date = 2012-04-25
| access-date = 2011-10-11
| archive-url = https://web.archive.org/web/20120425061241/http://smc2009.smcnetwork.org/programme/pdfs/232.pdf
| url-status = dead
}}
* {{cite book
Line 328 ⟶ 336:
| year = 2009
}}{{Dead link|date=December 2019 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
|first3=Dominique
|last3=Fober
Line 339 ⟶ 347:
|url=http://faust.grame.fr/images/faust-doc/papers/jack-faust-multicore.pdf
|year=2008
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
| first = Albert
Line 412 ⟶ 420:
| year = 2004
}}{{Dead link|date=December 2019 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
|first1=Nicolas
|last1=Scaringella
Line 423 ⟶ 431:
|url=http://faust.grame.fr/images/faust-doc/papers/JIM2003vect.pdf
|year=2003
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
|first3=Stéphane
|last3=Letz
Line 435 ⟶ 443:
|url=http://faust.grame.fr/images/faust-doc/papers/faust-jim2002.pdf
|year=2002
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
* {{cite journal
|first3=Stéphane
|last3=Letz
Line 447 ⟶ 455:
|url=http://faust.grame.fr/images/faust-doc/papers/faust-icmc2002.pdf
|year=2002
}}{{dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
{{Refend}}
 
Line 453 ⟶ 461:
{{Commons category|FAUST (programming language)}}
* {{Official website|faust.grame.fr}}, online compiler, support, documentation, news, etc.
* {{GitHub|grame-cncm/faust}}
 
[[Category:Audio programming languages]]
[[Category:Programming languages created in 2002]]