loscilx — Lit un son échantillonné multi-canaux depuis une table.
Lit un son échantillonné (jusqu'à 16 canaux) depuis une table, avec avec bouclage d'entretien et de relâchement facultatif.
ar1 [, ar2, ar3, ar4, ar5, ar6, ar7, ar8, ar9, ar10, ar11, ar12, ar13, ar14, \
ar15, ar16] loscilx xamp, kcps, ifn \
[, iwsize, ibas, istrt, imod, ibeg, iend]
ar[] loscilx xamp, kcps, ifn \
[, iwsize, ibas, istrt, imod, ibeg, iend]
ifn -- numéro de table de fonction, désignant typiquement un segment de son échantillonné avec prescription de points de bouclage au moyen de GEN01. Le fichier source peut avoir jusqu'à 16 canaux.
iwsize (facultatif) -- taille de la fenêtre utilisée dans l'interpolation. iwsize (facultatif, zéro par défaut) -- taille de la fenêtre d'interpolation en échantillons. Peut prendre une des valeurs suivantes :
1 : arrondi à l'échantillon le plus proche (pas d'interpolation, pour kpitch=1)
2 : interpolation linéaire
4 : interpolation cubique
>=8 : iwsize interpolation sinc par point avec anti-repliement (lente)
Zéro ou des valeurs négatives sélectionnent l'action par défaut qui est l'interpolation cubique.
ibas (facultatif) -- fréquence de base en Hz du son enregistré. Permet de redéfinir la fréquence donnée dans le fichier audio, mais est requis si le fichier n'en contient pas. La valeur par défaut est 261.626 Hz, le do médian. (Nouveau dans Csound 4.03). Si la valeur est inconnue ou absente, utiliser 1 ici et dans kcps.
istrt (facultatif, 0 par défaut) -- Trame du début de la lecture des données. Si ce n'est pas un nombre entier, les données sont interpolées (voir iwsize).
imod (facultatif, -1 par défaut) -- mode de jeu des boucles d'entretien et de relâchement. 1 signifie un bouclage normal, 2 un bouclage à l'endroit et à l'envers, 0 pas de boucle. La valeur par défaut (-1) choisit le mode et les points de bouclage donnés dans le fichier source. Il ne faut pas oublier de choisir un mode approprié si le fichier ne contient pas cette information.
ibeg, iend (facultatif, dépendant d'imod) -- points de début et de fin des boucles d'entretien et de relâchement. Ils sont mesurés en trames d'échantillon depuis le début du fichier. Si aucun point de boucle n'est spécifié alors qu'un mode de bouclage (imod) est donné, le fichier sera bouclé sur toute sa longueur.
ar1, ar2, ... ar[] -- la sortie au taux audio. Le nombre de sorties doit correspondre au nombres de canaux dans le fichier échantillonné.
xamp -- l'amplitude du signal de sortie.
kcps -- le facteur de lecture du fichier. Par exemple, une valeur de 1 ne provoque pas de transposition, 1.5 transpose d'une quinte vers le haut et 2 d'une octave.
loscilx échantillonne la ftable audio au taux déterminé par kcps, puis multiplie le résultat par xamp. L'incrément d'échantillonnage pour kcps dépend de la fréquence de la note de base de la table ibas, et est automatiquement ajusté si la valeur du sr de l'orchestre diffère de celle utilisée lors de l'enregistrement de la source. Dans cette unité la ftable est toujours échantillonnée avec interpolation.
Si l'échantillonnage atteint le point final de la boucle d'entretien et que le bouclage est actif, le point d'échantillonnage est modifié et loscil continue sa lecture depuis ce segment de boucle. Si l'instrument reçoit un signal turnoff (depuis la partition ou depuis un évènement MIDI noteoff), le prochain point final d'entretien est ignoré et l'échantilllonnage continue vers le point final de la boucle de relâchement ou vers le dernier échantillon (des valeurs nulles).
Si l'on veut boucler sur tout le fichier, spécifier un mode de bouclage dans imod et n'entrer aucune valeur dans ibeg et dans iend.
Voici un exemple de l'opcode loscilx. Il utilise les fichiers loscil.csd et drumsSlp.wav.
Exemple 539. Exemple de l'opcode loscilx.
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 loscilx.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Istvan Varga 2006 and Menno Knevel 2022 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gS_loop = "drumsSlp.wav" gisr filesr gS_loop gilength filelen gS_loop gibeats = 16 gi_sampleleft ftgen 1, 0, 0, 1, gS_loop, 0, 4, 0 instr 1 idur = p3 iamp = p4 ibeat = p5 itune = p6 ipos = ibeat / gibeats * gilength * gisr aenv linseg iamp, idur - 0.01, iamp, 0.01, 0 a1, a2 loscilx aenv, itune, 1, 0, 1, ipos, 0 ; in this case stereo file outs a1, a2 endin </CsInstruments> <CsScore> t 0 170 ; Measure 1 i 1 0.0 0.5 0.707 2 1 i 1 1.0 0.5 0.707 1 1 i 1 2.5 0.5 0.707 0 1 i 1 3.0 0.5 0.707 1 .8 ; Measure 2 i 1 4.0 0.5 0.707 0 1 i 1 5.0 0.5 0.707 1 1 i 1 6.5 0.5 0.707 0 1 i 1 7.0 0.5 0.707 1 1 ; Measure 3 i 1 8.0 0.5 0.707 0 1 i 1 9.0 0.5 0.707 1 1 i 1 10.5 0.5 0.707 0 1 i 1 11.0 0.5 0.707 1 1 ; Measure 4 i 1 12.0 0.5 0.707 0 1 i 1 13.0 0.5 0.707 1 1 i 1 14.5 0.5 0.707 0 1 i 1 15.0 0.5 0.707 2 .8 </CsScore> </CsoundSynthesizer>