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(); } }
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); } } }
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(); } }
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); } }