001
002 package ibxm;
003
004 public class Module {
005 public String song_title;
006 public boolean linear_periods, fast_volume_slides, pal;
007 public int global_volume, channel_gain;
008 public int default_speed, default_tempo;
009 public int restart_sequence_index;
010
011 private int[] initial_panning, sequence;
012 private Pattern[] patterns;
013 private Instrument[] instruments;
014
015 private Pattern default_pattern;
016 private Instrument default_instrument;
017
018 public Module() {
019 song_title = IBXM.VERSION;
020 set_num_channels( 1 );
021 set_sequence_length( 1 );
022 set_num_patterns( 0 );
023 set_num_instruments( 0 );
024 default_pattern = new Pattern();
025 default_instrument = new Instrument();
026 }
027
028 public int get_num_channels() {
029 return initial_panning.length;
030 }
031
032 public void set_num_channels( int num_channels ) {
033 if( num_channels < 1 ) {
034 num_channels = 1;
035 }
036 initial_panning = new int[ num_channels ];
037 }
038
039 public int get_initial_panning( int channel ) {
040 int panning;
041 panning = 128;
042 if( channel >= 0 && channel < initial_panning.length ) {
043 panning = initial_panning[ channel ];
044 }
045 return panning;
046 }
047
048 public void set_initial_panning( int channel, int panning ) {
049 if( channel >= 0 && channel < initial_panning.length ) {
050 initial_panning[ channel ] = panning;
051 }
052 }
053
054 public int get_sequence_length() {
055 return sequence.length;
056 }
057
058 public void set_sequence_length( int sequence_length ) {
059 if( sequence_length < 0 ) {
060 sequence_length = 0;
061 }
062 sequence = new int[ sequence_length ];
063 }
064
065 public void set_sequence( int sequence_index, int pattern_index ) {
066 if( sequence_index >= 0 && sequence_index < sequence.length ) {
067 sequence[ sequence_index ] = pattern_index;
068 }
069 }
070
071 public int get_num_patterns() {
072 return patterns.length;
073 }
074
075 public void set_num_patterns( int num_patterns ) {
076 if( num_patterns < 0 ) {
077 num_patterns = 0;
078 }
079 patterns = new Pattern[ num_patterns ];
080 }
081
082 public Pattern get_pattern_from_sequence( int sequence_index ) {
083 Pattern pattern;
084 pattern = default_pattern;
085 if( sequence_index >= 0 && sequence_index < sequence.length ) {
086 pattern = get_pattern( sequence[ sequence_index ] );
087 }
088 return pattern;
089 }
090
091 public Pattern get_pattern( int pattern_index ) {
092 Pattern pattern;
093 pattern = null;
094 if( pattern_index >= 0 && pattern_index < patterns.length ) {
095 pattern = patterns[ pattern_index ];
096 }
097 if( pattern == null ) {
098 pattern = default_pattern;
099 }
100 return pattern;
101 }
102
103 public void set_pattern( int pattern_index, Pattern pattern ) {
104 if( pattern_index >= 0 && pattern_index < patterns.length ) {
105 patterns[ pattern_index ] = pattern;
106 }
107 }
108
109 public int get_num_instruments() {
110 return instruments.length;
111 }
112
113 public void set_num_instruments( int num_instruments ) {
114 if( num_instruments < 0 ) {
115 num_instruments = 0;
116 }
117 instruments = new Instrument[ num_instruments ];
118 }
119
120 public Instrument get_instrument( int instrument_index ) {
121 Instrument instrument;
122 instrument = null;
123 if( instrument_index > 0 && instrument_index <= instruments.length ) {
124 instrument = instruments[ instrument_index - 1 ];
125 }
126 if( instrument == null ) {
127 instrument = default_instrument;
128 }
129 return instrument;
130 }
131
132 public void set_instrument( int instrument_index, Instrument instrument ) {
133 if( instrument_index > 0 && instrument_index <= instruments.length ) {
134 instruments[ instrument_index - 1 ] = instrument;
135 }
136 }
137 }
138