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