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

## bob

bob — Simulation numérique de Runge-Kutte du filtre analogique résonant de Moog.

## Description

bob est un portage du bob~ de Miller Puckette dans Pure Data. Sa conception est basée sur les articles de Tim Stilson, Timothy E. Stinchcombe et Antti Huovilainen.

## Syntaxe

    asig bob ain, xcf, xres, xsat [, iosamps, istor]

## Initialisation

iosamps -- nombre de fois que le suréchantillonnage est utilisé dans le processus de filtrage. Cela détermine la raideur maximale de la résonance du filtre (Q). Plus de suréchantillonnage autorise des Q plus importants, moins de suréchantillonnage limite la résonance. La valeur par défaut est 2 fois (iosamps=0).

istor -- disposition initiale de l'espace interne des données. Comme le filtrage comprend une boucle de rétroaction de la sortie, l'état initial de l'espace de stockage est significatif. Une valeur nulle efface le contenu de cet espace ; une valeur non nulle permet de garder l'information précédente. La valeur par défaut est 0.

## Exécution

asig -- signal d'entrée.

xcf -- fréquence de coupure du filtre.

xres -- résonance du filtre. Nominalement, une valeur de 4 est la limite de stabilité -- au-delà, le filtre oscille.

xsat -- saturation. Ce paramètre détermine à quel niveau du signal les "transistors" du modèle saturent. L'amplitude maximale de sortie vaut environ 2/3 de cette valeur.

Selon la page de manuel de bob~, "Par défaut bob~ effectue un pas de l'intégration de Runge-Kutte du 4ème ordre par échantillon audio. Ceci fonctionne parfaitement pour des fréquences de résonance/coupure jusqu'à environ 1/2 Nyquist. Pour améliorer la précision et/ou augmenter l'étendue du filtre vers des fréquences de coupure plus hautes on peut suréchantillonner par n'importe quel facteur - mais il faut noter que le temps de calcul augmente en conséquence. Aux fréquences de coupure/résonances élevées, l'approximation RK peut devenir instable. On peut contrer cela en élevant le facteur de suréchantillonnage. Le paramètre de saturation détermine à quel niveau du signal les "transistors" du modèle saturent. L'amplitude maximale de sortie vaut environ 2/3 de cette valeur."

## Exemples

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

Exemple 102. Exemple de l'opcode bob.

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

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

    ga1 init 0
    ga2 init 0

        seed 777

    instr 7
    a0  vco2     1, cpsmidinn(p4) ; a saw wave to be filtered
    k1  jspline  0.7, 0.7, 1/0.7; add some jitter to filter resonance
    kA  linseg   0,        p3/17, 1,     (17-2)*p3/17, 1,   p3/17, 0; overal amplitude envelope
    k7  linseg   70,       p3/3,  700,   p3/3,     700,     p3/3,  70; filter cutoff envelope
    k77 expseg   sqrt(7),  p3/2,  7.7,   p3/2,     sqrt(7); filter resonance modulation
    a1  bob      a0 * kA, k7 - k1 * 70, k77 + k1, 3; PD bob~ ported
    a1           /= 7; some normalization to avoid overload
    aL           = p5 * a1; and then panning
    aR           = a1 * (1 - p5)
        outs     aL, aR

    ga1          +=  aL/7; AUX send
    ga2          +=  aR/7
    endin

    instr 77 ; What a sound without some good reverb??
    a1,a2  reverbsc ga1,ga2, 0.97+.1/7, 7777
        outs     a1, a2
    ga1          = 0
    ga2          = 0
    endin
    </CsInstruments>
    <CsScore>
    i 7  0 30 70 0.7; Perfect 7th
    i 7  0 30 77 0.7
    i 77 0 40
    ; In text editor try Find and Replace to substitute all 7 numbers for 3...8 )
    ; all 8s is a bit too high, all 3s is a bit too low, 4 sounds great!
    ; Do such replacement in initial 7 file, otherwise avoid accidental changes in the header...

    ; Tired of numerology? Try this:
    ; i 7  0 30 60 0.6
    ; i 7  0 32 45 0.4

    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

moogladder

## Crédits

Par : Gleb Rogozinsky 2020

Nouveau dans la version 6.15

Précédent | Niveau supérieur | Suivant
birnd | Sommaire | bpf