OpenMusic-CSound: un template

Avec CSound comme avec tous les langages numériques d’ailleurs, pour chaque nouveau projet, on passe un temps considérable à réinventer la roue. Ré-écrire les mêmes processus d’initialisation, d’entrées/sorties, de tables d’ondes et ainsi de suite… Dans l’utilisation du couple OpenMusic-CSound la procédure de départ est même démultipliée. Dès lors, on se rend vite compte de la nécessité de créer un, ou même plusieurs templates pour rentrer plus rapidement dans le cœur du sujet: la création musicale.

J’ai donc rapidement créé plusieurs templates dont celui que je présente ici. Il doit être modifié, amélioré et adapté aux projets de chacun. Il est basé sur la synthèse par oscillateur et table d’onde d’une manière très simple.

Télécharger csound_template folder

Le fichier .orc

 

sr = 44100
kr = 44100
ksmps = 1
nchnls = 2

;;; Initialisation du bus Reverb1 en stereo
gaverbl init 0 ; reverb canal gauche
gaverbr init 0 ; reverb canal droit

girevsend = 0.4 ; parametre global d’envoi dans la reverb utilise par le delay

;;; Initialisation du bus Delay en stereo
gadell init 0 ; delay
gadelr init 0 ; delay

;;; Initialisation du bus Reverb2 en stereo
gaverb2l init 0 ; reverb canal gauche
gaverb2r init 0 ; reverb canal droit

instr 1

iamp = p4
ifreq= p5
ipan = p6
ienv = p7
idel = p8
irev = p9

;;décliquage
idampattack = .003
idamprelease = .003
iduration = p3
p3 = iduration + idampattack + idamprelease
adamping linseg 0.0, idampattack, 1.0, iduration, 1.0, idamprelease, 0.0

idur = p3

kenv oscil1i 0, iamp, idur, ienv
asig oscili kenv, ifreq, 1

asigl = asig*(1-ipan)*adamping
asigr = asig*ipan*adamping

outs asigl, asigr

gaverbl = gaverbl + (asigl*irev) ; reverb send gauche
gaverbr = gaverbr + (asigr*irev) ; reverb send droit

gadell = gadell + (asigl*idel) ; delay send
gadelr = gadelr + (asigr*idel) ; delay send

endin

;***** GLOBAL DELAY INSTRUMENT *****

instr 100

kDelaydecay init .4 ; feedback
iDelaytime init 1.0 ; delai en secondes

aSigl delayr iDelaytime
aSigr delayr iDelaytime
delayw kDelaydecay * (gadell + aSigl)
delayw kDelaydecay * (gadelr + aSigr)
asgdell = aSigl + gadell
asgdelr = aSigr + gadelr

asigdell dcblock2 asgdell ; decliquage
asigdelr dcblock2 asgdelr ; decliquage

gaverbl = gaverbl + (asigdell*girevsend) ; reverb send gauche
gaverbr = gaverbr + (asigdelr*girevsend) ; reverb send droit

outs asigdell, asgdelr

gadell = 0
gadelr = 0

endin

;;;*****REVERB SEAN COSTELLO*****
instr 101

denorm gaverbl
denorm gaverbr

;fblvl — feedback level, in the range 0 to 1. 0.6 gives a good small « live » room sound, 0.8 a small hall, and 0.9 a large hall. A setting of exactly 1 means infinite length, while higher values will make the opcode unstable.
;kfco — cutoff frequency of simple first order lowpass filters in the feedback loop of delay lines, in Hz. Should be in the range 0 to israte/2 (not sr/2). A lower value means faster decay in the high frequency range.
; ainL, ainR, kfblvl, kfco[, israte[, ipitchm[, iskip]]]
arvl, arvr reverbsc gaverbl, gaverbr, 0.85, 12000, sr, 0.5, 1

arevl dcblock arvl ; decliquage
arevr dcblock arvr ; decliquage

outs arevl, arevr

clear gaverbl
clear gaverbr

endin

;;; ****Freeverb****
instr 102

denorm gaverb2l
denorm gaverb2r

;kRoomSize (range: 0 to 1) — controls the length of the reverb, a higher value means longer reverb. Settings above 1 may make the opcode unstable.
;kHFDamp (range: 0 to 1): high frequency attenuation; a value of zero means all frequencies decay at the same rate, while higher settings will result in a faster decay of the high frequency range.

; kRoomSize, kHFDamp[, iSRate[, iSkip]]
arvl, arvr freeverb gaverb2l, gaverb2r, 0.45, 0.55, sr, 0

outs arvl, arvr

clear gaverb2l
clear gaverb2r

endin

 


On peut voir ci-dessus que le moteur de la synthèse (instr 1) est très simple, abstraction faite des deux réverbs, du délai, du déclicage et de tous leurs paramètres d’initialisation:

instr 1

iamp = p4
ifreq= p5
ipan = p6
ienv = p7
idel = p8
irev = p9

idur = p3

kenv oscil1i 0, iamp, idur, ienv
asig oscili kenv, ifreq, 1

asigl = asig*(1-ipan)*adamping
asigr = asig*ipan*adamping

outs asigl, asigr

endin

et qu’il se résume aux quelques lignes ci-dessus dès lors qu’on enlève les processus annexes.

Les paramètres sont l’amplitude (iamp), la hauteur (ifreq), le panoramique L/R (ipan), l’enveloppe d’amplitude (ienv), l’envoi dans le délai (idel) et dans la réverb (iverb) soit neuf paramètres au total ce qui fera neuf entrées à la boite i-statements dans le patch OM comme nous allons le voir plus bas.

 

Le patch « template »

template

Je ne détaillerai pas le patch, vous pourrez l’étudier de plus près si vous le téléchargez. L’orchestre a, quand à lui et comme le patch, été expliqué dans d’autres articles sur le même sujet.

Vous pouvez télécharger le patch OM ci-dessous. Quand à l’orchestre vous pouvez le copier ci-dessus(cmd-c) et le coller(cmd-v) dans la boite orchestra du patch, si elle est vide. Il est également présent dans le dossier, il suffira alors de l’importer dans la boite textfile.

Télécharger csound_template folder

 

 

 

 

%d blogueurs aiment cette page :