Vés al contingut

Csound

De la Viquipèdia, l'enciclopèdia lliure
Csound

Tipussoftware synthesizer (en) Tradueix, audio programming language (en) Tradueix i programari lliure Modifica el valor a Wikidata
Versió inicial1986 Modifica el valor a Wikidata
Versió estable
6.18.1 (24 novembre 2022) Modifica el valor a Wikidata
LlicènciaGNU LGPL Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiuUnix-like Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Format de fitxer de lectura
Format de fitxer d'escriptura
Més informació
Lloc webcsound.com Modifica el valor a Wikidata
Free Software DirectoryCSound Modifica el valor a Wikidata

Csound és un llenguatge de programació d'ordinador específic per a domini per a la programació d'àudio. Es diu Csound perquè està escrit en C, en oposició a alguns dels seus predecessors.

És un programari lliure, disponible sota la LGPL.

Csound va ser escrit originalment al MIT per Barry Vercoe el 1985, basat en el seu sistema anterior anomenat Music 11, que al seu torn seguia el model MUSIC-N iniciat per Max Mathews als Bell Labs. El seu desenvolupament va continuar al llarg dels anys 90 i 2000, dirigit per John Fitch a la Universitat de Bath. La primera versió documentada de la versió 5 és la versió 5.01 del 18 de març del 2006. Molts desenvolupadors hi han contribuït, sobretot Istvan Varga, Gabriel Maldonado, Robin Whittle, Richard Karpen, Iain McCurdy, Michael Gogins, Matt Ingalls, Steven Yi, Richard Boulanger, Victor Lazzarini i Joachim Heintz.

Desenvolupat durant molts anys, actualment compta amb prop de 1.700 generadors d'unitats. Un dels seus punts forts és que és completament modular i extensible per l'usuari. Csound està estretament relacionat amb el llenguatge subjacent de les extensions d' àudio estructurat a MPEG-4, SAOL.

Codi de Csound

[modifica]

Csound pren com a entrada dos fitxers de text amb un format especial. L'orquestra descriu la naturalesa dels instruments i la partitura descriu notes i altres paràmetres al llarg d'una línia de temps. Csound processa les instruccions d'aquests fitxers i fa un fitxer d'àudio o un flux d'àudio en temps real com a sortida.

Els fitxers orquestra i partitura es poden unir en un únic fitxer estructurat mitjançant etiquetes de llenguatge de marques (un fitxer CSD amb extensió de nom de fitxer.csd). Aquí teniu un exemple molt senzill d'un fitxer de dades Csound unificat que produeix un fitxer d'ona que conté un to d'ona sinusoidal d' un segon d'1 kHz a una velocitat de mostra de 96 kHz:

<CsoundSynthesizer>

 <CsOptions>
 csound -W -d -o tone.wav
 </CsOptions>

 <CsInstruments>
 sr = 96000 ; Sample rate.
 kr = 9600 ; Control signal rate.
 ksmps = 10 ; Samples per control signal.
 nchnls = 1 ; Number of output channels.

 instr 1
 a1 oscil p4, p5, 1 ; Oscillator: p4 and p5 are the arguments from the score, 1 is the table number.
 out a1 ; Output.
 endin
 </CsInstruments>

 <CsScore>
 f1 0 8192 10 1 ; Table containing a sine wave. Built-in generator 10 produces a sum of sinusoids, here only one.
 i1 0 1 20000 1000 ; Play one second of one kHz at amplitude 20000.
 e
 </CsScore>

</CsoundSynthesizer>

Com passa amb molts altres llenguatges de programació, l'escriptura de programes llargs a Csound es pot facilitar mitjançant l'ús d'un entorn integrat per editar, previsualitzar, provar i depurar. El que ara s'admet oficialment és CsoundQt i té moltes funcions, com ara inserció automàtica de codi, navegador de documentació integrat, ginys integrats per controlar gràficament els paràmetres en temps real, a més d'un botó per reproduir el codi.

Csound 5

[modifica]

La versió 5.01 es va publicar el 18 de març del 2006 – 20 anys després del primer llançament de csound. Csound 5 està disponible en codi binari i font per a Linux, Microsoft Windows i Mac OS X del projecte SourceForge Csound.[1] Es millora i amplia molt en comparació amb el programari original, convertit efectivament en una biblioteca de programari amb una API. S'ha desenvolupat una gran varietat d' extrems frontals. A més de l'API C bàsica, també hi ha Python, Java, Lisp, Tcl i C ++ entre altres enllaços, com un de Haskell que permet controlar Csound des d'un entorn purament funcional.

L'ús de connectors permet funcions addicionals sense modificacions del codi Csound, ja que hi ha la possibilitat d'escriure codis d'opció definits per l'usuari com a extensions a l'idioma original. S'admeten LADSPA i DSSI, però s'ha eliminat el suport VST.

El rendiment en temps real mitjançant MIDI es va afegir als anys noranta. Una altra addició va ser el suport de ginys FLTK (components d'interfície gràfica amb control lliscant, comandaments, etc.) per controlar l'àudio en temps real i la integració d'interfícies gràfiques personalitzades escrites en Python.

Csound 6

[modifica]

Csound 6 ha estat en desenvolupament des que es van esborrar les seves característiques a la conferència de Csound celebrada el 2011 a Hannover. Csound 6 es va llançar al juliol de 2013 i ja està disponible a GitHub.[2] Csound 6 també està disponible per a Android. Les principals novetats de Csound 6 inclouen:

  • Un analitzador basat en bisons/flex per al llenguatge Csound ara és estàndard. Genera un arbre de sintaxi abstracte accessible a través de l'API Csound. Després, l'arbre es pot compilar en un temps d'execució de rendiment de Csound mitjançant l'API. Per tant, després de compilar l'arbre, es pot manipular mitjançant el codi d'usuari abans de compilar-lo en un temps d'execució de rendiment de Csound. Com a alternativa, l'usuari podria crear tot l'arbre de sintaxi abstracte a partir d'un altre idioma i, a continuació, compilar l'arbre en un temps d'execució de rendiment de Csound.
  • Hi ha un nou tipus de matriu multidimensional incorporat. Les matrius es poden passar a instruments i codis d'opció. L'aritmètica es pot realitzar directament sobre matrius.
  • Hi ha un sistema de tipus nou que permet utilitzar tipus definits per l'usuari en l'idioma Csound.
  • L'orquestra es pot recompilar en qualsevol moment o es poden compilar instruments individuals en qualsevol moment durant una actuació en curs. Això permet una autèntica "codificació en directe" a les actuacions de Csound.
  • L'API Csound s'ha racionalitzat i simplificat.
  • Csound pot aprofitar qualsevol quantitat de CPU per processar simultàniament durant el rendiment. Això es produeix sense cap canvi al codi Csound. Això produeix acceleracions substancials de la majoria de processaments Csound. Per exemple, una peça que es renderitzi en 100 segons amb 1 nucli s'hauria de representar en uns 50 segons amb 4 nuclis.
  • Csound pot compilar orquestres i partitures directament a partir de cadenes de text, permetent l'ús de Csound en entorns on no es permet l'escriptura al sistema de fitxers.
  • Es poden programar esdeveniments de puntuació, com ara notes, per obtenir mostres de temps precisos, fins i tot si la síntesi es processa en blocs de mostres.
  • Tots els codis d'opció que retornen un valor únic es poden utilitzar com a funcions en el llenguatge de l'orquestra.
  • Els formats de fitxers d'anàlisi d'àudio poden ser independents de l'ordre de bytes.
  • Una declaració de puntuació única pot contenir diversos paràmetres de cadena.
  • La majoria dels codis d'opció de l'oscil·lador utilitzaran una taula de funcions sinus interns si s'omet el número de taula.
  • Les opcions de la línia d'ordres es poden configurar mitjançant programació mitjançant l'API Csound.
  • S'han racionalitzat nombroses àrees de codi duplicades dins de Csound.
  • Es va crear una aplicació per a Android que proporciona interfícies gràfiques d'usuari definides per l'usuari i composició algorítmica basada en JavaScript mitjançant HTML5.

El desenvolupament de Csound 6 va ser liderat per John ffitch, Steven Yi i Victor Lazzarini.

Csound per a actuacions en directe

[modifica]

Actualment, només es poden generar esdeveniments de puntuació o nota de Csound en temps real (a diferència dels instruments, que només es poden definir en el moment de la compilació, quan csound s'inicia per primera vegada; a Csound 6 s'elimina aquesta limitació). El conjunt de processadors de so es defineix i es compila en temps de càrrega, però els objectes de processament individuals es poden generar o destruir en temps real, processar àudio en temps real i generar també la sortida en temps real. Es poden activar esdeveniments basats en comunicacions OSC dins d'una instància d'instrument, generats per MIDI o introduïts a stdin (escrivint en un terminal o enviant sentències textuals des d'un altre programa). L'ús de Csound 5 com a eina d'actuació en directe es pot augmentar amb una gran varietat de programari de tercers. El full d'esdeveniments en directe de CsoundQt es pot utilitzar per modificar la puntuació en temps real. A més, les interfícies amb altres llenguatges de programació es poden utilitzar per script Csound. Un document que detalla l'ús de Csound amb Qt o Pure Data en síntesi musical en temps real es va presentar a la Linux Audio Conference de 2012.[3] El projecte Ounk intenta integrar Python amb Csound mentre CsoundAC proporciona una manera de fer composició algorítmica a partir de Python utilitzant Csound com a backend. El Csound for Live d'Audivation empaqueta diversos codis d'opció en embolcalls Max/MSP adequats per utilitzar-se a Ableton Live.[4][5] Csound també està disponible per a sistemes mòbils (iOS, Android).[6]

IDE i entorns de composició musical

[modifica]
La finestra per defecte de CsoundQt 0.9.7, que s'executa a Linux Mint 20 Xfce
  • MacCsound és un entorn de programació integrat de Csound per a Macintosh (sense actualització des de principis de 2011).
  • Csound Editor és un entorn de programació integrat per a Csound [Windows].
  • WinXoundPro un altre IDE per a Csound.
  • CsoundQt una altra interfície GUI per a CSound [Windows/Mac/*NIX]. Ara s'inclou a la distribució CSound.
  • Dex Tracker Dex Tracker, un frontal d'estil rastrejador per a csound, que inclou un editor de quadrícules i eines de generació de codi, i la possibilitat de desar els vostres sons i ritmes preferits com a presets.
  • blue. Un entorn de composició musical per a Csound.
  • Processador Bol BP2. Un entorn de composició musical per a Csound i MIDI.
  • Orquestra CSound automatitzada Creació d'orquestra Csound automatitzada a partir d'instruments individuals en format csd, converteix midi a CSound i grava a Csound en temps real (programa Windows).
  • AlgoScore Entorn de composició algorítmica on es treballa en una puntuació gràfica, per a Csound i MIDI.
  • Cecilia (en les versions 1-4) un frontend de producció per a Csound. (Cecilia 5 ha migrat a pyo com a backend.)
  • Entorn de producció de col per a connectors d'àudio multiplataforma basats en Csound.
  • Enciam un editor / interfície de Windows per a Csound5.
  • Csound-x per a Emacs i un frontend d'Emacs per a Csound.

Un ordinador portàtil per nen (OLPC)

[modifica]

Csound5 va ser escollit per ser el sistema de desenvolupament d'àudio/música per al projecte OLPC de la plataforma portàtil XO-1.[7]

Vegeu també

[modifica]

Referències

[modifica]
  1. «Csound | SourceForge.net».
  2. «Csound | GitHub.com».
  3. Joachim Heintz. «Csound as a Real-time Application». Institute for New Music.
  4. Peter Kirn. «Csound For Live wiki». Create Digital Music, 15-10-2011.
  5. Synthhead. «Csound For Live Coming October 17th wiki». Synthtopia, 15-10-2011.
  6. S. Yi and V. Lazzarini. «Csound for Android».
  7. «Csound on OLPC wiki». [Consulta: 23 novembre 2010].

Bibliografia

[modifica]
  • Richard Charles Boulanger. The Csound Book: Perspectives in Software Synthesis, Sound Design, Signal Processing, and Programming. MIT Press, 2000. ISBN 978-0-262-52261-8. 
  • Virtual Sound. Sound Synthesis and Signal Processing. Theory and Practice with Csound.. ConTempo s.a.s, 2000. ISBN 88-900261-1-1. 
  • Richard Charles Boulanger and Victor Lazzarini. The Audio Programming Book. MIT Press, 2011. ISBN 978-0-262-01446-5.  This is a book mostly about programming sound directly using the C language, but it does have a couple of chapters about programming Csound opcodes.
  • Jim Aikin. Csound Power! The Comprehensive Guide. Cengage Learning, 2013. ISBN 1-4354-6005-7. 

Enllaços externs

[modifica]