Differenze tra le versioni di "Creare un file WAV da un file .orc e un file .sco di Csound con le funzioni esterne del API di libcsound64"

Da Gambas-it.org - Wikipedia.
(Creata pagina con ''''Csound''' è un linguaggio di programmazione per il suono scritto in C basata su un'unità che genera suono anche modificabile dall'utente. ''Csound'' si serve di due file ...')
 
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
'''Csound''' è un linguaggio di programmazione per il suono scritto in C basata su un'unità che genera suono anche modificabile dall'utente. ''Csound'' si serve di due file di testo appositamente formattati. Il file "''orchestra''" (.orc) descrive la natura degli strumenti e dice al computer "come" sintetizzare il suono, mentre il file "''score''" (.sco) descrive le note e gli altri parametri lungo una linea temporale e dice quindi al computer "quando". Csound elabora le istruzioni contenute in questi file e restituisce un file audio o un flusso audio in tempo reale.
+
'''Csound''' è un linguaggio di programmazione, scritto in C, per il suono. Esso si basa su un'unità che genera suono modificabile dall'utente. ''Csound'' si serve di due file di testo appositamente formattati: il file "''orchestra''" (.orc) ed il file "''score''" (.sco). Il file "''orchestra''" descrive la natura degli strumenti e dice al computer "come" sintetizzare il suono, mentre il file "''score''" descrive le note e gli altri parametri lungo una linea temporale e dice quindi al computer "quando" eseguire quelle note e gli altri elementi dell'audio. Csound elabora le istruzioni contenute in questi file e restituisce un file audio o un flusso audio in tempo reale.
  
  
Riga 27: Riga 27:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
  Dim csound As Pointer
+
  Dim csound As Pointer
  Dim result, argc As Integer
+
  Dim result, argc As Integer
  Dim argv As String[]
+
  Dim argv As String[]
 
 
 
   
 
   
 
  <FONT color=gray>' ''Crea un oggetto "CSound":''</font>
 
  <FONT color=gray>' ''Crea un oggetto "CSound":''</font>
Riga 39: Riga 38:
 
     argc = 3
 
     argc = 3
 
      
 
      
     argv = [" ", "''percorso/file.orc''", "''/percorso/file.sco''"]
+
     argv = [" ", "<FONT color=darkgreen>''percorso/file.orc''</font>", "<FONT color=darkgreen>''/percorso/file.sco''</font>"]
 
      
 
      
 
  <FONT color=gray>' ''Esegue un ciclo per compilare i due file in entrata e creare il file wav in uscita:''</font>
 
  <FONT color=gray>' ''Esegue un ciclo per compilare i due file in entrata e creare il file wav in uscita:''</font>
Riga 54: Riga 53:
 
     csoundDestroy(csound)
 
     csoundDestroy(csound)
 
   
 
   
  '''End'''
+
  End
 +
Il file ''wav'' di uscita, denominato automaticamente "''test.wav''", sarà generato nel percorso dell'applicazione Gambas.
  
  
  
 
=Riferimenti=
 
=Riferimenti=
[1] [http://www.csounds.com Il sito di Csound]
+
[1] http://www.csounds.com
  
[2] [http://csound.github.io/docs/api/index.html L'API di Csound]
+
[2] http://csound.github.io/docs/api/index.html
  
 
[3] [http://ecmc.rochester.edu/ecmc/docs/allan.cs/  Eastman Csound Tutorial]
 
[3] [http://ecmc.rochester.edu/ecmc/docs/allan.cs/  Eastman Csound Tutorial]

Versione attuale delle 05:07, 18 giu 2024

Csound è un linguaggio di programmazione, scritto in C, per il suono. Esso si basa su un'unità che genera suono modificabile dall'utente. Csound si serve di due file di testo appositamente formattati: il file "orchestra" (.orc) ed il file "score" (.sco). Il file "orchestra" descrive la natura degli strumenti e dice al computer "come" sintetizzare il suono, mentre il file "score" descrive le note e gli altri parametri lungo una linea temporale e dice quindi al computer "quando" eseguire quelle note e gli altri elementi dell'audio. Csound elabora le istruzioni contenute in questi file e restituisce un file audio o un flusso audio in tempo reale.


Mostreremo di seguito un breve codice che utilizza un file .orc ed un file .sco per generare in uscita il corrispondente file audio di tipo .wav . Per poter ottenere questo risultato, faremo uso della libreria (nella sua attuale versione): libcsound64

Library "libcsound64"

' "CSOUND* csoundCreate (void * hostData)
' Creates an instance of Csound. Returns an opaque pointer that must be passed to most Csound API functions.
Private Extern csoundCreate(hostData As Pointer) As Pointer

' int csoundCompile (CSOUND *, int argc, char **argv)
' Compiles Csound input files (such as an orchestra and score)
' As Directed by the supplied command - Line arguments, but does Not perform them.
Private Extern csoundCompile(csP As Pointer, argc As Integer, argv As String[]) As Integer

' int csoundPerformKsmps (CSOUND *)
' Senses input events, and performs one control sample worth (ksmps) of audio output.
Private Extern csoundPerformKsmps(csP As Pointer) As Integer

' int csoundCleanup (CSOUND *)
' Prints information about the end of a performance, and closes audio and MIDI devices.
Private Extern csoundCleanup(csP As Pointer) As Integer

' void csoundDestroy (CSOUND *)
' Destroys an instance Of Csound.
Private Extern csoundDestroy(csP As Pointer)


Public Sub Main()

  Dim csound As Pointer
  Dim result, argc As Integer
  Dim argv As String[]

' Crea un oggetto "CSound":
   csound = csoundCreate(0)
   
   argc = 3
   
   argv = [" ", "percorso/file.orc", "/percorso/file.sco"]
   
' Esegue un ciclo per compilare i due file in entrata e creare il file wav in uscita:
   result = csoundCompile(csound, argc, argv)
   if result <> 0 then Error.Raise("Errore alla funzione 'csoundCompile()' !")

   If Not result Then
     While csoundPerformKsmps(csound) = 0
     Wend
     csoundCleanup(csound)
   Endif
   
' Distrugge l'oggetto "Csound":
   csoundDestroy(csound)

End

Il file wav di uscita, denominato automaticamente "test.wav", sarà generato nel percorso dell'applicazione Gambas.


Riferimenti

[1] http://www.csounds.com

[2] http://csound.github.io/docs/api/index.html

[3] Eastman Csound Tutorial