|
» codelab : http://codelab.fr/accueil » Forum : Autres langages : http://codelab.fr/autres-langages » [csound] Csound intro : http://codelab.fr/91 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : [csound] Csound intro |
| solipse — 2008-04-07 11:07:34 |
Pour répondre à une proposition d'emoc, voici un petit tuto d'introduction à <CsoundSynthesizer> <CsOptions> ;ici se place les options globales </CsOptions> <CsInstruments> ;ici sont décrits les instruments </CsInstruments> <CsScore> ;ici se place la "partition" </CsScore> </CsoundSynthesizer> Un premier instrument: instr 1 ;ici se place le code de l'instrument endin instr doit être suivi d'un numéro permettant de l'identifier. instr 1
asignal oscil 10000, 440, 1
out asignal
endinUne première partition : ;ex.1: t 0 60 i1 0.0 6.0 i1 0.0 6.0 s ;ex.2: t 0 120 i1 0.0 6.0 i1 0.0 6.0 s Dans l'ex.1 est donnée le tempo original, 1 battement (beat) par seconde. Dans l'ex.2, r 4 inc i1 0.0 6.0 s Ici la section sera répétée 4 fois. <CsoundSynthesizer>
<CsOptions>
;ici se place les options globales
-o rec/essai.wav
</CsOptions>
<CsInstruments>
;les initialisations
sr = 44100 ;fréquence d'échantillonnage
kr = 4410 ;fréquence de contrôle
ksmps = 10 ;sr/kr
nchnls = 2 ;nombre de canaux
instr 1
asignal oscil 5000, 440, 1
outs asignal, asignal
endin
instr 2
;ajout d'un paramètre dont la valeur sera donnée
;dans la partition
ipitch = p4
asignal oscil 5000, ipitch, 1
outs asignal, asignal
endin
</CsInstruments>
<CsScore>
;tableau de stockage d'une forme d'onde, ici un sinus
f1 0 2048 10 1
;instr 1
i1 0.0 6.0
;instr 2, avec un paramètre supplémentaire (p4)
;permettant d'assigner une fréquence à l'oscillateur
i2 0.0 6.0 441
</CsScore>
</CsoundSynthesizer>Ecriture d'un fichier audio en rendu : <CsoundSynthesizer>
<CsOptions>
; jouer l'instrument depuis un clavier maître
; "-M" suivi du numéro du périphérique midi
; correspondant à votre configuration (sous Windows)
-M4
</CsOptions>
<CsInstruments>
;les initialisations
sr = 44100 ;fréquence d'échantillonnage
kr = 4410 ;fréquence de contrôle
ksmps = 10 ;sr/kr
nchnls = 2 ;nombre de canaux
instr 1
;formes d'onde, de 1 à 3 (voir la partie "score", plus bas)
iwavform = 1
;initialisation
ipch init 0
iamp init 0
;l'opcode cpsmidi retourne la valeur de la note midi
;et la convertit en cycles par seconde (cps)
ipch cpsmidi
;ampmidi retourne la vélocité
;le paramètre, ici "10000", permet d'échelonner
;la vélocité (de 0 à 127) sur l'échelle interne
;d'amplitude de csound (de 0 à 32767)
iamp ampmidi 10000
asignal oscili iamp, ipch, iwavform
;"madsr", enveloppe adsr
kenv madsr 0.1, 0.1, 0.5, 0.1, 0.0, 0.1
outs asignal*kenv, asignal*kenv
endin
</CsInstruments>
<CsScore>
;formes d'onde
f1 0 2048 10 1 ;sine
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ;sawtooth
f2 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ;square
;instruction activant l'orchestre pour 3600 secondes
f 0 3600
</CsScore>
</CsoundSynthesizer>Lire un fichier midi, rendu et temps réel. Commenter/décommenter la ligne <CsoundSynthesizer>
<CsOptions>
; lire un fichier midi
; "-F" suivi du nom du fichier midi
;rendu sur disque
-F test.mid -o rec/testmid.wav
;en temps réel
;"dac" est la sortie audio temps réel, 5 est le numéro du périphérique audio
;qu'il vous faudra adapter en fonction de votre configuration
;-F test.mid -o dac5
</CsOptions>
<CsInstruments>
;les initialisations
sr = 44100 ;fréquence d'échantillonnage
kr = 4410 ;fréquence de contrôle
ksmps = 10 ;sr/kr
nchnls = 2 ;nombre de canaux
instr 1
;formes d'onde
iwavform = 1
;initialisation
ipch init 0
iamp init 0
;l'opcode cpsmidi retourne la valeur de la note midi
;et la convertit en cycles par seconde (cps)
ipch cpsmidi
;ampmidi retourne la vélocité
;le paramètre, ici "10000", permet d'échelonner
;la vélocité (de 0 à 127) sur l'échelle interne
;d'amplitude de csound (de 0 à 32767)
iamp ampmidi 10000
asignal oscili iamp, ipch, iwavform
;"madsr", enveloppe adsr
kenv madsr 0.1, 0.1, 0.5, 0.1, 0.0, 0.1
outs asignal*kenv, asignal*kenv
endin
</CsInstruments>
<CsScore>
;formes d'onde
f1 0 2048 10 1 ;sine
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ;sawtooth
f2 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ;square
;instruction activant l'orchestre pour 3600 secondes
;à adapter en fonction de la durée du fichier midi
f 0 3600
</CsScore>
</CsoundSynthesizer>L'enregistrement en temps réel se fait au format raw, c'est à dire sans entêtes. Différents <CsoundSynthesizer>
<CsOptions>
; jouer l'instrument depuis un clavier maître
; "-M" suivi du numéro du périphérique midi
; correspondant à votre configuration (sous Windows)
-M4
</CsOptions>
<CsInstruments>
;les initialisations
sr = 44100 ;fréquence d'échantillonnage
kr = 4410 ;fréquence de contrôle
ksmps = 10 ;sr/kr
nchnls = 2 ;nombre de canaux
;initialisation de la variable audio globale qui
;permet de connecter la sortie audio du premier
;instrument sur l'entrée du second
gasig init 0
instr 1
;formes d'onde
iwavform = 1
;initialisation
ipch init 0
iamp init 0
;l'opcode cpsmidi retourne la valeur de la note midi
ipch cpsmidi
;ampmidi retourne la vélocité
iamp ampmidi 10000
asignal oscili iamp, ipch, iwavform
;"madsr", enveloppe adsr
kenv madsr 0.1, 0.1, 0.5, 0.1, 0.0, 0.1
outs asignal*kenv, asignal*kenv
;branchement de la sortie audio sur la variable globale
gasig = asignal*kenv
endin
instr 2 ;enregistrement en temps réel
fout "rec/realtime.raw", 1, gasig, gasig
gasig = 0
endin
</CsInstruments>
<CsScore>
;formes d'onde
f1 0 2048 10 1 ;sine
f2 0 2048 10 1 .5 .3 .25 .2 .167 .14 .125 .111 ;sawtooth
f2 0 2048 10 1 0 .3 0 .2 0 .14 0 .111 ;square
;instruction activant l'orchestre pour 3600 secondes
f 0 3600
;il faut aussi activer l'instrument 2
i2 0 3600
</CsScore>
</CsoundSynthesizer>Un nouvel exemple, avec l'introduction d'une macro et l'enregistrement au format wav. <CsoundSynthesizer>
<CsOptions>
; "-M" suivi du numéro du périphérique midi
; correspondant à votre configuration.
-M4
</CsOptions>
<CsInstruments>
sr = 44100
kr = 4410
ksmps = 10
nchnls = 2
; #define permet de définir une macro.
; ici, il s'agit du nom du fichier et de son chemin relatif (voir l'instr 99).
; le dossier "rec" doit avoir été créé au préalable.
#define AudioFilename #"rec/Test.wav"#
; création des tables d'ondes
gifn ftgen 1, 0, 2048, 10, 1, .5, .3, .25, .2, .167, .14, .125, .111 ;Sawtooth
gifn ftgen 2, 0, 2048, 10, 1, 0, .3, 0, .2, 0, .14, 0, .111 ;Square
gasig init 0
instr 1
ifn = 1
iatk = 0.1
irvbattenuation = 0.25
inote cpsmidi
kadsr madsr iatk, 0.3, 0.5, 0.3
klfo lfo 1.0, 3.0, 0
as oscili 3000, inote+klfo, ifn
as = as * kadsr
outs as, as
; branchement de la variable locale "as" sur la variable globale
; "gasig" et réinjection de celle-ci.
gasig = gasig + as * irvbattenuation
endin
instr 99
asig reverb gasig, 0.5
; ici le fichier produit sera directement au format wav, par la combinaison
; du type 1 (wav) et du format d'échantillonnage 4 (16-bit avec en-têtes),
; ce qui donne 14.
; valable pour les versions de csound >= 5.0.
; utilisation de la macro, le symbol $ doit précéder le nom de celle-ci.
fout $AudioFilename, 14, asig, asig
; remise à zéro de la variable globale
gasig = 0
endin
</CsInstruments>
<CsScore>
; durée globale de la performance, ici, 60s
f 0 60
; l'instrument enregistreur doit être activé séparément
i99 0 60
</CsScore>
</CsoundSynthesizer>Exemple de lecture d'un fichier wav depuis le disque dur.L'opcode utilisé, diskin, a deux <CsoundSynthesizer> <CsOptions> ; pour un rendu sur disque, décommenter la ligne ci-dessous ; et créer le dossier rec. ;-o rec/diskin.wav -W </CsOptions> <CsInstruments> sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 instr 1 ivitesse = 1 ; commenter/décommenter en fonction du type de fichier ; lu, stéréo ou mono. ; mono: as diskin "myWave.wav", ivitesse ; stéréo: ;as, as diskin "myWave.wav", ivitesse outs as, as endin </CsInstruments> <CsScore> ; le temps d'activation de l'instrument, ici 3s, correspond ; à la longueur du fichier original, adaptez-le au vôtre. i1 0 3 </CsScore> </CsoundSynthesizer> Quelques liens : |
| emoc — 2008-04-09 10:41:07 |
Merci Solipse! J'espère que ça donnera envie de l'essayer. |
| solipse — 2008-04-09 15:56:24 |
Merci pour la mise en page. |
| solipse — 2008-10-13 15:20:50 |
Bonjour, |
| solipse — 2008-10-27 12:15:41 |
Bonjour, |
| adrien — 2008-12-05 17:56:51 |
Bonjour tous ! Y a t'il des utilisateurs de csound~ avec Max 4.6 ? |
| solipse — 2008-12-07 08:32:09 |
Bonjour adrien, |
| adrien — 2008-12-08 21:58:02 |
Cela fonctionne. Pour tout te dire j'ignorais qu'il fallait passer par une commande "compile", je pensais que le fait de renommer l'extension et d'ensuite le lire dans une interface appropriée suffirait… |
| voz — 2009-07-31 17:12:57 |
Très bon article d'introduction à Csound. Il en existe trop peu en français je trouve. |
| voz — 2009-08-02 22:11:35 |
J'ai un problème récurent avec csound. J'ai des 'clac' et ce message sur la ligne de commande : |
| solipse — 2009-08-15 12:15:05 |
Bonjour Voz, |
| voz — 2009-09-03 22:39:44 |
Bonjour solipse, |
| baudry — 2009-09-05 18:34:11 |
Bonjour |
| baudry — 2009-09-05 18:38:20 |
D'autre part après avoir le fichier orchestre orc et partition sco est il possible d'enregistrer un son résultant de ces lignes de codes ou faut il passer par maxmsp, et lmporter un fichier csd? |
| voz — 2009-09-05 22:55:52 |
Bonjour baudry |
| solipse — 2009-09-06 15:06:29 |
Bonjour baudry, |
| solipse — 2009-10-05 14:30:43 |
Bonjour, |
| Derrgis — 2010-11-13 23:00:10 |
Note pour les utilisateurs sous OSX, QuteCsound remplace aisément MacCsound, avec une interface bien pensée. |
| beryann — 2010-11-25 12:21:04 |
bjr! je voulais juste reposter ceci concernant les tutos de CSound celui, traduit en français et gratuit (premier chapitre de son livre), de Daniel Boulanger et celui en anglais proposé par les excellents Floss Manuals http://en.flossmanuals.net/bin/view/Cso … ic=WebHome(via leur concept de "free manuals for free software" ou celui de "Book Sprints")...Celui de Boulanger en français http://www.csounds.com/chapter1/french/me semble être une parfaite introduction aux concepts de base de ce merveilleux et puissant logiciel...Je l'utilise dans sa version "endfront" de QuSound, très agréable ,mais il y en a d'autres... |
| beryann — 2011-05-26 10:13:42 |
Je viens de trouver dans le fameux "siteduzéro" le tuto suivant sur Csound: http://www.siteduzero.com/tutoriel-3-22 … sound.html Il est plutôt bien fait et fait complément à d'autres tutos je pense, les uns et les autres se complétant...il a surtout le mérite immense d'être en frenchy...mis à part celui-de Boulanger , dont le chapître 1 est traduit, je n'en connais pas bcp dans la langue de Molière...(celui de Flossmanuals ne semble etre plus en ligne...qq a des infos la-dessus?) |
| nay-seven — 2011-05-26 10:32:10 |
cool, |