/** * Loads a sequence from an input stream. Returns null if an error occurs. * * @param is * @return */ public Sequence getSequence(InputStream is) { try { if (!is.markSupported()) { is = new BufferedInputStream(is); } Sequence s = MidiSystem.getSequence(is); is.close(); return s; } catch (InvalidMidiDataException ex) { ex.printStackTrace(); return null; } catch (IOException ex) { ex.printStackTrace(); return null; } }
/** Carrega a seqüência do sistema de arquivos. Retorna null se um erro ocorrer. */ public Sequence getSequence(String name) { String filename = "/recursos/sons/" + name; try { return MidiSystem.getSequence(getClass().getResource((filename))); } catch (InvalidMidiDataException ex) { ex.printStackTrace(); return null; } catch (IOException ex) { ex.printStackTrace(); return null; } }
public MIDIReader(String filename) { this.filename = filename; try { this.recebedor = MidiSystem.getReceiver(); this.sequencia = MidiSystem.getSequence(new File(filename)); this.tempoProcessor = new MidiUtils.TempoCache(sequencia); this.player = MidiSystem.getSequencer(true); this.player.setSequence(sequencia); this.player.open(); this.interval = 0.5f; this.loadNotes(); this.duration = this.getRealDuration(); } catch (Exception ex) { Utilidades.alertar(ex.getMessage()); } }
public void setup() { parser = new MidiParser(); listener = new StaccatoParserListener(); player = new Player(); parser.addParserListener(listener); try { File midiFile = new File( dataPath( "/Users/fbonnamy/Documents/pro/WIW/MusicalLetter/prototypage/MidiReader/data/WIW_NOEL_test_midi.mid")); parser.parse(MidiSystem.getSequence(midiFile)); Pattern staccatoPattern = listener.getPattern(); System.out.println(staccatoPattern); player.play(staccatoPattern); } catch (Exception e) { } }
private void process() throws InvalidMidiDataException, IOException, JAXBException { Sequence orchestraSequence = MidiSystem.getSequence(inputFile); Sequence masterSequence = new Sequence(Sequence.PPQ, resolution); // the orchestra tracks for (int i = 0; i < orchestraSequence.getTracks().length; i++) { masterSequence = TrackMerger.process( masterSequence, orchestraSequence, new int[] {i}, -1, null, loggingHandler); // } // This is a hack....to make the track 0 as long as the whole sequence double rawSeqLen = masterSequence.getTickLength(); double quarterLen = masterSequence.getResolution(); double barLen = 4 * quarterLen; long fullSeqLen = (long) (barLen * (Math.ceil((rawSeqLen + quarterLen) / barLen))); masterSequence.getTracks()[0].add(newEndOfTrackMessage(fullSeqLen)); // add track 5; the metronome track masterSequence = MetronomeCreator.process(masterSequence, 0, loggingHandler); System.out.println("** Track 0 length " + masterSequence.getTracks()[0].ticks()); System.out.println("** Sequence length " + masterSequence.getTickLength()); ChannelCleaner sequenceImporter = new ChannelCleaner(masterSequence, loggingHandler); masterSequence = sequenceImporter.getResult(); // Write the file to disk MidiSystem.write(masterSequence, 1, outputMidiFile); System.out.println("############ Midi file is: " + outputMidiFile.getCanonicalPath()); // ---------------------------------------------------------------------------------------- // create the appropriate song object Song songObject = new Song(); songObject.setName(description); MasterTrack mastertrack = songObject.createMastertrack(); mastertrack.setSequencefile(outputMidiFile.getName()); mastertrack.setName(sequenceImporter.getTrackName(0)); mastertrack.setMidiTrackIndex(0); mastertrack.setMidiChannel(sequenceImporter.getChannel(0)); // create a super track that will collect all orchestra tracs MidiSynthesizerTrack orchestraSuperTrack = new MidiSynthesizerTrack(); orchestraSuperTrack.setName("Orchester"); mastertrack.addSubtrack(orchestraSuperTrack); BuiltinSynthesizer OrchestraSynt = new BuiltinSynthesizer(); OrchestraSynt.setSoundbankfile("../Schickardt.sf2"); orchestraSuperTrack.setSynthesizer(OrchestraSynt); // create a super track that will collect the voices tracs MidiSynthesizerTrack voicesSuperTrack = new MidiSynthesizerTrack(); voicesSuperTrack.setName("Voices"); mastertrack.addSubtrack(voicesSuperTrack); BuiltinSynthesizer voicesSynt = new BuiltinSynthesizer(); voicesSynt.setSoundbankfile("../StringPiano.sf2"); voicesSuperTrack.setSynthesizer(voicesSynt); // link all the orchestra tracks int orchestraBase = 1; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< int orchestraEnd = 2; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< for (int i = orchestraBase; i <= orchestraEnd; i++) { MidiTrack songTrack = new MidiTrack(); songTrack.setName(sequenceImporter.getTrackName(i)); songTrack.setMidiTrackIndex(i); songTrack.setMidiChannel(sequenceImporter.getChannel(i)); songTrack.setInstrumentDescription(sequenceImporter.getInstrumentDescription(i)); orchestraSuperTrack.addSubtrack(songTrack); } MidiTrack newSongTrack; int voiceBase = 3; // -- Diskant newSongTrack = new MidiTrack(); newSongTrack.setName("Flute 1"); newSongTrack.setMidiTrackIndex(voiceBase); newSongTrack.setMidiChannel(0); newSongTrack.setInstrumentDescription("Piano"); newSongTrack.setMute(true); voicesSuperTrack.addSubtrack(newSongTrack); // -- Bass voiceBase++; // 4 newSongTrack = new MidiTrack(); newSongTrack.setName("Flute 2"); newSongTrack.setMidiTrackIndex(voiceBase); newSongTrack.setMidiChannel(1); newSongTrack.setInstrumentDescription("Piano"); newSongTrack.setMute(true); voicesSuperTrack.addSubtrack(newSongTrack); // -- Metronome voiceBase++; // 5 newSongTrack = new MidiTrack(); newSongTrack.setName("Metronome"); newSongTrack.setMidiTrackIndex(voiceBase); newSongTrack.setMidiChannel(9); newSongTrack.setInstrumentDescription("Metronome"); newSongTrack.setMute(true); voicesSuperTrack.addSubtrack(newSongTrack); songObject.marshal(new FileOutputStream(outputSongFile)); System.out.println("############ Song file is: " + outputSongFile.getCanonicalPath()); }
public static void main(String[] args) throws Exception { InputStream sb = getInputStream("ding.sf2"); soundbank = MidiSystem.getSoundbank(sb); sb.close(); InputStream si = getInputStream("expresso.mid"); sequence = MidiSystem.getSequence(si); si.close(); AudioFormat format; Map<String, Object> info = new HashMap<String, Object>(); { format = new AudioFormat(22050, 16, 2, true, false); test(format, info); format = new AudioFormat(44100, 16, 2, true, false); test(format, info); } { format = new AudioFormat(44100, 8, 2, true, false); test(format, info); format = new AudioFormat(44100, 16, 2, true, false); test(format, info); format = new AudioFormat(44100, 24, 2, true, false); test(format, info); } { format = new AudioFormat(44100, 16, 1, true, false); test(format, info); format = new AudioFormat(44100, 16, 2, true, false); test(format, info); } { format = new AudioFormat(44100, 16, 2, true, false); info.clear(); info.put("control rate", 100f); test(format, info); info.clear(); info.put("control rate", 147f); test(format, info); } { format = new AudioFormat(44100, 16, 2, true, false); info.clear(); info.put("interpolation", "point"); test(format, info); info.clear(); info.put("interpolation", "linear"); test(format, info); info.clear(); info.put("interpolation", "cubic"); test(format, info); } { format = new AudioFormat(44100, 16, 2, true, false); info.clear(); info.put("max polyphony", 4); test(format, info); info.clear(); info.put("max polyphony", 16); test(format, info); info.clear(); } }