GEN01

GEN01 — Transfère des données d'un fichier son dans une table de fonction.

Description

Ce sous-programme transfère des données d'un fichier son dans une table de fonction.

Syntaxe

f#  date  taille  1  codfic  decal  format  canal

Exécution

taille -- nombre de points dans la table. Ordinairement une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f) ; la taille de table maximale est de 16777216 (224) points. L'allocation de mémoire pour la table peut être différée en mettant ce paramètre à 0 ; la taille allouée est alors le nombre de points dans le fichier (probablement pas une puissance de 2), et la table n'est pas utilisable par les oscillateurs normaux, mais par l'unité loscil. Le fichier son peut aussi être mono ou stéréo.

codfic -- entier ou chaîne de caractères dénotant le nom du fichier son source. Un entier dénote le fichier soundin.codfic ; une chaîne de caractères (entre apostrophes doubles, espaces autorisés) donne le nom du fichier lui-même, optionnellement un nom de chemin complet. Si le chemin n'est pas complet, le fichier est d'abord cherché dans le répertoire courant, ensuite dans celui qui est donné par la variable d'environnement SSDIR (si elle est définie) enfin par SFDIR. Voir aussi soundin.

decal -- commence à lire à decal secondes dans le fichier.

canal -- numéro du canal à lire. 0 indique de lire tous les canaux.

format -- s'il est positif, il est ignoré, mais s'il est négatif, il spécifie le format audio d'un fichier brut :


          -1 - 8-bit caractères signés
          -2 - 8-bit octets A-law
          -3 - 8-bit octets U-law
          -4 - 16-bit entiers courts
          -5 - 32-bit entiers longs
          -6 - 32-bit flottants
          -7 - 8-bit caractères non signés
          -8 - 24-bit entiers
          -9 - 64-bit doubles

[Note] Note

Cette liste n'est pas la même que celle qui est dans diskin2.

Si format = 0 le format des échantillons est lu dans l'en-tête du fichier son.

[Note] Note

  • La lecture s'arrête à la fin du fichier ou lorsque la table est pleine. Les cellules de la table non remplies contiendront des zéros.

  • Si p4 est positif, la table sera post-normalisée (reproportionnée avec une valeur absolue maximale de 1 après génération). Une valeur de p4 négative empêche cette opération.

  • GEN01 fonctionne aussi avec les formats WAV et OGG ainsi que d'autres formats ; ceux-ci dépendent de libsndfile. Voir http://www.mega-nerd.com/libsndfile/

Exemples

Voici un exemple de la routine GEN01. Il utilise le fichier gen01.csd et plusieurs fichiers son.

Exemple 1274. Un exemple de la routine GEN01.

<CsoundSynthesizer> 
<CsOptions> 
; Select audio/midi flags here according to platform 
-odac     ;;;realtime audio out 
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too 
; For Non-realtime ouput leave only the line below: 
; -o gen01.wav -W ;;; for file output any platform 
</CsOptions> 
<CsInstruments> 

sr = 44100 
ksmps = 32 
nchnls = 2 
0dbfs  = 1 

instr 1	;plays deferred and non-deferred sounds with loscil

ifn = p4
ibas = 1

asig loscil 1, 1, ifn, ibas
     outs asig, asig
    
endin

instr 2	;plays only non-deffered sound            

isnd  = p4
aread line   sr*p3, p3, 0				;play this backward
asig  tablei aread, isnd				;use table 1
      outs   asig, asig
        
endin
</CsInstruments>
<CsScore>
f 1 0 131072 1 "beats.wav" 0 0 0			;non-deferred sound
f 2 0    0   1 "flute.aiff" 0 0 0			;& deferred sounds in 
f 3 0    0   1 "beats.ogg" 0 0 0			;different formats					

i 1 0 1 1
i 1 + 1 2
i 1 + 1 3

i 2 4 2 1	;non-deffered sound for instr. 2
e
</CsScore>
</CsoundSynthesizer>


Voici les diagrammes des formes d'onde des routines GEN01 utilisées dans l'exemple :

f 1 0 131072 1 "beats.wav" 0 0 0 - son non-différé.

f 1 0 131072 1 "beats.wav" 0 0 0 - son non-différé.

f 2 0 0 1 "flute.aiff" 0 0 0 - son différé

f 2 0 0 1 "flute.aiff" 0 0 0 - son différé

f 3 0 0 1 "beats.ogg" 0 0 0 - son différé

f 3 0 0 1 "beats.ogg" 0 0 0 - son différé

Crédits

Septembre 2003. Remerciements au Dr. Richard Boulanger pour avoir signalé les références au format de fichier AIFF.

Revisé dans la v6.11 et dans la v6.12 pour clarifier le statut des en-têtes et des fichiers bruts et pour ajouter trois formats d'échantillons.