pluck

pluck — Produit un son de corde pincée à décroissance naturelle ou un son de tambour.

Description

La sortie audio est un son de corde pincée à décroissance naturelle ou un son de tambour basés sur l'algorithme de Karplus-Strong.

Syntaxe

ares pluck kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2]

Initialisation

icps -- valeur de hauteur attendue en Hz, utilisée pour fixer un tampon contenant une période d'échantillons audio qui sera lissée progressivement par une méthode de décroissance choisie. icps anticipe normalement la valeur de kcps, mais il peut recevoir artificiellement une grande ou une petite valeur pour influencer la taille du tampon d'échantillons.

ifn -- numéro de la table d'une fonction utilisée pour initialiser le tampon de décroissance cyclique. Si ifn = 0, une séquence aléatoire sera utilisée à la place.

imeth -- méthode de décroissance naturelle. Il y en a six, dont certaines utilisent les paramètres qui suivent.

  1. moyenne simple. Un procédé de lissage simple, sans paramètres.

  2. moyenne variable. Comme ci-dessus, avec une durée de lissage étirée d'un facteur de iparm1 (>=1).

  3. simple tambour. L'intervalle allant de la hauteur au bruit est contrôlé par un "facteur de rugosité" dans iparm1 (0 à 1). Zéro donne l'effet de corde pincée, tandis que 1 inverse la polarité de chaque échantillon (baisse d'une octave, harmoniques impairs). La valeur 0.5 donne un son de caisse claire optimal.

  4. tambour variable. Combine les facteurs de rugosité et d'étirement. iparm1 est la rugosité (0 à 1), et iparm2 est le facteur d'étirement (>=1).

  5. moyenne pondérée. Comme la méthode 1, avec iparm1 pondérant l'échantillon courant (le status quo) et iparm2 pondérant l'échantillon précédant. iparm1 + iparm2 doit être <= 1.

  6. filtre récursif du premier ordre, avec des coefficients de 0.5. N'est pas affecté par les paramètres.

iparm1, iparm2 (facultatif) -- valeurs des paramètres à utiliser avec les algorithmes de lissage (ci-dessus). Les valeurs par défaut sont 0.

Exécution

kamp -- l'amplitude de sortie.

kcps -- la fréquence de re-échantillonnage en Hz.

Un tampon audio interne, rempli lors de l'initialisation selon ifn, est continuellement re-échantillonné avec une fréquence de kcps et sa sortie est multipliée par kamp. Le re-échantillonnage du tampon est complété par un lissage pour simuler l'effet de décroissance naturelle du son.

Les cordes pincées (1, 2, 5, 6) sont plus réalistes si l'on commence avec une source de bruit, qui est riche en harmoniques initiaux. Les sons de tambour (méthodes 3 et 4) fonctionnent mieux avec une source plate (impulsion large), qui produit une attaque très bruiteuse et une extinction rapide.

L'algorithme original de Karplus-Strong utilisait un nombre fixe d'échantillons par cycle, ce qui provoquait une sérieuse quantification des hauteurs disponibles et de leur intonation. Cette implémentation re-échantillonne un tampon à la hauteur exacte donnée par kcps, qui peut être variée pour des effets de vibrato ou de glissando. Avec de faibles valeurs du taux d'échantillonnage de l'orchestre (par exemple sr = 10000), les fréquences élevées ne stockeront que très peu d'échantillons (sr / icps). Comme ceci peut causer un bruit notable lors du re-échantillonnage, le tampon interne a une taille minimale de 64 échantillons. Celui-ci peut être agrandi en fixant icps à une hauteur artificiellement basse.

Exemples

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

Exemple 767. Exemple de l'opcode pluck.

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 real audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o pluck.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1

kcps = 220
icps = 220
ifn  = 0
imeth = p4

asig pluck 0.7, 220, 220, ifn, imeth, .1, 10
     outs asig, asig

endin
</CsInstruments>
<CsScore>

i 1 0  5 1
i 1 5  5 4	;needs 2 extra parameters (iparm1, iparm2)
i 1 10 5 6
e
</CsScore>
</CsoundSynthesizer>