Csound

Csound
Date de bază

Anul publicării 1986
Versiunea actuală  6.14.0
(27 ianuarie 2020)
sistem de operare GNU / Linux , Mac OS X , Windows , Android
limbaj de programare C.
Licență LGPL
Vorbitoare de limbă germană Nu
csound.github.io

Csound este un audio - programare . A fost dezvoltat în anii 1980 de Barry Vercoe la Electronic Music Studio al MIT , bazat pe sistemele Music-N ale lui Max Mathews . Prima publicație este din 1986.

Ca limbaj de programare audio, Csound este utilizat atât pentru sinteză (așadar numit și sintetizator software ), cât și pentru procesarea sunetelor, de exemplu folosind filtre , modulație , granulare sau transformare Fourier . În anii ’80 și ’90, Csound a fost utilizat în principal offline pentru a genera fișiere audio; folosit și pentru muzica live în electronică încă din anii 2000 . Semnalele de control necesare pentru aplicații în timp real sunt transmise prin MIDI , Open Sound Control (OSC) sau tastatura computerului.

Compilare și execuție

Scris în limbajul de programare C , Csound gestionează secvența de compilare și execuție. Mai întâi este compilat programul scris în Csound. Dacă compilarea are succes, programul poate fi executat.

Unitățile de bază ale unui program Csound se numesc „instrumente” (notate cu numere sau nume). Odată compilate, acestea pot fi pornite sau oprite în orice moment. În mod tradițional, acest lucru se face folosind o listă de instrucțiuni ("scor" = scor), dar poate fi la fel de ușor de realizat în timp real (prin MIDI , OSC , tastatură), sau generându-l în cadrul programului în sine.

Exemple

Următorul instrument Csound generează un ton sinusoidal de 415 Hz cu -12 dB și îl scrie la ieșire:

instr Sinus                        ; Beginn einer Instrumenten-Definition (Schlüsselwort 'instr')
 aSinus poscil ampdbfs(-12), 415   ; Oszillator 'poscil' mit Argumenten rechts und Ergebnis links
 out aSinus                        ; die Variable 'aSinus' wird als Audio-Signal herausgegeben
endin                              ; Ende der Instrumenten-Definition (Schlüsselwort 'endin')

În loc de această notație tradițională, deoarece Csound 6 este de asemenea posibil să scrieți funcțional (similar cu Python și alte limbi):

instr Sinus
 out(poscil(ampdbfs(-12), 415))
endin

Pentru a apela acest instrument, se folosește de obicei un fișier asemănător XML , care constă din trei secțiuni:

  • de opțiunile <CsOptions>, care specifică, de exemplu, dacă un sunet este de dorit în timp real sau un fișier audio trebuie să fie scris
  • a instrumentelor <CsInstruments>, adică textul real de program
  • scor <CsScore>, adică apelarea instanțe ale instrumentelor definite.

Următorul fișier scrie ieșirea în timp real (opțiunea '-o dac') pe placa audio și apelează instrumentul „Sinus” de două ori:

<CsoundSynthesizer>

  <CsOptions>
  ; Getestet mit: Csound version 6.07 (double samples) Mar 5 2016 unter Debian Linux
    -o dac             ; Output auf den Digital-to-Analog-Converter schreiben
  </CsOptions>

  <CsInstruments>
    sr     = 44100     ; Samplerate 44100 Hz (Signalrate für die Ausgabe)
    ksmps  = 32        ; Anzahl von Samples in einem Audio-Array (Blockgröße)
    nchnls = 1         ; Anzahl der Ausgabekanäle (1 bedeutet Mono, 2 Stereo)

    instr Sinus
      out(poscil(ampdbfs(-12), 415))
    endin
  </CsInstruments>

  <CsScore>
    i "Sinus" 0 2      ; Instrument "Sinus" wird mit Startzeit 0 und Dauer 2 (Sekunden) gerufen
    i "Sinus" 3 1      ; Instrument "Sinus" wird mit Startzeit 3 und Dauer 1 gerufen
  </CsScore>

</CsoundSynthesizer>

Dacă doriți să activați acest instrument printr-o tastatură MIDI, scorul este eliberat, astfel încât Csound să ruleze după compilare și să aștepte evenimente în timp real. Următorul cod determină amplitudinea și frecvența instrumentului Csound din viteza și numărul tastelor tastaturii MIDI. În plus, se introduce o curbă de plic, astfel încât sunetul să nu producă artefacte (clicuri) la început și la sfârșit:

<CsoundSynthesizer>

  <CsOptions>
    -o dac                ; Live Audio
    -M a                  ; alle MIDI-Geräte benutzen / lesen
    --midi-velocity-amp=4 ; Umformung der Velocity in Amplitude und Übergabe als Parameter 4 (p4) an das Instrument
    --midi-key-cps=5      ; Umformung der Tasten-Nummer (MIDI Key) in Frequenz und Übergabe als Parameter 5 (p5)
  </CsOptions>

  <CsInstruments>

    instr Sinus
      aSinus = poscil(p4, p5)         ; Anwendung der MIDI-Werte
      out(linenr(aSinus,.1,.5,.01))   ; Hüllkurve mit 0.1 Sekunden Einblende und 0.5 Sekunden Ausblende
    endin

  </CsInstruments>

  <CsScore>
  </CsScore>

</CsoundSynthesizer>

Evenimentele în timp real pot fi generate și de la un instrument Csound în sine. În exemplul următor, fiecare instanță numită apelează o nouă instanță a instrumentului „Sinus”, rezultând un lanț interminabil. Generarea independentă a începutului și a duratei are ca rezultat câteva suprapuneri mici și câteva pauze.

<CsoundSynthesizer>

  <CsOptions>
    -o dac
  </CsOptions>

  <CsInstruments>
    seed 0                                           ; Zufallszahlen werden bei jedem Durchlauf neu generiert

    instr Sinus
      aSinus = poscil(ampdbfs(random:i(-30,-6)), cpsoct(random:i(8,10)))  ; Lautstärken -30..-6 dB, Tonhöhen Oktave 8..10
      out(linen(aSinus,p3/10,p3,p3/2))               ; Ton wird mit Hüllkurve herausgegeben
      schedule("Sinus",random:i(1,3),random:i(1,5))  ; neue Instanz wird gerufen (Start 1..3, Dauer 1..5 Sekunden)
    endin

    schedule("Sinus",0,3)                            ; erster Aufruf des Instruments, danach Selbstgenerierung

  </CsInstruments>

</CsoundSynthesizer>

Capete frontale

Diverse frontend-uri sunt disponibile astăzi pentru a scrie cod Csound, pentru a-l compila, pentru a apela o instanță a Csound și pentru a gestiona evenimente în timp real. Apelarea Csound pe linia de comandă este clasică . Dacă, de exemplu, ultimul exemplu este salvat ca fișier text simplu sub numele „endlos.csd”, acesta poate fi executat într-un terminal pe Linux, Mac sau Windows după cum urmează:

csound endlos.csd

Există, de asemenea, medii de dezvoltare integrate care oferă evidențierea sintaxei și interfețe grafice de utilizator. Cea mai comună este în prezent CsoundQt, dar Varza și Albastrul prezintă, de asemenea, propriile medii pentru alinieri specifice. Pentru Android , Csound este oferit cu o interfață grafică subțire și opțiuni pentru integrarea widgeturilor HTML5 . Există diverse aplicații pentru iOS care utilizează Csound sau care permit redarea programelor Csound.

API oferă cea mai flexibilă integrare a Csound . Csound Engine (în esență, o bibliotecă audio ) este apelat și controlat printr-un limbaj de programare diferit. Există legături pentru C , C ++ , Python , Java (inclusiv Scala și Clojure ), JavaScript , C # , Common Lisp și altele.

Link-uri web

Dovezi individuale

  1. Csound 6.14.0 Csound Community
  2. ^ Richard Boulanger: Cartea Csound. MIT Press, 2000, pp. Xxix.
  3. Recompilarea unui instrument în timp ce funcționează Csound este posibilă și din moment ce Csound 6 („Codare live”)
  4. CsoundQt. Adus la 1 octombrie 2020 .
  5. Acasă | Audio de varză. Adus la 1 octombrie 2020 .
  6. albastru - un mediu de compoziție muzicală pentru Csound. Adus la 1 octombrie 2020 .
  7. Aplicații ale Csound | Comunitatea Csound. Adus la 1 octombrie 2020 .
  8. ^ Csound: Pagina principală. Adus la 1 octombrie 2020 .