internal InfoChunk(RiffChunk chunk) { bool ifilPresent = false; bool isngPresent = false; bool INAMPresent = false; if(chunk.ReadChunkID() != "INFO") { throw new InvalidDataException("Not an INFO chunk"); } //this.chunk = chunk; RiffChunk c; while((c = chunk.GetNextSubChunk()) != null) { switch(c.ChunkID) { case "ifil": ifilPresent = true; verSoundFont = (SFVersion) c.GetDataAsStructure(new SFVersionBuilder()); break; case "isng": isngPresent = true; waveTableSoundEngine = c.GetDataAsString(); break; case "INAM": INAMPresent = true; bankName = c.GetDataAsString(); break; case "irom": dataROM = c.GetDataAsString(); break; case "iver": verROM = (SFVersion) c.GetDataAsStructure(new SFVersionBuilder()); break; case "ICRD": creationDate = c.GetDataAsString(); break; case "IENG": author = c.GetDataAsString(); break; case "IPRD": targetProduct = c.GetDataAsString(); break; case "ICOP": copyright = c.GetDataAsString(); break; case "ICMT": comments = c.GetDataAsString(); break; case "ISFT": tools = c.GetDataAsString(); break; default: throw new InvalidDataException(String.Format("Unknown chunk type {0}",c.ChunkID)); } } if(!ifilPresent) { throw new InvalidDataException("Missing SoundFont version information"); } if(!isngPresent) { throw new InvalidDataException("Missing wavetable sound engine information"); } if(!INAMPresent) { throw new InvalidDataException("Missing SoundFont name information"); } }
internal InfoChunk(RiffChunk chunk) { bool ifilPresent = false; bool isngPresent = false; bool INAMPresent = false; if(chunk.ReadChunkID() != "INFO") { throw new InvalidDataException("Not an INFO chunk"); } //this.chunk = chunk; RiffChunk c; while((c = chunk.GetNextSubChunk()) != null) { switch(c.ChunkID) { case "ifil": ifilPresent = true; verSoundFont = (SFVersion) c.GetDataAsStructure(new SFVersionBuilder()); break; case "isng": isngPresent = true; waveTableSoundEngine = c.GetDataAsString(); break; case "INAM": INAMPresent = true; bankName = c.GetDataAsString(); break; case "irom": dataROM = c.GetDataAsString(); break; case "iver": verROM = (SFVersion) c.GetDataAsStructure(new SFVersionBuilder()); break; case "ICRD": creationDate = c.GetDataAsString(); break; case "IENG": author = c.GetDataAsString(); break; case "IPRD": targetProduct = c.GetDataAsString(); break; case "ICOP": copyright = c.GetDataAsString(); break; case "ICMT": comments = c.GetDataAsString(); break; case "ISFT": tools = c.GetDataAsString(); break; default: throw new InvalidDataException(String.Format("Unknown chunk type {0}",c.ChunkID)); } } if(!ifilPresent) { throw new InvalidDataException("Missing SoundFont version information"); } if(!isngPresent) { throw new InvalidDataException("Missing wavetable sound engine information"); } if(!INAMPresent) { throw new InvalidDataException("Missing SoundFont name information"); } }