as released 2002-12-25
This commit is contained in:
commit
5b05925be2
506 changed files with 175402 additions and 0 deletions
187
audiolib/AUDIO.MAK
Normal file
187
audiolib/AUDIO.MAK
Normal file
|
@ -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
|
192
audiolib/AUDIO2.MAK
Normal file
192
audiolib/AUDIO2.MAK
Normal file
|
@ -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
|
BIN
audiolib/AUDIO_WF.LIB
Normal file
BIN
audiolib/AUDIO_WF.LIB
Normal file
Binary file not shown.
17
audiolib/DOPUBLIC.BAT
Normal file
17
audiolib/DOPUBLIC.BAT
Normal file
|
@ -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 ..\..
|
205
audiolib/GUS/GUSROTT.INI
Normal file
205
audiolib/GUS/GUSROTT.INI
Normal file
|
@ -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
|
BIN
audiolib/GUS/UCALC.EXE
Normal file
BIN
audiolib/GUS/UCALC.EXE
Normal file
Binary file not shown.
200
audiolib/GUS/ULTRAMID.INI
Normal file
200
audiolib/GUS/ULTRAMID.INI
Normal file
|
@ -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
|
BIN
audiolib/LIB/GF1_OSF.LB2
Normal file
BIN
audiolib/LIB/GF1_OSF.LB2
Normal file
Binary file not shown.
BIN
audiolib/LIB/GF1_OSF.LBK
Normal file
BIN
audiolib/LIB/GF1_OSF.LBK
Normal file
Binary file not shown.
BIN
audiolib/LIB/GF1_OSF.LIB
Normal file
BIN
audiolib/LIB/GF1_OSF.LIB
Normal file
Binary file not shown.
BIN
audiolib/LIB/PAWE32.LIB
Normal file
BIN
audiolib/LIB/PAWE32.LIB
Normal file
Binary file not shown.
2
audiolib/MAKEDB.BAT
Normal file
2
audiolib/MAKEDB.BAT
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
del audio_wf.lib
|
||||||
|
wmake.exe -f audio.mak "version = debugging" %1 %2 %3 %4 %5
|
BIN
audiolib/OBJ/ADLIBFX.OBJ
Normal file
BIN
audiolib/OBJ/ADLIBFX.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/AL_MIDI.OBJ
Normal file
BIN
audiolib/OBJ/AL_MIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/AUDIO_WF.LIB
Normal file
BIN
audiolib/OBJ/AUDIO_WF.LIB
Normal file
Binary file not shown.
BIN
audiolib/OBJ/AWE32.OBJ
Normal file
BIN
audiolib/OBJ/AWE32.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/BLASTER.OBJ
Normal file
BIN
audiolib/OBJ/BLASTER.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/DEBUGIO.OBJ
Normal file
BIN
audiolib/OBJ/DEBUGIO.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/DMA.OBJ
Normal file
BIN
audiolib/OBJ/DMA.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/DPMI.OBJ
Normal file
BIN
audiolib/OBJ/DPMI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/FX_MAN.OBJ
Normal file
BIN
audiolib/OBJ/FX_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/GMTIMBRE.OBJ
Normal file
BIN
audiolib/OBJ/GMTIMBRE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/GUS.OBJ
Normal file
BIN
audiolib/OBJ/GUS.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/GUSMIDI.OBJ
Normal file
BIN
audiolib/OBJ/GUSMIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/GUSWAVE.OBJ
Normal file
BIN
audiolib/OBJ/GUSWAVE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/IRQ.OBJ
Normal file
BIN
audiolib/OBJ/IRQ.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/LL_MAN.OBJ
Normal file
BIN
audiolib/OBJ/LL_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MIDI.OBJ
Normal file
BIN
audiolib/OBJ/MIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MPU401.OBJ
Normal file
BIN
audiolib/OBJ/MPU401.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MULTIVOC.OBJ
Normal file
BIN
audiolib/OBJ/MULTIVOC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MUSIC.OBJ
Normal file
BIN
audiolib/OBJ/MUSIC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MVREVERB.OBJ
Normal file
BIN
audiolib/OBJ/MVREVERB.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MV_MIX.OBJ
Normal file
BIN
audiolib/OBJ/MV_MIX.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/MV_MIX16.OBJ
Normal file
BIN
audiolib/OBJ/MV_MIX16.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/PAS16.OBJ
Normal file
BIN
audiolib/OBJ/PAS16.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/PCFX.OBJ
Normal file
BIN
audiolib/OBJ/PCFX.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/PITCH.OBJ
Normal file
BIN
audiolib/OBJ/PITCH.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/SNDSCAPE.OBJ
Normal file
BIN
audiolib/OBJ/SNDSCAPE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/SNDSRC.OBJ
Normal file
BIN
audiolib/OBJ/SNDSRC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/TASK_MAN.OBJ
Normal file
BIN
audiolib/OBJ/TASK_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJ/USER.OBJ
Normal file
BIN
audiolib/OBJ/USER.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/AL_MIDI.OBJ
Normal file
BIN
audiolib/OBJDB/AL_MIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/AUDIO_WF.LIB
Normal file
BIN
audiolib/OBJDB/AUDIO_WF.LIB
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/AWE32.OBJ
Normal file
BIN
audiolib/OBJDB/AWE32.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/BLASTER.OBJ
Normal file
BIN
audiolib/OBJDB/BLASTER.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/DEBUGIO.OBJ
Normal file
BIN
audiolib/OBJDB/DEBUGIO.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/DMA.OBJ
Normal file
BIN
audiolib/OBJDB/DMA.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/DPMI.OBJ
Normal file
BIN
audiolib/OBJDB/DPMI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/FX_MAN.OBJ
Normal file
BIN
audiolib/OBJDB/FX_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/GMTIMBRE.OBJ
Normal file
BIN
audiolib/OBJDB/GMTIMBRE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/GUS.OBJ
Normal file
BIN
audiolib/OBJDB/GUS.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/GUSMIDI.OBJ
Normal file
BIN
audiolib/OBJDB/GUSMIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/GUSWAVE.OBJ
Normal file
BIN
audiolib/OBJDB/GUSWAVE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/IRQ.OBJ
Normal file
BIN
audiolib/OBJDB/IRQ.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/LL_MAN.OBJ
Normal file
BIN
audiolib/OBJDB/LL_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MIDI.OBJ
Normal file
BIN
audiolib/OBJDB/MIDI.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MPU401.OBJ
Normal file
BIN
audiolib/OBJDB/MPU401.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MULTIVOC.OBJ
Normal file
BIN
audiolib/OBJDB/MULTIVOC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MUSIC.OBJ
Normal file
BIN
audiolib/OBJDB/MUSIC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MVREVERB.OBJ
Normal file
BIN
audiolib/OBJDB/MVREVERB.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MV_MIX.OBJ
Normal file
BIN
audiolib/OBJDB/MV_MIX.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/MV_MIX16.OBJ
Normal file
BIN
audiolib/OBJDB/MV_MIX16.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/PAS16.OBJ
Normal file
BIN
audiolib/OBJDB/PAS16.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/PITCH.OBJ
Normal file
BIN
audiolib/OBJDB/PITCH.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/SNDSCAPE.OBJ
Normal file
BIN
audiolib/OBJDB/SNDSCAPE.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/SNDSRC.OBJ
Normal file
BIN
audiolib/OBJDB/SNDSRC.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/TASK_MAN.OBJ
Normal file
BIN
audiolib/OBJDB/TASK_MAN.OBJ
Normal file
Binary file not shown.
BIN
audiolib/OBJDB/USER.OBJ
Normal file
BIN
audiolib/OBJDB/USER.OBJ
Normal file
Binary file not shown.
BIN
audiolib/PUBLIC/AUDIO_WF.LIB
Normal file
BIN
audiolib/PUBLIC/AUDIO_WF.LIB
Normal file
Binary file not shown.
224
audiolib/PUBLIC/EMIDIAPI.TXT
Normal file
224
audiolib/PUBLIC/EMIDIAPI.TXT
Normal file
|
@ -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.
|
||||||
|
|
BIN
audiolib/PUBLIC/INCLUDE/AUDIO_WF.LIB
Normal file
BIN
audiolib/PUBLIC/INCLUDE/AUDIO_WF.LIB
Normal file
Binary file not shown.
135
audiolib/PUBLIC/INCLUDE/FX_MAN.H
Normal file
135
audiolib/PUBLIC/INCLUDE/FX_MAN.H
Normal file
|
@ -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
|
92
audiolib/PUBLIC/INCLUDE/MUSIC.H
Normal file
92
audiolib/PUBLIC/INCLUDE/MUSIC.H
Normal file
|
@ -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
|
55
audiolib/PUBLIC/INCLUDE/SNDCARDS.H
Normal file
55
audiolib/PUBLIC/INCLUDE/SNDCARDS.H
Normal file
|
@ -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
|
68
audiolib/PUBLIC/INCLUDE/TASK_MAN.H
Normal file
68
audiolib/PUBLIC/INCLUDE/TASK_MAN.H
Normal file
|
@ -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
|
84
audiolib/PUBLIC/INCLUDE/USRHOOKS.C
Normal file
84
audiolib/PUBLIC/INCLUDE/USRHOOKS.C
Normal file
|
@ -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 );
|
||||||
|
}
|
55
audiolib/PUBLIC/INCLUDE/USRHOOKS.H
Normal file
55
audiolib/PUBLIC/INCLUDE/USRHOOKS.H
Normal file
|
@ -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
|
60
audiolib/PUBLIC/MIDI.TXT
Normal file
60
audiolib/PUBLIC/MIDI.TXT
Normal file
|
@ -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.
|
1713
audiolib/PUBLIC/NOTES.TXT
Normal file
1713
audiolib/PUBLIC/NOTES.TXT
Normal file
File diff suppressed because it is too large
Load diff
BIN
audiolib/PUBLIC/PM/GMTIMBRE.TMB
Normal file
BIN
audiolib/PUBLIC/PM/GMTIMBRE.TMB
Normal file
Binary file not shown.
45
audiolib/PUBLIC/PM/MAKEFILE
Normal file
45
audiolib/PUBLIC/PM/MAKEFILE
Normal file
|
@ -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
|
BIN
audiolib/PUBLIC/PM/MAKETMB.EXE
Normal file
BIN
audiolib/PUBLIC/PM/MAKETMB.EXE
Normal file
Binary file not shown.
BIN
audiolib/PUBLIC/PM/OBJ/PM.OBJ
Normal file
BIN
audiolib/PUBLIC/PM/OBJ/PM.OBJ
Normal file
Binary file not shown.
BIN
audiolib/PUBLIC/PM/OBJ/USRHOOKS.OBJ
Normal file
BIN
audiolib/PUBLIC/PM/OBJ/USRHOOKS.OBJ
Normal file
Binary file not shown.
BIN
audiolib/PUBLIC/PM/PM.EXE
Normal file
BIN
audiolib/PUBLIC/PM/PM.EXE
Normal file
Binary file not shown.
37
audiolib/PUBLIC/PM/PM.TXT
Normal file
37
audiolib/PUBLIC/PM/PM.TXT
Normal file
|
@ -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‚
|
31
audiolib/PUBLIC/PM/README.TXT
Normal file
31
audiolib/PUBLIC/PM/README.TXT
Normal file
|
@ -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
|
537
audiolib/PUBLIC/PM/SOURCE/PM.C
Normal file
537
audiolib/PUBLIC/PM/SOURCE/PM.C
Normal file
|
@ -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
|
||||||
|
}
|
84
audiolib/PUBLIC/PM/SOURCE/USRHOOKS.C
Normal file
84
audiolib/PUBLIC/PM/SOURCE/USRHOOKS.C
Normal file
|
@ -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 );
|
||||||
|
}
|
55
audiolib/PUBLIC/PM/SOURCE/USRHOOKS.H
Normal file
55
audiolib/PUBLIC/PM/SOURCE/USRHOOKS.H
Normal file
|
@ -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
|
BIN
audiolib/PUBLIC/PM/TIMBRES.ZIP
Normal file
BIN
audiolib/PUBLIC/PM/TIMBRES.ZIP
Normal file
Binary file not shown.
3
audiolib/PUBLIC/PS/BINDPS.BAT
Normal file
3
audiolib/PUBLIC/PS/BINDPS.BAT
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ren ps.exe ps2.exe
|
||||||
|
call bind ps2 ps
|
||||||
|
del ps2.exe
|
45
audiolib/PUBLIC/PS/MAKEFILE
Normal file
45
audiolib/PUBLIC/PS/MAKEFILE
Normal file
|
@ -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
|
410
audiolib/PUBLIC/PS/PS.C
Normal file
410
audiolib/PUBLIC/PS/PS.C
Normal file
|
@ -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 );
|
||||||
|
}
|
BIN
audiolib/PUBLIC/PS/PS.EXE
Normal file
BIN
audiolib/PUBLIC/PS/PS.EXE
Normal file
Binary file not shown.
BIN
audiolib/PUBLIC/PS/PS.OBJ
Normal file
BIN
audiolib/PUBLIC/PS/PS.OBJ
Normal file
Binary file not shown.
84
audiolib/PUBLIC/PS/USRHOOKS.C
Normal file
84
audiolib/PUBLIC/PS/USRHOOKS.C
Normal file
|
@ -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 );
|
||||||
|
}
|
55
audiolib/PUBLIC/PS/USRHOOKS.H
Normal file
55
audiolib/PUBLIC/PS/USRHOOKS.H
Normal file
|
@ -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
|
BIN
audiolib/PUBLIC/PS/USRHOOKS.OBJ
Normal file
BIN
audiolib/PUBLIC/PS/USRHOOKS.OBJ
Normal file
Binary file not shown.
45
audiolib/PUBLIC/TIMER/MAKEFILE
Normal file
45
audiolib/PUBLIC/TIMER/MAKEFILE
Normal file
|
@ -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 a new issue