View Javadoc

1   package com.jamesbryangraves.bob.music;
2   
3   import java.util.ArrayList;
4   import java.util.Collection;
5   
6   import com.jamesbryangraves.bob.util.Translator;
7   
8   public class ChordProgression extends DiatonicMusicEventGenerator {
9   	
10  	private int[] pitches;
11  	
12  	public Collection<MusicEvent> generateEvents(MusicContext musicContext, long tick) throws Exception {
13  		ArrayList<MusicEvent> events = new ArrayList<MusicEvent>();
14  		long ticks = musicContext.getTicksPerBar();
15  		int key = Translator.translate(musicContext.getKey());
16  		Scale scale = musicContext.getScale();
17  		for(long i = 0; i < ticks;) {
18  			long value = getNoteValue(ticks - i);
19  			if(pitches != null) {
20  				for(int j = 0; j < pitches.length; j++) {
21  					pitches[j] = getNextPitch(pitches[j], key, scale);
22  					events.add(new MusicEvent(pitches[j], value, tick + i));
23  				}
24  			} else {
25  				pitches = new int[4];
26  				for(int j = 0; j < pitches.length; j++) {
27  					pitches[j] = getScalePitch(key, scale);
28  					events.add(new MusicEvent(pitches[j], value, tick + i));
29  				}
30  			}		
31  			i += value;
32  		}
33  		return events;
34  	}
35  }