package org.herac.tuxguitar.io.midi; import java.io.OutputStream; import org.herac.tuxguitar.io.base.TGFileFormat; import org.herac.tuxguitar.io.base.TGLocalFileExporter; import org.herac.tuxguitar.player.base.MidiSequenceParser; import org.herac.tuxguitar.song.managers.TGSongManager; import org.herac.tuxguitar.song.models.TGSong; public class MidiSongExporter implements TGLocalFileExporter { private MidiSettings settings; private OutputStream stream; public boolean configure(boolean setDefaults) { this.settings = (setDefaults ? MidiSettings.getDefaults() : new MidiSettingsDialog().open()); return (this.settings != null); } public void exportSong(TGSong song) { if (this.stream != null && this.settings != null) { TGSongManager manager = new TGSongManager(); manager.setSong(song); MidiSequenceParser parser = new MidiSequenceParser(manager, MidiSequenceParser.DEFAULT_EXPORT_FLAGS, 100, this.settings .getTranspose()); MidiSequenceHandlerImpl sequence = new MidiSequenceHandlerImpl((song .countTracks() + 1), this.stream); parser.parse(sequence); } } public String getExportName() { return "Midi"; } public TGFileFormat getFileFormat() { return new TGFileFormat("Midi", "*.mid;*.midi"); } public void init(OutputStream stream) { this.stream = stream; } }