internal static SongMID ReadMidi(string path, bool unforceNAudioStrictMode) { s = new SongMID(); midi = new MidiFile(path, !unforceNAudioStrictMode); var trackCount = midi.Events.Count(); scaler = 192.0D / midi.DeltaTicksPerQuarterNote; WriteSync(midi.Events[0]); for (var i = 1; i < trackCount; i++) { var trackName = midi.Events[i][0] as TextEvent; if (trackName == null) { continue; } switch (trackName.Text.ToLower()) { case ("events"): WriteSongSections(midi.Events[i]); break; case ("part guitar"): WriteNoteSection(midi.Events[i], 0); WriteTapSection(midi.Events[i], 0); break; case ("t1 gems"): WriteNoteSection(midi.Events[i], 0); WriteTapSection(midi.Events[i], 0); break; case ("part bass"): WriteNoteSection(midi.Events[i], 1); WriteTapSection(midi.Events[i], 1); break; case ("part keys"): WriteNoteSection(midi.Events[i], 2); break; } } return(s); }
internal static void WriteChart(SongMID s, string path, bool dummy) { using (var output = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) { using (var file = new StreamWriter(output)) { file.WriteLine("[Song]"); file.WriteLine("{"); file.WriteLine("\tName = \"" + s.songname + "\""); if (s.artist != "") { file.WriteLine("\tArtist = \"" + s.artist + "\""); } if (s.year != "") { file.WriteLine("\tYear = \", " + s.year + "\""); } if (s.charter != "") { file.WriteLine("\tCharter = \"" + s.charter + "\""); } file.WriteLine("\tOffset = " + GetOffsetString(s.offset)); file.WriteLine("\tResolution = 192"); file.WriteLine("\tPlayer2 = bass"); file.WriteLine("\tDifficulty = 0"); file.WriteLine("\tPreviewStart = 0.00"); file.WriteLine("\tPreviewEnd = 0.00"); file.WriteLine("\tGenre = \"rock\""); file.WriteLine("\tMediaType = \"cd\""); file.WriteLine("\tMusicStream = \"song.ogg\""); file.WriteLine("\tGuitarStream = \"guitar.ogg\""); file.WriteLine("\tBassStream = \"rhythm.ogg\""); file.WriteLine("}"); file.WriteLine("[SyncTrack]"); file.WriteLine("{"); foreach (Sync sync in s.sync) { if (!sync.isBPM) { file.WriteLine("\t" + sync.tick + " = TS " + sync.num); } else { file.WriteLine("\t" + sync.tick + " = B " + sync.num); } } file.WriteLine("}"); file.WriteLine("[Events]"); file.WriteLine("{"); foreach (Section ss in s.sections) { file.WriteLine("\t" + ss.tick + " = E \"section " + ss.name + "\""); } file.WriteLine("}"); if (s.eGuitar.Count > 0) { file.WriteLine("[EasySingle]"); file.WriteLine("{"); WriteNotes(file, s.eGuitar, s.eGuitarForceHOPO, s.eGuitarForceStrum, s.tapGuitar, s.eGuitarOpenNotes, false); file.WriteLine("}"); } if (s.eBass.Count > 0) { file.WriteLine("[EasyDoubleBass]"); file.WriteLine("{"); WriteNotes(file, s.eBass, s.eBassForceHOPO, s.eBassForceStrum, s.tapBass, s.eBassOpenNotes, false); file.WriteLine("}"); } if (s.eKeys.Count > 0) { file.WriteLine("[EasyEnhancedGuitar]"); file.WriteLine("{"); WriteNotes(file, s.eKeys, new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), true); file.WriteLine("}"); } if (s.mGuitar.Count > 0) { file.WriteLine("[MediumSingle]"); file.WriteLine("{"); WriteNotes(file, s.mGuitar, s.mGuitarForceHOPO, s.mGuitarForceStrum, s.tapGuitar, s.mGuitarOpenNotes, false); file.WriteLine("}"); } if (s.mBass.Count > 0) { file.WriteLine("[MediumDoubleBass]"); file.WriteLine("{"); WriteNotes(file, s.mBass, s.mBassForceHOPO, s.mBassForceStrum, s.tapBass, s.mBassOpenNotes, false); file.WriteLine("}"); } if (s.mKeys.Count > 0) { file.WriteLine("[MediumEnhancedGuitar]"); file.WriteLine("{"); WriteNotes(file, s.mKeys, new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), true); file.WriteLine("}"); } if (s.hGuitar.Count > 0) { file.WriteLine("[HardSingle]"); file.WriteLine("{"); WriteNotes(file, s.hGuitar, s.hGuitarForceHOPO, s.hGuitarForceStrum, s.tapGuitar, s.hGuitarOpenNotes, false); file.WriteLine("}"); } if (s.hBass.Count > 0) { file.WriteLine("[HardDoubleBass]"); file.WriteLine("{"); WriteNotes(file, s.hBass, s.hBassForceHOPO, s.hBassForceStrum, s.tapBass, s.hBassOpenNotes, false); file.WriteLine("}"); } if (s.hKeys.Count > 0) { file.WriteLine("[HardEnhancedGuitar]"); file.WriteLine("{"); WriteNotes(file, s.hKeys, new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), true); file.WriteLine("}"); } if (s.xGuitar.Count > 0) { file.WriteLine("[ExpertSingle]"); file.WriteLine("{"); WriteNotes(file, s.xGuitar, s.xGuitarForceHOPO, s.xGuitarForceStrum, s.tapGuitar, s.xGuitarOpenNotes, false); file.WriteLine("}"); } if (s.xBass.Count > 0) { file.WriteLine("[ExpertDoubleBass]"); file.WriteLine("{"); WriteNotes(file, s.xBass, s.xBassForceHOPO, s.xBassForceStrum, s.tapBass, s.xBassOpenNotes, false); file.WriteLine("}"); } if (s.xKeys.Count > 0) { file.WriteLine("[ExpertEnhancedGuitar]"); file.WriteLine("{"); WriteNotes(file, s.xKeys, new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), new List <NoteSection>(), true); file.WriteLine("}"); } } } }