diskin2

diskin2 — Lit des données audio depuis un fichier, et peut altérer leur hauteur au moyen d'un des types d'interpolation disponibles ainsi que convertir le taux d'échantillonnage pour s'accorder à celui de l'orchestre.

Description

Lit des données audio depuis un fichier, et peut altérer leur hauteur au moyen d'un des types d'interpolation disponibles ainsi que convertir le taux d'échantillonnage pour s'accorder à celui de l'orchestre. diskin2 peut également lire des fichiers multicanaux dont le nombre de canaux est compris entre 1 et 24 pour les versions de Csound antérieures à la 5.14, et entre 1 et 40 pour les versions suivantes.

Syntaxe

a1[, a2[, ... aN]] diskin2 ifilcod[, kpitch[, iskiptim \
      [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]
diskin2 offre plus de contrôle et une meilleure qualité de son que diskin mais au prix d'une utilisation plus intensive des ressources CPU.
ar1[] diskin2 ifilcod[, kpitch[, iskiptim \
      [, iwrap[, iformat[, iwsize[, ibufsize[, iskipinit]]]]]]]

(dans la version de la sortie dans un tableau, le nombre de canaux de sortie n'a pas de limite supérieure.)

Initialisation

ifilcod -- entier ou chaîne de caractères donnant le nom du fichier son source. Un entier indique le fichier soundin.filcod ; une chaîne de caractères (entre guillemets, espaces autorisés) donne le nom de fichier lui-même, éventuellement un nom de chemin complet. Si ce n'est pas un nom de chemin complet, le fichier nommé est d'abord cherché dans le répertoire courant, puis dans celui qui est donné par la variable d'environnement SSDIR (si elle est définie) puis par SFDIR. Voir aussi GEN01. Note : il est possible que les fichiers contenant plus de 231-1 trames d'échantillons ne soient pas joués correctement sur les plates-formes 32 bit ; cela donne une longueur maximale d'environ trois heures avec un taux d'échantillonnage de 192000 Hz.

iskiptim (facultatif, zéro par défaut) -- portion du son en entrée à ignorer, exprimée en secondes, en supposant que kpitch=1. Peut être négatif, pour ajouter -iskiptim/kpitch secondes de délai au lieu de d'ignorer une partie du son.

[Note] Note

Si iwrap est différent de 0 (lecture cyclique), iskiptim ne retardera pas le son si une valeur négative est utilisée. Au lieu de cela, la lecture commencera du même décalage avant la fin du fichier.

iwrap (facultatif, zéro par défaut) -- s'il a n'importe quelle valeur non nulle, les positions de lecture négatives ou au-delà de la fin du fichier sont ramenées à l'intérieur de la durée du fichier son au lieu d'être remplacées par des échantillons nuls. Pratique pour jouer un fichier en boucle.

[Note] Note

Si iwrap est activé, la longueur du fichier ne doit pas être inférieure à la taille de la fenêtre d'interpolation (voir ci-dessous), sinon il pourra y avoir des craquements dans le son de sortie.

iformat (facultatif, zéro par défaut) -- fixe le format d'échantillon pour les fichiers bruts (sans en-tête). Ce paramètre doit être nul si le fichier a un en-tête. Les valeurs admises pour les fichiers bruts sont :

  • 1 : entiers courts sur 16 bit

  • 2 : caractères signés sur 8 bit (les 8 bit de poids fort d'un entier sur 16 bit)

  • 3 : octets sur 8 bit A-law

  • 4 : octets sur 8 bit U-law

  • 5 : entiers courts sur 16 bit

  • 6 : entiers longs sur 32 bit

  • 7 : flottants sur 32 bit

  • 8 : entiers non signés sur 8 bit

  • 9 : entiers sur 24 bit

  • 10 : doubles sur 64 bit

[Note] Note

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

iwsize (facultatif, zéro par défaut) -- taille de la fenêtre d'interpolation, en échantillons. Peut prendre une de ces valeurs :

  • 1 : arrondi à l'échantillon le plus proche (pas d'interpolation, pour kpitch=1)

  • 2 : interpolation linéaire

  • 4 : interpolation cubique

  • >= 8 : interpolation par sinc de iwsize points avec anti-aliasing (lent)

Zéro ou des valeurs négatives sélectionnent la valeur par défaut, qui est l'interpolation cubique.

[Note] Note

S'il y a interpolation, kpitch est automatiquement mis à l'échelle par le rapport des taux d'échantillonnage du fichier et de l'orchestre, afin que le fichier soit toujours joué à la hauteur originale si kpitch vaut 1. Cependant, la conversion du taux d'échantillonnage est désactivée lorsque iwsize vaut 1.

ibufsize (facultatif, zéro par défaut) -- taille du tampon en échantillons mono (pas en trames d'échantillons). Ce n'est que la valeur suggérée, la valeur retenue étant arrondie afin que le nombre de trames d'échantillons soit une puissance entière de deux et soit comprise entre 128 (ou iwsize s'il est supérieur à 128) et 1048576. La valeur par défaut, 4096, choisie par zéro ou une valeur négative, sera adéquate dans la plupart des cas, mais lors du mélange de plusieurs fichiers son de grande taille en temps différé, une grande taille de tampon est recommandée pour améliorer l'efficacité des lectures sur disque. Pour une sortie en temps réel, la lecture des fichiers depuis un RAM disque rapide (sur les plates-formes qui le permettent) avec une petite taille de tampon est préférable.

iskipinit (facultatif, zéro par défaut) -- supprime l'initialisation s'il est non nul.

Exécution

a1 ... a24 -- signaux de sortie, dans l'intervalle allant de -0dbfs à 0dbfs. Tous les échantillons avant le début du fichier (positions négatives) et après la fin du fichier prennent la valeur zéro, à moins que iwrap soit non nul. Le nombre d'arguments de sortie doit être le même que le nombre de canaux du fichier son - lequel peut être déterminé avec l'opcode filenchnls, sinon il y aura une erreur d'initialisation.

ar1[] --- signaux de sortie, dans un tableau de taux-a de taille N, où N est le nombre de canaux dans le fichier. Les tableaux sont automatiquement alloués avec la taille correcte.

[Note] Note

Il est plus efficace de lire un seul fichier avec plusieurs canaux, que plusieurs fichiers à un seul canal, spécialement avec de grandes valeurs de iwsize.

kpitch -- transpose la hauteur du son en entrée par ce facteur (par exemple 0.5 signifie une octave plus bas, 2 une octave plus haut, et 1 la hauteur originale, qui est la valeur par défaut). Des valeurs fractionnaires et négatives sont permises (les dernières provoquant une lecture à l'envers, cependant, dans ce cas, iskiptim doit prendre une valeur positive, par exemple la longueur du fichier, ou bien iwrap doit être non nul, sinon rien ne sera joué). S'il y a interpolation et que le taux d'échantillonnage du fichier est différent de celui de l'orchestre, le rapport de transposition est automatiquement ajusté de façon à ce que kpitch=1 joue à la hauteur originale. Un iwsize élevé (40 ou plus) peut améliorer significativement la qualité du son lors d'une transposition vers l'aigu, au prix d'une utilisation plus intensive des ressources CPU.

Exemples

Voici un exemple de l'opcode diskin2. Il utilise les fichiers diskin2.csd et beats.wav.

Exemple 238. Exemple de l'opcode diskin2.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

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

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

instr 1

ktrans linseg 1, 5, 2, 10, -2
a1     diskin2 "beats.wav", ktrans, 0, 1, 0, 32
       outs a1, a1

endin

</CsInstruments>
<CsScore>

i 1 0 15
e

</CsScore>
</CsoundSynthesizer>


Voir aussi

in, inh, ino, inq, ins, soundin et diskin

Crédits

Auteur : Istvan Varga
2005

Nouveau dans la version 5.00

kpitch devient facultatif dans la version 6.06