La synthèse sonore, c'est l'ensemble des techniques qui permettent de créer des sons depuis des instruments électroniques. Les synthétiseurs d'il y a 20-30 ans utilisaient des circuits électroniques analogiques (comme dans les synthétiseurs MOOG, ou la boite à rythme TB303), aujourd'hui on utilise plutot des microprocesseurs créés pour cet usage (DSP) pour lesquels on écrit des logiciels (cf :
synthétiseurs et
synthèse sonore sur wikipedia)
Aujourd'hui il existe de nombreuses techniques de synthèse, dont la complexité mathématique a évoluée avec les capacités des microprocesseurs. Par exemple : la modélisation physique tente de mettre en équation les processus qui sont à l'origine du son (la vibration d'une corde, d'une plaque de métal ou le souffle dans une flûte). Ensuite on peut "jouer" de cet instrument virtuel, cela permet de simuler les instruments traditionnels mais aussi d'en inventer de nouveaux. (cf : l'instrument
flute dans ChucK )
Dans ChucK il y a toute une bibliothèque de ce genre d'instruments, mais aussi les oscillateurs de base (onde carrée, en dent de scie, etc.). Tu peux donc utiliser ce langage pour créer des instruments à partir des "briques de base", qui peuvent être joués directement depuis un clavier midi, ou tout autre instrument midi, voire par un joystick ou simplement au clavier.
Dans ce sens, ChucK est juste utilisé comme un synthétiseur.
Mais tu peux aussi l'utiliser pour composer et écrire de la musique, comme disait FrihD plus haut, à la manière d'une partition, en utilisant un ou plusieurs instruments à la fois. A la différence d'une partition, ton "programme" peut être interactif, intégrer par exemple le son venu de micros, le modifier, utiliser des arrangements aléatoires et être modifié au cours du morceau.
Par exemple, voici une partition réécrite "en ChucK" (tirée de
http://wiki.cs.princeton.edu/index.php/ChucKing_Scores)
- Code: Tout sélectionner
// Westminster chimes
// ChucK program
// Copyright (C) 2006 Pedro López-Cabanillas <plcl@users.sourceforge.net>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation, Inc.
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// patch
TubeBell s => JCRev r => dac;
.9 => s.gain;
.8 => r.gain;
.2 => r.mix;
// MIDI notes
67 => int g;
72 => int C;
74 => int D;
76 => int E;
// Melody
[[C,4],[E,4],[D,4],[g,2],[C,4],[D,4],[E,4],[C,2],
[E,4],[C,4],[D,4],[g,2],[g,4],[D,4],[E,4],[C,2]] @=> int tune[][];
-6 => int transport;
80 => int tempo;
// Play
for( 0 => int i; i < tune.cap(); i++) {
std.mtof( tune[i][0] + transport ) => s.freq;
1.0 => s.noteOn;
240000::ms / ( tune[i][1] * tempo ) => now;
}
Sur le forum d'electro music il y a un morceau de Terry Riley (compositeur contemporain) réécrit en ChucK :
http://www.electro-music.com/forum/topic-14237.html