private void writeInfo(RIFFWriter writer) throws IOException { if (this.targetEngine == null) this.targetEngine = "EMU8000"; if (this.name == null) this.name = ""; RIFFWriter ifil_chunk = writer.writeChunk("ifil"); ifil_chunk.writeUnsignedShort(this.major); ifil_chunk.writeUnsignedShort(this.minor); writeInfoStringChunk(writer, "isng", this.targetEngine); writeInfoStringChunk(writer, "INAM", this.name); writeInfoStringChunk(writer, "irom", this.romName); if (romVersionMajor != -1) { RIFFWriter iver_chunk = writer.writeChunk("iver"); iver_chunk.writeUnsignedShort(this.romVersionMajor); iver_chunk.writeUnsignedShort(this.romVersionMinor); } writeInfoStringChunk(writer, "ICRD", this.creationDate); writeInfoStringChunk(writer, "IENG", this.engineers); writeInfoStringChunk(writer, "IPRD", this.product); writeInfoStringChunk(writer, "ICOP", this.copyright); writeInfoStringChunk(writer, "ICMT", this.comments); writeInfoStringChunk(writer, "ISFT", this.tools); writer.close(); }
private void writeGenerators(RIFFWriter writer, Map<Integer, Short> generators) throws IOException { Short keyrange = (Short) generators.get(SF2Region.GENERATOR_KEYRANGE); Short velrange = (Short) generators.get(SF2Region.GENERATOR_VELRANGE); if (keyrange != null) { writer.writeUnsignedShort(SF2Region.GENERATOR_KEYRANGE); writer.writeShort(keyrange); } if (velrange != null) { writer.writeUnsignedShort(SF2Region.GENERATOR_VELRANGE); writer.writeShort(velrange); } for (Map.Entry<Integer, Short> generator : generators.entrySet()) { if (generator.getKey() == SF2Region.GENERATOR_KEYRANGE) continue; if (generator.getKey() == SF2Region.GENERATOR_VELRANGE) continue; writer.writeUnsignedShort(generator.getKey()); writer.writeShort(generator.getValue()); } }
private void writeInfoStringChunk(RIFFWriter writer, String name, String value) throws IOException { if (value == null) return; RIFFWriter chunk = writer.writeChunk(name); chunk.writeString(value); int len = value.getBytes("ascii").length; chunk.write(0); len++; if (len % 2 != 0) chunk.write(0); }
private void writeModulators(RIFFWriter writer, List<SF2Modulator> modulators) throws IOException { for (SF2Modulator modulator : modulators) { writer.writeUnsignedShort(modulator.sourceOperator); writer.writeUnsignedShort(modulator.destinationOperator); writer.writeShort(modulator.amount); writer.writeUnsignedShort(modulator.amountSourceOperator); writer.writeUnsignedShort(modulator.transportOperator); } }
public void save(String name) throws IOException { writeSoundbank(new RIFFWriter(name, "sfbk")); }
public void save(File file) throws IOException { writeSoundbank(new RIFFWriter(file, "sfbk")); }
public void save(OutputStream out) throws IOException { writeSoundbank(new RIFFWriter(out, "sfbk")); }
private void writeSoundbank(RIFFWriter writer) throws IOException { writeInfo(writer.writeList("INFO")); writeSdtaChunk(writer.writeList("sdta")); writePdtaChunk(writer.writeList("pdta")); writer.close(); }