plectrum

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

commit 1ea24f06ecd77e9a0e52655c54838df2858de660
parent d1f110acc6b4ddae6880820a9ed0f9f810793253
Author: gstraube <gstraube@mailbox.org>
Date:   Sat, 14 Oct 2017 18:46:28 +0200

Enable switching between tunings

Diffstat:
Mapp/src/main/java/com/github/cythara/MainActivity.java | 28+++++++++++++++++++++++++++-
Mapp/src/main/java/com/github/cythara/PitchComparator.java | 2+-
Mapp/src/main/java/com/github/cythara/PitchDifference.java | 2+-
Aapp/src/main/java/com/github/cythara/TuningMapper.java | 21+++++++++++++++++++++
Aapp/src/main/java/com/github/cythara/UkuleleString.java | 23+++++++++++++++++++++++
Aapp/src/main/java/com/github/cythara/UkuleleTuning.java | 14++++++++++++++
Mapp/src/main/res/layout/activity_main.xml | 12++++++++++--
Mapp/src/main/res/values/strings.xml | 5+++++
8 files changed, 102 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/com/github/cythara/MainActivity.java b/app/src/main/java/com/github/cythara/MainActivity.java @@ -11,11 +11,20 @@ import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; -public class MainActivity extends AppCompatActivity implements ListenerFragment.TaskCallbacks { +import static android.widget.ArrayAdapter.*; +import static com.github.cythara.TuningMapper.getTuningFromPosition; + +public class MainActivity extends AppCompatActivity implements ListenerFragment.TaskCallbacks, + AdapterView.OnItemSelectedListener { public static final int RECORD_AUDIO_PERMISSION = 0; private static final String TAG_LISTENER_FRAGMENT = "listener_fragment"; + static Tuning tuning = new GuitarTuning(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -31,6 +40,13 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + Spinner spinner = findViewById(R.id.tuning); + ArrayAdapter<CharSequence> adapter = createFromResource(this, + R.array.tunings, android.R.layout.simple_spinner_item); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + spinner.setAdapter(adapter); + spinner.setOnItemSelectedListener(this); } @Override @@ -88,4 +104,14 @@ public class MainActivity extends AppCompatActivity implements ListenerFragment. .commit(); } } + + @Override + public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { + tuning = getTuningFromPosition(position); + } + + @Override + public void onNothingSelected(AdapterView<?> adapterView) { + + } } diff --git a/app/src/main/java/com/github/cythara/PitchComparator.java b/app/src/main/java/com/github/cythara/PitchComparator.java @@ -6,7 +6,7 @@ import java.util.Comparator; class PitchComparator { static PitchDifference retrieveNote(float pitch) { - Tuning tuning = new GuitarTuning(); + Tuning tuning = MainActivity.tuning; Note[] notes = tuning.getNotes(); Arrays.sort(notes, new Comparator<Note>() { diff --git a/app/src/main/java/com/github/cythara/PitchDifference.java b/app/src/main/java/com/github/cythara/PitchDifference.java @@ -7,7 +7,6 @@ class PitchDifference implements Parcelable { final Note closest; final double deviation; - private final Tuning tuning = new GuitarTuning(); PitchDifference(Note closest, double deviation) { this.closest = closest; @@ -15,6 +14,7 @@ class PitchDifference implements Parcelable { } private PitchDifference(Parcel in) { + Tuning tuning = MainActivity.tuning; closest = tuning.findNote(in.readString()); deviation = in.readDouble(); } diff --git a/app/src/main/java/com/github/cythara/TuningMapper.java b/app/src/main/java/com/github/cythara/TuningMapper.java @@ -0,0 +1,21 @@ +package com.github.cythara; + +import android.util.Log; + +class TuningMapper { + + private static final int GUITAR_TUNING_POSITION = 0; + private static final int UKULELE_TUNING_POSITION = 1; + + static Tuning getTuningFromPosition(int position) { + switch (position) { + case GUITAR_TUNING_POSITION: + return new GuitarTuning(); + case UKULELE_TUNING_POSITION: + return new UkuleleTuning(); + default: + Log.w("com.github.cythara", "Unknown position for tuning dropdown list"); + return new GuitarTuning(); + } + } +} diff --git a/app/src/main/java/com/github/cythara/UkuleleString.java b/app/src/main/java/com/github/cythara/UkuleleString.java @@ -0,0 +1,23 @@ +package com.github.cythara; + +enum UkuleleString implements Note { + + G(391.995f), + C(261.626f), + E(329.628f), + A(440f); + + private final float frequency; + + UkuleleString(float frequency) { + this.frequency = frequency; + } + + public String getName() { + return this.name(); + } + + public float getFrequency() { + return frequency; + } +} diff --git a/app/src/main/java/com/github/cythara/UkuleleTuning.java b/app/src/main/java/com/github/cythara/UkuleleTuning.java @@ -0,0 +1,14 @@ +package com.github.cythara; + +class UkuleleTuning implements Tuning { + + @Override + public Note[] getNotes() { + return UkuleleString.values(); + } + + @Override + public Note findNote(String name) { + return UkuleleString.valueOf(name); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml @@ -3,11 +3,19 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:orientation="vertical" tools:context="com.github.cythara.MainActivity"> + <Spinner + android:id="@+id/tuning" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@android:drawable/btn_dropdown" + android:spinnerMode="dropdown" /> + <com.github.cythara.TunerView android:id="@+id/pitch" - android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml @@ -1,3 +1,8 @@ <resources> <string name="app_name">Cythara</string> + <string-array name="tunings"> + <item>Standard guitar tuning</item> + <item>Ukulele</item> + </string-array> + </resources>