Substituir caracteres num JTextArea

Srs, boa tarde. tudo blz ?

Gostaria de pedir uma ajuda de vcs, se for possivel, abaixo mostro uma parte de um código fornecido pelo instrutor RoinujNosde a algum tempo, mas como tive dificuldae na epoca para coloca-lo em meu projeto, resolvi adiar.

Hoje, ao voltar ao projeto, resolvi tentar de novo, o programa esta funcionando muito bem para Tons musicais de A,B,C,D,E,F,G.

No programa o usuario entra com o tom atual da musica em uma caixa de texto (txtTomAtual) e em outra caixa de texto (txtTomNovo), insere o novo tom;

Por exemplo, tenho uma musica em LA(A) e quero ela em SI(B), funciona muito bem para esta tonalidades e outras.

Qual é o problema ? Quando tenho uma musica em um tom “# ou b” (sustenido ou bemol) o programa da erro, pelo fato dele só aceitar um caracter como entrada,

exemplo
A para B - ok funciona

(A# para D#) ou (Ab para B) - da erro, pois a entrada (txtTomAtual) e (txtTomNovo) só aceitam 1 caracter e o código foi feito para isso.

Abaixo segue uma parte do código.

	 String tomAtual = txtTomAtual.getText();
		String tomNovo = txtTomNovo.getText();
		String texto = txtArea.getText(); // pego o texto da jTextArea
		String[] linhas = texto.split("\n");
		for (int i = 0; i < linhas.length; i += 2) { // leio somente a linha das cifras
			int indice = 0;
			StringBuilder sb = new StringBuilder();
			while ((indice < linhas[i].length())) { // leio caracteres a caractertes
				char nota = linhas[i].charAt(indice); //  caracter A.B,C,D,E.F.G, A#, 
				switch (tomAtual + tomNovo) { /
				case "AB": // tom de A quero transporta-la para B
					if (nota == 'A') { // caractere for  A, eu substituo por B
						sb.append("B");
					} else if (nota == 'B') { //  caractere for um B  substituo por C#
						sb.append("C#");
					} else if (nota == 'C') {
						sb.append("D");
					} else if (nota == 'D') {
						sb.append("E");
					} else if (nota == 'E') {
						sb.append("F#");
					} else if (nota == 'F') {
						sb.append("G");
					} else if (nota == 'G') {
						sb.append("A");
                                                   "
                                                Continua ....



					} else {
						//caso seja espaço em branco ou outro qualquer
						sb.append(nota);
					}
					break;
				default:
		               JOptionPane.showMessageDialog(null, "Novo tom, so aceita 
                           A,B,C,D,E,F,G ou  A#,C#,D#,E,F#,G#");
				} // Fim Suitch
				indice++; // leio o próximo caractere na linha
			} // Fim while
			txtArea.setText(txtArea.getText().replace(linhas[i], sb.toString()));
		} // Fim For

Obrigado.