    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