FAUST (programovací jazyk) - FAUST (programming language)
![]() | Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Březen 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Původní autoři | Yann Orlarey, Dominique Fober, Stéphane Letz |
---|---|
Vývojáři | GRAME, Centre National de Création Musicale |
První vydání | 2002 |
Stabilní uvolnění | 2.20.2[1] / 14. ledna 2020 |
Napsáno | C ++ |
Operační systém | Linux, OS X, Okna, Unix |
Typ | Funkční programovací jazyk pro zpracování audio signálu |
Licence | GPL |
webová stránka | faust |
FAUST (Functional AUdio STream) is a specifické pro doménu čistě funkční programovací jazyk pro implementaci zpracování signálu algoritmy ve formě knihovny, zvukové doplňky nebo samostatné aplikace. FAUST program označuje signální procesor: matematickou funkci, která se aplikuje na nějaký vstupní signál a poté se vysílá.
Přehled
FAUST programovací model kombinuje a Funkcionální programování přístup s a blokové schéma syntax:
- Přístup funkčního programování poskytuje přirozený rámec pro zpracování signálu. Digitální signály jsou modelovány jako diskrétní funkce času, signálové procesory jako funkce druhého řádu kteří na nich pracují, a FAUSTOVO blokové schéma operátory složení, sloužící ke kombinování signálových procesorů dohromady, jako funkce třetího řádu atd.
- Bloková schémata, i když jsou čistě textová jako v FAUST, podporují modulární přístup ke zpracování signálu, který je v souladu se zvyky zvukařů a vývojářů zvuku.
FAUST program nepopisuje zvuk nebo skupinu zvuků, ale a signální procesor. Zdroj programu je organizován jako sada definice alespoň s definicí klíčového slova proces
(ekvivalent hlavní
v C):
proces = ...;
FAUST překladač překládá FAUST kód do a C ++ objekt, které se pak mohou propojit s jiným kódem C ++ za účelem vytvoření úplného programu.
Generovaný kód funguje na úrovni vzorku. Proto je vhodný pro implementaci na nízké úrovni DSP funkce jako rekurzivní filtry. Kód může také být vložený. Je samostatný a nezávisí na žádné knihovně DSP nebo runtime systém. Má velmi deterministické chování a konstantní velikost paměti.
Sémantika FAUST je řízena tak, aby byla jednoduchá a dobře definovaná. Umožňuje být kompilátorem FAUST sémanticky řízeno. Namísto doslovného sestavení programu sestavuje matematickou funkci, kterou označuje. To může podporovat opětovné použití komponent. Navíc přístup k přesné sémantice programu FAUST může zjednodušit problémy s uchováním.
FAUST je textový jazyk, ale orientovaný na blokové schéma. Kombinuje dva přístupy: Funkcionální programování a algebraické bloková schémata, které jsou konstruovány prostřednictvím složení funkce. FAUST proto spoléhá na a blokové schéma algebra pěti skladatelských operací.
Příklad kódu
Programy FAUST definují a proces
funkce, která pracuje na příchozích datech. To je analogické s hlavní
funkce ve většině programovacích jazyků. Následuje příklad, který vytváří ticho:
proces = 0;
Druhý příklad kopíruje vstupní signál na výstup. Zahrnuje to _
primitiv, který označuje funkce identity pro signály:
proces = _;
Další příklad shrnuje stereo signál do mono signálu pomocí +
primitivní:
proces = +;

Většina FAUST primitiv je analogická s jejich protějškem C v číslech, ale zvednuta k signálům. Například FAUSTNÍ primitiv hřích
pracuje na signálu X aplikací C funkce hřích
ke každému vzorku X [t]. Všechny numerické funkce C mají svůj protějšek v FAUST zpracování signálu primitiva jsou specifická pro FAUST. Například operátor zpoždění @
bere dva vstupní signály: X (signál se zpožděním) a D (zpoždění, které se má použít) a produkuje výstupní signál Y takový, že Y (t) = X (t - D (t)).
Složení blokového diagramu
Proti Max vizuální programovací jazyky kde uživatel provádí ruční připojení, jsou v něm sestavena FAUST primitiva bloková schémata pomocí sady blokového diagramu na vysoké úrovni složení operace.

např | Rekurzivní kompozice (priorita 4) |
f, g | Paralelní složení (priorita 3) |
f: g | Sekvenční složení (priorita 2) |
f <: g | Rozdělené složení (priorita 1) |
f:> g | Sloučit složení (priorita 1) |
Použití operátoru sekvenčního složení :
výstup +
lze směrovat na vstup břišní svaly
vypočítat absolutní hodnota signálu:
proces = + : břišní svaly;
Zde je příklad paralelního složení pomocí ,
operátor, který uspořádá své levé a pravé výrazy paralelně. To je analogické se stereofonním kabelem.
proces = _,_;
Tyto operátory lze libovolně kombinovat. Následující kód znásobuje vstupní signál s 0,5:
proces = _,0.5 : *;
Výše uvedené může být přepsáno kari formulář:
proces = *(0.5);
Operátor rekurzivní kompozice ~
lze použít k vytvoření blokových diagramů s cykly (které zahrnují implicitní zpoždění jednoho vzorku). Zde je příklad integrátoru, který vezme vstupní signál X a vypočítá výstupní signál Y tak, že Y (t) = X (t) + Y (t − 1):
proces = + ~ _;
Generování úplných aplikací
Pomocí konkrétních soubory architektury, program FAUST lze použít k výrobě kódu pro různé platformy a formáty zásuvných modulů. Tyto soubory architektury fungují jako obálky a popisují interakce s hostitelským zvukovým systémem a systémem GUI. Od roku 2015[Aktualizace], je podporováno více než 10 architektur a nové může implementovat kdokoli.

alsa-gtk.cpp | Aplikace ALSA + GTK |
alsa-qt.cpp | Aplikace ALSA + QT4 |
android.cpp | Aplikace pro Android |
au.cpp | Zásuvný modul zvukové jednotky |
ca-qt.cpp | Aplikace CoreAudio + QT4 |
ios-coreaudio.cpp | Aplikace pro iPhone a iPad |
jack-gtk.cpp | JACK aplikace + GTK |
jack-qt.cpp | JACK aplikace + QT4 |
ladspa.cpp | Zásuvný modul LADSPA |
max-msp.cpp | Max. Zásuvný modul MSP |
pd.cpp | Plug-in Puredata |
q.cpp | Doplněk jazyka Q |
supercollider.cpp | Plug-in Supercollider |
vst.cpp | Doplněk VST |
vsti-mono.cpp | Monophonic VST Instrument plug-in |
vsti-poly.cpp | Polyphonic VST Instrument plug-in |
Generování blokových diagramů
Užitečná možnost umožňuje generovat blokové schéma reprezentace programu jako jeden nebo více grafických souborů SVG.
Je užitečné si všimnout rozdílu mezi blokovým diagramem a vygenerovaným kódem C ++. Jak již bylo uvedeno, klíčovou myšlenkou zde není sestavit blokové schéma doslovně, ale matematická funkce, kterou označuje. Moderní překladače C / C ++ také nekompilovávají programy doslovně. Ale kvůli složité sémantice C / C ++ (kvůli vedlejším účinkům, aliasingu ukazatelů atd.) Nemohou jít tímto směrem příliš daleko. To je výrazná výhoda čistě funkčního jazyka: umožňuje kompilátorům provádět velmi pokročilé optimalizace.
Sémantika podobná šipkám
Faustova sémantika je téměř stejná jako sémantika Haskellova Šipky typová třída. Třída typu Arrow však není vázána na signální procesory.
např | smyčka (((A,b) -> (b,A)) ^>> F >>> id &&& (zpoždění>>>G)) kde zpoždění není metodou Šíp typová třída, ale je specifická pro šipky zpracování signálu |
f, g | f *** g |
f: g | f >>> g |
f <: g | f >> ^ h >>> g s příslušnou funkcí h (nebo &&& ve zvláštních případech) |
f:> g | f >> ^ h >>> g s příslušnou funkcí h |
Arrow kombinátory jsou více omezující než jejich FAUST protějšky, např. Je zachováno vnoření paralelní kompozice a vstupy operandů &&&
musí přesně odpovídat.
Reference
- Michon, Romain; Smith, Julius O. III (2011). „Faust-STK: Sada lineárních a nelineárních fyzikálních modelů pro programovací jazyk Faust“ (PDF). Sborník z 11. Int. Konference o digitálních zvukových efektech (DAFx-11): 199–204.
- Fober, Dominique; Orlarey, Yann; Letz, Stéphane (2011). „Faust Architectures Design and OSC Support“ (PDF). Sborník z 11. Int. Konference o digitálních zvukových efektech (DAFx-11): 213–216.
- Smith, Julius O. III; Michon, Romain (2011). „Nelineární Allpass žebříkové filtry ve Faustu“ (PDF). Sborník z 11. Int. Konference o digitálních zvukových efektech (DAFx-11): 361–364.
- Jouvelot, Pierre; Orlarey, Yann (2011). "Závislé typy vektorů pro strukturování dat ve vícerozměrném Faustu" (PDF). Počítačové jazyky, systémy a struktury.[trvalý mrtvý odkaz ]
- Smith III, Julius O. (2011). "Zpracování zvukového signálu ve Faustu" (PDF).
- Orlarey, Yann; Letz, Stéphane; Fober, Dominique (2010). "Automatická paralelizace zvukových aplikací s Faustem" (PDF). Sborník konference Congrès Français d'Acoustique.[trvalý mrtvý odkaz ]
- Letz, Stéphane; Orlarey, Yann; Fober, Dominique (2010). „Plánovač krádeže práce pro automatickou paralelizaci ve Faustovi“ (PDF). Sborník konference Linux Audio Conference (LAC-2010).
- Gräf, Albert (2010). „Rozšíření přepisování termínů pro programovací jazyk Faust“ (PDF). Sborník příspěvků z 8. mezinárodní linuxové zvukové konference (LAC-2010): 117.
- Barthélemy, Jérôme; Bonardi, Alain; Orlarey, Yann; Lemouton, Serge; Ciavarella, Raffaele; Barkati, Karim (2010). „První kroky k organologii virtuálních nástrojů v počítačové hudbě“ (PDF). Sborník příspěvků z Mezinárodní konference počítačové hudby 2010 (ICMA-2010): 369–372.[trvalý mrtvý odkaz ]
- Jouvelot, Pierre; Orlarey, Yann (2010). „Závislé typy vektorů pro vícesměrného Fausta“ (PDF). Sborník příspěvků ze 7. konference o zvuku a hudbě (SMC-2010): 345–352. Archivovány od originál (PDF) dne 7. 4. 2012. Citováno 2011-10-11.
- Orlarey, Yann; Letz, Stéphane; Fober, Dominique (2009). "Přidání automatické paralelizace k Faustovi" (PDF). Sborník konference Linux Audio Conference (LAC-2009).[trvalý mrtvý odkaz ]
- Jouvelot, Pierre; Orlarey, Yann (2009). "Sémantika pro mnohonásobného Fausta". Technické zprávy Centra de Recherche en Informatique de MINES ParisTech (PDF).[trvalý mrtvý odkaz ]
- Orlarey, Yann; Fober, Dominique; Letz, Stéphane (2009). „Paralelizace zvukových aplikací s Faustem“ (PDF). Citovat deník vyžaduje
| deník =
(Pomoc) - Orlarey, Yann; Fober, Dominique; Letz, Stéphane (2009). "Faust: efektivní funkční přístup k programování DSP". Nová paradigmata výpočetní hudby pro počítačovou hudbu (PDF). Vydání Delatour. ISBN 978-2-7521-0054-2.[trvalý mrtvý odkaz ]
- Orlarey, Yann; Letz, Stéphane; Fober, Dominique (2008). „Vícejádrové technologie u Jacka a Fausta“ (PDF). Sborník mezinárodní konference o počítačové hudbě 2010 (ICMC-2008).[trvalý mrtvý odkaz ]
- Gräf, Albert (2007). „Propojení čistých dat s Faustem“ (PDF). Sborník z 5. mezinárodní linuxové zvukové konference (LAC2007): 24.
- Smith III, Julius O. (2007). "Příloha K. Digitální filtrování ve Faustu a PD". Úvod do digitálních filtrů: Se zvukovými aplikacemi. Publikování W3K. 417- ?. ISBN 978-0-9745607-1-7.
- Gräf, Albert; Kersten, Stefan; Orlarey, Yann (2006). "Programování DSP s Faustem, Q a SuperColliderem" (PDF). Sborník ze 4. mezinárodní linuxové zvukové konference (LAC2006).
- Trausmuth, Robert; Dušan, Christian; Orlarey, Yann (2006). „Používání Fausta k programování FPGA“ (PDF). Sborník 9. int. Konference o digitálních zvukových efektech (DAFx-09).
- Orlarey, Yann; Fober, Dominique; Letz, Stephone (2005). „Ukázka jazyka zpracování Faustova signálu“. Sborník z mezinárodní konference o počítačové hudbě. 2005. Asociace počítačové hudby. p. 286.
- Orlarey, Yann; Fober, Dominique; Letz, Stéphane (2004). "Syntaktické a sémantické aspekty Fausta". Soft Computing (PDF).[trvalý mrtvý odkaz ]
- Scaringella, Nicolas; Orlarey, Yann; Fober, Dominique (2003). „Automatická vektorizace ve Faustovi“ (PDF). Journée de l'Informatique Musicale (JIM-2003).[trvalý mrtvý odkaz ]
- Orlarey, Yann; Fober, Dominique; Letz, Stéphane (2002). „Algebraický přístup k blokování konstrukcí diagramů“ (PDF). Journée de l'Informatique Musicale (JIM-2002).[trvalý mrtvý odkaz ]
- Orlarey, Yann; Fober, Dominique; Letz, Stéphane (2002). „Algebra pro jazyky blokového diagramu“ (PDF). Sborník mezinárodních konferencí o počítačové hudbě (ICMA-2002).[trvalý mrtvý odkaz ]
externí odkazy
- Oficiální webové stránky, online překladač, podpora, dokumentace, novinky atd.