home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 390.lha / SampLibrary / samp.i < prev    next >
Encoding:
Text File  |  1990-07-01  |  9.7 KB  |  464 lines

  1. ;Set your editor's TAB width to 3
  2.  
  3. ;====================== SAMP.LIB LVO LABELS ===========================
  4.  
  5.     XDEF    _LVOOpenSampWrite,_LVOWriteWaves,_LVOWriteNames,_LVOWriteMHDR
  6.     XDEF    _LVOWriteSampChunk,_LVOWriteSampData,_LVOCloseSamp
  7.     XDEF    _LVOOpenSampRead,_LVOLoadPlaymap,_LVOMixPlaymap,_LVOReadWaves
  8.     XDEF    _LVOMakeTransTable,_LVOSAMPErrorMsg
  9.  
  10. _LVOOpenSampWrite        equ    -30
  11. _LVOWriteWaves            equ    -36
  12. _LVOWriteNames            equ    -42
  13. _LVOWriteMHDR            equ    -48
  14. _LVOWriteSampChunk    equ    -54
  15. _LVOWriteSampData        equ    -60
  16. _LVOCloseSamp            equ    -66
  17. _LVOOpenSampRead        equ    -72
  18. _LVOLoadPlaymap        equ    -78
  19. _LVOMixPlaymap            equ    -84
  20. _LVOReadWaves            equ    -90
  21. _LVOMakeTransTable    equ    -96
  22. _LVOSAMPErrorMsg        equ    -102
  23. _LVOCusMakeTransTable    equ    -108
  24. _LVORemoveTTable        equ    -114
  25. _LVOFreeTTables        equ    -120
  26. _LVOFindTNode            equ    -126
  27.  
  28. ;======================== SAMP.LIB ERROR CODES ===========================
  29. ; As returned by OpenSampRead, OpenSampWrite, and ReadWaves.
  30.  
  31. SUCCESS        equ    0    ;Operation successful
  32. LIBINUSE        equ    1    ;Some other task is using samp.library
  33. NOOPENFILE    equ    2    ;Cannot open the file
  34. NOTSAMP        equ    3    ;Not a SAMP file
  35. BADSAMP        equ    4    ;Bad SAMP file
  36. NOSUPPORT    equ    5    ;SAMP file not supported
  37. OUTOFRANGE    equ    6    ;Too few waves in the file
  38. OUTOFMEM        equ    7    ;No mem to load the next wave
  39. NOMOREWAVES    equ    8    ;No more waves in the file
  40. USERABORT    equ    9    ;Application Abort
  41.  
  42.  
  43. ;====================== The SAMP file MHDR chunk ========================
  44. ;MHDR size is dependant upon the size of the imbedded playMap.
  45.  
  46. ;MHDR:
  47. ;NumOfWaves        dc.b    0        ;The number of waves in this file
  48. ;Format            dc.b    0        ;# of ORIGINAL significant bits from 8-28
  49. ;Flags            dc.b    0        ;Various bits indicate various functions
  50. ;PlayMode        dc.b    0        ;determines play MODE of the playMap
  51. ;NumOfChans        dc.b    4        ;# of bytes in playMap for each midi note
  52. ;Pad                dc.b    0
  53. ;PlayMap            ds.b    128*4    ;a map of which wave numbers to use for
  54.                                     ;each of 128 possible Midi Notes. Default to 4
  55.                                     ;bytes per midi note (i.e. numOfChans = 4)
  56.  
  57. MHDR_NumOfWaves    equ    0
  58. MHDR_Format            equ    1
  59. MHDR_Flags            equ    2
  60. MHDR_PlayMode        equ    3
  61. MHDR_NumOfChans    equ    4
  62. MHDR_Pad                equ    5
  63. MHDR_PlayMap        equ    6
  64.  
  65. ;PlayMode
  66. INDEPENDENT        equ    0
  67. MULTI                equ    1
  68. STEREO            equ    2
  69. PAN                equ    3
  70.  
  71. ;Flags
  72. CONTINUED_FILE equ     0
  73. STEREO_FILE        equ    1
  74.  
  75. ;====================== The SAMP file BODY chunk ======================
  76. ; Every wave has an 80 byte waveHeader, followed by its data. The waveHeader
  77. ; structure is as follows:
  78.  
  79. ;waveHeader:
  80. ;WaveSize            dc.l    0
  81. ;MidiSampNum        dc.w    0    ;for midi
  82. ;LoopType            dc.b    0    ;for midi
  83. ;InsType                dc.b    0
  84. ;Period                dc.l    0
  85. ;Rate                    dc.l    0
  86. ;LoopStart            dc.l    0
  87. ;LoopEnd                dc.l    0
  88. ;RootNote            dc.b    0
  89. ;VelStart            dc.b    0
  90. ;VelTable            ds.w    16
  91. ;ATAKsize            dc.l    0
  92. ;RLSEsize            dc.l    0
  93. ;FATKsize            dc.l    0
  94. ;FRLSsize            dc.l    0
  95. ;USERsize            dc.l    0
  96. ;USERtype            dc.w    0
  97.  
  98. sizeofwaveHeader    equ    80
  99. wh_WaveSize        equ    0
  100. wh_MidiSampNum    equ    4
  101. wh_loopType        equ    6
  102. wh_InsType        equ    7
  103. wh_Period        equ    8
  104. wh_Rate            equ    12
  105. wh_LoopStart    equ    16
  106. wh_LoopEnd        equ    20
  107. wh_RootNote        equ    24
  108. wh_VelStart        equ    25
  109. wh_VelTable        equ    26
  110. wh_ATAKsize        equ    58
  111. wh_RLSEsize        equ    62
  112. wh_FATKsize        equ    66
  113. wh_FRLSsize        equ    70
  114. wh_USERsize        equ    74
  115. wh_USERtype        equ    78
  116.  
  117. SPECIFIC        equ    0
  118. VOLMOD        equ    1
  119. PERMOD        equ    2
  120. LOOPING        equ    3
  121.  
  122. ;================ SAMPlib SampleHeader64 structure =============
  123. ; Used by the lib to load SAMP files
  124.  
  125. ;SampleHeader64:
  126. ;OneShotAddr        dc.l    0
  127. ;Flags                dc.b    0
  128. ;VelStart            dc.b    0
  129. ;VelTable            ds.w    16
  130. ;OneShotEnd            dc.l    0        ;loop start, as well
  131. ;TransTable            dc.l    0        ;points to ORIGINAL_PITCH
  132. ;RootNote            dc.w    0
  133. ;LoopLength            dc.l    0        ;in words, bit 31 cannot be set
  134. ;AttackRate            dc.b    0        ;0 - 255
  135. ;AttackInc            dc.b    0        ;1 - 64
  136. ;DecayRate            dc.b    0        ;1 - 255
  137. ;DecayDec            dc.b    0        ;1 - 64
  138. ;SusLevel            dc.b    0        ;0 - 64
  139. ;ReleaseRate        dc.b    0        ;1 - 255
  140. ;ReleaseDec            dc.b    0        ;1 - 64
  141. ;ClipNote            dc.b    0
  142. ;WaveSize            dc.l    0        ;in bytes
  143.  
  144. sizeofSampleHeader64    equ    64
  145. sh_OneShotAddr        equ    0
  146. sh_Flags                equ    4
  147. sh_VelStart            equ    5
  148. sh_VelTable            equ    6
  149. sh_OneShotEnd        equ    38
  150. sh_TransTable        equ    42
  151. sh_RootNote            equ    46
  152. sh_LoopLength        equ    48
  153. sh_AttackRate        equ    52
  154. sh_AttackInc        equ    53
  155. sh_DecayRate        equ    54
  156. sh_DecayDec            equ    55
  157. sh_SusLevel            equ    56
  158. sh_ReleaseRate        equ    57
  159. sh_ReleaseDec        equ    58
  160. sh_ClipNote            equ    59
  161. sh_WaveSize            equ    60
  162.  
  163. ;====================== For the Transpose table ====================
  164. ; For playback of the wave
  165.  
  166. ;TransposeNode:
  167. ;Next            dc.l    0    ;next TransposeNode in TList
  168. ;Prev            dc.l    0    ;previous TransposeNode in TList
  169. ;Period        dc.l    0    ;in NANOSECONDS
  170. ;Orig            dc.l    0    ;address of ORIGINAL_PITCH
  171. ;TSize        dc.l    0    ;total size of node plus table
  172. ;pad            dc.b    0
  173. ;Hosts        dc.b    0    ;# of waves using this table
  174.  
  175. sizeofTNode    equ    26    ;counting mandatory appended ORIGINAL_PITCH period entry
  176. tn_Next        equ    0
  177. tn_Prev        equ    4
  178. tn_Period    equ    8
  179. tn_Orig        equ    12
  180. tn_TSize        equ    16
  181. tn_Hosts        equ    21
  182.  
  183.  
  184. ;=================== the library's SAMPInfo structure ================
  185.  
  186. ;SAMPInfo:
  187. ;FileHandle        dc.l    0
  188. ;IFFTypeID        dc.b    'FORM'    ;could be CAT or LIST
  189. ;FileSize        dc.l    0
  190. ;SAMP                dc.b    'SAMP'
  191. ;MHDR                dc.b    'MHDR'
  192. ;MHDRSize        dc.l    0
  193. ;NumOfWaves        dc.b    0
  194. ;Format            dc.b    0
  195. ;Flags            dc.b    0
  196. ;PlayMode        dc.b    0
  197. ;NumOfChans        dc.b    0
  198. ;Pad                dc.b    0
  199. ;PlayMap            ds.b    128*NumOfChans
  200. ;ANNOChunk        dc.l    0
  201. ;BODYChunk        dc.l    0
  202. ;NAMEChunk        dc.l    0
  203. ;AUTHChunk        dc.l    0
  204. ;COPYChunk        dc.l    0
  205. ;ATAK                dc.l    0
  206. ;RLSE                dc.l    0
  207. ;FATK                dc.l    0
  208. ;FRLS                dc.l    0
  209. ;USER                dc.l    0
  210. ;EXTRA            dc.l    0
  211. ;SeekPos            dc.l    0
  212. ;MemType            dc.l    0
  213. ;MaxChars        dc.w    0
  214. ;LowPer            dc.w    0
  215. ;HighPer            dc.w    0
  216.  
  217. sizeofSAMPInfo    equ    600
  218. si_Handle        equ    0
  219. si_TypeID        equ    4
  220. si_FileSize        equ    8
  221. si_SAMP            equ    12
  222. si_MHDR            equ    16
  223. si_MHDRSize        equ    20
  224. si_NumOfWaves    equ    24
  225. si_Format        equ    25
  226. si_Flags            equ    26
  227. si_PlayMode        equ    27
  228. si_NumOfChans    equ    28
  229. si_Pad            equ    29
  230. si_PlayMap        equ    30
  231. si_ANNOChunk    equ    542
  232. si_BODYChunk    equ    546
  233. si_NAMEChunk    equ    550
  234. si_AUTHChunk    equ    554
  235. si_COPYChunk    equ    558
  236. si_ATAK            equ    562
  237. si_RLSE            equ    566
  238. si_FATK            equ    570
  239. si_FRLS            equ    574
  240. si_USER            equ    578
  241. si_EXTRA            equ    582
  242. si_SeekPos        equ    586
  243. si_MemType        equ    590
  244. si_MaxChars        equ    594
  245. si_LowPer        equ    596
  246. si_HighPer        equ    598
  247.  
  248. ;======================== Instrument types =========================
  249. ; You can construct the InsType field by OR'ing the family with the
  250. ; class. For example,
  251. ;
  252. ;    InsType = STRING | VIOLA_BOW
  253.  
  254. ;Instrument Families
  255. STRING        equ    $10
  256. WOODWIND        equ    $20
  257. KEYBOARD        equ    $30
  258. GUITAR        equ    $40
  259. VOICE            equ    $50
  260. DRUM1            equ    $60
  261. DRUM2            equ    $70
  262. PERCUSSION1 equ    $80
  263. BRASS1        equ    $90
  264. BRASS2        equ    $A0
  265. CYMBAL        equ    $B0
  266. EFFECT1        equ    $C0
  267. EFFECT2        equ    $D0
  268. SYNTH            equ    $E0
  269.  
  270. ; Instrument Classes
  271.  
  272. ; For the STRING family, the high nibble is as follows:
  273.  
  274. VIOLIN_BOW    equ    $1
  275. VIOLIN_PLUCK equ    $2
  276. VIOLIN_GLIS    equ    $3
  277. VIOLIN_TREM    equ    $4
  278. VIOLA_BOW    equ    $5
  279. VIOLA_PLUCK    equ    $6
  280. VIOLA_GLIS    equ    $7
  281. VIOLA_TREM    equ    $8
  282. CELLO_BOW    equ    $9
  283. CELLO_PLUCK    equ    $A
  284. CELLO_GLIS    equ    $B
  285. CELLO_TREM    equ    $C
  286. BASS_BOW        equ    $D
  287. BASS_PLUCK    equ    $E
  288. BASS_TREM    equ    $F
  289.  
  290. ;For the BRASS1 family, the high nibble is as follows:
  291.  
  292. BARITONE_SAX    equ    $1
  293. BARI_GROWL        equ    $2
  294. TENOR_SAX        equ    $3
  295. TENOR_GROWL        equ    $4
  296. ALTO_SAX            equ    $5
  297. ALTO_GROWL        equ    $6
  298. SOPRANO_SAX        equ    $7
  299. SOPRANO_GROWL    equ    $8
  300. TRUMPET            equ    $9
  301. MUTED_TRUMPET    equ    $A
  302. TRUMPET_DROP    equ    $B
  303. TROMBONE            equ    $C
  304. TROMBONE_SLIDE equ    $D
  305. TROMBONE_MUTE    equ    $E
  306.  
  307. ;For the BRASS2 family, the high nibble is as follows:
  308.  
  309. FRENCH_HORN    equ    $1
  310. TUBA            equ    $2
  311. FLUGAL_HORN    equ    $3
  312. ENGLISH_HORN equ    $4
  313.  
  314. ;For the WOODWIND family, the high nibble is as follows:
  315.  
  316. CLARINET            equ    $1
  317. FLUTE                equ    $2
  318. PAN_FLUTE        equ    $3
  319. OBOE                equ    $4
  320. PICCOLO            equ    $5
  321. RECORDER            equ    $6
  322. BASSOON            equ    $7
  323. BASS_CLARINET    equ    $8
  324. HARMONICA        equ    $9
  325.  
  326. ;For the KEYBOARD family, the high nibble is as follows:
  327.  
  328. GRAND_PIANO        equ    $1
  329. ELEC_PIANO        equ    $2
  330. HONKYTONK        equ    $3
  331. TOY_PIANO        equ    $4
  332. HARPSICHORD        equ    $5
  333. CLAVINET            equ    $6
  334. PIPE_ORGAN        equ    $7
  335. HAMMOND_B3        equ    $8
  336. FARFISA_ORGAN    equ    $9
  337. HARP                equ    $A
  338.  
  339. ;For the DRUM1 family, the high nibble is as follows:
  340.  
  341. KICK            equ    $1
  342. SNARE            equ    $2
  343. TOM            equ    $3
  344. TIMBALES        equ    $4
  345. CONGA_HIT    equ    $5
  346. CONGA_SLAP    equ    $6
  347. BRUSH_SNARE    equ    $7
  348. ELEC_SNARE    equ    $8
  349. ELEC_KICK    equ    $9
  350. ELEC_TOM        equ    $A
  351. RIMSHOT        equ    $B
  352. CROSS_STICK equ    $C
  353. BONGO            equ    $D
  354. STEEL_DRUM    equ    $E
  355. DOUBLE_TOM    equ    $F
  356.  
  357. ;For the DRUM2 family, the high nibble is as follows:
  358.  
  359. TIMPANI        equ    $1
  360. TIMPANI_ROLL equ    $2
  361. LOG_DRUM        equ    $3
  362.  
  363. ;For the PERCUSSION1 family, the high nibble is as follows:
  364.  
  365. BLOCK            equ    $1
  366. COWBELL        equ    $2
  367. TRIANGLE        equ    $3
  368. TAMBOURINE    equ    $4
  369. WHISTLE        equ    $5
  370. MARACAS        equ    $6
  371. BELL            equ    $7
  372. VIBES            equ    $8
  373. MARIMBA        equ    $9
  374. XYLOPHONE    equ    $A
  375. TUBULAR_BELLS equ    $B
  376. GLOCKENSPEIL equ    $C
  377.  
  378. ;For the CYMBAL family, the high nibble is as follows:
  379.  
  380. CLOSED_HIHAT equ    $1
  381. OPEN_HIHAT    equ    $2
  382. STEP_HIHAT    equ    $3
  383. RIDE            equ    $4
  384. BELL_CYMBAL    equ    $5
  385. CRASH            equ    $6
  386. CHOKE_CRASH    equ    $7
  387. GONG            equ    $8
  388. BELL_TREE    equ    $9
  389. CYMBAL_ROLL    equ    $A
  390.  
  391. ;For the GUITAR family, the high nibble is as follows:
  392.  
  393. ELECTRIC        equ    $1
  394. MUTED_ELEC    equ    $2
  395. DISTORTED    equ    $3
  396. ACOUSTIC        equ    $4
  397. STRING_12    equ    $5
  398. NYLON_STRING equ    $6
  399. POWER_CHORD    equ    $7
  400. HARMONICS    equ    $8
  401. CHORD_STRUM    equ    $9
  402. BANJO            equ    $A
  403. ELEC_BASS    equ    $B
  404. SLAPPED_BASS equ    $C
  405. POPPED_BASS    equ    $D
  406. SITAR            equ    $E
  407. MANDOLIN        equ    $F
  408.  
  409. ;For the VOICE family, the high nibble is as follows:
  410.  
  411. MALE_AHH        equ    $1
  412. FEMALE_AHH    equ    $2
  413. MALE_OOO        equ    $3
  414. FEMALE_OOO    equ    $4
  415. FEMALE        equ    $5
  416. BREATHY        equ    $6
  417. LAUGH            equ    $7
  418. WHISTLER        equ    $8
  419.  
  420. ;For the EFFECTS1 family, the high nibble is as follows:
  421.  
  422. EXPLOSION        equ    $1
  423. GUNSHOT            equ    $2
  424. CREAKING_DOOR    equ    $3
  425. DOOR_SLAM        equ    $4
  426. DOOR_CLOSE        equ    $5
  427. SPACEGUN            equ    $6
  428. JET_ENGINE        equ    $7
  429. PROPELLER        equ    $8
  430. HELOCOPTER        equ    $9
  431. BROKEN_GLASS    equ    $A
  432. THUNDER            equ    $B
  433. RAIN                equ    $C
  434. BIRDS                equ    $D
  435. JUNGLE_NOISES    equ    $E
  436. FOOTSTEP            equ    $F
  437.  
  438. ;For the EFFECTS2 family, the high nibble is as follows:
  439.  
  440. MACHINE_GUN        equ    $1
  441. TELEPHONE        equ    $2
  442. DOG_BARK            equ    $3
  443. DOG_GROWL        equ    $4
  444. BOAT_WHISTLE    equ    $5
  445. OCEAN                equ    $6
  446. WIND                equ    $7
  447. CROWD_BOOS        equ    $8
  448. APPLAUSE            equ    $9
  449. ROARING_CROWDS equ    $A
  450. SCREAM            equ    $B
  451. SWORD_CLASH        equ    $C
  452. AVALANCE            equ    $D
  453. BOUNCING_BALL    equ    $E
  454. BALL_ON_BAT        equ    $F    /* OR CLUB */
  455.  
  456. ;For the SYNTH family, the high nibble is as follows:
  457.  
  458. SYNTH_STRINGS    equ    $1
  459. SQUARE_WAVE        equ    $2
  460. SAWTOOTH_WAVE    equ    $3
  461. TRI_WAVE            equ    $4
  462. SINE_WAVE        equ    $5
  463. NOISE                equ    $6
  464.