--- awesfx-0.5.1a.orig/config.sub
+++ awesfx-0.5.1a/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
-timestamp='2006-09-20'
+timestamp='2009-06-11'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -72,8 +72,8 @@
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -122,6 +122,7 @@
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -152,6 +153,9 @@
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
@@ -245,17 +249,20 @@
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore \
+ | maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
- | mips64vr | mips64vrel \
+ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
@@ -268,6 +275,7 @@
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | moxie \
| mt \
| msp430 \
| nios | nios2 \
@@ -277,7 +285,7 @@
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
| score \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -286,7 +294,7 @@
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
+ | z8k | z80)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12)
@@ -324,19 +332,22 @@
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
+ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
@@ -358,20 +369,24 @@
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
+ | xstormy16-* | xtensa*-* \
| ymp-* \
- | z8k-*)
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -435,6 +450,10 @@
basic_machine=m68k-apollo
os=-bsd
;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -443,10 +462,26 @@
basic_machine=ns32k-sequent
os=-dynix
;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
convex-c1)
basic_machine=c1-convex
os=-bsd
@@ -475,8 +510,8 @@
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16c)
- basic_machine=cr16c-unknown
+ cr16)
+ basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
@@ -514,6 +549,10 @@
basic_machine=m88k-motorola
os=-sysv3
;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
@@ -668,6 +707,14 @@
basic_machine=m68k-isi
os=-sysv
;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
m88k-omron*)
basic_machine=m88k-omron
;;
@@ -683,6 +730,10 @@
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -809,6 +860,14 @@
basic_machine=i860-intel
os=-osf
;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
pbd)
basic_machine=sparc-tti
;;
@@ -925,6 +984,9 @@
basic_machine=sh-hitachi
os=-hms
;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
sh64)
basic_machine=sh64-unknown
;;
@@ -1014,6 +1076,10 @@
basic_machine=tic6x-unknown
os=-coff
;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -1089,6 +1155,10 @@
basic_machine=z8k-unknown
os=-sim
;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
none)
basic_machine=none-none
os=-none
@@ -1127,7 +1197,7 @@
we32k)
basic_machine=we32k-att
;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1197,10 +1267,11 @@
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
+ | -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1209,7 +1280,7 @@
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
@@ -1219,7 +1290,7 @@
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1349,6 +1420,9 @@
-zvmoe)
os=-zvmoe
;;
+ -dicos*)
+ os=-dicos
+ ;;
-none)
;;
*)
@@ -1414,6 +1488,9 @@
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
@@ -1543,7 +1620,7 @@
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
--- awesfx-0.5.1a.orig/config.guess
+++ awesfx-0.5.1a/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+# Free Software Foundation, Inc.
-timestamp='2006-07-02'
+timestamp='2009-06-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -56,8 +56,8 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -139,16 +139,6 @@
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_MACHINE}" in
- i?86)
- test -z "$VENDOR" && VENDOR=pc
- ;;
- *)
- test -z "$VENDOR" && VENDOR=unknown
- ;;
-esac
-test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
-
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -171,6 +161,7 @@
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@@ -179,7 +170,7 @@
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -333,14 +324,30 @@
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
@@ -541,7 +548,7 @@
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[45])
+ *:AIX:*:[456])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -649,7 +656,7 @@
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
@@ -790,7 +797,7 @@
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- i*:MINGW*:*)
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
@@ -800,15 +807,24 @@
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- x86:Interix*:[3456]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[3456]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd | genuineintel)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -839,7 +855,14 @@
echo ${UNAME_MACHINE}-pc-minix
exit ;;
arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -851,28 +874,28 @@
echo crisv32-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-${VENDOR}-linux-gnu
+ echo frv-unknown-linux-gnu
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:*)
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips
- #undef mipsel
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
@@ -883,39 +906,16 @@
s: ::g
p
}'`"
- test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-${VENDOR}-linux-gnu
+ echo or32-unknown-linux-gnu
exit ;;
ppc:Linux:*:*)
- echo powerpc-${VENDOR}-linux-gnu
+ echo powerpc-unknown-linux-gnu
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-${VENDOR}-linux-gnu
+ echo powerpc64-unknown-linux-gnu
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -927,38 +927,44 @@
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-${VENDOR}-linux-gnu ;;
- PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;;
- *) echo hppa-${VENDOR}-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-${VENDOR}-linux-gnu
+ echo hppa64-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-${VENDOR}-linux-gnu
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
@@ -973,19 +979,8 @@
p'`
case "$ld_supported_targets" in
elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux-gnu"
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-${VENDOR}-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-${VENDOR}-linux-gnuoldld"
- exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
@@ -1018,7 +1013,7 @@
p
}'`"
test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}"
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
exit
}
test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
@@ -1051,7 +1046,7 @@
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
@@ -1095,8 +1090,11 @@
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
@@ -1134,6 +1132,16 @@
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
@@ -1146,7 +1154,7 @@
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
@@ -1209,6 +1217,9 @@
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1218,6 +1229,15 @@
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
@@ -1308,6 +1328,9 @@
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1468,9 +1491,9 @@
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
--- awesfx-0.5.1a.orig/setfx.c
+++ awesfx-0.5.1a/setfx.c
@@ -37,7 +37,7 @@
/*----------------------------------------------------------------*/
static void usage(void);
-static int getline(FILE *fp);
+static int getline_local(FILE *fp);
static int nextline(FILE *fp);
static char *gettok(FILE *fp);
static char *divtok(char *src, char *divs, int only_one);
@@ -126,7 +126,7 @@
}
curline = 0;
- if (!getline(fp))
+ if (!getline_local(fp))
return 0;
seq_init(seq_devname, seq_devidx);
@@ -370,7 +370,7 @@
* read a line and parse tokens
*----------------------------------------------------------------*/
-static int getline(FILE *fp)
+static int getline_local(FILE *fp)
{
char *p;
curline++;
@@ -393,12 +393,12 @@
{
if (connected) {
do {
- if (! getline(fp))
+ if (! getline_local(fp))
return FALSE;
} while (connected);
return TRUE;
} else {
- return getline(fp);
+ return getline_local(fp);
}
}
@@ -415,7 +415,7 @@
tok = divtok(NULL, " \t\r\n", FALSE);
while (tok == NULL || *tok == 0) {
if (! connected) return NULL;
- if (! getline(fp)) return NULL;
+ if (! getline_local(fp)) return NULL;
tok = divtok(line, " \t\r\n", FALSE);
}
return tok;
--- awesfx-0.5.1a.orig/sfxload.1
+++ awesfx-0.5.1a/sfxload.1
@@ -20,7 +20,7 @@
This program is necessary for playing MIDI samples via sequencer
programs supporting AWE driver. There is no big difference between
\fBsfxload\fP and \fBasfxload\fP except for that \fBasfxload\fP is for
-ALSA and \fBsfxload\fP is for OSS, respecitvely. The options to specify
+ALSA and \fBsfxload\fP is for OSS, respectively. The options to specify
devices are
different between them (see below).
@@ -70,7 +70,7 @@
or \fBfalse\fP can be specified as an optional argument.
.TP
.BI \-x,\ \-\-remove "\fR[=\fPbool\fR]\fP"
-Remove the optional samples previouly loaded via \fB\-b\fP option.
+Remove the optional samples previously loaded via \fB\-b\fP option.
Otherwise, all new samples are simply appended.
.TP
.BI \-N,\ \-\-increment "\fR[=\fPbool\fR]\fP"
@@ -161,7 +161,7 @@
Increase or set the verbosity level.
.TP
.BI \-q,\ \-\-quiet
-Don't show error messages, equivalen with \-\-verbose=0.
+Don't show error messages, equivalent with \-\-verbose=0.
.TP
.BI \-V,\ \-\-volume= percent
Specify the total volume of sounds, provided in percent.
@@ -275,7 +275,7 @@
.SH COPYRIGHT
Copyright (C) 1996-2003 Takashi Iwai.
.P
-The AWE32 driver and utilties are free software; you can redistribute them
+The AWE32 driver and utilities are free software; you can redistribute them
and/or modify them under the terms of the \fIGNU General Public
License\fP as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
--- awesfx-0.5.1a.orig/debian/awedrv-prog.html
+++ awesfx-0.5.1a/debian/awedrv-prog.html
@@ -0,0 +1,1280 @@
+
+
+ver.1.07
+Takashi Iwai +( +iwai@dragon.mm.t.u-tokyo.ac.jp) +
+ +Original version: + +http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-prog.html +
+ +
+ +
+ +
soundcard.h
.
++SEQ_DEFINEBUF(2048); ++ +
/dev/sequencer
.
++int seqfd; ++ +
seqbuf_dump
function.
++void seqbuf_dump() +{ + if (_seqbufptr) + if (write(seqfd, _seqbuf, _seqbufptr) == -1) { + perror("write /dev/sequencer"); + exit(-1); + } + _seqbufptr = 0; +} ++
+
+Most of SEQ_*
macros write the data packet on this buffer.
+The buffer is occaionally flushed when it's almost filled.
+To force to send data to the driver, call seqbuf_dump
+(or identically SEQ_DUMPBUF
) explicitly.
+
+ +
+ +
/dev/sequencer
,
+and find out the AWE32 device number from synthesizer devices in it.
+Both the file descriptor and the device number must be specified
+for accessing to AWE32 driver later.
+Also, you should know other information of AWE32 driver, for example,
+allowed voices, etc from synth_info
structure.
+
++struct synth_info card_info; +int device; + +void seq_init() +{ + int nrsynths; + + if ((seqfd = open("/dev/sequencer", O_WRONLY, 0)) < 0) { + perror("open /dev/sequencer"); + exit(-1); + } + + if (ioctl(seqfd, SNDCTL_SEQ_NRSYNTHS, &nrsynths) == -1) { + perror("there is no soundcard"); + exit(-1); + } + device = -1; + for (i = 0; i < nrsynths; i++) { + card_info.device = i; + if (ioctl(seqfd, SNDCTL_SYNTH_INFO, &card_info) == -1) { + perror("cannot get info on soundcard"); + exit(-1); + } + if (card_info.synth_type == SYNTH_TYPE_SAMPLE + && card_info.synth_subtype == SAMPLE_TYPE_AWE32) { + device = i; + break; + } + } + + if (device < 0) { + perror("No AWE synth device is found"); + exit(-1); + } +} ++
+ +
+ +
SEQ_WRPATCH
macro.
++SEQ_WRPATCH(patch ptr, patchlen); ++where
patch
is the pointer to the patch data,
+and patchlen
is the total length of the patch data.
++ +
awe_voice.h
.
+
+
+All the patch data has the same 16 bytes header structure at the first block,
+defined as awe_patch_info
:
+
+typedef struct awe_patch_info { + short key; /* use AWE_PATCH here */ + short device_no; /* synthesizer number */ + unsigned short sf_id; /* file id */ + short optarg; /* optional argument */ + long len; /* data length (without this header) */ + short type; /* patch operation type */ + short reserved; /* word alignment data */ +} awe_patch_info; ++where
key
must be AWE_PATCH
value,
+and device_no
is the above device number of AWE driver.
+sf_id
is ignored in the current version.
+sf_version
is the optional argument and depends on its
+operation type.
+len
has the length of the following data
+(not including this patch header itself).
+type
specifies the operation type of this patch data.
+The patch data follows after this header depending its operation type.
++ +To load the soundfont data on the driver, the following sequences are applied: +
+ +
+
+To open a patch, write a patch data including a header with the operation id
+AWE_OPEN_PATCH
and awe_open_parm
structure data
+following after the header,
+
+typedef struct _awe_open_parm { + unsigned short type; /* sample type */ + short reserved; + char name[AWE_PATCH_NAME_LEN]; +} awe_open_parm; ++where
type
specifies the sample type,
+and name
stores its name.
+The sample type holds an enumurated value from 0 to 6 indicating
+the type of patch data, and a bit flag 0x100 indicating that the sample is
+"locked".
+The locked samples will not be cleared even after AWE_REMOVE_LAST_SAMPLES
+operation.
+This means that the locked samples always remain unless all samples are
+cleared by SEQ_RESET_SAMPLES via ioctl.
+The sample name is a zero terminated string,
+and not referred from anywhere so far in the current version.
+
+
+The data length of awe_patch_info
is equal to
+AWE_OPEN_PARM_SIZE
.
+Then, write the patch data containing both awe_patch_info
+and awe_open_parm
as,
+
+SEQ_WRPATCH(patch, sizeof(*patch) + patch->len); ++
+ +
+
+To close the patch, write a patch data containing only the patch header
+with the operation id AWE_CLOSE_PATCH
.
+No optional argument nor the data structure is required.
+The data length of awe_patch_info
is then equal to zero.
+
+ +
+typedef struct awe_sample_info { + unsigned short sf_id; /* file id */ + unsigned short sample; /* sample id */ + long start, end; /* start & end offset */ + long loopstart, loopend; /* loop start & end offset */ + long size; /* size (0 = ROM) */ + short checksum_flag; /* ignored */ + unsigned short mode_flags; /* mode flags */ + unsigned long checksum; /* ignored */ +} awe_sample_info; ++where
sf_id
is the file id used internally and normally zero,
+sample
is the sample id of this sample which is referred by
+voice information records.
+It's usually identical with the sampleId in soundfont files.
+start
and end
denote the sample start and end
+offset positions,
+loopstart
and loopend
denote the loop start
+and end positions,
+and size
is the data length.
+The offsets and size are word length if the data is 16bit.
+Otherwise for 8bit data, they are defined as byte size.
+The zero size
parameter means a ROM sample starting
+from start
offset.
+When size
has larger than zero, the sample is loaded on
+DRAM, and the offsets will be shifted.
+checksum_flag
and checksum
was obsolete
+parameters, and no more supported in ver.0.4.1.
+
+
+mode_flags
is 16bit flags of the sample data.
+
+#define AWE_SAMPLE_8BITS 1 /* wave data is 8bits */ +#define AWE_SAMPLE_UNSIGNED 2 /* wave data is unsigned */ +#define AWE_SAMPLE_NO_BLANK 4 /* no blank loop is attached */ +#define AWE_SAMPLE_SINGLESHOT 8 /* single-shot w/o loop */ +#define AWE_SAMPLE_BIDIR_LOOP 16 /* bidirectional looping */ +#define AWE_SAMPLE_STEREO_LEFT 32 /* stereo left sound */ +#define AWE_SAMPLE_STEREO_RIGHT 64 /* stereo right sound */ +#define AWE_SAMPLE_REVERSE_LOOP 128 /* reverse loop */ ++The 8bit or unsigned data is converted inside the awedrv to 16bit signed data. +When
AWE_SAMPLE_NO_BLANK
is on, 48 words of blank loop is appended
+after the sample automatically.
+When AWE_SAMPLE_SINGLESHOT
is on, the loop points are set on this blank loop.
+AWE_SAMPLE_BIDIR_LOOP
indicates that the loop is bidirectional
+(pingpong), and the samples in this loop is extended as mirror image inside.
+AWE_SAMPLE_REVERSE_LOOP
means the reverse loop.
+The loop sample is duplicated on mirror image inside the driver.
+Other STEREO
flags show that the voice is a stereo sound.
+If the sample data doesn't contain any blank loop, AWE_SAMPLE_NO_BLANK
flag should be set.
+Also, if the sample data is a single-shot, AWE_SAMPLE_SINGLESHOT
flag should be set.
+Otherwise, you must add a blank loop after the sample, and direct the loop pointers on it by yourself.
++ +The driver doesn't care about these stereo flags, but checks only +the key note and velocity range. If two or more voices are suitable +on the given note and velocity pair, all they should be played simultaneously. +The multiple instruments are featured only in channel playing mode, but +in normal mode, only the first matching voice is played. +
+
+To send a wave sample data, write a patch structure containing a patch header
+with the operation id AWE_LOAD_DATA
,
+the sample header awe_sample_info
,
+and the sample wave data if necessary.
+Thus, the len
parameter of the first patch header becomes
+(AWE_SAMPLE_INFO_SIZE
) + data byte size).
+
+ +
+ +The voice information has 4 bytes after the patch header, +
+typedef struct _awe_voice_rec_hdr { + unsigned char bank; /* midi bank number */ + unsigned char instr; /* midi preset number */ + char nvoices; /* number of voices */ + char write_mode; /* write mode */ +} awe_voice_rec_hdr; ++where
bank
and instr
specify
+the bank and program number of this instrument,
+and nvoices
denotes the number of voices (samples)
+used in this instrument.
+If any voices with the same bank and program number exist already,
+the new voices are prepended before the list of older voices.
+nvoices
must be larger than zero.
+Thus, len
in patch header has the valueAWE_VOICE_REC_SIZE
+
+nvoices
* AWE_VOICE_INFO_SIZE
).write_mode
specifies how the voice infos are stored on the driver.
++#define AWE_WR_APPEND 0 /* append anyway */ +#define AWE_WR_EXCLUSIVE 1 /* skip if already exists */ +#define AWE_WR_REPLACE 2 /* replace if already exists */ ++Normally,
AWE_WR_APPEND
is used to append each data.
+In usual situation, it doesn't matter which mode is selected.
+If a data with the same preset/bank pair already exists on the driver
+as a same patch,
+the operation may differ depending on its write mode.
+When AWE_WR_EXCLUSIVE
is specified, the new data is skipped.
+When AWE_WR_REPLACE
is specified, the old data is thrown and
+the new data replaces with the old one.
+Otherwise, the data is always appended, and the new one is used together
+with the old data, that is, both of them are reproduced as one sound.
+
+
+After this 4bytes record,
+nvoices
of 92bytes of voice information
+for each sample are appended.
+
+typedef struct _awe_voice_info { + unsigned short sf_id; /* file id */ + unsigned short sample; /* sample id */ + long start, end; /* sample offset correction */ + long loopstart, loopend; /* loop offset correction */ + short rate_offset; /* sample rate pitch offset */ + unsigned short mode; /* sample mode */ + short root; /* midi root key */ + short tune; /* pitch tuning (in cents) */ + char low, high; /* key note range */ + char vellow, velhigh; /* velocity range */ + char fixkey, fixvel; /* fixed key and velocity */ + char pan, fixpan; /* panning, fixed panning */ + short exclusiveClass; /* exclusive class (0 = none) */ + unsigned char amplitude; /* sample volume (127 max) */ + unsigned char attenuation; /* attenuation (0.375dB) */ + short scaleTuning; /* pitch scale tuning(%), normally 100 */ + awe_voice_parm parm; /* voice envelope parameters */ + short index; /* internal index (set by driver) */ +} awe_voice_info; ++where
sf_id
is an internal file id and normally zero,
+sample
is the referring sample id of this voice.
+start
, end
, loopstart
, and
+loopend
are the offset correction of this voices.
+For example, a value of start
30 means that
+this voice starts 30 points after the original start points.
+
+
+rate_offset
holds the pitch offset of this voice
+according to its sample rate.
+This value is an AWE specific logarithmic rate,
+that each 4096 is one octave shift.
+For example, a value of -2048 indicates the sample is played 6 semitones flat.
+The value can be calculated by the following equation.
+
+rate_offset = log(Hz / 44100) / log(2) * 4096 ++
+
+mode
is 16bit flags indicating the kind of this voice.
+
+#define AWE_MODE_ROMSOUND 0x8000 +#define AWE_MODE_STEREO 1 +#define AWE_MODE_LOOPING 2 +#define AWE_MODE_NORELEASE 4 /* obsolete */ +#define AWE_MODE_INIT_PARM 8 ++
AWE_MODE_STEREO
and AWE_MODE_NORELEASE
+are ignored in the current version.
+AWE_MODE_INIT_PARM
means that parm
members
+are initialized at loading automatically.
+
+
+root
and tune
contain the root key note
+and fine tune of this voice.
+The key is supplied by MIDI key value, from 0 to 127,
+and fine tune is a cents order.
+A positive fine tune value indicates the sound is played at a higher pitch,
+and a negative value means a lower pitch.
+
+
+low
and high
define
+the key note range of this voice.
+If the key is out of this range, the driver skips this voice,
+and searches the next voice from voice list.
+To accepts all keys, low
be 0, and high
127.
+
+
+Similarly, vellow
and velhigh
define
+the velocity range of this voice.
+As well as in key note range,
+the voice is accepted only when the velocity is within this range.
+
+
+fixkey
, and fixvel
indicate
+the fixed key and velocity of this voice.
+If the value is not -1, the key or velocity is fixed on this value.
+
+
+pan
has a panning position of the "dry" sound,
+from 0(left) to 127(right), or -1 for not specified.
+fixpan
also contains the fixed panning position.
+If valid fixpan
is given, the panning position is fixed
+to that value.
+
+
+exclusiveClass
is the exclusive class of this voice.
+If the value is zero, no exclusive system activates.
+Otherwise, the voices with the sample exclusive class are turned off
+before playing a new voice with this class.
+This feature is used for some drum instruments like hi-hat.
+
+
+amplitude
and attenuation
define
+the volume of this voice.
+amplitude
is a linear volume from 0 to 127,
+and amplitude
means the attenuation from full level
+in 0.375dB order.
+For example, a voice with attenuation
40 is reproduced
+15dB lower from full scale.
+
+
+scaleTuning
is a pitch scale tuning ratio, and normally is 100.
+
+
+index
is an internal sample index, and ignored at loading.
+
+
+parm
contains the modulation/volume envelopes, LFO's and other
+raw parameters of emu8000 chip.
+
+typedef struct _awe_voice_parm { + unsigned short moddelay; /* modulation delay (ENVVAL) */ + unsigned short modatkhld; /* modulation attack & hold time (ATKHLD) */ + unsigned short moddcysus; /* modulation decay & sustain (DCYSUS) */ + unsigned short modrelease; /* modulation release time (DCYSUS) */ + short modkeyhold, modkeydecay; /* envelope change per key (not used) */ + unsigned short voldelay; /* volume delay (ENVVOL) */ + unsigned short volatkhld; /* volume attack & hold time (ATKHLDV) */ + unsigned short voldcysus; /* volume decay & sustain (DCYSUSV) */ + unsigned short volrelease; /* volume release time (DCYSUSV) */ + short volkeyhold, volkeydecay; /* envelope change per key (not used) */ + unsigned short lfo1delay; /* LFO1 delay (LFO1VAL) */ + unsigned short lfo2delay; /* LFO2 delay (LFO2VAL) */ + unsigned short pefe; /* modulation pitch & cutoff (PEFE) */ + unsigned short fmmod; /* LFO1 pitch & cutoff (FMMOD) */ + unsigned short tremfrq; /* LFO1 volume & freq (TREMFRQ) */ + unsigned short fm2frq2; /* LFO2 pitch & freq (FM2FRQ2) */ + unsigned char cutoff; /* initial cutoff (upper of IFATN) */ + unsigned char filterQ; /* initial filter Q [0-15] (upper of CCCA) */ + unsigned char chorus; /* chorus send */ + unsigned char reverb; /* reverb send */ + unsigned short reserved[4]; /* not used */ +} awe_voice_parm; ++The values correspond to the register values of emu8000 described in +AWE32 Developer's Information Package (ADIP) +by CreativeLabs. +This record can be initialized internally in the driver +by setting
AWE_MODE_INIT_PARM
flag in voice_info record.
++ +It would be useful to use a fixed size record if only one voice is defined +in one record. +
+typedef struct _awe_voice_rec_patch { + awe_patch_info patch; + awe_voice_rec_hdr hdr; + awe_voice_info info; +} awe_voice_rec_patch; ++
+ +
+ +To load a preset map, use the operation AWE_MAP_PRESET, and the following +another patch record as its body. +
+typedef struct awe_voice_map { + int map_bank, map_instr, map_key; /* key = -1 means all keys */ + int src_bank, src_instr, src_key; +} awe_voice_map; ++The map_bank, map_instr and map_key define the destination bank, preset +and key numbers, respectively. +The latter, src_bank, src_instr and src_key define the source preset as well. +If key number holds a value -1, it's regarded as searching all keys +in the given preset. +
+ +
+
+The patch record is as same as in the sample data record (3.1.2) except
+the operation id AWE_REPLACE_DATA
and the optional argument
+(optarg
).
+The optional argument defines the number of channels to be used for
+transfer the data.
+More channels can transfer more faster the sample data, though,
+of course, the available voices are restricted during transfer.
+
+ +Note that the sample wave size must be equal with the replaced older data. +Otherwise, the patch will be rejected. +
+ +
AWE_UNLOAD_PATCH
.
+If this operation is accepted, the driver removes
+the voice informations and samples which were sent at last.
+Note that no "open" operation is required for unloading.
+
+
+To unload the "unlocked" samples, use AWE_REMOVE_LAST_SAMPLES
+macro.
+
+AWE_REMOVE_LAST_SAMPLES(seqfd, device); ++This macro uses ioctl, the file descriptor of the sequencer device is required +as an argument. +Since the ioctl is employed, the operation is done immediately +without buffered. +
+ + +
+ +
soundcard.h
.
+Unlikely to AWE patch, one sample is associated with one voice information
+in GUS patch.
++struct patch_info { + unsigned short key; /* Use GUS_PATCH here */ + short device_no; /* Synthesizer number */ + short instr_no; /* Midi pgm# */ + unsigned int mode; + int len; /* Size of the wave data in bytes */ + int loop_start, loop_end; /* Byte offsets from the beginning */ + unsigned int base_freq; + unsigned int base_note; + unsigned int high_note; + unsigned int low_note; + int panning; /* 0 to 15? */ + int detuning; + unsigned char env_rate[ 6 ]; /* GUS HW ramping rate */ + unsigned char env_offset[ 6 ]; /* 255 == 100% */ + unsigned char tremolo_sweep; + unsigned char tremolo_rate; + unsigned char tremolo_depth; + unsigned char vibrato_sweep; + unsigned char vibrato_rate; + unsigned char vibrato_depth; + int scale_frequency; + unsigned int scale_factor; /* from 0 to 2048 or 0 to 2 */ + int volume; + int fractions; + int spare[3]; + char data[1]; /* The waveform data starts here */ +}; ++
key
must be GUS_PATCH
value,
+and device_no
is the device number of AWE driver.
+
+
+instr_no
defines the program number of this sample.
+The bank number can be defined using the extended control
+AWE_SET_GUS_BANK
function before loading the samples.
+As default, the bank is set to zero.
+
+
+mode
indicates the flags of this sample.
+Backward looping, scaling and fractions are not implemented yet.
+
+len
has the length of the sample data in bytes order.
+Note that AWE patch holds in words order for 16bit samples, but GUS patch
+is always in bytes order.
+Similarly, loop position by loop_start
and loop_end
+is in byte offset.
+
+
+base_freq
, base_note, high_note
,
+and low_note
are converted in the driver to corresponding
+key note and fine tunes.
+
+
+panning
parameter is passed as the initial position
+of dry sounds.
+
+ +The 6 points volume envelope, tremolo, and vibrato parameters +are converted to the AWE32 specific values in the driver. +
+
+Other parameters, detuning
,
+scale_frequency
, scale_factor
,
+volume
, and fractions
are ignored.
+
+ +The sample data follows after this is converted according to +the flags specified automatically. +
+ +After setting these parameters and copying the sample data from data pointer, +load this patch data on the driver. +
+SEQ_WRPATCH(device, patch, sizeof(patch) + data byte size - 1); ++
+ +
+ +
+ +More specifically, the driver has four playing modes: +indirect, direct, multi, and multi2 modes. +The first two modes behave as the normal playing mode, and the latter +two modes as the channel playing mode. +The indirect mode is a new type which was added from ver.0.4.1e. +It assigns the actual voice for each voice number at each time +it's played, while the direct mode fixes each voice per +the corresponding voice number. +The multi2 mode is an internal mode for /dev/sequencer2 control. +Normally, this mode is not used explicitly. +
+ +The merit of indirect mode is capability of multi layered preset, +and reduction of click noises. +Many SoundFont files define presets including multiple instruments, +instruments including multiple samples, and stereo sounds. +In such a case, two or more samples must be played at the same time. +Then, in the indirect mode, the driver assigns one or more voices +when a voice number is called, +and release the assigned voices when the note-off is called +to the corresponding voice number. +A released voice is left for a while until assgined as a new voice, +so that this also reduces a click noise occuring when the voice is terminated. +The multi and multi2 modes employ this same mechanism, too. +
+
+To change the current playing mode, call AWE_CHANNEL_MODE
macro.
+
+AWE_SET_CHANNEL_MODE(device, mode); ++where
mode
is one of the following predefined modes,
++#define AWE_PLAY_INDIRECT 0 /* indirect voice mode (default) */ +#define AWE_PLAY_MULTI 1 /* multi note voice mode */ +#define AWE_PLAY_DIRECT 2 /* direct single voice mode */ +#define AWE_PLAY_MULTI2 3 /* sequencer2 mode; used internally */ ++Note that the playing mode is reset at each time +the device is closed to the indirect mode. +
+ +
SEQ_SET_PROGRAM
macro.
++SEQ_SET_PROGRAM(device, voice, program); ++where
voice
is the voice or channel number depending on the
+current playing mode.
+In the normal playing mode,
+the voice number usually has a value from 0 to 29.
+program
is the program number to be played.
+AWE32 has 32 individual channels, but when playing samples on DRAM,
+the last two channels cannot be used due to DRAM refresh.
+Thus, in awedrv, only 30 channels are available.
+
+
+In channel playing mode, voice
becomes a MIDI channel number
+(usually from 0 to 15). The voices are allocated internally by the driver.
+Likewise, in all other sequencer controls, voice
becomes the
+corresponding MIDI channel number.
+
+
+The drum voices are assigned to individual programs with
+(key number + 128) by traditional reason.
+The awedrv itself has a capability to deal with the drumset as one program.
+In such a case, users must specify the preset number as the drumset number
+and the fixed bank number 128.
+You can also set the drum channels by extension control
+AWE_DRUM_CHANNELS
with a bit-blt parameter, calculated by
+(1 << drum number), where drum number starts from 0.
+In these channels, the voices are assumed as a drum set.
+
+AWE_DRUM_CHANNELS(device, channels); ++As default, only channel 10 is assumed as a drum channel, +then the
channels
value is 0x200.
+Some MIDI files use also the channel 16 as a drum.
+In such a case, channels
becomes 0x8200.
+
+
+The awedrv has a bank selection mechanism.
+The bank selection can be done through MIDI control message #0,
+so is realized by SEQ_CONTROL
macro like
+
+SEQ_CONTROL(device, voice, CTL_BANK_SELECT, bank); ++where
bank
is the bank number of the sample.
+For drum voices (set by AWE_DRUM_CHANNELS
),
+this number is ignored.
++ +
SEQ_BENDER
macro, or obsolete SEQ_PITCHBEND
macro.
++SEQ_BENDER(device, voice, value); ++Be careful that the parameter values are different between them. +
SEQ_BENDER
has a value from 0 to 16384,
+and the center (no pitch shift) is 8192, just as same as in MIDI sequences.
+On the other hand,
+SEQ_PITCHBEND
has a value from -8192 to 8192,
+and the center is 0.
+In both cases, the smaller than the center means lower pitch shift,
+and the larger means upper pitch shift, respectively.
+For example, when the bender range (see below) is 200, a value of -4096
+indicates one octave flat from the normal pitch.
+
+
+The latter control, the bender range,
+is done by SEQ_BENDER_RANGE
macro.
+This function defines the bender range in (octave * 100).
+For example,
+a value of 400 indicates that the maximum wheel change to be four octave shift
+from the normal pitch.
+The default value is 200.
+
+SEQ_BENDER_RANGE(device, voice, value); ++
+ +Both of these controls can be changed at real time during playing the sample. +
+ +
+
+The main volume is set
+via SEQ_CONTROL
with the proper control code
+(CTL_MAIN_VOLUE
and CTRL_MAIN_VOLUME
),
+or obsolete SEQ_MAIN_VOLUME
macro.
+
+SEQ_CONTROL(device, voice, CTL_MAIN_VOLUME, value); ++The value for
SEQ_MAIN_VOLUME
is identical with MIDI value,
+from 0 to 127.
+When the playing mode is the normal mode,
+the control CTL_MAIN_VOLUME
has a value from 0 to 20806
+(= 16383 * 127 / 100).
+In the channel mode, it has the same value as MIDI, from 0 to 127.
+The CTRL_MAIN_VOLUME
always has the same value as MIDI.
+
+
+The expression volume is set via
+SEQ_CONTROL
with the proper control code
+(CTL_EXPRESSION
and CTRL_EXPRESSION
),
+or obsolete SEQ_EXPRESSION
macro.
+
+SEQ_CONTROL(device, voice, CTL_EXPRESSION, value); ++The value for
SEQ_EXPRESSION
is identical with MIDI value,
+from 0 to 127.
+Similarly, when the playing mode is the normal mode,
+the control codeCTL_EXPRESSION
has a value from 0 to 16256
+(= 127 * 128).
+In the channel mode, it has the same value as MIDI, from 0 to 127.
+The CTRL_EXPRESSION
has the same value as MIDI,
+from 0 to 127.
+
+
+Additionally, the awedrv has a total volume attenuation parameter.
+Users can change this initial attenuation using AWE_INITIAL_ATTEN
+control (identical with AWE_INITIAL_VOLUME
).
+
+AWE_INITIAL_ATTEN(device, atten); ++This value
atten
is the attenuation volume from full scale
+in 0.375 dB order. For example, a value of 10 means that
+3.75 dB lower from full scale.
+The initial value is 32, 12dB below from full scale.
+
+
+In the driver ver.0.4, the initial attenuation can be calculated
+as an additional attenuation from predefined "zero attenuation".
+The zero attenuation can be given via AWE_MISC_MODE
control as
+
+AWE_MISC_MODE(device, AWE_MD_ZERO_ATTEN, atten); ++Then, the attenuation is changed via
AWE_SET_ATTEN
control.
++AWE_SET_ATTEN(device, atten); ++The definition of attenuation level is as same as the above. +Note that
AWE_INITIAL_ATTEN
sets the absolute attenuation,
+while AWE_SET_ATTEN
sets the relative attenation from
+zero level.
+
+
+Also, the awedrv has an mixer control of Emu8000 chip.
+To change the bass and treble volume, use AWE_EQUALIZER
macro.
+
+AWE_EQUALIZER(device, bass, treble); ++where both
bass
and treble
are the integer value
+from 0 (-12dB) to 11 (+12dB).
++ +
SEQ_CONTROL
with the proper control code (CTL_PAN
),
+or obsolete SEQ_PANNING
macro.
++SEQ_CONTROL(device, voice, CTL_PAN, value); ++The value for
SEQ_PANNING
is from -128(left) to 128(right),
+and different from MIDI value
+unlike volume controls above.
+But the value of CTL_PAN
is identical with MIDI value,
+from 0(left) to 127(right).
+
+
+The panning position can be changed during playing,
+but may cause a small clicking noise due to restriction of
+emu8000 chip.
+This is suppressed by AWE_REALTIME_PAN
control.
+
+AWE_REALTIME_PAN(device, 0); ++If the argument is zero, the panning position of the voices never changes +during played. +
+ +
SEQ_CONTROL
+with two control commands,
+CTL_CHORUS_DEPTH
and CTL_EXT_EFF_DEPTH
,
+for chorus and reverb, respectively.
++SEQ_CONTROL(device, voice, CTL_CHORUS_DEPTH, value); +SEQ_CONTROL(device, voice, CTL_EXT_EFF_DEPTH, value); ++In both cases, the value range is from 0 to 127, +where 127 means 100% of output is send to the corresponding effect processor. +These values cannot be changed during playing the sample. +
+
+Also, AWE32 has eight modes for both chorus and reverb effects.
+They can be changed by extended control by
+AWE_CHORUS_MODE
and AWE_REVERB_MODE
, respectively.
+
+AWE_CHORUS_MODE(device, mode); +AWE_REVERB_MODE(device, mode); ++In both cases, the range of the parameter value is from 0 to 7. +The corresponding mode to each value is defined in
awe_voice.h
,
+that is,
+Chorus 1 - 4, Feedback, Flanger, Short Delay, and Short Delay 2 for chorus modes,
+and
+Room 1 - 3, Hall 1/2, Plate, Delay, Panning Delay for reverb modes.
+See AWE32 FAQ by CreativeLabs for meaning of each mode.
++ +
+
+The extended controls are passed through
+AWE_SEND_EFFECT
macro with
+specified commands and values.
+
+AWE_SEND_EFFECT(device, voice, command, value); ++The commands are defined in
awe_voice.h
, that is,
++/* 0*/ AWE_FX_ENV1_DELAY, /* WORD: ENVVAL */ +/* 1*/ AWE_FX_ENV1_ATTACK, /* BYTE: up ATKHLD */ +/* 2*/ AWE_FX_ENV1_HOLD, /* BYTE: lw ATKHLD */ +/* 3*/ AWE_FX_ENV1_DECAY, /* BYTE: lw DCYSUS */ +/* 4*/ AWE_FX_ENV1_RELEASE, /* BYTE: lw DCYSUS */ +/* 5*/ AWE_FX_ENV1_SUSTAIN, /* BYTE: up DCYSUS */ +/* 6*/ AWE_FX_ENV1_PITCH, /* BYTE: up PEFE */ +/* 7*/ AWE_FX_ENV1_CUTOFF, /* BYTE: lw PEFE */ + +/* 8*/ AWE_FX_ENV2_DELAY, /* WORD: ENVVOL */ +/* 9*/ AWE_FX_ENV2_ATTACK, /* BYTE: up ATKHLDV */ +/*10*/ AWE_FX_ENV2_HOLD, /* BYTE: lw ATKHLDV */ +/*11*/ AWE_FX_ENV2_DECAY, /* BYTE: lw DCYSUSV */ +/*12*/ AWE_FX_ENV2_RELEASE, /* BYTE: lw DCYSUSV */ +/*13*/ AWE_FX_ENV2_SUSTAIN, /* BYTE: up DCYSUSV */ + +/*14*/ AWE_FX_LFO1_DELAY, /* WORD: LFO1VAL */ +/*15*/ AWE_FX_LFO1_FREQ, /* BYTE: lo TREMFRQ */ +/*16*/ AWE_FX_LFO1_VOLUME, /* BYTE: up TREMFRQ */ +/*17*/ AWE_FX_LFO1_PITCH, /* BYTE: up FMMOD */ +/*18*/ AWE_FX_LFO1_CUTOFF, /* BYTE: lo FMMOD */ + +/*19*/ AWE_FX_LFO2_DELAY, /* WORD: LFO2VAL */ +/*20*/ AWE_FX_LFO2_FREQ, /* BYTE: lo FM2FRQ2 */ +/*21*/ AWE_FX_LFO2_PITCH, /* BYTE: up FM2FRQ2 */ + +/*22*/ AWE_FX_INIT_PITCH, /* SHORT: pitch offset */ +/*23*/ AWE_FX_CHORUS, /* BYTE: chorus effects send (0-255) */ +/*24*/ AWE_FX_REVERB, /* BYTE: reverb effects send (0-255) */ +/*25*/ AWE_FX_CUTOFF, /* BYTE: up IFATN */ +/*26*/ AWE_FX_FILTERQ, /* BYTE: up CCCA */ + +/*27*/ AWE_FX_SAMPLE_START, /* SHORT: offset */ +/*28*/ AWE_FX_LOOP_START, /* SHORT: offset */ +/*29*/ AWE_FX_LOOP_END, /* SHORT: offset */ +/*30*/ AWE_FX_COARSE_SAMPLE_START, /* SHORT: upper word offset */ +/*31*/ AWE_FX_COARSE_LOOP_START, /* SHORT: upper word offset */ +/*32*/ AWE_FX_COARSE_LOOP_END, /* SHORT: upper word offset */ +/*33*/ AWE_FX_ATTEN, /* BYTE: lo IFATN */ ++The commands 0 - 7 define parameters of the modulation envelope, +8 - 13 of the volume envelope, +14 - 18 of LFO1, +19 - 21 of LFO2, +22 - 26 of other effect parameters for total voice, +and the later provides sample start position, and loop offset. +See ADIP for the parameter values of envelopes and LFO's. +
+
+AWE_ADD_EFFECT
is used to adjust the effect from
+predefined value in the voice patch data.
+The relative value is given as an argument,
+while the absolute value is given in AWE_SEND_EFFECT
control.
+
+AWE_ADD_EFFECT(device, voice, command, value); ++
+
+On the channel mode, these effects are kept
+unless AWE_UNSET_EFFECT
macro is used.
+
+AWE_UNSET_EFFECT(device, voice, layer, command); ++On the normal mode, the effects are always cleared after the voice is off. +To suppress this, set
AWE_MD_KEEP_EFFECT
by
+AWE_MISC_MODE
control.
++AWE_MISC_MODE(device, AWE_MD_KEEP_EFFECT, 1); ++
+
+Also, on the channel mode, each instrument "layer" can be controlled via
+AWE_SEND_LAYER_EFFECT
and AWE_ADD_LAYER_EFFECT
+macros.
+It affects the effects only on one layer (= one voice)
+specified in the argument.
+
+AWE_SEND_EFFECT_LAYER(device, voice, layer, command, value); ++
+
+GUS compatible extended controls are partly implemented.
+GUS_VOICE_POS
is interpreted inside as an extension control
+27(AWE_FX_SAMPLE_START
) and
+30(AWE_FX_COARSE_SAMPLE_START
).
+
+ +
SEQ_START_NOTE
macro.
++SEQ_START_NOTE(device, voice, note, velocity); ++where
note
and velocity
are the MIDI key and velocity
+to be played, respectively.
+A sample including the specified note in its key range
+is searched from all samples with given bank and program numbers.
+Then, the volume and pitch parameters are computed here
+from specified note and velocity.
+If this sample is an exclusive voice like drum hi-hat sounds,
+turn off other voices with the same exclusive key, that is
+the other hi-hat sounds which is being played.
+After that, start this voice.
+
+
+In the normal playing mode,
+the note 255 has a special meaning.
+When this function is called with the note 255,
+only volume is changed according its velocity,
+and never affects the envelope change, and so on.
+This can be used for dynamic volume control
+without using other SEQ_CONTROL
functions.
+Note that this feature is ignored in the channel playing mode.
+
+ +If the velocity is specified as zero, then one channel is allocated, +but the sound is not started. It starts when volume change control +is received later. +
+ +The another way for start is to call a GUS specific control +
+GUS_VOICEON(device, voice, mode); ++where
mode
is a voice mode, but ignored in awedrv.
+This simply starts a sound on the channel, so voice parameters
+like program, pitch and volume must be set before calling this function.
++ +
+ +
SEQ_KEY_PRESSURE
macro,
+or AWE_KEY_PRESSURE
macro, depending on its playing mode.
+In the channel playing mode, the former macro
+SEQ_KEY_PRESSURE
is ignored
+due to compatibility problems.
+Thus, in the channel mode,
+use the latter AWE_KEY_PRESSURE
macro instead.
+The parameter value is as same as MIDI pressure value, from 0 to 127.
++AWE_KEY_PRESSURE(device, voice, note, velocity); ++
+
+The second way is updating main or expression volume on each channel
+by SEQ_CONTROL
or other macros (see 4.2.2).
+Also, using SEQ_START_NOTE
with a special note 255 is
+available for changing volume as explained above.
+
+ +
AWE_SEND_EFFECT
with
+AWE_FX_INIT_PITCH
command
+(see 4.2.1).
++ +
+ +
+ +
AWE_CHN_PRESSURE
and
+CTL_MODWHEEL
MIDI control.
+The former affets all the voices on the channel, while the latter affects
+only one voice (in the channel mode).
++AWE_CHN_PRESSURE(device, channel, value); +SEQ_CONTROL(device, voice, CTL_MODWHEEL, value); ++The value is MIDI value from 0 to 127. +
+
+The LFO parameters (frequency, volume, pitch shift, and cutoff shift), and
+LFO2 parameters (frequency, and pitch shift)
+can be changed at real time via AWE_SEND_EFFECT
control.
+Also, total cutoff frequency can be changed.
+The values are passed through the extended controls (see 4.2.5).
+
+ +
+ +
SEQ_START_TIMER
,
+SEQ_WAIT_TIME
or SEQ_DELTA_TIME
,
+and SEQ_STOP_TIMER
.
++ +
+ +
SEQ_STOP_NOTE
macro.
+This releases the sound from the sustain level to silence
+according to the volume envelope.
+The note and velocity parameters are ignored.
++SEQ_STOP_NOTE(device, voice, note, velocity); ++
+
+Or, you can terminate the voice completely by extended control,
+AWE_TERMINATE_CHANNEL
.
+This stops the sound without any releasing echo.
+
+AWE_TERMINATE_CHANNEL(device, voice); ++To terminate all voices, the extended control +
AWE_TERMINATE_ALL
is available.
++AWE_TERMINATE_ALL(device); ++To turn off the all channels similary as SEQ_STOP_NOTE +(with sustain effects), +use
AWE_NOTEOFF_ALL
.
++AWE_RELEASE_ALL(device); ++Also, to force to turn off the all channels without sustain effects, +use
AWE_NOTEOFF_ALL
.
++AWE_NOTEOFF_ALL(device); ++
+ +
+ +
AWE_DEBUG_MODE
.
++AWE_DEBUG_MODE(device, mode); ++The value zero means to turn off debugging messages, +and values larger then zero means to output debugging messages +on syslog, usually
/var/adm/syslog
or /var/adm/message
+(depending on the setting of /etc/syslog.conf
).
++ +
AWE_INITIALIZE_CHIP
.
+This only re-initializes the AWE32, and doesn't affect other driver-internal
+parameters or effects.
++AWE_INITIALIZE_CHIP(seqfd, device); ++This function uses ioctl, so the file descriptor of sequencer device +is required. +
+ +
AWE_MISC_MODE
control.
++AWE_MISC_MODE(device, type, value); ++See
awe_voice.h
for each definition.
++ +
+ +
+FAQ ver.1.24
+Takashi Iwai +( +iwai@ww.uni-erlangen.de) +
+ +Original site: + +http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html +
+ +
+ + + +
+ +
+
+Awedrv is the sound driver extension to OSS/Free (aka USS-Lite or VoxWare)
+for AWE32 and its compatible wave synthesizer cards (SB32 and AWE64 series) by
+CreativeLabs.
+This driver provides a basic way to control Emu8000 chip on AWE32
+board through /dev/sequencer
and /dev/sequencer2
+devices as well as other
+synth drivers like FM-OPL3 and GUS wave drivers.
+Also from driver v0.3, awedrv behaves as a GUS compatible driver, too.
+(The module players use this feature.)
+You can play midi and module files using some sequencer programs
+listed below.
+
+ +The current driver is distributed both as a lowlevel driver to +OSS/Free with Linux 2.1.x, 2.0.x kernels, and as a patch to OSS/Free-3.0.x +(aka VoxWare) with Linux 1.2.x kernels and FreeBSD. +Both environments are confirmed to work fine. +However a little attention is necessary to use this driver on PnP cards. +See Q2.3, Q2.4 and +Q2.8 for installation on PnP cards. +
+ +The programs supporting awedrv are: +
musserver+awe0.4.diff
)
++ +
+ +
+ +You can download from my web page: +
+ +Also the following mirroring sites are available: +
+ +
+ +
+ +Yes. It works as a AWE32 compatible driver, but the software synthesizer +is not supported. So only 32 voices (30 voices when DRAM is on board) +are available. +
+ +
+ +
+ +To play a sound using awedrv, you need awesfx utility to load samples on the driver, +and midi player programs which support awedrv. +Basically, awedrv doesn't have any sound information in it at beginning. +So, users must prepare their own SoundFont files +using sfxload program (included in awesfx utils). +This procedure is necessary even for ROM sounds +(see Q3.3). +Awesfx utility can be downloaded also from the web site above +(Q1.2). +
+
+To load the SoundFont file onto the AWE driver,
+use sfxload utility.
+For example, to load your GM SoundFont file synthgm.sbk
,
+
+ % sfxload synthgm ++Note: when you're using the older version of driver and utilities +than ver.0.4, the additional option '
-i
' is required.
+This option means to remove all samples on the driver
+before loading this sample.
++ +Now you can hear your midi files by a midi player like +drvmidi (distributed in awemidi package). +
+ % drvmidi sample.mid ++See Q3.4 to how to use specified SBK or SF2 files +with a midi file. +
+ +The new drvmidi (v0.4.0) has a function of "dynamic loaindg" of samples +on demand. This enables to play most of MIDI files with 2MB GM/GS soundfonts +on only 512kB DRAM soundcards. +
+ % drvmidi -L 2mbgmgs sample.mid ++See Q3.12 and Q3.13 for details. +
+ +
+ +
+ +So far, some module players are available (see Q1.1). +Both xmp and gmod support awedrv as default. +See the installation instruction for more details. +
+ +Note: both programs watches read selection of the sequencer device. +To support this, +you need to activate MIDI input interface on SB16 driver +when configuring the sound module. +
+ + + +
+ +
+ +
+
+See INSTALL.awe
file in awedrv source package for details.
+Basically, you only need to run install.sh
script
+on the awedrv source directory as root user.
+
+ % su + # sh ./install.sh ++Then, reconfigure the kernel options. +See Q2.2 about which options to be set. +
+ # cd /usr/src/linux + # make xconfig + or + # make menuconfig ++Now, remake and install the kernel and modules. +
+ # make + # make modules; make modules_install ++
+ +
+ +
+ +Basically, to configure awedrv, say Yes only to +"lowlevel sound driver support" and "AWE32 wave synth". +(If you're using OSS/Free-3.0.x (aka VoxWare), only the latter question will appear.) +On AWE32 board, all transfers are done through I/O ports (not DMA), +and awedrv probes these I/O ports automatically, so no need to specify +any address or IRQ at configuration. +
+ +Of course, you may want other functions of SoundBlaster +like playing and recording digital sound, FM synthesizer, and mixer support. +Awedrv is only an enhancement to control Emu8000 synthesizer, and +such functions are supported by other SB drivers. +So better to keep Yes for all other SB16 options as well. +
+
+In my case, the sound part of .config
file looks like:
+
+# +# Sound +# +CONFIG_SOUND=m +# CONFIG_PAS is not set +CONFIG_SB=y +CONFIG_ADLIB=y +# CONFIG_GUS is not set +# CONFIG_MPU401 is not set +# CONFIG_UART6850 is not set +# CONFIG_PSS is not set +# CONFIG_GUS16 is not set +# CONFIG_GUSMAX is not set +# CONFIG_MSS is not set +# CONFIG_SSCAPE is not set +# CONFIG_TRIX is not set +# CONFIG_MAD16 is not set +# CONFIG_CS4232 is not set +# CONFIG_MAUI is not set +CONFIG_AUDIO=y +CONFIG_MIDI=y +CONFIG_YM3812=y +SBC_BASE=220 +SBC_IRQ=7 +SBC_DMA=1 +SB_DMA2=7 +SB_MPU_BASE=300 +SB_MPU_IRQ=-1 +DSP_BUFFSIZE=65536 +CONFIG_LOWLEVEL_SOUND=y +# CONFIG_ACI_MIXER is not set +CONFIG_AWE32_SYNTH=y ++
+ +BTW, please do not copy these values directly to your kernel. +IRQ and DMA numbers of SB card may be different on each machine. +In usual cases, MPU base address may be 0x330. I set this value as different +one to avoid confliction between SCSI card. +(The setting in Q2.3 is 0x330 because this is Neal's machine.) +
+ +
+ +
+ +This is a problem in PnP initialization. +Because the original Linux kernels don't support initialization of PnP cards yet, +some special treatment is necessary before loading sound driver. +There're a couple of ways to solve this: +
loadlin
to boot linux.
++ +The Linux PnP driver enables to configure the PnP devices from kernel. +This driver has been originally developed by Tom Lees. +The current awedrv (0.4.3) includes the PnP driver interface so that +no patch is necessary. +See the PnP driver project homepage for more details, +
+ +Neal Sanche (neal@nsdev.ocunix.on.ca) summarizes the procedure to +install on PnP card by ISAPnP tool that: +
+ +
+ +The steps you need to do in order to get sound working: +
rc.local
, or
+rc.modules
in
+ a recent version of RedHat) you must initialize your sound card
+ with some tool. ISAPnP is easy to configure and seems very reliable.
+
++ +For example, this is how I initialize the SB32 PnP in my startup +scripts. +
+#!/bin/sh + +# initialize PnP devices +if [ -x /sbin/isapnp ]; then + echo "Configuring PnP devices" + /sbin/isapnp /etc/isapnp.conf +fi + +echo "Loading sound module" +/sbin/modprobe -a sound ++
+
+ISAPnP is quite an easy program to configure. Here is a copy of my
+isapnp.conf
file. I used all of the defaults (from the SB manual)
+for ports and IRQ settings.
+DON'T FORGET TO ADD TWO I/O PORTS, 0xA20 and 0xe20, for WaveTable!
+These ports are never detected by pnpdump, but must be initialized.
+(See Q2.4)
+
+
+(READPORT 0x0273) +(ISOLATE) +(IDENTIFY *) + +# Card 1: (serial identifier 6d 00 0e b0 52 44 00 8c 0e) +# CTL0044 Serial No 962642 [checksum 6d] +# Version 1.0, Vendor version 1.0 +# ANSI string -->Creative SB32 PnP<-- +# +# Logical device id CTL0031 +# +# Edit the entries below to uncomment out the configuration required. +# Note that only the first value of any range is given, this may be changed if required +# Don't forget to uncomment the activate (ACT Y) when happy + +(CONFIGURE CTL0044/962642 (LD 0 +# ANSI string -->Audio<-- + (INT 0 (IRQ 5 (MODE +E))) + (DMA 0 (CHANNEL 1)) + (DMA 1 (CHANNEL 5)) + (IO 0 (BASE 0x0220)) + (IO 1 (BASE 0x0330)) + (IO 2 (BASE 0x0388)) + + (ACT Y) +)) + +# Logical device id CTL0021 +# +# Edit the entries below to uncomment out the configuration required. +# Note that only the first value of any range is given, this may be changed if required +# Don't forget to uncomment the activate (ACT Y) when happy + +(CONFIGURE CTL0044/962642 (LD 2 +# ANSI string -->WaveTable<-- + (IO 0 (BASE 0x0620)) + (IO 1 (BASE 0x0a20)) + (IO 2 (BASE 0x0e20)) + (ACT Y) +)) + +# Logical device id CTL7001 +# +# Edit the entries below to uncomment out the configuration required. +# Note that only the first value of any range is given, this may be changed if required +# Don't forget to uncomment the activate (ACT Y) when happy + +(CONFIGURE CTL0044/962642 (LD 3 +# Compatible device id PNPb02f +# ANSI string -->Game<-- +# Logical device decodes 16 bit IO address lines +# Minimum IO base address 0x0200 +# Maximum IO base address 0x0200 +# IO base alignment 1 bytes +# Number of IO addresses required: 8 +# (IO 0 (BASE 0x0200)) +# (ACT Y) +)) + +# Logical device id CTL0051 +# +# Edit the entries below to uncomment out the configuration required. +# Note that only the first value of any range is given, this may be changed if required +# Don't forget to uncomment the activate (ACT Y) when happy + +(CONFIGURE CTL0044/962642 (LD 4 +# ANSI string -->StereoEnhance<-- +# Logical device decodes 16 bit IO address lines +# Minimum IO base address 0x0100 +# Maximum IO base address 0x03f8 +# IO base alignment 8 bytes +# Number of IO addresses required: 1 + (IO 0 (BASE 0x0108)) +(ACT Y))) ++
+ +That's all there is to it. In the future, the Linux kernel source will +directory support Plug and Play, and there will be no need for the +isapnp tool. +
+ +
+
+
+Check WaveTable entries in your /etc/isapnp.conf
file.
+AWE32 uses three I/O ports, normally 0x620, 0xa20, and 0xe20,
+but in the default ouput from pnpdump
is
+lack of the last two pots (0xa20 and 0xe20).
+In such a case, you have to add them manually. For example,
+
+# Logical device id CTL0021 +(CONFIGURE CTL0044/962642 (LD 2 +# ANSI string -->WaveTable<-- + (IO 0 (BASE 0x0620)) + (IO 1 (BASE 0x0A20)) + (IO 2 (BASE 0x0E20)) + (ACT Y) +)) ++
+ +See the ISA PnP FAQ page +( +http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html +) +for details. +
+ +
+ +
+
+Yes. You can specify the command to be executed after loading modules
+in your /etc/conf.modules
file with post-install
+command.
+For example,
+
+post-install sound /usr/local/bin/sfxload synthgm ++Similary, it's possible to set the mixer volume automatically, +
+post-install sound /usr/local/bin/setmix -f /etc/mixrc;\ + /usr/local/bin/sfxload synthgm ++
+ +
+ +
+ +Slackware 96 initially installs Linux-2.0.0 system. +The AWE driver doesn't support this version of sound driver. +So please update the kernel version to the newer one. +Sorry for incovenience... +
+ +
+ +
+
+See the document INSTALL.frbsd
in awedrv source package
+for details.
+Also, if you're using a PnP sound card like SB32 PnP or AWE64,
+refer to Q2.8.
+
+ +
/usr/src/sys/i386/isa/sound
.
+awe_config.h
if necessary.AWE_MAX_SAMPLES
and
+ AWE_MAX_INFOS
.
++ device awe0 at isa? port 0x620 ++
+ +
+ +
+ +See the how-to document by Takuya Koumoto (takuya-k@is.aist-nara.ac.jp) +for more details (written in Japanese). +
+ +
FreeBSD-ISA_PnP_June8.tar.gz
)
+pnpinfo
in it.
+You may have an output like following:
++ Checking for Plug-n-Play devices... + Trying Read_Port at 203 + Trying Read_Port at 243 + .. (snip) .. + Card assigned CSN #1 + Board Vendor ID: CTL009d + Board Serial Number: 10005fdc + PnP Version: 1.0 + Vendor Version: 32 + Device Description: Creative SB AWE64 PnP + Logical Device ID: CTL0042 (42008c0e) + Device Description: Audio + Start Dependent Function + .. (snip) .. ++Remember the serial number of your sound card in the message. +In this example, it's
10005fdc
. This value must be different
+on each sound card.
+kernel.patch.2.2-current
) included in
+the package to kernel source tree.
++ # cd /usr/src/sys + # patch -p0 < kernel.patch.2.2-current ++
/usr/src/sys/i386/isa/pnp.c
:+ #include "pnp.h" ++with +
+ #include "i386/isa/pnp.h" ++and the part from line 50 to 103 with the following +
+ { + 0x10005fdc, /* Serial Number */ + 2, /* Logical Device Number */ + { + { -1, -1 }, /* Primary IRQ Number, Type */ + { -1, -1 } /* Second IRQ Number, Type */ + }, + { -1, -1 }, /* DRQ Number */ + { + 0x620, /* Ports 1 */ + 0xa20, /* Ports 2 */ + 0xe20, /* Ports 3 */ + -1, /* Ports 4 */ + -1, /* Ports 5 */ + -1, /* Ports 6 */ + -1, /* Ports 7 */ + -1, /* Ports 8 */ + }, + { + { -1, -1, -1 }, /* Memory desc0 - base, ctrl, range */ + { -1, -1, -1 }, /* Memory desc1 - base, ctrl, range */ + { -1, -1, -1 }, /* Memory desc2 - base, ctrl, range */ + { -1, -1, -1 } /* Memory desc3 - base, ctrl, range */ + } + } ++Please put the serial number of your card on the first item. +
+ controller pnp0 ++and +
+ device awe0 at isa? port 0x620 conflicts ++
+ + + +
+ +
+ +
+ +The AWE driver itself doesn't have any sound information in it. +You need to load the soundfont file at first. +See Q1.4 how to load soundfont files. +
+ +
+ +
+ +Chris Wedgwood <chris@cyphercom.com> answers:
+ +Yes. You can use the default ROM fonts that are built into the card. +However, it won't necessarily sound very good. +
+ +
+ +
+ +Chris Wedgwood <chris@cyphercom.com> answers:
+
+You have to load the ROM fonts into the card using sfxload.
+To do this you need a file called 'synthgm.sbk
'
+(or synthgm.sf2
) which is installed under Windows95
+and presumably Windows 3.1.
+
+
+There always seems to be a copy in the 'windows system'
+directory, and often another copy amongst the other installed Creative Labs files. The windows system directory is usually \WINDOWS\SYSTEM
.
+
+
+For the 'purists' who don't have Windows installed - you will probably
+have to try and get this file from elsewhere, as it is not stored on the
+CDROM in any useful form. (At least not on mine). It appears to be
+archive in the win95/sfbank/sfbank.lib
file
+- but I have no details on the format of this).
+
+ +To load the ROM fonts type: +
+ % sfxload synthgm.sbk ++ +Note: you will have to prepend a path if
synthgm.sbk
+is not in the current working directory or search path directories.
+If drum sounds are small, you can tune it via -A
option
+(see Q3.11).
++ +The size of the file is about 35k, it compresses down to about 14k, so +obtaining it via FTP or email shouldn't be a big problem - although there +maybe copyright issues involved. I wouldn't know, I'm not a lawyer. +
+ +
+ +
+
+Just load the SBK file after GM (or GS) presets.
+At first, load GM font. (For the older version (v0.3.x), the option -i
is necessary.)
+
+ % sfxload synthgm ++Then, append SBK font after it. +If you've already loaded other samples, the additional option
-x
+is required.
++ % sfxload -b 1 foo.sbk ++Don't forget to add a command option "-b 1" +in this case (see Q3.5). +
+ +Now you can hear your midi file. Enjoy. +
+ % drvmidi foo.mid ++
+ +
+ +
+
+Most of user-defined SoundFont files are designed to be loaded on
+bank 1. Try the option -b 1
of sfxload
+for such a sample (see Q3.4).
+
+ +
+ +
+
+To activate chorus and reverb modes, you have to specify non-zero
+values for these effects at loading samples via
+-c
and -r
options of sfxload
,
+respectively.
+
+ % sfxload -c 30 -r 20 synthgm ++
+ +
+ +
+
+If this happens when panning status changes, it is due to the
+restriction of Emu8000 chip. Try -P
option with drvmidi.
+This option suppress the realtime pan position change.
+Otherwise, it may be a bug.
+
+ +
+ +
+
+I think so, too...
+The total volume of the samples can be changed
+by using -V
option at loading.
+
+ % sfxload -V 40 synthgm ++The value is in percent with a default of 70%. +
+ +If you're using linux, the mixer volumes can be set at loading the module +automatically (see Q2.5). +
+ +
+ +
+
+Yes.
+For example, to load a patch gunshot.pat
onto preset #127,
+run
+
+ % gusload -p 127 gunshot.pat ++
+ +
+ +
+
+Some MIDI files use the channel 16 as a drum channel.
+while only the channel 10 is accepted as a drum in drvmidi
+as default.
+(In the case of GS file, it may vary according to system exclusive messages.)
+To change the drum state,
+use the option -D
.
+The positive argument means to turn on the drum channel,
+but the negative argument means to turn off.
+For example, '-D 16
' option specifies the channel 16
+as a drum channel,
+and '-D -10
' option
+reserves the channel 10 as a normal channel.
+
+
+Another possibility is the problem of multi-part support.
+Drvmidi treats tracks over 16 as second MIDI part.
+This feature is suppressed using '-T -1
' option with drvmidi.
+Then all tracks are assumed as one MIDI part.
+
+ +
+ +
+
+If you're using v0.4.2 driver and sfxload, try -A
option of
+sfxload program.
+This is an option to control the sensitivity of attenuation level of each
+instrument, and it takes a positive (float) digit value.
+Generally, the smaller value makes drum sounds louder.
+I feel the value 2.0 is better than the default state,
+but to keep compatibility with older versions, it's set to 10.0 as default.
+
+ % sfxload -A 2 synthgm.sbk ++
+
+The v0.4.3 driver (and sfxload) uses different way of parameter calculation.
+It sounds more similar to DOS/Windows, but a little bit duller than the
+former version. The volume calculation method can be switched
+by aweset
utility.
+
+ % aweset newvolume off ++Note that drvmidi will change this switch by itself, so aweset doesn't affect +its sounds at all. The sound quality via playmidi will be influenced, though. +Also, there is a command option
-C
in sfxload
+to keep the compatibility with the older versions.
++ +
+ +
+
+This is a new feature added from ver.0.4.0 to load the required fonts
+in a soundfont file "on demand" for each MIDI file.
+drvmidi looks up each instrument used in the file before playing, then
+it invokes sfxload to load only the required samples.
+This function enables us to to play with larger samples on samller soundcard
+RAM size.
+In most cases, you can play MIDI files via 2MB GM/GS soundfonts
+(2mbgmgs.sf2
) on 512kB DRAM.
+Of course, it's possible to play 8MB fonts on 2MB DRAM,
+or 12MB fonts on 8MB DRAM
+(though it'll take a bit long time to load the fonts).
+Many soundfont files are distributed on web sites.
+I listed them up on the
+AWE driver's web page,
+
+ +To use dynamic loading, the following precodure is necessary. +
+ % sfxload synthgm ++
-L
(or --dynamic
) option in
+the command line of drvmidi.
++ % drvmidi -L 2mbgmgs foo.mid ++
+ +Sometimes, drvmidi fails to load all samples due to out of memeory. +In such a case, the following message will appear: +
+ preload: couldn't load all fonts. ++drvmidi uses ROM fonts instead of the samples which are not loaded successfully. +
+ +The dynamic loading fonts can be specified in the default setting file. +See Q3.13. +
+ +
+ +
+
+The command line options of sfxload and drvmidi can be specified
+in the resource files in advance.
+The resource file of sfxload are
+/etc/sfxloadrc
and ~/.sfxloadrc
,
+and
+those of drvmidi are
+/etc/drvmidirc
and ~/.drvmidirc
,
+repsectively.
+If both files are specified, the latter one is used.
+
+ +The sfxload resource file has the following format: +
+ fontname options.. + fontname options.. ++The first argument is the soundfont name, and the remaining arguments +are command line options to be specified. +The font name "
default
" is special, and means that the
+default options to be used if any font name doesn't match the given soundfont.
+Both short and long options are available.
+For example:
++ default --sense=10 --atten=32 -V100 + synthgm --sense=2 -V100 ++
+
+The format of drvmidi resource file is similar to the above.
+However, the valid font name is only "default
".
+Though drvmidi accepts both short and long options, the option editor
+in tkmidi (featured from v0.4.2) can only handle long options.
+For example:
+
+ default --dynamic=2mbgmgs ++With this function, you can use dynamic loading without specifying +command line options at each time. +
+ +
+ +
+
+The new drvmidi ver.0.4.2 can emulate the SC88 specific controls;
+a couple of sysex controls
+including multi part, and some controls like TVF and EG.
+As default, the sysex messages of multi-part mode and master volume control
+are supported.
+Regardless of received sysex status, you can turn on the multi part mode
+by specifying the option --multipart=on
.
+
+
+The effect controls to TVF, EG, etc. are not emulated as default status.
+You need to add an option --usefx=on
to drvmidi.
+Note that this function is still experimental and inaccurate.
+The sound effect varies with the soundfont file, so you should
+adjust parameters for your using font file.
+
+ +Also, You can edit the options and effect parameters above +via the option editor in tkmidi. +
+ +
+
+
+The new drvmidi (v0.4.2) accepts the bank control defined in XG format.
+However, since the drum and sfx presets in XG format are partly different from
+one in GS, some preset remapping is required to play back properly with
+the usual GS soundfont file.
+Drvmidi avoids this problem by assigning the XG drum and sfx presets to
+the banks which are not used in GS.
+To enable this feature, add the option --xgmap=on
.
+
+ +To play back this new bank, the driver needs to duplicate the sounds +from original GS banks. +This can be solved easily using the preset mapping, +which is newly supported in awedrv-0.4.2. +For example, if you're using synthgs.sbk, load two bank files after it. +(These bank files are included in the awesfx / sfxload package.) +
+ % sfxload synthgs + % sfxload -b0 xgsfx.bnk + % sfxload -b0 xgdrum.bnk ++Then, the XG banks are mapped from the original GS fonts without +using any extra DRAM. +
+ +The procedure above becomes easy by writing a virtual bank file. +For example, using the bank file (xgdefault.bnk) contains the following, +
+ default synthgs.sbk + include xgsfx.bnk + include xgdrum.bnk ++just load this bank file once, and all things above will be done. +
+ % sfxload xgdefault.bnk ++Also, you need to make the similar bank file to use the dynamic loading +function in drvmidi: +
+ default 2mbgmgs.sf2 + include xgsfx.bnk + include xgdrum.bnk ++By specifying this bank file in the option
--dynamic
,
+drvmidi loads the appropriate fonts automatically even both for GS
+and XG format.
++ +
+
+ +Yes, the latest version 0.4.3 uses the different volume parameter calculation. +Please refer to Q3.11. +
+ +
+
+ +The virtual bank file is a text file describing the list of presets, banks +and notes from multiple soundfont files. +By using a virtual bank file, you can load a part of sounds from one soundfont +file and another part from other soundfont files without re-creating a whole +soundfont file. +On the other words, it enables to replace or add one instrument with other +sounds (even one note in drumset!). +
+ +The format of virtual bank file is as follows: +
+source:destination:file instr-name ++The source and destination are the instrument map +to specify the instruments to be replaced, and have the following format: +
+preset/bank/keynote ++The preset is the MIDI program number (from 0 to 127), and the bank is +the MIDI bank number (from 0 to 128). The bank #128 is regarded as a +drumset. The keynote is the MIDI key note number (from 0 to 127). +If keynote is omitted, the whole instrument will be replaced. +If bank is omitted, all matching instruments with preset will be replaced. +If preset has an asterisk(*) or number -1, the matching bank will be replaced. +
+ +The virtual bank will replace the instruments specified by source field +with the instruments by destination field. +The file field is a soundfont file name to be loaded. +Note that if you use the identical soundfont file several times in one virtual +bank file, you must give also the identical name here. +The files are searched through the path given to sfxload. +
+ +The instr-name field is an optional field to specify the name of this +instrument. In the current version of sfxload, this field is ignored. +
+ +The virtual bank file accepts also the following format: +
+source:destination instr-name ++Unlike the previous case, this format includes no file field. +This enables the preset mapping (linking) and works like a symbolic link +of file operation. The source instrument is referred also as the destination +instrument. The actual destination instrument needs not exist. +
+ +There are two special command directives: +
include filename
default filename
+ + + +
+ +
+ +
+ +This happens when not enough DRAM is on the AWE32 card. +Please upgrade memories on your card. +
+ +Also, the old drivers have a bug in sample loop addresses. +Please use the latest driver (v0.3.3e or later). +
+ +
+ +
+ +If you're using.. +
+ +The plug-in with MIDI control panel causes a bus error when displaying +the directory page (i.e. file://directory/). To avoid this, +you need to preload the plug-in file before starting Netscape. +It would be convenient to replace netscape as a wrapper script like +
+#!/bin/sh +LD_PRELOAD=$HOME/.netscape/plugins/npmidi.so; export LD_PRELOAD +exec /usr/local/bin/netscape ++This bug doesn't appear on the plug-in without control panel window. +
+ +Also, if you already add mime types as below, you should edit +these configuration files manually. Netscape only appends its list. +
+ +
~/.mime.types
file:
++audio/x-midi exts=mid,midi ++Then specify the application for this type by adding to
~/.mailcap
:
++audio/x-midi; drvmidi %s ++Of course, you can choose your favorite MIDI players instead of this. +
+ +
+ +
+ +See the AWEDRV programming notes +for control of awedrv device. +
+ +From ver.0.2, awedrv accepts the GUS compatible patches and +hardware controls, so you can play module players using GUS driver +like gmod by a slight modification. +
+
+For example, to use gmod for awedrv, just change the line 62 of
+Sequencer.c
for detection of synthesizer card to accept
+subtype 0x20 like
+
+if (info.synth_type == SYNTH_TYPE_SAMPLE + && (info.synth_subtype == SAMPLE_TYPE_GUS||info.synth_subtype==0x20)) + gus_dev = i; ++(
0x20
means SAMPLE_TYPE_AWE32
defined in awe_voice.h
.)
++ + +
+
+
--- awesfx-0.5.1a.orig/debian/copyright
+++ awesfx-0.5.1a/debian/copyright
@@ -0,0 +1,14 @@
+This package was debianized by
+Noel Koethe