close

SuperCollider

Gå til navigation Gå til søg
SuperCollider
SuperCollider logo.svg
SuperCollider screenshot2.jpg
Generel information
programtype Udviklingsmiljø og lydprogrammeringssprog
Udvikler James McCartney og andre
Første udgivelse nitten seksoghalvfems
Licens GNU General Public License
Versioner
Seneste stabile version 3.9.16. februar 2018
læsbare filer
SuperCollider klasse
redigerbare filer
SuperCollider klasse
Links

SuperCollider er et programmeringssprog og et miljø, der oprindeligt blev udgivet i 1996 af James McCartney til lydsyntese i realtid og algoritmisk komposition . [ 2 ]​ [ 3 ]

Siden da har det udviklet sig til et system, der bruges og udvikles af videnskabsmænd og kunstnere, der arbejder med lyd. Det er et dynamisk, kraftfuldt og udtryksfuldt programmeringssprog, der giver en ramme for akustisk forskning , algoritmisk musik, interaktiv programmering [ 4 ] og live-kodning .

Udgivet i 2002 under betingelserne i GNU Public License , SuperCollider er gratis og open source-software. Den seneste større version er 3.10.0.

Arkitektur

I version 3 blev SuperCollider-miljøet opdelt i 2 komponenter: en server , scsynth ; og en klient , sclang . Disse komponenter kommunikerer ved hjælp af OSC ( Open Sound Control ). [ 4 ]

SuperCollider-sproget kombinerer Smalltalks objektorienterede struktur og funktionelle programmeringsfunktioner sammen med syntaksen fra C-programmeringssprogfamilien . [ 4 ]

SuperCollider-serverapplikationen understøtter en simpel C plugin API , så det er nemt at skrive effektive lydalgoritmer, som derefter kan kombineres til grafberegninger. Da al ekstern kontrol på serveren går gennem OSC, er det muligt at bruge det med andre sprog eller applikationer. [ 4 ]

SuperCollider synteseserveren ( scsynth )

SuperColliders lydgenerering er inkluderet i en optimeret kommandolinje eksekverbar fil (kaldet scsynth ). I de fleste tilfælde styres det fra SuperCollider-programmeringssproget, men kan bruges uafhængigt. Lydserveren har følgende egenskaber: [ 4 ]

  • Adgang til Åbn lydkontrol
  • En simpel C API
  • Understøtter et vilkårligt antal input- og outputkanaler, inklusive massive flerkanalskonfigurationer [ 5 ]
  • Giver adgang til et ordnet strukturtræ af synteseknuder, der definerer udførelsesrækkefølgen
  • Bussystem, der giver mulighed for dynamisk omstrukturering af signalflowet
  • Buffere til skrivning og læsning
  • Beregning ved forskellige hastigheder afhængigt af behovene: lydhastighed, kontrolhastighed, efterspørgselshastighed

Supernova, en applikationsserver-uafhængig arkitektur [ 6 ] tilføjer multi-processor- understøttelse gennem eksplicit parallel clustering af synteseknuder.

SuperCollider programmeringssproget ( sclang )

Programmeringssproget SuperCollider er et dynamisk indtastet , skraldeopsamler , enkelt arv , objektorienteret programmering og funktionelt programmeringssprog . Det er et sprog , der ligner Smalltalk , med syntaks svarende til Ruby eller programmeringssproget C. Dens arkitektur skaber en balance mellem behovene for real-time computing og fleksibiliteten og enkeltheden i et abstrakt sprog. Som mange funktionelle sprog implementerer den funktioner som førsteklasses objekter, hvis tilstand kan sammensættes. Funktioner og metoder kan have standard argumentværdier og argumentlister med variabel længde, du kan kommunikere med enhver rækkefølge af søgeordsargumenter. Lukninger er leksikalske, og omfanget er både leksikalsk og dynamisk. Andre funktioner, der er typiske for funktionelle sprog, understøttes, herunder oprettelse af lukning gennem delvis applikation, optimering af endelig opkald, listeforståelse og koroutiner. Specifikke detaljer omfatter implicit tupleudvidelse og det statsløse mønstersystem. Dens ægte affaldsindsamling og konstante opslag efter tidsmeddelelser gør det muligt for store systemer at være effektive og håndtere signalbehandling fleksibelt. [ 4 ]

Ved at understøtte bogstavelige, interaktive og reflekterende programmeringsmetoder gør SuperCollider det relativt nemt at finde nye lydalgoritmer [ 7 ] og udvikle tilpasset software samt brugerdefinerede rammer. Hvad angår domænespecifik viden, er den både generel (for eksempel ved at tillade egenskaber som tid og tonehøjde at blive repræsenteret ved forskellige grader af abstraktion) og rigelig med eksempelimplementeringer til specifikke formål. [ 4 ]

Grafisk grænsefladesystem (ide )

SuperCollider-sproget giver brugerne mulighed for at bygge grafiske brugergrænseflader på tværs af platforme til applikationer. Komponenterne i GUI - klassebiblioteksstandarden kan udvides med forskellige tilgængelige rammer . Til interaktiv programmering understøtter systemet programmatisk adgang til RTF-kodefiler. Det kan bruges til at generere vektorgrafik algoritmisk. [ 8 ]

Systemgrænseflade og support

Kunder

Fordi serveren styres ved hjælp af Open Sound Control (OSC), kan en række applikationer bruges til at styre serveren. SuperCollider sprogmiljøer (se nedenfor) bruges ofte, men andre OSC-bevidste systemer kan bruges, såsom Pure data . [ 4 ]

Der er "tredjeparts"-klienter til SuperCollider-serveren, inklusive RSC3, en Scheme -programmeringssprogsklient , HSC3, baseret på Haskell , ScalaCollider, [ 9 ] baseret på Scala. , og Overtone, baseret på Clojure [ 10 ] Disse er forskellige fra udviklingsmiljøerne nævnt nedenfor, da de ikke giver en grænseflade til SuperColliders programmeringssprog, men snarere kommunikerer direkte med lydserveren, der giver deres egne tilgange til at lette brugerens udtryk. [ 4 ]

Understøttede operativsystemer

SuperCollider kan køre på Mac OS X , Linux , Windows og FreeBSD . Windows-versionen har dog en tendens til at halte bagefter de andre, da det meste af udviklingen er baseret på Mac og Linux. For hvert af disse operativsystemer er der flere sprogredigeringsmiljøer og klienter, som kan bruges med SuperCollider (se nedenfor). [ 4 ]

Det har også vist sig, at SuperCollider kan køre på iOS (operativsystem) [ 11 ] og Android . [ 12 ]

Redigeringsmiljøer

Image
Skærmbillede af Vim SuperCollider på Puredyne GNU/Linux .

Mac-versionen af ​​SuperCollider bruges mest inden for rammerne af dens egen specifikke grafiske grænseflade ( Cocoa (computing) ), på Windows og Linux, forskellige teksteditorer og en række fælles integrerede udviklingsmiljøer kan bruges, f.eks.

For hvert af de ovennævnte miljøer giver et plug-in mulighed for realtidsudførelse af SuperCollider-kode og interaktion med lydserveren.

Tidligere forsøg på at portere SuperCollider til Windows har også resulteret i et Python -baseret udviklingsmiljø kaldet PsyCollider og et plug-in til Eclipse , men disse er ikke blevet opdateret for nylig. Der er dog i øjeblikket en ny indsats i gang med at udvikle en IDE på tværs af platforme baseret på Qt-rammeværket. [ 15 ]

Kodeeksempler

// Udskriv "Hej verden!" 
Hej Verden! . postln ;
// Spil en blanding af en 800 Hz sinustone og "pink noise" (PinkNoise) 
{ SinOsc . ar ( 800 , 0 , 0.1 ) + PinkNoise . ar ( 0,01 ) }. spille ;      
// Moduler en sinusformet frekvens og støjamplitude med en anden sinusformet 
// Hvis frekvens afhænger af musemarkørens vandrette position 
{ var x = SinOsc . ar ( MouseX.kr ( 1.100 ) ) ; _ _ 
	    
	SinOsc . ar ( 300 * x + 800 , 0 , 0,1 ) + PinkNoise . ar ( 0,1 * x + 0,1 ) }. spille ;       
	 
	     

// Iterationsliste: Gang elementerne i en samling med deres indekser 
[ 1 , 2 , 5 , 10 , -3 ]. collect { arg elem , idx ;      
	  
 	elem * idx ;  
};
// Faktoriel funktion 
f = {  
	arg x ; 
 	if ( x == 0 ) { 1 } { f .( x -1 ) * x }          
};

Live kodning

Som et alsidigt dynamisk programmeringssprog kan SuperCollider bruges til at lave live-kodning , det vil sige koncerter, der involverer tolken til at ændre og udføre kildekoden i farten. [ 16 ] Specifikke typer proxy-mønstre tjener som pladsholdere på højt niveau for synteseobjekter, der kan tændes, slukkes og/eller ændres under gengivelsen. Computermiljøer tillader deling og/eller ændring af objekter og erklæringer om processer udført gennem computernetværk. [ 17 ] Forskellige biblioteker og udvidelser understøtter abstraktion og adgang til lydobjekter. For eksempel dewdrop_lib [ 18 ]​ eller JITLib, som begge tillader live oprettelse og modifikation af pseudo-klasser og objekter.

Referencer

  1. SourceForge.net: Filer
  2. J. McCartney, SuperCollider: Et nyt realtidssyntesesprog , i Proc. International Computer Music Conference (ICMC'96), 1996, s. 257-258.
  3. J. McCartney, Rethinking the computer music language: SuperCollider , Computer Music Journal, 26 (2002), s. 61-68.
  4. a b c d e f g h i j Scott Wilson; David Cottle; NickCollins (2011). SuperCollider-bogen . TheMITPress . _ ISBN  978-0-262-23269-2 . Arkiveret fra originalen den 1. maj 2011 . Hentet 13. juli 2013 . 
  5. BEASTmulch multikanal lydværktøjer
  6. T. Blechmann, supernova, en multiprocessor-bevidst synteseserver til SuperCollider , Proceedings of the Linux Audio Conference, Utrecht 2010.
  7. J. Rohrhuber, A. de Campo og Renate Wieser. Algoritmer i dag. Noter om sprogdesign til Just in Time-programmering . I Proceedings of the International Computer Music Conference , Barcelona, ​​​​2005.
  8. Den vektorgrafiske grænseflade leveres af klassen Pen. Forskellige eksempler kan findes på Audiovisuals af SC Arkiveret 9. juni 2020, på Wayback Machine , blog af Fredrik Olofsson, 02.05.2009 (opdateret 11.05.2012)
  9. ^ Rutz, H.H. (2010). "Genovervejer SuperCollider-klienten...". Proceedings of SuperCollider Symposium . Berlin. 
  10. Flere eksempler på SuperCollider-wikien
  11. Tiny Music System - Cylob Blog, 04.11.2009
  12. SuperCollider Android-projekt på GitHub
  13. SuperCollider med emacs: scel
  14. Scate Project
  15. Cyberpipe @ Slovenien og den fremtidige SuperCollider-udvikling Arkiveret 2015-03-25 på Wayback Machine - annoncering på SuperColliders brugermailingliste, 22.02.2012
  16. Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), Live Coding Techniques for Laptop Performance, Organized Sound 8(3): pp. 321-30. doi  10.1017/S135577180300030X
  17. J. Rohrhuber og A. de Campo. Venter og usikkerhed i computermusiknetværk Arkiveret 2006-03-14 ved Wayback Machine .. I Proceedings of the International Computer Music Conference , Miami, 2004.
  18. Et af de talrige brugerbidragede biblioteker kendt som "Quarks", og udgivet i SuperCollider Quarks repository .

Eksterne links