Ejemplo n.º 1
0
 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");
     }
 }
Ejemplo n.º 2
0
		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");
			}
		}