1. // uncomment me later
  2. //package net.jnotes;
  3.  
  4. import java.util.*;
  5.  
  6.    
  7. public class TuneParser {
  8.    
  9.     public TuneParser(){
  10.         // Delete this line
  11.         System.out.println(decodeNote("B8Q+"));
  12.     }
  13.  
  14.     // Delete this line
  15.     public static void main(String [ ] args)
  16.     {
  17.         TuneParser tp=new TuneParser();
  18.     }
  19.            
  20.     public int decodeNote(String note){
  21.        
  22.         int decode = -1;
  23.        
  24.         List<String[]> rowList = new ArrayList<String[]>();
  25.        
  26.         rowList.add(new String[] { "C", "0", "0","1" });
  27.         rowList.add(new String[] { "C", "1", "12","13" });
  28.         rowList.add(new String[] { "C", "2", "24","25" });
  29.             rowList.add(new String[] { "C", "3", "36","37" });
  30.         rowList.add(new String[] { "C", "4", "48","49" });
  31.         rowList.add(new String[] { "C", "5", "60","61" });
  32.         rowList.add(new String[] { "C", "6", "72","73" });
  33.         rowList.add(new String[] { "C", "7", "84","85" });
  34.         rowList.add(new String[] { "C", "8", "96","97" });
  35.         rowList.add(new String[] { "C", "9", "108","109" });
  36.        
  37.         rowList.add(new String[] { "D", "0", "2","2" });
  38.         rowList.add(new String[] { "D", "1", "14","15" });
  39.         rowList.add(new String[] { "D", "2", "26","27" });
  40.             rowList.add(new String[] { "C", "3", "38","39" });
  41.         rowList.add(new String[] { "D", "4", "50","51" });
  42.         rowList.add(new String[] { "D", "5", "62","63" });
  43.         rowList.add(new String[] { "D", "6", "74","75" });
  44.         rowList.add(new String[] { "D", "7", "86","87" });
  45.         rowList.add(new String[] { "D", "8", "98","99" });
  46.         rowList.add(new String[] { "D", "9", "110","111" });
  47.        
  48.         rowList.add(new String[] { "E", "0", "4","4" });
  49.         rowList.add(new String[] { "E", "1", "16","16" });
  50.         rowList.add(new String[] { "E", "2", "28","28" });
  51.             rowList.add(new String[] { "E", "3", "40","40" });
  52.         rowList.add(new String[] { "E", "4", "52","52" });
  53.         rowList.add(new String[] { "E", "5", "64","64" });
  54.         rowList.add(new String[] { "E", "6", "76","76" });
  55.         rowList.add(new String[] { "E", "7", "88","88" });
  56.         rowList.add(new String[] { "E", "8", "100","100" });
  57.         rowList.add(new String[] { "E", "9", "112","112" });
  58.  
  59.         rowList.add(new String[] { "F", "0", "5","6" });
  60.         rowList.add(new String[] { "F", "1", "17","18" });
  61.         rowList.add(new String[] { "F", "2", "29","30" });
  62.             rowList.add(new String[] { "F", "3", "41","42" });
  63.         rowList.add(new String[] { "F", "4", "53","54" });
  64.         rowList.add(new String[] { "F", "5", "65","66" });
  65.         rowList.add(new String[] { "F", "6", "77","78" });
  66.         rowList.add(new String[] { "F", "7", "89","90" });
  67.         rowList.add(new String[] { "F", "8", "101","102" });
  68.         rowList.add(new String[] { "F", "9", "113","114" });
  69.        
  70.         rowList.add(new String[] { "G", "0", "7","8" });
  71.         rowList.add(new String[] { "G", "1", "19","20" });
  72.         rowList.add(new String[] { "G", "2", "31","32" });
  73.             rowList.add(new String[] { "G", "3", "43","44" });
  74.         rowList.add(new String[] { "G", "4", "55","56" });
  75.         rowList.add(new String[] { "G", "5", "67","68" });
  76.         rowList.add(new String[] { "G", "6", "79","80" });
  77.         rowList.add(new String[] { "G", "7", "91","92" });
  78.         rowList.add(new String[] { "G", "8", "103","104" });
  79.         rowList.add(new String[] { "G", "9", "115","116" });
  80.        
  81.         rowList.add(new String[] { "A", "0", "9","10" });
  82.         rowList.add(new String[] { "A", "1", "21","22" });
  83.         rowList.add(new String[] { "A", "2", "33","34" });
  84.             rowList.add(new String[] { "A", "3", "45","46" });
  85.         rowList.add(new String[] { "A", "4", "57","58" });
  86.         rowList.add(new String[] { "A", "5", "69","70" });
  87.         rowList.add(new String[] { "A", "6", "81","82" });
  88.         rowList.add(new String[] { "A", "7", "93","94" });
  89.         rowList.add(new String[] { "A", "8", "105","106" });
  90.         rowList.add(new String[] { "A", "9", "117","118" });
  91.        
  92.         rowList.add(new String[] { "B", "0", "11","11" });
  93.         rowList.add(new String[] { "B", "1", "23","23" });
  94.         rowList.add(new String[] { "B", "2", "35","35" });
  95.             rowList.add(new String[] { "B", "3", "47","47" });
  96.         rowList.add(new String[] { "B", "4", "59","59" });
  97.         rowList.add(new String[] { "B", "5", "71","71" });
  98.         rowList.add(new String[] { "B", "6", "83","83" });
  99.         rowList.add(new String[] { "B", "7", "95","95" });
  100.         rowList.add(new String[] { "B", "8", "107","107" });
  101.         rowList.add(new String[] { "B", "9", "119","119" });
  102.        
  103.         for (String[] row : rowList) {
  104.             if ( row[0].equals(note.substring(0,1)) && row[1].equals(note.substring(1,2)) ) {
  105.                 if ( note.substring(3,4).equals("-")) {
  106.                     decode=Integer.parseInt(row[2]);
  107.                 } else if ( note.substring(3,4).equals("+")) {
  108.                     decode=Integer.parseInt(row[3]);
  109.                 }
  110.             }
  111.            
  112.         }
  113.  
  114.     return decode;                 
  115.     }
  116.    
  117.     public int decodeDuration(String duration){
  118.        
  119.         int decode = 0;
  120.        
  121.         switch(duration){
  122.            
  123.             case "D":
  124.                 return 2;
  125.        
  126.             case "S":
  127.                 return 4;
  128.            
  129.             case "Q":
  130.                 return 8;
  131.                
  132.             case "C":
  133.                 return 16;
  134.                
  135.             case "M":
  136.                 return 32;
  137.                
  138.             case "B":
  139.                 return 64;
  140.        
  141.         }
  142.  
  143.         return decode;
  144.        
  145.     }  
  146. }