The LIQUID DIGITIZED SAMPLE SPECIFICATIONS V1.01 (L.D.S.S) (C) Nir Oren, 1994-97 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ A Part Of The Liquid Tracker's Documentation ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Format's filename extension: any extension (.LDS suggested) * All values are decimal, unless noted "h" which means Hexadecimal Offset 0h 4 BYTES LDSS Magic = 'L','D','S','S' 4h 1 WORD LDSS Header version (Currently = 0102h) 6h 30 CHARS Full name of sample * 24h 20 CHARS Wave generator/ program created the sample * 38h 20 CHARS Person created/ recorded the sample * 4Ch 1 BYTE Sound board sample recorded with (see below) 4Dh 1 DWORD length of sample (only the digitized data) 51h 1 DWORD default loop start 55h 1 DWORD default loop end (0=NOT LOOPING) 59h 1 DWORD default Hertz speed for C-2 (i.e. 8363 Hz, NTSC) 5Dh 1 BYTE default sample volume (0-64) 5Eh 1 BYTE Flags: &1 - 16bit &2 - Stereo &4 - Signed data 5Fh 1 BYTE Default pan setup (0 LEFT -> 32 MID -> 64 RIGHT 66 Surround, 255 No default pan) 60h 1 BYTE General Midi Instrument (see below) 61h 1 BYTE Default sample global volume (0-64) 62h 1 BYTE Chord Type (see below) 63h 1 WORD size of LDSS header (usually 90h) 65h 1 WORD compression algorithm (0=NONE) 67h 1 DWORD 32 bits CRC of the digitized data only. method: 32bit counter, initial value 0, which is the sum of all the contents (carry ignored) if the sample size is not doubleword aligned, you should encounter the missing bytes as zero. REMARK: If CRC should be ignored, the value is 0. 6Bh 1 BYTE Midi channel to use (1-16 Valid values, -1=not defined) 6Ch 1 BYTE Loop Type: -1 or 0=Normal, 1=Ping Pong 6Dh 10 BYTES Reserved, should be 0 77h 25 BYTES Filename of sample (may be: DirName+'\'+FileName) 90h - OR ANY OFFSET SPECIFIED IN PARAMETER [63h] - ACTUAL DIGITIZED SAMPLE DATA * The field is basically ASCIIZ, but it does not necessarily have to be null-terminated, when all characters are being used. ************************************************************************ THE SOUND BOARD THE SAMPLE RECORDED WITH (Parameter [4Ch]) ************************************************************************ (0) SB v1.50 (1) SB v2.00 (2) SBPro (3) SB 16 (4) ThunderBrd (5) PAS (6) PAS+ (7) PAS 16 (8) Windows Wave (9) OS/2 drv. (10) DAC (11) GUS (12) Aria (13) Adlib Gold (14) Windows Sound System (15) Sound Galaxy (16) SB AWE32 (17) Sound Galaxy 16 (18) Audio Wave Grn (19) GUS MAX (20) Sound Galaxy Pro (21) Turtle Beach (22) AWE64 (23) AWE64 Gold (24) Interwave (255) Unknown The value 255 (unknown) should be used when: - There is no possibility of knowing the recording source (e.g. a program converts raw sample to LDSS), or the programmer does not define that field; When value 255 is being used, one cannot assume anything about the sound board used. *************************************************************************** The General Midi Instruments List *************************************************************************** Parameter [60h] - General Midi Instrument 0 Acoustic Grand Piano 23 Tango Accordion 46 Orchestral Harp 1 Bright Acoustic Piano 24 Acoustic Nylon Guitar 47 Timpani 2 Electric Grand Piano 25 Acoustic Steel Guitar 48 String Ensemble 1 3 Honkey-Tonk Piano 26 Electric Jazz Guitar 49 String Ensemble 2 4 Rhodes Piano 27 Electric Clean Guitar 50 Synth Strings 1 5 Chorused Piano 28 Electric Muted Guitar 51 Synth Strings 2 6 Harpischord 29 Overdriven Guitar 52 Choir Aahs 7 Clavinet 30 Distortion Guitar 53 Voice Oohs 8 Celesta 31 Guitar Harmonics 54 Synth Voice 9 Glokenspiel 32 Acoustic Bass 55 Orchestral Hit 10 Music Box 33 Electric Bass Fingered 56 Trumpet 11 Vibraphone 34 Electric Bass Picked 57 Trombone 12 Marimba 35 Fretless Bass 58 Tuba 13 Xylophone 36 Slap Bass 1 59 Muted Trumpet 14 Tubular Bells 37 Slap Bass 2 60 French Horn 15 Dulcimer 38 Synth Bass 1 61 Brass Section 16 Hammond Organ 39 Synth Bass 2 62 Synth Brass 1 17 Percussive Organ 40 Violin 63 Synth Brass 2 18 Rock Organ 41 Viola 64 Soprano Sax 19 Church Organ 42 Cello 65 Alto Sax 20 Reed Organ 43 Contrabass 66 Tenor Sax 21 Accordion 44 Tremolo Strings 67 Baritone Sax 22 Harmonica 45 Pizzicato Strings 68 Oboe 69 English Horn 92 Synth Pad 5 Bowed Glass Pad 70 Bassoon 93 Synth Pad 6 Metal Pad 71 Clarinet 94 Synth Pad 7 Halo Pad 72 Piccolo 95 Synth Pad 8 Sweep Pad 73 Flute 96 Synth SFX 1 Ice Rain 74 Recorder 97 Synth SFX 2 Sound Track 75 Pan Flute 98 Synth SFX 3 Crystal 76 Bottle Blow 99 Synth SFX 4 Atmosphere 77 Shakuhachi 100 Synth SFX 5 Brightness 78 Whistle 101 Synth SFX 6 Goblin 79 Ocarina 102 Synth SFX 7 Echo Drops 80 Synth Lead 1 Square Wave Lead 103 Synth SFX 8 Star Theme 81 Synth Lead 2 Sawtooth Wave Lead 104 Sitar 82 Synth Lead 3 Caliope Lead 105 Banjo 83 Synth Lead 4 Chiff Lead 106 Shamisen 84 Synth Lead 5 Charang 107 Koto 85 Synth Lead 6 Solo Synth Voice 108 Kalimba 86 Synth Lead 7 Bright Saw Wave 109 Bagpipe 87 Synth Lead 8 Brass and Lead 110 Fiddle 88 Synth Pad 1 Fantasia Pad 111 Shanai 89 Synth Pad 2 Warm Pad 112 Tinkle Bells 90 Synth Pad 3 Poly Synth Pad 113 Agogo 91 Synth Pad 4 Space Voice Pad 114 Steel Drums 115 Woodblock D45 Low Tom 116 Taiko Drum D46 Open High Hat 117 Melodic Tom D47 Low-Mid Tom 118 Synth Drum D48 High-Mid Tom 119 Reverse Cymbal D49 Crash Cymbal 1 120 Guitar Fret Noise D50 High Tom 121 Breath Noise D51 Ride Cymbal 1 122 Seashore D52 Chinese Cymbal 123 Bird Tweet D53 Ride Bell 124 Telephone Ring D54 Tambourine 125 Helicopter D55 Splash Cymbal 126 Applause D56 Cowbell 127 Gunshot D57 Crash Cymbal 2 D35 Acoustic Bass Drum D58 Vibraslap D36 Bass Drum 1 D59 Ride Cymbal 2 D37 Side Stick D60 High Bongo D38 Acoustic Snare D61 Low Bongo D39 Hand Clap D62 Mute High Conga D40 Electric Snare D63 Open High Conga D41 Low Floor Tom D64 Low Conga D42 Closed High-Hat D65 High Timbale D43 High Floor Tom D66 Low Timbale D44 Pedal High Hat D67 High Agogo D68 Low Agogo D75 Claves D69 Cabasa D76 High Wood Block D70 Maracas D77 Low Wood Block D71 Short Whistle D78 Mute Cuica D72 Long Whistle D79 Open Cuica D73 Short Guiro D80 Mute Triangle D74 Long Guiro D81 Open Triangle 255 UNDEFINED INSTRUMENT >>>> NOTE: The Dxx means that "xx" is a note number (where 00 is C-0, 01 is C#0, 12 is C-1, and so on...) which is played in the drum channel (default is Chn #16 on General Midi) and not a regular MIDI program, which is redundant in such case. Parameter [62h] - Chord type: * Single note * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³ 0³ single note (not to be used as default (read below)) * Two notes of a chord * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³ 1³ notes 1,2 ³ 2³ notes 1,3 ³ 3³ notes 2,3 ³4-11³ Reserved * Full chord * ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ³12³ Major ³13³ Minor ³14³ Major(ver2) ³15³ Minor(ver2) ³16³ Major(ver3) ³17³ Minor(ver3) ³18³ Major(ver4) ³19³ Minor(ver4) ³20³ 7 ³21³ 6 ³22³ Maj7 ³23³ Min7 ³24³ Maj6 ³25³ Min6 ³26³ Dim/0 ³27³ Aug/+ ³28³ 7 (3 notes) ³29³ 7b5/7(-5) ³30³ 7#5/7(+5) ³31³ 9 ³32³ 11 ³33³ 13 ³34³ Dim7/07 ³35³ 7b9/7(-9) ³36³ 7#9/7(+9) ³37³ Maj7add9 ³38³ Min7add9 ³39³ 9b5/9(-5) ³40³ 9#5/9(+5) ³41³ Aug11 ³42³ 13b9/13(-9) ³43³ 13#9/13(+9) & 64 (Bit 6 ON) = Also played on next octave & 128 (Bit 7 ON) = Also played on beyond next octave Undefined chord ³255³ UNDEFINED NOTES: - The 'Undefined' (255) value should be used in all the cases unless the user has actually defined the chord type. value 0 MAY NOT BE USED AS DEFAULT! for example, if a tracker would like to force the users to define all the chords, it will know that 255 is not-yet defined. However, players or any MultiMedia product may interpret '255' as '0' for presentation purposes. - If bits 6 and 7 are on, respectively, it means that the current note (or chord) is played on more than the current octave, it can possibly be played on two octaves or three octaves simultaneously (or the first and the 3th octave only) VER2 - 'ver2' means that the 1st and the 2nd notes of the chord is in the octave above, rather than in the same octave. Example: chord C-2 (minor) = notes G-2 C-3 E-3 VER3 - 'ver3' means that the 1st note of the chord is in the octave above rather than in the same octave. Example: chord C-2 (minor)= notes E-2 G-2 C-3 VER4 - 'ver4' means that the 1st note of the chord played is also in the next octave. Example: chord C-2 = notes C-2 E-2 G-2 C-3 - The slash (/) char appears on some of the chords refers to the alternative name for the same chord. **************************************************************************** PROGRAMMERS/DEVELOPERS NOTE: - LDSS is not as huge as it seems. it takes only additional 112 bytes for independent sample, and consider the fact that each file always takes 4096 bytes (or 2048) on a magnetic storage media. - LDSS is also not as complicated as it seems. I aware to the fact that most of the programs will not use all the fields anyway, so each field has a non-used value (I don't expect all programs to calculate CRC, but it should be there) - Trackers programmers! remember not to throw-away the LDSS details, when loading 'LDSS' samples. if you are using your own format, remember to include all the LDSS information. it's only 50 (Aprox) additional bytes per sample (some of the LDSS values are used anyway!). suggested action is to save it directly before dumping each sample, and check for LDSS when loading. THE NEW FEATURES OF THE L.D.S.S FORMAT AND THEIR MEANING: - LDSS introducing the sample crediting. Now the sample will carry the name of it's creator, the program which has been used and the sound card used. This can really be good for statistics, and people will learn more about the sources of their samples. (of course, one who wants can remove the copyright, but why ?) - LDSS introduced the 'SAMPLE KIND'. Each sample can be cataloged by it's kind, whether it's drum, piano or sound efx, so a tracker can easily direct sample to it's directory, or a player could use the information for some MultiMedia presentations (imagine yourself a player shows how to play a module, and can recognized different chords and instruments, i.e. when a guitar playing it shows guitar) - Another IMPORTANT feature of LDSS is the extensibility header. a program may add any information it wants to the header, by setting a new value in offset 63h, and setting an ID stamp in offset 90h. and all this while remaining the sample usable to all LDSS compatible programs. COPYRIGHT: - The LDSS file format was developed by me (Nir Oren) in 1996. however, the author donates this file format to the public domain, and it may be used freely by any product, provided a proper credits will be give in the program's documentation. In no event should this document be modified by anyone except the author itself. This document may be included in any archive with any program. Additional notes about LDSS by different people may be included in SEPARATE files. *** End of LDSS specifications text ***