@Test public void shouldGetArpeggioChorus() { SourceData sourceData = new SourceData(); sourceData.setArpeggios(getArpeggios()); List<ProgressionUnit> progressionUnits = getProgressionUnits(); Map<Integer, List<Arpeggio>> arpeggioOptions = arpeggioGenerator.getArpeggioOptions(progressionUnits, ProgressionUnit.ProgressionType.CHORUS, sourceData); assertEquals(2, arpeggioOptions.get(33).size()); }
public Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData) { Map<Integer, List<Arpeggio>> codeArppeggiosMap = new HashMap<>(); int bassOctave = 4; List<Integer> arpeggioCodes = new ArrayList<>(); for (int i = 0; i < progressionUnits.size(); i++) { if (progressionUnits.get(i).getType() == unitType) { boolean skip = false; for (int j = 0; j < progressionUnits.get(i).getProgressionUnitBars().size(); j++) { if (!skip) { if (j < progressionUnits.get(i).getProgressionUnitBars().size() - 1) { Intervals intervalsA = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j).getjChord(), bassOctave); Intervals intervalsB = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j + 1).getjChord(), bassOctave); int arpeggioCode = JFugueConvertionUtil.getBasslineChordsCode(intervalsA, intervalsB); arpeggioCodes.add(arpeggioCode); } } skip = !skip; } } } for (int i = 0; i < arpeggioCodes.size(); i++) { List<Arpeggio> arpeggio = codeArppeggiosMap.get(arpeggioCodes.get(i)); if (arpeggio == null) { codeArppeggiosMap.put(arpeggioCodes.get(i), selectArpeggiosByCode(arpeggioCodes.get(i), sourceData.getArpeggios())); } } return codeArppeggiosMap; }
ArpeggioGenerator implements IArpeggioGenerator { public Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData) { Map<Integer, List<Arpeggio>> codeArppeggiosMap = new HashMap<>(); int bassOctave = 4; List<Integer> arpeggioCodes = new ArrayList<>(); for (int i = 0; i < progressionUnits.size(); i++) { if (progressionUnits.get(i).getType() == unitType) { boolean skip = false; for (int j = 0; j < progressionUnits.get(i).getProgressionUnitBars().size(); j++) { if (!skip) { if (j < progressionUnits.get(i).getProgressionUnitBars().size() - 1) { Intervals intervalsA = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j).getjChord(), bassOctave); Intervals intervalsB = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j + 1).getjChord(), bassOctave); int arpeggioCode = JFugueConvertionUtil.getBasslineChordsCode(intervalsA, intervalsB); arpeggioCodes.add(arpeggioCode); } } skip = !skip; } } } for (int i = 0; i < arpeggioCodes.size(); i++) { List<Arpeggio> arpeggio = codeArppeggiosMap.get(arpeggioCodes.get(i)); if (arpeggio == null) { codeArppeggiosMap.put(arpeggioCodes.get(i), selectArpeggiosByCode(arpeggioCodes.get(i), sourceData.getArpeggios())); } } return codeArppeggiosMap; } }
ArpeggioGenerator implements IArpeggioGenerator { public Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData) { Map<Integer, List<Arpeggio>> codeArppeggiosMap = new HashMap<>(); int bassOctave = 4; List<Integer> arpeggioCodes = new ArrayList<>(); for (int i = 0; i < progressionUnits.size(); i++) { if (progressionUnits.get(i).getType() == unitType) { boolean skip = false; for (int j = 0; j < progressionUnits.get(i).getProgressionUnitBars().size(); j++) { if (!skip) { if (j < progressionUnits.get(i).getProgressionUnitBars().size() - 1) { Intervals intervalsA = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j).getjChord(), bassOctave); Intervals intervalsB = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j + 1).getjChord(), bassOctave); int arpeggioCode = JFugueConvertionUtil.getBasslineChordsCode(intervalsA, intervalsB); arpeggioCodes.add(arpeggioCode); } } skip = !skip; } } } for (int i = 0; i < arpeggioCodes.size(); i++) { List<Arpeggio> arpeggio = codeArppeggiosMap.get(arpeggioCodes.get(i)); if (arpeggio == null) { codeArppeggiosMap.put(arpeggioCodes.get(i), selectArpeggiosByCode(arpeggioCodes.get(i), sourceData.getArpeggios())); } } return codeArppeggiosMap; } @Autowired  ArpeggioGenerator(IArpeggioSelector arpeggioSelector, IMidiWeighter midiWeighter, @Value("${num_of_generated_mixes}") Integer numOfGeneratedMixes); }
ArpeggioGenerator implements IArpeggioGenerator { public Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData) { Map<Integer, List<Arpeggio>> codeArppeggiosMap = new HashMap<>(); int bassOctave = 4; List<Integer> arpeggioCodes = new ArrayList<>(); for (int i = 0; i < progressionUnits.size(); i++) { if (progressionUnits.get(i).getType() == unitType) { boolean skip = false; for (int j = 0; j < progressionUnits.get(i).getProgressionUnitBars().size(); j++) { if (!skip) { if (j < progressionUnits.get(i).getProgressionUnitBars().size() - 1) { Intervals intervalsA = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j).getjChord(), bassOctave); Intervals intervalsB = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j + 1).getjChord(), bassOctave); int arpeggioCode = JFugueConvertionUtil.getBasslineChordsCode(intervalsA, intervalsB); arpeggioCodes.add(arpeggioCode); } } skip = !skip; } } } for (int i = 0; i < arpeggioCodes.size(); i++) { List<Arpeggio> arpeggio = codeArppeggiosMap.get(arpeggioCodes.get(i)); if (arpeggio == null) { codeArppeggiosMap.put(arpeggioCodes.get(i), selectArpeggiosByCode(arpeggioCodes.get(i), sourceData.getArpeggios())); } } return codeArppeggiosMap; } @Autowired  ArpeggioGenerator(IArpeggioSelector arpeggioSelector, IMidiWeighter midiWeighter, @Value("${num_of_generated_mixes}") Integer numOfGeneratedMixes); List<Integer> generateTemplate(List<ProgressionUnit> progressionUnits, ProgressionType unitType); List<String> convertToNoteMap(int[] arpeggioList, Intervals intervalsA, Intervals intervalsB); Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData); @Override List<Arpeggio> distributeWeightedArpeggios(List<Arpeggio> weightedArpeggios); @Override Map<Integer, Arpeggio> selectFromARateDistributedList(Map<Integer, List<Arpeggio>> weightedArpeggios); @Override void weightArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionType unitType, Map<Integer, List<Arpeggio>> arpeggioMap); @Override void setPatternWithTemplate(List<ProgressionUnit> progressionUnits, ProgressionType unitType, Map<Integer, Arpeggio> selectedArpeggios, SourceData sourceData, Integer bpm); }
ArpeggioGenerator implements IArpeggioGenerator { public Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData) { Map<Integer, List<Arpeggio>> codeArppeggiosMap = new HashMap<>(); int bassOctave = 4; List<Integer> arpeggioCodes = new ArrayList<>(); for (int i = 0; i < progressionUnits.size(); i++) { if (progressionUnits.get(i).getType() == unitType) { boolean skip = false; for (int j = 0; j < progressionUnits.get(i).getProgressionUnitBars().size(); j++) { if (!skip) { if (j < progressionUnits.get(i).getProgressionUnitBars().size() - 1) { Intervals intervalsA = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j).getjChord(), bassOctave); Intervals intervalsB = JFugueConvertionUtil.populateIntervals(progressionUnits.get(i).getProgressionUnitBars().get(j + 1).getjChord(), bassOctave); int arpeggioCode = JFugueConvertionUtil.getBasslineChordsCode(intervalsA, intervalsB); arpeggioCodes.add(arpeggioCode); } } skip = !skip; } } } for (int i = 0; i < arpeggioCodes.size(); i++) { List<Arpeggio> arpeggio = codeArppeggiosMap.get(arpeggioCodes.get(i)); if (arpeggio == null) { codeArppeggiosMap.put(arpeggioCodes.get(i), selectArpeggiosByCode(arpeggioCodes.get(i), sourceData.getArpeggios())); } } return codeArppeggiosMap; } @Autowired  ArpeggioGenerator(IArpeggioSelector arpeggioSelector, IMidiWeighter midiWeighter, @Value("${num_of_generated_mixes}") Integer numOfGeneratedMixes); List<Integer> generateTemplate(List<ProgressionUnit> progressionUnits, ProgressionType unitType); List<String> convertToNoteMap(int[] arpeggioList, Intervals intervalsA, Intervals intervalsB); Map<Integer, List<Arpeggio>> getArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionUnit.ProgressionType unitType, SourceData sourceData); @Override List<Arpeggio> distributeWeightedArpeggios(List<Arpeggio> weightedArpeggios); @Override Map<Integer, Arpeggio> selectFromARateDistributedList(Map<Integer, List<Arpeggio>> weightedArpeggios); @Override void weightArpeggioOptions(List<ProgressionUnit> progressionUnits, ProgressionType unitType, Map<Integer, List<Arpeggio>> arpeggioMap); @Override void setPatternWithTemplate(List<ProgressionUnit> progressionUnits, ProgressionType unitType, Map<Integer, Arpeggio> selectedArpeggios, SourceData sourceData, Integer bpm);  }