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
9 public class Melody extends DiatonicMusicEventGenerator {
10
11 private int pitch = -1;
12
13 public Collection<MusicEvent> generateEvents(MusicContext musicContext, long tick) throws Exception {
14 ArrayList<MusicEvent> events = new ArrayList<MusicEvent>();
15 long ticks = musicContext.getTicksPerBar();
16 int key = Translator.translate(musicContext.getKey());
17 Scale scale = musicContext.getScale();
18 for(long i = 0; i < ticks;) {
19 long value = getNoteValue(ticks - i);
20 pitch = pitch == -1
21 ? getScalePitch(key, scale)
22 : getNextPitch(pitch, key, scale);
23 events.add(new MusicEvent(pitch, value, tick + i));
24 i += value;
25 }
26 return events;
27 }
28 }