Ejemplo n.º 1
0
        private void DealNums()
        {
            int i = int.Parse(str);

            str = "";
            if (arrange)
            {
                chordArr.Add(i);
            }
            if (i == 0)
            {
                return;        //休止符暂不支持
            }
            int pitch = PitchTool.Pitch8_to_12(i - 1);

            note.scale = scale;
            note.pitch = (Pitch)(pitchShift + pitch);
            pitchShift = 0;

            if (multiNote)
            {
                noteMulti.Append(); // 往多音音符里 添加新的单音
            }
            else//!multiNote
            {
                chord_Append();
            }
        }
Ejemplo n.º 2
0
 void Start()
 {
     loader           = FindObjectOfType <ScoreLoader>();
     gen              = FindObjectOfType <ScoreGen>();
     grids[0].onClick = (i) => PlayPitch(PitchTool.Pitch8_to_12(i));
     grids[1].onClick = (i) => PlayPitch(PitchTool.Pitch5_to_12(i));
     this.AddInput(Input, -1, false);
 }
Ejemplo n.º 3
0
        private void ReadParaChar(char c)
        {
            switch (c)
            {
            case 'B':     // 如果谱是已经降了的,升回来到原调
                if (pitchParaShifted)
                {
                    pitchParaShift++;
                }
                ppShifts.Add(new PPShift(notesTotal.Count, -1));
                break;

            case 'S':     // 相反
                if (pitchParaShifted)
                {
                    pitchParaShift--;
                }
                ppShifts.Add(new PPShift(notesTotal.Count, 1));
                break;

            case '@':
                chordMode = true;
                break;

            case '_':     // 时值减半 Half Value
                if (lyricMode)
                {
                    lyric.Append(' ');
                }
                else
                {
                    value *= 2;
                }
                break;

            case ' ':     // Beat
                if (lyricMode)
                {
                    if (lyric.multiChars)
                    {
                        lyric.NewWord();
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    if (notes.Count == 0)
                    {
                        break;
                    }
                    beat.notes = notes;
                    notes      = new List <NoteVal>();

                    beats.Add(beat);
                    beat = new Beat();
                }
                break;

            case ',':     // Bar
                if (notes.Count == 0)
                {
                    break;
                }

                ReadParaChar(' ');

                bar.beats = beats;
                beats     = new List <Beat>();

                bars.Add(bar);
                bar = new Bar();
                break;

            case '.':
                break;

            case '-':
                break;

            case '(':     // Flat
                scale--;
                break;

            case ')':     //
                scale++;
                break;

            case '[':     // Sharp
                scale++;
                break;

            case ']':     //
                scale--;
                break;

            case '{':     // Link
                var line = new LinkLine(notesTotal.Count, 0);
                linesStack.Push(line);
                lines.Add(line);
                break;

            case '}':     //
                linesStack.Pop().end = notesTotal.Count - 1;
                break;

            case 'b':
                pitch = -1;
                break;

            case '#':
                pitch = 1;
                break;

            case '0':
                break;    //休止符暂不支持

            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
                int i = PitchTool.Pitch8_to_12(int.Parse(c.ToString()) - 1);
                var n = new NoteVal(scale, (Pitch)(pitch + i), value);
                n += pitchParaShift;
                notes.Add(n);
                notesTotal.Add(n);

                pitch = 0;
                value = valueDivideNum;
                break;

            case '\r':
            case '\n':     // end lyric
                lyricMode        = false;
                lyric.multiChars = false;
                break;

            case '\\':     // start lyric
                lyricMode = true;
                break;

            case '*':
                if (lyricMode)
                {
                    lyric.multiChars = true;
                    lyric.NewWord();
                }
                else
                {
                    goto default;
                }
                break;

            default:
                if (lyricMode)
                {
                    lyric.Append(c);
                }
                else
                {
                    throw new Exception("undef Para Character " + c + ".");
                }
                break;
            }
        }