public MidiFileChunk(MidiFileChunk copyFrom) { header = new MidiFileChunkHeader(); header.ID = copyFrom.Header.ID; header.Length = copyFrom.Header.Length; this.data = new byte[copyFrom.Data.Length]; Array.Copy(copyFrom.Data,data,copyFrom.Data.Length); checkChunk(); }
public MidiFileChunkMTrk(MidiFileChunk copyFrom) : base(copyFrom) { parseData(); }
public void Load(string fileName) { MidiFileChunk tempChunk = new MidiFileChunk(); BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)); chunkMThd = null; string fileHeader = new string(reader.ReadChars(4)); if (fileHeader == "RIFF") { reader.ReadBytes(8); // if it's a RIFF we skip the first 4+8 bytes } else { reader.BaseStream.Seek(0,SeekOrigin.Begin); // else we don't skip } while (reader.BaseStream.Position<=reader.BaseStream.Length-6) { tempChunk.Read(reader); //showMsg("Chunk ID: \""+tempChunk.Header.ID+"\" Length: "+tempChunk.Header.Length); if (tempChunk.Header.ID == "MThd") { chunkMThd = new MidiFileChunkMThd(tempChunk); break; } } if (chunkMThd == null) { showMsg("Error: MIDI MThd chunk not found in MIDI file"); } else { while (reader.BaseStream.Position<=reader.BaseStream.Length-6) { tempChunk.Read(reader); //showMsg("Chunk ID: \""+tempChunk.Header.ID+"\" Length: "+tempChunk.Header.Length); if (tempChunk.Header.ID == "MTrk") { chunkMTrk.Add(new MidiFileChunkMTrk(tempChunk)); } } if (chunkMTrk.Count != chunkMThd.NumTracks) { showMsg("Warning: wrong number of tracks in MIDI file"); } } /* reader.Close(); MidiFileChunkMTrk mtrk = (MidiFileChunkMTrk)chunkMTrk[2]; showMsg(""+mtrk.MidiEvents.Count); */ }
public MidiFileChunkMThd(MidiFileChunk copyFrom) : base(copyFrom) { }