Sound designer Java & Music.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Comprendre les caractéristiques d’un son
Rappels C.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Initiation à la programmation et algorithmique cours 2
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi.
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Page 1 Déboguer un programme Java Jacques Lonchamp.
L’ interruption de boucle
INTRODUCTION 1. Une représentation du signal où le bruit est isolé
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Corrigé de Spécialité 9 Acoustique 9.1 Fréquences & gamme
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
5. Les structures répétitives
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Langage Oriente Objet Cours 4.
5. Echantillonnage Introduction
Traitement du signal TD0 : Introduction.
Introduction à la programmation (Java)
Acoustique musicale Mains dœuvres. Son pur Formule : X = sin ( 2 ft )
Faites un click de souris pour progresser
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
SONS & INSTRUMENTS IREM – stage du 28 mars 2013.
Procédures et fonctions
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Plan cours La notion de pointeur et d’adresse mémoire.
La librairie assert.h.
Microcontrôleurs et Langage C Les Interruptions diapo 1
SIG3141 Partie I: Analyse de Fourier ESIEA D Kateb
Caractéristiques des sons
Les tests.
Tutorat en bio-informatique
Introduction au langage C Fonctions et Procédures
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Séance de créativité Susanne Exemple Exercice 1 : Changer d‘affichages
Introduction à la programmation (420-PK2-SL) cours 8
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Scripts et fonctions Instructions de contrôle
Étapes, logiciels et principes
Chapitre 3 suite Acoustique musicale
Meetup maker girls Arduino et Capteurs
Emetteurs et récepteurs sonores c-Caractéristiques et traitement du son.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Acoustique musicale.
Audacity Vincent Lefevre et Hugo Smadja. Un peu de Théorie Le son est une onde propagé dans l’air C’est un phénomène analogique L’informatique discrétise.
Stéphanie Lechanteux Stéphane Moreau Exposé SI 28.
Philibert Maniez SI28A08. Audacity Logiciel libre sous licence GNU De nombreuses utilisations :  Prise de son  Edition  Transformation  Projet multipiste.
PRESENTATION FLASH 2 MAURIN Marion BERETTI Vincent.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Sound designer Java & Music

Programmation Ouvrir « javasool-proglets.jar » Sélectionner « SyntheSons » Méthodologie : Création du programme = édition Vérification des erreurs = compilation Test du programme = exécution Fenêtres : Gauche = édition du programme Droite = visualisation de l’exécution

« ; » est obligatoire à la fin de chaque instruction Mon premier programme Edition du programme : Début void main( ) { Commentaire // Mon 1er programme Instructions @tone:sns(t) ; play() ; Fin } Compilation Exécution Visualisation dans « Proglet-Paintbrush » « ; » est obligatoire à la fin de chaque instruction

Séance n°1 : les sons But de la séance 1 : CRÉER DES INSTRUMENTS

Séance n°1 : les sons Emettre un son « pur » t(s) Emettre un son « pur » @tone:sns(t); Emettre un son « triangle » @tone:tri(t); Emettre un son « carré » @tone:sqr(t); Emettre un « bruit » @tone:noi(t); t(s) t(s) t(s)

Séance n°1 : les sons Emettre un son plus grave @tone:sns(0.5*t); Emettre un son plus aigu @tone:sns(2*t); Emettre un son moins fort @tone:0.5*sns(t); Emettre un son plus fort @tone:2*sns(t); t(s) t(s) t(s) t(s)

Séance n°1 : les sons Ajouter des harmoniques @tone:0.6*sns(t)+0.3*sns(2*t)+0.2*sns(3*t)+…; Emettre un son de type « flute de pan » @tone:sns(t)+…; Emettre un son de type « orgue »  Enregistrer l’instrument sous « orgue.jvs » f(Hz) 0,6 f0 0,3 2f0 0.2 3f0 … Harmoniques impairs Harmoniques pairs

Séance n°1 : les sons Ajouter des attaques Emettre une percussion @tone:(1-exp(-t/1000))*(…) Emettre une percussion @tone:exp(-t/10)*sns(t);  Enregistrer « percussion.jvs » Emettre un son de type « corde » @tone:…*…*sns(t); Flute précédente t(s) 1000ms t(s) 10ms attaque t(s) 10ms 1000ms retombée

Séance n°2 : les mélodies Buts de la séance 2 : CRÉER DES EFFETS CRÉER DES MELODIES;

Séance n°2 : les mélodies Les notes : Les gammes « latine » et « anglo-saxonne » Les octaves A4 ( note La) : 440Hz A5 (note La) : 880Hz

Séance n°2 : les mélodies Les notes : La syntaxe javascool setNotes ("5 c4 a4"); Durée des notes suivantes La du 4ème octave (440Hz) Do du 4ème octave

Mon second programme Définition de la mélodie : La fonction « setNotes() » permet de définir la mélodie. void main( ) { // Mon second programme @tone:sns(t) ; setNotes("2 c2 d2 e2 f2 g2 a2 b2 | c3 d3 e3 f3 g3 a3 b3 | c4 d4 e4 f4 g4 a4 b4"); play() ; }

Mon second programme Essayer de jouer (et reconnaitre) les mélodies suivants : "2 e5 | 1 b c5 | 2 d5 | 1 c5 b | 2 a | 1 a c5 | 2 e5 | 1 d5 c5 | 2 b | 1 b c5 | 2 d5 e5 c5 a a" "e5 e5b e5 e5b e5 e5b e5 b d5 c5 4 a | 1 h c e a 4 b | 1 h e g g# 4 a" " 1 d h d h 3 d 1 h | 1 d h d h 3 d 1 h | 2 d f a3# c | 8 d | 1 d# h d# h 3 d# 1 h | 1 d# h d# d h 4 d | 1 d h d c h c h d | c f d# c a3 f#3 2 f3 "

Séance n°2 : les effets Les effets permettent de modifier un son existant Filtre passe bas / Equalizer Distorsion / Overdrive Réverbération / Delay / Flanger …

On appelle la fonction « passeBas » dans le programme principal Mon 3ème programme Les effets : Filtre Passe Bas / Equalizer Le filtre passe bas permet d’enlever les hautes fréquences du son. // Fréquence de coupure du filtre double fc =800; // en Hz double x1 = 0; // Fonction de filtrage passe-bas double passeBas(double x) { x1 += fc/44100 * (x - x1); return x1; } // programme principal void main() { @tone: passeBas(0.6*sns(t)+0.3*sns(2*t)+0.2*sns(3*t)); setNotes("2 c2 d2 e2 f2 g2 a2 b2 | c3 d3 e3 f3 g3 a3 b3 | c4 d4 e4 f4 g4 a4 b4"); play() ; 0,6 Filtre PASSE BAS 0,6 0,3 0,1 0.2 0.02 f0 2f0 3f0 … f(Hz) f0 2f0 3f0 … f(Hz) fc On appelle la fonction « passeBas » dans le programme principal

Mon 3ème programme Les effets : La distorsion La « disto » consiste à écrêter le signal pour le déformer. // fonction distorsion double disto(double x){ if(x>0.3) {x =????} if(x<-0.3){x =????} return x; } // programme principal void main() { @tone: disto(0.6*sns(t)+0.3*sns(2*t)+0.2*sns(3*t)); … t(s) 1 0,3 -0,3 -1 DISTORSION Si l’amplitude du son est supérieur à 0,3, elle reste à 0,3 On appelle la fonction « disto » dans le programme principal

Mon 3ème programme Les effets : La réverbération La « réverb » nécessite de mémoriser le signal dans un tableau, pour en reproduire « l’écho » plus tard dans le temps. double tabx[ ] = new double [10000000] ; int i=0; // fonction reverbération double reverb(double x){ if(i>=50000) {tabx[i]=x; x =???? + ?????; } if(i< 10000000-1){i=i+1;} return x; } On enregistre le son à l’instant i Son produit = 0,6 * son présent + 0,3*son produit il y a 50000 instants (env. 1,2s) i=0 i - 500000 i= 108 On enregistre 108 valeurs, soit 226 secondes de son Pour l’instant suivant

Séance n°3 : orchestration But de la séance 3 : CRÉER DES RYTHMES FAIRE JOUER DES INSTRUMENTS ENSEMBLE

Séance n°3 : La rythmique Faire des boucles La répétition (ou boucles) permettent de donner un fond rythmique à un morceau. En Java, la répétition s’obtient à l’aide d’une boucle for : for(condition initiale ; condition d’arrêt ; incrémentation) Exemple for (int i=0;i<5;i++) { //instructions à répéter … } Les instructions entre les accolades sont répétées 5 fois

Mon quatrième programme Ecrire et modifier le programme : void main() { @tone: sns(t); String Mesures =""; Mesures = Mesures + "c3 c4 c3 c4 "; Mesures = Mesures + "e3 e4 e3 e4 "; Mesures = Mesures + "d3 d4 d3 d4 "; println(Mesures); setNotes(Mesures); play(); } On veut répéter ces instructions 10 fois de suite

Mon quatrième programme Instruction modulo : « a % b » contient le reste de la division de a par b Exemples : 5 % 3 vaut 2 5 % 2 vaut 1 Raccourcir le programme précédent en utilisant l’instruction % for (int j=0;j<8;j++){ if (??? || ???) Mesures = Mesures + "c3 c4 c3 c4 "; if (??? && ???) Mesures = Mesures + "e3 e4 e3 e4 "; if (??? && ???) Mesures = Mesures + "d3 d4 d3 d4 "; } | | veut dire « OU » Si j = 0,1, 6 ou 7 Si j = 2 ou 3 Si j = 4 ou 5 && veut dire « ET »

Séance n°3 : L’orchestration Plusieurs instruments dans un même programme. Pour chaque instrument qu’on veut utiliser, il faut créer son type (sa classe en informatique). // On crée un type d'instrument class flute extends NotesSoundBit { … } // On crée un instrument de ce type flute instrument1 = new flute(); On donne ici les caractéristiques de l’instrument

Mon cinquième programme Plusieurs instruments dans un même programme. Pour chaque instrument qu’on veut utiliser, il faut créer son type (sa classe en informatique). // On crée un premier type d'instrument class flutePan extends NotesSoundBit { public double get(char c, double t) { return 0.6*sns(t)+0.3*sns(3*t)+0.1*sns(5*t); } // On crée un second type d'instrument class Harmonium extends NotesSoundBit { return 0.6*sns(t)+0.3*sns(2*t)+0.2*sns(4*t)+0.2*sns(8*t); // On crée un instrument de chaque type flutePan instrument1 = new flutePan(); Harmonium instrument2 = new Harmonium(); L’instrument 1 est de type « flute de Pan » et l’instrument 2 de type « Harmonium »

Mon cinquième programme Plusieurs instruments dans un même programme. Pour chaque instrument qu’on veut utiliser, il faut créer son type (sa classe en informatique). // Le chef d'orchestre fait jouer les deux instruments ensemble. SoundBit orchestre = new SoundBit() { public double get(char c, double t) { return 0.1 * instrument1.sound.get(c, t) + 0.2 * instrument2.sound.get(c, t); } }; void main() { String Mesures =""; for (int i=0; i<10; i++){ … instrument2.reset(Mesures); instrument1.reset("2 e5 | 1 b c5 | 2 d5 | 1 c5 b | 2 a | 1 a c5 | 2 e5 | 1 d5 c5 | 2 b | 1 b c5 | 2 d5 e5 c5 a a |"); orchestre.setLength(10); orchestre.play(); Programme précédent définissant la rythmique

Projet Programmer un morceau à partir de sa partition. Chaque morceau comporte plusieurs « pistes » et donc plusieurs instruments. Chaque instrument possède sa sonorité propre.

M. Jackson - Billie Jean Basse Synthé

Stromae – Alors on danse Piano Saxophone ténor