loscil3

loscil3 — Lit un son échantillonné depuis une table avec interpolation cubique.

Description

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

Syntaxe

ar1 [,ar2] loscil3 xamp, kcps, ifn [, ibas] [, imod1] [, ibeg1] [, iend1] \
      [, imod2] [, ibeg2] [, iend2]
aph, ar1 [,ar2] loscil3phs 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 (un groupe d'échantillons à la même date, un par canal. En mono, 1 trame = 1 échantillon. En stéréo, 1 trame = 2 échantillons, etc.) 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 loscilphs3).

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.

loscil3 est identique à loscil sauf qu'il utilise l'interpolation cubique. Nouveau dans la version 3.50 de Csound.

[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 loscil3 en mono :

a1 loscil3 10000, 1, 1, 1, 1

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

a1, a2 loscil3 10000, 1, 1, 1, 1

Exemples

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

Exemple 538. Exemple de l'opcode loscil3.

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 loscil3.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Menno Knevel 2022

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
   asigL loscil3 .8, 1, p4, 1           ; sample loops between 1 and end loop point at 2 secs.
   asigR = 	asigL
elseif (ichnls == 2) then
   asigL, asigR loscil3 .8, 1, p4, 1    ; sample loops between 2 and end loop point at 3 secs.
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

loscil et GEN01

Crédits

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