plectrum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 68b782deed8295eaed1ba3ef0365653fd8ad58ff
parent d0f249754303f8f025ca1cb0e5a9fc941bb5786c
Author: gstraube <gstraube@mailbox.org>
Date:   Sun, 23 Jul 2017 18:36:45 +0200

Create method for filtering samples by note

Diffstat:
Mapp/src/main/java/com/github/cythara/Sampler.java | 18+++++++++++++++---
Mapp/src/test/java/com/github/cythara/SamplerTest.java | 18++++++++++++++++++
2 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/com/github/cythara/Sampler.java b/app/src/main/java/com/github/cythara/Sampler.java @@ -2,6 +2,7 @@ package com.github.cythara; import android.support.annotation.Nullable; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -10,14 +11,13 @@ class Sampler { static PitchDifference calculateAverageDifference(List<PitchDifference> samples) { Note mostFrequentNote = extractMostFrequentNote(samples); + List<PitchDifference> filteredSamples = filterByNote(samples, mostFrequentNote); double deviationSum = 0; int sameNoteCount = 0; - for (PitchDifference pitchDifference : samples) { - if (pitchDifference.closest == mostFrequentNote) { + for (PitchDifference pitchDifference : filteredSamples) { deviationSum += pitchDifference.deviation; sameNoteCount++; - } } if (sameNoteCount > 0) { @@ -29,6 +29,18 @@ class Sampler { return null; } + static List<PitchDifference> filterByNote(List<PitchDifference> samples, Note note) { + List<PitchDifference> filteredSamples = new ArrayList<>(); + + for (PitchDifference sample : samples) { + if (sample.closest == note) { + filteredSamples.add(sample); + } + } + + return filteredSamples; + } + @Nullable static Note extractMostFrequentNote(List<PitchDifference> samples) { Map<Note, Integer> noteFrequencies = new HashMap<>(); diff --git a/app/src/test/java/com/github/cythara/SamplerTest.java b/app/src/test/java/com/github/cythara/SamplerTest.java @@ -33,6 +33,24 @@ public class SamplerTest { } @Test + public void samples_are_filtered_correctly() { + List<PitchDifference> samples = new ArrayList<>(); + + samples.add(new PitchDifference(E2, 2D)); + samples.add(new PitchDifference(E2, 2D)); + samples.add(new PitchDifference(B3, 3D)); + samples.add(new PitchDifference(E2, 2D)); + samples.add(new PitchDifference(Note.G3, 4D)); + samples.add(new PitchDifference(B3, 3D)); + + List<PitchDifference> filteredSamples = filterByNote(samples, B3); + + for (PitchDifference sample : filteredSamples) { + assertThat(sample.closest, is(B3)); + } + } + + @Test public void the_most_frequent_note_is_extracted_correctly() throws Exception { List<PitchDifference> samples = new ArrayList<>();