Example #1
0
 private static string getNoteString(int note)
 {
     string[] jp      = new string[] { "ハ", "嬰ハ", "ニ", "変ホ", "ホ", "ヘ", "嬰へ", "ト", "嬰ト", "イ", "変ロ", "ロ" };
     string[] jpfixed = new string[] { "ド", "ド#", "レ", "ミb", "ミ", "ファ", "ファ#", "ソ", "ソ#", "ラ", "シb", "シ", };
     string[] de      = { "C", "Cis", "D", "Es", "E", "F", "Fis", "G", "Gis", "A", "Hes", "H" };
     if (AppManager.editorConfig != null)
     {
         int odd   = note % 12;
         int order = (note - odd) / 12 - 2;
         NoteNumberExpressionType exp_type = AppManager.editorConfig.PropertyWindowStatus.LastUsedNoteNumberExpression;
         if (exp_type == NoteNumberExpressionType.Numeric)
         {
             return(note + "");
         }
         else if (exp_type == NoteNumberExpressionType.International)
         {
             return(VsqNote.getNoteString(note));
         }
         else if (exp_type == NoteNumberExpressionType.Japanese)
         {
             return(jp[odd] + order);
         }
         else if (exp_type == NoteNumberExpressionType.JapaneseFixedDo)
         {
             return(jpfixed[odd] + order);
         }
         else if (exp_type == NoteNumberExpressionType.Deutsche)
         {
             return(de[odd] + order);
         }
     }
     else
     {
         return(VsqNote.getNoteString(note));
     }
     return("");
 }
Example #2
0
        public static int parse(string value)
        {
            if (value.Equals(""))
            {
                return(60);
            }

            value = value.ToUpper();
            try {
                int draft_note_number = int.Parse(value);
                if (AppManager.editorConfig != null)
                {
                    AppManager.editorConfig.PropertyWindowStatus.LastUsedNoteNumberExpression = NoteNumberExpressionType.Numeric;
                }
                return(draft_note_number);
            } catch (Exception ex) {
            }

            int  scale   = 3;
            int  offset  = 0;
            bool doubled = false;
            int  odd     = 0;
            bool first   = true;
            NoteNumberExpressionType exp_type = NoteNumberExpressionType.International;

            while (true)
            {
                int trim = 1;

                if (value.StartsWith("AS"))
                {
                    offset   = -1;
                    odd      = 9;
                    trim     = 2;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("ASAS") || value.StartsWith("ASES"))
                {
                    offset   = -1;
                    doubled  = true;
                    odd      = 9;
                    trim     = 4;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("ISIS"))
                {
                    offset   = 1;
                    doubled  = true;
                    trim     = 4;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("IS"))
                {
                    offset   = 1;
                    trim     = 2;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("ESES"))
                {
                    if (first)
                    {
                        odd = 4;
                    }
                    offset   = -1;
                    doubled  = true;
                    trim     = 4;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("ES"))
                {
                    if (first)
                    {
                        offset = -1;
                        odd    = 4;
                    }
                    else
                    {
                        offset = -1;
                    }
                    trim     = 2;
                    exp_type = NoteNumberExpressionType.Deutsche;
                }
                else if (value.StartsWith("嬰"))
                {
                    offset   = 1;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("変"))
                {
                    offset   = -1;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("重"))
                {
                    doubled  = true;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("C"))
                {
                    odd      = 0;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("ド") || value.StartsWith("ど"))
                {
                    odd      = 0;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("は") || value.StartsWith("ハ") || value.StartsWith("ハ"))
                {
                    odd      = 0;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("ド"))
                {
                    odd      = 0;
                    trim     = 2;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("D"))
                {
                    odd      = 2;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("レ") || value.StartsWith("れ") || value.StartsWith("レ"))
                {
                    odd      = 2;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("に") || value.StartsWith("ニ") || value.StartsWith("ニ"))
                {
                    odd      = 2;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("E"))
                {
                    odd      = 4;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("ミ") || value.StartsWith("み") || value.StartsWith("ミ"))
                {
                    odd      = 4;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("ほ") || value.StartsWith("ホ") || value.StartsWith("ホ"))
                {
                    odd      = 4;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("F"))
                {
                    odd      = 5;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("ヘ") || value.StartsWith("へ") || value.StartsWith("ヘ"))
                {
                    odd      = 5;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("ファ") || value.StartsWith("ふぁ") || value.StartsWith("ファ"))
                {
                    odd      = 5;
                    trim     = 2;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("G"))
                {
                    odd      = 7;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("ソ") || value.StartsWith("そ") || value.StartsWith("ソ"))
                {
                    odd      = 7;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("と") || value.StartsWith("ト") || value.StartsWith("ト"))
                {
                    odd      = 7;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("A"))
                {
                    odd      = 9;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("ラ") || value.StartsWith("ら") || value.StartsWith("ラ"))
                {
                    odd      = 9;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("い") || value.StartsWith("イ") || value.StartsWith("イ"))
                {
                    odd      = 9;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("H"))
                {
                    odd      = 11;
                    exp_type = NoteNumberExpressionType.International;
                }
                else if (value.StartsWith("シ") || value.StartsWith("し") || value.StartsWith("シ"))
                {
                    odd      = 11;
                    exp_type = NoteNumberExpressionType.JapaneseFixedDo;
                }
                else if (value.StartsWith("ろ") || value.StartsWith("ロ") || value.StartsWith("ロ"))
                {
                    odd      = 11;
                    exp_type = NoteNumberExpressionType.Japanese;
                }
                else if (value.StartsWith("B"))
                {
                    if (first)
                    {
                        odd      = 11;
                        exp_type = NoteNumberExpressionType.International;
                    }
                    else
                    {
                        offset = -1;
                    }
                }
                else if (value.StartsWith("#") || value.StartsWith("♯") || value.StartsWith("#"))
                {
                    offset = 1;
                }
                else if (value.StartsWith("♭"))
                {
                    offset = -1;
                }
                first = false;
                int len = value.Length;
                if (len == trim)
                {
                    break;
                }

                value = value.Substring(trim);
                int draft_scale;
                try {
                    draft_scale = int.Parse(value);
                    scale       = draft_scale;
                    break;
                } catch (Exception ex) {
                }
            }
            if (AppManager.editorConfig != null)
            {
                if (exp_type == NoteNumberExpressionType.International &&
                    AppManager.editorConfig.PropertyWindowStatus.LastUsedNoteNumberExpression == NoteNumberExpressionType.Deutsche)
                {
                    // do nothing
                }
                else
                {
                    AppManager.editorConfig.PropertyWindowStatus.LastUsedNoteNumberExpression = exp_type;
                }
            }
            return(12 * scale + 2 * 12 + odd + offset * (doubled ? 2 : 1));
        }