diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/note/Note.kt b/app/src/main/java/com/lukas/music/song/note/Note.kt
index cd3171f..dbeb453 100644
--- a/app/src/main/java/com/lukas/music/song/note/Note.kt
+++ b/app/src/main/java/com/lukas/music/song/note/Note.kt
@@ -3,7 +3,7 @@
import kotlin.math.pow
class Note(private val id: Int) {
- private val noteName = NoteName.VALUES[id % 12]
+ val noteName = NoteName.VALUES[id % 12]
val octave = id / 12 - 1
val frequency = 440 * 2.0.pow((id - 69) / 12.0)
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/note/Note.kt b/app/src/main/java/com/lukas/music/song/note/Note.kt
index cd3171f..dbeb453 100644
--- a/app/src/main/java/com/lukas/music/song/note/Note.kt
+++ b/app/src/main/java/com/lukas/music/song/note/Note.kt
@@ -3,7 +3,7 @@
import kotlin.math.pow
class Note(private val id: Int) {
- private val noteName = NoteName.VALUES[id % 12]
+ val noteName = NoteName.VALUES[id % 12]
val octave = id / 12 - 1
val frequency = 440 * 2.0.pow((id - 69) / 12.0)
diff --git a/app/src/main/java/com/lukas/music/song/note/NoteName.kt b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
index 49c19b2..1137a42 100644
--- a/app/src/main/java/com/lukas/music/song/note/NoteName.kt
+++ b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
@@ -26,6 +26,10 @@
return VALUES[resultPosition]
}
+ override fun toString(): String {
+ return asString
+ }
+
companion object {
val VALUES = values()
}
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/note/Note.kt b/app/src/main/java/com/lukas/music/song/note/Note.kt
index cd3171f..dbeb453 100644
--- a/app/src/main/java/com/lukas/music/song/note/Note.kt
+++ b/app/src/main/java/com/lukas/music/song/note/Note.kt
@@ -3,7 +3,7 @@
import kotlin.math.pow
class Note(private val id: Int) {
- private val noteName = NoteName.VALUES[id % 12]
+ val noteName = NoteName.VALUES[id % 12]
val octave = id / 12 - 1
val frequency = 440 * 2.0.pow((id - 69) / 12.0)
diff --git a/app/src/main/java/com/lukas/music/song/note/NoteName.kt b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
index 49c19b2..1137a42 100644
--- a/app/src/main/java/com/lukas/music/song/note/NoteName.kt
+++ b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
@@ -26,6 +26,10 @@
return VALUES[resultPosition]
}
+ override fun toString(): String {
+ return asString
+ }
+
companion object {
val VALUES = values()
}
diff --git a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
index 859012b..14a88e4 100644
--- a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
+++ b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
@@ -4,6 +4,8 @@
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
import android.widget.TableRow
import android.widget.TextView
import androidx.cardview.widget.CardView
@@ -11,10 +13,13 @@
import androidx.fragment.app.Fragment
import com.lukas.music.databinding.FragmentSongBinding
import com.lukas.music.song.Song
+import com.lukas.music.song.note.Note
+import com.lukas.music.song.note.NoteName
-class SongFragment : Fragment() {
+class SongFragment : Fragment(), AdapterView.OnItemSelectedListener {
private lateinit var binding: FragmentSongBinding
+ var displayChordNames = true
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -22,11 +27,24 @@
): View? {
binding = FragmentSongBinding.inflate(inflater)
binding.chords.isStretchAllColumns = true
- val layout = TableRow.LayoutParams(
- TableRow.LayoutParams.MATCH_PARENT,
- TableRow.LayoutParams.MATCH_PARENT
+ binding.literalChords.isChecked = true
+ binding.literalChords.setOnCheckedChangeListener { _, isChecked ->
+ displayChordNames = isChecked
+ updateChords()
+ }
+ val adapter = ArrayAdapter(
+ binding.root.context,
+ android.R.layout.simple_spinner_dropdown_item, NoteName.VALUES
)
- layout.setMargins(10)
+ binding.keySelection.adapter = adapter
+ binding.keySelection.onItemSelectedListener = this
+ binding.keySelection.setSelection(Song.currentSong.root.noteName.index)
+ updateChords()
+ return binding.root
+ }
+
+ private fun updateChords() {
+ binding.chords.removeAllViews()
for (phrase in Song.currentSong.chordProgression.phrases) {
val row = TableRow(binding.root.context)
for (chord in phrase.chords) {
@@ -34,13 +52,33 @@
card.radius = 10f
card.layoutParams = layout
val text = TextView(binding.root.context)
- text.text = chord.toString()
+ text.text = chord.toString(displayChordNames, Song.currentSong.root)
text.layoutParams = layout
card.addView(text)
row.addView(card)
}
binding.chords.addView(row)
}
- return binding.root
+ }
+
+ companion object {
+ val layout = TableRow.LayoutParams(
+ TableRow.LayoutParams.MATCH_PARENT,
+ TableRow.LayoutParams.MATCH_PARENT
+ )
+
+ init {
+ layout.setMargins(10)
+ }
+ }
+
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ Song.currentSong.root = Note.of(NoteName.VALUES[position], 4)
+ if (displayChordNames) {
+ updateChords()
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/note/Note.kt b/app/src/main/java/com/lukas/music/song/note/Note.kt
index cd3171f..dbeb453 100644
--- a/app/src/main/java/com/lukas/music/song/note/Note.kt
+++ b/app/src/main/java/com/lukas/music/song/note/Note.kt
@@ -3,7 +3,7 @@
import kotlin.math.pow
class Note(private val id: Int) {
- private val noteName = NoteName.VALUES[id % 12]
+ val noteName = NoteName.VALUES[id % 12]
val octave = id / 12 - 1
val frequency = 440 * 2.0.pow((id - 69) / 12.0)
diff --git a/app/src/main/java/com/lukas/music/song/note/NoteName.kt b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
index 49c19b2..1137a42 100644
--- a/app/src/main/java/com/lukas/music/song/note/NoteName.kt
+++ b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
@@ -26,6 +26,10 @@
return VALUES[resultPosition]
}
+ override fun toString(): String {
+ return asString
+ }
+
companion object {
val VALUES = values()
}
diff --git a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
index 859012b..14a88e4 100644
--- a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
+++ b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
@@ -4,6 +4,8 @@
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
import android.widget.TableRow
import android.widget.TextView
import androidx.cardview.widget.CardView
@@ -11,10 +13,13 @@
import androidx.fragment.app.Fragment
import com.lukas.music.databinding.FragmentSongBinding
import com.lukas.music.song.Song
+import com.lukas.music.song.note.Note
+import com.lukas.music.song.note.NoteName
-class SongFragment : Fragment() {
+class SongFragment : Fragment(), AdapterView.OnItemSelectedListener {
private lateinit var binding: FragmentSongBinding
+ var displayChordNames = true
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -22,11 +27,24 @@
): View? {
binding = FragmentSongBinding.inflate(inflater)
binding.chords.isStretchAllColumns = true
- val layout = TableRow.LayoutParams(
- TableRow.LayoutParams.MATCH_PARENT,
- TableRow.LayoutParams.MATCH_PARENT
+ binding.literalChords.isChecked = true
+ binding.literalChords.setOnCheckedChangeListener { _, isChecked ->
+ displayChordNames = isChecked
+ updateChords()
+ }
+ val adapter = ArrayAdapter(
+ binding.root.context,
+ android.R.layout.simple_spinner_dropdown_item, NoteName.VALUES
)
- layout.setMargins(10)
+ binding.keySelection.adapter = adapter
+ binding.keySelection.onItemSelectedListener = this
+ binding.keySelection.setSelection(Song.currentSong.root.noteName.index)
+ updateChords()
+ return binding.root
+ }
+
+ private fun updateChords() {
+ binding.chords.removeAllViews()
for (phrase in Song.currentSong.chordProgression.phrases) {
val row = TableRow(binding.root.context)
for (chord in phrase.chords) {
@@ -34,13 +52,33 @@
card.radius = 10f
card.layoutParams = layout
val text = TextView(binding.root.context)
- text.text = chord.toString()
+ text.text = chord.toString(displayChordNames, Song.currentSong.root)
text.layoutParams = layout
card.addView(text)
row.addView(card)
}
binding.chords.addView(row)
}
- return binding.root
+ }
+
+ companion object {
+ val layout = TableRow.LayoutParams(
+ TableRow.LayoutParams.MATCH_PARENT,
+ TableRow.LayoutParams.MATCH_PARENT
+ )
+
+ init {
+ layout.setMargins(10)
+ }
+ }
+
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ Song.currentSong.root = Note.of(NoteName.VALUES[position], 4)
+ if (displayChordNames) {
+ updateChords()
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_song.xml b/app/src/main/res/layout/fragment_song.xml
index 864e035..a54563f 100644
--- a/app/src/main/res/layout/fragment_song.xml
+++ b/app/src/main/res/layout/fragment_song.xml
@@ -10,19 +10,46 @@
android:id="@+id/chords"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
android:clipChildren="true"
android:dividerPadding="5dp"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintTop_toBottomOf="@+id/literalChords" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/Song.kt b/app/src/main/java/com/lukas/music/song/Song.kt
index ebea238..9dd3cb8 100644
--- a/app/src/main/java/com/lukas/music/song/Song.kt
+++ b/app/src/main/java/com/lukas/music/song/Song.kt
@@ -9,7 +9,7 @@
import com.lukas.music.song.note.Note
class Song(
- private val root: Note,
+ var root: Note,
val chordProgression: ChordProgression,
val beats: Int
) {
diff --git a/app/src/main/java/com/lukas/music/song/chords/Chord.kt b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
index 9480a25..de1ba1b 100644
--- a/app/src/main/java/com/lukas/music/song/chords/Chord.kt
+++ b/app/src/main/java/com/lukas/music/song/chords/Chord.kt
@@ -8,6 +8,17 @@
}
override fun toString(): String {
- return "$note -> $chordType"
+ return "$note($chordType)"
+ }
+
+ fun toString(displayChordNames: Boolean, root: Note): String {
+ if (displayChordNames) {
+ val noteName = (root + note).noteName
+ if (chordType == ChordType.Major) {
+ return noteName.toString().uppercase()
+ }
+ return noteName.toString().lowercase()
+ }
+ return toString()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lukas/music/song/note/Note.kt b/app/src/main/java/com/lukas/music/song/note/Note.kt
index cd3171f..dbeb453 100644
--- a/app/src/main/java/com/lukas/music/song/note/Note.kt
+++ b/app/src/main/java/com/lukas/music/song/note/Note.kt
@@ -3,7 +3,7 @@
import kotlin.math.pow
class Note(private val id: Int) {
- private val noteName = NoteName.VALUES[id % 12]
+ val noteName = NoteName.VALUES[id % 12]
val octave = id / 12 - 1
val frequency = 440 * 2.0.pow((id - 69) / 12.0)
diff --git a/app/src/main/java/com/lukas/music/song/note/NoteName.kt b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
index 49c19b2..1137a42 100644
--- a/app/src/main/java/com/lukas/music/song/note/NoteName.kt
+++ b/app/src/main/java/com/lukas/music/song/note/NoteName.kt
@@ -26,6 +26,10 @@
return VALUES[resultPosition]
}
+ override fun toString(): String {
+ return asString
+ }
+
companion object {
val VALUES = values()
}
diff --git a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
index 859012b..14a88e4 100644
--- a/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
+++ b/app/src/main/java/com/lukas/music/ui/fragments/SongFragment.kt
@@ -4,6 +4,8 @@
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
import android.widget.TableRow
import android.widget.TextView
import androidx.cardview.widget.CardView
@@ -11,10 +13,13 @@
import androidx.fragment.app.Fragment
import com.lukas.music.databinding.FragmentSongBinding
import com.lukas.music.song.Song
+import com.lukas.music.song.note.Note
+import com.lukas.music.song.note.NoteName
-class SongFragment : Fragment() {
+class SongFragment : Fragment(), AdapterView.OnItemSelectedListener {
private lateinit var binding: FragmentSongBinding
+ var displayChordNames = true
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -22,11 +27,24 @@
): View? {
binding = FragmentSongBinding.inflate(inflater)
binding.chords.isStretchAllColumns = true
- val layout = TableRow.LayoutParams(
- TableRow.LayoutParams.MATCH_PARENT,
- TableRow.LayoutParams.MATCH_PARENT
+ binding.literalChords.isChecked = true
+ binding.literalChords.setOnCheckedChangeListener { _, isChecked ->
+ displayChordNames = isChecked
+ updateChords()
+ }
+ val adapter = ArrayAdapter(
+ binding.root.context,
+ android.R.layout.simple_spinner_dropdown_item, NoteName.VALUES
)
- layout.setMargins(10)
+ binding.keySelection.adapter = adapter
+ binding.keySelection.onItemSelectedListener = this
+ binding.keySelection.setSelection(Song.currentSong.root.noteName.index)
+ updateChords()
+ return binding.root
+ }
+
+ private fun updateChords() {
+ binding.chords.removeAllViews()
for (phrase in Song.currentSong.chordProgression.phrases) {
val row = TableRow(binding.root.context)
for (chord in phrase.chords) {
@@ -34,13 +52,33 @@
card.radius = 10f
card.layoutParams = layout
val text = TextView(binding.root.context)
- text.text = chord.toString()
+ text.text = chord.toString(displayChordNames, Song.currentSong.root)
text.layoutParams = layout
card.addView(text)
row.addView(card)
}
binding.chords.addView(row)
}
- return binding.root
+ }
+
+ companion object {
+ val layout = TableRow.LayoutParams(
+ TableRow.LayoutParams.MATCH_PARENT,
+ TableRow.LayoutParams.MATCH_PARENT
+ )
+
+ init {
+ layout.setMargins(10)
+ }
+ }
+
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ Song.currentSong.root = Note.of(NoteName.VALUES[position], 4)
+ if (displayChordNames) {
+ updateChords()
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_song.xml b/app/src/main/res/layout/fragment_song.xml
index 864e035..a54563f 100644
--- a/app/src/main/res/layout/fragment_song.xml
+++ b/app/src/main/res/layout/fragment_song.xml
@@ -10,19 +10,46 @@
android:id="@+id/chords"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
android:clipChildren="true"
android:dividerPadding="5dp"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintTop_toBottomOf="@+id/literalChords" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6e8239a..a200009 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,4 +10,7 @@
active
select the instrument waveform
edit this instrument\'s properties
+ Add a new phrase
+ Actual chords
+ select the song\'s key
\ No newline at end of file