Pour répondre à une proposition d'emoc, voici un petit tuto d'introduction à
Csound. Ce sera un survol, et je ferais l'impasse sur pas mal de détails.
Csound est un langage de programmation dédié à la création musical. Créer
par Barry Vercoe en 1984. Il n'a pas été conçu à l'origine pour le temps
réel, mais comme un programme de rendu (comme on le fait d'une animation
dans Blender, par ex.) Dans ses dernières versions (Csound 5), le temps
réel est une réalité, avec le support de pilotes à faible latence (ASIO) et
la possibilité de contrôler tous les paramètres via un clavier maître ou un
contrôleur Midi, la création d'interface graphique, etc..
Csound est disponible sous Linux, Mac, Windows. Il est open-source, et inter-
façable avec de nombreux langages: C, Python, Java, etc..
Où trouver Csound:
http://csound.sourceforge.net/
Les bases
Les opcodes :
Csound est constitué d'un grand nombre d'"opcodes"...ces opcodes sont des
objets correspondant à une fonction: par ex. "oscili" (pour un oscillateur),
"out", "adsr", "linen" (pour un type d'enveloppe), etc..
Ces objets acceptent des paramètres de contrôle sur leur droite et retournent
le résultat de leurs fonctions sur la gauche, en clair et en exemple:
résultat < opcode < paramètres
as oscili 10000, 440, 1
Ici, l'objet "oscili" reçoit les paramètres d'amplitude (10000), de fréquence
(440) et d'initialisation du numéro de tableau qu'il devra lire pour générer
la valeur de "as", la sortie de l'objet étant ici un signal audio.
Les initialisations :
sr = 44100 sr (pour sampling rate) est la fréquence d'échantillonnage
kr = 4410 kr (pour control rate) est la fréquence de contrôle
ksmps = 10 ksmps est le nombre d'échantillons par période de contrôle (sr/kr)
nchnls = 2 est le nombre de canaux
Les variables :
Il existe trois types de variables dans Csound, identifiées par la première
lettre de leur nom: "i","k", "a". Ce sont des variables locales, dont la
portée est limitée au bloc de code de l'instrument.
i pour les valeurs initialisées dans la partition ex: iamplitude
k pour celles évoluant à la fréquence de contrôles ex: kpitch
a pour celles évoluant à une fréquence audio ex: asignal
Des variables globales peuvent être créées, en ce cas elles sont préfixées par
un "g", par ex. gasignal, gkpitch. Ces variables sont disponibles pour tous les
instruments.
Les fichiers :
Un fichier *.csd est structuré par des balises, comme dans le Html ou le Xml.
C'est un simple fichier texte, dont on renomme l'extension en *.csd. En voici un
exemple vide, notez que tout ce qui suit un point-virgule ";" est considérer
comme un commentaire par Csound, et ne sera donc pas interprété.
Je fais l'impasse sur le système à deux fichiers, l'un contenant l'orchestre,
l'autre la partition, respectivement *.orc et *.sco.
Un premier instrument:
Un instrument est un bloc de code délimité par les mots instr et endin.
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 endin
Une première partition :
Une partition contient toutes les valeurs de contrôle du ou des instruments.
Trois champs sont obligatoirement présents. Le premier champ est introduit par
la lettre "i" suivi du numéro de l'instrument que l'on veut contrôler (ici "i1"),
le deuxième champ exprime le début de l'action de contrôle ("0.0"), le troisième,
la durée de cette action ("6.0", ce qui signifie 6 secondes).
i1 0.0 6.0
Les champs supplémentaires seront affectés aux paramètres que l'on veut modifiés
dans l'instrument, hauteur de la note, amplitude, fréquence d'un lfo, etc..
Pour modifier le tempo, on utilise l'instruction de partition t. Le premier paramètre
doit être zéro, le second est le tempo en bpm.
;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,
on double le tempo. L'instruction s délimite une section dans la partition. Notez aussi
qu'il est possible d'invoquer le même instrument (ici: i1) autant de fois qu'on le souhaite,
avec toutes les variations de paramètres voulues. A chaque invocation, Csound crée une
nouvel instance de l'instrument.
Pour créer une répétition, l'instruction est r. Le premier paramètre représente le nombre
de répétitions, le second une variable qui sera incrémentée à chaque bouclage. Celle-ci
peut être utilisée pour modifier un champ.
r 4 inc i1 0.0 6.0 s
Ici la section sera répétée 4 fois.
Il existe plusieurs programmes ou scripts dédiés à la génération de partition. Je n'en donne que
quelques uns, pour orienter ceux qui seraient intéressés.
CMask (générateur stochastique):
http://www.kgw.tu-berlin.de/~abart/CMas … Manual.htm
nGen (exporte au format score ou Midi):
http://mustec.bgsu.edu/~mkuehn/ngen/
psycops (module python):
http://tobiah.org/pub/psycops/index.html
Il est aussi possible d'utiliser un tableur, comme celui d'OpenOffice, par exemple.
Un premier csd:
Ecriture d'un fichier audio en rendu :
En reprenant l'exemple ci-dessus, il suffit de lancer csound suivi du nom du csd.
Sous Windows, créer un fichier batch* et l'éditer ainsi:
csound essai.csd
Modifier les options du csd de cette manière:
-o rec/essai.wav
Créer un sous-dossier "rec" dans celui qui contient essai.csd. Lancer le batch,
votre fichier essai.wav sera écrit dans ce dossier. Il existe un système de dossiers
par défaut géré par Csound (SADIR,SFDIR, etc.), que je n'aborde pas ici.
*Un batch est un simple fichier texte, dont l'extension est modifiée en *.bat.
Voilà un premier complément, comment jouer un instrument depuis un clavier maître.
D'autres suivront, sur la lecture d'un fichier midi et l'enregistrement en temps réel.
Pour ceux qui souhaitent bénéficier de la coloration syntaxique, je leur recommande l'
éditeur de texte Scite (http://www.scintilla.org/SciTE.html) et les fichiers de configuration
qui se trouvent ici (http://solipse.free.fr/site/index_csound.html).
Lire un fichier midi, rendu et temps réel. Commenter/décommenter la ligne
correspondant selon l'option choisie.
L'enregistrement en temps réel se fait au format raw, c'est à dire sans entêtes. Différents
opcodes sont utilisables à cette fin, ici j'utilise "fout". Il est important que l'instrument enregistreur
soit explicitement activé dans la partition (ici: "i2 0 3600"), en plus de l'activation globale (f 0 3600).
Il doit exister d'autres méthodes plus élégantes...
Pour convertir un fichier raw en wav, il suffit d'utiliser la commande Importer/Données brutes"
du menu fichier d'Audacity.
Un nouvel exemple, avec l'introduction d'une macro et l'enregistrement au format wav.
Exemple de lecture d'un fichier wav depuis le disque dur.L'opcode utilisé, diskin, a deux
paramètres: le premier étant le nom du fichier, le second, la vitesse de lecture. Pour lire
le fichier à la vitesse (hauteur) originale, ce paramètre sera initialisé à 1, pour le lire moitié
moins vite à 0.5, etc. Si sa valeur est négative,le fichier sera lu à l'envers. Il existe d'autres
opcodes pour la lecture de fichiers audio, soundin, par ex. Il est aussi possible de charger un
échantillon dans une table.
Quelques liens :
Chapitre 1 du Csound Book en français:
http://www.csounds.com/chapter1/french/
Site Csound, beaucoup de matériel, mais en anglais:
http://www.csounds.com/
Téléchargements des différentes versions et manuel partiellement traduit en français:
http://csound.sourceforge.net/
Exploring Analogue Synth Techniques:
http://www.thumbuki.com/csound/articles/east/
The Steven Cook Collection:
http://www.csounds.com/cook/
Realtime Csound Examples:
http://iainmccurdy.org/csound.html
Site de Giorgio Zucco. Avec Vectrosynth, pour se donner une idée de ce qu'il est possible
de réaliser avec Csound (onglet software).
http://giorgiozucco.altervista.org/
Site de Oeyvind Brandtsegg, beaucoup d'instruments et notamment "ImproSculpt"...
http://oeyvind.teks.no/frames/Index.htm
CSound Journal : http://www.csounds.com/journal/
Dernière modification par solipse (2008-12-13 13:05:19)
Hors ligne
Merci Solipse! J'espère que ça donnera envie de l'essayer.
J'ai rajouté des balises [ code ] dans ton message (cf : http://codelab.fr/22), par la suite je pourrais adapter le fichier de coloration syntaxique pour qu'il soit utilisable sur le forum.
Hors ligne
Bonjour,
Pour ceux qui souhaiteraient installer la dernière version
de Csound (5.09.1), sous Windows, il y a quelques problèmes
avec l'installateur. La version double (64 bit) ne peut charger
la librairie PortAudio qui permet à Csound d'accéder aux
pilotes ASIO...La seule parade, pour l'instant, est de se
rabattre sur la version "float"(Csound5.09.1-gnu-win32-f.exe)
et de récupérer les dlls rtpa.dll et portaudio.dll à cette
adresse (en bas de page):
http://www.nabble.com/Fw:-PortAudio-in- … 46582.html
et de suivre la procédure indiquer.
solipse.
Hors ligne
Bonjour,
Le problème évoqué dans le précédent post a été solutionné, et la dernière version
(Csound5.09.2-gnu-win32-d.exe) peut être téléchargée ici :
http://sourceforge.net/project/showfile … _id=120482
solipse.
Hors ligne
Bonjour tous ! Y a t'il des utilisateurs de csound~ avec Max 4.6 ?
Je n'arrive pas à lire les .csd, .orc, ou .sco il me dit Csoundcomplile() failed
Auriez vous une solution ? en vous remerciant !
ad
Hors ligne
Bonjour adrien,
Je n'ai jamais utilisé csound~ avec Max, juste quelques
essais avec la version Pure Data. Donc mon aide ne pourra
être que limitée...Cela dit, as-tu tenté de compiler ton csd
directement avec Csound, histoire de vérifier qu'il ne s'agit
pas d'une simple erreur de code?
solipse.
Hors ligne
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…
ad
Hors ligne
J'ai un problème récurent avec csound. J'ai des 'clac' et ce message sur la ligne de commande :
Déficit de remplissage du tampon sur la sortie audio en temps réel
J'ai essayer d'augmenter le tampon avec les options -b1024 -B4096 et aussi avec --sched. Mais ça ne change rien
Je suis sous Ubuntu 9.04
Hors ligne
Bonjour Voz,
J'utilise Csound sous Windows, donc je ne peux que te suggérer
des pistes.
Les clics (ou clacs...) apparaissent-ils aussi quand tu fais un "rendu"
sur disque?
Les pilotes de ta carte sont-ils à jour?
Ta machine a-t-elle une configuration suffisante pour le "temps réel"?
Est-ce avec un projet spécifique qu'apparaissent des clics?
....
Bon courage,
solipse.
Hors ligne
Bonjour solipse,
Non pas de clac pour le rendu sur disque, seulement en temps réel.
Mais ces clacs apparaissent a peu prés sur tout les projets, qu'ils soient complexes ou très simples
Possible que ma carte son et le pilote soient en cause. En effet j'ai aussi ce genre de clac a l'ouverture de fichiers sons avec vlc,
et ces mêmes fichiers ouvert avec audacity sont nickel.
Je n'ai pas une machine très véloce (un Dual-Core) Peut-être qu'un linux avec noyau "temps réel" solutionnera mon problème...
Je vais me lancer dans une install de la UbuntuStudio 8.04 sans tarder. Faut juste que je fasse un peu de ménage sur mon disque dur
Merci pour ta réponse
Hors ligne
Bonjour
Voulant utiliser la version 5.10 de Csound sur Windows xp ainsi que d'autres projets issus de Csound comme blue , athena cl , l'installation rencontre quelques problèmes mis à part pour blue car elle requiert une version de python 3.5 or celle-ce était installée sur mon ordinateur, s'agit il d'une Dll à mettre ou d'une libraire python à compiler ou encore de l'éxecutable , merci pour vos précisions.
Hors ligne
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?
Hors ligne
Bonjour baudry
Pour l'install de Csound sous Windows je ne peux pas trop t'aider
Mais en ce qui concerne les fichiers orc et sco. Tu as 2 solutions : soit les jouer en temps réel (csound envoi le résultat directement sur la carte son) soit envoyer la compilation dans un fichier .wav. Que tu ouvre ensuite avec ton player habituel.
Si tu utilise directement csound depuis la ligne de commande :
csound -odac etude1.orc etude1.sco
(-odac c'est l'option temps réel) ou
csound -o monfichier.wav etude1.orc etude1.sco
Si tu utilise Blue, je crois qu'il les importes directement. Mais tu as obligatoirement besoin que csound soit correctement installé pour qu'il les joues.
Hors ligne