oscili — Un oscillateur simple avec interpolation linéaire.
La table ifn est parcourue par incrément modulo la longueur de la table et la valeur obtenue est multipliée par amp.
ifn -- numéro de la table de fonction. Nécessite un point de garde pour la lecture cyclique.
iphs (facultatif) -- phase initiale de la lecture, 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 0.
kamp, xamp -- amplitude
kcps, xcps -- fréquence en cycles par seconde.
oscili diffère de oscil en ce que la procédure standard d'utilisation d'une phase tronquée comme index de lecture est remplacée ici par une interpolation entre deux lectures successives. Les générateurs avec interpolation produiront un signal de sortie nettement plus propre, mais ils peuvent prendre jusqu'à deux fois plus de temps de calcul. On peut obtenir également ce type de précision sans le surcoût du calcul de l'interpolation en utilisant de grandes tables de fonction stockées de 2K, 4K ou 8K points, si l'on dispose de cet espace mémoire.
Voici un exemple de l'opcode oscili. Il utilise le fichier oscili.csd.
Exemple 332. Exemple de l'opcode oscili.
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 ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o oscili.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1 - a basic oscillator. instr 1 kamp = 10000 kcps = 220 ifn = 1 a1 oscil kamp, kcps, ifn out a1 endin ; Instrument #2 - the basic oscillator with extra interpolation. instr 2 kamp = 10000 kcps = 220 ifn = 1 a1 oscili kamp, kcps, ifn out a1 endin </CsInstruments> <CsScore> ; Table #1, a sine wave table with a small amount of data. f 1 0 32 10 0 1 ; Play Instrument #1, the basic oscillator, for ; two seconds. This should sound relatively rough. i 1 0 2 ; Play Instrument #2, the interpolated oscillator, for ; two seconds. This should sound relatively smooth. i 2 2 2 e </CsScore> </CsoundSynthesizer>