Superzderzacz - SuperCollider

Superzderzacz
SuperCollider logo.svg
Pierwotny autor (autorzy) James McCartney
Pierwsze wydanie 1996 ; 25 lat temu ( 1996 )
Wersja stabilna
3.12.1 / 5 września 2021 r .; 1 dzień temu ( 05.09.2021 )
Magazyn github .com / superkolider / superkolider
Napisane w C++
System operacyjny FreeBSD , Linux , macOS , Windows
Rodzaj Język programowania audio
Licencja GPL-3.0-lub-później
Strona internetowa superkolider .github .io

SuperCollider to środowisko i język programowania pierwotnie wydany w 1996 roku przez Jamesa McCartneya do syntezy dźwięku w czasie rzeczywistym i kompozycji algorytmicznej .

Od tego czasu ewoluował w system wykorzystywany i dalej rozwijany zarówno przez naukowców, jak i artystów pracujących z dźwiękiem. Jest to wydajny i ekspresyjny dynamiczny język programowania, który zapewnia ramy dla badań akustycznych , muzyki algorytmicznej , programowania interaktywnego i kodowania na żywo .

Pierwotnie wydany na warunkach GPL-2.0-lub-później w 2002 roku, a od wersji 3.4 na licencji GPL-3.0-lub-później , SuperCollider jest darmowym oprogramowaniem o otwartym kodzie źródłowym .

Architektura

Począwszy od wersji 3, środowisko SuperCollider zostało podzielone na dwa komponenty: serwer , scsynth ; i klienta , sclang . Te komponenty komunikują się za pomocą OSC ( Open Sound Control ).

Językiem SC łączy strukturę obiektową o Smalltalk i wyposażony z funkcjonalnych języków programowania z C -family składni .

Aplikacja SC Server obsługuje proste API wtyczek C i C++, ułatwiając pisanie wydajnych algorytmów dźwiękowych ( generatorów jednostek ), które następnie można łączyć w wykresy obliczeń. Ponieważ cała zewnętrzna kontrola na serwerze odbywa się za pośrednictwem OSC, można go używać z innymi językami lub aplikacjami.

Serwer syntezy SuperCollider ( scsynth )

Generowanie dźwięku SuperCollider jest dołączone do zoptymalizowanego pliku wykonywalnego wiersza poleceń (o nazwie scsynth ). W większości przypadków jest sterowany z poziomu języka programowania SuperCollider, ale może być używany niezależnie. Serwer audio posiada następujące funkcje:

  • Otwórz dostęp do kontroli dźwięku
  • Proste interfejsy API wtyczek ANSI C i C++11
  • Obsługuje dowolną liczbę kanałów wejściowych i wyjściowych, w tym konfiguracje masowo wielokanałowe
  • Daje dostęp do uporządkowanej struktury drzewiastej węzłów syntezy, które definiują kolejność wykonywania
  • System magistralowy, który umożliwia dynamiczną restrukturyzację przepływu sygnału
  • Bufory do pisania i czytania
  • Obliczanie przy różnych stawkach w zależności od potrzeb: szybkość audio, szybkość sterowania, szybkość popytu

Supernova, niezależna implementacja architektury Serwera, dodaje obsługę wielu procesorów poprzez jawne równoległe grupowanie węzłów syntezy.

Język programowania SuperCollider ( sclang )

Język programowania SuperCollider jest dynamicznie wpisane , śmieci zebrane , pojedynczego dziedziczenia obiektowego i funkcjonalny język podobny do Smalltalk , o składni podobnej do Lisp lub języka programowania C . Jego architektura zapewnia równowagę między potrzebami obliczeń w czasie rzeczywistym a elastycznością i prostotą języka abstrakcyjnego. Podobnie jak wiele języków funkcjonalnych, implementuje funkcje jako obiekty pierwszej klasy , które można składać . Funkcje i metody mogą mieć domyślne wartości argumentów i listy argumentów o zmiennej długości oraz mogą być wywoływane z dowolną kolejnością argumentów słów kluczowych. Zamknięcia są leksykalne, a zakres jest zarówno leksykalny, jak i dynamiczny. Obsługiwane są dalsze funkcje typowe dla języków funkcjonalnych, w tym tworzenie domknięć za pomocą częściowej aplikacji (jawne currying ), optymalizacja wywołań ogonowych, składanie list i współprogramy . Specyfika obejmuje niejawną ekspansję krotek i bezstanowy system wzorców. Wyszukiwanie komunikatów w czasie ciągłym i zbieranie śmieci w czasie rzeczywistym pozwala dużym systemom działać wydajnie i elastycznie obsługiwać przetwarzanie sygnału.

Wspierając metody programowania refleksyjnego , konwersacyjnego i piśmiennego , SuperCollider sprawia, że ​​stosunkowo łatwo jest znaleźć nowe algorytmy dźwięku i opracować niestandardowe oprogramowanie, a także niestandardowe frameworki. Jeśli chodzi o wiedzę specyficzną dla danej dziedziny, jest ona zarówno ogólna (np. pozwala na reprezentację właściwości, takich jak czas i wysokość w różnych stopniach abstrakcji), jak i ma liczne przykładowe implementacje do określonych celów.

System GUI

Zrzut ekranu SuperCollider z uruchomionymi narzędziami GUI ixiQuarks.

Język SuperCollider umożliwia użytkownikom tworzenie wieloplatformowych graficznych interfejsów użytkownika dla aplikacji. Standardowa biblioteka klas z komponentami interfejsu użytkownika może być rozszerzona o szereg dostępnych frameworków. W przypadku programowania interaktywnego system obsługuje programistyczny dostęp do plików z kodem sformatowanym. Może służyć do algorytmicznego generowania grafiki wektorowej .

Interfejsy i wsparcie systemowe

Klienci

Ponieważ serwer jest kontrolowany za pomocą Open Sound Control (OSC), do sterowania serwerem można używać różnych aplikacji. Zazwyczaj używane są środowiska językowe SuperCollider (patrz poniżej), ale można użyć innych systemów obsługujących OSC, takich jak Pure Data .

Istnieją „zewnętrzne” klienty dla serwera SuperCollider, w tym rsc3, klient Scheme , hsc3, oparty na Haskell , ScalaCollider oparty na Scala , Overtone oparty na Clojure i Sonic Pi . Różnią się one od środowisk programistycznych wymienionych poniżej, ponieważ nie zapewniają interfejsu do języka programowania SuperCollider, zamiast tego komunikują się bezpośrednio z serwerem audio i zapewniają własne podejście do ułatwiania ekspresji użytkownika.

Obsługiwane systemy operacyjne

Zrzut ekranu SuperCollider na Mac OS X z różnymi elementami GUI generowanymi przez użytkowników.

SuperCollider działa na macOS , Linux , Windows i FreeBSD . Dla każdego z tych systemów operacyjnych istnieje wiele środowisk edycji języka i klientów, których można używać z SuperColliderem (patrz poniżej).

Wykazano również, że SuperCollider może działać na systemach Android i iOS .

Edytowanie środowisk

Zrzut ekranu SuperCollider Vima na puredyne linux .

Kod SuperCollider jest najczęściej edytowany i używany z poziomu własnego wieloplatformowego IDE, które jest oparte na Qt i obsługuje systemy Linux, Mac i Windows.

Inne środowiska programistyczne z obsługą SuperCollider obejmują:

  • Emacs (Linux, Mac, Windows)
  • Vim (Linux, Mac)
  • Atom (Linux, Mac, Windows)
  • gedit (Linux, Windows)
  • Kate (Linux, Windows)

Przykłady kodu

// Print "Hello world!"
"Hello world!".postln;
// Play a mixture of an 800 Hz sine tone and pink noise
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;
// Modulate a sine frequency and a noise amplitude with another sine
// whose frequency depends on the horizontal mouse pointer position
{ 
	var x = SinOsc.ar(MouseX.kr(1, 100));
	SinOsc.ar(300 * x + 800, 0, 0.1) 
	+ PinkNoise.ar(0.1 * x + 0.1); 
}.play;
// List iteration: multiply the elements of a collection by their indices
[1, 2, 5, 10, -3].collect { |elem, idx| elem * idx };
// Factorial function
f = { |x| if(x == 0) { 1 } { f.(x-1) * x } };

Kodowanie na żywo

Jako wszechstronny dynamiczny język programowania , SuperCollider może być używany do kodowania na żywo , tj. występów, w których wykonawca modyfikuje i wykonuje kod w locie. Określone rodzaje serwerów proxy służą jako obiekty zastępcze wysokiego poziomu dla obiektów syntezy, które można wymieniać i wyjmować lub modyfikować w czasie wykonywania. Środowiska umożliwiają udostępnianie i modyfikowanie obiektów i deklaracji procesów w sieciach. Różne biblioteki rozszerzeń obsługują różne abstrakcje i dostęp do obiektów dźwiękowych, np. dewdrop_lib pozwala na tworzenie i modyfikację pseudoklas i pseudoobiektów na żywo.

Zobacz też

Bibliografia

Zewnętrzne linki