home *** CD-ROM | disk | FTP | other *** search
- ;Set your editor's TAB width to 3
-
- ;====================== 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
- _LVOCusMakeTransTable equ -108
- _LVORemoveTTable equ -114
- _LVOFreeTTables equ -120
- _LVOFindTNode equ -126
-
- ;======================== 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
-
- ;PlayMode
- INDEPENDENT equ 0
- MULTI equ 1
- STEREO equ 2
- PAN equ 3
-
- ;Flags
- CONTINUED_FILE equ 0
- STEREO_FILE equ 1
-
- ;====================== 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 ;next TransposeNode in TList
- ;Prev dc.l 0 ;previous TransposeNode in TList
- ;Period dc.l 0 ;in NANOSECONDS
- ;Orig dc.l 0 ;address of ORIGINAL_PITCH
- ;TSize dc.l 0 ;total size of node plus table
- ;pad dc.b 0
- ;Hosts dc.b 0 ;# of waves using this table
-
- sizeofTNode equ 26 ;counting mandatory appended ORIGINAL_PITCH period entry
- tn_Next equ 0
- tn_Prev equ 4
- tn_Period equ 8
- tn_Orig equ 12
- tn_TSize equ 16
- tn_Hosts equ 21
-
-
- ;=================== the library's SAMPInfo structure ================
-
- ;SAMPInfo:
- ;FileHandle dc.l 0
- ;IFFTypeID dc.b 'FORM' ;could be CAT or LIST
- ;FileSize dc.l 0
- ;SAMP dc.b 'SAMP'
- ;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*NumOfChans
- ;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 600
- si_Handle equ 0
- si_TypeID equ 4
- si_FileSize equ 8
- si_SAMP equ 12
- si_MHDR equ 16
- si_MHDRSize equ 20
- si_NumOfWaves equ 24
- si_Format equ 25
- si_Flags equ 26
- si_PlayMode equ 27
- si_NumOfChans equ 28
- si_Pad equ 29
- si_PlayMap equ 30
- si_ANNOChunk equ 542
- si_BODYChunk equ 546
- si_NAMEChunk equ 550
- si_AUTHChunk equ 554
- si_COPYChunk equ 558
- si_ATAK equ 562
- si_RLSE equ 566
- si_FATK equ 570
- si_FRLS equ 574
- si_USER equ 578
- si_EXTRA equ 582
- si_SeekPos equ 586
- si_MemType equ 590
- si_MaxChars equ 594
- si_LowPer equ 596
- si_HighPer equ 598
-
- ;======================== 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
-