package org.herac.tuxguitar.io.gervill;
import java.io.OutputStream;
import org.herac.tuxguitar.io.base.TGFileFormat;
import org.herac.tuxguitar.io.base.TGFileFormatException;
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 MidiToAudioExporter implements TGLocalFileExporter {
private MidiToAudioSettings settings;
private OutputStream stream;
public MidiToAudioExporter() {
this.settings = new MidiToAudioSettings();
this.settings.setDefaults();
}
public boolean configure(boolean setDefaults) {
if (!setDefaults) {
return new MidiToAudioSettingsDialog().open(this.settings);
}
this.settings.setDefaults();
return true;
}
public void exportSong(TGSong song) throws TGFileFormatException {
try {
if (this.stream != null) {
TGSongManager manager = new TGSongManager();
manager.setSong(song);
MidiSequenceParser parser = new MidiSequenceParser(manager,
MidiSequenceParser.DEFAULT_EXPORT_FLAGS, 100, 0);
MidiSequenceHandlerImpl sequence = new MidiSequenceHandlerImpl((song
.countTracks() + 1));
parser.parse(sequence);
MidiToAudioWriter.write(this.stream, sequence.getEvents(),
this.settings);
}
} catch (Throwable throwable) {
throw new TGFileFormatException(throwable.getMessage(), throwable);
}
}
public String getExportName() {
return "Audio File";
}
public TGFileFormat getFileFormat() {
return new TGFileFormat(this.settings.getType().toString(),
("*." + this.settings.getType().getExtension()));
}
public void init(OutputStream stream) {
this.stream = stream;
}
}