package com.garethevans.church.opensongtablet;
import java.io.IOException;
import java.util.Arrays;
import android.app.Activity;
public class Transpose extends Activity {
public static String oldchordformat;
// A A#/Bb B/Cb C/B# C#/Db D D#/Eb E/Fb E#/F F#/Gb G G#/Ab
// A B H C
// 1 2 3 4 5 6 7 8 9 10 11 12
// Sharp chords first
public static String[] chordsharpsnumsa = {"$.2.$", "$.4.$", "$.5.$", "$.7.$", "$.9.$", "$.10.$", "$.12.$"};
public static String[] chordsharpsnumsb = {"$.32.$", "$.34.$", "$.35.$", "$.37.$", "$.39.$", "$.40.$", "$.42.$"};
public static String[] chordsharpsnumsc = {"$.52.$", "$.54.$", "$.55.$", "$.57.$", "$.59.$", "$.60.$", "$.62.$"};
public static String[] sharpchords1a = {"A#", "B#", "C#", "D#", "E#", "F#", "G#"};
public static String[] sharpchords1b = {"A#m", "B#m", "C#m", "D#m", "E#m", "F#m", "G#m"}; // For key only
public static String[] sharpchords2 = {"A#", "H#", "C#", "D#", "E#", "F#", "G#"};
public static String[] sharpchords3a = {"Ais", "His", "Cis", "Dis", "Eis", "Fis", "Gis"};
public static String[] sharpchords3b = {" ais", " his", " cis", " dis", " eis", " fis", " gis"};
public static String[] sharpchords3c = {".ais", ".his", ".cis", ".dis", ".eis", ".fis", ".gis"};
public static String[] sharpchords4 = {"La#", "Si#", "Do#", "Ré#", "Mi#", "Fa#", "Sol#"};
public static String[] properchordsharpsnumsa = {"$.2.$", "$.5.$", "$.7.$", "$.10.$", "$.12.$"}; // For number to chord
public static String[] properchordsharpsnumsb = {"$.32.$", "$.35.$", "$.37.$", "$.40.$", "$.42.$"}; // For number to chord
public static String[] properchordsharpsnumsc = {"$.52.$", "$.55.$", "$.57.$", "$.60.$", "$.62.$"}; // For number to chord
public static String[] propersharpchords1a = {"A#", "C#", "D#", "F#", "G#"}; // For number to chord
public static String[] propersharpchords1b = {"A#m", "C#m", "D#m", "F#m", "G#m"}; // For number to chord
public static String[] propersharpchords2 = {"A#", "C#", "D#", "F#", "G#"}; // For number to chord
public static String[] propersharpchords3a = {"Ais", "Cis", "Dis", "Fis", "Gis"}; // For number to chord
public static String[] propersharpchords3b = {" ais", " cis", " dis", " fis", " gis"}; // For number to chord
public static String[] propersharpchords3c = {".ais", ".cis", ".dis", ".fis", ".gis"}; // For number to chord
public static String[] propersharpchords4 = {"La#", "Do#", "Ré#", "Fa#", "Sol#"}; // For number to chord
// Flat chords next
public static String[] chordflatsnumsa = {"$.12.$", "$.2.$", "$.3.$", "$.5.$", "$.7.$", "$.8.$", "$.10.$"};
public static String[] chordflatsnumsb = {"$.42.$", "$.32.$", "$.33.$", "$.35.$", "$.37.$", "$.38.$", "$.40.$"};
public static String[] chordflatsnumsc = {"$.62.$", "$.52.$", "$.53.$", "$.55.$", "$.57.$", "$.58.$", "$.60.$"};
public static String[] flatchords1a = {"Ab", "Bb", "Cb", "Db", "Eb", "Fb", "Gb"};
public static String[] flatchords1b = {"Abm", "Bbm", "Cbm", "Dbm", "Ebm", "Fbm", "Gbm"}; // For key only
public static String[] flatchords2 = {"Ab", "B", "Cb", "Db", "Eb", "Fb", "Gb"};
public static String[] flatchords3a = {"As", "B", "Ces", "Des", "Es", "Fes", "Ges"};
public static String[] flatchords3b = {" as", " b", " ces", " des", " es", " fes", " ges"};
public static String[] flatchords3c = {".as", ".b", ".ces", ".des", ".es", ".fes", ".ges"};
public static String[] flatchords4 = {"Lab", "Sib", "Dob", "Réb", "Mib", "Fab", "Solb"};
public static String[] properchordflatsnumsa = {"$.12.$", "$.2.$", "$.5.$", "$.7.$", "$.10.$"};// For number to chord
public static String[] properchordflatsnumsb = {"$.42.$", "$.32.$", "$.35.$", "$.37.$", "$.40.$"};// For number to chord
public static String[] properchordflatsnumsc = {"$.62.$", "$.52.$", "$.55.$", "$.57.$", "$.60.$"};// For number to chord
public static String[] properflatchords1a = {"Ab", "Bb", "Db", "Eb", "Gb"}; // For number to chord
public static String[] properflatchords2 = {"Ab", "B", "Db", "Eb", "Gb"}; // For number to chord
public static String[] properflatchords3a = {"As", "B", "Des", "Es", "Ges"}; // For number to chord
public static String[] properflatchords3b = {" as", " b", " des", " es", " ges"}; // For number to chord
public static String[] properflatchords3c = {".as", ".b", ".des", ".es", ".ges"}; // For number to chord
public static String[] properflatchords4 = {"Lab", "Sib", "Réb", "Mib", "Solb"}; // For number to chord
// Finally the natural chords
public static String[] chordnaturalnumsa = {"$.1.$", "$.3.$", "$.4.$", "$.6.$", "$.8.$", "$.9.$", "$.11.$"};
public static String[] chordnaturalnumsb = {"$.31.$", "$.33.$", "$.34.$", "$.36.$", "$.38.$", "$.39.$", "$.41.$"};
public static String[] chordnaturalnumsc = {"$.51.$", "$.53.$", "$.54.$", "$.56.$", "$.58.$", "$.59.$", "$.61.$"};
public static String[] naturalchords1a = {"A", "B", "C", "D", "E", "F", "G"};
public static String[] naturalchords1b = {"Am", "Bm", "Cm", "Dm", "Em", "Fm", "Gm"}; // For key only
public static String[] naturalchords2 = {"A", "H", "C", "D", "E", "F", "G"};
public static String[] naturalchords3a = {"A", "H", "C", "D", "E", "F", "G"};
public static String[] naturalchords3b = {" a", " h", " c", " d", " e", " f", " g"};
public static String[] naturalchords3c = {".a", ".h", ".c", ".d", ".e", ".f", ".g"};
public static String[] naturalchords4 = {"La", "Si", "Do", "Ré", "Mi", "Fa", "Sol"};
public static String originalkey = FullscreenActivity.mKey;
public static String newkey = FullscreenActivity.mKey;
public static boolean usesflats;
public static boolean capousesflats;
public static void doTranspose() throws IOException {
// Go through each line and change each chord to $..$
// This marks the bit to be changed
FullscreenActivity.transposedLyrics = null;
FullscreenActivity.transposedLyrics = "";
FullscreenActivity.myTransposedLyrics = null;
FullscreenActivity.myTransposedLyrics = FullscreenActivity.mLyrics.split("\n");
oldchordformat = FullscreenActivity.oldchordformat;
// Change the saved key to a number
if (originalkey != null && !FullscreenActivity.mKey.equals("")) {
newkey = keyToNumber(FullscreenActivity.mKey);
}
// Transpose the key
newkey = transposeKey(newkey, FullscreenActivity.transposeDirection, FullscreenActivity.transposeTimes);
// Convert the keynumber to a key
newkey = numberToKey(newkey);
// Decide if flats should be used
usesflats = keyUsesFlats(newkey);
if (!FullscreenActivity.mKey.equals("")) {
FullscreenActivity.mKey = newkey;
}
// Now we change the chords into numbers
for (int x = 0; x < FullscreenActivity.myTransposedLyrics.length; x++) {
if (FullscreenActivity.myTransposedLyrics[x].indexOf(".") == 0) {
// Since this line has chords, do the changing!
// Decide on the chord format to use
switch (oldchordformat) {
default:
FullscreenActivity.myTransposedLyrics[x] = chordToNumber1(FullscreenActivity.myTransposedLyrics[x]);
break;
case "2":
FullscreenActivity.myTransposedLyrics[x] = chordToNumber2(FullscreenActivity.myTransposedLyrics[x]);
break;
case "3":
FullscreenActivity.myTransposedLyrics[x] = chordToNumber3(FullscreenActivity.myTransposedLyrics[x]);
break;
case "4":
FullscreenActivity.myTransposedLyrics[x] = chordToNumber4(FullscreenActivity.myTransposedLyrics[x]);
break;
}
}
}
// Next up we do the transposing
transposeChords();
// Now we put the numbers back into chords in the correct format and using either the key preference or the forced sharps or flats
for (int x = 0; x < FullscreenActivity.myTransposedLyrics.length; x++) {
if (FullscreenActivity.myTransposedLyrics[x].indexOf(".") == 0) {
// Since this line has chords, do the changing!
// Decide on the chord format to use
switch (oldchordformat) {
default:
FullscreenActivity.myTransposedLyrics[x] = numberToChord1(FullscreenActivity.myTransposedLyrics[x]);
break;
case "2":
FullscreenActivity.myTransposedLyrics[x] = numberToChord2(FullscreenActivity.myTransposedLyrics[x]);
break;
case "3":
FullscreenActivity.myTransposedLyrics[x] = numberToChord3(FullscreenActivity.myTransposedLyrics[x]);
break;
case "4":
FullscreenActivity.myTransposedLyrics[x] = numberToChord4(FullscreenActivity.myTransposedLyrics[x]);
break;
}
}
// Add all the lines back up as a string
FullscreenActivity.transposedLyrics += FullscreenActivity.myTransposedLyrics[x] + "\n";
}
// Now that the chords have been changed, replace the myTransposedLyrics
// into the file
FullscreenActivity.mynewXML = null;
FullscreenActivity.mynewXML = "";
// Write the new improved XML file
FullscreenActivity.mLyrics = FullscreenActivity.transposedLyrics;
PopUpEditSongFragment.prepareSongXML();
PopUpEditSongFragment.justSaveSongXML();
/* String myNEWXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
myNEWXML += "<song>\n";
myNEWXML += " <title>" + PopUpEditSongFragment.parseToHTMLEntities(FullscreenActivity.mTitle.toString() + "</title>\n";
myNEWXML += " <author>" + FullscreenActivity.mAuthor + "</author>\n";
myNEWXML += " <copyright>" + FullscreenActivity.mCopyright + "</copyright>\n";
myNEWXML += " <presentation>" + FullscreenActivity.mPresentation + "</presentation>\n";
myNEWXML += " <hymn_number>" + FullscreenActivity.mHymnNumber + "</hymn_number>\n";
myNEWXML += " <capo print=\"" + FullscreenActivity.mCapoPrint + "\">" + FullscreenActivity.mCapo + "</capo>\n";
myNEWXML += " <tempo>" + FullscreenActivity.mTempo + "</tempo>\n";
myNEWXML += " <time_sig>" + FullscreenActivity.mTimeSig + "</time_sig>\n";
myNEWXML += " <duration>" + FullscreenActivity.mDuration + "</duration>\n";
myNEWXML += " <ccli>" + FullscreenActivity.mCCLI + "</ccli>\n";
myNEWXML += " <theme>" + FullscreenActivity.mTheme + "</theme>\n";
myNEWXML += " <alttheme>" + FullscreenActivity.mAltTheme + "</alttheme>\n";
myNEWXML += " <user1>" + FullscreenActivity.mUser1 + "</user1>\n";
myNEWXML += " <user2>" + FullscreenActivity.mUser2 + "</user2>\n";
myNEWXML += " <user3>" + FullscreenActivity.mUser3 + "</user3>\n";
myNEWXML += " <key>" + FullscreenActivity.mKey + "</key>\n";
myNEWXML += " <aka>" + FullscreenActivity.mAka + "</aka>\n";
myNEWXML += " <key_line>" + FullscreenActivity.mKeyLine + "</key_line>\n";
myNEWXML += " <books>" + FullscreenActivity.mBooks + "</books>\n";
myNEWXML += " <midi>" + FullscreenActivity.mMidi + "</midi>\n";
myNEWXML += " <midi_index>" + FullscreenActivity.mMidiIndex + "</midi_index>\n";
myNEWXML += " <pitch>" + FullscreenActivity.mPitch + "</pitch>\n";
myNEWXML += " <restrictions>" + FullscreenActivity.mRestrictions + "</restrictions>\n";
myNEWXML += " <notes>" + FullscreenActivity.mNotes + "</notes>\n";
myNEWXML += " <linked_songs>" + FullscreenActivity.mLinkedSongs + "</linked_songs>\n";
myNEWXML += " <pad_file>" + FullscreenActivity.mPadFile + "</pad_file>\n";
myNEWXML += " <custom_chords>" + FullscreenActivity.mCustomChords + "</custom_chords>\n";
myNEWXML += " <lyrics>" + FullscreenActivity.transposedLyrics + "</lyrics>\n";
if (!FullscreenActivity.mExtraStuff1.isEmpty()) {
myNEWXML += " " + FullscreenActivity.mExtraStuff1 + "\n";
}
if (!FullscreenActivity.mExtraStuff2.isEmpty()) {
myNEWXML += " " + FullscreenActivity.mExtraStuff2 + "\n";
}
myNEWXML += "</song>";
FullscreenActivity.mynewXML = myNEWXML;
// Makes sure all & are replaced with &
FullscreenActivity.mynewXML = FullscreenActivity.mynewXML.replace("&","&");
FullscreenActivity.mynewXML = FullscreenActivity.mynewXML.replace("&","&");
// Now write the modified song
FileOutputStream overWrite;
if (FullscreenActivity.whichSongFolder.equals(FullscreenActivity.mainfoldername)) {
overWrite = new FileOutputStream(
FullscreenActivity.dir + "/" + FullscreenActivity.songfilename,
false);
} else {
overWrite = new FileOutputStream(
FullscreenActivity.dir + "/" + FullscreenActivity.whichSongFolder + "/" + FullscreenActivity.songfilename,
false);
}
overWrite.write(FullscreenActivity.mynewXML.getBytes());
overWrite.flush();
overWrite.close();
*/
FullscreenActivity.transposedLyrics = null;
FullscreenActivity.transposedLyrics = "";
Arrays.fill(FullscreenActivity.myTransposedLyrics, null);
Arrays.fill(FullscreenActivity.myParsedLyrics, null);
FullscreenActivity.myLyrics = null;
FullscreenActivity.myLyrics = "";
FullscreenActivity.mynewXML = null;
FullscreenActivity.mynewXML = "";
FullscreenActivity.myXML = null;
FullscreenActivity.myXML = "";
Preferences.savePreferences();
}
public static String keyToNumber(String key) {
// Swap the key with the correct number
// Look for minor keys first
for (int z=0;z<sharpchords1b.length;z++) {
key = key.replace(sharpchords1b[z],chordsharpsnumsb[z]);
}
for (int z=0;z<flatchords1b.length;z++) {
key = key.replace(flatchords1b[z],chordflatsnumsb[z]);
}
for (int z=0;z<naturalchords1b.length;z++) {
key = key.replace(naturalchords1b[z],chordnaturalnumsb[z]);
}
// Look for major keys next
for (int z=0;z<sharpchords1a.length;z++) {
key = key.replace(sharpchords1a[z],chordsharpsnumsa[z]);
}
for (int z=0;z<flatchords1a.length;z++) {
key = key.replace(flatchords1a[z],chordflatsnumsa[z]);
}
for (int z=0;z<naturalchords1a.length;z++) {
key = key.replace(naturalchords1a[z],chordnaturalnumsa[z]);
}
return key;
}
public static String chordToNumber1(String line) {
// Look for sharps first
for (int z=0;z<sharpchords1a.length;z++) {
line = line.replace(sharpchords1a[z],chordsharpsnumsa[z]);
}
// Now flats
for (int z=0;z<flatchords1a.length;z++) {
line = line.replace(flatchords1a[z],chordflatsnumsa[z]);
}
// Finally naturals
for (int z=0;z<naturalchords1a.length;z++) {
line = line.replace(naturalchords1a[z],chordnaturalnumsa[z]);
}
return line;
}
public static String chordToNumber2(String line) {
// Look for sharps first
for (int z=0;z<sharpchords2.length;z++) {
line = line.replace(sharpchords2[z],chordsharpsnumsa[z]);
}
// Now flats
for (int z=0;z<flatchords1a.length;z++) {
line = line.replace(flatchords2[z],chordflatsnumsa[z]);
}
// Finally naturals
for (int z=0;z<naturalchords1a.length;z++) {
line = line.replace(naturalchords2[z],chordnaturalnumsa[z]);
}
return line;
}
public static String chordToNumber3(String line) {
// Look for sharps first
for (int z=0;z<sharpchords3c.length;z++) {
line = line.replace(sharpchords3c[z],chordsharpsnumsc[z]);
}
for (int z=0;z<sharpchords3b.length;z++) {
line = line.replace(sharpchords3b[z],chordsharpsnumsb[z]);
}
for (int z=0;z<sharpchords3a.length;z++) {
line = line.replace(sharpchords3a[z],chordsharpsnumsa[z]);
}
// Now flats
for (int z=0;z<flatchords3c.length;z++) {
line = line.replace(flatchords3c[z],chordflatsnumsc[z]);
}
for (int z=0;z<flatchords3b.length;z++) {
line = line.replace(flatchords3b[z],chordflatsnumsb[z]);
}
for (int z=0;z<flatchords3a.length;z++) {
line = line.replace(flatchords3a[z],chordflatsnumsa[z]);
}
// Finally naturals
for (int z=0;z<naturalchords3c.length;z++) {
line = line.replace(naturalchords3c[z],chordnaturalnumsc[z]);
}
for (int z=0;z<naturalchords3b.length;z++) {
line = line.replace(naturalchords3b[z],chordnaturalnumsb[z]);
}
for (int z=0;z<naturalchords3a.length;z++) {
line = line.replace(naturalchords3a[z],chordnaturalnumsa[z]);
}
return line;
}
public static String chordToNumber4(String line) {
// Change any Re into Ré and Ti into Si
line = line.replace("Re","Ré");
line = line.replace("Ti","Si");
// Change lowercase into correct case
line = line.replace("do","Do");
line = line.replace("re","ré");
line = line.replace("ré","Ré");
line = line.replace("mi","Mi");
line = line.replace("fa","Fa");
line = line.replace("sol","Sol");
line = line.replace("la","La");
line = line.replace("si","Si");
// Look for sharps first
for (int z=0;z<sharpchords4.length;z++) {
line = line.replace(sharpchords4[z],chordsharpsnumsa[z]);
}
// Now flats
for (int z=0;z<flatchords4.length;z++) {
line = line.replace(flatchords4[z],chordflatsnumsa[z]);
}
// Finally naturals
for (int z=0;z<naturalchords4.length;z++) {
line = line.replace(naturalchords4[z],chordnaturalnumsa[z]);
}
return line;
}
public static String transposeKey(String getkeynum, String direction, int transposetimes) {
if (direction.equals("+1")) {
// Put the numbers up by one.
// Last step then fixes 13 to be 1
// Repeat this as often as required.
for (int repeatTranspose = 0; repeatTranspose < transposetimes; repeatTranspose++) {
getkeynum = getkeynum.replace("$.12.$", "$.13.$");
getkeynum = getkeynum.replace("$.11.$", "$.12.$");
getkeynum = getkeynum.replace("$.10.$", "$.11.$");
getkeynum = getkeynum.replace("$.9.$", "$.10.$");
getkeynum = getkeynum.replace("$.8.$", "$.9.$");
getkeynum = getkeynum.replace("$.7.$", "$.8.$");
getkeynum = getkeynum.replace("$.6.$", "$.7.$");
getkeynum = getkeynum.replace("$.5.$", "$.6.$");
getkeynum = getkeynum.replace("$.4.$", "$.5.$");
getkeynum = getkeynum.replace("$.3.$", "$.4.$");
getkeynum = getkeynum.replace("$.2.$", "$.3.$");
getkeynum = getkeynum.replace("$.1.$", "$.2.$");
getkeynum = getkeynum.replace("$.13.$", "$.1.$");
getkeynum = getkeynum.replace("$.42.$", "$.43.$");
getkeynum = getkeynum.replace("$.41.$", "$.42.$");
getkeynum = getkeynum.replace("$.40.$", "$.41.$");
getkeynum = getkeynum.replace("$.39.$", "$.40.$");
getkeynum = getkeynum.replace("$.38.$", "$.39.$");
getkeynum = getkeynum.replace("$.37.$", "$.38.$");
getkeynum = getkeynum.replace("$.36.$", "$.37.$");
getkeynum = getkeynum.replace("$.35.$", "$.36.$");
getkeynum = getkeynum.replace("$.34.$", "$.35.$");
getkeynum = getkeynum.replace("$.33.$", "$.34.$");
getkeynum = getkeynum.replace("$.32.$", "$.33.$");
getkeynum = getkeynum.replace("$.31.$", "$.32.$");
getkeynum = getkeynum.replace("$.43.$", "$.31.$");
getkeynum = getkeynum.replace("$.62.$", "$.63.$");
getkeynum = getkeynum.replace("$.61.$", "$.62.$");
getkeynum = getkeynum.replace("$.60.$", "$.61.$");
getkeynum = getkeynum.replace("$.59.$", "$.60.$");
getkeynum = getkeynum.replace("$.58.$", "$.59.$");
getkeynum = getkeynum.replace("$.57.$", "$.58.$");
getkeynum = getkeynum.replace("$.56.$", "$.57.$");
getkeynum = getkeynum.replace("$.55.$", "$.56.$");
getkeynum = getkeynum.replace("$.54.$", "$.55.$");
getkeynum = getkeynum.replace("$.53.$", "$.54.$");
getkeynum = getkeynum.replace("$.52.$", "$.53.$");
getkeynum = getkeynum.replace("$.51.$", "$.52.$");
getkeynum = getkeynum.replace("$.63.$", "$.51.$");
}
}
if (direction.equals("-1")) {
// Put the numbers down by one.
// Last step then fixes 0 to be 12
// Repeat this as often as required.
for (int repeatTranspose = 0; repeatTranspose < transposetimes; repeatTranspose++) {
getkeynum = getkeynum.replace("$.1.$", "$.0.$");
getkeynum = getkeynum.replace("$.2.$", "$.1.$");
getkeynum = getkeynum.replace("$.3.$", "$.2.$");
getkeynum = getkeynum.replace("$.4.$", "$.3.$");
getkeynum = getkeynum.replace("$.5.$", "$.4.$");
getkeynum = getkeynum.replace("$.6.$", "$.5.$");
getkeynum = getkeynum.replace("$.7.$", "$.6.$");
getkeynum = getkeynum.replace("$.8.$", "$.7.$");
getkeynum = getkeynum.replace("$.9.$", "$.8.$");
getkeynum = getkeynum.replace("$.10.$", "$.9.$");
getkeynum = getkeynum.replace("$.11.$", "$.10.$");
getkeynum = getkeynum.replace("$.12.$", "$.11.$");
getkeynum = getkeynum.replace("$.0.$", "$.12.$");
getkeynum = getkeynum.replace("$.31.$", "$.30.$");
getkeynum = getkeynum.replace("$.32.$", "$.31.$");
getkeynum = getkeynum.replace("$.33.$", "$.32.$");
getkeynum = getkeynum.replace("$.34.$", "$.33.$");
getkeynum = getkeynum.replace("$.35.$", "$.34.$");
getkeynum = getkeynum.replace("$.36.$", "$.35.$");
getkeynum = getkeynum.replace("$.37.$", "$.36.$");
getkeynum = getkeynum.replace("$.38.$", "$.37.$");
getkeynum = getkeynum.replace("$.39.$", "$.38.$");
getkeynum = getkeynum.replace("$.40.$", "$.39.$");
getkeynum = getkeynum.replace("$.41.$", "$.40.$");
getkeynum = getkeynum.replace("$.42.$", "$.41.$");
getkeynum = getkeynum.replace("$.30.$", "$.42.$");
getkeynum = getkeynum.replace("$.51.$", "$.50.$");
getkeynum = getkeynum.replace("$.52.$", "$.51.$");
getkeynum = getkeynum.replace("$.53.$", "$.52.$");
getkeynum = getkeynum.replace("$.54.$", "$.53.$");
getkeynum = getkeynum.replace("$.55.$", "$.54.$");
getkeynum = getkeynum.replace("$.56.$", "$.55.$");
getkeynum = getkeynum.replace("$.57.$", "$.56.$");
getkeynum = getkeynum.replace("$.58.$", "$.57.$");
getkeynum = getkeynum.replace("$.59.$", "$.58.$");
getkeynum = getkeynum.replace("$.60.$", "$.59.$");
getkeynum = getkeynum.replace("$.61.$", "$.60.$");
getkeynum = getkeynum.replace("$.62.$", "$.61.$");
getkeynum = getkeynum.replace("$.50.$", "$.62.$");
}
}
return getkeynum;
}
public static void transposeChords() {
// Go through each line in turn
for (int x = 0; x < FullscreenActivity.myTransposedLyrics.length; x++) {
// Only do transposing if it is a chord line (starting with .)
if (FullscreenActivity.myTransposedLyrics[x].indexOf(".") == 0) {
if (FullscreenActivity.transposeDirection.equals("+1")) {
// Put the numbers up by one.
// Last step then fixes 12 to be 0
// Repeat this as often as required.
for (int repeatTranspose = 0; repeatTranspose < FullscreenActivity.transposeTimes; repeatTranspose++) {
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.12.$", "$.13.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.11.$", "$.12.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.10.$", "$.11.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.9.$", "$.10.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.8.$", "$.9.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.7.$", "$.8.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.6.$", "$.7.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.5.$", "$.6.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.4.$", "$.5.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.3.$", "$.4.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.2.$", "$.3.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.1.$", "$.2.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.13.$", "$.1.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.42.$", "$.43.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.41.$", "$.42.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.40.$", "$.41.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.39.$", "$.40.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.38.$", "$.39.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.37.$", "$.38.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.36.$", "$.37.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.35.$", "$.36.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.34.$", "$.35.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.33.$", "$.34.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.32.$", "$.33.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.31.$", "$.32.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.43.$", "$.31.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.62.$", "$.63.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.61.$", "$.62.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.60.$", "$.61.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.59.$", "$.60.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.58.$", "$.59.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.57.$", "$.58.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.56.$", "$.57.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.55.$", "$.56.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.54.$", "$.55.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.53.$", "$.54.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.52.$", "$.53.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.51.$", "$.52.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.63.$", "$.51.$");
}
}
if (FullscreenActivity.transposeDirection.equals("-1")) {
// Put the numbers down by one.
// Move num 0 down to -1 (if it goes to 11 it will be moved
// later)
// Last step then fixes -1 to be 11
// Repeat this as often as required.
for (int repeatTranspose = 0; repeatTranspose < FullscreenActivity.transposeTimes; repeatTranspose++) {
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.1.$", "$.0.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.2.$", "$.1.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.3.$", "$.2.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.4.$", "$.3.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.5.$", "$.4.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.6.$", "$.5.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.7.$", "$.6.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.8.$", "$.7.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.9.$", "$.8.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.10.$", "$.9.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.11.$", "$.10.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.12.$", "$.11.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.0.$", "$.12.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.31.$", "$.30.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.32.$", "$.31.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.33.$", "$.32.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.34.$", "$.33.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.35.$", "$.34.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.36.$", "$.35.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.37.$", "$.36.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.38.$", "$.37.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.39.$", "$.38.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.40.$", "$.39.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.41.$", "$.40.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.42.$", "$.41.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.30.$", "$.42.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.51.$", "$.50.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.52.$", "$.51.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.53.$", "$.52.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.54.$", "$.53.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.55.$", "$.54.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.56.$", "$.55.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.57.$", "$.56.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.58.$", "$.57.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.59.$", "$.58.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.60.$", "$.59.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.61.$", "$.60.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.62.$", "$.61.$");
FullscreenActivity.myTransposedLyrics[x] = FullscreenActivity.myTransposedLyrics[x].replace("$.50.$", "$.62.$");
}
}
}
}
}
public static String numberToKey(String key) {
// We need to decide which key the user likes the best for each one
// Convert the key number into either a sharp or natural first
// Then we swap sharps to flats if the user prefers these
for (int z=0; z<properchordsharpsnumsa.length; z++) {
key = key.replace(properchordsharpsnumsa[z],propersharpchords1a[z]);
}
for (int z=0; z<properchordsharpsnumsb.length; z++) {
key = key.replace(properchordsharpsnumsb[z],propersharpchords1b[z]);
}
for (int z=0; z<chordnaturalnumsa.length; z++) {
key = key.replace(chordnaturalnumsa[z],naturalchords1a[z]);
}
for (int z=0; z<chordnaturalnumsb.length; z++) {
key = key.replace(chordnaturalnumsb[z],naturalchords1b[z]);
}
if (key.equals("G#") && FullscreenActivity.prefChord_Aflat_Gsharp.equals("b")) {
key = "Ab";
} else if (key.equals("G#m") && FullscreenActivity.prefChord_Aflatm_Gsharpm.equals("b")) {
key = "Abm";
} else if (key.equals("A#") && FullscreenActivity.prefChord_Bflat_Asharp.equals("b")) {
key = "Bb";
} else if (key.equals("A#m") && FullscreenActivity.prefChord_Bflatm_Asharpm.equals("b")) {
key = "Bbm";
} else if (key.equals("C#") && FullscreenActivity.prefChord_Dflat_Csharp.equals("b")) {
key = "Db";
} else if (key.equals("C#m") && FullscreenActivity.prefChord_Dflatm_Csharpm.equals("b")) {
key = "Dbm";
} else if (key.equals("D#") && FullscreenActivity.prefChord_Eflat_Dsharp.equals("b")) {
key = "Eb";
} else if (key.equals("D#m") && FullscreenActivity.prefChord_Bflatm_Asharpm.equals("b")) {
key = "Ebm";
} else if (key.equals("F#") && FullscreenActivity.prefChord_Gflat_Fsharp.equals("b")) {
key = "Gb";
} else if (key.equals("F#m") && FullscreenActivity.prefChord_Gflatm_Fsharpm.equals("b")) {
key = "Gbm";
}
return key;
}
public static String numberToChord1(String line) {
// If we are forcing sharps or flats do that, otherwise use our key preferences
if (FullscreenActivity.switchsharpsflats) {
if (FullscreenActivity.transposeStyle.equals("flats")) {
line = useFlats1(line);
} else {
line = useSharps1(line);
}
} else {
if (usesflats) {
line = useFlats1(line);
} else {
line = useSharps1(line);
}
}
// Replace the naturals
line = useNaturals1(line);
return line;
}
public static String capoNumberToChord1(String line) {
if (capousesflats) {
line = useFlats1(line);
} else {
line = useSharps1(line);
}
// Replace the naturals
line = useNaturals1(line);
return line;
}
public static String numberToChord2(String line) {
// If we are forcing sharps or flats do that, otherwise use our key preferences
if (FullscreenActivity.switchsharpsflats) {
if (FullscreenActivity.transposeStyle.equals("flats")) {
line = useFlats2(line);
} else {
line = useSharps2(line);
}
} else {
if (usesflats) {
line = useFlats2(line);
} else {
line = useSharps2(line);
}
}
// Replace the naturals
line = useNaturals2(line);
return line;
}
public static String capoNumberToChord2(String line) {
if (capousesflats) {
line = useFlats2(line);
} else {
line = useSharps2(line);
}
// Replace the naturals
line = useNaturals2(line);
return line;
}
public static String numberToChord3(String line) {
// If we are forcing sharps or flats do that, otherwise use our key preferences
if (FullscreenActivity.switchsharpsflats) {
if (FullscreenActivity.transposeStyle.equals("flats")) {
line = useFlats3(line);
} else {
line = useSharps3(line);
}
} else {
if (usesflats) {
line = useFlats3(line);
} else {
line = useSharps3(line);
}
}
// Replace the naturals
line = useNaturals3(line);
return line;
}
public static String capoNumberToChord3(String line) {
if (capousesflats) {
line = useFlats3(line);
} else {
line = useSharps3(line);
}
// Replace the naturals
line = useNaturals3(line);
return line;
}
public static String numberToChord4(String line) {
// If we are forcing sharps or flats do that, otherwise use our key preferences
if (FullscreenActivity.switchsharpsflats) {
if (FullscreenActivity.transposeStyle.equals("flats")) {
line = useFlats4(line);
} else {
line = useSharps4(line);
}
} else {
if (usesflats) {
line = useFlats4(line);
} else {
line = useSharps4(line);
}
}
// Replace the naturals
line = useNaturals4(line);
return line;
}
public static String capoNumberToChord4(String line) {
if (capousesflats) {
line = useFlats4(line);
} else {
line = useSharps4(line);
}
// Replace the naturals
line = useNaturals4(line);
return line;
}
public static boolean keyUsesFlats(String testkey) {
boolean result;
result = (testkey.equals("Ab") && FullscreenActivity.prefChord_Aflat_Gsharp.equals("b")) ||
(testkey.equals("Bb") && FullscreenActivity.prefChord_Bflat_Asharp.equals("b")) ||
(testkey.equals("Db") && FullscreenActivity.prefChord_Dflat_Csharp.equals("b")) ||
(testkey.equals("Eb") && FullscreenActivity.prefChord_Eflat_Dsharp.equals("b")) ||
(testkey.equals("Gb") && FullscreenActivity.prefChord_Gflat_Fsharp.equals("b")) ||
(testkey.equals("Bbm") && FullscreenActivity.prefChord_Bflatm_Asharpm.equals("b")) ||
(testkey.equals("Dbm") && FullscreenActivity.prefChord_Dflatm_Csharpm.equals("b")) ||
(testkey.equals("Ebm") && FullscreenActivity.prefChord_Eflatm_Dsharpm.equals("b")) ||
(testkey.equals("Gbm") && FullscreenActivity.prefChord_Gflatm_Fsharpm.equals("b")) ||
testkey.equals("C") ||
testkey.equals("F") ||
testkey.equals("Dm") ||
testkey.equals("Gm") ||
testkey.equals("Cm");
return result;
}
public static String useFlats1(String line) {
for (int z=0; z<properchordflatsnumsa.length; z++) {
line = line.replace(properchordflatsnumsa[z],properflatchords1a[z]);
}
return line;
}
public static String useFlats2(String line) {
for (int z=0; z<properchordflatsnumsa.length; z++) {
line = line.replace(properchordflatsnumsa[z],properflatchords2[z]);
}
return line;
}
public static String useFlats3(String line) {
for (int z=0; z<properchordflatsnumsc.length; z++) {
line = line.replace(properchordflatsnumsc[z],properflatchords3c[z]);
}
for (int z=0; z<properchordflatsnumsb.length; z++) {
line = line.replace(properchordflatsnumsb[z],properflatchords3b[z]);
}
for (int z=0; z<properchordflatsnumsa.length; z++) {
line = line.replace(properchordflatsnumsa[z],properflatchords3a[z]);
}
return line;
}
public static String useFlats4(String line) {
for (int z=0; z<properchordflatsnumsa.length; z++) {
line = line.replace(properchordflatsnumsa[z],properflatchords4[z]);
}
return line;
}
public static String useSharps1(String line) {
for (int z=0; z<properchordsharpsnumsa.length; z++) {
line = line.replace(properchordsharpsnumsa[z],propersharpchords1a[z]);
}
return line;
}
public static String useSharps2(String line) {
for (int z=0; z<properchordsharpsnumsa.length; z++) {
line = line.replace(properchordsharpsnumsa[z],propersharpchords2[z]);
}
return line;
}
public static String useSharps3(String line) {
for (int z=0; z<properchordsharpsnumsc.length; z++) {
line = line.replace(properchordsharpsnumsc[z],propersharpchords3c[z]);
}
for (int z=0; z<properchordsharpsnumsb.length; z++) {
line = line.replace(properchordsharpsnumsb[z],propersharpchords3b[z]);
}
for (int z=0; z<properchordsharpsnumsa.length; z++) {
line = line.replace(properchordsharpsnumsa[z],propersharpchords3a[z]);
}
return line;
}
public static String useSharps4(String line) {
for (int z=0; z<properchordsharpsnumsa.length; z++) {
line = line.replace(properchordsharpsnumsa[z],propersharpchords4[z]);
}
return line;
}
public static String useNaturals1(String line) {
for (int z=0; z<chordnaturalnumsa.length; z++) {
line = line.replace(chordnaturalnumsa[z],naturalchords1a[z]);
}
return line;
}
public static String useNaturals2(String line) {
for (int z=0; z<chordnaturalnumsa.length; z++) {
line = line.replace(chordnaturalnumsa[z],naturalchords2[z]);
}
return line;
}
public static String useNaturals3(String line) {
for (int z=0; z<chordnaturalnumsc.length; z++) {
line = line.replace(chordnaturalnumsc[z],naturalchords3c[z]);
}
for (int z=0; z<chordnaturalnumsb.length; z++) {
line = line.replace(chordnaturalnumsb[z],naturalchords3b[z]);
}
for (int z=0; z<chordnaturalnumsa.length; z++) {
line = line.replace(chordnaturalnumsa[z],naturalchords3a[z]);
}
return line;
}
public static String useNaturals4(String line) {
for (int z=0; z<chordnaturalnumsa.length; z++) {
line = line.replace(chordnaturalnumsa[z],naturalchords4[z]);
}
return line;
}
public static String capoTranspose() {
int numtimes = Integer.parseInt(FullscreenActivity.mCapo);
// Get the capokey if it hasn't been set
if (FullscreenActivity.capokey==null && FullscreenActivity.mKey!=null) {
FullscreenActivity.capokey = keyToNumber(FullscreenActivity.mKey);
FullscreenActivity.capokey = transposeKey(FullscreenActivity.capokey,"-1",numtimes);
FullscreenActivity.capokey = numberToKey(FullscreenActivity.capokey);
// Decide if flats should be used
capousesflats = keyUsesFlats(FullscreenActivity.capokey);
}
// Now we change the chords into numbers
switch (FullscreenActivity.oldchordformat) {
default:
FullscreenActivity.temptranspChords = chordToNumber1(FullscreenActivity.temptranspChords);
break;
case "2":
FullscreenActivity.temptranspChords = chordToNumber2(FullscreenActivity.temptranspChords);
break;
case "3":
FullscreenActivity.temptranspChords = chordToNumber3(FullscreenActivity.temptranspChords);
break;
case "4":
FullscreenActivity.temptranspChords = chordToNumber4(FullscreenActivity.temptranspChords);
break;
}
// Try to do a sensible capo change.
// Do a for loop for each capo chord changing it by one each time until the desired fret change
for (int s = 0; s < numtimes; s++) {
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.1.$", "$.0.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.2.$", "$.1.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.3.$", "$.2.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.4.$", "$.3.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.5.$", "$.4.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.6.$", "$.5.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.7.$", "$.6.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.8.$", "$.7.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.9.$", "$.8.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.10.$", "$.9.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.11.$", "$.10.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.12.$", "$.11.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.0.$", "$.12.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.31.$", "$.30.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.32.$", "$.31.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.33.$", "$.32.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.34.$", "$.33.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.35.$", "$.34.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.36.$", "$.35.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.37.$", "$.36.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.38.$", "$.37.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.39.$", "$.38.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.40.$", "$.39.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.41.$", "$.40.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.42.$", "$.41.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.30.$", "$.42.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.51.$", "$.50.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.52.$", "$.51.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.53.$", "$.52.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.54.$", "$.53.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.55.$", "$.54.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.56.$", "$.55.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.57.$", "$.56.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.58.$", "$.57.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.59.$", "$.58.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.60.$", "$.59.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.61.$", "$.60.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.62.$", "$.61.$");
FullscreenActivity.temptranspChords = FullscreenActivity.temptranspChords.replace("$.50.$", "$.62.$");
}
// Now convert the numbers back to the appropriate chords
switch (FullscreenActivity.oldchordformat) {
default:
FullscreenActivity.temptranspChords = capoNumberToChord1(FullscreenActivity.temptranspChords);
break;
case "2":
FullscreenActivity.temptranspChords = capoNumberToChord2(FullscreenActivity.temptranspChords);
break;
case "3":
FullscreenActivity.temptranspChords = capoNumberToChord3(FullscreenActivity.temptranspChords);
break;
case "4":
FullscreenActivity.temptranspChords = capoNumberToChord4(FullscreenActivity.temptranspChords);
break;
}
return FullscreenActivity.temptranspChords;
}
public static void checkChordFormat() {
FullscreenActivity.transposedLyrics = null;
FullscreenActivity.transposedLyrics = "";
FullscreenActivity.myTransposedLyrics = null;
FullscreenActivity.myTransposedLyrics = FullscreenActivity.mLyrics.split("\n");
FullscreenActivity.oldchordformat = FullscreenActivity.chordFormat;
boolean contains_es_is = false;
boolean contains_H = false;
boolean contains_do = false;
boolean contains_nash = false;
// Check if the user is using the same chord format as the song
// Go through the chord lines and look for clues
for (int x = 0; x < FullscreenActivity.myTransposedLyrics.length; x++) {
if (FullscreenActivity.myTransposedLyrics[x].indexOf(".")==0) {
// Chord line
if (FullscreenActivity.myTransposedLyrics[x].contains("es") || FullscreenActivity.myTransposedLyrics[x].contains("is") ||
FullscreenActivity.myTransposedLyrics[x].contains(" a") || FullscreenActivity.myTransposedLyrics[x].contains(".a") ||
FullscreenActivity.myTransposedLyrics[x].contains(" b") || FullscreenActivity.myTransposedLyrics[x].contains(".b") ||
FullscreenActivity.myTransposedLyrics[x].contains(" h") || FullscreenActivity.myTransposedLyrics[x].contains(".h") ||
FullscreenActivity.myTransposedLyrics[x].contains(" c") || FullscreenActivity.myTransposedLyrics[x].contains(".c") ||
FullscreenActivity.myTransposedLyrics[x].contains(" d") || FullscreenActivity.myTransposedLyrics[x].contains(".d") ||
FullscreenActivity.myTransposedLyrics[x].contains(" e") || FullscreenActivity.myTransposedLyrics[x].contains(".e") ||
FullscreenActivity.myTransposedLyrics[x].contains(" f") || FullscreenActivity.myTransposedLyrics[x].contains(".f") ||
FullscreenActivity.myTransposedLyrics[x].contains(" g") || FullscreenActivity.myTransposedLyrics[x].contains(".g")) {
contains_es_is = true;
} else if (FullscreenActivity.myTransposedLyrics[x].contains("H")) {
contains_H = true;
} else if (FullscreenActivity.myTransposedLyrics[x].contains("Do") || FullscreenActivity.myTransposedLyrics[x].contains("Re") || FullscreenActivity.myTransposedLyrics[x].contains("Ré") ||
FullscreenActivity.myTransposedLyrics[x].contains("Me") || FullscreenActivity.myTransposedLyrics[x].contains("Fa") ||
FullscreenActivity.myTransposedLyrics[x].contains("Sol") || FullscreenActivity.myTransposedLyrics[x].contains("La") ||
FullscreenActivity.myTransposedLyrics[x].contains("Si")) {
contains_do = true;
} else if (FullscreenActivity.myTransposedLyrics[x].contains(".2") || FullscreenActivity.myTransposedLyrics[x].contains(" 2") ||
FullscreenActivity.myTransposedLyrics[x].contains(".3") || FullscreenActivity.myTransposedLyrics[x].contains(" 3") ||
FullscreenActivity.myTransposedLyrics[x].contains(".4") || FullscreenActivity.myTransposedLyrics[x].contains(" 4") ||
FullscreenActivity.myTransposedLyrics[x].contains(".5") || FullscreenActivity.myTransposedLyrics[x].contains(" 5") ||
FullscreenActivity.myTransposedLyrics[x].contains(".6") || FullscreenActivity.myTransposedLyrics[x].contains(" 6") ||
FullscreenActivity.myTransposedLyrics[x].contains(".7") || FullscreenActivity.myTransposedLyrics[x].contains(" 7")) {
contains_nash = true;
}
}
}
//int detected = 0;
// Set the chord style detected
if (contains_do && FullscreenActivity.alwaysPreferredChordFormat.equals("N")) {
FullscreenActivity.oldchordformat="4";
//detected = 3;
} else if (contains_H && !contains_es_is && FullscreenActivity.alwaysPreferredChordFormat.equals("N")) {
FullscreenActivity.oldchordformat="2";
//detected = 1;
} else if (contains_H || contains_es_is && FullscreenActivity.alwaysPreferredChordFormat.equals("N")) {
FullscreenActivity.oldchordformat="3";
//detected = 2;
} else if (contains_nash && FullscreenActivity.alwaysPreferredChordFormat.equals("N")) {
FullscreenActivity.oldchordformat="5";
//detected = 4;
} else if (FullscreenActivity.alwaysPreferredChordFormat.equals("N")){
FullscreenActivity.oldchordformat="1";
//detected = 0;
}
// Ok so the user chord format may not quite match the song - it might though!
}
}