Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
JInstruments - Notes.java

Notes.java

Caricato da:
Scarica il programma completo

  1. package jinstruments;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import javax.sound.midi.Instrument;
  6. import javax.sound.midi.InvalidMidiDataException;
  7. import javax.sound.midi.MidiChannel;
  8. import javax.sound.midi.MidiEvent;
  9. import javax.sound.midi.MidiSystem;
  10. import javax.sound.midi.MidiUnavailableException;
  11. import javax.sound.midi.Sequence;
  12. import javax.sound.midi.ShortMessage;
  13. import javax.sound.midi.Synthesizer;
  14. import javax.sound.midi.Track;
  15.  
  16. public class Notes {
  17.  
  18.     public static final String[] NOTES={"DO","DO#","RE","RE#","MI","FA","FA#","SOL","SOL#","LA","LA#","SI","DO2"};
  19.  
  20.     private MidiChannel channel;
  21.     private Sequence sequence;
  22.     private Track track;
  23.     private int numOfTrack;
  24.  
  25.         Synthesizer synt=MidiSystem.getSynthesizer();
  26.         synt.open();
  27.         this.channel=synt.getChannels()[0];
  28.         this.sequence=new Sequence(Sequence.PPQ, 1);
  29.         this.track=this.sequence.createTrack();
  30.         this.numOfTrack=0;
  31.     }
  32.  
  33.     public void playNote(int pNote, Instrument pInstrument, boolean pReverber) throws InvalidMidiDataException{
  34.         this.channel.programChange(pInstrument.getPatch().getProgram());
  35.         if(!pReverber){
  36.             this.stopSound();
  37.         }
  38.         this.channel.noteOn(pNote, 100);
  39.         ShortMessage message=new ShortMessage();
  40.         message.setMessage(ShortMessage.NOTE_ON, 0, pNote, 100);
  41.         this.track.add(new MidiEvent(message, this.numOfTrack));
  42.         this.numOfTrack++;
  43.     }
  44.  
  45.     public void stopSound(){
  46.         this.channel.allNotesOff();
  47.     }
  48.  
  49.     public void saveFile(File pOut) throws IOException, InvalidMidiDataException{
  50.         ShortMessage message=new ShortMessage();
  51.         message.setMessage(ShortMessage.NOTE_ON, 0, 0, 100);
  52.         this.track.add(new MidiEvent(message, this.numOfTrack));
  53.         MidiSystem.write(this.sequence, MidiSystem.getMidiFileTypes(this.sequence)[0], pOut);
  54.     }
  55. }