samedi 24 janvier 2009

Composition d'une partition

Composer une partition en rentrant des chiffres les uns a la suite des autres peut être laborieux. Une solution consiste donc a utiliser un clavier midi. Une autre solution : siffler les notes dans un micro puis les extraire avec un logiciel d'analyse audio. J'ai utilisé sonic-visualiser et son Vamp Plugins. Pour tout dire, je n'ai pas vraiment tout compris mais je vais décrire brièvement la méthode utilisée. La première chose a faire est donc d'enregistrer un son de quelques notes. Lancer sonic-visualiser et importer le son. Un outil "main" permet de déplacer le signal de droite a gauche et la molette de la souris de zoomer. Un outil "flèche" permet de sélectionner une portion de son et 2 boutons permettent de ne jouer que cette sélection et en boucle (très pratique).



Ouvrir un nouveau "Pane" (menu Pane>New). Cela ouvre un panneau vide dans la partie inférieure de l'écran. Appliquer le filtre magique : menu Transform > Analysis by categories > Visualisation > Constant Q-Spectrogramme.



Les options "Tunning Frequency" et "Bins per Octave" peuvent rester a 440 et 12. Les options Min et Max Pitch servent a sélectionner la plage de fréquences.
Voila ce que ça donne :



L'axe vertical indique la fréquence du son. Lorsque l'on survole un pavé coloré, l'instant et la note sont données dans l'encart en haut à droite. Dans notre exemple : 2.832 seconde et la note E (en midi : [17]). La correspondance des notes avec leurs fréquences se trouve ici.
Il suffit maintenant de relever les notes et les "instants". Dans notre exemple, on pourra remarquer que les notes apparaissent 2 fois avec un octave de décalage. C'est là un phénomène dût à la voix. En passant du "doum doum doum" au "mmmm mmm mmmm", il y en a trois ! Mais l'écart étant d'un octave, la note est bien la même. Il faut juste faire attention a ne pas passer d'un octave a l'autre au cours du relevé.
Voici ma partition :

f1 0 8192 10 1
; p3 p4 p5
; dur amp cps
r 10
i1 0.882 0.3 10000 58.270
i1 1.207 . 10000 43.654
i1 1.486 . 10000 36.708
i1 1.834 . 10000 30.868
i1 2.182 . 10000 25.957
i1 2.507 . 10000 20.602
i1 2.832 . 10000 21.827
s
e


Curieusement, les notes relevées sont trop basses et peu audibles. J'ai multiplier par 4 la fréquence.




jeudi 22 janvier 2009

Boucles

Avec les "Instructions de Partition" il est possible de faire des "boucles" de notes.
exemple :

f 1 0 4096 10 1 ;A SINE WAVE
;--------------------------------------------------------------------------
; p1 p2 p3 p4 p5 p6 p7 p8 p9
; ins init dur amp freq c m index table d'onde
r 30 freq
i 1 0.5 2 10000 [130.8] 4.02 2.001 8 1
i 1 0.3 2 5000 [329.6] 2.02 3.003 5 1
i 1 0.1 2 6000 [440] 1.02 5.005 3 1
s
e


Ces 3 notes seront jouées 30 fois.
r — Débute une section répétée.
s — Marque la fin d'une section.
Cela couplé avec des variateurs graphiques additionnés sur certaines variables de l'opcode.

Une version du "Manuel de Référence Canonique de Csound" existe en français et peut être téléchargée Ici.


jeudi 15 janvier 2009

Lien

Réf : Initiation à la synthèse sonore avec Csound

Cet article répond à beaucoup de questions générales autours de Csound et sur sa façon de travailler.


mardi 13 janvier 2009

Realtime

Csound intègre dans sa version 5, un langage pour réaliser simplement une interface graphique permettant d'intervenir sur le son en temps réel. En effet, pour explorer toutes les possibilités des opcodes, il est très intéressant de pouvoir créer rapidement un curseur ou deux, qui vont interagir sur les variables qui nous intéressent.

Un exemple d'interface :



Le contenu du fichier testFLTK.csd :

‹csoundsynthesizer›
‹csoptions›
-odevaudio -b400
‹/csoptions›

‹csinstruments›

sr = 44100 ;SAMPLE RATE
kr = 4410 ;CONTROL RATE
ksmps = 10 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE
nchnls = 1 ;NUMBER OF CHANNELS (2=STEREO)

; fenetre | larg | haut | x | y
FLpanel "testFLTK.csd", 490, 100, 10, 300

;VALUE_DISPLAY_BOXES WIDTH | HEIGHT | X | Y
idamp FLvalue " ", 70, 18, 5, 5
idfreq FLvalue " ", 70, 18, 5, 45

;SLIDERS | HANDLE MIN | MAX | EXP | TYPE | DISP | WIDTH|HEIGHT| X | Y
gkPartAmpl, ihPartAmpl FLslider "Ampl", 0, 5000, 0, 3, idamp, 400, 25, 80, 5
gkPartFreq, ihPartFreq FLslider "Freq", 50, 2000, 0, 3, idfreq, 400, 25, 80, 45

;SET_INITIAL_VALUES | VALUE | HANDLE
FLsetVal_i 1000, ihPartAmpl
FLsetVal_i 440, ihPartFreq

FLpanel_end ;END OF PANEL CONTENTS
FLrun ;RUN THE FLTK WIDGET THREAD

instr 1

;OUTPUT OPCODE AMPLITUDE | FREQUENCY | FUNCTION_TABLE
a1 oscil gkPartAmpl, gkPartFreq, 1

out a1
endin

‹/csinstruments›

‹csscore›
f 1 0 4096 10 1 ;A SINE WAVE
;INSTR | START | DURATION
i1 0 3600 ;DUMMY SCORE EVENT - ALLOWS REALTIME PERFORMANCE FOR UP TO 1 HOUR
‹/csscore›

‹/csoundsynthesizer›


La commande pour lancer le programme :

csound testFLTK.csd


Quelques liens :

Csound Realtime FLTK Examples
FLTK Widgets and GUI controllers

Les balises ‹csoptions› contiennent les options du lancement de Csound. Ce sont elles qui dirigent le son de sortie vers la carte audio, en temps réel.

Command-line Flags (by Category)


samedi 10 janvier 2009

Gen10

Voici comment générer la fonction (ou table d'onde) :
exemple d'une sinusoïde :

f1 0 8192 10 1




Les paramètres de la fonction :

  • le n° de la fonction : 1
  • temps d'initialisation (toujours a 0 (pour le moment...))
  • définition d'échantillonnage : 8192 (ça correspond au nombre de pixels pour les photos)
  • N° du sous-programme GEN (dans notre cas: GEN10 (il en existe plus de 20...))
  • paramètre(s) du sous programme GEN (ici 1 : simple sinusoïde)
GEN10 génère des formes d'onde complexes constituées d'une somme de simples sinusoïdes pondérées;

Voici un extrait d'une documention de Csound :

Le générateur GEN 10 peut être utilisé pour faire de nombreuses autres formes d'onde en dehors des ondes sinusoïdales en ajoutant des nombres (ou paramètres). La première composante du son est généralement appelé le fondamental. C'est la base de la fréquence du son. Si seul le fondamental est spécifié, la table contient exactement un cycle de la forme d'une onde sinusoïdale. Les nombres suivants se réfèrent à la hausse des harmoniques ou partiels. Ils sont généralement appelés la première harmonique, deuxième harmonique, troisième harmonique etc. La première harmonique a deux fois la fréquence du fondamental. Cela signifie que deux cycles complets d'une onde sinusoïdale se place dans la table. La hauteur de la première harmonique est d'une octave plus haute que le fondamental. La seconde harmonique est de trois fois la fréquence du fondamental et est de trois octaves plus élevée. Dans la table d'onde suivante, une onde sinusoïdale d'une octave et demie plus élevée que le fondamental, est ajoutée a l'onde originale :

f2 0 8192 10 1 0.5




Autres exemples
Signal en dents de scie :

f3 0 8192 10 1 .5 .333333 .25 .2 .166667 .142857 .125 .111111 .1 .090909 .083333 .076923 ;Saw




Signal carré :

f4 0 8192 10 1 0 .333333 0 .2 0 .142857 0 .111111 0 .090909 0 .076923 ;Square




Un autre exemple avec ici la 1ère harmonique à 1 :

f5 0 8192 10 1 1




Enfin, les articles de Wikipédia au sujet des harmoniques
et du timbre


mercredi 7 janvier 2009

Deb 3

C'est ma 3ème tentative, de découverte de CSound. La doc proposée de CSound est un peu ardue pour un vrai débutant comme moi, n'ayant aucune notions ni de musique ni d'acoustique. Celle-ci se trouve ici : Introduction à la création sonore avec Csound (de Richard Boulanger). C'est LA référence et une excellente documentation, plébiscitée partout sur le net, mais un peu ardue.

La doc du CSound book démarre avec 6 instruments. Le premier, très simple, utilise une table d'onde :

instr 101 ;OSCILLATEUR SIMPLE
a1 oscil 10000, 440, 1
out a1
endin


Les paramètres de l'opcode oscil sont :
  1. l'amplitude : 10000
  2. la fréquence (en Hz) : 440
  3. la table d'onde utilisée : 1
Cette table d'onde décrit la forme du signal. Elle se définie comme ceci :

f1 0 4096 10 1 ;une sinusoïde


La variable a1 correspond à la sortie de l'oscillateur, elle est redirigée vers la carte son de l'ordinateur :
out a1.
Viens ensuite de code de la "note" :

; instrument / temps d'initialisation / durée
; P1 P2 P3
i 101 0 3


L'ensemble de ce code permet de sortir un son de 3 secondes.
C'est le son le plus basique : une sinusoïdale.

Comment visualiser la forme de cette onde ? et comment fonctionnent les paramètres de cette table d'onde ?
- Ecrire ce fichier son en .wav sur le disque dur et l'ouvrir dans un éditeur audio. Par exemple Audacity.
Voici la forme du signal :