public string NameFromStrings(TuningStrings tuning, bool flats = true) { var t = tuning.ToArray(); var noteNames = String.Empty; switch (GetTuningFamily(t)) { case TuningFamily.Standard: noteNames = string.Format("{0} Standard", NoteName(tuning, 0, flats)); break; case TuningFamily.Drop: noteNames = string.Format("{0} Drop {1}", NoteName(tuning, 5, true), NoteName(tuning, 0, flats)); break; case TuningFamily.Open: break; default: for (Byte s = 0; s < 6; s++) { noteNames += NoteName(tuning, s, flats); } break; } return(noteNames); }
private void SetTuningCombo(TuningStrings tuningStrings, bool isBass = false) { //Detect tuning TuningDefinition tuning = TuningDefinitionRepository.Instance().SelectAny(tuningStrings, currentGameVersion); //Create tuning if (tuning == null) { using (var form = new TuningForm()) { tuning = new TuningDefinition(); tuning.Tuning = tuningStrings; tuning.Custom = true; tuning.GameVersion = currentGameVersion; tuning.Name = tuning.UIName = tuning.NameFromStrings(tuningStrings, isBass); form.Tuning = tuning; form.IsBass = isBass; if (DialogResult.OK != form.ShowDialog()) { return; } FillTuningCombo(); } } //Set tuning tuningComboBox.SelectedItem = tuning; }
public static string TuningToName(string tolkenTuning, List <TuningDefinition> tuningXml = null) { var jObj = JObject.Parse(tolkenTuning); TuningStrings songTuning = jObj.ToObject <TuningStrings>(); return(TuningToName(songTuning, tuningXml)); }
public string NameFromStrings(TuningStrings tuning, bool isBass, bool inBem = true) { List <Int32> Notes = new List <Int32>(); List <String> NoteNames = new List <String>(); String[] notesNames = new String[] { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; String[] notesNamesHi = new String[] { "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B" }; for (Byte s = 0; s < 6; s++) { Notes.Add(Sng2014FileWriter.GetMidiNote(tuning.ToShortArray(), s, 0, isBass, 0)); } foreach (var mNote in Notes) { if (inBem) { NoteNames.Add(notesNamesHi[mNote % 12]); //oct = mNote / 12 - 1 } else { NoteNames.Add(notesNames[mNote % 12]); //oct = mNote / 12 - 1 } } return(String.Format("{0}{1}{2}{3}{4}{5}", NoteNames[0], NoteNames[1], NoteNames[2], NoteNames[3], NoteNames[4], NoteNames[5])); }
public static string TuningToName(string tolkenTuning, List <TuningDefinition> tuningXml = null) { var jObj = JObject.Parse(tolkenTuning); TuningStrings songTuning = jObj.ToObject <TuningStrings>(); // 2X speed hack ... use preloaded TuningDefinitionRepository if (tuningXml == null) { tuningXml = TuningDefinitionRepository.Instance.LoadTuningDefinitions(GameVersion.RS2014); } foreach (var tuning in tuningXml) { if (tuning.Tuning.String0 == songTuning.String0 && tuning.Tuning.String1 == songTuning.String1 && tuning.Tuning.String2 == songTuning.String2 && tuning.Tuning.String3 == songTuning.String3 && tuning.Tuning.String4 == songTuning.String4 && tuning.Tuning.String5 == songTuning.String5) { return(tuning.UIName); } } return("Other"); }
public void NameFromStringsTest() { string tName = string.Empty; var t = new TuningDefinition(); var Estd = new TuningStrings(new Int16[] { 0, 0, 0, 0, 0, 0 }); tName = t.NameFromStrings(Estd, false); Assert.AreEqual("E Standard", tName); var Ebstd = new TuningStrings(new Int16[] { -1, -1, -1, -1, -1, -1 }); tName = t.NameFromStrings(Ebstd, true); Assert.AreEqual("Eb Standard", tName); var EbstdB = new TuningStrings(new Int16[] { -1, -1, -1, -1 }); //TODO: support bass tName = t.NameFromStrings(EbstdB, true); //Assert.AreEqual("Eb Standard", tName); var Ccstd = new TuningStrings(new Int16[] { -3, -3, -3, -3, -3, -3 }); tName = t.NameFromStrings(Ccstd, false); Assert.AreEqual("C# Standard", tName); var DropEb = new TuningStrings(new Int16[] { -3, -1, -1, -1, -1, -1 }); tName = t.NameFromStrings(DropEb, true); Assert.AreEqual("Eb Drop Db", tName); var DropA = new TuningStrings(new Int16[] { 5, 7, 7, 7, 7, 7 }); tName = t.NameFromStrings(DropA, false); Assert.AreEqual("B Drop A", tName); }
public TuningDefinition(TuningStrings tStrings, GameVersion rsVersion, string name = "", bool custom = true) { Custom = custom; Tuning = tStrings; GameVersion = rsVersion; UIName = Name = !string.IsNullOrEmpty(name) ? name : NameFromStrings(tStrings); }
static string NoteName(TuningStrings tuning, byte s, bool flats = false) { String[] notesNamesHi = { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; String[] notesNamesLo = { "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B" }; var id = Sng2014FileWriter.GetMidiNote(tuning.ToArray(), s, 0, false, 0) % 12; return(flats ? notesNamesLo[id] : notesNamesHi[id]); }
public AttributesHeader2014(string arrangementFileName, Arrangement arrangement, DLCPackageData info, Platform platform) { IsVocal = arrangement.ArrangementType == Sng.ArrangementType.Vocal; SongContent = (IsVocal) ? null : Song2014.LoadFromFile(arrangement.SongXml.File); var dlcName = info.Name.ToLower(); var albumUrn = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("album_{0}", dlcName)); var jsonUrn = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.JsonDB.GetDescription(), String.Format("{0}_{1}", dlcName, arrangementFileName)); //FILL ATTRIBUTES this.AlbumArt = albumUrn; ArrangementName = arrangement.Name.ToString(); DLC = true; DLCKey = info.Name; LeaderboardChallengeRating = 0; ManifestUrn = jsonUrn; MasterID_RDV = arrangement.MasterId; PersistentID = arrangement.Id.ToString().Replace("-", "").ToUpper(); Shipping = true; SKU = "RS2"; SongKey = info.Name; if (!IsVocal) { AlbumName = AlbumNameSort = info.SongInfo.Album; ArtistName = info.SongInfo.Artist; CentOffset = arrangement.TuningPitch != 0 ? TuningFrequency.Frequency2Cents(arrangement.TuningPitch) : 0.0; ArtistNameSort = info.SongInfo.ArtistSort; CapoFret = (arrangement.Sng2014.Metadata.CapoFretId == 0xFF) ? CapoFret = 0 : Convert.ToDecimal(arrangement.Sng2014.Metadata.CapoFretId); DNA_Chords = arrangement.Sng2014.DNACount[(int)DNAId.Chord]; DNA_Riffs = arrangement.Sng2014.DNACount[(int)DNAId.Riff]; DNA_Solo = arrangement.Sng2014.DNACount[(int)DNAId.Solo]; NotesEasy = arrangement.Sng2014.NoteCount[0]; NotesMedium = arrangement.Sng2014.NoteCount[1]; NotesHard = arrangement.Sng2014.NoteCount[2]; EasyMastery = NotesEasy / NotesHard; MediumMastery = NotesMedium / NotesHard; Representative = Convert.ToInt32(!arrangement.BonusArr); RouteMask = (int)arrangement.RouteMask; // TODO this is not quite it but much closer SongDiffEasy = SongContent.SongLength / NotesEasy; SongDiffMed = SongContent.SongLength / NotesMedium; SongDiffHard = SongContent.SongLength / NotesHard; SongDifficulty = SongDiffHard; SongLength = (double?)Math.Round(SongContent.SongLength, 3, MidpointRounding.AwayFromZero); SongName = info.SongInfo.SongDisplayName; SongNameSort = info.SongInfo.SongDisplayNameSort; SongYear = info.SongInfo.SongYear; var tunDef = TuningDefinitionRepository.Instance().Select(arrangement.Tuning, platform.version); Tuning = tunDef.Tuning; } }
// .SequenceEqual, .Equals, "==", .GetHashCode do not produce accurate results // for objects ... the following works as expected for objects public static bool TuningEquals(TuningStrings x, TuningStrings y) { if (x == null || y == null) { return(false); } return(x.String0 == y.String0 && x.String1 == y.String1 && x.String2 == y.String2 && x.String3 == y.String3 && x.String4 == y.String4 && x.String5 == y.String5); }
public ArrangementTuning(TuningStrings tuning, int centsOffset, int capoFret) { String0 = tuning.String0; String1 = tuning.String1; String2 = tuning.String2; String3 = tuning.String3; String4 = tuning.String4; String5 = tuning.String5; CentsOffset = centsOffset; CapoFret = capoFret; }
public static TuningStrings Convert2Bass(TuningStrings guitarTuning) { TuningStrings bassTuning = new TuningStrings(); bassTuning.String0 = guitarTuning.String0; bassTuning.String1 = guitarTuning.String1; bassTuning.String2 = guitarTuning.String2; bassTuning.String3 = guitarTuning.String3; bassTuning.String4 = 0; bassTuning.String5 = 0; return(bassTuning); }
public static TuningStrings Convert2Bass(TuningStrings guitarTuning) { var bassTuning = new TuningStrings { String0 = guitarTuning.String0, String1 = guitarTuning.String1, String2 = guitarTuning.String2, String3 = guitarTuning.String3, String4 = 0, String5 = 0 }; return(bassTuning); }
public TuningDefinition SelectAny(TuningStrings tuningStrings, GameVersion gameVersion) { var g = Select(tuningStrings, gameVersion); var b = SelectForBass(tuningStrings, gameVersion); if (ReferenceEquals(g, b)) { return(g); } else { return(b); } }
public TuningDefinition Detect(TuningStrings tuning, GameVersion gameVersion, bool addreload = false) { var t = Instance.Select(tuning, gameVersion); // if unknown tuning then register it at tunung definition if (t == null) { t = new TuningDefinition(tuning, gameVersion); // only add full(guitar one) arrangement tunings to the TuningDefinitionRepository if (addreload) { Add(t, true); } } return(t); }
public void TuningStringsEqualsTest() { //Object\regular equality var expected = new TuningStrings(new Int16[] { -2, 0, 0, 0, 0, 0 }); var actual = new TuningStrings(new Int16[] { 0, 0, 0, 0, 0, 0 }); Assert.AreNotEqual(expected, actual); //LINQ equality var list = new List <TuningStrings> { expected, expected, actual }; var distinct = list.Union(new List <TuningStrings> { actual, actual, expected }).ToList(); if (list.Count == distinct.Count) { Assert.Fail(); } }
public static string TuningToName(TuningStrings songTuning, GameVersion gameVersion = GameVersion.RS2014, List <TuningDefinition> tuningXml = null) { // speed hack ... use preloaded TuningDefinitionRepository if available if (tuningXml == null) { tuningXml = TuningDefinitionRepository.Instance.LoadTuningDefinitions(gameVersion); } foreach (var tuning in tuningXml) { if (tuning.Tuning.String0 == songTuning.String0 && tuning.Tuning.String1 == songTuning.String1 && tuning.Tuning.String2 == songTuning.String2 && tuning.Tuning.String3 == songTuning.String3 && tuning.Tuning.String4 == songTuning.String4 && tuning.Tuning.String5 == songTuning.String5) { return(tuning.UIName); } } return("Other"); }
private static string GetTuningName(TuningStrings tuning, bool isBass, int capo, bool inBem = true) { List <Int32> Notes = new List <Int32>(); List <String> NoteNames = new List <String>(); String[] notesNames = new String[] { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" }; String[] notesNamesHi = new String[] { "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B" }; for (Byte s = 0; s < (isBass ? 4 : 6); s++) { Notes.Add(Sng2014FileWriter.GetMidiNote(tuning.ToShortArray(), s, 0, isBass, capo)); } foreach (var mNote in Notes) { if (inBem) { NoteNames.Add(notesNamesHi[mNote % 12]); //oct = mNote / 12 - 1 } else { NoteNames.Add(notesNames[mNote % 12]); //oct = mNote / 12 - 1 } } return(String.Join(" ", NoteNames)); }
public AttributesHeader2014(string arrangementFileName, Arrangement arrangement, DLCPackageData info, Platform platform) { IsVocal = arrangement.ArrangementType == Sng.ArrangementType.Vocal; SongContent = (IsVocal) ? null : Song2014.LoadFromFile(arrangement.SongXml.File); var dlcName = info.Name.ToLower(); var albumUrn = String.Format(URN_TEMPLATE, TagValue.Image.GetDescription(), TagValue.DDS.GetDescription(), String.Format("album_{0}", dlcName)); var jsonUrn = String.Format(URN_TEMPLATE, TagValue.Database.GetDescription(), TagValue.JsonDB.GetDescription(), String.Format("{0}_{1}", dlcName, arrangementFileName)); //FILL ATTRIBUTES this.AlbumArt = albumUrn; JapaneseVocal |= arrangement.Name == Sng.ArrangementName.JVocals; ArrangementName = IsVocal ? Sng.ArrangementName.Vocals.ToString() : arrangement.Name.ToString(); //HACK: weird vocals stuff DLC = true; DLCKey = info.Name; LeaderboardChallengeRating = 0; ManifestUrn = jsonUrn; MasterID_RDV = arrangement.MasterId; PersistentID = arrangement.Id.ToString().Replace("-", "").ToUpper(); Shipping = true; SKU = "RS2"; SongKey = info.Name; if (!IsVocal) { AlbumName = AlbumNameSort = info.SongInfo.Album; ArtistName = info.SongInfo.Artist; CentOffset = (!arrangement.TuningPitch.Equals(0)) ? TuningFrequency.Frequency2Cents(arrangement.TuningPitch) : 0.0; ArtistNameSort = info.SongInfo.ArtistSort; CapoFret = (arrangement.Sng2014.Metadata.CapoFretId == 0xFF) ? CapoFret = 0 : Convert.ToDecimal(arrangement.Sng2014.Metadata.CapoFretId); DNA_Chords = arrangement.Sng2014.DNACount[(int)DNAId.Chord]; DNA_Riffs = arrangement.Sng2014.DNACount[(int)DNAId.Riff]; DNA_Solo = arrangement.Sng2014.DNACount[(int)DNAId.Solo]; NotesEasy = arrangement.Sng2014.NoteCount[0]; NotesMedium = arrangement.Sng2014.NoteCount[1]; NotesHard = arrangement.Sng2014.NoteCount[2]; EasyMastery = NotesEasy / NotesHard; MediumMastery = NotesMedium / NotesHard; Metronome = (int?)arrangement.Metronome; Representative = Convert.ToInt32(!arrangement.BonusArr); RouteMask = (int)arrangement.RouteMask; // TODO use ManifestFunctions.GetSongDifficulty() method (fix generation alghorythm) SongDiffEasy = SongContent.SongLength / NotesEasy; SongDiffMed = SongContent.SongLength / NotesMedium; SongDiffHard = SongContent.SongLength / NotesHard; SongDifficulty = SongDiffHard; SongLength = (double?)Math.Round(SongContent.SongLength, 3, MidpointRounding.AwayFromZero); SongName = info.SongInfo.SongDisplayName; SongNameSort = info.SongInfo.SongDisplayNameSort; SongYear = info.SongInfo.SongYear; //Detect tuning var tuning = TuningDefinitionRepository.Instance().SelectAny(SongContent.Tuning, platform.version); if (tuning == null) { tuning = new TuningDefinition(); tuning.Tuning = SongContent.Tuning; tuning.Name = tuning.UIName = arrangement.Tuning; if (String.IsNullOrEmpty(tuning.Name)) { tuning.Name = tuning.UIName = tuning.NameFromStrings(arrangement.TuningStrings, arrangement.ArrangementType == RocksmithToolkitLib.Sng.ArrangementType.Bass); } tuning.Custom = true; tuning.GameVersion = GameVersion.RS2014; TuningDefinitionRepository.Instance().Add(tuning, true); } Tuning = tuning.Tuning; } }
public IEnumerable <TuningDefinition> Select(TuningStrings tuningStrings) { return(List.OfType <TuningDefinition>().Where(s => s.Tuning.ToArray().SequenceEqual(tuningStrings.ToArray()))); }
public TuningDefinition SelectAny(TuningStrings tuningStrings, GameVersion gameVersion) { var g = Select(tuningStrings, gameVersion); return(g); //Accurate compare, no mercy for bass. }
public TuningDefinition SelectForBass(TuningStrings tuningStrings, GameVersion gameVersion) { return(List.FirstOrDefault <TuningDefinition>(s => s.Tuning.ToBassArray().SequenceEqual(tuningStrings.ToBassArray()) && s.GameVersion == gameVersion)); }
public IEnumerable <TuningDefinition> Select(TuningStrings tuningStrings) { return(List.Where(s => s.Tuning.Equals(tuningStrings))); }