SuperCollider - SuperCollider
![]() | |
Původní autoři | James McCartney |
---|---|
První vydání | 1996 |
Stabilní uvolnění | 3.11.2 / 15. listopadu 2020[1] |
Úložiště | github |
Napsáno | C ++ |
Operační systém | FreeBSD,[2] Linux, Operační Systém Mac, Okna |
Typ | Audio programovací jazyk |
Licence | GPLv3[3] |
webová stránka | supercollider |
SuperCollider je prostředí a programovací jazyk původně vydané v roce 1996 Jamesem McCartneym pro reálný čas audio syntéza a algoritmické složení.[4][5]
Od té doby se vyvinul do systému používaného a dále rozvíjeného vědci i umělci pracujícími se zvukem. Je to efektivní a expresivní dynamický programovací jazyk poskytující rámec pro akustický výzkum, algoritmická hudba, interaktivní programování[6] a živé kódování.
Vydáno na základě podmínek GPLv 2 v roce 2002, SuperCollider je bezplatný open source software.
Architektura
Počínaje verzí 3 bylo prostředí SuperCollider rozděleno na dvě součásti: a serveru, scsynth; a a klient, sclang. Tyto komponenty komunikují pomocí OSC (Otevřete Ovládání zvuku ).[6]
Jazyk SC kombinuje objektově orientovanou strukturu Pokec a funkce z funkční programovací jazyky s C -rodina syntax.[6]
Aplikace SC Server podporuje jednoduché API pluginů C a C ++, což usnadňuje psaní efektivních zvukových algoritmů (generátory jednotek ), které lze poté spojit do grafů výpočtů. Protože veškerá externí kontrola na serveru probíhá přes OSC, je možné ji použít s jinými jazyky nebo aplikacemi.[6]
Server syntézy SuperCollider (scsynth)
Generování zvuku SuperCollider je svázáno do optimalizovaného spustitelného souboru příkazového řádku (s názvem scsynth). Ve většině případů je ovládán z programovacího jazyka SuperCollider, ale lze jej použít samostatně. Zvukový server má následující funkce:[6]
- Otevřete Ovládání zvuku přístup
- Jednoduchý ANSI C. a C ++ 11 zapojit API
- Podporuje libovolný počet vstupních a výstupních kanálů, včetně rozsáhlých vícekanálových nastavení[7]
- Poskytuje přístup k objednaný strom struktura syntézních uzlů, které definují pořadí provádění
- Systém sběrnice, který umožňuje dynamicky restrukturalizovat tok signálu
- Nárazníky pro psaní a čtení
- Výpočet různými rychlostmi v závislosti na potřebách: rychlost zvuku, rychlost ovládání, rychlost poptávky
Supernova, nezávislá implementace serverové architektury,[8] přidává podporu více procesorů prostřednictvím explicitního paralelního seskupování syntetických uzlů.
Programovací jazyk SuperCollider (sclang)
Programovací jazyk SuperCollider je a dynamicky zadáno, sbírat odpadky, jedno dědictví objektově orientovaný a funkční jazyk podobný Pokec,[5] se syntaxí podobnou Lisp nebo Programovací jazyk C.. Jeho architektura vytváří rovnováhu mezi potřebami výpočtu v reálném čase a flexibilitou a jednoduchostí abstraktního jazyka. Stejně jako mnoho funkčních jazyků implementuje funkce tak jako první třída předměty, které mohou být složen. Funkce a metody mohou mít výchozí hodnoty argumentů a seznamy argumentů s proměnnou délkou a lze je volat v libovolném pořadí argumentů klíčových slov. Uzávěry jsou lexikální a rozsah je lexikální i dynamický. Jsou podporovány další funkce typické pro funkční jazyky, včetně vytváření uzávěrů pomocí částečné aplikace (explicitní kari ), zadní volání optimalizace, seznam porozumění, a coutiny. Specifika zahrnují implicitní rozšíření n-tic a systém bezstavových vzorů. Jeho vyhledávání zpráv v konstantním čase a v reálném čase odvoz odpadu umožňuje efektivní fungování velkých systémů a pružné zpracování zpracování signálu.[6]
Podporou metod reflexní, konverzační, a gramotné programování Díky SuperCollider je relativně snadné najít nové zvukové algoritmy[9] a vyvíjet vlastní software i vlastní rámce. Pokud jde o znalosti specifické pro doménu, je to obecné (např. Umožňuje reprezentovat vlastnosti, jako je čas a výška tónu v různých stupních abstrakce) a velké množství příkladů implementací pro konkrétní účely.[6]
Systém GUI
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/IxiQuarks.jpg/220px-IxiQuarks.jpg)
Jazyk SuperCollider umožňuje uživatelům vytvářet grafická uživatelská rozhraní pro různé platformy pro aplikace. Standardní třídní knihovna s uživatelské rozhraní komponenty lze rozšířit o řadu dostupných frameworků. Pro interaktivní programování systém podporuje programový přístup k souborům kódů ve formátu RTF. Může být použit ke generování vektorová grafika algoritmicky.[10]
Rozhraní a podpora systému
Klienti
Protože server je řízen pomocí Otevřete Ovládání zvuku (OSC) lze k ovládání serveru použít různé aplikace. Obvykle se používají jazyková prostředí SuperCollider (viz níže), ale lze použít i jiné systémy podporující OSC, jako např Čistá data.[6]
Existují klienti „třetích stran“ pro server SuperCollider, včetně rsc3, a Systém klient, hsc3, na základě Haskell ScalaCollider,[11] na základě Scala, Overtone, na základě Clojure, a Sonic Pi.[12] Liší se od vývojových prostředí uvedených níže, protože neposkytují rozhraní k programovacímu jazyku SuperCollider, místo toho komunikují přímo se zvukovým serverem a poskytují vlastní přístupy k usnadnění výrazu uživatele.[6]
Podporované operační systémy
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/SuperCollider_screenshot2.jpg/220px-SuperCollider_screenshot2.jpg)
SuperCollider běží dál Operační Systém Mac, Linux, Okna a FreeBSD. Pro každý z těchto operačních systémů existuje několik prostředí pro úpravy jazyků a klientů, které lze použít se SuperColliderem (viz níže).[6]
Bylo také prokázáno, že SuperCollider může běžet dál Android[13] a iOS.[14]
Úpravy prostředí
Kód SuperCollider se nejčastěji upravuje a používá v rámci jeho vlastního multiplatformního IDE (který podporuje Linux, Mac a Windows).
jiný vývojová prostředí s podporou SuperCollider zahrnují:
- Emacs (Linux, Mac, Windows)[15]
- Vim (Linux, Mac)
- Atom (Linux, Mac, Windows)[16]
- gedit (Linux, Windows)
- Kate (Linux)[17]
Příklady kódu
// Tisk „Hello world!“"Ahoj světe!".postln;
// Hrajte směs sinusového tónu 800 Hz a růžového šumu{ SinOsc.ar(800, 0, 0.1) + PinkHluk.ar(0.01) }.hrát si;
// Modulujte sinusovou frekvenci a amplitudu šumu dalším sinusem// jehož frekvence závisí na poloze vodorovného ukazatele myši{ var X = SinOsc.ar(Myš X.kr(1, 100)); SinOsc.ar(300 * X + 800, 0, 0.1) + Růžový hluk.ar(0.1 * X + 0.1) }.hrát si;
// List iterace: vynásobte prvky kolekce jejich indexy[1, 2, 5, 10, -3].sbírat { |elem, idx| elem * idx };
// Faktoriální funkceF = { |X| -li(X == 0) { 1 } { F.(X-1) * X } };
Živé kódování
Jako univerzální dynamický programovací jazyk, SuperCollider lze použít pro živé kódování, tj. představení, která zahrnují umělce za běhu upravujícího a provádějícího kód.[18] Specifické druhy zástupci sloužit jako zástupné symboly na vysoké úrovni pro objekty syntézy, které lze za běhu zaměňovat a oddalovat nebo upravovat. Prostředí umožňují sdílení a úpravy objektů a deklarace procesů přes sítě.[19] Různé rozšiřující knihovny podporují různé abstrakce a přístup ke zvukovým objektům, např. dewdrop_lib[20] umožňuje živé vytváření a úpravy pseudotříd a objektů.
Viz také
Reference
- ^ „Zprávy“. Github. Citováno 15. listopadu 2020.
- ^ asynth. „SuperCollider“. Citováno 20. června 2015.
- ^ „KOPÍROVÁNÍ“. Github. Citováno 16. září 2019.
- ^ J. McCartney, SuperCollider: Nový jazyk syntézy v reálném čase, v Proc. International Computer Music Conference (ICMC’96), 1996, s. 257–258.
- ^ A b J. McCartney, Přehodnocení počítačového hudebního jazyka: SuperCollider, Computer Music Journal, 26 (2002), s. 61–68.
- ^ A b C d E F G h i j Scott Wilson; David Cottle; Nick Collins (2011). Kniha SuperCollider. MIT Press. ISBN 978-0-262-23269-2. Archivovány od originál dne 01.05.2011. Citováno 2011-05-26.
- ^ "Seznamy adresátů SuperCollider". Archivovány od originál dne 6. listopadu 2009. Citováno 20. června 2015.
- ^ T. Blechmann, supernova, víceprocesorový syntézní server pro SuperCollider, Sborník konference Linux Audio, Utrecht 2010.
- ^ J. Rohrhuber, A. de Campo a Renate Wieser. Algoritmy dnes. Poznámky k jazykovému designu pro just in time programování Archivováno 2011-07-28 na Wayback Machine. v Sborník z mezinárodní konference o počítačové hudbě, Barcelona, 2005.
- ^ Rozhraní vektorové grafiky poskytuje třída Pen. Různé příklady lze nalézt v Audiovizuální díla s SC, blog Fredrik Olofsson, 02.05.2009 (aktualizováno 11.05.2012)
- ^ Rutz, H. H. (2010). "Přehodnocení klienta SuperCollider ...". Sborník SuperCollider Symposium. Berlín. CiteSeerX 10.1.1.186.9817.
- ^ "Systémy propojené s SC". Citováno 20. června 2015.
- ^ Projekt Android SuperCollider na GitHubu
- ^ Malý hudební systém - Cylob Blog, 04.11.2009
- ^ „SuperCollider with emacs: scel“. Citováno 20. června 2015.
- ^ "supercollider". Atom. Citováno 20. června 2015.
- ^ „jleben / Scate“. GitHub. Citováno 20. června 2015.
- ^ Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), Live Coding Techniques for Laptop Performance, Organizovaný zvuk 8 (3): str. 321-30. doi:10.1017 / S135577180300030X
- ^ J. Rohrhuber a A. de Campo. Čekání a nejistota v počítačových hudebních sítích. v Sborník z mezinárodní konference o počítačové hudbě, Miami, 2004.
- ^ Jedna z mnoha knihoven přispívajících uživatelem známá jako „Quarks“ a publikovaná v Úložiště Quark SuperCollider.