IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

[JavaSound] Jouer une partition en Java


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 2
    Par défaut [JavaSound] Jouer une partition en Java
    Bonjour a tous,

    Dans un de mes projets, je cherche a jouer une partition musicale.
    J'ai les valeurs des notes de la partition, leur durée et le tempo de la musique et je souhaiterais juste entendre la partition jouée avec n'importe quel instrument de la soudbank.

    J'ai consulté pas mal de forums a ce sujet mais rien de bien probant.
    Les principales difficultés résident dans la construction du fichier Midi, et ensuite sa lecture a l'aide du sequencer.

    Si vous avez déjà réfléchi a ça, je suis preneur!

    Merci de votre aide

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 2
    Par défaut Reponse
    Voila un bout de code tres imple et efficace que j'ai recupere pour jouer une note:

    import javax.sound.midi.MidiSystem;
    import javax.sound.midi.Synthesizer;
    import javax.sound.midi.Receiver;
    import javax.sound.midi.MidiUnavailableException;
    import javax.sound.midi.ShortMessage;
    import javax.sound.midi.InvalidMidiDataException;
    import javax.sound.midi.Transmitter;
    import javax.sound.midi.Sequencer;

    public class Miditest
    {
    static Receiver receiver;
    private ShortMessage message = new ShortMessage();

    public Miditest()
    {
    Synthesizer synth=null;
    Sequencer seq;
    Transmitter seqTrans;

    try {
    synth = MidiSystem.getSynthesizer();
    synth.open();
    seq = MidiSystem.getSequencer();
    seqTrans = seq.getTransmitter();
    receiver = synth.getReceiver();
    seqTrans.setReceiver(receiver);

    } catch (MidiUnavailableException ex1) {
    ex1.printStackTrace();
    }

    playFreqNote(70, 3000, true, 80);
    }

    public void playFreqNote(int note, int duration, boolean bStop, int volume)
    {
    startNote(note, volume);
    try
    {
    Thread.sleep(duration);
    }
    catch (InterruptedException e)
    {
    e.printStackTrace();
    }
    if(bStop)
    stopNote(note,volume);

    }

    private void startNote(int note, int volume)
    {
    setShortMessage(ShortMessage.NOTE_ON, note, volume);
    receiver.send(message, -1);
    }

    private void stopNote(int note, int volume)
    {
    setShortMessage(ShortMessage.NOTE_OFF, note, volume);
    receiver.send(message, -1);
    }

    private void setShortMessage(int onOrOff, int note, int volume) // 70
    {
    try
    {
    message.setMessage(onOrOff, 0, note, volume);
    }
    catch (InvalidMidiDataException e)
    {
    e.printStackTrace();
    }
    }

    public static void main(String[] args)
    {
    miditest miditest = new miditest();
    System.exit(0);
    }

    }


    Pour jouer une partition ce code marche a merveille egalement.

    J'ai vu une autre discussion sur le forum ou quelqu'un proposait une solution pour jouer une note, mais le son est bizarre, probablement du au fait que la note ets jouee tout le temps pendant la duree, et de plus si on essaie d'enchainer plusieurs notes, au bout d'un moment plus aucun son ne sort.

    Bref je conseille vraiment d'utiliser ce code a la place!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jouer un son pour une alerte en JAVA
    Par Ashkell dans le forum Multimédia
    Réponses: 2
    Dernier message: 26/05/2008, 15h19
  2. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44
  3. jouer une animation a l'envers
    Par sylvain_bos dans le forum DirectX
    Réponses: 2
    Dernier message: 18/05/2004, 21h32
  4. Accéder à une partition HPFS
    Par Krashtest dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 14/11/2003, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo