Beispiel #1
0
        eMode GetMode(string Text)
        {
            if (Setting.IsSetting(Text))
            {
                return(eMode.Setting);
            }
            if (Timbre.IsTimbre(Text))
            {
                return(eMode.Timbre);
            }
            if (Macro.IsMacro(Text))
            {
                return(eMode.Macro);
            }
            if (Track.IsTrack(Text))
            {
                return(eMode.Track);
            }

            var c = new Cursor(Text);

            c.SkipSpace();
            return((c.IsTerm)? eMode.None: eMode.Error);
        }
Beispiel #2
0
        bool Import(string[] aLine)
        {
            Console.WriteLine("Importing...");

            bool Result = true;

            for (int oLine = 0; oLine < aLine.Length && Result; ++oLine)
            {
                switch ((int)GetMode(aLine[oLine]))
                {
                case (int)eMode.None: {
                    break;
                }

                case (int)eMode.Error: {
                    Console.WriteLine($"!! Error !! : Syntax error");
                    Console.WriteLine($"Line {oLine+1}");
                    Result = false;
                    break;
                }

                case (int)eMode.Setting: {
                    if (TimbrePhase == Timbre.ePhase.None)
                    {
                        var Kind = Setting.eKind.Error;
                        if (mSetting.Import(out Kind, aLine[oLine], oLine))
                        {
                            switch ((int)Kind)
                            {
                            case (int)Setting.eKind.Error: {
                                Result = false;
                                break;
                            }

                            case (int)Setting.eKind.OCTAVE_UPDOWN:
                            case (int)Setting.eKind.VOLUME_UPDOWN: {
                                break;
                            }
                            }
                        }
                        else
                        {
                            Result = false;
                        }
                    }
                    else
                    {
                        Console.WriteLine($"!! Error !! : Syntax error");
                        Console.WriteLine($"Line {oLine+1}");
                        Result = false;
                    }
                    break;
                }

                case (int)eMode.Timbre: {
                    if (mTimbre.Import(out TimbrePhase, aLine[oLine], oLine))
                    {
                        switch ((int)TimbrePhase)
                        {
                        case (int)Timbre.ePhase.None: {
                            Result = false;
                            break;
                        }

                        case (int)Timbre.ePhase.Number:
                        case (int)Timbre.ePhase.FB:
                        case (int)Timbre.ePhase.OP1: {
                            break;
                        }

                        case (int)Timbre.ePhase.OP2: {
                            mDelivery.TimbreLibrary.Add(mTimbre.Params.Number, mTimbre);

                            TimbrePhase = Timbre.ePhase.None;
                            mTimbre     = new Timbre();
                            break;
                        }
                        }
                    }
                    else
                    {
                        Result = false;
                    }
                    break;
                }

                case (int)eMode.Macro: {
                    if (TimbrePhase == Timbre.ePhase.None)
                    {
                        var v = new Macro();
                        if (v.Import(aLine[oLine], oLine))
                        {
                            maMacro.Add(v);
                        }
                        else
                        {
                            Result = false;
                        }
                    }
                    else
                    {
                        Console.WriteLine($"!! Error !! : Syntax error");
                        Console.WriteLine($"Line {oLine+1}");
                        Result = false;
                    }
                    break;
                }

                case (int)eMode.Track: {
                    if (TimbrePhase == Timbre.ePhase.None)
                    {
                        var v = new Track();
                        if (v.Import(aLine[oLine], oLine))
                        {
                            Console.Write($"{v.Channel}");
                            maTrack.Add(v.Channel, v);
                        }
                        else
                        {
                            Result = false;
                        }
                    }
                    else
                    {
                        Console.WriteLine($"!! Error !! : Syntax error");
                        Console.WriteLine($"Line {oLine+1}");
                        Result = false;
                    }
                    break;
                }
                }
            }
            Console.WriteLine("");
            return(Result);
        }