sequ

sequ — Emulation d'un séquenceur.

Description

Utilise une collection de tableaux pour générer une séquence d'évènements avec tempo variable, qui peuvent être joués en succession droite, rétrograde, avant et arrière, et aléatoire. La longueur maximale des tableaux est 128, et elle peut être pondérée dynamiquement. Les modes d'exécution par permutation permettent un traitement stochastique et autres algorithmes.

Syntaxe

kres  sequ  irhythm[], iinstr[], idata[], kbpm, klen [, kmode] [, kstep] [, kreset] [, kverbose]
    
kres  sequ  irhythm[], iinstr[],
    idata[][], kbpm, klen [, kmode] [, kstep] [, kreset] [, kverbose]
    

Initializstion

irhythm - tableau de durées en pulsations. La durée effective est déterminée par la division de ces valeurs par le tempo.

iinstr - tableau des numéros d'instrument activés à chaque pas. Un numéro d'instrument nul ne fait rien. Il ignore les notes associées à ce pas et produit un silence de la durée de cette note.

idata - soit un vecteur de valeurs p4 pour les pas d'iinstr associés, soit un tableau à deux dimensions de valeurs p4, p5, p6... Typiquement une information de hauteur en cps ou un numéro de note MIDI ; mais cette liste arbitraire de valeurs p4 peut avoir une autre signification dans l'iinstr appelé.

Exécution

kbpm - vitesse de boucle en pulsations par minute.

klen - longueur de la partie active de la séquence (en partant du pas 0).

kmode - contrôle l'exécution du séquenceur. Une valeur nulle (par défaut) boucle la séquence en avant, appelant l'instrument associé à chaque pas. D'autres modes sont supportés. (Voir ci-dessous).

Les options d'exécution pour kmode sont :

  • 0 - boucle en avant

  • n>0 - boucle en avant avec une mutation tous les n évènements

  • -1 - boucle rétrograde

  • -2 - en avant et en arrière

  • -3 - évènements alatoires

  • -4 - exécute la séquence entière une fois en avant puis s'arrête

  • -5 - exécute la séquence entière une fois en arrière puis s'arrête

  • -6 - mélange les évènements

  • -7 - revient à l'état initial

kstep - s'il est non nul, le tableau irhythm est remplacé par des déclencheurs de taux-k. Ceux-ci peuvent provenir d'un clavier MIDI ou d'un autre contrôleur de taux-k. Un évènement est déclenché si cet argument est positif, sinon rien ne se passe s'il est négatif. La valeur par défaut est zéro.

reset - s'il est non nul, réinitialise le séquenceur (comme le mode -7). Zéro par défaut.

kverbose - s'il est non nul, des messages sur les changements d'état interne sont affichés. Zéro par défaut.

kres - donne l'index de l'évènement créé pour le k-cycle courant, ou -1 s'il n'y a aucun évènement.

[Note] Note

Alors que les tableaux irhythm, iinstr et idata sont de taux-i, les valeurs des entrées sont lues au taux-k. Cela signifie qu'en utilisant des tableaux globaux de vecteurs de taux-i, il est possible (en faisant attention) de changer des valeurs spécifiques et d'autres détails durant l'exécution.

Exemples

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

Exemple 944. Exemple de l'opcode sequ.

<CsoundSynthesizer>

<CsInstruments>

ksmps = 32
0dbfs = 1.0
nchnls = 2

instr 1
;; rhythm array - these steps values multiplied by tempo (ticks) in BPM
irhythm[] fillarray 1, 1.5, 0.5, 0.5, 0.5, 0.5, 1.5, 1

;; instrument array - instrument number to render for each step
inst0[] fillarray 11, 12, 13, 14, 15, 16, 17, 18
inst1[] fillarray 19, 20, 21, 22, 23, 24, 25, 26

;; note array - here in cpsmidinn - esentially the 'p4' output from opcode
;;               can be any sequence of values
inotes[] fillarray 60, 61, 62, 63, 64, 65, 66, 67

;; variable tempo
kspeed line 60, p3, 180

;; rhythm, inst, notes, bpm, length, mode, verbose
kSeq0 sequ irhythm, inst0, inotes, kspeed, 8
kSeq1 sequ irhythm, inst1, inotes, kspeed * 1.2, 8
endin

instr 11, 12, 13, 14, 15, 16, 17, 18
kl linseg 0, p3*0.01, 1, p3*.99, 0
a1 oscil 0.9, cpsmidinn(p4)
outs1 a1*kl
endin

instr 19, 20, 21, 22, 23, 24, 25, 26
kl linseg 0, p3*0.01, 1,p3*.99, 0
a1 oscil 0.9, cpsmidinn(p4)
outs2 a1*kl
endin
</CsInstruments>

<CsScore>
i1 0 60
e
</CsScore>
</CsoundSynthesizer>


Voici un autre exemple de l'opcode sequ montrant les différents modes. Il utilise le fichier sequ2.csd

Exemple 945. Exemple de l'opcode sequ.

<CsoundSynthesizer>

<CsInstruments>
ksmps = 32
0dbfs = 1.0
nchnls = 2

instr 1
;; rhythm array - these values are multiplied by tempo (ticks) in BPM
irhythm0[] fillarray 1, 1.5, 0.5, 0.5, 0.5, 0.5, 1.5, 1
;; instrument array - instrument number to render for each step
iinsts0[] fillarray 11, 12, 13, 14, 15, 16, 17, 18
;; note array - here cpsmidinn(p4), amps(p5), mod ratios(p6), mod indices(p7)
;; - esentially the 'p4', 'p5', 'p6' and 'p7' are output from sequ
inotes[][] init 4,8 ;initialize 4 rows with 8 columns - p4=pitch, p5=amp, p6=modratio, p7=modindex
inotes fillarray 60, 61, 62, 63, 64, 65, 66, 67, \
                 0.8, 0.3, 0.6, 0.2, 0.7, 0.4, 0.5, 0.6, \
                 1, 2, 3, 4, 5, 6, 7, 8, \
                 1, 11, 2, 12, 3, 21, 4, 22
;; NOTE: this can be any sequence of values
;; variable tempo
kspeed linseg 85, p3*.7, 85, p3*.3, 240
;; rhythms, insts, notes, bpm, length, mode, step, reset, verbose
kSeq sequ irhythm0, iinsts0, inotes, kspeed, 8, p4
endin

instr 11, 12, 13, 14, 15, 16, 17, 18
kenv linseg 0, p3*0.01, 1, p3*.99, 0
asig foscil p5, cpsmidinn(p4), 1, p6, p7
outall asig * kenv
endin

</CsInstruments>

<CsScore>
i1 0 15 0 ;; forward mode
s
f0 1
s
i1 0 15 -1 ;; backward mode
s
f0 1
s
i1 0 15 -2 ;; forward and backward mode
s
f0 1
s
i1 0 15 -3 ;; random
s
f0 1
s
i1 0 6 -4 ;; play forward once and stop
s
f0 1
s
i1 0 6 -5 ;; play backward once and stop
s
f0 1
s
i1 0 15 -6 ;; shuffle mode
s
f0 1
s
i1 0 30 1 ;; mutate after each step
s
f0 1
s
i1 0 30 2 ;; mutate each second step
s
f0 1
s
i1 0 30 4 ;; mutate every four steps
e
</CsScore>
</CsoundSynthesizer>


Crédits

Ecrit par John ffitch

Nouveau dans Csound 6.17