123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- #pragma once
- #include "openmpt/all/BuildSettings.hpp"
- OPENMPT_NAMESPACE_BEGIN
- struct XMFileHeader
- {
- enum XMHeaderFlags
- {
- linearSlides = 0x01,
- extendedFilterRange = 0x1000,
- };
- char signature[17];
- char songName[20];
- uint8le eof;
- char trackerName[20];
- uint16le version;
- uint32le size;
- uint16le orders;
- uint16le restartPos;
- uint16le channels;
- uint16le patterns;
- uint16le instruments;
- uint16le flags;
- uint16le speed;
- uint16le tempo;
- };
- MPT_BINARY_STRUCT(XMFileHeader, 80)
- struct XMInstrument
- {
-
- enum XMEnvelopeFlags
- {
- envEnabled = 0x01,
- envSustain = 0x02,
- envLoop = 0x04,
- };
- uint8le sampleMap[96];
- uint16le volEnv[24];
- uint16le panEnv[24];
- uint8le volPoints;
- uint8le panPoints;
- uint8le volSustain;
- uint8le volLoopStart;
- uint8le volLoopEnd;
- uint8le panSustain;
- uint8le panLoopStart;
- uint8le panLoopEnd;
- uint8le volFlags;
- uint8le panFlags;
- uint8le vibType;
- uint8le vibSweep;
- uint8le vibDepth;
- uint8le vibRate;
- uint16le volFade;
- uint8le midiEnabled;
- uint8le midiChannel;
- uint16le midiProgram;
- uint16le pitchWheelRange;
- uint8le muteComputer;
- uint8le reserved[15];
- enum EnvType
- {
- EnvTypeVol,
- EnvTypePan,
- };
-
- void ConvertEnvelopeToXM(const InstrumentEnvelope &mptEnv, uint8le &numPoints, uint8le &flags, uint8le &sustain, uint8le &loopStart, uint8le &loopEnd, EnvType env);
-
- void ConvertEnvelopeToMPT(InstrumentEnvelope &mptEnv, uint8 numPoints, uint8 flags, uint8 sustain, uint8 loopStart, uint8 loopEnd, EnvType env) const;
-
- uint16 ConvertToXM(const ModInstrument &mptIns, bool compatibilityExport);
-
- void ConvertToMPT(ModInstrument &mptIns) const;
-
- void ApplyAutoVibratoToXM(const ModSample &mptSmp, MODTYPE fromType);
-
- void ApplyAutoVibratoToMPT(ModSample &mptSmp) const;
-
- std::vector<SAMPLEINDEX> GetSampleList(const ModInstrument &mptIns, bool compatibilityExport) const;
- };
- MPT_BINARY_STRUCT(XMInstrument, 230)
- struct XMInstrumentHeader
- {
- uint32le size;
- char name[22];
- uint8le type;
- uint16le numSamples;
- uint32le sampleHeaderSize;
- XMInstrument instrument;
-
- void Finalise();
-
- void ConvertToXM(const ModInstrument &mptIns, bool compatibilityExport);
-
- void ConvertToMPT(ModInstrument &mptIns) const;
- };
- MPT_BINARY_STRUCT(XMInstrumentHeader, 263)
- struct XIInstrumentHeader
- {
- enum
- {
- fileVersion = 0x102,
- };
- char signature[21];
- char name[22];
- uint8le eof;
- char trackerName[20];
- uint16le version;
- XMInstrument instrument;
- uint16le numSamples;
-
- void ConvertToXM(const ModInstrument &mptIns, bool compatibilityExport);
-
- void ConvertToMPT(ModInstrument &mptIns) const;
- };
- MPT_BINARY_STRUCT(XIInstrumentHeader, 298)
- struct XMSample
- {
- enum XMSampleFlags
- {
- sampleLoop = 0x01,
- sampleBidiLoop = 0x02,
- sample16Bit = 0x10,
- sampleStereo = 0x20,
- sampleADPCM = 0xAD,
- };
- uint32le length;
- uint32le loopStart;
- uint32le loopLength;
- uint8le vol;
- int8le finetune;
- uint8le flags;
- uint8le pan;
- int8le relnote;
- uint8le reserved;
- char name[22];
-
- void ConvertToXM(const ModSample &mptSmp, MODTYPE fromType, bool compatibilityExport);
-
- void ConvertToMPT(ModSample &mptSmp) const;
-
- SampleIO GetSampleFormat() const;
- };
- MPT_BINARY_STRUCT(XMSample, 40)
- OPENMPT_NAMESPACE_END
|