gbuzz — La sortie est un ensemble de partiels cosinus en relation harmonique.
ifn -- numéro de table d'une fonction stockée contenant une onde cosinus. Une grande table d'au moins 8192 points est recommandée.
iphs (facultatif, par défaut 0) -- phase initiale de la fréquence fondamentale, exprimée comme une fraction d'une période (0 à 1). Avec une valeur négative l'initialisation de la phase sera ignorée. La valeur par défaut est zéro.
Les unités buzz génèrent un ensemble additif de partiels cosinus en relation harmonique de fréquence fondamentale xcps, et dont les amplitudes sont pondérées de telle façon que la crête de leur somme égale xamp. Le choix et l'importance des partiels sont déterminés par les paramètres de contrôle suivants :
knh -- nombre total d'harmoniques demandés. Si knh est négatif, sa valeur absolue est utilisée. Si knh vaut zéro, une valeur de 1 est utilisée.
klh -- harmonique présent le plus bas. Peut être positif, nul ou négatif. Dans gbuzz l'ensemble de partiels peut commencer à n'importe quel numéro de partiel et se complète vers le haut ; si klh est négatif, tous les partiels en-dessous de zéro seront repliés comme des partiels positifs sans changement de phase (car le cosinus est une fonction paire), et s'ajouteront de façon constructive aux partiels positifs de l'ensemble.
kmul -- spécifie la raison de la série des coefficients d'amplitude. C'est une série entière : si le klhème partiel a pour coefficient A, le (klh + n)ème partiel aura pour coefficient A * (kmul ** n), c'est-à-dire que les valeurs d'intensité dessinent une courbe exponentielle. kmul peut être positif, nul ou négatif, et n'est pas restreint aux valeurs entières.
buzz et gbuzz sont utiles comme sources de son complexe dans la synthèse soustractive. buzz est un cas particulier du plus général gbuzz dans lequel klh = kmul = 1 ; il produit ainsi un ensemble de knh harmoniques de même importance, commençant avec le fondamental. (C'est un train d'impulsions à bande de fréquence limitée ; si les partiels vont jusqu'à la fréquence de Nyquist, c'est-à-dire knh = int (sr / 2 / fréq. fondamentale), le résultat est un train d'impulsions réelles d'amplitude xamp.)
Bien que l'on puisse faire varier knh et klh durant l'exécution, leurs valeurs internes sont nécessairement entières ce qui peut provoquer des « pops » dûs à des discontinuités dans la sortie. Cependant, la variation de kmul durant l'exécution produit un bon effet. gbuzz peut être modulé en amplitude et/ou en fréquence soit par des signaux de contrôle soit par des signaux audio.
Nota Bene : cette unité a son pendant avec GEN11, dans lequel le même ensemble de cosinus peut être stocké dans une table de fonction qui sera lue par un oscillateur. Bien que plus efficace en termes de calcul, le train d'impulsions stocké a un contenu spectral fixe, non variable dans le temps comme celui décrit ci-dessus.
Voici un exemple de l'opcode gbuzz. Il utilise le fichier gbuzz.csd.
Exemple 412. Exemple de l'opcode gbuzz.
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 gbuzz.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs =1 instr 1 kcps = 220 knh = p4 ;total no. of harmonics klh = p5 ;lowest harmonic kmul line 0, p3, 1 ;increase amplitude of ;higer partials asig gbuzz .6, kcps, knh, klh, kmul, 1 outs asig, asig endin </CsInstruments> <CsScore> ; a cosine wave f 1 0 16384 11 1 i 1 0 3 3 1 ;3 harmonics, lowest harmonic=1 i 1 + 3 30 1 ;30 harmonics, lowest harmonic=1 i 1 + 3 3 2 ;3 harmonics, lowest harmonic=3 i 1 + 3 30 2 ;30 harmonics, lowest harmonic=3 e </CsScore> </CsoundSynthesizer>