Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    javax.sound.midi - Errore: MIDI OUT transmitter not available - A cosa è dovuto?

    Ciao a tutti,
    da un paio di giorni mi sto imbattendo nelle api "javax.sound.midi" perchè creare e manipolare file midi mi interesserebbe davvero molto.
    Ho letto molte guide e articoli su questo argomento, ma mi sono imbattutto in questo errore:
    "javax.sound.midi.MidiUnavailableException: MIDI OUT transmitter not available"

    La cosa che più mi fa impazzire è che il codice che ho usato fa parte di un Tutorial ...
    Di seguito il codice:
    Codice PHP:

    package provamidi
    ;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.sound.midi.*;

    public class 
    IBM_Esempio1 {
        private 
    Sequencer sequencer;

        public 
    IBM_Esempio1(){
            try {
    //definisco l'oggetto sequencer
                 
    sequencer MidiSystem.getSequencer();
                 
    sequencer.open();
            } catch (
    MidiUnavailableException ex) {
                
    Logger.getLogger(IBM_Esempio1.class.getName()).log(Level.SEVEREnullex);
            }
    //creo un file da un percorso assoluto
            
    File file= new File ("C:\\music1.midi");
            try {
    //setto la sequenza per il sequencer
                
    sequencer.setSequence(MidiSystem.getSequence(file));
            } catch (
    InvalidMidiDataException ex) {
                
    Logger.getLogger(IBM_Esempio1.class.getName()).log(Level.SEVEREnullex);
            } catch (
    IOException ex) {
                
    Logger.getLogger(IBM_Esempio1.class.getName()).log(Level.SEVEREnullex);
            }
    //faccio partire il sequencer
            
    sequencer.start();


        }
    //questo codice, come dice il tutorial, dovrebbe catturare l'evento legato allo stream..???

        
    public void meta(MetaMessage event){
            if(
    event.getType()==47){ // 47 significa che è finito lo stream
                
    sequencer.stop();
                
    sequencer.close();
            }
        }

        public static 
    void main(String args[]){
            new 
    IBM_Esempio1();
            
        }

    Ecco invece cosa mi riporta il Debug:
    Codice PHP:
    29-mar-2009 20.15.14 provamidi.IBM_Esempio1 <init>
    GRAVEnull
    javax
    .sound.midi.MidiUnavailableExceptionMIDI OUT transmitter not available
            at com
    .sun.media.sound.AbstractMidiDevice.createTransmitter(AbstractMidiDevice.java:444)
            
    at com.sun.media.sound.AbstractMidiDevice.getTransmitter(AbstractMidiDevice.java:299)
            
    at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:451)
            
    at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:348)
            
    at provamidi.IBM_Esempio1.<init>(IBM_Esempio1.java:23)
            
    at provamidi.IBM_Esempio1.main(IBM_Esempio1.java:50)
    Exception in thread "main" java.lang.NullPointerException
            at provamidi
    .IBM_Esempio1.<init>(IBM_Esempio1.java:30)
            
    at provamidi.IBM_Esempio1.main(IBM_Esempio1.java:50)
    Java Result
    Non capisco il problema da cosa scaturisca essendo materia nuova per me, ma sarei grato se qualche buon'anima possa illuminarmi perchè è sempre bello imparare!

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: javax.sound.midi - Errore: MIDI OUT transmitter not available - A cosa è dovuto?

    Originariamente inviato da gmxsm
    Non capisco il problema da cosa scaturisca essendo materia nuova per me, ma sarei grato se qualche buon'anima possa illuminarmi perchè è sempre bello imparare!
    Hai mai provato a scrivere l'errore su google e vedere cosa viene fuori?

    http://www.google.com/search?client=...UTF-8&oe=UTF-8
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Prima di postare qui certo!
    In particolare avevo trovato questo:



    In più, dal link che mi hai scritto tu, oltre ai 2 link che avevo gia visto ho provato ad eseguire ciò che viene descritto su quest'altro:
    http://www.coderanch.com/t/274513/Ot...atibility-with

    ed in particolare:

    This solution assumes: - Windows XP SP3 - JDK 1.6+ - JRE 1.6+ The problem is the file sound.jar Find it in 3 places and delete it. C:\Program Files\JMF2.1.1e\lib\sound.jar C:\Program Files\Java\jdk1.6.0_07\jre\lib\ext\sound.jar C:\Program Files\Java\jre1.6.0_07\lib\ext\sound.jar Also, remove sound.jar reference from PATH and CLASSPATH This is an old sound.jar that messes up the new sound API in the new versions of Java.
    senza nessun risultato.
    Tra l'altro
    C:\Program Files\Java\jre1.6.0_07\lib\ext\sound.jar
    questo file nn lo me lo ritrovo :master:

    Tengo a precisare che ho Vista 32 sp1, jdk 6u13 e come ide Netbeans.

  4. #4
    Prima di provare ad usare il sequencer avevo anche provato questo codice che non ne fa uso:
    Codice PHP:
    public class CanaleSingoloSinth {
        
        private 
    ShortMessage messaggio = new ShortMessage();
        private 
    Receiver ricevitore;
        
        private 
    CanaleSingoloSinth(){
            try{
                
    Synthesizer synthMidiSystem.getSynthesizer();
                
    synth.open();
                
    synth.getChannels()[0].programChange(40);
                
    ricevitore=synth.getReceiver();
                }catch(
    MidiUnavailableException e){
                  
    e.printStackTrace();  
                
            }
            
           
        }

        public 
    void suonaNota(int nota){
            
    setShortMessage(nota,ShortMessage.NOTE_ON);
            
    ricevitore.send(messaggio,-1);
            try{
                
    Thread.sleep(1000);
            }catch(
    InterruptedException e ){
                
    e.printStackTrace();

            }
            
    setShortMessage(nota,ShortMessage.NOTE_OFF);
            
    ricevitore.send(messaggio,-1);

            }

        private 
    void setShortMessage(int notaint onoroff) {
            try{
                
    messaggio.setMessage(onoroff0nota,100);


            }catch(
    InvalidMidiDataException e){
                
    e.printStackTrace();

            }
        }

        public static 
    void main(String args[]){
            new 
    CanaleSingoloSinth().suonaNota(60);
            new 
    CanaleSingoloSinth().suonaNota(62);
            new 
    CanaleSingoloSinth().suonaNota(64);
            new 
    CanaleSingoloSinth().suonaNota(65);
            new 
    CanaleSingoloSinth().suonaNota(67);
            new 
    CanaleSingoloSinth().suonaNota(69);
            new 
    CanaleSingoloSinth().suonaNota(71);
            new 
    CanaleSingoloSinth().suonaNota(72);



        } 
    e funziona.. ora come mai questo si e quello no? Sto uscendo pazzo, essendo una cosa nuova per me non so ancora muovermi bene con i codici relativi alle api midi, e quando si presentano questi errori, non trovando risposte che risolvano il problema su internet, non mi resta che "affidarmi" a forumisti che hanno avuto gia a che fare con ciò.

    Vorrei risolvere la questione in tempi più celeri possibili, in modo da prendere confidenza con questo nuovo capitolo java in vista del mio prossimo esame..

  5. #5
    Nessuno proprio mi sà aiutare??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.