loscil

loscil — Lit un son échantillonné depuis une table.

Description

Lit un son échantillonné (mono ou stéréo) depuis une table, avec des boucles facultatives d'entretien et de relâchement. Une version donnant la position exacte dans la table (phase) correspondant à l'échantillon en sortie est fournie comme opcode alternatif.

Syntaxe

ar1 [,ar2] loscil xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] \
      [, imod2] [, ibeg2] [, iend2]
aph, ar1 [,ar2] loscilphs xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] \
       [, imod2] [, ibeg2] [, iend2]

Initialisation

ifn -- numéro de table de fonction, contenant typiquement un son échantillonné avec des points de boucle précisés, remplie au moyen de GEN01. Le fichier source peut être mono ou stéréo.

ibas (facultatif) -- fréquence de base en Hz du son enregistré. Elle remplace éventuellement la fréquence donnée dans le fichier audio, mais devient nécessaire si le fichier n'en contient pas. La valeur par défaut est 261,626 Hz, c-à-d le do médian. (Nouveau dans Csound 4.03). Si la valeur est inconnue ou absente il faut utiliser 1 ici et dans kcps.

imod1, imod2 (facultatif, -1 par défaut) -- modes d'interprétation des boucles d'entretien et de relâchement. Une valeur de 1 signifie une boucle normale, 2 signifie une boucle à l'endroit et à l'envers, 0 signifie pas de boucle. La valeur par défaut (-1) s'en remet au mode et aux points de boucle définis dans le fichier source. Il faut s'assurer de choisir un mode approprié si le fichier ne contient pas cette information.

ibeg1, iend1, ibeg2, iend2 (facultatifs, dépendants de mod1, mod2) -- début et fin des boucles d'entretien et de relâchement. Ils sont mesurés en trames d'échantillon depuis le début du fichier, et auront ainsi la même valeur que le son soit mono ou stéréo. Si aucun point de boucle n'est spécifié et qu'un mode de boucle est donné (imod1, imod2, le fichier sera lu en boucle sur toute sa longueur.

Exécution

aph -- la position normalisée dans la table correspondant à l'échantillon en sortie (seulement pour loscilphs).

ar1, ar2 -- la sortie de taux audio. Il n'y a que ar1 pour une sortie mono, alors qu'il y a ar1 et ar2 pour une sortie stéréo.

xamp -- l'amplitude du signal de sortie.

kcps -- la fréquence du signal de sortie en Hz.

loscil parcourt la ftable audio à un taux déterminé par kcps, en multipliant le résultat par xamp. L'incrément de lecture pour kcps dépend de la fréquence de base de la table ibas, et il est automatiquement ajusté si le taux d'échantillonnage sr de l'orchestre diffère de celui auquel la source a été enregistrée. Dans cette unité, ftable est toujours lue avec interpolation.

Si la lecture atteint la fin de la boucle d'entretien et que la boucle est active, le point de lecture sera modifié et loscil continuera sa lecture depuis l'intérieur de la boucle. Une fois que l'instrument reçoit un signal turnoff (depuis la partition ou depuis un évènement MIDI noteoff), la fin de la boucle est ignorée et la lecture continue vers la fin de la boucle de relâchement, ou vers le dernier échantillon (dorénavant vers zéro).

loscil est l'unité de base pour bâtir un échantilloneur. Avec un ensemble suffisamment conséquent de sons de piano échantillonnés, par exemple, cette unité peut les rééchantillonner pour simuler les hauteurs manquantes. La détection de la source de son la plus proche d'une hauteur donnée peut être réalisée par la consultation d'une table. Une fois qu'un instrument échantillonneur est actif, son point de turnoff peut être imprévisible et nécessiter une enveloppe de relâchement externe ; on réalise souvent cela en munissant le son échantillonné d'un détecteur linenr, qui allonge la durée d'un instrument à la fin de la note d'une durée spécifique car il implémente une chute.

Si l'on veut boucler sur tout le fichier, il faut spécifier un mode de boucle dans imod1 et ne donner aucune valeur pour ibeg et iend.

[Attention] Note pour les utilisateurs de Windows

Les utilisateurs de Windows utilisent normalement l'antislash, « \ », lorsqu'ils écrivent les chemins de leurs fichiers. Par exemple, un utilisateur de Windows pourra utiliser le chemin « c:\music\samples\loop001.wav ». Ceci pose problème car les l'antislash est normalement utilisé pour spécifier des caractères spéciaux.

Pour écrire correctement ce chemin dans Csound, on peut :

  • Soit utiliser le slash : c:/music/samples/loop001.wav

  • Soit utiliser le caractère spécial d'antislash, « \\ » : c:\\music\\samples\\loop001.wav

[Note] Note

Voici loscil en mono :

a1 loscil 10000, 1, 1, 1 ,1

... et loscil en stéréo :

a1, a2 loscil 10000, 1, 1, 1 ,1

Exemples

Voici un exemple de l'opcode loscil. Il utilise les fichiers loscil.csd, drumsMlp.wav et drumsSlp.wav.

Exemple 537. Exemple de l'opcode loscil.

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     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o loscil.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Menno Knevel 20222

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

instr 1     ; loscil makes use of embedded loop points in wav

ichnls = ftchnls(p4)
prints  "\nnumber of channels = %d\n\n", ichnls

if (ichnls == 1) then                   ; sample is played 2 x faster
   asigL loscil .8, 1.5, p4, 1          ; sample loops between 1 and end loop point at 2 secs. in sample
   asigR = 	asigL
elseif (ichnls == 2) then               ; sample is played at half speed
   asigL, asigR loscil .8, .5, p4, 1    ; sample loops between 2 and end loop point at 3 secs. in sample
else                                    ; safety precaution if not mono or stereo
   asigL = 0
   asigR = 0
endif
        outs asigL, asigR

endin
</CsInstruments>
<CsScore>
f 1 0 0 1 "drumsMlp.wav" 0 0 0
f 2 0 0 1 "drumsSlp.wav" 0 0 0

i 1 0 7 1   ;mono file
i 1 7 12 2  ;stereo file
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

loscil3 et GEN01

Crédits

La note au sujet de la différence mono/stéréo est due à Rasmus Ekman.