Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    7

    [Java]AIUTO:Come settare il volume per un lettore midi

    Salve a tutti sono un nuovo iscritto e mi presento,il mio nome e'Roberto e studio ingegneria informatica presso l'UniCal di Cosenza.
    Sto cercando di realizzare un piccolo progetto software per un esame:si tratta di un semplice lettore midi (comprensivo di GUI e solo per leggere files) ma riscontro un problema,ovvero non riesco a realizzare un metodo setVolume(int vol) (da richiamare logicamente nella GUI) all'interno della classe-lettore.......quindi chiedo cortesemente ausilio agli utenti competenti in materia,tenendo presente che faccio uso della java1.5 e solo del package javax.sound.midi per gestire l'audio e che la mia classe-lettore e'fondata su attributi che sono un oggetto Sequencer,un oggetto Sequence ed un oggetto Synthesizer (definiti nel suddetto package).....vi prego di aiutarmi e rispondermi presto,dato che ho quasi terminato il lavoro ma non vorrei tralasciare l'aspetto volume.....inoltre volevo chiedere cosa mi si consiglia per far muovere lo JSlider associato al brano attualmente caricato (in parole povere come muovere il cursore dello slider seguendo l'evoluzione nel tempo del brano midi).....spero vivamente di avere presto qualche risposta chairificatoria.
    Un saluto,Roberto .

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    7
    Il link che mi hai passato lo avevo gia'controllato,ma si riferisce a versioni precedenti alla java1.5 in cui si poteva castizzare un Sequencer a Synthesizer e tralaltro ho provato nella mia classe ad implemetare il metodo in quella maniera ma ahime'non ho ottenuto risultati!!!AIUUTO!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora posta del codice
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    7
    Di seguito riporto una parte del codice,suppongo la piu'significativa in merito alla questione.....se ne serve altro ditemi e postero'.

    //questo e'il codice del listener per lo Jslider nella classe LettoreGUI assegnato al volume:

    volume.addChangeListener(new ChangeListener(){

    public void stateChanged(ChangeEvent e){

    //player e'oggetto di classe Lettore

    player.setVolume(volume.getValue());

    }

    });

    //questi sono gli attributi della classe Lettore:

    private Sequence midiData;
    private MidiChannel canali[];
    private Sequencer lettore;
    private Synthesizer sintetizzatore;
    private final double gain=0.9D;

    //questo e'il metodo play nella classe Lettore:

    public synchronized void play(){

    try{


    sintetizzatore.open();
    if(sintetizzatore.isOpen())
    canali=sintetizzatore.getChannels();

    lettore.open();
    if(lettore.isOpen()){
    lettore.setSequence(midiData);
    lettore.start();
    //System.out.println(sintetizzatore);
    System.out.println(lettore);
    System.out.println(midiData.toString());
    }

    else
    System.out.println("Errore di caricamento risorse!");


    }

    catch(MidiUnavailableException e){

    e.printStackTrace();

    }

    catch(InvalidMidiDataException x){

    x.printStackTrace();

    }

    }

    //questo il metodo "provvisorio" setVolume della classe Lettore:

    public void setVolume(int volume){

    canali=sintetizzatore.getChannels();
    for(int i=0;i<canali.length;i++)

    canali[i].controlChange(7,(int)(gain*volume));


    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ma in definitiva, questo codice non funziona (errori, se sì, quasli) oppure ottieni dei risultati inaspettati, ma senza eccezioni? Penso intanto che nell'ipotetico setVolume(int vol) tu possa benissimo eliminare quel cast a int, assicurandoti che il tuo JSlider ritorni valori tra 0 e 127 (il cast lì serviva perché nell'esempio il volume di playback viene portato al 90% del volume originale).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    7
    Errori non ne vengono lanciati,l'unica cosa e'che se muovo lo slider (da 0 a 127) con questo codice non varia il volume

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.