Пример #1
0
		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();
		}
Пример #2
0
		public MidiFileChunkMTrk(MidiFileChunk copyFrom) : base(copyFrom)
		{ 
			parseData();
		}
Пример #3
0
		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);
			*/
		}
Пример #4
0
		public MidiFileChunkMThd(MidiFileChunk copyFrom) : base(copyFrom)
		{ }