;====================== SAMP.LIB LVO LABELS ===========================

	XDEF	_LVOOpenSampWrite,_LVOWriteWaves,_LVOWriteNames,_LVOWriteMHDR
	XDEF	_LVOWriteSampChunk,_LVOWriteSampData,_LVOCloseSamp
	XDEF	_LVOOpenSampRead,_LVOLoadPlaymap,_LVOMixPlaymap,_LVOReadWaves
	XDEF	_LVOMakeTransTable,_LVOSAMPErrorMsg

_LVOOpenSampWrite		equ	-30
_LVOWriteWaves			equ	-36
_LVOWriteNames			equ	-42
_LVOWriteMHDR			equ	-48
_LVOWriteSampChunk	equ	-54
_LVOWriteSampData		equ	-60
_LVOCloseSamp			equ	-66
_LVOOpenSampRead		equ	-72
_LVOLoadPlaymap		equ	-78
_LVOMixPlaymap			equ	-84
_LVOReadWaves			equ	-90
_LVOMakeTransTable	equ	-96
_LVOSAMPErrorMsg		equ	-102

;======================== SAMP.LIB ERROR CODES ===========================
; As returned by OpenSampRead, OpenSampWrite, and ReadWaves.

SUCCESS		equ	0	;Operation successful
LIBINUSE		equ	1	;Some other task is using samp.library
NOOPENFILE	equ	2	;Cannot open the file
NOTSAMP		equ	3	;Not a SAMP file
BADSAMP		equ	4	;Bad SAMP file
NOSUPPORT	equ	5	;SAMP file not supported
OUTOFRANGE	equ	6	;Too few waves in the file
OUTOFMEM		equ	7	;No mem to load the next wave
NOMOREWAVES	equ	8	;No more waves in the file
USERABORT	equ	9	;Application Abort


;====================== The SAMP file MHDR chunk ========================
;MHDR size is dependant upon the size of the imbedded playMap.

;MHDR:
;NumOfWaves		dc.b	0		;The number of waves in this file
;Format			dc.b	0		;# of ORIGINAL significant bits from 8-28
;Flags			dc.b	0		;Various bits indicate various functions
;PlayMode		dc.b	0		;determines play MODE of the playMap
;NumOfChans		dc.b	4		;# of bytes in playMap for each midi note
;Pad				dc.b	0
;PlayMap			ds.b	128*4	;a map of which wave numbers to use for
									;each of 128 possible Midi Notes. Default to 4
									;bytes per midi note (i.e. numOfChans = 4)

MHDR_NumOfWaves	equ	0
MHDR_Format			equ	1
MHDR_Flags			equ	2
MHDR_PlayMode		equ	3
MHDR_NumOfChans	equ	4
MHDR_Pad				equ	5
MHDR_PlayMap		equ	6

INDEPENDANT		equ	0
MULTI				equ	1
STEREO			equ	2
PAN				equ	3

;====================== The SAMP file BODY chunk ======================
; Every wave has an 80 byte waveHeader, followed by its data. The waveHeader
; structure is as follows:

;waveHeader:
;WaveSize			dc.l	0
;MidiSampNum		dc.w	0	;for midi
;LoopType			dc.b	0	;for midi
;InsType				dc.b	0
;Period				dc.l	0
;Rate					dc.l	0
;LoopStart			dc.l	0
;LoopEnd				dc.l	0
;RootNote			dc.b	0
;VelStart			dc.b	0
;VelTable			ds.w	16
;ATAKsize			dc.l	0
;RLSEsize			dc.l	0
;FATKsize			dc.l	0
;FRLSsize			dc.l	0
;USERsize			dc.l	0
;USERtype			dc.w	0

sizeofwaveHeader	equ	80
wh_WaveSize		equ	0
wh_MidiSampNum	equ	4
wh_loopType		equ	6
wh_InsType		equ	7
wh_Period		equ	8
wh_Rate			equ	12
wh_LoopStart	equ	16
wh_LoopEnd		equ	20
wh_RootNote		equ	24
wh_VelStart		equ	25
wh_VelTable		equ	26
wh_ATAKsize		equ	58
wh_RLSEsize		equ	62
wh_FATKsize		equ	66
wh_FRLSsize		equ	70
wh_USERsize		equ	74
wh_USERtype		equ	78

SPECIFIC		equ	0
VOLMOD		equ	1
PERMOD		equ	2
LOOPING		equ	3

;================ SAMPlib SampleHeader64 structure =============
; Used by the lib to load SAMP files

;SampleHeader64:
;OneShotAddr		dc.l	0
;Flags				dc.b	0
;VelStart			dc.b	0
;VelTable			ds.w	16
;OneShotEnd			dc.l	0		;loop start, as well
;TransTable			dc.l	0		;points to ORIGINAL_PITCH
;RootNote			dc.w	0
;LoopLength			dc.l	0		;in words, bit 31 cannot be set
;AttackRate			dc.b	0		;0 - 255
;AttackInc			dc.b	0		;1 - 64
;DecayRate			dc.b	0		;1 - 255
;DecayDec			dc.b	0		;1 - 64
;SusLevel			dc.b	0		;0 - 64
;ReleaseRate		dc.b	0		;1 - 255
;ReleaseDec			dc.b	0		;1 - 64
;ClipNote			dc.b	0
;WaveSize			dc.l	0		;in bytes

sizeofSampleHeader64	equ	64
sh_OneShotAddr		equ	0
sh_Flags				equ	4
sh_VelStart			equ	5
sh_VelTable			equ	6
sh_OneShotEnd		equ	38
sh_TransTable		equ	42
sh_RootNote			equ	46
sh_LoopLength		equ	48
sh_AttackRate		equ	52
sh_AttackInc		equ	53
sh_DecayRate		equ	54
sh_DecayDec			equ	55
sh_SusLevel			equ	56
sh_ReleaseRate		equ	57
sh_ReleaseDec		equ	58
sh_ClipNote			equ	59
sh_WaveSize			equ	60

;====================== For the Transpose table ====================
; For playback of the wave */

;TransposeNode:
;Next			dc.l	0
;Prev			dc.l	0
;Rate			dc.l	0
;Orig			dc.l	0
;TSize		dc.l	0

tn_Next	equ	0
tn_Prev	equ	4
tn_Rate	equ	8
tn_Orig	equ	12
tn_TSize	equ	16


;=================== the library's SAMPInfo structure ================

;SAMPInfo:
;FileHandle		dc.l	0
;SAMP				dc.b	'SAMP'
;FileSize		dc.l	0
;MHDR				dc.b	'MHDR'
;MHDRSize		dc.l	0
;NumOfWaves		dc.b	0
;Format			dc.b	0
;Flags			dc.b	0
;PlayMode		dc.b	0
;NumOfChans		dc.b	0
;Pad				dc.b	0
;PlayMap			ds.b	128*4
;ANNOChunk		dc.l	0
;BODYChunk		dc.l	0
;NAMEChunk		dc.l	0
;AUTHChunk		dc.l	0
;COPYChunk		dc.l	0
;ATAK				dc.l	0
;RLSE				dc.l	0
;FATK				dc.l	0
;FRLS				dc.l	0
;USER				dc.l	0
;EXTRA			dc.l	0
;SeekPos			dc.l	0
;MemType			dc.l	0
;MaxChars		dc.w	0
;LowPer			dc.w	0
;HighPer			dc.w	0

sizeofSAMPInfo	equ	596
si_Handle		equ	0
si_SAMP			equ	4
si_FileSize		equ	8
si_MHDR			equ	12
si_MHDRSize		equ	16
si_NumOfWaves	equ	20
si_Format		equ	21
si_Flags			equ	22
si_PlayMode		equ	23
si_NumOfChans	equ	24
si_Pad			equ	25
si_PlayMap		equ	26
si_ANNOChunk	equ	538
si_BODYChunk	equ	542
si_NAMEChunk	equ	546
si_AUTHChunk	equ	550
si_COPYChunk	equ	554
si_ATAK			equ	558
si_RLSE			equ	562
si_FATK			equ	566
si_FRLS			equ	570
si_USER			equ	574
si_EXTRA			equ	578
si_SeekPos		equ	582
si_MemType		equ	586
si_MaxChars		equ	590
si_LowPer		equ	592
si_HighPer		equ	594

;======================== Instrument types =========================
; You can construct the InsType field by OR'ing the family with the
;	class. For example,
;
;	InsType = STRING | VIOLA_BOW

;Instrument Families
STRING	equ	$10
WOODWIND	equ	$20
KEYBOARD	equ	$30
GUITAR	equ	$40
VOICE		equ	$50
DRUM1		equ	$60
DRUM2		equ	$70
PERCUSSION1 equ	$80
BRASS1	equ	$90
BRASS2	equ	$A0
CYMBAL	equ	$B0
EFFECT1	equ	$C0
EFFECT2	equ	$D0
SYNTH		equ	$E0

; Instrument Classes

; For the STRING family, the high nibble is as follows:

VIOLIN_BOW	equ	$1
VIOLIN_PLUCK equ	$2
VIOLIN_GLIS	equ	$3
VIOLIN_TREM	equ	$4
VIOLA_BOW	equ	$5
VIOLA_PLUCK	equ	$6
VIOLA_GLIS	equ	$7
VIOLA_TREM	equ	$8
CELLO_BOW	equ	$9
CELLO_PLUCK	equ	$A
CELLO_GLIS	equ	$B
CELLO_TREM	equ	$C
BASS_BOW		equ	$D
BASS_PLUCK	equ	$E
BASS_TREM	equ	$F

;For the BRASS1 family, the high nibble is as follows:

BARITONE_SAX equ	$1
BARI_GROWL	equ	$2
TENOR_SAX	equ	$3
TENOR_GROWL	equ	$4
ALTO_SAX		equ	$5
ALTO_GROWL	equ	$6
SOPRANO_SAX	equ	$7
SOPRANO_GROWL equ	$8
TRUMPET		equ	$9
MUTED_TRUMPET equ	$A
TRUMPET_DROP equ	$B
TROMBONE		equ	$C
TROMBONE_SLIDE equ	$D
TROMBONE_MUTE equ	$E

;For the BRASS2 family, the high nibble is as follows:

FRENCH_HORN	equ	$1
TUBA			equ	$2
FLUGAL_HORN	equ	$3
ENGLISH_HORN equ	$4

;For the WOODWIND family, the high nibble is as follows:

CLARINET		equ	$1
FLUTE			equ	$2
PAN_FLUTE	equ	$3
OBOE			equ	$4
PICCOLO		equ	$5
RECORDER		equ	$6
BASSOON		equ	$7
BASS_CLARINET equ	$8
HARMONICA	equ	$9

;For the KEYBOARD family, the high nibble is as follows:

GRAND_PIANO	equ	$1
ELEC_PIANO	equ	$2
HONKYTONK	equ	$3
TOY_PIANO	equ	$4
HARPSICHORD	equ	$5
CLAVINET		equ	$6
PIPE_ORGAN	equ	$7
HAMMOND_B3	equ	$8
FARFISA_ORGAN equ	$9
HARP			equ	$A

;For the DRUM1 family, the high nibble is as follows:

KICK		equ	$1
SNARE		equ	$2
TOM		equ	$3
TIMBALES	equ	$4
CONGA_HIT equ	$5
CONGA_SLAP equ	$6
BRUSH_SNARE equ	$7
ELEC_SNARE equ	$8
ELEC_KICK equ	$9
ELEC_TOM	equ	$A
RIMSHOT	equ	$B
CROSS_STICK equ	$C
BONGO		equ	$D
STEEL_DRUM equ	$E
DOUBLE_TOM equ	$F

;For the DRUM2 family, the high nibble is as follows:

TIMPANI		equ	$1
TIMPANI_ROLL equ	$2
LOG_DRUM		equ	$3

;For the PERCUSSION1 family, the high nibble is as follows:

BLOCK			equ	$1
COWBELL		equ	$2
TRIANGLE		equ	$3
TAMBOURINE	equ	$4
WHISTLE		equ	$5
MARACAS		equ	$6
BELL			equ	$7
VIBES			equ	$8
MARIMBA		equ	$9
XYLOPHONE	equ	$A
TUBULAR_BELLS equ	$B
GLOCKENSPEIL equ	$C

;For the CYMBAL family, the high nibble is as follows:

CLOSED_HIHAT equ	$1
OPEN_HIHAT	equ	$2
STEP_HIHAT	equ	$3
RIDE			equ	$4
BELL_CYMBAL	equ	$5
CRASH			equ	$6
CHOKE_CRASH	equ	$7
GONG			equ	$8
BELL_TREE	equ	$9
CYMBAL_ROLL	equ	$A

;For the GUITAR family, the high nibble is as follows:

ELECTRIC		equ	$1
MUTED_ELEC	equ	$2
DISTORTED	equ	$3
ACOUSTIC		equ	$4
STRING_12	equ	$5
NYLON_STRING equ	$6
POWER_CHORD	equ	$7
HARMONICS	equ	$8
CHORD_STRUM	equ	$9
BANJO			equ	$A
ELEC_BASS	equ	$B
SLAPPED_BASS equ	$C
POPPED_BASS	equ	$D
SITAR			equ	$E
MANDOLIN		equ	$F

;For the VOICE family, the high nibble is as follows:

MALE_AHH	equ	$1
FEMALE_AHH equ	$2
MALE_OOO	equ	$3
FEMALE_OOO equ	$4
FEMALE	equ	$5
BREATHY	equ	$6
LAUGH		equ	$7
WHISTLER	equ	$8

;For the EFFECTS1 family, the high nibble is as follows:

EXPLOSION	equ	$1
GUNSHOT		equ	$2
CREAKING_DOOR equ	$3
DOOR_SLAM	equ	$4
DOOR_CLOSE	equ	$5
SPACEGUN		equ	$6
JET_ENGINE	equ	$7
PROPELLER	equ	$8
HELOCOPTER	equ	$9
BROKEN_GLASS equ	$A
THUNDER		equ	$B
RAIN			equ	$C
BIRDS			equ	$D
JUNGLE_NOISES equ	$E
FOOTSTEP		equ	$F

;For the EFFECTS2 family, the high nibble is as follows:

MACHINE_GUN	equ	$1
TELEPHONE	equ	$2
DOG_BARK		equ	$3
DOG_GROWL	equ	$4
BOAT_WHISTLE equ	$5
OCEAN			equ	$6
WIND			equ	$7
CROWD_BOOS	equ	$8
APPLAUSE		equ	$9
ROARING_CROWDS equ	$A
SCREAM		equ	$B
SWORD_CLASH	equ	$C
AVALANCE		equ	$D
BOUNCING_BALL equ	$E
BALL_ON_BAT	equ	$F	/* OR CLUB */

;For the SYNTH family, the high nibble is as follows:

SYNTH_STRINGS equ	$1
SQUARE_WAVE		equ	$2
SAWTOOTH_WAVE		equ	$3
TRI_WAVE		equ	$4
SINE_WAVE			equ	$5
NOISE			equ	$6
