We just reached 30,000 articles on this wiki! 🥳
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Format:GDM
Jump to navigation
Jump to search
The Bells, Whistles, and Sound Boards (BWSB) Sound File GDM (.GDM) is a tracker based file created in 1991 which may or may have not been used in any games for DOS systems made in C, QBasic/QuickBasic/PAS.
Contents
Format
File Header
(Source: BWSB Source Code from 1995 (GDMTYPE.H))
typedef struct { char ID[4]; // ID: 'GDMþ' char SongTitle[32]; // Music's title char SongMusician[32]; // Name of music's composer char DOSEOF[3]; // 10, 13, 26 char ID2[4]; // ID: 'GDMF' unsigned char FormMajorVer; // Format major version unsigned char FormMinorVer; // Format minor version unsigned int TrackID; // Composing Tracker ID code unsigned char TrackMajorVer; // Tracker's major version unsigned char TrackMinorVer; // Tracker's minor version unsigned char PanMap[32]; // 0-Left to 15-Right, 255-N/U unsigned char MastVol; // Range: 0..64 unsigned char Tempo; // Initial music tempo (6) unsigned char BPM; // Initial music BPM (125) unsigned int FormOrigin; // Original format ID: // 1-MOD, 2-MTM, 3-S3M, 4-669, 5-FAR, 6-ULT, 7-STM, 8-MED // (versions of 2GDM prior to v1.15 won't set this correctly) unsigned long OrdOffset; unsigned char NOO; // Number of orders in module unsigned long PatOffset; unsigned char NOP; // Number of patterns in module unsigned long SamHeadOffset; unsigned long SamOffset; unsigned char NOS; // Number of samples in module unsigned long MTOffset; unsigned long MTLength; unsigned long SSOffset; unsigned int SSLength; unsigned long TGOffset; unsigned int TGLength; } GDMHeader;
Wave (SAM) File Format
(Source: BWSB Source Code (GDMHEAD.H))
typedef struct { char SamName[32]; char FileName[12]; char EmsHandle; long Length; long LoopBegin; long LoopEnd; char Flags; int C4Hertz; char Volume; char Pan; int Segment; } SamHeader; typedef struct { char SamName[32]; // 32 char FileName[12]; // 44 char EmsHandle; // 45 long Length; // 49 long LoopBegin; // 53 long LoopEnd; // 57 char Flags; // 58 int C4Hertz; // 60 char Volume; // 61 char Pan; // 62 } SamHeader2;
GDM Channel Header
(Source: BWSB Source Code (CHANTYPE.H))
typedef struct { unsigned char MixFlags; // Mixing flags unsigned int MixLBeg; // Offset of loop beginning unsigned int MixLEnd; // Offset of loop ending unsigned int MixFinetune; // Finetune (C-4 Hertz) unsigned long MixRate; // Sample rate/period of sound unsigned int MixSeg; // Segment of sound unsigned int MixOff; // Offset of next byte to mix unsigned char MixVolume; // Volume of channel unsigned int MixInc; // Incrementation for each sample. MSB.LSB unsigned char MixIncRemain; // Remainder from last increment. unsigned char MusSample; // Currently played sample number unsigned char MusNote; // Currently played note unsigned char MusOctave; // Currently played octave unsigned char MusEffect1; // Music Effect Number (1)** unsigned int MusEffDat1; // Music Effect Data (1)** unsigned char MusEffect2; // Music Effect Number (2)* unsigned int MusEffDat2; // Music Effect Data (2)* unsigned char MusEffect3; // Music Effect Number (3) unsigned int MusEffDat3; // Music Effect Data (3) unsigned char MusEffect4; // Music Effect Number (4) unsigned int MusEffDat4; // Music Effect Data (4) unsigned char VUMeter; // Volume Meter value unsigned int MusVolRate; // Old Vol Slide Speed unsigned int MusPortaRate; // Old Porta to Note Speed unsigned char MusVibWave; // Vibrato Waveform Select unsigned char MusVibPosition; // Vibrato Table Position unsigned char MusVibSpeed; // Vibrato Speed (x0h) unsigned char MusVibDepth; // Vibrato Depth (0yh) unsigned char MusTrmWave; // Tremolo Waveform Select unsigned char MusTrmPosition; // Tremolo Table Position unsigned char MusTrmSpeed; // Tremolo Speed unsigned char MusTrmDepth; // Tremolo Depth unsigned char MusRetrigSpeed; // Retrigger speed unsigned char MusRetrigSlide; // Retrigger volume slide unsigned char MusGlissFunk; // Funk It (Invert Loop) Speed unsigned char MusFunkOffset; // Funk It position unsigned int MusWaveStart; // Funk It funk pointer (offset into sample) unsigned char MixPanning; // Pan position unsigned char MixHandle; // EMS Handle this sample resides on unsigned char MixMonoVol; // Mono volume value unsigned char MixLftVol; // Left speaker mixing volume unsigned char MixRgtVol; // Right speaker mixing volume unsigned long GUSAddress; // Address of start position in GUS memory unsigned char MusArpeggio; // Old Arpeggio speed unsigned char MusPortaUD; // Old Porta Up/Down speed char Reserved[64]; // For future expansion } ChannelType;
SDK Information
The BWSB Usage Kit comes with Include Files, Source Code and in UTILS an Application named "2GDM.EXE" which converts .MOD and .S3M Files which use PCM8 Samples to .GDM Files.
Open With...
Audio Formats | |
---|---|
Nintendo DS | Nitro Sound Container/SDAT (SSEQ, STRM) • Digital Sound Elements (SMDL) |
Game Boy Advance | M4A/Sappy Sound Engine • Krawall |
PlayStation 2 | Digital Sound Elements |
Wii | Digital Sound Elements |
Various | BWSB Sound Format |
Graphic Formats | |
Various | GIF |
Windows | BMP • DDS |
Executable Formats (OS-specific) | |
DOS | Command |
Windows | Portable Executable |
Executable Formats (Game-specific) | |
Deus Ex | CON |