Master Informatique 2ème année:

Informatique des sons et de la musique

Resp: Richard Terrat

Partie de cours de Jacques Ferber

FMIN404 - Année 2008-2009

 

 

Le cours dont le responsable est Richard Terrat, porte sur la musique, les sons et l'informatique.


Cours:

Contenu


La partie du cours dont je suis responsable porte sur :

Les TP porteront sur la programmation de modules MIDI en Java, ainsi que sur une manipulation de synthétiseurs virtuels afin de comprendre les principes de la synthèse sonore.

Pour démarrer en Java Sound Midi

Vous trouverez dans l'archive testjavasound, un moyen de comprendre et de démarrer des MidiDevice à l'aide de Java Sound.. Cet ensemble de sources comprend un petit logiciel de test 'TestJavaSound' qui liste les entrées sorties accessibles sur votre système et une classe MidiConnector qui permet de connecter des MidiDevice entre eux.

Description du package dans ce fichier readme.pdf.

Ensuite un programme appelé MidiConnector permet de connecter une entrée physique (un clavier par exemple) à une sortie qui peut être soit le synthétiseur de JavaSound soit une sortie physique (si vous en avez une bien entendu). Le composant MidiTransposer est en fait un tranposer neutre qui ne fait qu'envoyer en sortie ce qu'il a reçu en entrée.. C'est en fait à partir de là que vous pouvez construire tous les modules midi (device) que vous désirez... Ensuite il n'y a plus qu'à patcher les composants entre eux, comme on le fait dans MidiConnector..

Cette archive comprend en plus quelques fichiers fournis par Tritonus et jsresources.org


Liens utiles:

Java et Midi

Package javax.sound.midi : API Documentation

JavaSound Programmer Guide

Java Sound Demo

Ressources sur Java Sound

Fichiers de tests:

Remarque: il y a des fichiers de sons et midi dans le package de démo de Java Sound.

Fichier WAV : gagne.wav
Fichier MIDI : weepmine.mid
Banque de son : soundbank-min.gm

Polys

Voici les "polys" de ce cours de maitrise au format .pdf. En fait ce sont des copies des transparents que j'utilise en cours.. En attendant de proposer des polys adaptés à ce cours, on pourra aller utiliser les polys du DESS:

Concepts de Midi et JavaSound COURS_Midi_JavaSound.pdf
La synthèse de son Cours sur la synthèse sonore (soustractive et FM)

 

Sujets de TP: 

TP 1 : Premiers pas sur JavaSound

TP 2 :

 

TP 3 :

 

 

Examen/sujet de projets

Globalement l'ensemble des projets porte sur la réalisation de modules sonores réalisés à l'aide de Java Sound Midi..

Dans tous les cas, l'idée est de construire un module (device en Java Midi) qui puisse s'intégrer à d'autres modules. On fera attention à ce que le device puisse être bien séparé de l'interface (le module sera défini par une API et l'interface sera définir dans une classe à part qui pilotera l'API du module).

 

Sujet 1: réalisation d'un arpégiateur.

Un arpégiateur est un outil de reproduction d'arpèges, c'est à dire de suites de notes correspondant à un accord. Le principe est le suivant: un musicien joue un accord sur un clavier et l'arpégiateur joue les notes de l'accord dans un ordre pré-établi (montée, descented, montée-descente, accord ryhtmique, aléatoire) avec un ryhtme pré défini. Pratiquement tous les synthés actuels disposent d'un arpégiateur, du simple au complexe. Voici l'arpégiateur de Reason:

(cliquer sur l'image pour l'agrandir)

Ce qu'il faut faire pour le projet

On suppose que l'on envoie des notes (événements note on) dans un buffer. L'arpégiateur joue ses notes en faisant des arpèges. Voilà les fonctionnalités standard d'un arpégiateur:

On pourra s'inspirer d'arpégiateur existants. La plupart des synthés (hard ou soft) comprennent un arpégiateur.

Sujet 2: réalisation d'un séquenceur "pas à pas" (step sequencer).

Les séquenceurs "pas à pas" ont fait les beaux jours de la musique électronique des années 70 et 80. On les entend toujours dans les musiques actuelles (ambient, dance, house...). Le principe est qu'un programmeur entre les notes qui vont être jouées sur une séquence de 12 à 32 notes (en général), toutes les notes étant jouées au même tempo.

(cliquer sur l'image pour l'agrandir)

Voici un exemple de step sequencer: les notes sont jouées sur une grille, les boutons en dessous donnent la vélocité (force) de la note ainsi que d'autres paramètres assignables (legato ou lié, ouverture du filtre, etc...)

(cliquer sur l'image pour aller sur le site)

ou bien le sequenceur Matrix de Reason (vu ici doublé pour correspondre plus à ce que l'on demande d'un "vrai" step sequenceur):

Ce qu'il faut faire pour le projet

Les plus:

Sujet 3: réalisation d'un ensemble de plusieurs modules midi: transposeur, midi delay (écho midi), etc..

Faire de la musique assistée par ordinateur nécessite la présence d'un modules de gestion de notes. Ce sujet se propose de réaliser un petit ensemble de modules qui pourront être reliés les uns aux autres afin de gérer une cascade de modules...

Quelques modules à réaliser (tous ces modules sont à réaliser). Chacun de ces programme est en fait très simple. Dès que vous aurez réalisé le premier, les autres paraitrons assez faciles.

  1. Transposeur: on joue une note, et le module transpose la note jouée à une autre hauteur (exemple: on joue un do et le module joue un sol)
  2. Midi delay: on joue une note et le module rejoue la note jouée après un certain temps
  3. Transposeur modal: on joue une note et le module joue la note la plus proche correspondant à la gamme entrée.
  4. Midi Monitor: affiche tous les événements que le MidiDevice reçoit sur ses entrées.
  5. Filtrage d'événements midi.. Pour comprendre ces deux dernières fonctionnalités, vous pouvez vous référer au logiciel MidiMonitor de chez Snoize.
  6. Un combinateur permettant de combiner ces différents modules en un seul..

Sujet 4: pilotage de notes midi par le souffle

Il s'agit de reproduire à l'aide de Java Sound, le mécanisme utilisé dans le logiciel Ocarina pour l'Iphone qui consiste à souffler dans un micro pour avoir une note, pendant qu'on joue la note sur un clavier.

 

 


 


retour au début de ma page d'accueil