sflooper — Joue un preset d'échantillons SoundFont2 (SF2), générant un son stéréo, avec une boucle en fondu-enchainé à durée variable, définie par l'utilisateur.
Joue un preset d'échantillons SoundFont2 (SF2), générant un son stéréo, comme sfplay. Mais à l'inverse de ce dernier, il ignore les points de boucle fixés dans le fichier SF2 et les remplace par une boucle en fondu-enchainé définie par l'utilisateur. C'est un mélange de sfplay et de flooper2.
ar1, ar2 sflooper ivel, inotenum, kamp, kpitch, ipreindex, kloopstart, kloopend, kcrossfade \
[, istart, imode, ifenv, iskip]
ivel -- vélocité.
inotenum -- numéro de note MIDI.
ipreindex -- indice de preset.
istart -- début de la lecture en secondes.
imode -- modes de boucle : 0 à l'endroit, 1 à l'envers, 2 à l'envers et à l'endroit [0 par défaut].
ifenv -- s'il est différent de zéro, numéro de la table de l'enveloppe de fondu-enchainé. La valeur par défaut de 0 définit un fondu-enchainé linéaire.
iskip -- s'il vaut 1, l'initialisation de l'opcode est ignorée, pour les notes liées, l'exécution continuant depuis la position dans la boucle où la note précédente s'est terminée. Avec la valeur par défaut de 0, l'initialisation a lieu.
kamp -- contrôle de l'amplitude
kpitch -- contrôle de la hauteur (rapport de transposition) ; les valeurs négatives sont interdites.
kloopstart -- début de la boucle (en secondes). Noter que bien qu'étant de taux-k, les paramètres de boucle comme celui-ci ne sont mis à jour qu'une fois par itération de la boucle. Si le début de la boucle est fixé au-dela de la fin des échantillons, il n'y aura pas de boucle.
kloopend -- fin de la boucle (en secondes), mis à jour une seule fois par itération de la boucle.
kcrossfade -- longueur du fondu enchainé (en secondes), mis à jour une seule fois par itération de la boucle et limité par la longueur de la boucle.
sflooper joue un preset, générant un son stéréo.
Ces opcodes ne supportent que la structure d'échantillon des fichiers SF2. La structure de modulateur du format SoundFormat2 n'est pas supportée dans Csound. Tout traitement ou modulation des données échantillonnées est à la charge de l'utilisateur de Csound, ce qui permet de s'affranchir de toutes les restrictions imposées par le standard SF2.
Note : les points de boucle sont fixés par rapport à la touche de base de chaque son échantillonné faisant partie du preset du soundfont. Par exemple, un soundfont peu avoir un seul son échantillonné pour tout le clavier. Dans ce cas, sflooper fonctionnera comme flooper et flooper2, car lorsque le son échantillonné est transposé (joué à différentes vitesses), la boucle se raccourcit ou s'allonge. Au contraire, si le soundfont possède un son échantillonné pour chaque touche, il n'y aura pas de transposition et la boucle gardera la même longueur (sauf si kpitch est modifié).
Voici un exemple de l'opcode sflooper. Il utilise le fichier sflooper.csd.
Exemple 784. Exemple de l'opcode sflooper.
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 ; Audio out Audio in No messages -odac -+rtmidi=virtual -M0 ;;;realtime audio in, midi in ; For Non-realtime ouput leave only the line below: ; -o sflooper.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 isf sfload "07AcousticGuitar.sf2" sfpassign 0, isf instr 1 ; play from score and midi keyboard mididefault 60, p3 midinoteonkey p4, p5 inum init p4 ivel init p5 print ivel ivel init ivel/127 ;velocity dependent kamp linsegr 1,1,1,.1,0 ;envelope kamp = kamp * .0002 ;scale amplitude (= kamp/5000) kfreq init 1 ;do not change freq from sf ;"07AcousticGuitar.sf2" contains 2 samples, on notes E1 and C#4 ;start loop from beginning, loop .2 seconds - on the root key of these samples aL,aR sflooper ivel, inum, kamp*ivel, kfreq, 0, 0, .2, .05 outs aL, aR endin </CsInstruments> <CsScore> f0 60 ; stay active for 1 minute i1 0 1 60 100 i1 + 1 62 < i1 + 1 65 < i1 + 1 69 10 e </CsScore> </CsoundSynthesizer>