package org.herac.tuxguitar.song.models;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.herac.tuxguitar.song.factory.TGFactory;
public abstract class TGChannel {
public static final short DEFAULT_PERCUSSION_CHANNEL = 9;
public static final short DEFAULT_PERCUSSION_PROGRAM = 0;
public static final short DEFAULT_PERCUSSION_BANK = 128;
public static final short DEFAULT_BANK = 0;
public static final short DEFAULT_PROGRAM = 25;
public static final short DEFAULT_VOLUME = 127;
public static final short DEFAULT_BALANCE = 64;
public static final short DEFAULT_CHORUS = 0;
public static final short DEFAULT_REVERB = 0;
public static final short DEFAULT_PHASER = 0;
public static final short DEFAULT_TREMOLO = 0;
private int channelId;
private short bank;
private short program;
private short volume;
private short balance;
private short chorus;
private short reverb;
private short phaser;
private short tremolo;
private String name;
private List parameters;
public TGChannel() {
this.channelId = 0;
this.bank = DEFAULT_BANK;
this.program = DEFAULT_PROGRAM;
this.volume = DEFAULT_VOLUME;
this.balance = DEFAULT_BALANCE;
this.chorus = DEFAULT_CHORUS;
this.reverb = DEFAULT_REVERB;
this.phaser = DEFAULT_PHASER;
this.tremolo = DEFAULT_TREMOLO;
this.name = new String();
this.parameters = new ArrayList();
}
public int getChannelId() {
return this.channelId;
}
public void setChannelId(int channelId) {
this.channelId = channelId;
}
public short getBalance() {
return this.balance;
}
public void setBalance(short balance) {
this.balance = balance;
}
public short getChorus() {
return this.chorus;
}
public void setChorus(short chorus) {
this.chorus = chorus;
}
public short getBank() {
return this.bank;
}
public void setBank(short bank) {
this.bank = bank;
}
public short getProgram() {
return this.program;
}
public void setProgram(short program) {
this.program = program;
}
public short getPhaser() {
return this.phaser;
}
public void setPhaser(short phaser) {
this.phaser = phaser;
}
public short getReverb() {
return this.reverb;
}
public void setReverb(short reverb) {
this.reverb = reverb;
}
public short getTremolo() {
return this.tremolo;
}
public void setTremolo(short tremolo) {
this.tremolo = tremolo;
}
public short getVolume() {
return this.volume;
}
public void setVolume(short volume) {
this.volume = volume;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Iterator getParameters() {
return this.parameters.iterator();
}
public void addParameter(TGChannelParameter parameter){
this.parameters.add(parameter);
}
public void addParameter(int index,TGChannelParameter parameter){
this.parameters.add(index,parameter);
}
public TGChannelParameter getParameter(int index){
if(index >= 0 && index < countParameters()){
return (TGChannelParameter)this.parameters.get(index);
}
return null;
}
public void removeParameter(int index){
this.parameters.remove(index);
}
public int countParameters(){
return this.parameters.size();
}
public boolean isPercussionChannel(){
return (this.getBank() == DEFAULT_PERCUSSION_BANK);
}
public TGChannel clone(TGFactory factory){
TGChannel channel = factory.newChannel();
copy(channel);
return channel;
}
public void copy(TGChannel channel){
channel.setChannelId(getChannelId());
channel.setBank(getBank());
channel.setProgram(getProgram());
channel.setVolume(getVolume());
channel.setBalance(getBalance());
channel.setChorus(getChorus());
channel.setReverb(getReverb());
channel.setPhaser(getPhaser());
channel.setTremolo(getTremolo());
channel.setName(getName());
}
}