as released 2002-12-25
This commit is contained in:
commit
5b05925be2
|
@ -0,0 +1,187 @@
|
|||
.OPTIMIZE
|
||||
|
||||
version = production
|
||||
#version = debugging
|
||||
|
||||
timbre_file = gmtimbre
|
||||
#timbre_file = leetimbr
|
||||
|
||||
prg_dir = .
|
||||
obj_debugging = $(prg_dir)\objdb
|
||||
obj_production = $(prg_dir)\obj
|
||||
obj_dir = $(obj_$(version))
|
||||
lib_dir = $(prg_dir)\lib
|
||||
output_dir = $(prg_dir)
|
||||
main_dir = $(prg_dir)\source
|
||||
header_dir = $(main_dir)
|
||||
tasm_include_dir = /i$(main_dir)
|
||||
|
||||
model = f
|
||||
compiler = w
|
||||
lib_filename = audio_$(compiler)$(model).lib
|
||||
lib_name = $(obj_dir)\$(lib_filename)
|
||||
final_lib = $(output_dir)\$(lib_filename)
|
||||
|
||||
.h : $(header_dir)
|
||||
.c : $(header_dir)
|
||||
.asm : $(header_dir)
|
||||
.obj : $(obj_dir)
|
||||
|
||||
offlib_files = gf1_osf.lib
|
||||
lib_files = gf1_osf.lib &
|
||||
pawe32.lib
|
||||
|
||||
#object_files = &
|
||||
object_files = $(timbre_file).obj &
|
||||
al_midi.obj &
|
||||
awe32.obj &
|
||||
blaster.obj &
|
||||
debugio.obj &
|
||||
dma.obj &
|
||||
dpmi.obj &
|
||||
fx_man.obj &
|
||||
gus.obj &
|
||||
gusmidi.obj &
|
||||
guswave.obj &
|
||||
irq.obj &
|
||||
ll_man.obj &
|
||||
midi.obj &
|
||||
mpu401.obj &
|
||||
multivoc.obj &
|
||||
mv_mix.obj &
|
||||
mv_mix16.obj &
|
||||
mvreverb.obj &
|
||||
music.obj &
|
||||
pas16.obj &
|
||||
pitch.obj &
|
||||
sndscape.obj &
|
||||
sndsrc.obj &
|
||||
task_man.obj &
|
||||
user.obj
|
||||
|
||||
offobject_files = blaster.obj &
|
||||
debugio.obj &
|
||||
dma.obj &
|
||||
dpmi.obj &
|
||||
fx_man.obj &
|
||||
gus.obj &
|
||||
guswave.obj &
|
||||
irq.obj &
|
||||
ll_man.obj &
|
||||
multivoc.obj &
|
||||
mv_mix.obj &
|
||||
pas16.obj &
|
||||
pitch.obj &
|
||||
sndscape.obj &
|
||||
sndsrc.obj &
|
||||
task_man.obj &
|
||||
user.obj
|
||||
|
||||
|
||||
msg_debugging = Creating debugging library...
|
||||
tasm_debugging = /t /zi /p /mx /w2 $(tasm_include_dir)
|
||||
wcc_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
wlink_debugging =
|
||||
|
||||
gus_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
gusmidi_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
multivoc_debugging = /zq /w4 /d1 /omaxne /zp4 /5r /zu /d2 /i=$(header_dir)
|
||||
pas16_debugging = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
task_man_debugging = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
midi_debugging = /zq /w4 /d2 /zu /i=$(header_dir)
|
||||
al_midi_debugging = /zq /w4 /d2 /zu /i=$(header_dir)
|
||||
|
||||
msg_production = Creating production library...
|
||||
tasm_production = /t /zi /p /mx /w2 $(tasm_include_dir)
|
||||
#tasm_production = /m /oi /zi $(tasm_include_dir)
|
||||
wcc_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
wlink_production =
|
||||
|
||||
gus_production = /zq /w4 /d2 /i=$(header_dir)
|
||||
gusmidi_production = /zq /w4 /d2 /i=$(header_dir)
|
||||
multivoc_production = /zq /w4 /d1 /omaxne /zp4 /5r /zu /i=$(header_dir)
|
||||
music_production = /zq /w4 /d1 /omaxne /zp4 /5r /zu /i=$(header_dir)
|
||||
pas16_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
task_man_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
midi_production = /zq /w4 /d1 /omaxnet /zp4 /5r /zu /i=$(header_dir)
|
||||
al_midi_production = /zq /w4 /d1 /omaxnet /zp4 /5r /zu /i=$(header_dir)
|
||||
|
||||
$(final_lib) : $(lib_name)
|
||||
copy $(lib_name) $(final_lib)
|
||||
|
||||
$(lib_name) : $(object_files) audio.mak
|
||||
@echo $(msg_$(version))
|
||||
%create temp.lnk
|
||||
for %i in ($(object_files)) do %append temp.lnk -+$(obj_dir)\%i
|
||||
for %i in ($(lib_files)) do %append temp.lnk -+$(lib_dir)\%i
|
||||
wlib $^@ /n /b @temp.lnk
|
||||
del temp.lnk
|
||||
|
||||
.asm.obj :
|
||||
tasm $(tasm_$(version)) $[* $(obj_dir)\$^&
|
||||
|
||||
.c.obj :
|
||||
wcc386 $(wcc_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
|
||||
al_midi.obj : al_midi.c dpmi.h interrupt.h sndcards.h blaster.h user.h al_midi.h _al_midi.h ll_man.h
|
||||
wcc386 $(al_midi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
awe32.obj : awe32.c dpmi.h blaster.h ctaweapi.h awe32.h
|
||||
|
||||
blaster.obj : blaster.c dpmi.h dma.h irq.h blaster.h _blaster.h
|
||||
|
||||
debugio.obj : debugio.c debugio.h
|
||||
|
||||
dma.obj : dma.c dma.h
|
||||
|
||||
dpmi.obj : dpmi.c dpmi.h
|
||||
|
||||
fx_man.obj : fx_man.c ll_man.h sndcards.h multivoc.h blaster.h pas16.h &
|
||||
sndscape.h guswave.h sndsrc.h user.h fx_man.h
|
||||
|
||||
$(timbre_file).obj : $(timbre_file).c
|
||||
|
||||
gus.obj : gus.c usrhooks.h interrupt.h gusmidi.h guswave.h _guswave.h newgf1.h
|
||||
wcc386 $(gus_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
gusmidi.obj : gusmidi.c usrhooks.h interrupt.h gusmidi.h newgf1.h
|
||||
wcc386 $(gusmidi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
guswave.obj : guswave.c debugio.h interrupt.h ll_man.h pitch.h user.h _guswave.h guswave.h newgf1.h multivoc.h
|
||||
|
||||
irq.obj : irq.c irq.h
|
||||
|
||||
ll_man.obj : ll_man.c dpmi.h ll_man.h
|
||||
|
||||
midi.obj : midi.c interrupt.h dpmi.h standard.h task_man.h ll_man.h usrhooks.h music.h _midi.h midi.h sndcards.h
|
||||
wcc386 $(midi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
mpu401.obj : mpu401.c dpmi.h user.h mpu401.h
|
||||
|
||||
multivoc.obj : multivoc.c usrhooks.h interrupt.h dpmi.h ll_man.h sndcards.h &
|
||||
blaster.h sndscape.h pas16.h sndsrc.h pitch.h multivoc.h _multivc.h dma.h
|
||||
wcc386 $(multivoc_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
mv_mix.obj : mv_mix.asm
|
||||
mv_mix16.obj : mv_mix16.asm
|
||||
mvreverb.obj : mvreverb.asm
|
||||
|
||||
music.obj : music.c ll_man.h task_man.h sndcards.h midi.h al_midi.h pas16.h blaster.h gusmidi.h mpu401.h awe32.h sndscape.h user.h music.h
|
||||
wcc386 $(music_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
pas16.obj : pas16.c dpmi.h dma.h interrupt.h irq.h pas16.h _pas16.h
|
||||
wcc386 $(pas16_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
pitch.obj : pitch.c dpmi.h standard.h pitch.h
|
||||
|
||||
sndscape.obj : sndscape.c interrupt.h dpmi.h dma.h irq.h sndscape.h _sndscap.h
|
||||
|
||||
sndsrc.obj : sndsrc.c dpmi.h task_man.h sndcards.h user.h sndsrc.h
|
||||
|
||||
task_man.obj : task_man.c dpmi.h interrupt.h linklist.h usrhooks.h task_man.h
|
||||
wcc386 $(task_man_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
user.obj : user.c user.h
|
||||
|
||||
#myprint.obj : myprint.c myprint.h
|
|
@ -0,0 +1,192 @@
|
|||
.OPTIMIZE
|
||||
|
||||
version = production
|
||||
#version = debugging
|
||||
|
||||
timbre_file = gmtimbre
|
||||
#timbre_file = leetimbr
|
||||
|
||||
prg_dir = .
|
||||
obj_debugging = $(prg_dir)\objdb
|
||||
obj_production = $(prg_dir)\obj
|
||||
obj_dir = $(obj_$(version))
|
||||
lib_dir = $(prg_dir)\lib
|
||||
output_dir = $(prg_dir)
|
||||
main_dir = $(prg_dir)\source
|
||||
header_dir = $(main_dir)
|
||||
tasm_include_dir = /i$(main_dir)
|
||||
|
||||
model = f
|
||||
compiler = w
|
||||
lib_filename = audio_$(compiler)$(model).lib
|
||||
lib_name = $(obj_dir)\$(lib_filename)
|
||||
final_lib = $(output_dir)\$(lib_filename)
|
||||
|
||||
.h : $(header_dir)
|
||||
.c : $(header_dir)
|
||||
.asm : $(header_dir)
|
||||
.obj : $(obj_dir)
|
||||
|
||||
offlib_files = gf1_osf.lib
|
||||
lib_files = gf1_osf.lib &
|
||||
pawe32.lib
|
||||
|
||||
#object_files = &
|
||||
object_files = $(timbre_file).obj &
|
||||
adlibfx.obj &
|
||||
al_midi.obj &
|
||||
awe32.obj &
|
||||
blaster.obj &
|
||||
debugio.obj &
|
||||
dma.obj &
|
||||
dpmi.obj &
|
||||
fx_man.obj &
|
||||
gus.obj &
|
||||
gusmidi.obj &
|
||||
guswave.obj &
|
||||
irq.obj &
|
||||
ll_man.obj &
|
||||
midi.obj &
|
||||
mpu401.obj &
|
||||
multivoc.obj &
|
||||
mv_mix.obj &
|
||||
music.obj &
|
||||
pas16.obj &
|
||||
pcfx.obj &
|
||||
pitch.obj &
|
||||
sndscape.obj &
|
||||
sndsrc.obj &
|
||||
task_man.obj &
|
||||
user.obj
|
||||
|
||||
offobject_files = adlibfx.obj &
|
||||
blaster.obj &
|
||||
debugio.obj &
|
||||
dma.obj &
|
||||
dpmi.obj &
|
||||
fx_man.obj &
|
||||
gus.obj &
|
||||
guswave.obj &
|
||||
irq.obj &
|
||||
ll_man.obj &
|
||||
multivoc.obj &
|
||||
mv_mix.obj &
|
||||
pas16.obj &
|
||||
pcfx.obj &
|
||||
pitch.obj &
|
||||
sndscape.obj &
|
||||
sndsrc.obj &
|
||||
task_man.obj &
|
||||
user.obj
|
||||
|
||||
|
||||
msg_debugging = Creating debugging library...
|
||||
tasm_debugging = /t /zi /p /mx /w2 $(tasm_include_dir)
|
||||
wcc_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
wlink_debugging =
|
||||
|
||||
gus_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
gusmidi_debugging = /zq /w4 /d2 /i=$(header_dir)
|
||||
multivoc_debugging = /zq /w4 /d1 /omaxne /zp4 /5r /zu /d2 /i=$(header_dir)
|
||||
pas16_debugging = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
task_man_debugging = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
midi_debugging = /zq /w4 /d2 /zu /i=$(header_dir)
|
||||
al_midi_debugging = /zq /w4 /d2 /zu /i=$(header_dir)
|
||||
|
||||
msg_production = Creating production library...
|
||||
tasm_production = /t /zi /p /mx /w2 $(tasm_include_dir)
|
||||
wcc_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
wlink_production =
|
||||
|
||||
gus_production = /zq /w4 /d2 /i=$(header_dir)
|
||||
gusmidi_production = /zq /w4 /d2 /i=$(header_dir)
|
||||
multivoc_production = /zq /w4 /d1 /omaxne /zp4 /5r /zu /i=$(header_dir)
|
||||
pas16_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
task_man_production = /zq /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
midi_production = /zq /w4 /d1 /omaxnet /zp4 /5r /zu /i=$(header_dir)
|
||||
al_midi_production = /zq /w4 /d1 /omaxnet /zp4 /5r /zu /i=$(header_dir)
|
||||
|
||||
$(final_lib) : $(lib_name)
|
||||
copy $(lib_name) $(final_lib)
|
||||
|
||||
$(lib_name) : $(object_files) audio.mak
|
||||
echo ******************************************************************
|
||||
echo
|
||||
echo $(msg_$(version))
|
||||
echo
|
||||
echo ******************************************************************
|
||||
%create temp.lnk
|
||||
for %i in ($(object_files)) do %append temp.lnk -+$(obj_dir)\%i
|
||||
for %i in ($(lib_files)) do %append temp.lnk -+$(lib_dir)\%i
|
||||
wlib $^@ /n /b @temp.lnk
|
||||
del temp.lnk
|
||||
|
||||
.asm.obj :
|
||||
tasm $(tasm_$(version)) $[* $(obj_dir)\$^&
|
||||
|
||||
.c.obj :
|
||||
wcc386 $(wcc_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
|
||||
adlibfx.obj : adlibfx.c dpmi.h task_man.h interrupt.h al_midi.h adlibfx.h
|
||||
|
||||
al_midi.obj : al_midi.c dpmi.h interrupt.h sndcards.h blaster.h user.h al_midi.h _al_midi.h ll_man.h
|
||||
wcc386 $(al_midi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
awe32.obj : awe32.c dpmi.h blaster.h ctaweapi.h awe32.h
|
||||
|
||||
blaster.obj : blaster.c dpmi.h dma.h irq.h blaster.h _blaster.h
|
||||
|
||||
debugio.obj : debugio.c debugio.h
|
||||
|
||||
dma.obj : dma.c dma.h
|
||||
|
||||
dpmi.obj : dpmi.c dpmi.h
|
||||
|
||||
fx_man.obj : fx_man.c ll_man.h sndcards.h multivoc.h blaster.h pas16.h &
|
||||
sndscape.h guswave.h sndsrc.h adlibfx.h pcfx.h user.h fx_man.h
|
||||
|
||||
$(timbre_file).obj : $(timbre_file).c
|
||||
|
||||
gus.obj : gus.c usrhooks.h interrupt.h gusmidi.h guswave.h _guswave.h newgf1.h
|
||||
wcc386 $(gus_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
gusmidi.obj : gusmidi.c usrhooks.h interrupt.h gusmidi.h newgf1.h
|
||||
wcc386 $(gusmidi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
guswave.obj : guswave.c debugio.h interrupt.h ll_man.h pitch.h user.h _guswave.h guswave.h newgf1.h multivoc.h
|
||||
|
||||
irq.obj : irq.c irq.h
|
||||
|
||||
ll_man.obj : ll_man.c dpmi.h ll_man.h
|
||||
|
||||
midi.obj : midi.c interrupt.h dpmi.h standard.h task_man.h ll_man.h usrhooks.h _midi.h midi.h
|
||||
wcc386 $(midi_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
mpu401.obj : mpu401.c dpmi.h user.h mpu401.h
|
||||
|
||||
multivoc.obj : multivoc.c usrhooks.h interrupt.h dpmi.h ll_man.h sndcards.h &
|
||||
blaster.h sndscape.h pas16.h sndsrc.h pitch.h multivoc.h _multivc.h dma.h
|
||||
wcc386 $(multivoc_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
mv_mix.obj : mv_mix.asm
|
||||
|
||||
music.obj : music.c ll_man.h task_man.h sndcards.h midi.h al_midi.h pas16.h blaster.h gusmidi.h mpu401.h awe32.h sndscape.h user.h music.h
|
||||
|
||||
pas16.obj : pas16.c dpmi.h dma.h interrupt.h irq.h pas16.h _pas16.h
|
||||
wcc386 $(pas16_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
pcfx.obj : pcfx.c dpmi.h task_man.h interrupt.h pcfx.h
|
||||
|
||||
pitch.obj : pitch.c dpmi.h standard.h pitch.h
|
||||
|
||||
sndscape.obj : sndscape.c interrupt.h dpmi.h dma.h irq.h sndscape.h _sndscap.h
|
||||
|
||||
sndsrc.obj : sndsrc.c dpmi.h task_man.h sndcards.h user.h sndsrc.h
|
||||
|
||||
task_man.obj : task_man.c dpmi.h interrupt.h linklist.h usrhooks.h task_man.h
|
||||
wcc386 $(task_man_$(version)) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
user.obj : user.c user.h
|
||||
|
||||
#myprint.obj : myprint.c myprint.h
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
call wmake.bat
|
||||
copy audio_wf.lib public
|
||||
copy notes.txt public
|
||||
copy midi.txt public
|
||||
copy notes.txt public
|
||||
copy audio_wf.lib public\include
|
||||
copy source\fx_man.h public\include
|
||||
copy source\music.h public\include
|
||||
copy source\sndcards.h public\include
|
||||
copy source\task_man.h public\include
|
||||
cd public\timer
|
||||
wmake
|
||||
cd ..\..\public\ps
|
||||
wmake
|
||||
cd ..\..\public\pm
|
||||
wmake
|
||||
cd ..\..
|
|
@ -0,0 +1,205 @@
|
|||
#
|
||||
# GUSROTT.INI - Gravis Ultrasound<TM> .INI file for use with
|
||||
# Rise of the Triad<TM> by Apogee Software, Ltd.
|
||||
# Patch data configured by Lee Jackson.
|
||||
#
|
||||
# *** WARNING - DO NOT EDIT OR IN ANY WAY CHANGE THIS FILE!!! ***
|
||||
#
|
||||
# Ultrasound<TM> is a trademark of Advanced Gravis Computer
|
||||
# Technology, Ltd.
|
||||
#
|
||||
# Rise of the Triad<TM> is a trademark of Apogee Software, Ltd.
|
||||
#
|
||||
#
|
||||
#Explanation of Columns: Patch # 256K 512K 768K 1024K Patch Name
|
||||
#
|
||||
0, 2, 2, 1, 0, acpiano
|
||||
1, 2, 2, 1, 1, britepno
|
||||
2, 128, 128, 128, 128, synpiano
|
||||
3, 128, 128, 128, 128, honky
|
||||
4, 2, 2, 4, 4, epiano1
|
||||
5, 128, 128, 128, 128, epiano2
|
||||
6, 128, 128, 128, 128, hrpschrd
|
||||
7, 128, 128, 128, 128, clavinet
|
||||
8, 128, 128, 128, 128, celeste
|
||||
9, 128, 128, 128, 128, glocken
|
||||
10, 128, 128, 128, 128, musicbox
|
||||
11, 2, 11, 11, 11, vibes
|
||||
12, 128, 128, 128, 128, marimba
|
||||
13, 128, 128, 128, 128, xylophon
|
||||
14, 2, 14, 14, 14, tubebell
|
||||
15, 128, 128, 128, 128, santur
|
||||
16, 128, 128, 128, 128, homeorg
|
||||
17, 20, 17, 17, 17, percorg
|
||||
18, 128, 128, 128, 128, rockorg
|
||||
19, 20, 19, 19, 19, church
|
||||
20, 20, 20, 20, 20, reedorg
|
||||
21, 2, 21, 21, 21, accordn
|
||||
22, 128, 128, 128, 128, harmonca
|
||||
23, 128, 128, 128, 128, concrtna
|
||||
24, 128, 128, 128, 128, nyguitar
|
||||
25, 128, 128, 128, 128, acguitar
|
||||
26, 128, 128, 128, 128, jazzgtr
|
||||
27, 24, 27, 27, 27, cleangtr
|
||||
28, 24, 28, 28, 28, mutegtr
|
||||
29, 29, 29, 29, 29, odguitar
|
||||
30, 29, 30, 30, 30, distgtr
|
||||
31, 29, 29, 30, 31, gtrharm
|
||||
32, 128, 128, 128, 128, acbass
|
||||
33, 39, 33, 33, 33, fngrbass
|
||||
34, 39, 33, 34, 34, pickbass
|
||||
35, 39, 33, 33, 35, fretless
|
||||
36, 39, 36, 36, 36, slapbas1
|
||||
37, 39, 36, 36, 37, slapbas2
|
||||
38, 39, 38, 38, 38, synbass1
|
||||
39, 39, 38, 38, 39, synbass2
|
||||
40, 128, 128, 128, 128, violin
|
||||
41, 128, 128, 128, 128, viola
|
||||
42, 128, 128, 128, 128, cello
|
||||
43, 128, 128, 128, 128, contraba
|
||||
44, 128, 128, 128, 128, tremstr
|
||||
45, 2, 46, 45, 45, pizzcato
|
||||
46, 2, 46, 46, 46, harp
|
||||
47, 47, 47, 47, 47, timpani
|
||||
48, 51, 51, 48, 48, marcato
|
||||
49, 128, 128, 128, 128, slowstr
|
||||
50, 128, 128, 128, 128, synstr1
|
||||
51, 51, 51, 51, 51, synstr2
|
||||
52, 52, 52, 52, 52, choir
|
||||
53, 128, 128, 128, 128, doo
|
||||
54, 128, 128, 128, 128, voices
|
||||
55, 128, 128, 128, 128, orchhit
|
||||
56, 56, 56, 56, 56, trumpet
|
||||
57, 56, 56, 56, 57, trombone
|
||||
58, 56, 56, 58, 58, tuba
|
||||
59, 128, 128, 128, 128, mutetrum
|
||||
60, 56, 60, 60, 60, frenchrn
|
||||
61, 56, 61, 61, 61, hitbrass
|
||||
62, 56, 56, 62, 62, synbras1
|
||||
63, 56, 56, 62, 62, synbras2
|
||||
64, 128, 128, 128, 128, sprnosax
|
||||
65, 65, 65, 65, 65, altosax
|
||||
66, 65, 65, 65, 66, tenorsax
|
||||
67, 128, 128, 128, 128, barisax
|
||||
68, 65, 65, 68, 68, oboe
|
||||
69, 128, 128, 128, 128, englhorn
|
||||
70, 128, 128, 128, 128, bassoon
|
||||
71, 65, 71, 71, 71, clarinet
|
||||
72, 128, 128, 128, 128, piccolo
|
||||
73, 73, 73, 73, 73, flute
|
||||
74, 128, 128, 128, 128, recorder
|
||||
75, 128, 128, 128, 128, woodflut
|
||||
76, 128, 128, 128, 128, bottle
|
||||
77, 128, 128, 128, 128, shakazul
|
||||
78, 73, 73, 73, 73, whistle
|
||||
79, 73, 73, 73, 79, ocarina
|
||||
80, 81, 80, 80, 80, sqrwave
|
||||
81, 81, 81, 81, 81, sawwave
|
||||
82, 20, 20, 20, 20, calliope
|
||||
83, 128, 128, 128, 128, chiflead
|
||||
84, 128, 128, 128, 128, charang
|
||||
85, 128, 128, 128, 128, voxlead
|
||||
86, 52, 52, 29, 29, lead5th
|
||||
87, 128, 128, 128, 128, basslead
|
||||
88, 128, 128, 128, 128, fantasia
|
||||
89, 128, 128, 128, 128, warmpad
|
||||
90, 128, 128, 128, 128, polysyn
|
||||
91, 81, 81, 81, 81, ghostie
|
||||
92, 128, 128, 128, 128, bowglass
|
||||
93, 52, 52, 52, 103, metalpad
|
||||
94, 19, 19, 19, 19, halopad
|
||||
95, 52, 52, 52, 95, sweeper
|
||||
96, 128, 128, 128, 128, aurora
|
||||
97, 128, 128, 128, 128, soundtrk
|
||||
98, 128, 128, 128, 128, crystal
|
||||
99, 128, 128, 128, 128, atmosphr
|
||||
100, 128, 128, 128, 128, freshair
|
||||
101, 128, 128, 128, 128, unicorn
|
||||
102, 128, 128, 128, 128, echovox
|
||||
103, 52, 52, 103, 103, startrak
|
||||
104, 128, 128, 128, 128, sitar
|
||||
105, 128, 128, 128, 128, banjo
|
||||
106, 128, 128, 128, 128, shamisen
|
||||
107, 128, 128, 128, 128, koto
|
||||
108, 128, 128, 128, 128, kalimba
|
||||
109, 128, 128, 128, 128, bagpipes
|
||||
110, 128, 128, 128, 128, fiddle
|
||||
111, 128, 128, 128, 128, shannai
|
||||
112, 128, 128, 128, 128, carillon
|
||||
113, 128, 128, 128, 128, agogo
|
||||
114, 128, 128, 128, 128, steeldrm
|
||||
115, 128, 128, 128, 128, woodblk
|
||||
116, 128, 128, 128, 128, taiko
|
||||
117, 47, 117, 117, 117, toms
|
||||
118, 128, 128, 128, 128, syntom
|
||||
119, 128, 128, 128, 119, revcym
|
||||
120, 128, 128, 128, 128, fx-fret
|
||||
121, 128, 128, 128, 128, fx-blow
|
||||
122, 128, 128, 128, 128, seashore
|
||||
123, 128, 128, 128, 128, jungle
|
||||
124, 128, 128, 128, 128, telephon
|
||||
125, 128, 128, 128, 128, helicptr
|
||||
126, 128, 128, 128, 128, applause
|
||||
127, 128, 128, 128, 128, pistol
|
||||
128, 128, 128, 128, 128, blank
|
||||
155, 128, 128, 128, 128, highq
|
||||
156, 128, 128, 128, 128, slap
|
||||
157, 128, 128, 128, 128, scratch1
|
||||
158, 128, 128, 128, 128, scratch2
|
||||
159, 128, 128, 128, 128, sticks
|
||||
160, 128, 128, 128, 128, sqrclick
|
||||
161, 128, 128, 128, 128, metclick
|
||||
162, 128, 128, 128, 128, metbell
|
||||
163, 164, 164, 163, 163, kick1
|
||||
164, 164, 164, 164, 164, kick2
|
||||
165, 165, 165, 165, 165, stickrim
|
||||
166, 168, 168, 166, 166, snare1
|
||||
167, 165, 167, 167, 167, claps
|
||||
168, 168, 168, 168, 168, snare2
|
||||
169, 175, 171, 169, 169, tomlo2
|
||||
170, 170, 170, 170, 170, hihatcl
|
||||
171, 175, 171, 171, 171, tomlo1
|
||||
172, 172, 172, 172, 172, hihatpd
|
||||
173, 175, 175, 173, 173, tommid2
|
||||
174, 174, 174, 174, 174, hihatop
|
||||
175, 178, 175, 175, 175, tommid1
|
||||
176, 178, 178, 176, 176, tomhi2
|
||||
177, 185, 177, 177, 177, cymcrsh1
|
||||
178, 178, 178, 178, 178, tomhi1
|
||||
179, 179, 179, 179, 179, cymride1
|
||||
180, 185, 177, 177, 180, cymchina
|
||||
181, 179, 179, 179, 181, cymbell
|
||||
182, 170, 182, 182, 182, tamborin
|
||||
183, 185, 177, 177, 183, cymsplsh
|
||||
184, 205, 205, 205, 184, cowbell
|
||||
185, 185, 177, 177, 185, cymcrsh2
|
||||
186, 128, 186, 186, 186, vibslap
|
||||
187, 179, 179, 179, 187, cymride2
|
||||
188, 128, 128, 128, 128, bongohi
|
||||
189, 128, 128, 128, 128, bongolo
|
||||
190, 190, 190, 190, 190, congahi1
|
||||
191, 190, 191, 191, 191, congahi2
|
||||
192, 192, 192, 192, 192, congalo
|
||||
193, 190, 191, 193, 193, timbaleh
|
||||
194, 192, 192, 194, 194, timbalel
|
||||
195, 128, 128, 128, 128, agogohi
|
||||
196, 128, 128, 128, 128, agogolo
|
||||
197, 170, 170, 170, 210, cabasa
|
||||
198, 128, 128, 128, 128, maracas
|
||||
199, 128, 128, 128, 128, whistle1
|
||||
200, 128, 128, 128, 128, whistle2
|
||||
201, 128, 201, 201, 201, guiro1
|
||||
202, 128, 202, 202, 202, guiro2
|
||||
203, 205, 205, 203, 203, clave
|
||||
204, 205, 205, 204, 204, woodblk1
|
||||
205, 205, 205, 205, 205, woodblk2
|
||||
206, 128, 206, 206, 206, cuica1
|
||||
207, 128, 128, 128, 128, cuica2
|
||||
208, 128, 128, 128, 128, triangl1
|
||||
209, 179, 179, 179, 181, triangl2
|
||||
210, 170, 170, 170, 210, shaker
|
||||
211, 170, 182, 182, 182, jingles
|
||||
212, 128, 128, 128, 128, belltree
|
||||
213, 128, 128, 128, 128, castinet
|
||||
214, 128, 128, 128, 128, surdo1
|
||||
215, 128, 128, 128, 128, surdo2
|
Binary file not shown.
|
@ -0,0 +1,200 @@
|
|||
#Purpose: Different size patch libraries for different memory sizes.
|
||||
# The libraries are built in such a way as to leave 8K+32bytes
|
||||
# after the patches are loaded for digital audio.
|
||||
#
|
||||
#Revision History: 06/22/93 - Fixed problem with 512K patch library
|
||||
# 07/26/93 - patch names changed in various releases
|
||||
#
|
||||
#
|
||||
#Explanation of Columns: Patch # 256K 512K 768K 1024K Patch Name
|
||||
#
|
||||
0, 2, 1, 1, 1, acpiano
|
||||
1, 2, 1, 1, 1, britepno
|
||||
2, 2, 1, 1, 1, synpiano
|
||||
3, 2, 1, 1, 1, honktonk
|
||||
4, 2, 1, 1, 4, epiano1
|
||||
5, 2, 1, 1, 4, epiano2
|
||||
6, 2, 1, 1, 1, hrpschrd
|
||||
7, 2, 1, 1, 1, clavinet
|
||||
8, 12, 12, 12, 12, celeste
|
||||
9, 12, 12, 12, 12, glocken
|
||||
10, 12, 12, 12, 12, musicbox
|
||||
11, 12, 12, 12, 12, vibes
|
||||
12, 12, 12, 12, 12, marimba
|
||||
13, 12, 12, 12, 12, xylophon
|
||||
14, 12, 12, 12, 12, tubebell
|
||||
15, 12, 12, 12, 12, santur
|
||||
16, 2, 16, 16, 19, homeorg
|
||||
17, 2, 16, 16, 19, percorg
|
||||
18, 2, 16, 16, 19, rockorg
|
||||
19, 2, 16, 16, 19, church
|
||||
20, 2, 16, 16, 19, reedorg
|
||||
21, 2, 16, 16, 19, accordn
|
||||
22, 2, 16, 16, 19, harmonca
|
||||
23, 2, 16, 16, 19, concrtna
|
||||
24, 24, 24, 24, 24, nyguitar
|
||||
25, 24, 24, 24, 24, acguitar
|
||||
26, 24, 24, 24, 24, jazzgtr
|
||||
27, 24, 24, 24, 27, cleangtr
|
||||
28, 24, 24, 24, 24, mutegtr
|
||||
29, 29, 29, 29, 29, odguitar
|
||||
30, 29, 30, 30, 30, distgtr
|
||||
31, 29, 30, 30, 31, gtrharm
|
||||
32, 39, 32, 32, 32, acbass
|
||||
33, 39, 32, 32, 32, fngrbass
|
||||
34, 39, 32, 32, 34, pickbass
|
||||
35, 39, 32, 32, 32, fretless
|
||||
36, 39, 36, 36, 36, slapbas1
|
||||
37, 39, 36, 36, 36, slapbas2
|
||||
38, 39, 36, 36, 32, synbass1
|
||||
39, 39, 36, 36, 32, synbass2
|
||||
40, 40, 40, 40, 40, violin
|
||||
41, 40, 40, 40, 40, viola
|
||||
42, 40, 42, 42, 42, cello
|
||||
43, 40, 40, 40, 40, contraba
|
||||
44, 40, 40, 40, 40, marcato
|
||||
45, 40, 40, 40, 45, pizzcato
|
||||
46, 24, 24, 46, 46, harp
|
||||
47, 47, 47, 47, 47, timpani
|
||||
48, 51, 51, 48, 48, marcato
|
||||
49, 51, 51, 49, 48, slowstr
|
||||
50, 51, 51, 48, 48, synstr1
|
||||
51, 51, 51, 48, 48, synstr2
|
||||
52, 52, 52, 52, 52, choir
|
||||
53, 52, 52, 52, 52, doo
|
||||
54, 52, 52, 52, 54, voices
|
||||
55, 128, 128, 55, 55, orchhit
|
||||
56, 56, 56, 56, 56, trumpet
|
||||
57, 56, 56, 56, 56, trombone
|
||||
58, 56, 56, 56, 58, tuba
|
||||
59, 56, 56, 56, 56, mutetrum
|
||||
60, 56, 56, 56, 56, frenchrn
|
||||
61, 56, 56, 56, 56, hitbrass
|
||||
62, 56, 56, 56, 56, synbras1
|
||||
63, 56, 56, 56, 56, synbras2
|
||||
64, 66, 66, 64, 64, sprnosax
|
||||
65, 66, 66, 66, 66, altosax
|
||||
66, 66, 66, 66, 66, tenorsax
|
||||
67, 66, 66, 66, 66, barisax
|
||||
68, 68, 69, 69, 69, oboe
|
||||
69, 68, 69, 69, 69, englhorn
|
||||
70, 68, 69, 69, 70, bassoon
|
||||
71, 68, 69, 69, 71, clarinet
|
||||
72, 73, 73, 73, 73, piccolo
|
||||
73, 73, 73, 73, 73, flute
|
||||
74, 73, 73, 73, 73, recorder
|
||||
75, 73, 73, 73, 75, woodflut
|
||||
76, 73, 73, 73, 75, bottle
|
||||
77, 73, 77, 77, 77, shakazul
|
||||
78, 73, 73, 73, 73, whistle
|
||||
79, 73, 73, 73, 73, ocarina
|
||||
80, 29, 29, 29, 29, sqrwave
|
||||
81, 29, 29, 29, 29, sawwave
|
||||
82, 73, 73, 29, 82, calliope
|
||||
83, 73, 73, 29, 29, chiflead
|
||||
84, 29, 29, 29, 29, voxlead
|
||||
85, 52, 52, 29, 85, voxlead
|
||||
86, 52, 52, 29, 86, lead5th
|
||||
87, 52, 52, 29, 34, basslead
|
||||
88, 52, 52, 88, 88, fantasia
|
||||
89, 52, 52, 29, 89, warmpad
|
||||
90, 52, 52, 29, 89, polysyn
|
||||
91, 52, 52, 29, 89, ghostie
|
||||
92, 52, 52, 29, 89, bowglass
|
||||
93, 52, 52, 29, 89, metalpad
|
||||
94, 52, 52, 29, 89, halopad
|
||||
95, 52, 52, 29, 89, sweeper
|
||||
96, 52, 52, 96, 89, aurora
|
||||
97, 52, 52, 52, 89, soundtrk
|
||||
98, 52, 52, 52, 89, crystal
|
||||
99, 52, 52, 52, 89, atmosphr
|
||||
100, 52, 52, 52, 89, freshair
|
||||
101, 52, 52, 52, 89, unicorn
|
||||
102, 52, 102, 102, 89, ghostie
|
||||
103, 52, 102, 102, 89, startrak
|
||||
104, 24, 102, 102, 104, sitar
|
||||
105, 24, 105, 105, 105, banjo
|
||||
106, 24, 105, 105, 105, shamisen
|
||||
107, 24, 105, 105, 105, koto
|
||||
108, 115, 115, 115, 115, kalimba
|
||||
109, 24, 69, 105, 109, bagpipes
|
||||
110, 24, 42, 42, 42, fiddle
|
||||
111, 24, 105, 105, 105, shannai
|
||||
112, 114, 114, 112, 112, carillon
|
||||
113, 114, 114, 112, 112, agogo
|
||||
114, 114, 114, 114, 114, steeldrm
|
||||
115, 115, 115, 115, 115, woodblk
|
||||
116, 115, 117, 117, 117, taiko
|
||||
117, 115, 117, 117, 117, toms
|
||||
118, 115, 117, 117, 117, syntom
|
||||
119, 128, 128, 128, 128, revcym
|
||||
120, 128, 128, 128, 128, fx-fret
|
||||
121, 128, 128, 128, 128, fx-blow
|
||||
122, 128, 128, 128, 122, seashore
|
||||
123, 128, 128, 128, 128, jungle
|
||||
124, 128, 128, 128, 128, telephon
|
||||
125, 128, 128, 128, 128, helicptr
|
||||
126, 128, 128, 126, 126, applause
|
||||
127, 128, 128, 128, 128, ringwhsl
|
||||
128, 128, 128, 128, 128, blank
|
||||
155, 128, 128, 128, 128, highq
|
||||
156, 128, 128, 128, 128, slap
|
||||
157, 128, 128, 128, 157, scratch1
|
||||
158, 128, 128, 128, 158, scratch2
|
||||
159, 159, 159, 159, 159, sticks
|
||||
160, 128, 128, 128, 160, sqrclick
|
||||
161, 128, 128, 128, 160, metclick
|
||||
162, 128, 128, 128, 128, metbell
|
||||
163, 163, 163, 163, 163, kick1
|
||||
164, 164, 164, 164, 164, kick2
|
||||
165, 165, 165, 165, 165, stickrim
|
||||
166, 166, 166, 166, 166, snare1
|
||||
167, 167, 167, 167, 167, claps
|
||||
168, 168, 168, 168, 168, snare2
|
||||
169, 171, 169, 169, 169, tomlo2
|
||||
170, 170, 170, 170, 170, hihatcl
|
||||
171, 171, 171, 171, 171, tomlo1
|
||||
172, 172, 172, 172, 172, hihatpd
|
||||
173, 175, 173, 173, 173, tommid2
|
||||
174, 174, 174, 174, 174, hihatop
|
||||
175, 175, 175, 175, 175, tommid1
|
||||
176, 178, 176, 176, 176, tomhi2
|
||||
177, 181, 177, 177, 177, cymcrsh1
|
||||
178, 178, 178, 178, 178, tomhi1
|
||||
179, 181, 177, 177, 177, cymride1
|
||||
180, 181, 177, 177, 180, cymchina
|
||||
181, 181, 177, 177, 181, cymbell
|
||||
182, 182, 182, 182, 182, tamborin
|
||||
183, 181, 177, 177, 177, cymsplsh
|
||||
184, 128, 128, 128, 128, cowbell
|
||||
185, 181, 177, 177, 177, cymcrsh2
|
||||
186, 128, 128, 128, 128, vibslap
|
||||
187, 181, 177, 177, 177, cymride2
|
||||
188, 178, 188, 188, 188, bongohi
|
||||
189, 175, 189, 189, 189, bongolo
|
||||
190, 175, 190, 190, 190, congahi1
|
||||
191, 175, 191, 191, 191, congahi2
|
||||
192, 171, 191, 191, 192, congalo
|
||||
193, 128, 128, 128, 193, timbaleh
|
||||
194, 128, 128, 128, 194, timbalel
|
||||
195, 128, 128, 128, 195, agogohi
|
||||
196, 128, 128, 128, 196, agogolo
|
||||
197, 128, 128, 128, 128, cabasa
|
||||
198, 128, 198, 198, 198, maracas
|
||||
199, 128, 128, 128, 128, whistle1
|
||||
200, 128, 128, 128, 128, whistle2
|
||||
201, 128, 128, 128, 128, guiro1
|
||||
202, 128, 128, 128, 128, guiro2
|
||||
203, 128, 128, 128, 128, clave
|
||||
204, 128, 204, 204, 204, woodblk1
|
||||
205, 128, 205, 205, 205, woodblk2
|
||||
206, 128, 128, 128, 206, cuica1
|
||||
207, 128, 128, 128, 207, cuica2
|
||||
208, 128, 128, 128, 208, triangl1
|
||||
209, 128, 128, 128, 209, triangl2
|
||||
210, 128, 128, 128, 128, shaker
|
||||
211, 128, 128, 128, 128, jingles
|
||||
212, 128, 128, 128, 128, belltree
|
||||
213, 128, 128, 128, 128, castinet
|
||||
214, 128, 128, 128, 128, surdo1
|
||||
215, 128, 128, 128, 128, surdo2
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
del audio_wf.lib
|
||||
wmake.exe -f audio.mak "version = debugging" %1 %2 %3 %4 %5
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,224 @@
|
|||
=============================================================
|
||||
| Apogee Expanded MIDI (EMIDI) API v1.0 |
|
||||
=============================================================
|
||||
|
||||
Specifications created by Lee Jackson and Jim DosŠ
|
||||
Support coded by Jim DosŠ
|
||||
|
||||
|
||||
FOR INTERNAL USE ONLY. ACCESS OR USE WITHOUT EXPRESS WRITTEN
|
||||
PERMISSION FROM APOGEE SOFTWARE, LTD., 3D REALMS ENTERTAINMENT, OR
|
||||
ACTION ENTERTAINMENT, INC., IS STRICTLY PROHIBITED.
|
||||
|
||||
|
||||
Copyright (c) 1995 Apogee Software Ltd. All Rights Reserved.
|
||||
|
||||
|
||||
=============================================================
|
||||
| Contents |
|
||||
=============================================================
|
||||
|
||||
I. Instrument Definitions
|
||||
II. Controller Definitions
|
||||
III. InitBeat Format
|
||||
|
||||
|
||||
=============================================================
|
||||
| I. Instrument Definitions |
|
||||
=============================================================
|
||||
|
||||
The following instruments are currently defined as valid for data
|
||||
entry events:
|
||||
|
||||
0 - General MIDI
|
||||
1 - Roland Sound Canvas (GM and GS)
|
||||
2 - Sound Blaster AWE32
|
||||
3 - Wave Blaster and Compatibles (SCD-10, etc.)
|
||||
4 - Sound Blaster and Compatibles (OPL-2 and OPL-3)
|
||||
5 - Media Vision Pro Audio series
|
||||
6 - Logitech Sound Man 16
|
||||
7 - Adlib and Compatibles
|
||||
8 - Ensoniq Soundscape
|
||||
9 - Gravis Ultrasound, Ultrasound Max, Ultrasound ACE
|
||||
127 - All (see Controller Definitions)
|
||||
|
||||
|
||||
=============================================================
|
||||
| II. Controller Definitions |
|
||||
=============================================================
|
||||
|
||||
The following controllers are currently defined as valid:
|
||||
|
||||
110 - Track Designation
|
||||
Required: Yes
|
||||
Multiples allowed: Yes
|
||||
Format: 110 nn
|
||||
(where nn is a defined instrument)
|
||||
|
||||
Controller 110 determines which instruments will receive data for
|
||||
this track. Multiple instances may be used to designate multiple
|
||||
instruments. If the track is designated for all instruments,
|
||||
Instrument 127 may be used. This instrument may also be used in
|
||||
conjunction with Controller 111 to exclude a single instrument or
|
||||
group of instruments.
|
||||
|
||||
|
||||
111 - Track Exclusion
|
||||
Required: No
|
||||
Multiples allowed: Yes
|
||||
Format: 111 nn
|
||||
(where nn is a defined instrument -
|
||||
instrument 127 is invalid)
|
||||
|
||||
Controller 111 excludes an instrument from receiving the data for
|
||||
this track. Multiple instances may be used to exclude multiple
|
||||
instruments. Instrument 127 is not valid for this controller.
|
||||
|
||||
|
||||
112 - Program Change
|
||||
Required: No
|
||||
Multiples allowed: Yes
|
||||
Format: 112 nn
|
||||
(where nn is a GM program change)
|
||||
|
||||
Controller 112 is the same as the standard MIDI program change
|
||||
event. It may be inserted at any point a program change is
|
||||
required. If it does not exist, standard MIDI program change events
|
||||
will be recognized for this track. If it does exist, standard MIDI
|
||||
program change events will not be recognized for this track, and all
|
||||
program changes for the track must be entered using Controller 112.
|
||||
|
||||
|
||||
113 - Volume
|
||||
Required: No
|
||||
Multiples allowed: Yes
|
||||
Format: 113 nn
|
||||
(where nn is between 0 and 127)
|
||||
|
||||
Controller 113 allows different volumes to be inserted in the same
|
||||
manner as Controller 7. It should be used only if
|
||||
designation/exclusion groups exist on the same MIDI channel. If
|
||||
Controller 113 does not exist at the beginning of the track,
|
||||
Controller 7 events will be recognized. If Controller 113 does
|
||||
exist at the beginning of the track, Controller 7 events will be
|
||||
ignored.
|
||||
|
||||
|
||||
116 - Loop Begin
|
||||
Required: Yes
|
||||
Multiples allowed: Yes (see below)
|
||||
Format: 116 nn
|
||||
(see below for definition)
|
||||
|
||||
Controller 116 indicates the beginning of a sequence to be looped.
|
||||
Values for this controller are as follows:
|
||||
|
||||
0 - infinite loop
|
||||
1 - loop once
|
||||
2 - loop twice
|
||||
x - loop x times
|
||||
|
||||
A song should have a Master Start point and a Master End point. The
|
||||
start point should occur after the InitBeat (see section III) and
|
||||
after any introduction you wish to have played only once. Any
|
||||
controller information (patch changes, pitch bend info, etc.)
|
||||
required for the loop should be entered and/or repeated after the
|
||||
loop's Master Start event (see also Section III, "InitBeat", below).
|
||||
Likewise, any "reset" events required should be entered either just
|
||||
after the loop's Master Start event or just before the loop's Master
|
||||
End event.
|
||||
|
||||
Multiple non-infinite loop start/end pairs (see Controller 117
|
||||
below) may occur at any point inside the Master Loop. Only one
|
||||
infinite loop may be defined per song. Nested loops are not yet
|
||||
supported.
|
||||
|
||||
IMPORTANT: Any event to be included within the loop must fall after
|
||||
the Loop Begin point and end before the Loop End point.
|
||||
If you are using Cakewalk Pro for Windows, you can
|
||||
verify this by looking at the Event List view.
|
||||
SIMULTANEOUS TIMES FOR LOOP POINTS AND EVENT DATA DO NOT
|
||||
GUARANTEE THAT AN EVENT IS INSIDE THE LOOP. If in
|
||||
doubt, set the event one tick after the Loop Begin or
|
||||
have it end one tick before the Loop End.
|
||||
|
||||
|
||||
117 - Loop End
|
||||
Required: Yes
|
||||
Multiples allowed: Yes (see below)
|
||||
Format: 117 127
|
||||
|
||||
Controller 117 indicates the end of a looped segment of a song, or
|
||||
in the case of a Master Loop, the end of the entire song. This
|
||||
controller signals that the Apogee Sound System should immediately
|
||||
loop back to the nearest non-resolved loop begin event (i.e., the
|
||||
nearest Controller 116 event that does not have a matching
|
||||
Controller 117 event).
|
||||
|
||||
Loop End events should not occur at the exact time of a Loop Begin
|
||||
event.
|
||||
|
||||
Note: Loop Begin/End pairs only affect the track they are placed
|
||||
on. If an entire song is to be looped through a segment, all
|
||||
tracks must contain Loop Begin events and Loop End events
|
||||
which occur on the same tick across all tracks. Be careful
|
||||
how you use non-synchronous single track loops - the composer
|
||||
is responsible for making sure that everything stays in sync.
|
||||
|
||||
See Controller 116 above for important information regarding
|
||||
placements of events to be included within loops.
|
||||
|
||||
|
||||
=============================================================
|
||||
| III. InitBeat Format |
|
||||
=============================================================
|
||||
|
||||
Each song should begin with an InitBeat. In terms of standard
|
||||
musical notation, an example of this would be a single 1/4 measure
|
||||
where the rest of the song is in 4/4, or a single 1/8 measure when
|
||||
the rest of the song is in 6/8. In MIDI terms, this is equivalent
|
||||
to one full cycle of the current timebase (e.g., for timebase 120, a
|
||||
single beat, 120 ticks long). Each track used should have its own
|
||||
InitBeat. This beat should not contain any note on/off data, sysex
|
||||
dump data, Loop Begin/End events (Controllers 116 and/or 117), or
|
||||
other non-Controller events. It may, however, contain MetaEvents
|
||||
such as text, copyrights, markers, program changes (normal or
|
||||
Controller 112), and the like.
|
||||
|
||||
The InitBeat should contain any needed Controller 110, 111, 112, or
|
||||
113 events needed to set up each track for the song. It may also
|
||||
contain other Controllers (pitch wheel, modulation, RPN/NRPN data,
|
||||
etc.) as desired. Keep in mind that you will need to repeat these
|
||||
controller values at some point within the Master Loop if you change
|
||||
them at any point in the song (and you rely on the original values
|
||||
when the song goes back to the Master Start point).
|
||||
|
||||
If no special handling is required for a track (i.e., the track is
|
||||
to be played by all instruments and no Controller resets/setups are
|
||||
desired), the InitBeat for that track may be left blank. It is
|
||||
advisable, however, to at least insert a single Controller 110 event
|
||||
with value 127, indicating that the track is to be played by all
|
||||
instruments. This is more a matter of personal preference, but it
|
||||
can come in handy for setting up templates with Cakewalk Pro for
|
||||
Windows and other programs that support default song templates.
|
||||
|
||||
If none of the tracks in a song require any special handling, all
|
||||
InitBeats may be left blank. Do not delete the InitBeat measure -
|
||||
just leave it blank.
|
||||
|
||||
Controller events may be spread throughout the InitBeat as desired.
|
||||
You may place them all on a single tick, or on separate ticks. Some
|
||||
instruments will behave unpredictably if all events for a track are
|
||||
placed on the same tick (e.g., the 5-6 events needed to adjust pitch
|
||||
bend parameters, especially if controllers 100 and 101 are set with
|
||||
value 0 and then reset with value 127 as recommended by Roland), so
|
||||
composer discretion is advised. At this time, simultaneous events
|
||||
across multiple tracks are not known to cause a problem.
|
||||
|
||||
The InitBeat may be inserted in any way desired. If you are using
|
||||
Cakewalk Pro for Windows, it is simplest to make the first measure a
|
||||
1/4 measure (one beat @ 4 per measure) and then switch the meter to
|
||||
whatever you want to use for the remainder of the song right at
|
||||
measure 2. Meter changes within the song are not affected by this,
|
||||
of course.
|
||||
|
Binary file not shown.
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: FX_MAN.H
|
||||
|
||||
author: James R. Dose
|
||||
date: March 17, 1994
|
||||
|
||||
Public header for FX_MAN.C
|
||||
|
||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __FX_MAN_H
|
||||
#define __FX_MAN_H
|
||||
|
||||
#include "sndcards.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int MaxVoices;
|
||||
int MaxSampleBits;
|
||||
int MaxChannels;
|
||||
} fx_device;
|
||||
|
||||
#define MonoFx 1
|
||||
#define StereoFx 2
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned long Address;
|
||||
unsigned long Type;
|
||||
unsigned long Interrupt;
|
||||
unsigned long Dma8;
|
||||
unsigned long Dma16;
|
||||
unsigned long Midi;
|
||||
unsigned long Emu;
|
||||
} fx_blaster_config;
|
||||
|
||||
enum FX_ERRORS
|
||||
{
|
||||
FX_Warning = -2,
|
||||
FX_Error = -1,
|
||||
FX_Ok = 0,
|
||||
FX_ASSVersion,
|
||||
FX_BlasterError,
|
||||
FX_SoundCardError,
|
||||
FX_InvalidCard,
|
||||
FX_MultiVocError,
|
||||
FX_DPMI_Error
|
||||
};
|
||||
|
||||
enum fx_BLASTER_Types
|
||||
{
|
||||
fx_SB = 1,
|
||||
fx_SBPro = 2,
|
||||
fx_SB20 = 3,
|
||||
fx_SBPro2 = 4,
|
||||
fx_SB16 = 6
|
||||
};
|
||||
|
||||
|
||||
char *FX_ErrorString( int ErrorNumber );
|
||||
int FX_SetupCard( int SoundCard, fx_device *device );
|
||||
int FX_GetBlasterSettings( fx_blaster_config *blaster );
|
||||
int FX_SetupSoundBlaster( fx_blaster_config blaster, int *MaxVoices, int *MaxSampleBits, int *MaxChannels );
|
||||
int FX_Init( int SoundCard, int numvoices, int numchannels, int samplebits, unsigned mixrate );
|
||||
int FX_Shutdown( void );
|
||||
int FX_SetCallBack( void ( *function )( unsigned long ) );
|
||||
void FX_SetVolume( int volume );
|
||||
int FX_GetVolume( void );
|
||||
|
||||
void FX_SetReverseStereo( int setting );
|
||||
int FX_GetReverseStereo( void );
|
||||
void FX_SetReverb( int reverb );
|
||||
void FX_SetFastReverb( int reverb );
|
||||
int FX_GetMaxReverbDelay( void );
|
||||
int FX_GetReverbDelay( void );
|
||||
void FX_SetReverbDelay( int delay );
|
||||
|
||||
int FX_VoiceAvailable( int priority );
|
||||
int FX_EndLooping( int handle );
|
||||
int FX_SetPan( int handle, int vol, int left, int right );
|
||||
int FX_SetPitch( int handle, int pitchoffset );
|
||||
int FX_SetFrequency( int handle, int frequency );
|
||||
|
||||
int FX_PlayVOC( char *ptr, int pitchoffset, int vol, int left, int right,
|
||||
int priority, unsigned long callbackval );
|
||||
int FX_PlayLoopedVOC( char *ptr, long loopstart, long loopend,
|
||||
int pitchoffset, int vol, int left, int right, int priority,
|
||||
unsigned long callbackval );
|
||||
int FX_PlayWAV( char *ptr, int pitchoffset, int vol, int left, int right,
|
||||
int priority, unsigned long callbackval );
|
||||
int FX_PlayLoopedWAV( char *ptr, long loopstart, long loopend,
|
||||
int pitchoffset, int vol, int left, int right, int priority,
|
||||
unsigned long callbackval );
|
||||
int FX_PlayVOC3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||
int priority, unsigned long callbackval );
|
||||
int FX_PlayWAV3D( char *ptr, int pitchoffset, int angle, int distance,
|
||||
int priority, unsigned long callbackval );
|
||||
int FX_PlayRaw( char *ptr, unsigned long length, unsigned rate,
|
||||
int pitchoffset, int vol, int left, int right, int priority,
|
||||
unsigned long callbackval );
|
||||
int FX_PlayLoopedRaw( char *ptr, unsigned long length, char *loopstart,
|
||||
char *loopend, unsigned rate, int pitchoffset, int vol, int left,
|
||||
int right, int priority, unsigned long callbackval );
|
||||
int FX_Pan3D( int handle, int angle, int distance );
|
||||
int FX_SoundActive( int handle );
|
||||
int FX_SoundsPlaying( void );
|
||||
int FX_StopSound( int handle );
|
||||
int FX_StopAllSounds( void );
|
||||
int FX_StartDemandFeedPlayback( void ( *function )( char **ptr, unsigned long *length ),
|
||||
int rate, int pitchoffset, int vol, int left, int right,
|
||||
int priority, unsigned long callbackval );
|
||||
int FX_StartRecording( int MixRate, void ( *function )( char *ptr, int length ) );
|
||||
void FX_StopRecord( void );
|
||||
|
||||
#endif
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: MUSIC.H
|
||||
|
||||
author: James R. Dose
|
||||
date: March 25, 1994
|
||||
|
||||
Public header for MUSIC.C
|
||||
|
||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __MUSIC_H
|
||||
#define __MUSIC_H
|
||||
|
||||
#include "sndcards.h"
|
||||
|
||||
extern int MUSIC_ErrorCode;
|
||||
|
||||
enum MUSIC_ERRORS
|
||||
{
|
||||
MUSIC_Warning = -2,
|
||||
MUSIC_Error = -1,
|
||||
MUSIC_Ok = 0,
|
||||
MUSIC_ASSVersion,
|
||||
MUSIC_SoundCardError,
|
||||
MUSIC_MPU401Error,
|
||||
MUSIC_InvalidCard,
|
||||
MUSIC_MidiError,
|
||||
MUSIC_TaskManError,
|
||||
MUSIC_FMNotDetected,
|
||||
MUSIC_DPMI_Error
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned long tickposition;
|
||||
unsigned long milliseconds;
|
||||
unsigned int measure;
|
||||
unsigned int beat;
|
||||
unsigned int tick;
|
||||
} songposition;
|
||||
|
||||
#define MUSIC_LoopSong ( 1 == 1 )
|
||||
#define MUSIC_PlayOnce ( !MUSIC_LoopSong )
|
||||
|
||||
char *MUSIC_ErrorString( int ErrorNumber );
|
||||
int MUSIC_Init( int SoundCard, int Address );
|
||||
int MUSIC_Shutdown( void );
|
||||
void MUSIC_SetMaxFMMidiChannel( int channel );
|
||||
void MUSIC_SetVolume( int volume );
|
||||
void MUSIC_SetMidiChannelVolume( int channel, int volume );
|
||||
void MUSIC_ResetMidiChannelVolumes( void );
|
||||
int MUSIC_GetVolume( void );
|
||||
void MUSIC_SetLoopFlag( int loopflag );
|
||||
int MUSIC_SongPlaying( void );
|
||||
void MUSIC_Continue( void );
|
||||
void MUSIC_Pause( void );
|
||||
int MUSIC_StopSong( void );
|
||||
int MUSIC_PlaySong( unsigned char *song, int loopflag );
|
||||
void MUSIC_SetContext( int context );
|
||||
int MUSIC_GetContext( void );
|
||||
void MUSIC_SetSongTick( unsigned long PositionInTicks );
|
||||
void MUSIC_SetSongTime( unsigned long milliseconds );
|
||||
void MUSIC_SetSongPosition( int measure, int beat, int tick );
|
||||
void MUSIC_GetSongPosition( songposition *pos );
|
||||
void MUSIC_GetSongLength( songposition *pos );
|
||||
int MUSIC_FadeVolume( int tovolume, int milliseconds );
|
||||
int MUSIC_FadeActive( void );
|
||||
void MUSIC_StopFade( void );
|
||||
void MUSIC_RerouteMidiChannel( int channel, int cdecl ( *function )( int event, int c1, int c2 ) );
|
||||
void MUSIC_RegisterTimbreBank( unsigned char *timbres );
|
||||
|
||||
#endif
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: SNDCARDS.H
|
||||
|
||||
author: James R. Dose
|
||||
date: March 31, 1994
|
||||
|
||||
Contains enumerated type definitions for sound cards.
|
||||
|
||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __SNDCARDS_H
|
||||
#define __SNDCARDS_H
|
||||
|
||||
#define ASS_VERSION_STRING "1.12"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
// ASS_NoSound,
|
||||
SoundBlaster,
|
||||
ProAudioSpectrum,
|
||||
SoundMan16,
|
||||
Adlib,
|
||||
GenMidi,
|
||||
SoundCanvas,
|
||||
Awe32,
|
||||
WaveBlaster,
|
||||
SoundScape,
|
||||
UltraSound,
|
||||
SoundSource,
|
||||
TandySoundSource,
|
||||
PC,
|
||||
NumSoundCards
|
||||
} soundcardnames;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: TASK_MAN.C
|
||||
|
||||
author: James R. Dose
|
||||
date: July 25, 1994
|
||||
|
||||
Public header for TASK_MAN.C, a low level timer task scheduler.
|
||||
|
||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __TASK_MAN_H
|
||||
#define __TASK_MAN_H
|
||||
|
||||
enum TASK_ERRORS
|
||||
{
|
||||
TASK_Warning = -2,
|
||||
TASK_Error = -1,
|
||||
TASK_Ok = 0
|
||||
};
|
||||
|
||||
typedef struct task
|
||||
{
|
||||
struct task *next;
|
||||
struct task *prev;
|
||||
void ( *TaskService )( struct task * );
|
||||
void *data;
|
||||
long rate;
|
||||
volatile long count;
|
||||
int priority;
|
||||
int active;
|
||||
} task;
|
||||
|
||||
// TS_InInterrupt is TRUE during a taskman interrupt.
|
||||
// Use this if you have code that may be used both outside
|
||||
// and within interrupts.
|
||||
|
||||
extern volatile int TS_InInterrupt;
|
||||
|
||||
void TS_Shutdown( void );
|
||||
task *TS_ScheduleTask( void ( *Function )( task * ), int rate,
|
||||
int priority, void *data );
|
||||
int TS_Terminate( task *ptr );
|
||||
void TS_Dispatch( void );
|
||||
void TS_SetTaskRate( task *Task, int rate );
|
||||
void TS_UnlockMemory( void );
|
||||
int TS_LockMemory( void );
|
||||
|
||||
#endif
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.C
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. This code
|
||||
is left public for you to modify.
|
||||
**********************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "usrhooks.h"
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_GetMem
|
||||
|
||||
Allocates the requested amount of memory and returns a pointer to
|
||||
its location, or NULL if an error occurs. NOTE: pointer is assumed
|
||||
to be dword aligned.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem
|
||||
(
|
||||
void **ptr,
|
||||
unsigned long size
|
||||
)
|
||||
|
||||
{
|
||||
void *memory;
|
||||
|
||||
memory = malloc( size );
|
||||
if ( memory == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
*ptr = memory;
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_FreeMem
|
||||
|
||||
Deallocates the memory associated with the specified pointer.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_FreeMem
|
||||
(
|
||||
void *ptr
|
||||
)
|
||||
|
||||
{
|
||||
if ( ptr == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
free( ptr );
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.H
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
Public header file for USRHOOKS.C.
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. The function
|
||||
prototypes in this header should not be modified.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __USRHOOKS_H
|
||||
#define __USRHOOKS_H
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Error definitions
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
enum USRHOOKS_Errors
|
||||
{
|
||||
USRHOOKS_Warning = -2,
|
||||
USRHOOKS_Error = -1,
|
||||
USRHOOKS_Ok = 0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem( void **ptr, unsigned long size );
|
||||
int USRHOOKS_FreeMem( void *ptr );
|
||||
|
||||
#endif
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
Apogee Sound System MIDI notes:
|
||||
-------------------------------
|
||||
|
||||
FM Midi :
|
||||
|
||||
On OPL2 cards 9 voices are available. OPL3 cards have 18 voices. Melodic
|
||||
mode is used for music. For percussion (channel 10), each key is assigned
|
||||
a timbre to play at a pitch specified by the patch. This method was chosen
|
||||
based on the advice of Bobby Prince, Rob Wallace, George Sanger, and Lee
|
||||
Jackson, all of whom felt the 11 voice mode was too restricting for
|
||||
musicians.
|
||||
|
||||
Channels 1-16 are now supported.
|
||||
|
||||
Controllers supported
|
||||
|
||||
6 data entry msb |
|
||||
38 data entry lsb | - Only on Set Pitch Bend Range (RPN 0, 0)
|
||||
96 data increment |
|
||||
97 data decrement |
|
||||
7 channel volume
|
||||
10 pan (balance)
|
||||
121 reset all controllers
|
||||
123 all notes off
|
||||
|
||||
|
||||
AWE32 :
|
||||
|
||||
All controllers supported by API.
|
||||
|
||||
|
||||
Gravis Ultrasound:
|
||||
|
||||
1 modulation wheel
|
||||
6 data entry msb |
|
||||
38 data entry lsb | - Only on Set Pitch Bend Range (RPN 0, 0)
|
||||
96 data increment |
|
||||
97 data decrement |
|
||||
7 channel volume
|
||||
39 volume lsb ignored
|
||||
10 pan (balance)
|
||||
11 channel expression (volume)
|
||||
43 expression lsb ignored
|
||||
64 sustain (damper pedal)
|
||||
100 set registered parameter number
|
||||
101 set registered parameter number
|
||||
121 reset all controllers
|
||||
|
||||
120 all sounds off |
|
||||
123 all notes off |
|
||||
124 omni off | - Perform all notes off
|
||||
125 omni on |
|
||||
126 mono |
|
||||
127 mono |
|
||||
|
||||
|
||||
General MIDI (all other cards):
|
||||
|
||||
All controllers sent. Support depends on the card.
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,45 @@
|
|||
.OPTIMIZE
|
||||
|
||||
lib_dir = ..
|
||||
prg_dir = .
|
||||
obj_dir = $(prg_dir)\obj
|
||||
main_dir = $(prg_dir)\source
|
||||
header_dir = $(main_dir);$(lib_dir)\INCLUDE
|
||||
tasm_include_dir = /i$(main_dir) /i$(lib_dir)\source
|
||||
|
||||
lib_files = $(lib_dir)\audio_wf.lib
|
||||
|
||||
.h : $(header_dir)
|
||||
.c : $(header_dir)
|
||||
.asm : $(header_dir)
|
||||
.obj : $(obj_dir)
|
||||
|
||||
object_files = pm.obj usrhooks.obj
|
||||
|
||||
tasm_options = /zi /p $(tasm_include_dir)
|
||||
#wcc_options = /w4 /d2 /i=$(header_dir)
|
||||
wcc_options = /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
wlink_options =
|
||||
|
||||
pm.exe: $(object_files) $(lib_files) makefile
|
||||
%create temp.lnk
|
||||
%append temp.lnk option quiet
|
||||
%append temp.lnk option stack=128k
|
||||
%append temp.lnk system dos4g
|
||||
%append temp.lnk name $^&
|
||||
%append temp.lnk debug all
|
||||
%append temp.lnk libfile $(lib_files)
|
||||
for %i in ($(object_files)) do %append temp.lnk file $(obj_dir)\%i
|
||||
wlink $(wlink_options) @temp.lnk
|
||||
#wc2dbg pm.exe
|
||||
del temp.lnk
|
||||
|
||||
.asm.obj :
|
||||
tasm $(tasm_options) $[* $(obj_dir)\$^&
|
||||
|
||||
.c.obj :
|
||||
wcc386 $(wcc_options) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
pm.obj : pm.c music.h sndcards.h
|
||||
|
||||
usrhooks.obj : usrhooks.c usrhooks.h
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,37 @@
|
|||
PM is a quick and dirty file player for DOS using the Apogee Sound System.
|
||||
|
||||
If you type PM with no arguments you'll get the following information:
|
||||
|
||||
PM Version 1.10 by Jim Dos‚
|
||||
Usage: PM [ midifile ] CARD=[ card number ] MPU=[ port address in hex ]
|
||||
TIMBRE=[ timbre file ]
|
||||
|
||||
card number =
|
||||
0 : General Midi
|
||||
1 : Sound Canvas
|
||||
2 : Awe 32
|
||||
3 : WaveBlaster
|
||||
4 : SoundBlaster
|
||||
5 : Pro AudioSpectrum
|
||||
6 : Sound Man 16
|
||||
7 : Adlib
|
||||
8 : Ensoniq SoundScape
|
||||
9 : Gravis UltraSound
|
||||
|
||||
So, if you want to play FANFARE.MID on a Sound Canvas at port 330h, type:
|
||||
PM Fanfare.mid card=1 mpu=330
|
||||
|
||||
The TIMBRE parameter tells PM to use the MAKETMB generated timbre file
|
||||
specified. This is useful when you're testing new timbres and want to
|
||||
see how they sound.
|
||||
|
||||
You can also set an environment variable that has the card settings you
|
||||
want to use by default and PM will use it. Just type "SET PM=<card>,<mpu>"
|
||||
where <card> is the card number and <mpu> is the address of the MIDI card
|
||||
(if any). So for a Sound Canvas at port 330h, you would use "SET PM=1,330".
|
||||
Then you can just type "PM Fanfare.mid" on the command line to play your
|
||||
song without worrying about the card and mpu parameters.
|
||||
|
||||
If you have any problems or questions, call me at (214)-271-1365 ext. 221.
|
||||
|
||||
Jim Dos‚
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
Here's a quick explanation of the files included in this zip file:
|
||||
|
||||
README.TXT : This file
|
||||
PM.TXT : A quick explanation of the PM.EXE midi player
|
||||
PM.EXE : PM - a command line midi file player
|
||||
MAKETMB.EXE : this generates TMB files for use by PM. Read GMTIMBRE.INI
|
||||
GMTIMBRE.TMB : A timbre file generated by MAKETMB
|
||||
GMTIMBRE.INI : An example timbre script for MAKETMB. Generates GMTIMBRE.TMB
|
||||
PERCUS.IBK : General MIDI percussion instruments. Used by GMTIMBRE.INI
|
||||
GENMIDI.IBK : General MIDI percussion instruments. Used by GMTIMBRE.INI
|
||||
TIMBRES.ZIP : A couple sets of instrument banks that can be used as
|
||||
source material for fm instruments.
|
||||
|
||||
|
||||
MAKETMB is a simple utility to allow developers to develop and use their
|
||||
own FM instrument banks with the Apogee Sound System. It can generate
|
||||
either a data file or source code (ask me if you'd prefer to use this
|
||||
feature) containing the instruments and usable by the sound system.
|
||||
|
||||
The benefit of having the instruments in a data file is that multiple files
|
||||
could be made, each with instruments specific to a particular song or set
|
||||
of songs. It also allows you to make quick changes to the instruments and
|
||||
hear them in a song (using PM) very quickly, without having to recompile
|
||||
the code (very useful for musicians).
|
||||
|
||||
I know I'm terrible at writing documentation, so if these files are a little
|
||||
vague, give me a call and I'll walk you through it.
|
||||
|
||||
Jim Dosé‚
|
||||
(214)-271-1365 Ext. 221
|
|
@ -0,0 +1,537 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: PM.C
|
||||
|
||||
author: James R. Dose
|
||||
date: January 16, 1994
|
||||
|
||||
Simple music player.
|
||||
|
||||
(c) Copyright 1994 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#include <conio.h>
|
||||
#include <dos.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "music.h"
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function prototypes
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void LoadTimbres( char *timbrefile );
|
||||
char *LoadMidi( char *filename );
|
||||
char *GetUserText( const char *parameter );
|
||||
int CheckUserParm( const char *parameter );
|
||||
void DefaultExtension( char *path, char *extension );
|
||||
void TurnOffTextCursor( void );
|
||||
void TurnOnTextCursor( void );
|
||||
|
||||
#define TRUE ( 1 == 1 )
|
||||
#define FALSE ( !TRUE )
|
||||
|
||||
#define NUMCARDS 10
|
||||
|
||||
char *SoundCardNames[] =
|
||||
{
|
||||
"General Midi", "Sound Canvas", "Awe 32", "WaveBlaster",
|
||||
"SoundBlaster", "Pro AudioSpectrum", "Sound Man 16", "Adlib",
|
||||
"Ensoniq SoundScape", "Gravis UltraSound"
|
||||
};
|
||||
|
||||
int SoundCardNums[] =
|
||||
{
|
||||
GenMidi, SoundCanvas, Awe32, WaveBlaster,
|
||||
SoundBlaster, ProAudioSpectrum, SoundMan16,
|
||||
Adlib, SoundScape, UltraSound
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: main
|
||||
|
||||
Sets up sound cards, calls the demo, and then cleans up.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void main
|
||||
(
|
||||
int argc,
|
||||
char *argv[]
|
||||
)
|
||||
|
||||
{
|
||||
int card;
|
||||
int address;
|
||||
int status;
|
||||
char *SongPtr = NULL;
|
||||
char *ptr;
|
||||
char filename[ 128 ];
|
||||
char timbrefile[ 128 ];
|
||||
int gotopos = 0;
|
||||
int measure = 0;
|
||||
int beat = 0;
|
||||
int tick = 0;
|
||||
int time = 0;
|
||||
|
||||
printf( "\nPM EMIDI Music Player Version 1.21 Copyright (c) 1996 by Jim Dose\n" );
|
||||
|
||||
if ( ( CheckUserParm( "?" ) ) || ( argc < 2 ) )
|
||||
{
|
||||
int index;
|
||||
|
||||
printf(
|
||||
"Usage: PM [ midifile ] CARD=[ card number ] MPU=[ port address in hex ]\n"
|
||||
" TIMBRE=[ timbre file ] TIME=[minutes:seconds:milliseconds]\n"
|
||||
" POSITION=[measure:beat:tick]\n\n"
|
||||
" card number = \n" );
|
||||
for( index = 0; index < NUMCARDS; index++ )
|
||||
{
|
||||
printf( " %d : %s\n", index, SoundCardNames[ index ] );
|
||||
}
|
||||
|
||||
printf( "\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
// Default is GenMidi
|
||||
card = 0;
|
||||
address = 0x330;
|
||||
|
||||
ptr = getenv( "PM" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d,%x", &card, &address );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "MPU" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%x", &address );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "TIMBRE" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%s", timbrefile );
|
||||
LoadTimbres( timbrefile );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "POSITION" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
gotopos = 1;
|
||||
sscanf( ptr, "%d:%d:%d", &measure, &beat, &tick );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "TIME" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
int minutes = 0;
|
||||
int seconds = 0;
|
||||
int milli = 0;
|
||||
|
||||
gotopos = 2;
|
||||
sscanf( ptr, "%d:%d:%d", &minutes, &seconds, &milli );
|
||||
time = minutes * ( 60 * 1000 ) + seconds * 1000 + milli;
|
||||
}
|
||||
|
||||
ptr = GetUserText( "CARD" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &card );
|
||||
}
|
||||
|
||||
if ( ( card < 0 ) || ( card >= NUMCARDS ) )
|
||||
{
|
||||
printf( "Value out of range for CARD: %d\n", card );
|
||||
}
|
||||
|
||||
status = MUSIC_Init( SoundCardNums[ card ], address );
|
||||
if ( status != MUSIC_Ok )
|
||||
{
|
||||
printf( "Error - %s\n", MUSIC_ErrorString( status ) );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
strcpy( filename, argv[ 1 ] );
|
||||
DefaultExtension( filename, ".mid" );
|
||||
|
||||
SongPtr = LoadMidi( filename );
|
||||
|
||||
MUSIC_SetVolume( 255 );
|
||||
|
||||
status = MUSIC_PlaySong( SongPtr, MUSIC_LoopSong );
|
||||
if ( status != MUSIC_Ok )
|
||||
{
|
||||
printf( "Error - %s\n", MUSIC_ErrorString( status ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
char ch;
|
||||
songposition pos;
|
||||
|
||||
if ( gotopos == 1 )
|
||||
{
|
||||
MUSIC_SetSongPosition( measure, beat, tick );
|
||||
}
|
||||
else if ( gotopos == 2 )
|
||||
{
|
||||
MUSIC_SetSongTime( time );
|
||||
}
|
||||
|
||||
printf( "Playing file '%s'.\n\n", filename );
|
||||
printf( "Press F to advance one measure.\n"
|
||||
"Press R to rewind one measure.\n"
|
||||
"Press G to go to the selected position.\n"
|
||||
"Press ESCape to end.\n\n" );
|
||||
|
||||
MUSIC_GetSongLength( &pos );
|
||||
printf( "Song length: time (m:s:ms) = %d:%d:%d, "
|
||||
"(measure:beat:tick) = %d:%d:%d\n\n",
|
||||
pos.milliseconds / (60*1000),
|
||||
( pos.milliseconds / 1000 ) % 60,
|
||||
pos.milliseconds % 1000,
|
||||
pos.measure, pos.beat, pos.tick );
|
||||
ch = 0;
|
||||
|
||||
TurnOffTextCursor();
|
||||
while( ch != 27 )
|
||||
{
|
||||
MUSIC_GetSongPosition( &pos );
|
||||
printf( "time (m:s:ms) = %d:%d:%d \t(measure:beat:tick) = %d:%d:%d \r",
|
||||
pos.milliseconds / (60*1000),
|
||||
( pos.milliseconds / 1000 ) % 60,
|
||||
pos.milliseconds % 1000,
|
||||
pos.measure, pos.beat, pos.tick );
|
||||
fflush( stdout );
|
||||
|
||||
if ( kbhit() )
|
||||
{
|
||||
ch = getch();
|
||||
|
||||
if ( ( ch == 'G' ) || ( ch == 'g' ) )
|
||||
{
|
||||
if ( gotopos == 1 )
|
||||
{
|
||||
MUSIC_SetSongPosition( measure, beat, tick );
|
||||
}
|
||||
else
|
||||
{
|
||||
MUSIC_SetSongTime( time );
|
||||
}
|
||||
|
||||
ch = 0;
|
||||
while( kbhit() )
|
||||
{
|
||||
getch();
|
||||
}
|
||||
}
|
||||
if ( ( ch == 'F' ) || ( ch == 'f' ) )
|
||||
{
|
||||
MUSIC_SetSongPosition( pos.measure + 1, 1, 0 );
|
||||
ch = 0;
|
||||
while( kbhit() )
|
||||
{
|
||||
getch();
|
||||
}
|
||||
}
|
||||
if ( ( ch == 'R' ) || ( ch == 'r' ) )
|
||||
{
|
||||
MUSIC_SetSongPosition( pos.measure - 1, 1, 0 );
|
||||
ch = 0;
|
||||
while( kbhit() )
|
||||
{
|
||||
getch();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TurnOnTextCursor();
|
||||
MUSIC_StopSong();
|
||||
}
|
||||
|
||||
free( SongPtr );
|
||||
MUSIC_Shutdown();
|
||||
printf( "\n" );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: LoadTimbres
|
||||
|
||||
Loads the instruments from disk
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void LoadTimbres
|
||||
(
|
||||
char *timbrefile
|
||||
)
|
||||
|
||||
{
|
||||
FILE *in;
|
||||
long size;
|
||||
char *TimbrePtr;
|
||||
|
||||
if ( ( in = fopen( timbrefile, "rb" ) ) == NULL )
|
||||
{
|
||||
printf( "Cannot open '%s' for read.\n", timbrefile );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
fseek( in, 0, SEEK_END );
|
||||
size = ftell( in );
|
||||
fseek( in, 0, SEEK_SET );
|
||||
|
||||
TimbrePtr = ( char * )malloc( size );
|
||||
if ( TimbrePtr == NULL )
|
||||
{
|
||||
printf( "Out of memory while reading '%s'.\n", timbrefile );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
if ( fread( TimbrePtr, size, 1, in ) != 1 )
|
||||
{
|
||||
printf( "Unexpected end of file while reading '%s'.\n", timbrefile );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fclose( in );
|
||||
|
||||
MUSIC_RegisterTimbreBank( TimbrePtr );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: LoadMidi
|
||||
|
||||
Loads the midi file from disk.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
char *LoadMidi
|
||||
(
|
||||
char *filename
|
||||
)
|
||||
|
||||
{
|
||||
FILE *in;
|
||||
long size;
|
||||
char *MidiPtr;
|
||||
|
||||
if ( ( in = fopen( filename, "rb" ) ) == NULL )
|
||||
{
|
||||
printf( "Cannot open '%s' for read.\n", filename );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
fseek( in, 0, SEEK_END );
|
||||
size = ftell( in );
|
||||
fseek( in, 0, SEEK_SET );
|
||||
|
||||
MidiPtr = ( char * )malloc( size );
|
||||
if ( MidiPtr == NULL )
|
||||
{
|
||||
printf( "Out of memory while reading '%s'.\n", filename );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
if ( fread( MidiPtr, size, 1, in ) != 1 )
|
||||
{
|
||||
printf( "Unexpected end of file while reading '%s'.\n", filename );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fclose( in );
|
||||
|
||||
return( MidiPtr );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: GetUserText
|
||||
|
||||
Checks if the specified string is present in the command line
|
||||
and returns a pointer to the text following it.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
char *GetUserText
|
||||
(
|
||||
const char *parameter
|
||||
)
|
||||
|
||||
{
|
||||
int i;
|
||||
int length;
|
||||
char *text;
|
||||
char *ptr;
|
||||
|
||||
extern int _argc;
|
||||
extern char **_argv;
|
||||
|
||||
text = NULL;
|
||||
length = strlen( parameter );
|
||||
i = 1;
|
||||
while( i < _argc )
|
||||
{
|
||||
ptr = _argv[ i ];
|
||||
|
||||
if ( ( strnicmp( parameter, ptr, length ) == 0 ) &&
|
||||
( *( ptr + length ) == '=' ) )
|
||||
{
|
||||
text = ptr + length + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return( text );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: CheckUserParm
|
||||
|
||||
Checks if the specified string is present in the command line.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int CheckUserParm
|
||||
(
|
||||
const char *parameter
|
||||
)
|
||||
|
||||
{
|
||||
int i;
|
||||
int found;
|
||||
char *ptr;
|
||||
|
||||
extern int _argc;
|
||||
extern char **_argv;
|
||||
|
||||
found = FALSE;
|
||||
i = 1;
|
||||
while( i < _argc )
|
||||
{
|
||||
ptr = _argv[ i ];
|
||||
|
||||
// Only check parameters preceded by - or /
|
||||
if ( ( *ptr == '-' ) || ( *ptr == '/' ) )
|
||||
{
|
||||
ptr++;
|
||||
if ( stricmp( parameter, ptr ) == 0 )
|
||||
{
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return( found );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: DefaultExtension
|
||||
|
||||
Checks if the specified filename contains an extension and adds
|
||||
one if it doesn't.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void DefaultExtension
|
||||
(
|
||||
char *path,
|
||||
char *extension
|
||||
)
|
||||
|
||||
{
|
||||
char *src;
|
||||
|
||||
//
|
||||
// if path doesn't have a .EXT, append extension
|
||||
// (extension should include the .)
|
||||
//
|
||||
src = path + strlen( path ) - 1;
|
||||
|
||||
while( ( *src != '\\' ) && ( src != path ) )
|
||||
{
|
||||
if ( *src == '.' )
|
||||
{
|
||||
// it has an extension
|
||||
return;
|
||||
}
|
||||
src--;
|
||||
}
|
||||
|
||||
strcat( path, extension );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: TurnOffTextCursor
|
||||
|
||||
Turns the cursor off.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void TurnOffTextCursor
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
union REGS regs;
|
||||
|
||||
regs.w.ax = 0x0100;
|
||||
regs.w.cx = 0x2000;
|
||||
#ifdef __FLAT__
|
||||
int386(0x10,®s,®s);
|
||||
#else
|
||||
int86(0x10,®s,®s);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: TurnOnTextCursor
|
||||
|
||||
Turns the cursor on.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void TurnOnTextCursor
|
||||
(
|
||||
void
|
||||
)
|
||||
|
||||
{
|
||||
union REGS regs;
|
||||
|
||||
regs.w.ax = 0x0100;
|
||||
regs.w.cx = 0x0708;
|
||||
#ifdef __FLAT__
|
||||
int386(0x10,®s,®s);
|
||||
#else
|
||||
int86(0x10,®s,®s);
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.C
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. This code
|
||||
is left public for you to modify.
|
||||
**********************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "usrhooks.h"
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_GetMem
|
||||
|
||||
Allocates the requested amount of memory and returns a pointer to
|
||||
its location, or NULL if an error occurs. NOTE: pointer is assumed
|
||||
to be dword aligned.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem
|
||||
(
|
||||
void **ptr,
|
||||
unsigned long size
|
||||
)
|
||||
|
||||
{
|
||||
void *memory;
|
||||
|
||||
memory = malloc( size );
|
||||
if ( memory == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
*ptr = memory;
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_FreeMem
|
||||
|
||||
Deallocates the memory associated with the specified pointer.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_FreeMem
|
||||
(
|
||||
void *ptr
|
||||
)
|
||||
|
||||
{
|
||||
if ( ptr == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
free( ptr );
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.H
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
Public header file for USRHOOKS.C.
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. The function
|
||||
prototypes in this header should not be modified.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __USRHOOKS_H
|
||||
#define __USRHOOKS_H
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Error definitions
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
enum USRHOOKS_Errors
|
||||
{
|
||||
USRHOOKS_Warning = -2,
|
||||
USRHOOKS_Error = -1,
|
||||
USRHOOKS_Ok = 0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem( void **ptr, unsigned long size );
|
||||
int USRHOOKS_FreeMem( void *ptr );
|
||||
|
||||
#endif
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
ren ps.exe ps2.exe
|
||||
call bind ps2 ps
|
||||
del ps2.exe
|
|
@ -0,0 +1,45 @@
|
|||
.OPTIMIZE
|
||||
|
||||
lib_dir = ..
|
||||
prg_dir = .
|
||||
obj_dir = $(prg_dir)\
|
||||
main_dir = $(prg_dir)\
|
||||
header_dir = $(main_dir);$(lib_dir)\INCLUDE
|
||||
tasm_include_dir = /i$(main_dir) /i$(lib_dir)\source
|
||||
|
||||
lib_files = $(lib_dir)\audio_wf.lib
|
||||
|
||||
.h : $(header_dir)
|
||||
.c : $(header_dir)
|
||||
.asm : $(header_dir)
|
||||
.obj : $(obj_dir)
|
||||
|
||||
object_files = ps.obj usrhooks.obj
|
||||
|
||||
tasm_options = /zi /p $(tasm_include_dir)
|
||||
#wcc_options = /w4 /d2 /i=$(header_dir)
|
||||
wcc_options = /w4 /d1 /omaxnet /zp4 /5r /i=$(header_dir)
|
||||
wlink_options =
|
||||
|
||||
ps.exe: $(object_files) $(lib_files) makefile
|
||||
%create temp.lnk
|
||||
%append temp.lnk option quiet
|
||||
%append temp.lnk option stack=128k
|
||||
%append temp.lnk system dos4g
|
||||
%append temp.lnk name $^&
|
||||
%append temp.lnk debug all
|
||||
%append temp.lnk libfile $(lib_files)
|
||||
for %i in ($(object_files)) do %append temp.lnk file $(obj_dir)\%i
|
||||
wlink $(wlink_options) @temp.lnk
|
||||
#wc2dbg ps.exe
|
||||
del temp.lnk
|
||||
|
||||
.asm.obj :
|
||||
tasm $(tasm_options) $[* $(obj_dir)\$^&
|
||||
|
||||
.c.obj :
|
||||
wcc386 $(wcc_options) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
ps.obj : ps.c fx_man.h sndcards.h
|
||||
|
||||
usrhooks.obj : usrhooks.c usrhooks.h
|
|
@ -0,0 +1,410 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: PS.C
|
||||
|
||||
author: James R. Dose
|
||||
date: December 12, 1995
|
||||
|
||||
Simple sound player.
|
||||
|
||||
(c) Copyright 1995 James R. Dose. All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#include <conio.h>
|
||||
#include <dos.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "fx_man.h"
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function prototypes
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
char *LoadFile( char *filename, int *length );
|
||||
char *GetUserText( const char *parameter );
|
||||
int CheckUserParm( const char *parameter );
|
||||
void DefaultExtension( char *path, char *extension );
|
||||
|
||||
#define TRUE ( 1 == 1 )
|
||||
#define FALSE ( !TRUE )
|
||||
|
||||
#define NUMCARDS 8
|
||||
|
||||
char *SoundCardNames[] =
|
||||
{
|
||||
"Sound Blaster", "Awe 32", "Pro AudioSpectrum",
|
||||
"Sound Man 16", "Ensoniq SoundScape", "Gravis UltraSound",
|
||||
"Disney SoundSource", "Tandy SoundSource"
|
||||
};
|
||||
|
||||
int SoundCardNums[] =
|
||||
{
|
||||
SoundBlaster, Awe32, ProAudioSpectrum, SoundMan16,
|
||||
SoundScape, UltraSound, SoundSource, TandySoundSource
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: main
|
||||
|
||||
Sets up sound cards, calls the demo, and then cleans up.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void main
|
||||
(
|
||||
int argc,
|
||||
char *argv[]
|
||||
)
|
||||
|
||||
{
|
||||
int card;
|
||||
int voices;
|
||||
int rate;
|
||||
int bits;
|
||||
int channels;
|
||||
int reverb;
|
||||
int status;
|
||||
int length;
|
||||
int voice;
|
||||
fx_device device;
|
||||
char *SoundPtr = NULL;
|
||||
char *ptr;
|
||||
char filename[ 128 ];
|
||||
char ch;
|
||||
|
||||
printf( "\nPS Version 1.0 by Jim Dose\n" );
|
||||
|
||||
if ( ( CheckUserParm( "?" ) ) || ( argc < 2 ) )
|
||||
{
|
||||
int index;
|
||||
|
||||
printf(
|
||||
"Usage: PS [ soundfile ] CARD=[ card # ] VOICES=[ # of voices ]\n"
|
||||
" BITS=[ 8 or 16 ] [MONO/STEREO] RATE=[ mixing rate ]\n"
|
||||
" REVERB=[ reverb amount]\n\n"
|
||||
" sound card # = \n" );
|
||||
for( index = 0; index < NUMCARDS; index++ )
|
||||
{
|
||||
printf( " %d : %s\n", index, SoundCardNames[ index ] );
|
||||
}
|
||||
|
||||
printf( "\nDefault: PS [ soundfile ] CARD=0 VOICES=4 "
|
||||
"BITS=8 MONO RATE=11000\n\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
// Default is Sound Blaster
|
||||
card = 0;
|
||||
voices = 4;
|
||||
bits = 8;
|
||||
channels = 1;
|
||||
reverb = 0;
|
||||
rate = 11000;
|
||||
|
||||
ptr = GetUserText( "VOICES" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &voices );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "BITS" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &bits );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "RATE" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &rate );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "REVERB" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &reverb );
|
||||
}
|
||||
|
||||
ptr = GetUserText( "MONO" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
channels = 1;
|
||||
}
|
||||
|
||||
ptr = GetUserText( "STEREO" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
channels = 2;
|
||||
}
|
||||
|
||||
ptr = GetUserText( "CARD" );
|
||||
if ( ptr != NULL )
|
||||
{
|
||||
sscanf( ptr, "%d", &card );
|
||||
}
|
||||
|
||||
if ( ( card < 0 ) || ( card >= NUMCARDS ) )
|
||||
{
|
||||
printf( "Value out of range for sound card #: %d\n", card );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
strcpy( filename, argv[ 1 ] );
|
||||
DefaultExtension( filename, ".wav" );
|
||||
SoundPtr = LoadFile( filename, &length );
|
||||
if ( !SoundPtr )
|
||||
{
|
||||
strcpy( filename, argv[ 1 ] );
|
||||
DefaultExtension( filename, ".voc" );
|
||||
SoundPtr = LoadFile( filename, &length );
|
||||
if ( !SoundPtr )
|
||||
{
|
||||
strcpy( filename, argv[ 1 ] );
|
||||
SoundPtr = LoadFile( filename, &length );
|
||||
if ( !SoundPtr )
|
||||
{
|
||||
printf( "Cannot open '%s' for read.\n", argv[ 1 ] );
|
||||
exit( 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
status = FX_SetupCard( card, &device );
|
||||
if ( status != FX_Ok )
|
||||
{
|
||||
printf( "%s\n", FX_ErrorString( status ) );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
status = FX_Init( card, voices, channels, bits, rate );
|
||||
if ( status != FX_Ok )
|
||||
{
|
||||
printf( "%s\n", FX_ErrorString( status ) );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
FX_SetReverb( reverb );
|
||||
|
||||
FX_SetVolume( 255 );
|
||||
|
||||
printf( "Playing file '%s'.\n\n", filename );
|
||||
printf( "Press any key to play the sound.\n"
|
||||
"Press ESCape to end.\n\n" );
|
||||
|
||||
ch = 0;
|
||||
while( ch != 27 )
|
||||
{
|
||||
if ( stricmp( &filename[ strlen( filename ) - 3 ], "WAV" ) == 0 )
|
||||
{
|
||||
voice = FX_PlayWAV( SoundPtr, 0, 255, 255, 255, 0, 0 );
|
||||
}
|
||||
else if ( stricmp( &filename[ strlen( filename ) - 3 ], "VOC" ) == 0 )
|
||||
{
|
||||
voice = FX_PlayVOC( SoundPtr, 0, 255, 255, 255, 0, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
voice = FX_PlayRaw( SoundPtr, length, rate, 0, 255, 255, 255, 0, 0 );
|
||||
}
|
||||
|
||||
if ( voice < FX_Ok )
|
||||
{
|
||||
printf( "Sound error - %s\n", FX_ErrorString( status ) );
|
||||
}
|
||||
|
||||
ch = getch();
|
||||
}
|
||||
|
||||
FX_StopAllSounds();
|
||||
free( SoundPtr );
|
||||
FX_Shutdown();
|
||||
|
||||
printf( "\n" );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: LoadFile
|
||||
|
||||
Loads a file from disk.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
char *LoadFile
|
||||
(
|
||||
char *filename,
|
||||
int *length
|
||||
)
|
||||
|
||||
{
|
||||
FILE *in;
|
||||
long size;
|
||||
char *ptr;
|
||||
|
||||
if ( ( in = fopen( filename, "rb" ) ) == NULL )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fseek( in, 0, SEEK_END );
|
||||
size = ftell( in );
|
||||
fseek( in, 0, SEEK_SET );
|
||||
|
||||
ptr = ( char * )malloc( size );
|
||||
if ( ptr == NULL )
|
||||
{
|
||||
printf( "Out of memory while reading '%s'.\n", filename );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
if ( fread( ptr, size, 1, in ) != 1 )
|
||||
{
|
||||
printf( "Unexpected end of file while reading '%s'.\n", filename );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fclose( in );
|
||||
|
||||
*length = size;
|
||||
|
||||
return( ptr );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: GetUserText
|
||||
|
||||
Checks if the specified string is present in the command line
|
||||
and returns a pointer to the text following it.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
char *GetUserText
|
||||
(
|
||||
const char *parameter
|
||||
)
|
||||
|
||||
{
|
||||
int i;
|
||||
int length;
|
||||
char *text;
|
||||
char *ptr;
|
||||
|
||||
extern int _argc;
|
||||
extern char **_argv;
|
||||
|
||||
text = NULL;
|
||||
length = strlen( parameter );
|
||||
i = 1;
|
||||
while( i < _argc )
|
||||
{
|
||||
ptr = _argv[ i ];
|
||||
|
||||
if ( ( strnicmp( parameter, ptr, length ) == 0 ) &&
|
||||
( *( ptr + length ) == '=' ) )
|
||||
{
|
||||
text = ptr + length + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return( text );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: CheckUserParm
|
||||
|
||||
Checks if the specified string is present in the command line.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int CheckUserParm
|
||||
(
|
||||
const char *parameter
|
||||
)
|
||||
|
||||
{
|
||||
int i;
|
||||
int found;
|
||||
char *ptr;
|
||||
|
||||
extern int _argc;
|
||||
extern char **_argv;
|
||||
|
||||
found = FALSE;
|
||||
i = 1;
|
||||
while( i < _argc )
|
||||
{
|
||||
ptr = _argv[ i ];
|
||||
|
||||
// Only check parameters preceded by - or /
|
||||
if ( ( *ptr == '-' ) || ( *ptr == '/' ) )
|
||||
{
|
||||
ptr++;
|
||||
if ( stricmp( parameter, ptr ) == 0 )
|
||||
{
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
return( found );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: DefaultExtension
|
||||
|
||||
Checks if the specified filename contains an extension and adds
|
||||
one if it doesn't.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
void DefaultExtension
|
||||
(
|
||||
char *path,
|
||||
char *extension
|
||||
)
|
||||
|
||||
{
|
||||
char *src;
|
||||
|
||||
//
|
||||
// if path doesn't have a .EXT, append extension
|
||||
// (extension should include the .)
|
||||
//
|
||||
src = path + strlen( path ) - 1;
|
||||
|
||||
while( ( *src != '\\' ) && ( src != path ) )
|
||||
{
|
||||
if ( *src == '.' )
|
||||
{
|
||||
// it has an extension
|
||||
return;
|
||||
}
|
||||
src--;
|
||||
}
|
||||
|
||||
strcat( path, extension );
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.C
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. This code
|
||||
is left public for you to modify.
|
||||
**********************************************************************/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "usrhooks.h"
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_GetMem
|
||||
|
||||
Allocates the requested amount of memory and returns a pointer to
|
||||
its location, or NULL if an error occurs. NOTE: pointer is assumed
|
||||
to be dword aligned.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem
|
||||
(
|
||||
void **ptr,
|
||||
unsigned long size
|
||||
)
|
||||
|
||||
{
|
||||
void *memory;
|
||||
|
||||
memory = malloc( size );
|
||||
if ( memory == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
*ptr = memory;
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function: USRHOOKS_FreeMem
|
||||
|
||||
Deallocates the memory associated with the specified pointer.
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_FreeMem
|
||||
(
|
||||
void *ptr
|
||||
)
|
||||
|
||||
{
|
||||
if ( ptr == NULL )
|
||||
{
|
||||
return( USRHOOKS_Error );
|
||||
}
|
||||
|
||||
free( ptr );
|
||||
|
||||
return( USRHOOKS_Ok );
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
Copyright (C) 1994-1995 Apogee Software, Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
/**********************************************************************
|
||||
module: USRHOOKS.H
|
||||
|
||||
author: James R. Dose
|
||||
date: July 26, 1994
|
||||
|
||||
Public header file for USRHOOKS.C.
|
||||
|
||||
This module contains cover functions for operations the library
|
||||
needs that may be restricted by the calling program. The function
|
||||
prototypes in this header should not be modified.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __USRHOOKS_H
|
||||
#define __USRHOOKS_H
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Error definitions
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
enum USRHOOKS_Errors
|
||||
{
|
||||
USRHOOKS_Warning = -2,
|
||||
USRHOOKS_Error = -1,
|
||||
USRHOOKS_Ok = 0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
int USRHOOKS_GetMem( void **ptr, unsigned long size );
|
||||
int USRHOOKS_FreeMem( void *ptr );
|
||||
|
||||
#endif
|
Binary file not shown.
|
@ -0,0 +1,45 @@
|
|||
.OPTIMIZE
|
||||
|
||||
lib_dir = ..
|
||||
prg_dir = .
|
||||
obj_dir = $(prg_dir)\obj
|
||||
main_dir = $(prg_dir)\source
|
||||
header_dir = $(main_dir);$(lib_dir)\INCLUDE
|
||||
tasm_include_dir = /i$(main_dir) /i$(lib_dir)\source
|
||||
|
||||
lib_files = $(lib_dir)\audio_wf.lib
|
||||
|
||||
.h : $(header_dir)
|
||||
.c : $(header_dir)
|
||||
.asm : $(header_dir)
|
||||
.obj : $(obj_dir)
|
||||
|
||||
object_files = timer.obj usrhooks.obj
|
||||
|
||||
tasm_options = /zi /p $(tasm_include_dir)
|
||||
#wcc_options = /w4 /d2 /zm /i=$(header_dir)
|
||||
wcc_options = /w4 /d1 /omaxnet /zp4 /5r /zm /i=$(header_dir)
|
||||
wlink_options =
|
||||
|
||||
timer.exe: $(object_files) $(lib_files) makefile
|
||||
%create temp.lnk
|
||||
%append temp.lnk option quiet
|
||||
%append temp.lnk option eliminate
|
||||
%append temp.lnk system dos4g
|
||||
%append temp.lnk name $^&
|
||||
%append temp.lnk debug all
|
||||
%append temp.lnk libfile $(lib_files)
|
||||
for %i in ($(object_files)) do %append temp.lnk file $(obj_dir)\%i
|
||||
wlink $(wlink_options) @temp.lnk
|
||||
#wc2dbg demo.exe
|
||||
del temp.lnk
|
||||
|
||||
.asm.obj :
|
||||
tasm $(tasm_options) $[* $(obj_dir)\$^&
|
||||
|
||||
.c.obj :
|
||||
wcc386 $(wcc_options) $[* /fo=$(obj_dir)\$^&
|
||||
|
||||
demo.obj : demo.c task_man.h
|
||||
|
||||
usrhooks.obj : usrhooks.c usrhooks.h
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue