home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d3xx
/
d307
/
samp.lha
/
Samp
/
SAMP.i
< prev
next >
Wrap
Text File
|
1990-01-13
|
9KB
|
447 lines
;====================== 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