Exemple #1
0
        private void MetaData()
        {
            var anyMeta = false;

            while (_sy == AlphaTexSymbols.MetaCommand)
            {
                var syData = _syData.ToString().ToLower();
                if (syData == "title")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Title = _syData.ToString();
                    }
                    else
                    {
                        Error("title", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "subtitle")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.SubTitle = _syData.ToString();
                    }
                    else
                    {
                        Error("subtitle", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "artist")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Artist = _syData.ToString();
                    }
                    else
                    {
                        Error("artist", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "album")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Album = _syData.ToString();
                    }
                    else
                    {
                        Error("album", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "words")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Words = _syData.ToString();
                    }
                    else
                    {
                        Error("words", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "music")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Music = _syData.ToString();
                    }
                    else
                    {
                        Error("music", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "copyright")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Copyright = _syData.ToString();
                    }
                    else
                    {
                        Error("copyright", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "tempo")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        _score.Tempo = (int)_syData;
                    }
                    else
                    {
                        Error("tempo", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "capo")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        _track.Capo = (int)_syData;
                    }
                    else
                    {
                        Error("capo", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "tuning")
                {
                    NewSy();
                    switch (_sy)
                    {
                    case AlphaTexSymbols.String:
                        var text = _syData.ToString().ToLower();
                        if (text == "piano" || text == "none" || text == "voice")
                        {
                            // clear tuning
                            _track.Tuning = new int[0];
                        }
                        else
                        {
                            Error("tuning", AlphaTexSymbols.Tuning);
                        }
                        NewSy();
                        break;

                    case AlphaTexSymbols.Tuning:
                        var tuning = new FastList <int>();
                        do
                        {
                            var t = (TuningParseResult)_syData;
                            tuning.Add(t.RealValue);
                            NewSy();
                        } while (_sy == AlphaTexSymbols.Tuning);

                        _track.Tuning = tuning.ToArray();
                        break;

                    default:
                        Error("tuning", AlphaTexSymbols.Tuning);
                        break;
                    }
                    anyMeta = true;
                }
                else if (syData == "instrument")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        var instrument = (int)(_syData);
                        if (instrument >= 0 && instrument <= 128)
                        {
                            _track.PlaybackInfo.Program = (int)_syData;
                        }
                        else
                        {
                            Error("instrument", AlphaTexSymbols.Number, false);
                        }
                    }
                    else if (_sy == AlphaTexSymbols.String) // Name
                    {
                        var instrumentName = _syData.ToString().ToLower();
                        _track.PlaybackInfo.Program = GeneralMidi.GetValue(instrumentName);
                    }
                    else
                    {
                        Error("instrument", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (syData == "lyrics")
                {
                    NewSy();

                    var lyrics = new Lyrics();
                    lyrics.StartBar = 0;
                    lyrics.Text     = "";

                    if (_sy == AlphaTexSymbols.Number) // Name
                    {
                        lyrics.StartBar = (int)_syData;
                        NewSy();
                    }

                    if (_sy == AlphaTexSymbols.String)
                    {
                        lyrics.Text = (string)_syData;
                        NewSy();
                    }
                    else
                    {
                        Error("lyrics", AlphaTexSymbols.String);
                    }

                    _lyrics.Add(lyrics);

                    anyMeta = true;
                }
                else if (anyMeta)
                {
                    Error("metaDataTags", AlphaTexSymbols.String, false);
                }
                else
                {
                    // fall forward to bar meta if unknown score meta was found
                    break;
                }
            }

            if (anyMeta)
            {
                if (_sy != AlphaTexSymbols.Dot)
                {
                    Error("song", AlphaTexSymbols.Dot);
                }
                NewSy();
            }
            else if (_sy == AlphaTexSymbols.Dot)
            {
                NewSy();
            }
        }
Exemple #2
0
        public static string FingerToString(Settings settings, Beat beat, Fingers finger, bool leftHand)
        {
            if (settings.ForcePianoFingering || GeneralMidi.IsPiano(beat.Voice.Bar.Staff.Track.PlaybackInfo.Program))
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return(null);

                case Fingers.Thumb:
                    return("1");

                case Fingers.IndexFinger:
                    return("2");

                case Fingers.MiddleFinger:
                    return("3");

                case Fingers.AnnularFinger:
                    return("4");

                case Fingers.LittleFinger:
                    return("5");

                default:
                    return(null);
                }
            }
            else if (leftHand)
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return("0");

                case Fingers.Thumb:
                    return("T");

                case Fingers.IndexFinger:
                    return("1");

                case Fingers.MiddleFinger:
                    return("2");

                case Fingers.AnnularFinger:
                    return("3");

                case Fingers.LittleFinger:
                    return("4");

                default:
                    return(null);
                }
            }
            else
            {
                switch (finger)
                {
                case Fingers.Unknown:
                case Fingers.NoOrDead:
                    return(null);

                case Fingers.Thumb:
                    return("p");

                case Fingers.IndexFinger:
                    return("i");

                case Fingers.MiddleFinger:
                    return("m");

                case Fingers.AnnularFinger:
                    return("a");

                case Fingers.LittleFinger:
                    return("c");

                default:
                    return(null);
                }
            }
        }
Exemple #3
0
        private void MetaData()
        {
            var anyMeta = false;

            while (_sy == AlphaTexSymbols.MetaCommand)
            {
                if (_syData == "title")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Title = _syData.ToString();
                    }
                    else
                    {
                        Error("title", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "subtitle")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.SubTitle = _syData.ToString();
                    }
                    else
                    {
                        Error("subtitle", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "artist")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Artist = _syData.ToString();
                    }
                    else
                    {
                        Error("artist", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "album")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Album = _syData.ToString();
                    }
                    else
                    {
                        Error("album", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "words")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Words = _syData.ToString();
                    }
                    else
                    {
                        Error("words", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "music")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Music = _syData.ToString();
                    }
                    else
                    {
                        Error("music", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "copyright")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.String)
                    {
                        _score.Copyright = _syData.ToString();
                    }
                    else
                    {
                        Error("copyright", AlphaTexSymbols.String);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "tempo")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        _score.Tempo = (int)_syData;
                    }
                    else
                    {
                        Error("tempo", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "capo")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        _track.Capo = (int)_syData;
                    }
                    else
                    {
                        Error("capo", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else if (_syData == "tuning")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Tuning) // we require at least one tuning
                    {
                        var tuning = new FastList <int>();
                        do
                        {
                            tuning.Add(ParseTuning(_syData.ToString()));
                            NewSy();
                        } while (_sy == AlphaTexSymbols.Tuning);
                        _track.Tuning = tuning.ToArray();
                    }
                    else
                    {
                        Error("tuning", AlphaTexSymbols.Tuning);
                    }
                    anyMeta = true;
                }
                else if (_syData == "instrument")
                {
                    NewSy();
                    if (_sy == AlphaTexSymbols.Number)
                    {
                        var instrument = (int)(_syData);
                        if (instrument >= 0 && instrument <= 128)
                        {
                            _track.PlaybackInfo.Program = (int)_syData;
                        }
                        else
                        {
                            Error("instrument", AlphaTexSymbols.Number, false);
                        }
                    }
                    else if (_sy == AlphaTexSymbols.String) // Name
                    {
                        var instrumentName = _syData.ToString();
                        _track.PlaybackInfo.Program = GeneralMidi.GetValue(instrumentName);
                    }
                    else
                    {
                        Error("instrument", AlphaTexSymbols.Number);
                    }
                    NewSy();
                    anyMeta = true;
                }
                else
                {
                    Error("metaDataTags", AlphaTexSymbols.String, false);
                }
            }

            if (anyMeta)
            {
                if (_sy != AlphaTexSymbols.Dot)
                {
                    Error("song", AlphaTexSymbols.Dot);
                }
                NewSy();
            }
        }
Exemple #4
0
        public void ReadTrack()
        {
            var newTrack = new Track(1);

            _score.AddTrack(newTrack);

            var mainStaff = newTrack.Staves[0];

            var flags = Data.ReadByte();

            newTrack.Name = Data.GpReadStringByteLength(40, _encoding);
            if ((flags & 0x01) != 0)
            {
                mainStaff.StaffKind = StaffKind.Percussion;
            }

            var stringCount = Data.ReadInt32LE();
            var tuning      = new FastList <int>();

            for (int i = 0; i < 7; i++)
            {
                var stringTuning = Data.ReadInt32LE();
                if (stringCount > i)
                {
                    tuning.Add(stringTuning);
                }
            }
            mainStaff.Tuning = tuning.ToArray();

            var port          = Data.ReadInt32LE();
            var index         = Data.ReadInt32LE() - 1;
            var effectChannel = Data.ReadInt32LE() - 1;

            Data.Skip(4); // Fretcount
            if (index >= 0 && index < _playbackInfos.Count)
            {
                var info = _playbackInfos[index];
                info.Port             = port;
                info.IsSolo           = (flags & 0x10) != 0;
                info.IsMute           = (flags & 0x20) != 0;
                info.SecondaryChannel = effectChannel;

                if (GeneralMidi.IsGuitar(info.Program))
                {
                    mainStaff.DisplayTranspositionPitch = -12;
                }

                newTrack.PlaybackInfo = info;
            }

            mainStaff.Capo = Data.ReadInt32LE();
            newTrack.Color = Data.GpReadColor();

            if (_versionNumber >= 500)
            {
                // flags for
                //  0x01 -> show tablature
                //  0x02 -> show standard notation
                Data.ReadByte();
                // flags for
                //  0x02 -> auto let ring
                //  0x04 -> auto brush
                Data.ReadByte();

                // unknown
                Data.Skip(43);
            }

            // unknown
            if (_versionNumber >= 510)
            {
                Data.Skip(4);
                Data.GpReadStringIntByte(_encoding);
                Data.GpReadStringIntByte(_encoding);
            }
        }