Ejemplo n.º 1
0
        private static void WriteSamplerChunk(BinaryWriter writer, WavWriterLoopPoint[] loopPoints)
        {
            const int samplerDataCount = 0;

            if (loopPoints == null)
            {
                loopPoints = new WavWriterLoopPoint[0];
            }

            writer.Write(Encoding.ASCII.GetBytes("smpl"));
            writer.Write(36 + loopPoints.Length * 24 + samplerDataCount); //0x04 size
            writer.Write(0);                                              //0x08 manufacturer
            writer.Write(0);                                              //0x0c product
            writer.Write(0);                                              //0x10 sample period
            writer.Write(0);                                              //0x14 midi unity note
            writer.Write(0);                                              //0x18 midi pitch fraction
            writer.Write(0);                                              //0x1c smpte format
            writer.Write(0);                                              //0x20 smpte offset
            writer.Write(loopPoints.Length);                              //number of sample loops
            writer.Write(samplerDataCount);                               //sampler data - byte count that will follow this chunk (including the entire sample loop list)
            foreach (var loopPoint in loopPoints)
            {
                WriteSamplerChunk_WriteLoop(writer, loopPoint);
            }
        }
Ejemplo n.º 2
0
 private static void WriteSamplerChunk_WriteLoop(BinaryWriter writer, WavWriterLoopPoint wavWriterLoopPoint)
 {
     writer.Write(0);             //id
     writer.Write(0);             //type, 0 = forward(normal)
     writer.Write(wavWriterLoopPoint.StartSample);
     writer.Write(wavWriterLoopPoint.EndSample);
     writer.Write(0);             //fraction
     writer.Write(0);             //loop count, 0 = infinite
 }