public void WriteFile(string filePath) { BinaryFile bf = new BinaryFile(filePath, BinaryFile.ByteOrder.BigEndian, true); if (ChunkMagic != "CcnK") { Console.Out.WriteLine("Cannot save the preset file. Missing preset header information."); return; } bf.Write(ChunkMagic); // chunkMagic, 4 // check what preset type we are saving if (FxMagic == "FBCh") { // Bank with Chunk Data ByteSize = 152 + ChunkSize; bf.Write(ByteSize); // byteSize = 4 bf.Write(FxMagic); // fxMagic, 4 bf.Write(Version); // version, 4 bf.Write(FxID); // fxID, 4 bf.Write(FxVersion); // fxVersion, 4 bf.Write(ProgramCount); // numPrograms, 4 bf.Write(Future, 128); // future, 128 bf.Write(ChunkSize); // chunkSize, 4 // Even though the main FXP is BigEndian format the preset chunk is saved in LittleEndian format bf.Write(chunkDataByteArray, BinaryFile.ByteOrder.LittleEndian); } else if (FxMagic == "FPCh") { // Preset with Chunk Data ByteSize = 52 + ChunkSize; bf.Write(ByteSize); // byteSize = 4 bf.Write(FxMagic); // fxMagic, 4 bf.Write(Version); // version, 4 bf.Write(FxID); // fxID, 4 bf.Write(FxVersion); // fxVersion, 4 bf.Write(ProgramCount); // numPrograms, 4 bf.Write(Name, 28); // name, 28 bf.Write(ChunkSize); // chunkSize, 4 // Even though the main FXP is BigEndian format the preset chunk is saved in LittleEndian format bf.Write(chunkDataByteArray, BinaryFile.ByteOrder.LittleEndian); } else if (FxMagic == "FxCk") { // For Preset (Program) (.fxp) without chunk (magic = 'FxCk') // Bank with Chunk Data ByteSize = 48 + (4 * ParameterCount); bf.Write(ByteSize); // byteSize = 4 bf.Write(FxMagic); // fxMagic, 4 bf.Write(Version); // version, 4 bf.Write(FxID); // fxID, 4 bf.Write(FxVersion); // fxVersion, 4 bf.Write(ParameterCount); // numParameters, 4 bf.Write(Name, 28); // name, 28 // variable no. of parameters for (int i = 0; i < ParameterCount; i++) { bf.Write((float)Parameters[i]); } } bf.Close(); }
public void ReadFile(string filePath) { BinaryFile bf = new BinaryFile(filePath, BinaryFile.ByteOrder.BigEndian); ReadFXP(bf); }
// constructor with byte array public FXP(byte[] values) { BinaryFile bf = new BinaryFile(values, BinaryFile.ByteOrder.BigEndian); ReadFXP(bf); }