sfinstr3
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## sfinstr3

sfinstr3 — Joue un instrument échantillonné SoundFont2 (SF2), produisant un son stéréo avec interpolation cubique.

## Description

Joue un instrument échantillonné SoundFont2 (SF2), produisant un son stéréo avec interpolation cubique. 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

    ar1, ar2 sfinstr3 ivel, inotenum, xamp, xfreq, instrnum, ifilhandle \
          [, iflag] [, ioffset]

## Initialisation

ivel -- vélocité.

inotenum -- numéro de note MIDI.

instrnum -- numéro d'un instrument d'un fichier SF2.

ifilhandle -- nombre unique généré par l'opcode sfload à utiliser comme identificateur pour un fichier SF2. On peut charger et activer plusieurs fichiers SF2 en même temps.

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

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

## 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.

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

sfinstr3 est une version avec interpolation cubique de sfinstr. La différence de qualité sonore est notable, particulièrement avec les échantillons transposés dans le grave. Pour les échantillons transposés dans l'aigu, la différences est moins appréciable et je suggère d'utiliser les versions avec interpolation linéaire, car elles sont plus rapides.

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 sfinstr3. Il utilise le fichier sfinstr3.csd.

Exemple 950. Exemple de l'opcode sfinstr3.

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

    ; By  Menno Knevel - 2020

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

    gi24   ftgen 1, 0, 32, -2, 24, 2, 261.626, 60, 1, 1.0293022, 1.059463, 1.0905076, 1.1224619, 1.1553525, 1.1892069, \
                 1.2240532, 1.2599207, 1.2968391, 1.33483924, 1.3739531, 1.414213, 1.4556525, 1.4983063, 1.54221, 1.5874001, \
                 1.6339145, 1.6817917, 1.73107, 1.7817962, 1.8340067, 1.8877471, 1.9430623,  2 ;table for microtuning, a 24 tone equal temperament

    giSF	sfload	"sf_GMbank.sf2"
            sfilist giSF

    instr 1

    ikey	= p4
    ivel	= p5
    aenv    linsegr	1, 1, 1, 1, 0			;envelope
    icps    cpstuni ikey, 1				;24 tones per octave
    iamp    = 0.0002				;scale amplitude
    iamp    = iamp * ivel * 1/128 			;make velocity-dependent, small value due to 0dbfs = 1
    aL, aR	sfinstr3 ivel, ikey, iamp, icps, 180, giSF, 1 ;= Slap Bass 3
    aL      = aL * aenv
    aR      = aR * aenv
            outs aL, aR

    endin
    </CsInstruments>
    <CsScore>

    i1 0 1 60 100 1	;using ftable 1
    i1 + 1 62 <   .
    i1 + 1 65 <   .
    i1 + 1 69 20  .

    i1 5 1 60 100 1	;using ftable 1
    i1 + 1 61 <   .
    i1 + 1 62 <   .
    i1 + 1 63 20  .

    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

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

## Crédits

Auteur : Gabriel Maldonado
Italie
Mai 2000

Nouveau dans la version 4.07 de Csound

Précédent | Niveau supérieur | Suivant
sfilist | Sommaire | sfinstr3m