1 package com.jamesbryangraves.bob.music; 2 3 import java.util.List; 4 5 6 public class Scale { 7 8 private List<ScaleState> scaleStates; 9 private List<Integer> scaleSteps; 10 private int scaleSize; 11 12 public int getNextNote(int note, int root) { 13 int scaleStep = (note % scaleSize) < (root % scaleSize) ? 14 ((note % scaleSize) + 12) - (root % scaleSize) : 15 (note % scaleSize) - (root % scaleSize); 16 int i = 0; 17 while(i < scaleSteps.size() - 1 && 18 scaleSteps.get(i).intValue() != scaleStep) 19 i++; 20 return scaleStates.get(i).getUp() + note; 21 } 22 23 public int getScaleSize() { 24 return scaleSize; 25 } 26 27 public void setScaleSize(int scaleSize) { 28 this.scaleSize = scaleSize; 29 } 30 31 public int getPreviousNote(int note, int root) { 32 int scaleStep = (note % scaleSize) < (root % scaleSize) ? 33 ((note % scaleSize) + 12) - (root % scaleSize) : 34 (note % scaleSize) - (root % scaleSize); 35 int i = 0; 36 while(i < scaleSteps.size() - 1 && 37 scaleSteps.get(i).intValue() != scaleStep) 38 i++; 39 return scaleStates.get(i).getDown() + note; 40 } 41 42 public boolean contains(int note, int root) { 43 44 int scaleStep = (note % 12) < (root % 12) ? 45 ((note % 12) + 12) - (root % 12) : 46 (note % 12) - (root % 12); 47 for(int i = 0; i < scaleSteps.size(); i++) 48 if(scaleSteps.get(i).intValue() == scaleStep) 49 return true; 50 return false; 51 } 52 53 public List<ScaleState> getScaleStates() { 54 return scaleStates; 55 } 56 57 public void setScaleStates(List<ScaleState> scaleStates) { 58 this.scaleStates = scaleStates; 59 } 60 61 public List<Integer> getScaleSteps() { 62 return scaleSteps; 63 } 64 65 public void setScaleSteps(List<Integer> scaleSteps) { 66 this.scaleSteps = scaleSteps; 67 } 68 69 }