sflooper

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.

Description

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.

Syntaxe

ar1, ar2 sflooper ivel, inotenum, kamp, kpitch, ipreindex, kloopstart, kloopend, kcrossfade \
      [, istart, imode, ifenv, iskip] 

Initialisation

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.

Exécution

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é).

Exemples

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>


Voir aussi

sfilist, sfinstr, sfinstrm, sfload, sfpassign, sfplaym, sfplist, sfpreset

Crédits

Auteur : Victor Lazzarini
Août 2007

Nouveau dans la version 5.07 de Csound