sfplaym

sfplaym — Joue un preset d'échantillons SoundFont2 (SF2), générant un son mono.

Description

Joue un preset d'échantillons SoundFont2 (SF2), générant un son mono. Ces opcodes permettent la gestion de la structure d'échantillon des fichiers SF2. Afin de comprendre l'utilisation de ces opcodes, il faut connaître le format SF2 dont on peut trouver une brève description dans la section format de fichier SoundFont2.

Syntaxe

ares sfplaym ivel, inotenum, xamp, xfreq, ipreindex [, iflag] [, ioffset] [, ienv]

Initialisation

ivel -- vélocité.

inotenum -- numéro de note MIDI.

ipreindex -- indice du preset.

iflag (facultatif) -- drapeau concernant le comportement de xfreq et de inotenum.

ioffset (facultatif) -- endroit où commence la lecture, en échantillons.

ienv (facultatif) -- active et détermine l'enveloppe d'amplitude. 0 = pas d'enveloppe, 1 = attaque et chute linéaires, 2 = attaque linéaire, chute exponentielle (voir ci-dessous). La valeur par défaut est 0.

Exécution

xamp -- facteur de correction de l'amplitude.

xfreq -- valeur de fréquence ou multiplicateur de fréquence, selon la valeur de iflag. Quand iflag = 0, xfreq est un multiplicateur de la fréquence par défaut, fixée par le preset SF2 à la valeur inotenum. Quand iflag = 1, xfreq est la fréquence absolue du son produit, en Hz. La valeur par défaut est 0.

Lorsque iflag = 0, inotenum fixe la fréquence de la sortie en fonction du numéro de note MIDI utilisé, et xfreq est utilisé comme un multiplicateur. Lorsque iflag = 1, la fréquence de la sortie est fixée directement par xfreq. Cela permet l'utilisation de n'importe quelle échelle micro-tonale. Cependant, cette méthode n'est conçue pour travailler correctement qu'avec des presets accordés selon le classique tempérament égal. L'utilisation de cette méthode avec un preset ayant déjà un accordage non standard ou bien avec des presets de drum-kit donnera des résultats imprévisibles.

L'amplitude peut être ajustée en variant l'argument xamp qui agit comme un multiplicateur.

Noter que xamp et xfreq peuvent opérer aussi bien au taux-k qu'au taux-a. Les deux arguments doivent utiliser des variables de même taux, sinon sfplay ne fonctionnera pas correctement. ipreindex doit contenir un numéro associé préalablement à un preset, ou Csound se plantera.

Le paramètre ioffset permet de démarrer le son depuis un autre échantillon que le premier. Il faut s'assurer que sa valeur est inférieure à la longueur du son. Sinon, il y a un risque de plantage de Csound.

Le paramètre ienv active et détermine l'enveloppe d'amplitude utilisée. Sa valeur par défaut est 0, soit pas d'enveloppe. Si ienv vaut 1, les portions de l'attaque et de la chute sont linéaires. S'il vaut 2, l'attaque est linéaire et la chute est exponentionnelle. La portion de relâchement de l'enveloppe n'a pas encore été implémentée.

sfplaym est une version mono de sfplay. Il faut l'utiliser avec un preset mono, ou avec des presets stéréo dans lesquels la sortie stéréo n'est pas requise. Il est plus rapide que sfplay.

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.

Exemples

Voici un exemple de l'opcode sfplaym. Il utilise le fichier sfplaym.csd.

Exemple 968. Exemple de l'opcode sfplaym.

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 sfplaym.wav -W ;;; for file output any platform

; By  Menno Knevel - 2020

</CsOptions>
<CsInstruments>

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


gisf	sfload	"07AcousticGuitar.sf2"
	sfplist	gisf
	sfpassign 100, gisf         ;in this case, the number 100 is assigned to the preset

instr 1	

inum	=	p4
ivel	=	p5
kamp	linsegr	1, 1, 1, .1, 0
kamp  = kamp * .000001		        ;scale amplitude- small value due to 0dbfs = 0
a1	sfplaym	ivel, inum, kamp * ivel, p6, 100, 1  ; flag = 1 so frequencies is used intead of midi pitch
	outs	a1, a1
	
endin
	
</CsInstruments>
<CsScore>

i1 0 1 60 127 100  ; use sample of this key and set new frequency
i1 + 1 62 <    <
i1 + 1 65 <    <
i1 + 1 69 10   70

e
</CsScore>
</CsoundSynthesizer>


Voir aussi

sfilist, sfinstr, sfinstrm, sfload, sfpassign, sfplay, sfplay3, sfplay3m, sfplist, sfpreset

Crédits

Auteur : Gabriel Maldonado
Italie
Mai 2000

Nouveau dans la version 4.07 de Csound

Nouveau paramètre facultatif ienv dans la version 5.09