< prev index next >
src/java.desktop/share/classes/com/sun/media/sound/DLSSoundbank.java
Print this page
*** 20,29 ****
--- 20,30 ----
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
package com.sun.media.sound;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
*** 40,52 ****
import javax.sound.midi.Instrument;
import javax.sound.midi.Patch;
import javax.sound.midi.Soundbank;
import javax.sound.midi.SoundbankResource;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
- import javax.sound.sampled.AudioFormat.Encoding;
/**
* A DLS Level 1 and Level 2 soundbank reader (from files/url/streams).
*
* @author Karl Helgason
--- 41,53 ----
import javax.sound.midi.Instrument;
import javax.sound.midi.Patch;
import javax.sound.midi.Soundbank;
import javax.sound.midi.SoundbankResource;
import javax.sound.sampled.AudioFormat;
+ import javax.sound.sampled.AudioFormat.Encoding;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
/**
* A DLS Level 1 and Level 2 soundbank reader (from files/url/streams).
*
* @author Karl Helgason
*** 98,111 ****
--- 99,114 ----
d.x7 = riff.readUnsignedByte();
d.x8 = riff.readUnsignedByte();
return d;
}
+ @Override
public int hashCode() {
return (int)i1;
}
+ @Override
public boolean equals(Object obj) {
if (!(obj instanceof DLSID)) {
return false;
}
DLSID t = (DLSID) obj;
*** 174,185 ****
private long major = -1;
private long minor = -1;
private final DLSInfo info = new DLSInfo();
! private final List<DLSInstrument> instruments = new ArrayList<DLSInstrument>();
! private final List<DLSSample> samples = new ArrayList<DLSSample>();
private boolean largeFormat = false;
private File sampleFile;
public DLSSoundbank() {
--- 177,188 ----
private long major = -1;
private long minor = -1;
private final DLSInfo info = new DLSInfo();
! private final List<DLSInstrument> instruments = new ArrayList<>();
! private final List<DLSSample> samples = new ArrayList<>();
private boolean largeFormat = false;
private File sampleFile;
public DLSSoundbank() {
*** 298,308 ****
private boolean readCdlChunk(RIFFReader riff) throws IOException {
DLSID uuid;
long x;
long y;
! Stack<Long> stack = new Stack<Long>();
while (riff.available() != 0) {
int opcode = riff.readUnsignedShort();
switch (opcode) {
case DLS_CDL_AND:
--- 301,311 ----
private boolean readCdlChunk(RIFFReader riff) throws IOException {
DLSID uuid;
long x;
long y;
! Stack<Long> stack = new Stack<>();
while (riff.available() != 0) {
int opcode = riff.readUnsignedShort();
switch (opcode) {
case DLS_CDL_AND:
*** 480,490 ****
}
}
}
}
if (chunk.getType().equals("lart")) {
! List<DLSModulator> modlist = new ArrayList<DLSModulator>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
--- 483,493 ----
}
}
}
}
if (chunk.getType().equals("lart")) {
! List<DLSModulator> modlist = new ArrayList<>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
*** 496,506 ****
}
instrument.getModulators().addAll(modlist);
}
if (chunk.getType().equals("lar2")) {
// support for DLS level 2 ART
! List<DLSModulator> modlist = new ArrayList<DLSModulator>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
--- 499,509 ----
}
instrument.getModulators().addAll(modlist);
}
if (chunk.getType().equals("lar2")) {
// support for DLS level 2 ART
! List<DLSModulator> modlist = new ArrayList<>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
*** 580,599 ****
modulator.scale = riff.readInt();
modulators.add(modulator);
}
}
! private Map<DLSRegion, Long> temp_rgnassign = new HashMap<DLSRegion, Long>();
private boolean readRgnChunk(DLSRegion split, RIFFReader riff)
throws IOException {
while (riff.hasNextChunk()) {
RIFFReader chunk = riff.nextChunk();
String format = chunk.getFormat();
if (format.equals("LIST")) {
if (chunk.getType().equals("lart")) {
! List<DLSModulator> modlist = new ArrayList<DLSModulator>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
--- 583,602 ----
modulator.scale = riff.readInt();
modulators.add(modulator);
}
}
! private Map<DLSRegion, Long> temp_rgnassign = new HashMap<>();
private boolean readRgnChunk(DLSRegion split, RIFFReader riff)
throws IOException {
while (riff.hasNextChunk()) {
RIFFReader chunk = riff.nextChunk();
String format = chunk.getFormat();
if (format.equals("LIST")) {
if (chunk.getType().equals("lart")) {
! List<DLSModulator> modlist = new ArrayList<>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
*** 605,615 ****
}
split.getModulators().addAll(modlist);
}
if (chunk.getType().equals("lar2")) {
// support for DLS level 2 ART
! List<DLSModulator> modlist = new ArrayList<DLSModulator>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
--- 608,618 ----
}
split.getModulators().addAll(modlist);
}
if (chunk.getType().equals("lar2")) {
// support for DLS level 2 ART
! List<DLSModulator> modlist = new ArrayList<>();
while (chunk.hasNextChunk()) {
RIFFReader subchunk = chunk.nextChunk();
if (chunk.getFormat().equals("cdl ")) {
if (!readCdlChunk(chunk)) {
modlist.clear();
*** 900,910 ****
for (int i = 0; i < samples.size(); i++)
ptbl.writeUnsignedInt(0);
RIFFWriter wvpl = writer.writeList("wvpl");
long off = wvpl.getFilePointer();
! List<Long> offsettable = new ArrayList<Long>();
for (DLSSample sample : samples) {
offsettable.add(Long.valueOf(wvpl.getFilePointer() - off));
writeSample(wvpl.writeList("wave"), sample);
}
--- 903,913 ----
for (int i = 0; i < samples.size(); i++)
ptbl.writeUnsignedInt(0);
RIFFWriter wvpl = writer.writeList("wvpl");
long off = wvpl.getFilePointer();
! List<Long> offsettable = new ArrayList<>();
for (DLSSample sample : samples) {
offsettable.add(Long.valueOf(wvpl.getFilePointer() - off));
writeSample(wvpl.writeList("wave"), sample);
}
*** 1177,1198 ****
--- 1180,1205 ----
public DLSInfo getInfo() {
return info;
}
+ @Override
public String getName() {
return info.name;
}
+ @Override
public String getVersion() {
return major + "." + minor;
}
+ @Override
public String getVendor() {
return info.engineers;
}
+ @Override
public String getDescription() {
return info.comments;
}
public void setName(String s) {
*** 1205,1222 ****
--- 1212,1231 ----
public void setDescription(String s) {
info.comments = s;
}
+ @Override
public SoundbankResource[] getResources() {
SoundbankResource[] resources = new SoundbankResource[samples.size()];
int j = 0;
for (int i = 0; i < samples.size(); i++)
resources[j++] = samples.get(i);
return resources;
}
+ @Override
public DLSInstrument[] getInstruments() {
DLSInstrument[] inslist_array =
instruments.toArray(new DLSInstrument[instruments.size()]);
Arrays.sort(inslist_array, new ModelInstrumentComparator());
return inslist_array;
*** 1224,1233 ****
--- 1233,1243 ----
public DLSSample[] getSamples() {
return samples.toArray(new DLSSample[samples.size()]);
}
+ @Override
public Instrument getInstrument(Patch patch) {
int program = patch.getProgram();
int bank = patch.getBank();
boolean percussion = false;
if (patch instanceof ModelPatch)
*** 1254,1266 ****
samples.add((DLSSample) resource);
}
public void removeResource(SoundbankResource resource) {
if (resource instanceof DLSInstrument)
! instruments.remove((DLSInstrument) resource);
if (resource instanceof DLSSample)
! samples.remove((DLSSample) resource);
}
public void addInstrument(DLSInstrument resource) {
instruments.add(resource);
}
--- 1264,1276 ----
samples.add((DLSSample) resource);
}
public void removeResource(SoundbankResource resource) {
if (resource instanceof DLSInstrument)
! instruments.remove(resource);
if (resource instanceof DLSSample)
! samples.remove(resource);
}
public void addInstrument(DLSInstrument resource) {
instruments.add(resource);
}
< prev index next >