syncloop — Synthèse granulaire synchrone.
syncloop est une variation sur syncgrain, qui implémente la synthèse granulaire synchrone. syncloop ajoute des points de début et de fin de boucle et une position de départ facultative. Le début et la fin de boucle contrôlent les positions de démarrage des grains, si bien que les grains réalisés peuvent s'étendre au-delà des points de la boucle (si les points de la boucle ne sont pas aux extrémités de la table), ce qui permet des transitions fluides. Pour plus d'information sur le procédé de synthèse granulaire, voir la page du manuel sur syncgrain.
asig syncloop kamp, kfreq, kpitch, kgrsize, kprate, klstart, \
klend, ifun1, ifun2, iolaps[,istart, iskip]
ifun1 -- table de fonction du signal source. Des tables avec allocation différée sont acceptées (voir GEN01), mais l'opcode attend une source mono.
ifun2 -- table de fonction de l'enveloppe du grain.
iolaps -- nombre maximum de chevauchements, max(kfreq)*max(kgrsize). Une grande valeur d'estimation ne devrait pas affecter l'exécution, mais le dépassement de cette valeur aura probablement des conséquences désastreuses.
istart -- point de départ de la synthèse en secs (0 par défaut).
iskip -- s'il vaut 1, l'initialisation de l'opcode est ignorée, pour les notes liées, l'exécution continuant depuis la position à l'intérieur de la boucle où la note précédente s'est terminée. La valeur par défaut de 0 signifie que l'initialisation n'est pas ignorée.
kamp -- pondération de l'amplitude.
kfreq -- fréquence de génération des grains, ou densité, en grains/sec.
kpitch -- transposition de hauteur des grains (1 = hauteur normale, < 1 plus bas, > 1 plus haut ; négatif, lecture à l'envers).
kgrsize -- taille du grain en secondes.
kprate -- vitesse du pointeur de lecture, en grains. Une valeur de 1 avancera le pointeur de lecture d'un grain dans la table source. Des valeurs supérieures provoqueront une compression temporelle et des valeurs inférieures une expansion temporelle du signal source. Avec des valeurs négatives, le pointeur progressera à l'envers et zéro l'immobilisera.
klstart -- début de la boucle en secs.
klend -- fin de la boucle en secs.
Voici un exemple de l'opcode syncloop. Il utilise le fichier syncloop.csd.
Exemple 1057. Exemple de l'opcode syncloop.
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 syncloop.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 2 instr 1 iolaps = 2 igrsize = 0.01 ifreq = iolaps/igrsize ips = 1/iolaps istr = p4 /* timescale */ ipitch = 1 /* pitchscale */ asig syncloop 1, ifreq, ipitch, igrsize, ips*istr, .3, .75, 1, 2, iolaps outs asig, asig endin </CsInstruments> <CsScore> f1 0 0 1 "beats.wav" 0 0 0 f2 0 8192 20 2 1 i1 0 6 .5 i1 7 6 .15 e </CsScore> </CsoundSynthesizer>