Bonjour,
Comment programmer des sons en java ? Il doit falloir donner l'enveloppe, le spectre, si c'est possible.
Ou au moins peut-on emettre des sons synthetises par un autre logiciel ?
Merci d'avance
Bonjour,
Comment programmer des sons en java ? Il doit falloir donner l'enveloppe, le spectre, si c'est possible.
Ou au moins peut-on emettre des sons synthetises par un autre logiciel ?
Merci d'avance
Le moyen le plus simple (et le plus simpliste) de lire des sons est d'utiliser la classe AudioClip... mais bon a part la lecture tu ne peux rien faire d'autres et tu n'auras aucun controle specifique.
Tu as ensuite le package javax.sound et Java Sound pour ce qui est de la synthese (MIDI) et quelques manipulations plus avancees y compris de la capture. C'est inclus dans le JDK/JRE
Et enfin tu as l'extension Java Media Framework qui permet, entre autre, de faire de la capture audio et video avancee. Cette extension doit etre installee separement.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Merci.
Je vais utiliser javax.sound.midi.
Que representent les "data byte" d'un midi message ?
J'ai essayé d'implementer MidiMessage et il me renvoie toujours l'erreur suivante:
EssaiSon.java:17: MidiMessage(byte[]) in javax.sound.midi.MidiMessage cannot be applied to ()
Pourriez-vous me donner un exemple d'extension de MidiMessage ?
En effet MidiMessage est une classe abstraite donc il faut la rendre concrete en implementant clone().
Merci d'avance.
Malheureusement je sais juste que ces APIs existent mais je ne les ai jamais utilisees. Il va donc te falloir chercher de la doc sur le Net. Tu peux egalement voir s'il en discutent dans le forum (anglais) dedie a Java Sound sur http://www.javagaming.org/
La classe que tu cites est abstraite mais il en existe des implementations :
MetaMessage, ShortMessage, SysexMessage. Apres j'ignore totalement ce a quoi elle servent.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Merci beaucoup. Finalement, j'y suis arrivé en utilisant ShortMessage. Ca fait un son de piano mais j'imagine qu'on doit pouvoir changer l'instrument.
Je mets un exemple de code pour information.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.sound.midi.*; public class EssaiPiano { public static void main (String args[]) {ShortMessage m[];int i;int N=20; m=new ShortMessage[N]; for(i=0;i<N;i++){m[i]=new ShortMessage();} try{ for(i=0;i<N;i++){ m[i].setMessage(128+16,(40+i/2)*(i%2+1),124);}} catch(InvalidMidiDataException e){} MidiEvent eve[]; eve=new MidiEvent[N]; for(i=0;i<N;i++){ eve[i]=new MidiEvent(m[i],i/2+1); } Track t; Sequencer pi=null; try{ pi=MidiSystem.getSequencer(); pi.open();} catch(MidiUnavailableException e) {System.out.println("erreur");} Sequence s=null; try{ s=new Sequence(Sequence.PPQ,1); } catch(InvalidMidiDataException e){System.out.println("erreur1");} t=s.createTrack(); for(i=0;i<N;i++){t.add(eve[i]);} try{ pi.setSequence(s);pi.start(); } catch(InvalidMidiDataException e){System.out.println("erreur3");} } }
Partager