001
002package ibxm;
003
004public 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